UNPKG

@justa/mask-directive

Version:

![](https://img.shields.io/bundlephobia/minzip/@justa/mask-directive.svg?style=flat-square) ![](https://img.shields.io/bundlephobia/min/@justa/mask-directive.svg?style=flat-square)

274 lines 16.4 kB
/** * @fileoverview added by tsickle * Generated from: lib/legal-document-mask.directive.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Directive, ElementRef, HostListener, Renderer2 } from '@angular/core'; import { NgControl } from '@angular/forms'; import { formatCpf, formatCnpj } from './utils'; var LegalDocumentMaskDirective = /** @class */ (function () { function LegalDocumentMaskDirective(el, renderer, _control) { this.el = el; this.renderer = renderer; this._control = _control; this.onChange = (/** * @param {?} value * @return {?} */ function (value) { }); this.onTouched = (/** * @return {?} */ function () { }); } /** * @return {?} */ LegalDocumentMaskDirective.prototype.ngOnInit = /** * @return {?} */ function () { /** @type {?} */ var unformattedValue = this.el.nativeElement.value; if (unformattedValue && unformattedValue.length > 0) { /** @type {?} */ var value = this.returnValue(unformattedValue); this.writeValue(value); } }; /** * @return {?} */ LegalDocumentMaskDirective.prototype.ngOnDestroy = /** * @return {?} */ function () { clearTimeout(this.writeTimeout); }; Object.defineProperty(LegalDocumentMaskDirective.prototype, "control", { get: /** * @return {?} */ function () { return this._control.control; }, enumerable: true, configurable: true }); /** * @param {?} event * @return {?} */ LegalDocumentMaskDirective.prototype.inputKeyup = /** * @param {?} event * @return {?} */ function (event) { /** @type {?} */ var value = this.returnValue(event.target.value); this.writeValue(value); event.target.value = value; }; /** * @deprecated This method for Ionic inputs will be deprecated in the next * minor version. */ /** * @deprecated This method for Ionic inputs will be deprecated in the next * minor version. * @param {?} event * @return {?} */ LegalDocumentMaskDirective.prototype.inputOnblur = /** * @deprecated This method for Ionic inputs will be deprecated in the next * minor version. * @param {?} event * @return {?} */ function (event) { /** @type {?} */ var value = this.returnValue(event.value); this.writeValue(value); event.value = value; console.warn('This directive won\'t work more in Ionic into next minor version!'); }; /** * @deprecated This method for Ionic inputs will be deprecated in the next * minor version. */ /** * @deprecated This method for Ionic inputs will be deprecated in the next * minor version. * @param {?} event * @return {?} */ LegalDocumentMaskDirective.prototype.inputFocus = /** * @deprecated This method for Ionic inputs will be deprecated in the next * minor version. * @param {?} event * @return {?} */ function (event) { /** @type {?} */ var value = this.returnValue(event.value); this.writeValue(value); event.value = value; console.warn('This directive won\'t work more in Ionic into next minor version!'); }; /** * @param {?} event * @return {?} */ LegalDocumentMaskDirective.prototype.focusInput = /** * @param {?} event * @return {?} */ function (event) { /** @type {?} */ var value = this.returnValue(event.target.value); this.writeValue(value); event.target.value = value; }; /** * @param {?} event * @return {?} */ LegalDocumentMaskDirective.prototype.blurInput = /** * @param {?} event * @return {?} */ function (event) { /** @type {?} */ var value = this.returnValue(event.target.value); this.writeValue(value); event.target.value = value; }; /** * @param {?} event * @return {?} */ LegalDocumentMaskDirective.prototype.ngModelChangeInput = /** * @param {?} event * @return {?} */ function (event) { /** @type {?} */ var value = this.returnValue(event); this.writeValue(value); }; /** * @param {?} value * @return {?} */ LegalDocumentMaskDirective.prototype.writeValue = /** * @param {?} value * @return {?} */ function (value) { var _this = this; this.writeTimeout = setTimeout((/** * @return {?} */ function () { _this.renderer.setProperty(_this.el.nativeElement, 'value', value); }), 1); }; /** * @param {?} fn * @return {?} */ LegalDocumentMaskDirective.prototype.registerOnChange = /** * @param {?} fn * @return {?} */ function (fn) { this.onChange = fn; }; /** * @param {?} fn * @return {?} */ LegalDocumentMaskDirective.prototype.registerOnTouched = /** * @param {?} fn * @return {?} */ function (fn) { this.onChange = fn; }; /** * @private * @param {?} value * @return {?} */ LegalDocumentMaskDirective.prototype.writeValuePerson = /** * @private * @param {?} value * @return {?} */ function (value) { if (value.length <= 11) { return formatCpf(value); } return formatCnpj(value); }; /** * @private * @param {?} value * @return {?} */ LegalDocumentMaskDirective.prototype.returnValue = /** * @private * @param {?} value * @return {?} */ function (value) { /** @type {?} */ var newVal = value ? value.replace(/\D/gi, '') : ''; return this.writeValuePerson(newVal); }; LegalDocumentMaskDirective.decorators = [ { type: Directive, args: [{ selector: '[jstLegalDocumentMask]', },] } ]; /** @nocollapse */ LegalDocumentMaskDirective.ctorParameters = function () { return [ { type: ElementRef }, { type: Renderer2 }, { type: NgControl } ]; }; LegalDocumentMaskDirective.propDecorators = { inputKeyup: [{ type: HostListener, args: ['keyup', ['$event'],] }], inputOnblur: [{ type: HostListener, args: ['ionBlur', ['$event'],] }], inputFocus: [{ type: HostListener, args: ['ionFocus', ['$event'],] }], focusInput: [{ type: HostListener, args: ['focus', ['$event'],] }], blurInput: [{ type: HostListener, args: ['blur', ['$event'],] }], ngModelChangeInput: [{ type: HostListener, args: ['ngModelChange', ['$event'],] }] }; return LegalDocumentMaskDirective; }()); export { LegalDocumentMaskDirective }; if (false) { /** @type {?} */ LegalDocumentMaskDirective.prototype.onChange; /** @type {?} */ LegalDocumentMaskDirective.prototype.onTouched; /** @type {?} */ LegalDocumentMaskDirective.prototype.writeTimeout; /** * @type {?} * @private */ LegalDocumentMaskDirective.prototype.el; /** * @type {?} * @private */ LegalDocumentMaskDirective.prototype.renderer; /** * @type {?} * @private */ LegalDocumentMaskDirective.prototype._control; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVnYWwtZG9jdW1lbnQtbWFzay5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AanVzdGEvbWFzay1kaXJlY3RpdmUvIiwic291cmNlcyI6WyJsaWIvbGVnYWwtZG9jdW1lbnQtbWFzay5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQXdCLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRWhEO0lBU0Usb0NBQ1UsRUFBYyxFQUNkLFFBQW1CLEVBQ25CLFFBQW1CO1FBRm5CLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGFBQVEsR0FBUixRQUFRLENBQVc7UUFSN0IsYUFBUTs7OztRQUFHLFVBQUMsS0FBVSxJQUFNLENBQUMsRUFBQztRQUM5QixjQUFTOzs7UUFBRyxjQUFPLENBQUMsRUFBQztJQVFoQixDQUFDOzs7O0lBRU4sNkNBQVE7OztJQUFSOztZQUNRLGdCQUFnQixHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUs7UUFDcEQsSUFBRyxnQkFBZ0IsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFOztnQkFDNUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUM7WUFDaEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN4QjtJQUNILENBQUM7Ozs7SUFFRCxnREFBVzs7O0lBQVg7UUFDRSxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxzQkFBSSwrQ0FBTzs7OztRQUFYO1lBQ0UsT0FBTyxJQUFJ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REFBVzs7Ozs7SUFBbkIsVUFBb0IsS0FBYTs7WUFDekIsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDckQsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkMsQ0FBQzs7Z0JBM0dGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO2lCQUNuQzs7OztnQkFObUIsVUFBVTtnQkFBZ0IsU0FBUztnQkFDeEIsU0FBUzs7OzZCQWtDckMsWUFBWSxTQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQzs4QkFXaEMsWUFBWSxTQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQzs2QkFZbEMsWUFBWSxTQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQzs2QkFRbkMsWUFBWSxTQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQzs0QkFPaEMsWUFBWSxTQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQztxQ0FPL0IsWUFBWSxTQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7SUFnQzNDLGlDQUFDO0NBQUEsQUE1R0QsSUE0R0M7U0F6R1ksMEJBQTBCOzs7SUFDckMsOENBQThCOztJQUM5QiwrQ0FBcUI7O0lBRXJCLGtEQUFrQjs7Ozs7SUFHaEIsd0NBQXNCOzs7OztJQUN0Qiw4Q0FBMkI7Ozs7O0lBQzNCLDhDQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBSZW5kZXJlcjIsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZm9ybWF0Q3BmLCBmb3JtYXRDbnBqIH0gZnJvbSAnLi91dGlscyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tqc3RMZWdhbERvY3VtZW50TWFza10nLFxufSlcbmV4cG9ydCBjbGFzcyBMZWdhbERvY3VtZW50TWFza0RpcmVjdGl2ZSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3ksIE9uSW5pdCB7XG4gIG9uQ2hhbmdlID0gKHZhbHVlOiBhbnkpID0+IHt9O1xuICBvblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICB3cml0ZVRpbWVvdXQ6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIF9jb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IHVuZm9ybWF0dGVkVmFsdWUgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gICAgaWYodW5mb3JtYXR0ZWRWYWx1ZSAmJiB1bmZvcm1hdHRlZFZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5yZXR1cm5WYWx1ZSh1bmZvcm1hdHRlZFZhbHVlKTtcbiAgICAgIHRoaXMud3JpdGVWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMud3JpdGVUaW1lb3V0KTtcbiAgfVxuXG4gIGdldCBjb250cm9sKCkge1xuICAgIHJldHVybiB0aGlzLl9jb250cm9sLmNvbnRyb2w7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pXG4gIGlucHV0S2V5dXAoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5yZXR1cm5WYWx1ZShldmVudC50YXJnZXQudmFsdWUpO1xuICAgIHRoaXMud3JpdGVWYWx1ZSh2YWx1ZSk7XG4gICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVGhpcyBtZXRob2QgZm9yIElvbmljIGlucHV0cyB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gdGhlIG5leHRcbiAgICogbWlub3IgdmVyc2lvbi5cbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ2lvbkJsdXInLCBbJyRldmVudCddKVxuICBpbnB1dE9uYmx1cihldmVudDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnJldHVyblZhbHVlKGV2ZW50LnZhbHVlKTtcbiAgICB0aGlzLndyaXRlVmFsdWUodmFsdWUpO1xuICAgIGV2ZW50LnZhbHVlID0gdmFsdWU7XG4gICAgY29uc29sZS53YXJuKCdUaGlzIGRpcmVjdGl2ZSB3b25cXCd0IHdvcmsgbW9yZSBpbiBJb25pYyBpbnRvIG5leHQgbWlub3IgdmVyc2lvbiEnKTtcbiAgfVxuXG4gICAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFRoaXMgbWV0aG9kIGZvciBJb25pYyBpbnB1dHMgd2lsbCBiZSBkZXByZWNhdGVkIGluIHRoZSBuZXh0XG4gICAqIG1pbm9yIHZlcnNpb24uXG4gICAqL1xuICBASG9zdExpc3RlbmVyKCdpb25Gb2N1cycsIFsnJGV2ZW50J10pXG4gIGlucHV0Rm9jdXMoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5yZXR1cm5WYWx1ZShldmVudC52YWx1ZSk7XG4gICAgdGhpcy53cml0ZVZhbHVlKHZhbHVlKTtcbiAgICBldmVudC52YWx1ZSA9IHZhbHVlO1xuICAgIGNvbnNvbGUud2FybignVGhpcyBkaXJlY3RpdmUgd29uXFwndCB3b3JrIG1vcmUgaW4gSW9uaWMgaW50byBuZXh0IG1pbm9yIHZlcnNpb24hJyk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmb2N1cycsIFsnJGV2ZW50J10pXG4gIGZvY3VzSW5wdXQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5yZXR1cm5WYWx1ZShldmVudC50YXJnZXQudmFsdWUpO1xuICAgIHRoaXMud3JpdGVWYWx1ZSh2YWx1ZSk7XG4gICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdibHVyJywgWyckZXZlbnQnXSlcbiAgYmx1cklucHV0KGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMucmV0dXJuVmFsdWUoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICB0aGlzLndyaXRlVmFsdWUodmFsdWUpO1xuICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbmdNb2RlbENoYW5nZScsIFsnJGV2ZW50J10pXG4gIG5nTW9kZWxDaGFuZ2VJbnB1dChldmVudDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnJldHVyblZhbHVlKGV2ZW50KTtcbiAgICB0aGlzLndyaXRlVmFsdWUodmFsdWUpO1xuICB9XG5cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndyaXRlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICd2YWx1ZScsIHZhbHVlKTtcbiAgICB9LCAxKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICBwcml2YXRlIHdyaXRlVmFsdWVQZXJzb24odmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHZhbHVlLmxlbmd0aCA8PSAxMSkge1xuICAgICAgcmV0dXJuIGZvcm1hdENwZih2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiBmb3JtYXRDbnBqKHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgcmV0dXJuVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIGNvbnN0IG5ld1ZhbCA9IHZhbHVlID8gdmFsdWUucmVwbGFjZSgvXFxEL2dpLCAnJykgOiAnJztcbiAgICByZXR1cm4gdGhpcy53cml0ZVZhbHVlUGVyc29uKG5ld1ZhbCk7XG4gIH1cbn1cbiJdfQ==