@justa/mask-directive
Version:
 
145 lines • 9.7 kB
JavaScript
/**
* @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