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)

145 lines 9.7 kB
/** * @fileoverview added by tsickle * Generated from: lib/currency-mask.directive.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Directive, ElementRef, Input, HostListener, Renderer2, forwardRef, } from '@angular/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import InputMask from 'inputmask'; export class CurrencyMaskDirective { /** * @param {?} elementRef * @param {?} renderer */ constructor(elementRef, renderer) { this.elementRef = elementRef; this.renderer = renderer; this.currencyMultiplier = 100; this.currencyPrefix = 'R$ '; this.masker = new InputMask({ alias: 'currency', autoGroup: true, autoUnmask: true, groupSeparator: '.', radixPoint: ',', rightAlign: false, placeholder: '0,00', numericInput: true, prefix: this.currencyPrefix, }); } /** * @return {?} */ ngOnInit() { this.masker.mask(this.elementRef.nativeElement); } /** * @return {?} */ ngOnDestroy() { window.clearTimeout(this.rendererTimeout); } /** * @param {?} rawValue * @return {?} */ writeValue(rawValue) { /** @type {?} */ const value = parseFloat(rawValue) / this.currencyMultiplier; this.rendererTimeout = window.setTimeout((/** * @return {?} */ () => { this.renderer.setProperty(this.elementRef.nativeElement, 'value', value); }), 0); } /** * @param {?} onChange * @return {?} */ registerOnChange(onChange) { this.onChange = onChange; } /** * @param {?} onTouched * @return {?} */ registerOnTouched(onTouched) { this.onTouched = onTouched; } /** * @param {?} isDisabled * @return {?} */ setDisabledState(isDisabled) { this.renderer.setProperty(this.elementRef.nativeElement, 'disabled', isDisabled); } /** * @param {?} event * @return {?} */ onInputBlur(event) { // Inputmask não troca o separador de casas decimais /** @type {?} */ const value = parseFloat(event.target.value.replace(',', '.')) * this.currencyMultiplier; this.onChange(value); } } CurrencyMaskDirective.decorators = [ { type: Directive, args: [{ selector: '[jstCurrencyMask]', providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef((/** * @return {?} */ () => CurrencyMaskDirective)), multi: true, }, ], },] } ]; /** @nocollapse */ CurrencyMaskDirective.ctorParameters = () => [ { type: ElementRef }, { type: Renderer2 } ]; CurrencyMaskDirective.propDecorators = { currencyMultiplier: [{ type: Input }], currencyPrefix: [{ type: Input }], onInputBlur: [{ type: HostListener, args: ['blur', ['$event'],] }] }; if (false) { /** @type {?} */ CurrencyMaskDirective.prototype.currencyMultiplier; /** @type {?} */ CurrencyMaskDirective.prototype.currencyPrefix; /** @type {?} */ CurrencyMaskDirective.prototype.onChange; /** @type {?} */ CurrencyMaskDirective.prototype.onTouched; /** * @type {?} * @private */ CurrencyMaskDirective.prototype.rendererTimeout; /** * @type {?} * @private */ CurrencyMaskDirective.prototype.masker; /** * @type {?} * @private */ CurrencyMaskDirective.prototype.elementRef; /** * @type {?} * @private */ CurrencyMaskDirective.prototype.renderer; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3ktbWFzay5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AanVzdGEvbWFzay1kaXJlY3RpdmUvIiwic291cmNlcyI6WyJsaWIvY3VycmVuY3ktbWFzay5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFVBQVUsRUFDVixLQUFLLEVBQ0wsWUFBWSxFQUNaLFNBQVMsRUFFVCxVQUFVLEdBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sU0FBUyxNQUFNLFdBQVcsQ0FBQztBQVlsQyxNQUFNLE9BQU8scUJBQXFCOzs7OztJQVVoQyxZQUFvQixVQUFzQixFQUFVLFFBQW1CO1FBQW5ELGVBQVUsR0FBVixVQUFVLENBQVk7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBVDlELHVCQUFrQixHQUFHLEdBQUcsQ0FBQztRQUN6QixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQVM5QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksU0FBUyxDQUFDO1lBQzFCLEtBQUssRUFBRSxVQUFVO1lBQ2pCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsVUFBVSxFQUFFLElBQUk7WUFDaEIsY0FBYyxFQUFFLEdBQUc7WUFDbkIsVUFBVSxFQUFFLEdBQUc7WUFDZixVQUFVLEVBQUUsS0FBSztZQUNqQixXQUFXLEVBQUUsTUFBTTtZQUNuQixZQUFZLEVBQUUsSUFBSTtZQUNsQixNQUFNLEVBQUUsSUFBSSxDQUFDLGNBQWM7U0FDNUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7OztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2xELENBQUM7Ozs7SUFFRCxXQUFXO1FBQ1QsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDNUMsQ0FBQzs7Ozs7SUFFRCxVQUFVLENBQUMsUUFBZ0I7O2NBQ25CLEtBQUssR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQjtRQUM1RCxJQUFJLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxVQUFVOzs7UUFBQyxHQUFHLEVBQUU7WUFDNUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7Ozs7O0lBRUQsZ0JBQWdCLENBQUMsUUFBOEI7UUFDN0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDM0IsQ0FBQzs7Ozs7SUFFRCxpQkFBaUIsQ0FBQyxTQUErQjtRQUMvQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDOzs7OztJQUVELGdCQUFnQixDQUFDLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNuRixDQUFDOzs7OztJQUdELFdBQVcsQ0FBQyxLQUFVOzs7Y0FFZCxLQUFLLEdBQ1QsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDaEQsSUFBSSxDQUFDLGtCQUFrQjtRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7OztZQXBFRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtnQkFDN0IsU0FBUyxFQUFFO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVOzs7d0JBQUMsR0FBRyxFQUFFLENBQUMscUJBQXFCLEVBQUM7d0JBQ3BELEtBQUssRUFBRSxJQUFJO3FCQUNaO2lCQUNGO2FBQ0Y7Ozs7WUFuQkMsVUFBVTtZQUdWLFNBQVM7OztpQ0FrQlIsS0FBSzs2QkFDTCxLQUFLOzBCQWlETCxZQUFZLFNBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDOzs7O0lBbERoQyxtREFBa0M7O0lBQ2xDLCtDQUFnQzs7SUFFaEMseUNBQWdDOztJQUNoQywwQ0FBaUM7Ozs7O0lBRWpDLGdEQUFpQzs7Ozs7SUFDakMsdUNBQXFCOzs7OztJQUVULDJDQUE4Qjs7Ozs7SUFBRSx5Q0FBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIE9uSW5pdCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIEhvc3RMaXN0ZW5lcixcbiAgUmVuZGVyZXIyLFxuICBPbkRlc3Ryb3ksXG4gIGZvcndhcmRSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IElucHV0TWFzayBmcm9tICdpbnB1dG1hc2snO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbanN0Q3VycmVuY3lNYXNrXScsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ3VycmVuY3lNYXNrRGlyZWN0aXZlKSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEN1cnJlbmN5TWFza0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIEBJbnB1dCgpIGN1cnJlbmN5TXVsdGlwbGllciA9IDEwMDtcbiAgQElucHV0KCkgY3VycmVuY3lQcmVmaXggPSAnUiQgJztcblxuICBvbkNoYW5nZT86IChldmVudDogYW55KSA9PiB2b2lkO1xuICBvblRvdWNoZWQ/OiAoZXZlbnQ6IGFueSkgPT4gdm9pZDtcblxuICBwcml2YXRlIHJlbmRlcmVyVGltZW91dD86IG51bWJlcjtcbiAgcHJpdmF0ZSBtYXNrZXI/OiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcbiAgICB0aGlzLm1hc2tlciA9IG5ldyBJbnB1dE1hc2soe1xuICAgICAgYWxpYXM6ICdjdXJyZW5jeScsXG4gICAgICBhdXRvR3JvdXA6IHRydWUsXG4gICAgICBhdXRvVW5tYXNrOiB0cnVlLFxuICAgICAgZ3JvdXBTZXBhcmF0b3I6ICcuJyxcbiAgICAgIHJhZGl4UG9pbnQ6ICcsJyxcbiAgICAgIHJpZ2h0QWxpZ246IGZhbHNlLFxuICAgICAgcGxhY2Vob2xkZXI6ICcwLDAwJyxcbiAgICAgIG51bWVyaWNJbnB1dDogdHJ1ZSxcbiAgICAgIHByZWZpeDogdGhpcy5jdXJyZW5jeVByZWZpeCxcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubWFza2VyLm1hc2sodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnJlbmRlcmVyVGltZW91dCk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHJhd1ZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcnNlRmxvYXQocmF3VmFsdWUpIC8gdGhpcy5jdXJyZW5jeU11bHRpcGxpZXI7XG4gICAgdGhpcy5yZW5kZXJlclRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAndmFsdWUnLCB2YWx1ZSk7XG4gICAgfSwgMCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKG9uQ2hhbmdlOiAoZXZlbnQ6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBvbkNoYW5nZTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKG9uVG91Y2hlZDogKGV2ZW50OiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IG9uVG91Y2hlZDtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNhYmxlZCcsIGlzRGlzYWJsZWQpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignYmx1cicsIFsnJGV2ZW50J10pXG4gIG9uSW5wdXRCbHVyKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAvLyBJbnB1dG1hc2sgbsOjbyB0cm9jYSBvIHNlcGFyYWRvciBkZSBjYXNhcyBkZWNpbWFpc1xuICAgIGNvbnN0IHZhbHVlID1cbiAgICAgIHBhcnNlRmxvYXQoZXZlbnQudGFyZ2V0LnZhbHVlLnJlcGxhY2UoJywnLCAnLicpKSAqXG4gICAgICB0aGlzLmN1cnJlbmN5TXVsdGlwbGllcjtcbiAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgfVxufVxuIl19