UNPKG

input-mask-angular

Version:
77 lines 9.99 kB
import { Directive, ElementRef, EventEmitter, Input, Output, Renderer2 } from '@angular/core'; import { MaskedTextChangedListener } from 'ts-input-mask'; import { InputMaskOptions } from './input-mask-options'; import * as i0 from "@angular/core"; export class InputMaskAngularDirective { constructor(elementRef, renderer) { this.elementRef = elementRef; this.renderer = renderer; this.maskFilled = new EventEmitter(); this.extractedValue = new EventEmitter(); this.formattedText = new EventEmitter(); this.placeholder = new EventEmitter(); this._options = new InputMaskOptions(); } set value(value) { this._value = value; } set primaryFormat(value) { this._primaryFormat = value; } set options(value) { this._options = value; } ngOnInit() { this.setupListener(this.elementRef.nativeElement); } setupListener(input) { if (!!this._primaryFormat) { const emitChanges = (maskFilled, extractedValue, formattedText) => { this.maskFilled.emit(maskFilled); this.extractedValue.emit(extractedValue); this.formattedText.emit(formattedText); }; const listener = MaskedTextChangedListener.installOn(this._primaryFormat, input, new class { onTextChanged(maskFilled, extractedValue, formattedText) { emitChanges(maskFilled, extractedValue, formattedText); } }(), this._options.affineFormats, this._options.customNotations, this._options.affinityCalculationStrategy, this._options.autocomplete); this.renderer.setProperty(input, 'placeholder', String(listener.placeholder())); if (!!this._value) { listener.setText(this._value); } this.placeholder.emit(String(listener.placeholder())); } else { input.addEventListener('input', () => { this.extractedValue.emit(input.value); }); } } } /** @nocollapse */ InputMaskAngularDirective.ɵfac = function InputMaskAngularDirective_Factory(t) { return new (t || InputMaskAngularDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2)); }; /** @nocollapse */ InputMaskAngularDirective.ɵdir = i0.ɵɵdefineDirective({ type: InputMaskAngularDirective, selectors: [["input", "mask", ""]], inputs: { value: "value", primaryFormat: ["mask", "primaryFormat"], options: "options" }, outputs: { maskFilled: "maskFilled", extractedValue: "extractedValue", formattedText: "formattedText", placeholder: "placeholder" } }); /*@__PURE__*/ (function () { i0.ɵsetClassMetadata(InputMaskAngularDirective, [{ type: Directive, args: [{ selector: 'input[mask]' }] }], function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, { maskFilled: [{ type: Output }], extractedValue: [{ type: Output }], formattedText: [{ type: Output }], placeholder: [{ type: Output }], value: [{ type: Input, args: ['value'] }], primaryFormat: [{ type: Input, args: ['mask'] }], options: [{ type: Input, args: ['options'] }] }); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbWFzay1hbmd1bGFyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2lucHV0LW1hc2stYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9pbnB1dC1tYXNrLWFuZ3VsYXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNwRyxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7O0FBS3RELE1BQU0sT0FBTyx5QkFBeUI7SUFNcEMsWUFDVSxVQUFzQixFQUN0QixRQUFtQjtRQURuQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFQWixlQUFVLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7UUFDaEUsbUJBQWMsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNsRSxrQkFBYSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ2pFLGdCQUFXLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFvQnhFLGFBQVEsR0FBcUIsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO0lBZDVELENBQUM7SUFJRCxJQUFvQixLQUFLLENBQUMsS0FBYTtRQUNyQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBSUQsSUFBbUIsYUFBYSxDQUFDLEtBQWE7UUFDNUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQUlELElBQXNCLE9BQU8sQ0FBQyxLQUF1QjtRQUNuRCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRU8sYUFBYSxDQUFDLEtBQXVCO1FBQzNDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDekIsTUFBTSxXQUFXLEdBQUcsQ0FDbEIsVUFBbUIsRUFDbkIsY0FBc0IsRUFDdEIsYUFBcUIsRUFDZixFQUFFO2dCQUNSLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUNqQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDekMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDekMsQ0FBQyxDQUFDO1lBQ0YsTUFBTSxRQUFRLEdBQThCLHlCQUF5QixDQUFDLFNBQVMsQ0FDN0UsSUFBSSxDQUFDLGNBQWMsRUFDbkIsS0FBSyxFQUNMLElBQUk7Z0JBQ0ssYUFBYSxDQUNsQixVQUFtQixFQUNuQixjQUFzQixFQUN0QixhQUFxQjtvQkFFckIsV0FBVyxDQUFDLFVBQVUsRUFBRSxjQUFjLEVBQUUsYUFBYSxDQUFDLENBQUM7Z0JBQ3pELENBQUM7YUFDRixFQUFFLEVBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLDJCQUEyQixFQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FDM0IsQ0FBQztZQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDaEYsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDakIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDL0I7WUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUN2RDthQUFNO1lBQ0wsS0FBSyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QyxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQzs7a0dBeEVVLHlCQUF5Qjs4REFBekIseUJBQXlCO2tEQUF6Qix5QkFBeUI7Y0FIckMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSxhQUFhO2FBQ3hCOztrQkFFRSxNQUFNOztrQkFDTixNQUFNOztrQkFDTixNQUFNOztrQkFDTixNQUFNOztrQkFVTixLQUFLO21CQUFDLE9BQU87O2tCQU1iLEtBQUs7bUJBQUMsTUFBTTs7a0JBTVosS0FBSzttQkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBSZW5kZXJlcjJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXNrZWRUZXh0Q2hhbmdlZExpc3RlbmVyfSBmcm9tICd0cy1pbnB1dC1tYXNrJztcbmltcG9ydCB7SW5wdXRNYXNrT3B0aW9uc30gZnJvbSAnLi9pbnB1dC1tYXNrLW9wdGlvbnMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdpbnB1dFttYXNrXSdcbn0pXG5leHBvcnQgY2xhc3MgSW5wdXRNYXNrQW5ndWxhckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBPdXRwdXQoKSBwdWJsaWMgbWFza0ZpbGxlZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgcHVibGljIGV4dHJhY3RlZFZhbHVlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgcHVibGljIGZvcm1hdHRlZFRleHQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXI6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHtcbiAgfVxuXG4gIHByaXZhdGUgX3ZhbHVlOiBzdHJpbmc7XG5cbiAgQElucHV0KCd2YWx1ZScpIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX3ByaW1hcnlGb3JtYXQ6IHN0cmluZztcblxuICBASW5wdXQoJ21hc2snKSBzZXQgcHJpbWFyeUZvcm1hdCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fcHJpbWFyeUZvcm1hdCA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfb3B0aW9uczogSW5wdXRNYXNrT3B0aW9ucyA9IG5ldyBJbnB1dE1hc2tPcHRpb25zKCk7XG5cbiAgQElucHV0KCdvcHRpb25zJykgc2V0IG9wdGlvbnModmFsdWU6IElucHV0TWFza09wdGlvbnMpIHtcbiAgICB0aGlzLl9vcHRpb25zID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXR1cExpc3RlbmVyKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBMaXN0ZW5lcihpbnB1dDogSFRNTElucHV0RWxlbWVudCk6IHZvaWQge1xuICAgIGlmICghIXRoaXMuX3ByaW1hcnlGb3JtYXQpIHtcbiAgICAgIGNvbnN0IGVtaXRDaGFuZ2VzID0gKFxuICAgICAgICBtYXNrRmlsbGVkOiBib29sZWFuLFxuICAgICAgICBleHRyYWN0ZWRWYWx1ZTogc3RyaW5nLFxuICAgICAgICBmb3JtYXR0ZWRUZXh0OiBzdHJpbmdcbiAgICAgICk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLm1hc2tGaWxsZWQuZW1pdChtYXNrRmlsbGVkKTtcbiAgICAgICAgdGhpcy5leHRyYWN0ZWRWYWx1ZS5lbWl0KGV4dHJhY3RlZFZhbHVlKTtcbiAgICAgICAgdGhpcy5mb3JtYXR0ZWRUZXh0LmVtaXQoZm9ybWF0dGVkVGV4dCk7XG4gICAgICB9O1xuICAgICAgY29uc3QgbGlzdGVuZXI6IE1hc2tlZFRleHRDaGFuZ2VkTGlzdGVuZXIgPSBNYXNrZWRUZXh0Q2hhbmdlZExpc3RlbmVyLmluc3RhbGxPbihcbiAgICAgICAgdGhpcy5fcHJpbWFyeUZvcm1hdCxcbiAgICAgICAgaW5wdXQsXG4gICAgICAgIG5ldyBjbGFzcyBpbXBsZW1lbnRzIE1hc2tlZFRleHRDaGFuZ2VkTGlzdGVuZXIuVmFsdWVMaXN0ZW5lciB7XG4gICAgICAgICAgcHVibGljIG9uVGV4dENoYW5nZWQoXG4gICAgICAgICAgICBtYXNrRmlsbGVkOiBib29sZWFuLFxuICAgICAgICAgICAgZXh0cmFjdGVkVmFsdWU6IHN0cmluZyxcbiAgICAgICAgICAgIGZvcm1hdHRlZFRleHQ6IHN0cmluZ1xuICAgICAgICAgICk6IHZvaWQge1xuICAgICAgICAgICAgZW1pdENoYW5nZXMobWFza0ZpbGxlZCwgZXh0cmFjdGVkVmFsdWUsIGZvcm1hdHRlZFRleHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSgpLFxuICAgICAgICB0aGlzLl9vcHRpb25zLmFmZmluZUZvcm1hdHMsXG4gICAgICAgIHRoaXMuX29wdGlvbnMuY3VzdG9tTm90YXRpb25zLFxuICAgICAgICB0aGlzLl9vcHRpb25zLmFmZmluaXR5Q2FsY3VsYXRpb25TdHJhdGVneSxcbiAgICAgICAgdGhpcy5fb3B0aW9ucy5hdXRvY29tcGxldGVcbiAgICAgICk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KGlucHV0LCAncGxhY2Vob2xkZXInLCBTdHJpbmcobGlzdGVuZXIucGxhY2Vob2xkZXIoKSkpO1xuICAgICAgaWYgKCEhdGhpcy5fdmFsdWUpIHtcbiAgICAgICAgbGlzdGVuZXIuc2V0VGV4dCh0aGlzLl92YWx1ZSk7XG4gICAgICB9XG4gICAgICB0aGlzLnBsYWNlaG9sZGVyLmVtaXQoU3RyaW5nKGxpc3RlbmVyLnBsYWNlaG9sZGVyKCkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XG4gICAgICAgIHRoaXMuZXh0cmFjdGVkVmFsdWUuZW1pdChpbnB1dC52YWx1ZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxufVxuIl19