input-mask-angular
Version:
Angular directive using ts-input-mask library
77 lines • 9.99 kB
JavaScript
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