angular2-text-mask
Version:
Angular 2 directive for input text masking
104 lines • 4.5 kB
JavaScript
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var core_1 = require("@angular/core");
var common_1 = require("@angular/common");
var forms_1 = require("@angular/forms");
var textMaskCore_1 = require("text-mask-core/dist/textMaskCore");
var MaskedInputDirective = MaskedInputDirective_1 = (function () {
function MaskedInputDirective(renderer, element) {
this.renderer = renderer;
this.element = element;
this.textMaskConfig = {
mask: '',
guide: true,
placeholderChar: '_',
pipe: undefined,
keepCharPositions: false,
};
this._onTouched = function () { };
this._onChange = function (_) { };
}
MaskedInputDirective.prototype.setupMask = function () {
if (this.element.nativeElement.tagName === 'INPUT') {
// `textMask` directive is used directly on an input element
this.inputElement = this.element.nativeElement;
}
else {
// `textMask` directive is used on an abstracted input element, `ion-input`, `md-input`, etc
this.inputElement = this.element.nativeElement.getElementsByTagName('INPUT')[0];
}
if (this.inputElement) {
this.textMaskInputElement = textMaskCore_1.createTextMaskInputElement(Object.assign({ inputElement: this.inputElement }, this.textMaskConfig));
}
};
MaskedInputDirective.prototype.writeValue = function (value) {
if (!this.inputElement) {
this.setupMask();
}
if (this.textMaskInputElement !== undefined) {
this.textMaskInputElement.update(value);
}
};
MaskedInputDirective.prototype.registerOnChange = function (fn) { this._onChange = fn; };
MaskedInputDirective.prototype.registerOnTouched = function (fn) { this._onTouched = fn; };
MaskedInputDirective.prototype.onInput = function (value) {
if (!this.inputElement) {
this.setupMask();
}
this.textMaskInputElement.update(value);
// check against the last value to prevent firing ngModelChange despite no changes
if (this.lastValue !== value) {
this.lastValue = value;
this._onChange(value);
}
};
MaskedInputDirective.prototype.setDisabledState = function (isDisabled) {
this.renderer.setElementProperty(this.element.nativeElement, 'disabled', isDisabled);
};
return MaskedInputDirective;
}());
__decorate([
core_1.Input('textMask'),
__metadata("design:type", Object)
], MaskedInputDirective.prototype, "textMaskConfig", void 0);
MaskedInputDirective = MaskedInputDirective_1 = __decorate([
core_1.Directive({
host: {
'(input)': 'onInput($event.target.value)',
'(blur)': '_onTouched()'
},
selector: '[textMask]',
providers: [{
provide: forms_1.NG_VALUE_ACCESSOR,
useExisting: core_1.forwardRef(function () { return MaskedInputDirective_1; }),
multi: true
}]
}),
__metadata("design:paramtypes", [core_1.Renderer, core_1.ElementRef])
], MaskedInputDirective);
exports.MaskedInputDirective = MaskedInputDirective;
var TextMaskModule = (function () {
function TextMaskModule() {
}
return TextMaskModule;
}());
TextMaskModule = __decorate([
core_1.NgModule({
declarations: [MaskedInputDirective],
exports: [MaskedInputDirective],
imports: [common_1.CommonModule]
})
], TextMaskModule);
exports.TextMaskModule = TextMaskModule;
var textMaskCore_2 = require("text-mask-core/dist/textMaskCore");
exports.conformToMask = textMaskCore_2.conformToMask;
var MaskedInputDirective_1;
//# sourceMappingURL=angular2TextMask.js.map
;