ngx-mask 20.0.3 → 21.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, EventEmitter, inject, Injectable, ElementRef, Renderer2, makeEnvironmentProviders, input, output, signal, HostListener, Directive, Pipe } from '@angular/core';
2
+ import { InjectionToken, EventEmitter, inject, Injectable, ElementRef, Renderer2, makeEnvironmentProviders, input, model, output, signal, effect, untracked, HostListener, Directive, Pipe } from '@angular/core';
3
3
  import { DOCUMENT } from '@angular/common';
4
4
  import { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';
5
5
 
@@ -906,10 +906,10 @@ class NgxMaskApplierService {
906
906
  nonZeroIndex,
907
907
  };
908
908
  }
909
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxMaskApplierService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
910
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxMaskApplierService });
909
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: NgxMaskApplierService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
910
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: NgxMaskApplierService });
911
911
  }
912
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxMaskApplierService, decorators: [{
912
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: NgxMaskApplierService, decorators: [{
913
913
  type: Injectable
914
914
  }] });
915
915
 
@@ -1117,8 +1117,17 @@ class NgxMaskService extends NgxMaskApplierService {
1117
1117
  (this.previousValue === this.currentValue && justPasted);
1118
1118
  }
1119
1119
  // Propagate the input value back to the Angular model
1120
- // eslint-disable-next-line no-unused-expressions,@typescript-eslint/no-unused-expressions
1121
- this._emitValue ? this.formControlResult(result) : '';
1120
+ // Only emit if:
1121
+ // 1. _emitValue is true (value changed), AND
1122
+ // 2. Either mask didn't change, OR triggerOnMaskChange is true
1123
+ const shouldEmit = this._emitValue && (!this.maskChanged || this.triggerOnMaskChange);
1124
+ if (shouldEmit) {
1125
+ this.formControlResult(result);
1126
+ }
1127
+ // Reset maskChanged flag even if we didn't emit
1128
+ if (this.maskChanged && !this.triggerOnMaskChange) {
1129
+ this.maskChanged = false;
1130
+ }
1122
1131
  // Handle hidden input and showMaskTyped
1123
1132
  if (!this.showMaskTyped || (this.showMaskTyped && this.hiddenInput)) {
1124
1133
  if (this.hiddenInput) {
@@ -1275,8 +1284,12 @@ class NgxMaskService extends NgxMaskApplierService {
1275
1284
  if (!this._renderer || !this._elementRef) {
1276
1285
  return;
1277
1286
  }
1278
- //[TODO]: andriikamaldinov1 find better solution
1279
- Promise.resolve().then(() => this._renderer?.setProperty(this._elementRef?.nativeElement, name, value));
1287
+ // Use queueMicrotask to defer DOM updates to next microtask.
1288
+ // This prevents ExpressionChangedAfterItHasBeenCheckedError
1289
+ // and ensures proper timing with Angular's change detection.
1290
+ queueMicrotask(() => {
1291
+ this._renderer?.setProperty(this._elementRef?.nativeElement, name, value);
1292
+ });
1280
1293
  }
1281
1294
  checkDropSpecialCharAmount(mask) {
1282
1295
  const chars = mask
@@ -1459,7 +1472,15 @@ class NgxMaskService extends NgxMaskApplierService {
1459
1472
  return this._removeMask(result, specialCharacters);
1460
1473
  }
1461
1474
  _regExpForRemove(specialCharactersForRemove) {
1462
- return new RegExp(specialCharactersForRemove.map((item) => `\\${item}`).join('|'), 'gi');
1475
+ return new RegExp(specialCharactersForRemove
1476
+ .map((item) => {
1477
+ // Only escape characters that have special meaning in regex
1478
+ if (/[.*+?^${}()|[\]\\/-]/.test(item)) {
1479
+ return `\\${item}`;
1480
+ }
1481
+ return item;
1482
+ })
1483
+ .join('|'), 'gi');
1463
1484
  }
1464
1485
  _replaceDecimalMarkerToDot(value) {
1465
1486
  const markers = Array.isArray(this.decimalMarker)
@@ -1558,10 +1579,10 @@ class NgxMaskService extends NgxMaskApplierService {
1558
1579
  currentLocaleDecimalMarker() {
1559
1580
  return (1.1).toLocaleString().substring(1, 2);
1560
1581
  }
1561
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxMaskService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
1562
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxMaskService });
1582
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: NgxMaskService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
1583
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: NgxMaskService });
1563
1584
  }
