UNPKG

@true-directive/grid

Version:

Angular Data Grid from Yopsilon.

128 lines 15.1 kB
import * as tslib_1 from "tslib"; var MaskDirective_1; /** * Copyright (c) 2018-2019 Aleksey Melnikov, True Directive Company. * @link https://truedirective.com/ * @license MIT */ import { Directive, ElementRef, Input, HostListener, Renderer2, forwardRef } from '@angular/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import { InternationalizationService } from '../internationalization/internationalization.service'; import { MaskSettings } from '@true-directive/base'; import { MaskState } from '@true-directive/base'; import { MaskBaseDirective } from './mask-base.directive'; let MaskDirective = MaskDirective_1 = class MaskDirective extends MaskBaseDirective { constructor(_renderer, _elementRef, intl) { super(_renderer, _elementRef, intl); this._renderer = _renderer; this._elementRef = _elementRef; this.intl = intl; this.onChange = (_) => { }; this.onTouched = () => { }; } registerOnChange(fn) { this.onChange = fn; } registerOnTouched(fn) { this.onTouched = fn; } blur() { // Очищаем, если маска неверна const autocorrected = this._mask.applyMask(this._txtValue); if (autocorrected === '' && !this._mask.settings.allowIncomplete) { this.setText(''); } else { // Маска верна, но нужно автокоррекцию провернуть if (autocorrected !== this._txtValue) { this.setText(autocorrected); } } this.onTouched(); } // Пользователь вносит значение. Parser: View --> Ctrl // Только то, что не обработано маской input(txt) { this.doInput(txt); } // Обновляем состояние updateState() { if (this._txtValue === '') { // Пустое значение this.state = MaskState.EMPTY; } else { if (!this._mask.checkMask(this._txtValue)) { // Считаем, что пользователь не завершил ввод this.state = MaskState.TYPING; } else { this.state = MaskState.OK; } } } toModel() { // Отправляем в модель this.onChange(this._txtValue); // Обновляем состояние this.updateState(); } // Отображаем значение в компоненте. Formatter: Ctrl --> View writeValue(txt) { if (this._txtValue !== txt) { this.setText(txt, false); // Не отправляем значение в модель, т.к. этот метод вызывается как раз после изменения модели } // Но обновить состояние нужно... this.updateState(); } set pattern(m) { if (this._txtValue !== '' && this._mask.pattern !== '' && this._mask.pattern !== m) { // По сложному пути let res = this.currentRes(); let s = this._mask.pureValue(res.newValue); this._mask.pattern = m; res.newValue = this._mask.applyPureValue(s); this.setRes(res); } else { this._mask.pattern = m; } } get pattern() { return this._mask.pattern; } set settings(v) { this._mask.settings = v; } keyDown(e) { return this.processKey(e); } }; tslib_1.__decorate([ Input('true-mask'), tslib_1.__metadata("design:type", String), tslib_1.__metadata("design:paramtypes", [String]) ], MaskDirective.prototype, "pattern", null); tslib_1.__decorate([ Input('true-mask-settings'), tslib_1.__metadata("design:type", MaskSettings), tslib_1.__metadata("design:paramtypes", [MaskSettings]) ], MaskDirective.prototype, "settings", null); tslib_1.__decorate([ HostListener('keydown', ['$event']), tslib_1.__metadata("design:type", Function), tslib_1.__metadata("design:paramtypes", [Object]), tslib_1.__metadata("design:returntype", void 0) ], MaskDirective.prototype, "keyDown", null); MaskDirective = MaskDirective_1 = tslib_1.__decorate([ Directive({ selector: '[true-mask]', host: { '(input)': 'input($event.target.value)', '(blur)': 'blur()' }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => MaskDirective_1), multi: true }] }), tslib_1.__metadata("design:paramtypes", [Renderer2, ElementRef, InternationalizationService]) ], MaskDirective); export { MaskDirective }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzay5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdHJ1ZS1kaXJlY3RpdmUvZ3JpZC8iLCJzb3VyY2VzIjpbInNyYy9tYXNrL21hc2suZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUE7Ozs7RUFJRTtBQUNGLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFFbkcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQVUxRCxJQUFhLGFBQWEscUJBQTFCLE1BQWEsYUFBYyxTQUFRLGlCQUFpQjtJQXlGaEQsWUFDWSxTQUFvQixFQUNwQixXQUF1QixFQUN2QixJQUFpQztRQUMzQyxLQUFLLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUgxQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLFNBQUksR0FBSixJQUFJLENBQTZCO1FBMUZyQyxhQUFRLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUMxQixjQUFTLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBMkY3QixDQUFDO0lBekZELGdCQUFnQixDQUFDLEVBQW9CLElBQVUsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLGlCQUFpQixDQUFDLEVBQWMsSUFBVSxJQUFJLENB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LFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUdELE9BQU8sQ0FBQyxDQUFNO1FBQ1osT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVCLENBQUM7Q0FTSixDQUFBO0FBbkNHO0lBREMsS0FBSyxDQUFDLFdBQVcsQ0FBQzs7OzRDQWFsQjtBQU9EO0lBREMsS0FBSyxDQUFDLG9CQUFvQixDQUFDO3NDQUNaLFlBQVk7NkNBQVosWUFBWTs2Q0FFM0I7QUFHRDtJQURDLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs7Ozs0Q0FHbkM7QUF2RlEsYUFBYTtJQVJ6QixTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUsYUFBYTtRQUN2QixJQUFJLEVBQUUsRUFBQyxTQUFTLEVBQUUsNEJBQTRCLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBQztRQUNuRSxTQUFTLEVBQUUsQ0FBQztnQkFDUixPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWEsQ0FBQztnQkFDNUMsS0FBSyxFQUFFLElBQUk7YUFBQyxDQUFDO0tBQ3BCLENBQUM7NkNBMkZ5QixTQUFTO1FBQ1AsVUFBVTtRQUNqQiwyQkFBMkI7R0E1RnBDLGFBQWEsQ0FnR3pCO1NBaEdZLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMTkgQWxla3NleSBNZWxuaWtvdiwgVHJ1ZSBEaXJlY3RpdmUgQ29tcGFueS5cclxuICogQGxpbmsgaHR0cHM6Ly90cnVlZGlyZWN0aXZlLmNvbS9cclxuICogQGxpY2Vuc2UgTUlUXHJcbiovXHJcbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIEhvc3RMaXN0ZW5lciwgUmVuZGVyZXIyLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IEludGVybmF0aW9uYWxpemF0aW9uU2VydmljZSB9IGZyb20gJy4uL2ludGVybmF0aW9uYWxpemF0aW9uL2ludGVybmF0aW9uYWxpemF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXNrIH0gZnJvbSAnQHRydWUtZGlyZWN0aXZlL2Jhc2UnO1xyXG5pbXBvcnQgeyBNYXNrU2V0dGluZ3MgfSBmcm9tICdAdHJ1ZS1kaXJlY3RpdmUvYmFzZSc7XHJcbmltcG9ydCB7IE1hc2tTdGF0ZSB9IGZyb20gJ0B0cnVlLWRpcmVjdGl2ZS9iYXNlJztcclxuXHJcbmltcG9ydCB7IE1hc2tCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi9tYXNrLWJhc2UuZGlyZWN0aXZlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbdHJ1ZS1tYXNrXScsXHJcbiAgICBob3N0OiB7JyhpbnB1dCknOiAnaW5wdXQoJGV2ZW50LnRhcmdldC52YWx1ZSknLCAnKGJsdXIpJzogJ2JsdXIoKSd9LFxyXG4gICAgcHJvdmlkZXJzOiBbe1xyXG4gICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1hc2tEaXJlY3RpdmUpLFxyXG4gICAgICAgIG11bHRpOiB0cnVlfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIE1hc2tEaXJlY3RpdmUgZXh0ZW5kcyBNYXNrQmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcbiAgICBwcml2YXRlIG9uQ2hhbmdlID0gKF86IGFueSkgPT4ge307XHJcbiAgICBwcml2YXRlIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xyXG5cclxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiBhbnkpID0+IHZvaWQpOiB2b2lkIHsgdGhpcy5vbkNoYW5nZSA9IGZuOyB9XHJcbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQgeyB0aGlzLm9uVG91Y2hlZCA9IGZuOyB9XHJcblxyXG4gICAgYmx1cigpIHtcclxuICAgICAgLy8g0J7Rh9C40YnQsNC10LwsINC10YHQu9C4INC80LDRgdC60LAg0L3QtdCy0LXRgNC90LBcclxuICAgICAgY29uc3QgYXV0b2NvcnJlY3RlZCA9IHRoaXMuX21hc2suYXBwbHlNYXNrKHRoaXMuX3R4dFZhbHVlKTtcclxuICAgICAgaWYgKGF1dG9jb3JyZWN0ZWQgPT09ICcnICYmICF0aGlzLl9tYXNrLnNldHRpbmdzLmFsbG93SW5jb21wbGV0ZSkge1xyXG4gICAgICAgIHRoaXMuc2V0VGV4dCgnJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8g0JzQsNGB0LrQsCDQstC10YDQvdCwLCDQvdC+INC90YPQttC90L4g0LDQstGC0L7QutC+0YDRgNC10LrRhtC40Y4g0L/RgNC+0LLQtdGA0L3Rg9GC0YxcclxuICAgICAgICBpZiAoYXV0b2NvcnJlY3RlZCAhPT0gdGhpcy5fdHh0VmFsdWUpIHtcclxuICAgICAgICAgIHRoaXMuc2V0VGV4dChhdXRvY29ycmVjdGVkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g0J/QvtC70YzQt9C+0LLQsNGC0LXQu9GMINCy0L3QvtGB0LjRgiDQt9C90LDRh9C10L3QuNC1LiBQYXJzZXI6IFZpZXcgLS0+IEN0cmxcclxuICAgIC8vINCi0L7Qu9GM0LrQviDRgtC+LCDRh9GC0L4g0L3QtSDQvtCx0YDQsNCx0L7RgtCw0L3QviDQvNCw0YHQutC+0LlcclxuICAgIGlucHV0KHR4dDogYW55KSB7XHJcbiAgICAgIHRoaXMuZG9JbnB1dCh0eHQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vINCe0LHQvdC+0LLQu9GP0LXQvCDRgdC+0YHRgtC+0Y/QvdC40LVcclxuICAgIHByb3RlY3RlZCB1cGRhdGVTdGF0ZSgpIHtcclxuICAgICAgaWYgKHRoaXMuX3R4dFZhbHVlID09PSAnJykge1xyXG4gICAgICAgIC8vINCf0YPRgdGC0L7QtSDQt9C90LDRh9C10L3QuNC1XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IE1hc2tTdGF0ZS5FTVBUWTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoIXRoaXMuX21hc2suY2hlY2tNYXNrKHRoaXMuX3R4dFZhbHVlKSkge1xyXG4gICAgICAgICAgLy8g0KHRh9C40YLQsNC10LwsINGH0YLQviDQv9C+0LvRjNC30L7QstCw0YLQtdC70Ywg0L3QtSDQt9Cw0LLQtdGA0YjQuNC7INCy0LLQvtC0XHJcbiAgICAgICAgICB0aGlzLnN0YXRlID0gTWFza1N0YXRlLlRZUElORztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zdGF0ZSA9IE1hc2tTdGF0ZS5PSztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgdG9Nb2RlbCgpOiB2b2lkIHtcclxuICAgICAgLy8g0J7RgtC/0YDQsNCy0LvRj9C10Lwg0LIg0LzQvtC00LXQu9GMXHJcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5fdHh0VmFsdWUpO1xyXG4gICAgICAvLyDQntCx0L3QvtCy0LvRj9C10Lwg0YHQvtGB0YLQvtGP0L3QuNC1XHJcbiAgICAgIHRoaXMudXBkYXRlU3RhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDQntGC0L7QsdGA0LDQttCw0LXQvCDQt9C90LDRh9C10L3QuNC1INCyINC60L7QvNC/0L7QvdC10L3RgtC1LiBGb3JtYXR0ZXI6IEN0cmwgLS0+IFZpZXdcclxuICAgIHdyaXRlVmFsdWUodHh0OiBhbnkpOiB2b2lkIHtcclxuICAgICAgaWYgKHRoaXMuX3R4dFZhbHVlICE9PSB0eHQpIHtcclxuICAgICAgICB0aGlzLnNldFRleHQodHh0LCBmYWxzZSk7IC8vINCd0LUg0L7RgtC/0YDQsNCy0LvRj9C10Lwg0LfQvdCw0YfQtdC90LjQtSDQsiDQvNC+0LTQtdC70YwsINGCLtC6LiDRjdGC0L7RgiDQvNC10YLQvtC0INCy0YvQt9GL0LLQsNC10YLRgdGPINC60LDQuiDRgNCw0Lcg0L/QvtGB0LvQtSDQuNC30LzQtdC90LXQvdC40Y8g0LzQvtC00LXQu9C4XHJcbiAgICAgIH1cclxuICAgICAgLy8g0J3QviDQvtCx0L3QvtCy0LjRgtGMINGB0L7RgdGC0L7Rj9C90LjQtSDQvdGD0LbQvdC+Li4uXHJcbiAgICAgIHRoaXMudXBkYXRlU3RhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoJ3RydWUtbWFzaycpXHJcbiAgICBwdWJsaWMgc2V0IHBhdHRlcm4obTogc3RyaW5nKSB7XHJcblxyXG4gICAgICBpZiAodGhpcy5fdHh0VmFsdWUgIT09ICcnICYmIHRoaXMuX21hc2sucGF0dGVybiAhPT0gJycgJiYgdGhpcy5fbWFzay5wYXR0ZXJuICE9PSBtKSB7XHJcbiAgICAgICAgLy8g0J/QviDRgdC70L7QttC90L7QvNGDINC/0YPRgtC4XHJcbiAgICAgICAgbGV0IHJlcyA9IHRoaXMuY3VycmVudFJlcygpO1xyXG4gICAgICAgIGxldCBzID0gdGhpcy5fbWFzay5wdXJlVmFsdWUocmVzLm5ld1ZhbHVlKTtcclxuICAgICAgICB0aGlzLl9tYXNrLnBhdHRlcm4gPSBtO1xyXG4gICAgICAgIHJlcy5uZXdWYWx1ZSA9IHRoaXMuX21hc2suYXBwbHlQdXJlVmFsdWUocyk7XHJcbiAgICAgICAgdGhpcy5zZXRSZXMocmVzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLl9tYXNrLnBhdHRlcm4gPSBtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBwYXR0ZXJuKCk6IHN0cmluZyB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9tYXNrLnBhdHRlcm47XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KCd0cnVlLW1hc2stc2V0dGluZ3MnKVxyXG4gICAgc2V0IHNldHRpbmdzKHY6IE1hc2tTZXR0aW5ncykge1xyXG4gICAgICB0aGlzLl9tYXNrLnNldHRpbmdzID0gdjtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcclxuICAgIGtleURvd24oZTogYW55KSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NLZXkoZSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgIHByb3RlY3RlZCBfcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgICAgcHJvdGVjdGVkIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgICBwcm90ZWN0ZWQgaW50bDogSW50ZXJuYXRpb25hbGl6YXRpb25TZXJ2aWNlKSB7XHJcbiAgICAgIHN1cGVyKF9yZW5kZXJlciwgX2VsZW1lbnRSZWYsIGludGwpO1xyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=