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)

162 lines 10.9 kB
/** * @fileoverview added by tsickle * Generated from: lib/money-mask.directive.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Directive, Input, ElementRef, HostListener } from '@angular/core'; import InputMask from 'inputmask'; /** * @deprecated Use `jstCurrencyMask` instead. */ export class MoneyMaskDirective { /** * @param {?} elementRef */ constructor(elementRef) { this.elementRef = elementRef; // Ref to the element in the DOM this.hasDecimal = false; // Input to set decimals to inputmask obj // Input to set decimals to inputmask obj this.hasPrefix = false; // Prefix to insert to the inputmask obj // Prefix to insert to the inputmask obj this.prefixSymbol = 'R$ '; // prefix symbol to the inputmask // prefix symbol to the inputmask this.imObject = { alias: 'currency', autoGroup: true, groupSeparator: '.', radixPoint: ',', rightAlign: false, prefix: 'R$ ', }; // Attach the local variable to the element in the DOM this.el = this.elementRef.nativeElement; } /** * @return {?} */ ngOnInit() { // verify if has prefix. Eg.: R$ if (this.hasPrefix && this.prefixSymbol) { this.imObject['prefix'] = this.prefixSymbol; } // Verify if has decimal numbers if (this.hasDecimal) { this.imObject['numericInput'] = true; } this.im = new InputMask(this.imObject); this.im.mask(this.el); } /** * @param {?} event * @return {?} */ onKeyPress(event) { console.log(event); if (!this.restrictNumeric(event)) { event.preventDefault; } } /** * @param {?} e * @return {?} */ onPaste(e) { this.onInputChange(e); } /** * @param {?} e * @return {?} */ onChange(e) { this.onInputChange(e); } /** * @param {?} e * @return {?} */ onInput(e) { this.onInputChange(e); } /** * @param {?} event * @return {?} */ onInputChange(event) { /** @type {?} */ const eventValue = event; /** @type {?} */ const newVal = typeof event === 'string' && (eventValue.includes('R$') || eventValue.includes('.')) ? eventValue.replace(/\D/gi, '') : eventValue; } /** * @param {?} e * @return {?} */ restrictNumeric(e) { /** @type {?} */ let input; if (e.metaKey || e.ctrlKey) { return true; } if (e.which === 32) { return false; } if (e.which === 0) { return true; } if (e.which < 33) { return true; } input = String.fromCharCode(e.which); return !!/[\d\s]/.test(input); } } MoneyMaskDirective.decorators = [ { type: Directive, args: [{ selector: '[jstMoneyMask]', },] } ]; /** @nocollapse */ MoneyMaskDirective.ctorParameters = () => [ { type: ElementRef } ]; MoneyMaskDirective.propDecorators = { hasDecimal: [{ type: Input }], hasPrefix: [{ type: Input }], prefixSymbol: [{ type: Input }], onKeyPress: [{ type: HostListener, args: ['keypress', ['$event'],] }], onPaste: [{ type: HostListener, args: ['paste', ['$event'],] }], onChange: [{ type: HostListener, args: ['change', ['$event'],] }], onInput: [{ type: HostListener, args: ['input', ['$event'],] }] }; if (false) { /** * @type {?} * @private */ MoneyMaskDirective.prototype.im; /** * @type {?} * @private */ MoneyMaskDirective.prototype.el; /** @type {?} */ MoneyMaskDirective.prototype.hasDecimal; /** @type {?} */ MoneyMaskDirective.prototype.hasPrefix; /** @type {?} */ MoneyMaskDirective.prototype.prefixSymbol; /** * @type {?} * @private */ MoneyMaskDirective.prototype.imObject; /** * @type {?} * @private */ MoneyMaskDirective.prototype.elementRef; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZXktbWFzay5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AanVzdGEvbWFzay1kaXJlY3RpdmUvIiwic291cmNlcyI6WyJsaWIvbW9uZXktbWFzay5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sU0FBUyxNQUFNLFdBQVcsQ0FBQzs7OztBQVFsQyxNQUFNLE9BQU8sa0JBQWtCOzs7O0lBZ0I3QixZQUFvQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZOztRQWJqQyxlQUFVLEdBQVksS0FBSyxDQUFDLENBQUMseUNBQXlDOztRQUN0RSxjQUFTLEdBQVksS0FBSyxDQUFDLENBQUMsd0NBQXdDOztRQUNwRSxpQkFBWSxHQUFXLEtBQUssQ0FBQyxDQUFDLGlDQUFpQzs7UUFFaEUsYUFBUSxHQUFHO1lBQ2pCLEtBQUssRUFBRSxVQUFVO1lBQ2pCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsY0FBYyxFQUFFLEdBQUc7WUFDbkIsVUFBVSxFQUFFLEdBQUc7WUFDZixVQUFVLEVBQUUsS0FBSztZQUNqQixNQUFNLEVBQUUsS0FBSztTQUNkLENBQUM7UUFHQSxzREFBc0Q7UUFDdEQsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztJQUMxQyxDQUFDOzs7O0lBRUQsUUFBUTtRQUNOLGdDQUFnQztRQUNoQyxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7U0FDN0M7UUFDRCxnQ0FBZ0M7UUFDaEMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQ3RDO1FBQ0QsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7Ozs7O0lBR0QsVUFBVSxDQUFDLEtBQUs7UUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2hDLEtBQUssQ0FBQyxjQUFjLENBQUM7U0FDdEI7SUFDSCxDQUFDOzs7OztJQUVrQyxPQUFPLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7Ozs7O0lBQ21DLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEIsQ0FBQzs7Ozs7SUFDa0MsT0FBTyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixDQUFDOzs7OztJQUVELGFBQWEsQ0FBQyxLQUFVOztjQUNoQixVQUFVLEdBQUcsS0FBSzs7Y0FDbEIsTUFBTSxHQUNWLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNsRixDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQ2hDLENBQUMsQ0FBQyxVQUFVO0lBQ2xCLENBQUM7Ozs7O0lBRUQsZUFBZSxDQUFDLENBQUM7O1lBQ1gsS0FBSztRQUNULElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFO1lBQzFCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssRUFBRSxFQUFFO1lBQ2xCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFO1lBQ2pCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxFQUFFO1lBQ2hCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxLQUFLLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDOzs7WUEvRUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxnQkFBZ0I7YUFDM0I7Ozs7WUFSa0MsVUFBVTs7O3lCQVkxQyxLQUFLO3dCQUNMLEtBQUs7MkJBQ0wsS0FBSzt5QkE2QkwsWUFBWSxTQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQztzQkFRbkMsWUFBWSxTQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQzt1QkFHaEMsWUFBWSxTQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQztzQkFHakMsWUFBWSxTQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQzs7Ozs7OztJQS9DakMsZ0NBQWdCOzs7OztJQUNoQixnQ0FBNkI7O0lBQzdCLHdDQUFxQzs7SUFDckMsdUNBQW9DOztJQUNwQywwQ0FBc0M7Ozs7O0lBRXRDLHNDQU9FOzs7OztJQUVVLHdDQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIE9uSW5pdCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgSW5wdXRNYXNrIGZyb20gJ2lucHV0bWFzayc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGBqc3RDdXJyZW5jeU1hc2tgIGluc3RlYWQuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tqc3RNb25leU1hc2tdJyxcbn0pXG5leHBvcnQgY2xhc3MgTW9uZXlNYXNrRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSBpbTogYW55OyAvLyBJbnB1dG1hc2sgcmVmXG4gIHByaXZhdGUgZWw6IEhUTUxJbnB1dEVsZW1lbnQ7IC8vIFJlZiB0byB0aGUgZWxlbWVudCBpbiB0aGUgRE9NXG4gIEBJbnB1dCgpIGhhc0RlY2ltYWw6IGJvb2xlYW4gPSBmYWxzZTsgLy8gSW5wdXQgdG8gc2V0IGRlY2ltYWxzIHRvIGlucHV0bWFzayBvYmpcbiAgQElucHV0KCkgaGFzUHJlZml4OiBib29sZWFuID0gZmFsc2U7IC8vIFByZWZpeCB0byBpbnNlcnQgdG8gdGhlIGlucHV0bWFzayBvYmpcbiAgQElucHV0KCkgcHJlZml4U3ltYm9sOiBzdHJpbmcgPSAnUiQgJzsgLy8gcHJlZml4IHN5bWJvbCB0byB0aGUgaW5wdXRtYXNrXG5cbiAgcHJpdmF0ZSBpbU9iamVjdCA9IHtcbiAgICBhbGlhczogJ2N1cnJlbmN5JyxcbiAgICBhdXRvR3JvdXA6IHRydWUsXG4gICAgZ3JvdXBTZXBhcmF0b3I6ICcuJyxcbiAgICByYWRpeFBvaW50OiAnLCcsXG4gICAgcmlnaHRBbGlnbjogZmFsc2UsXG4gICAgcHJlZml4OiAnUiQgJyxcbiAgfTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICAvLyBBdHRhY2ggdGhlIGxvY2FsIHZhcmlhYmxlIHRvIHRoZSBlbGVtZW50IGluIHRoZSBET01cbiAgICB0aGlzLmVsID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyB2ZXJpZnkgaWYgaGFzIHByZWZpeC4gRWcuOiBSJFxuICAgIGlmICh0aGlzLmhhc1ByZWZpeCAmJiB0aGlzLnByZWZpeFN5bWJvbCkge1xuICAgICAgdGhpcy5pbU9iamVjdFsncHJlZml4J10gPSB0aGlzLnByZWZpeFN5bWJvbDtcbiAgICB9XG4gICAgLy8gVmVyaWZ5IGlmIGhhcyBkZWNpbWFsIG51bWJlcnNcbiAgICBpZiAodGhpcy5oYXNEZWNpbWFsKSB7XG4gICAgICB0aGlzLmltT2JqZWN0WydudW1lcmljSW5wdXQnXSA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuaW0gPSBuZXcgSW5wdXRNYXNrKHRoaXMuaW1PYmplY3QpO1xuICAgIHRoaXMuaW0ubWFzayh0aGlzLmVsKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleXByZXNzJywgWyckZXZlbnQnXSlcbiAgb25LZXlQcmVzcyhldmVudCkge1xuICAgIGNvbnNvbGUubG9nKGV2ZW50KTtcbiAgICBpZiAoIXRoaXMucmVzdHJpY3ROdW1lcmljKGV2ZW50KSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQ7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigncGFzdGUnLCBbJyRldmVudCddKSBvblBhc3RlKGUpIHtcbiAgICB0aGlzLm9uSW5wdXRDaGFuZ2UoZSk7XG4gIH1cbiAgQEhvc3RMaXN0ZW5lcignY2hhbmdlJywgWyckZXZlbnQnXSkgb25DaGFuZ2UoZSkge1xuICAgIHRoaXMub25JbnB1dENoYW5nZShlKTtcbiAgfVxuICBASG9zdExpc3RlbmVyKCdpbnB1dCcsIFsnJGV2ZW50J10pIG9uSW5wdXQoZSkge1xuICAgIHRoaXMub25JbnB1dENoYW5nZShlKTtcbiAgfVxuXG4gIG9uSW5wdXRDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGV2ZW50VmFsdWUgPSBldmVudDtcbiAgICBjb25zdCBuZXdWYWwgPVxuICAgICAgdHlwZW9mIGV2ZW50ID09PSAnc3RyaW5nJyAmJiAoZXZlbnRWYWx1ZS5pbmNsdWRlcygnUiQnKSB8fCBldmVudFZhbHVlLmluY2x1ZGVzKCcuJykpXG4gICAgICAgID8gZXZlbnRWYWx1ZS5yZXBsYWNlKC9cXEQvZ2ksICcnKVxuICAgICAgICA6IGV2ZW50VmFsdWU7XG4gIH1cblxuICByZXN0cmljdE51bWVyaWMoZSk6IGJvb2xlYW4ge1xuICAgIGxldCBpbnB1dDtcbiAgICBpZiAoZS5tZXRhS2V5IHx8IGUuY3RybEtleSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChlLndoaWNoID09PSAzMikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoZS53aGljaCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChlLndoaWNoIDwgMzMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpbnB1dCA9IFN0cmluZy5mcm9tQ2hhckNvZGUoZS53aGljaCk7XG4gICAgcmV0dXJuICEhL1tcXGRcXHNdLy50ZXN0KGlucHV0KTtcbiAgfVxufVxuIl19