1564
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxMaskService, decorators: [{
1585
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: NgxMaskService, decorators: [{
1565
1586
  type: Injectable
1566
1587
  }] });
1567
1588
 
@@ -1597,6 +1618,7 @@ function provideEnvironmentNgxMask(configValue) {
1597
1618
  }
1598
1619
 
1599
1620
  class NgxMaskDirective {
1621
+ // ===== Mask Configuration Inputs =====
1600
1622
  mask = input('', ...(ngDevMode ? [{ debugName: "mask" }] : []));
1601
1623
  specialCharacters = input([], ...(ngDevMode ? [{ debugName: "specialCharacters" }] : []));
1602
1624
  patterns = input({}, ...(ngDevMode ? [{ debugName: "patterns" }] : []));
@@ -1621,6 +1643,16 @@ class NgxMaskDirective {
1621
1643
  outputTransformFn = input(null, ...(ngDevMode ? [{ debugName: "outputTransformFn" }] : []));
1622
1644
  keepCharacterPositions = input(null, ...(ngDevMode ? [{ debugName: "keepCharacterPositions" }] : []));
1623
1645
  instantPrefix = input(null, ...(ngDevMode ? [{ debugName: "instantPrefix" }] : []));
1646
+ value = model('', ...(ngDevMode ? [{ debugName: "value" }] : []));
1647
+ errors = input([], ...(ngDevMode ? [{ debugName: "errors" }] : []));
1648
+ disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
1649
+ touched = model(false, ...(ngDevMode ? [{ debugName: "touched" }] : []));
1650
+ dirty = input(false, ...(ngDevMode ? [{ debugName: "dirty" }] : []));
1651
+ invalid = input(false, ...(ngDevMode ? [{ debugName: "invalid" }] : []));
1652
+ pending = input(false, ...(ngDevMode ? [{ debugName: "pending" }] : []));
1653
+ readonly = input(false, ...(ngDevMode ? [{ debugName: "readonly" }] : []));
1654
+ required = input(false, ...(ngDevMode ? [{ debugName: "required" }] : []));
1655
+ name = input('', ...(ngDevMode ? [{ debugName: "name" }] : []));
1624
1656
  maskFilled = output();
1625
1657
  _maskValue = signal('', ...(ngDevMode ? [{ debugName: "_maskValue" }] : []));
1626
1658
  _inputValue = signal('', ...(ngDevMode ? [{ debugName: "_inputValue" }] : []));
@@ -1629,8 +1661,10 @@ class NgxMaskDirective {
1629
1661
  _maskExpressionArray = signal([], ...(ngDevMode ? [{ debugName: "_maskExpressionArray" }] : []));
1630
1662
  _justPasted = signal(false, ...(ngDevMode ? [{ debugName: "_justPasted" }] : []));
1631
1663
  _isFocused = signal(false, ...(ngDevMode ? [{ debugName: "_isFocused" }] : []));
1632
- /**For IME composition event */
1664
+ /** For IME composition event */
1633
1665
  _isComposing = signal(false, ...(ngDevMode ? [{ debugName: "_isComposing" }] : []));
1666
+ /** Track if we're using Signal Forms mode */
1667
+ _isSignalFormsMode = signal(false, ...(ngDevMode ? [{ debugName: "_isSignalFormsMode" }] : []));
1634
1668
  _maskService = inject(NgxMaskService, { self: true });
1635
1669
  document = inject(DOCUMENT);
1636
1670
  _config = inject(NGX_MASK_CONFIG);
@@ -1638,6 +1672,29 @@ class NgxMaskDirective {
1638
1672
  onChange = (_) => { };
1639
1673
  // eslint-disable-next-line @typescript-eslint/no-empty-function
1640
1674
  onTouch = () => { };
1675
+ constructor() {
1676
+ effect(() => {
1677
+ const signalValue = this.value();
1678
+ if (this._isSignalFormsMode() && signalValue !== untracked(() => this._inputValue())) {
1679
+ untracked(() => {
1680
+ this.writeValue(signalValue);
1681
+ });
1682
+ }
1683
+ });
1684
+ effect(() => {
1685
+ const isDisabled = this.disabled();
1686
+ untracked(() => {
1687
+ this.setDisabledState(isDisabled);
1688
+ });
1689
+ });
1690
+ }
1691
+ ngOnInit() {
1692
+ // Detect if we're being used with Signal Forms
1693
+ // Signal Forms will set the value model from outside
1694
+ if (this.value() !== '') {
1695
+ this._isSignalFormsMode.set(true);
1696
+ }
1697
+ }
1641
1698
  ngOnChanges(changes) {
1642
1699
  const { mask, specialCharacters, patterns, prefix, suffix, thousandSeparator, decimalMarker, dropSpecialCharacters, hiddenInput, showMaskTyped, placeHolderCharacter, shownMaskExpression, clearIfNotMatch, validation, separatorLimit, allowNegativeNumbers, leadZeroDateTime, leadZero, triggerOnMaskChange, apm, inputTransformFn, outputTransformFn, keepCharacterPositions, instantPrefix, } = changes;
1643
1700
  if (mask) {
@@ -2197,14 +2254,15 @@ class NgxMaskDirective {
2197
2254
  el.selectionEnd = this._getActualInputLength();
2198
2255
  }
2199
2256
  }
2200
- onKeyDown(e) {
2257
+ onKeyDown(event) {
2258
+ const e = event;
2201
2259
  if (!this._maskValue()) {
2202
2260
  return;
2203
2261
  }
2204
2262
  if (this._isComposing()) {
2205
2263
  // User finalize their choice from IME composition, so trigger onInput() for the composed text.
2206
2264
  if (e.key === 'Enter') {
2207
- this.onCompositionEnd(e);
2265
+ this.onCompositionEnd(event);
2208
2266
  }
2209
2267
  return;
2210
2268
  }
@@ -2358,10 +2416,34 @@ class NgxMaskDirective {
2358
2416
  }
2359
2417
  }
2360
2418
  registerOnChange(fn) {
2361
- this._maskService.onChange = this.onChange = fn;
2419
+ // Wrap the original onChange to also update Signal Forms value
2420
+ const originalFn = fn;
2421
+ this._maskService.onChange = this.onChange = (value) => {
2422
+ originalFn(value);
2423
+ // Update Signal Forms value model if in use
2424
+ if (this._isSignalFormsMode()) {
2425
+ const stringValue = value === null || typeof value === 'undefined' ? '' : String(value);
2426
+ if (this.value() !== stringValue) {
2427
+ this.value.set(stringValue);
2428
+ }
2429
+ }
2430
+ };
2362
2431
  }
2363
2432
  registerOnTouched(fn) {
2364
- this.onTouch = fn;
2433
+ this.onTouch = () => {
2434
+ fn();
2435
+ // Update Signal Forms touched state
2436
+ if (this._isSignalFormsMode() && !this.touched()) {
2437
+ this.touched.set(true);
2438
+ }
2439
+ };
2440
+ }
2441
+ /**
2442
+ * Focus the input element.
2443
+ * Required by FormValueControl interface for Signal Forms.
2444
+ */
2445
+ focus() {
2446
+ this._maskService._elementRef?.nativeElement?.focus();
2365
2447
  }
2366
2448
  _getActiveElement(document = this.document) {
2367
2449
  const shadowRootEl = document?.activeElement?.shadowRoot;
@@ -2473,8 +2555,8 @@ class NgxMaskDirective {
2473
2555
  return uniqueCharacters.size === 1;
2474
2556
  });
2475
2557
  }
2476
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxMaskDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2477
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.2", type: NgxMaskDirective, isStandalone: true, selector: "input[mask], textarea[mask]", inputs: { mask: { classPropertyName: "mask", publicName: "mask", isSignal: true, isRequired: false, transformFunction: null }, specialCharacters: { classPropertyName: "specialCharacters", publicName: "specialCharacters", isSignal: true, isRequired: false, transformFunction: null }, patterns: { classPropertyName: "patterns", publicName: "patterns", isSignal: true, isRequired: false, transformFunction: null }, prefix: { classPropertyName: "prefix", publicName: "prefix", isSignal: true, isRequired: false, transformFunction: null }, suffix: { classPropertyName: "suffix", publicName: "suffix", isSignal: true, isRequired: false, transformFunction: null }, thousandSeparator: { classPropertyName: "thousandSeparator", publicName: "thousandSeparator", isSignal: true, isRequired: false, transformFunction: null }, decimalMarker: { classPropertyName: "decimalMarker", publicName: "decimalMarker", isSignal: true, isRequired: false, transformFunction: null }, dropSpecialCharacters: { classPropertyName: "dropSpecialCharacters", publicName: "dropSpecialCharacters", isSignal: true, isRequired: false, transformFunction: null }, hiddenInput: { classPropertyName: "hiddenInput", publicName: "hiddenInput", isSignal: true, isRequired: false, transformFunction: null }, showMaskTyped: { classPropertyName: "showMaskTyped", publicName: "showMaskTyped", isSignal: true, isRequired: false, transformFunction: null }, placeHolderCharacter: { classPropertyName: "placeHolderCharacter", publicName: "placeHolderCharacter", isSignal: true, isRequired: false, transformFunction: null }, shownMaskExpression: { classPropertyName: "shownMaskExpression", publicName: "shownMaskExpression", isSignal: true, isRequired: false, transformFunction: null }, clearIfNotMatch: { classPropertyName: "clearIfNotMatch", publicName: "clearIfNotMatch", isSignal: true, isRequired: false, transformFunction: null }, validation: { classPropertyName: "validation", publicName: "validation", isSignal: true, isRequired: false, transformFunction: null }, separatorLimit: { classPropertyName: "separatorLimit", publicName: "separatorLimit", isSignal: true, isRequired: false, transformFunction: null }, allowNegativeNumbers: { classPropertyName: "allowNegativeNumbers", publicName: "allowNegativeNumbers", isSignal: true, isRequired: false, transformFunction: null }, leadZeroDateTime: { classPropertyName: "leadZeroDateTime", publicName: "leadZeroDateTime", isSignal: true, isRequired: false, transformFunction: null }, leadZero: { classPropertyName: "leadZero", publicName: "leadZero", isSignal: true, isRequired: false, transformFunction: null }, triggerOnMaskChange: { classPropertyName: "triggerOnMaskChange", publicName: "triggerOnMaskChange", isSignal: true, isRequired: false, transformFunction: null }, apm: { classPropertyName: "apm", publicName: "apm", isSignal: true, isRequired: false, transformFunction: null }, inputTransformFn: { classPropertyName: "inputTransformFn", publicName: "inputTransformFn", isSignal: true, isRequired: false, transformFunction: null }, outputTransformFn: { classPropertyName: "outputTransformFn", publicName: "outputTransformFn", isSignal: true, isRequired: false, transformFunction: null }, keepCharacterPositions: { classPropertyName: "keepCharacterPositions", publicName: "keepCharacterPositions", isSignal: true, isRequired: false, transformFunction: null }, instantPrefix: { classPropertyName: "instantPrefix", publicName: "instantPrefix", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { maskFilled: "maskFilled" }, host: { listeners: { "paste": "onPaste()", "focus": "onFocus($event)", "ngModelChange": "onModelChange($event)", "input": "onInput($event)", "compositionstart": "onCompositionStart($event)", "compositionend": "onCompositionEnd($event)", "blur": "onBlur($event)", "click": "onClick($event)", "keydown": "onKeyDown($event)" } }, providers: [
2558
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: NgxMaskDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2559
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.1", type: NgxMaskDirective, isStandalone: true, selector: "input[mask], textarea[mask]", inputs: { mask: { classPropertyName: "mask", publicName: "mask", isSignal: true, isRequired: false, transformFunction: null }, specialCharacters: { classPropertyName: "specialCharacters", publicName: "specialCharacters", isSignal: true, isRequired: false, transformFunction: null }, patterns: { classPropertyName: "patterns", publicName: "patterns", isSignal: true, isRequired: false, transformFunction: null }, prefix: { classPropertyName: "prefix", publicName: "prefix", isSignal: true, isRequired: false, transformFunction: null }, suffix: { classPropertyName: "suffix", publicName: "suffix", isSignal: true, isRequired: false, transformFunction: null }, thousandSeparator: { classPropertyName: "thousandSeparator", publicName: "thousandSeparator", isSignal: true, isRequired: false, transformFunction: null }, decimalMarker: { classPropertyName: "decimalMarker", publicName: "decimalMarker", isSignal: true, isRequired: false, transformFunction: null }, dropSpecialCharacters: { classPropertyName: "dropSpecialCharacters", publicName: "dropSpecialCharacters", isSignal: true, isRequired: false, transformFunction: null }, hiddenInput: { classPropertyName: "hiddenInput", publicName: "hiddenInput", isSignal: true, isRequired: false, transformFunction: null }, showMaskTyped: { classPropertyName: "showMaskTyped", publicName: "showMaskTyped", isSignal: true, isRequired: false, transformFunction: null }, placeHolderCharacter: { classPropertyName: "placeHolderCharacter", publicName: "placeHolderCharacter", isSignal: true, isRequired: false, transformFunction: null }, shownMaskExpression: { classPropertyName: "shownMaskExpression", publicName: "shownMaskExpression", isSignal: true, isRequired: false, transformFunction: null }, clearIfNotMatch: { classPropertyName: "clearIfNotMatch", publicName: "clearIfNotMatch", isSignal: true, isRequired: false, transformFunction: null }, validation: { classPropertyName: "validation", publicName: "validation", isSignal: true, isRequired: false, transformFunction: null }, separatorLimit: { classPropertyName: "separatorLimit", publicName: "separatorLimit", isSignal: true, isRequired: false, transformFunction: null }, allowNegativeNumbers: { classPropertyName: "allowNegativeNumbers", publicName: "allowNegativeNumbers", isSignal: true, isRequired: false, transformFunction: null }, leadZeroDateTime: { classPropertyName: "leadZeroDateTime", publicName: "leadZeroDateTime", isSignal: true, isRequired: false, transformFunction: null }, leadZero: { classPropertyName: "leadZero", publicName: "leadZero", isSignal: true, isRequired: false, transformFunction: null }, triggerOnMaskChange: { classPropertyName: "triggerOnMaskChange", publicName: "triggerOnMaskChange", isSignal: true, isRequired: false, transformFunction: null }, apm: { classPropertyName: "apm", publicName: "apm", isSignal: true, isRequired: false, transformFunction: null }, inputTransformFn: { classPropertyName: "inputTransformFn", publicName: "inputTransformFn", isSignal: true, isRequired: false, transformFunction: null }, outputTransformFn: { classPropertyName: "outputTransformFn", publicName: "outputTransformFn", isSignal: true, isRequired: false, transformFunction: null }, keepCharacterPositions: { classPropertyName: "keepCharacterPositions", publicName: "keepCharacterPositions", isSignal: true, isRequired: false, transformFunction: null }, instantPrefix: { classPropertyName: "instantPrefix", publicName: "instantPrefix", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, errors: { classPropertyName: "errors", publicName: "errors", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, dirty: { classPropertyName: "dirty", publicName: "dirty", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, pending: { classPropertyName: "pending", publicName: "pending", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", touched: "touchedChange", maskFilled: "maskFilled" }, host: { listeners: { "paste": "onPaste()", "focus": "onFocus()", "ngModelChange": "onModelChange($event)", "input": "onInput($event)", "compositionstart": "onCompositionStart()", "compositionend": "onCompositionEnd($event)", "blur": "onBlur($event)", "click": "onClick($event)", "keydown": "onKeyDown($event)" } }, providers: [
2478
2560
  {
2479
2561
  provide: NG_VALUE_ACCESSOR,
2480
2562
  useExisting: NgxMaskDirective,
@@ -2488,7 +2570,7 @@ class NgxMaskDirective {
2488
2570
  NgxMaskService,
2489
2571
  ], exportAs: ["mask", "ngxMask"], usesOnChanges: true, ngImport: i0 });
2490
2572
  }
2491
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxMaskDirective, decorators: [{
2573
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: NgxMaskDirective, decorators: [{
2492
2574
  type: Directive,
2493
2575
  args: [{
2494
2576
  selector: 'input[mask], textarea[mask]',
@@ -2508,12 +2590,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
2508
2590
  ],
2509
2591
  exportAs: 'mask,ngxMask',
2510
2592
  }]
2511
- }], propDecorators: { onPaste: [{
2593
+ }], ctorParameters: () => [], propDecorators: { mask: [{ type: i0.Input, args: [{ isSignal: true, alias: "mask", required: false }] }], specialCharacters: [{ type: i0.Input, args: [{ isSignal: true, alias: "specialCharacters", required: false }] }], patterns: [{ type: i0.Input, args: [{ isSignal: true, alias: "patterns", required: false }] }], prefix: [{ type: i0.Input, args: [{ isSignal: true, alias: "prefix", required: false }] }], suffix: [{ type: i0.Input, args: [{ isSignal: true, alias: "suffix", required: false }] }], thousandSeparator: [{ type: i0.Input, args: [{ isSignal: true, alias: "thousandSeparator", required: false }] }], decimalMarker: [{ type: i0.Input, args: [{ isSignal: true, alias: "decimalMarker", required: false }] }], dropSpecialCharacters: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropSpecialCharacters", required: false }] }], hiddenInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "hiddenInput", required: false }] }], showMaskTyped: [{ type: i0.Input, args: [{ isSignal: true, alias: "showMaskTyped", required: false }] }], placeHolderCharacter: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeHolderCharacter", required: false }] }], shownMaskExpression: [{ type: i0.Input, args: [{ isSignal: true, alias: "shownMaskExpression", required: false }] }], clearIfNotMatch: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearIfNotMatch", required: false }] }], validation: [{ type: i0.Input, args: [{ isSignal: true, alias: "validation", required: false }] }], separatorLimit: [{ type: i0.Input, args: [{ isSignal: true, alias: "separatorLimit", required: false }] }], allowNegativeNumbers: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowNegativeNumbers", required: false }] }], leadZeroDateTime: [{ type: i0.Input, args: [{ isSignal: true, alias: "leadZeroDateTime", required: false }] }], leadZero: [{ type: i0.Input, args: [{ isSignal: true, alias: "leadZero", required: false }] }], triggerOnMaskChange: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggerOnMaskChange", required: false }] }], apm: [{ type: i0.Input, args: [{ isSignal: true, alias: "apm", required: false }] }], inputTransformFn: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputTransformFn", required: false }] }], outputTransformFn: [{ type: i0.Input, args: [{ isSignal: true, alias: "outputTransformFn", required: false }] }], keepCharacterPositions: [{ type: i0.Input, args: [{ isSignal: true, alias: "keepCharacterPositions", required: false }] }], instantPrefix: [{ type: i0.Input, args: [{ isSignal: true, alias: "instantPrefix", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], errors: [{ type: i0.Input, args: [{ isSignal: true, alias: "errors", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }, { type: i0.Output, args: ["touchedChange"] }], dirty: [{ type: i0.Input, args: [{ isSignal: true, alias: "dirty", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], pending: [{ type: i0.Input, args: [{ isSignal: true, alias: "pending", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], maskFilled: [{ type: i0.Output, args: ["maskFilled"] }], onPaste: [{
2512
2594
  type: HostListener,
2513
2595
  args: ['paste']
2514
2596
  }], onFocus: [{
2515
2597
  type: HostListener,
2516
- args: ['focus', ['$event']]
2598
+ args: ['focus']
2517
2599
  }], onModelChange: [{
2518
2600
  type: HostListener,
2519
2601
  args: ['ngModelChange', ['$event']]
@@ -2522,7 +2604,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
2522
2604
  args: ['input', ['$event']]
2523
2605
  }], onCompositionStart: [{
2524
2606
  type: HostListener,
2525
- args: ['compositionstart', ['$event']]
2607
+ args: ['compositionstart']
2526
2608
  }], onCompositionEnd: [{
2527
2609
  type: HostListener,
2528
2610
  args: ['compositionend', ['$event']]
@@ -2621,10 +2703,10 @@ class NgxMaskPipe {
2621
2703
  });
2622
2704
  }
2623
2705
  }
2624
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxMaskPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2625
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.2", ngImport: i0, type: NgxMaskPipe, isStandalone: true, name: "mask" });
2706
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: NgxMaskPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2707
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.1.1", ngImport: i0, type: NgxMaskPipe, isStandalone: true, name: "mask" });
2626
2708
  }
2627
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: NgxMaskPipe, decorators: [{
2709
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: NgxMaskPipe, decorators: [{
2628
2710
  type: Pipe,
2629
2711
  args: [{
2630
2712
  name: 'mask',