ngx-mask 19.0.1 → 19.0.3

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.
package/README.md CHANGED
@@ -189,6 +189,14 @@ const maskConfigFunction: () => Partial<NgxMaskConfig> = () => {
189
189
 
190
190
  Then, just define masks in inputs.
191
191
 
192
+ ## Actively supported versions
193
+
194
+ ngx-mask follows the official Angular support policy, supporting the Active and LTS (Long-Term Support) versions of Angular. As of the latest release, Angular v17 and newer are supported.
195
+
196
+ Projects using Angular versions outside the supported range (e.g., older than v17) should use the last compatible version of ngx-mask. However, these versions will no longer receive updates, bug fixes, or new features.
197
+
198
+ For detailed information about Angular's versioning and support schedule, visit the official [Angular releases page](https://angular.dev/reference/releases#actively-supported-versions).
199
+
192
200
  ## Usage
193
201
 
194
202
  Text [documentation](https://github.com/JsDaddy/ngx-mask/blob/develop/USAGE.md)
@@ -60,7 +60,7 @@ const initialConfig = {
60
60
  showMaskTyped: false,
61
61
  placeHolderCharacter: '_',
62
62
  dropSpecialCharacters: true,
63
- hiddenInput: null,
63
+ hiddenInput: false,
64
64
  shownMaskExpression: '',
65
65
  separatorLimit: '',
66
66
  allowNegativeNumbers: false,
@@ -282,7 +282,9 @@ class NgxMaskApplierService {
282
282
  : processedValue;
283
283
  }
284
284
  else {
285
- if (processedValue[0] === decimalMarker && processedValue.length > 1) {
285
+ if (processedValue[0] === decimalMarker &&
286
+ processedValue.length > 1 &&
287
+ !backspaced) {
286
288
  processedValue =
287
289
  MaskExpression.NUMBER_ZERO +
288
290
  processedValue.slice(0, processedValue.length + 1);
@@ -323,11 +325,18 @@ class NgxMaskApplierService {
323
325
  const positionOfZeroOrDecimalMarker = processedValue[processedPosition] === MaskExpression.NUMBER_ZERO ||
324
326
  processedValue[processedPosition] === decimalMarker;
325
327
  const zeroIndexNumberZero = processedValue[0] === MaskExpression.NUMBER_ZERO;
328
+ const firstIndexNumberZero = processedValue[1] === MaskExpression.NUMBER_ZERO;
326
329
  const zeroIndexMinus = processedValue[0] === MaskExpression.MINUS;
327
330
  const zeroIndexThousand = processedValue[0] === this.thousandSeparator;
328
331
  const firstIndexDecimalMarker = processedValue[1] === decimalMarker;
329
- const firstIndexNumberZero = processedValue[1] === MaskExpression.NUMBER_ZERO;
332
+ const zeroIndexDecimalMarker = processedValue[0] === decimalMarker;
330
333
  const secondIndexDecimalMarker = processedValue[2] === decimalMarker;
334
+ if (zeroIndexNumberZero && firstIndexDecimalMarker && processedPosition === 0) {
335
+ return processedValue;
336
+ }
337
+ if (zeroIndexDecimalMarker && processedPosition === 0) {
338
+ processedValue = inputValueAfterZero;
339
+ }
331
340
  if (zeroIndexNumberZero &&
332
341
  firstIndexDecimalMarker &&
333
342
  positionOfZeroOrDecimalMarker &&
@@ -446,7 +455,7 @@ class NgxMaskApplierService {
446
455
  ? processedPosition + 1
447
456
  : processedPosition;
448
457
  cursor += 1;
449
- this._shiftStep(maskExpression, cursor, inputArray.length);
458
+ this._shiftStep(cursor);
450
459
  i--;
451
460
  if (this.leadZeroDateTime) {
452
461
  result += '0';
@@ -482,7 +491,7 @@ class NgxMaskApplierService {
482
491
  ? processedPosition + 1
483
492
  : processedPosition;
484
493
  cursor += 1;
485
- this._shiftStep(maskExpression, cursor, inputArray.length);
494
+ this._shiftStep(cursor);
486
495
  i--;
487
496
  if (this.leadZeroDateTime) {
488
497
  result += '0';
@@ -521,7 +530,7 @@ class NgxMaskApplierService {
521
530
  ? processedPosition + 1
522
531
  : processedPosition;
523
532
  cursor += 1;
524
- this._shiftStep(maskExpression, cursor, inputArray.length);
533
+ this._shiftStep(cursor);
525
534
  i--;
526
535
  if (this.leadZeroDateTime) {
527
536
  result += '0';
@@ -571,7 +580,7 @@ class NgxMaskApplierService {
571
580
  ? processedPosition + 1
572
581
  : processedPosition;
573
582
  cursor += 1;
574
- this._shiftStep(maskExpression, cursor, inputArray.length);
583
+ this._shiftStep(cursor);
575
584
  i--;
576
585
  if (this.leadZeroDateTime) {
577
586
  result += '0';
@@ -590,12 +599,12 @@ class NgxMaskApplierService {
590
599
  else if (this.specialCharacters.indexOf(maskExpression[cursor] ?? MaskExpression.EMPTY_STRING) !== -1) {
591
600
  result += maskExpression[cursor];
592
601
  cursor++;
593
- this._shiftStep(maskExpression, cursor, inputArray.length);
602
+ this._shiftStep(cursor);
594
603
  i--;
595
604
  }
596
605
  else if (maskExpression[cursor] === MaskExpression.NUMBER_NINE &&
597
606
  this.showMaskTyped) {
598
- this._shiftStep(maskExpression, cursor, inputArray.length);
607
+ this._shiftStep(cursor);
599
608
  }
600
609
  else if (this.patterns[maskExpression[cursor] ?? MaskExpression.EMPTY_STRING] &&
601
610
  this.patterns[maskExpression[cursor] ?? MaskExpression.EMPTY_STRING]?.optional) {
@@ -637,7 +646,8 @@ class NgxMaskApplierService {
637
646
  }
638
647
  }
639
648
  }
640
- if (result.length + 1 === maskExpression.length &&
649
+ if (result[processedPosition - 1] &&
650
+ result.length + 1 === maskExpression.length &&
641
651
  this.specialCharacters.indexOf(maskExpression[maskExpression.length - 1] ?? MaskExpression.EMPTY_STRING) !== -1) {
642
652
  result += maskExpression[maskExpression.length - 1];
643
653
  }
@@ -803,11 +813,8 @@ class NgxMaskApplierService {
803
813
  }
804
814
  return char;
805
815
  }
806
- _shiftStep(maskExpression, cursor, inputLength) {
807
- const shiftStep = /[*?]/g.test(maskExpression.slice(0, cursor))
808
- ? inputLength
809
- : cursor;
810
- this._shift.add(shiftStep + this.prefix.length || 0);
816
+ _shiftStep(cursor) {
817
+ this._shift.add(cursor + this.prefix.length || 0);
811
818
  }
812
819
  _compareOrIncludes(value, comparedValue, excludedValue) {
813
820
  return Array.isArray(comparedValue)
@@ -856,10 +863,10 @@ class NgxMaskApplierService {
856
863
  }
857
864
  return -1;
858
865
  }
859
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgxMaskApplierService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
860
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgxMaskApplierService });
866
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgxMaskApplierService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
867
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgxMaskApplierService });
861
868
  }
862
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgxMaskApplierService, decorators: [{
869
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgxMaskApplierService, decorators: [{
863
870
  type: Injectable
864
871
  }] });
865
872
 
@@ -904,36 +911,67 @@ class NgxMaskService extends NgxMaskApplierService {
904
911
  : MaskExpression.EMPTY_STRING;
905
912
  let newInputValue = '';
906
913
  let newPosition = position;
907
- if (this.hiddenInput !== null && !this.writingValue) {
914
+ if ((this.hiddenInput ||
915
+ (inputValue && inputValue.indexOf(MaskExpression.SYMBOL_STAR) >= 0)) &&
916
+ !this.writingValue) {
908
917
  let actualResult = inputValue && inputValue.length === 1
909
918
  ? inputValue.split(MaskExpression.EMPTY_STRING)
910
919
  : this.actualValue.split(MaskExpression.EMPTY_STRING);
920
+ if (backspaced) {
921
+ actualResult = actualResult
922
+ .slice(0, position)
923
+ .concat(actualResult.slice(position + 1));
924
+ }
925
+ if (this.showMaskTyped) {
926
+ inputValue = this.removeMask(inputValue);
927
+ actualResult = this.removeMask(actualResult.join('')).split(MaskExpression.EMPTY_STRING);
928
+ }
911
929
  if (typeof this.selStart === 'object' && typeof this.selEnd === 'object') {
912
930
  this.selStart = Number(this.selStart);
913
931
  this.selEnd = Number(this.selEnd);
914
932
  }
915
933
  else {
916
- inputValue !== MaskExpression.EMPTY_STRING && actualResult.length
917
- ? typeof this.selStart === 'number' && typeof this.selEnd === 'number'
918
- ? inputValue.length > actualResult.length
919
- ? actualResult.splice(this.selStart, 0, getSymbol)
920
- : inputValue.length < actualResult.length
921
- ? actualResult.length - inputValue.length === 1
922
- ? backspaced
923
- ? actualResult.splice(this.selStart - 1, 1)
924
- : actualResult.splice(inputValue.length - 1, 1)
925
- : actualResult.splice(this.selStart, this.selEnd - this.selStart)
926
- : null
927
- : null
928
- : (actualResult = []);
934
+ if (inputValue !== MaskExpression.EMPTY_STRING && actualResult.length) {
935
+ if (typeof this.selStart === 'number' && typeof this.selEnd === 'number') {
936
+ if (inputValue.length > actualResult.length) {
937
+ actualResult.splice(this.selStart, 0, getSymbol);
938
+ }
939
+ else if (inputValue.length < actualResult.length) {
940
+ if (actualResult.length - inputValue.length === 1) {
941
+ if (backspaced) {
942
+ actualResult.splice(this.selStart - 1, 1);
943
+ }
944
+ else {
945
+ actualResult.splice(inputValue.length - 1, 1);
946
+ }
947
+ }
948
+ else {
949
+ actualResult.splice(this.selStart, this.selEnd - this.selStart);
950
+ }
951
+ }
952
+ }
953
+ }
954
+ else {
955
+ actualResult = [];
956
+ }
929
957
  }
930
958
  if (this.showMaskTyped && !this.hiddenInput) {
931
959
  newInputValue = this.removeMask(inputValue);
932
960
  }
933
- newInputValue =
934
- this.actualValue.length && actualResult.length <= inputValue.length
935
- ? this.shiftTypedSymbols(actualResult.join(MaskExpression.EMPTY_STRING))
936
- : inputValue;
961
+ if (this.actualValue.length) {
962
+ if (actualResult.length < inputValue.length) {
963
+ newInputValue = this.shiftTypedSymbols(actualResult.join(MaskExpression.EMPTY_STRING));
964
+ }
965
+ else if (actualResult.length === inputValue.length) {
966
+ newInputValue = actualResult.join(MaskExpression.EMPTY_STRING);
967
+ }
968
+ else {
969
+ newInputValue = inputValue;
970
+ }
971
+ }
972
+ else {
973
+ newInputValue = inputValue;
974
+ }
937
975
  }
938
976
  if (justPasted && (this.hiddenInput || !this.hiddenInput)) {
939
977
  newInputValue = inputValue;
@@ -956,7 +994,7 @@ class NgxMaskService extends NgxMaskApplierService {
956
994
  if (this.showMaskTyped &&
957
995
  this.placeHolderCharacter.length === 1 &&
958
996
  !this.leadZeroDateTime) {
959
- newInputValue = this.removeMask(inputValue);
997
+ newInputValue = this.removeMask(newInputValue);
960
998
  }
961
999
  if (this.maskChanged) {
962
1000
  newInputValue = inputValue;
@@ -1004,9 +1042,6 @@ class NgxMaskService extends NgxMaskApplierService {
1004
1042
  : '';
1005
1043
  if (!this.showMaskTyped || (this.showMaskTyped && this.hiddenInput)) {
1006
1044
  if (this.hiddenInput) {
1007
- if (backspaced) {
1008
- return this.hideInput(result, this.maskExpression);
1009
- }
1010
1045
  return `${this.hideInput(result, this.maskExpression)}${this.maskIsShown.slice(result.length)}`;
1011
1046
  }
1012
1047
  return result;
@@ -1249,7 +1284,7 @@ class NgxMaskService extends NgxMaskApplierService {
1249
1284
  }
1250
1285
  formControlResult(inputValue) {
1251
1286
  if (this.writingValue && !inputValue) {
1252
- this.onChange('');
1287
+ this.onChange(this.outputTransformFn(null));
1253
1288
  return;
1254
1289
  }
1255
1290
  if (this.writingValue || (!this.triggerOnMaskChange && this.maskChanged)) {
@@ -1342,7 +1377,9 @@ class NgxMaskService extends NgxMaskApplierService {
1342
1377
  processedResult = processedResult.replace(MaskExpression.COMMA, MaskExpression.DOT);
1343
1378
  }
1344
1379
  const separatorPrecision = this._retrieveSeparatorPrecision(this.maskExpression);
1345
- const separatorValue = this._replaceDecimalMarkerToDot(this._retrieveSeparatorValue(processedResult));
1380
+ const separatorValue = this.specialCharacters.length === 0
1381
+ ? this._retrieveSeparatorValue(processedResult)
1382
+ : this._replaceDecimalMarkerToDot(this._retrieveSeparatorValue(processedResult));
1346
1383
  if (!this.isNumberValue) {
1347
1384
  return separatorValue;
1348
1385
  }
@@ -1419,10 +1456,10 @@ class NgxMaskService extends NgxMaskApplierService {
1419
1456
  currentLocaleDecimalMarker() {
1420
1457
  return (1.1).toLocaleString().substring(1, 2);
1421
1458
  }
1422
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgxMaskService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
1423
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgxMaskService });
1459
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgxMaskService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
1460
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgxMaskService });
1424
1461
  }
1425
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgxMaskService, decorators: [{
1462
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgxMaskService, decorators: [{
1426
1463
  type: Injectable
1427
1464
  }] });
1428
1465
 
@@ -1484,7 +1521,6 @@ class NgxMaskDirective {
1484
1521
  _position = signal(null);
1485
1522
  _code = signal('');
1486
1523
  _maskExpressionArray = signal([]);
1487
- _allowFewMaskChangeMask = signal(false);
1488
1524
  _justPasted = signal(false);
1489
1525
  _isFocused = signal(false);
1490
1526
  _isComposing = signal(false);
@@ -1548,6 +1584,9 @@ class NgxMaskDirective {
1548
1584
  }
1549
1585
  if (hiddenInput) {
1550
1586
  this._maskService.hiddenInput = hiddenInput.currentValue;
1587
+ if (hiddenInput.previousValue === true && hiddenInput.currentValue === false) {
1588
+ this._inputValue.set(this._maskService.actualValue);
1589
+ }
1551
1590
  }
1552
1591
  if (showMaskTyped) {
1553
1592
  this._maskService.showMaskTyped = showMaskTyped.currentValue;
@@ -1875,10 +1914,11 @@ class NgxMaskDirective {
1875
1914
  if (this._maskExpressionArray().length) {
1876
1915
  if (this._code() === MaskExpression.BACKSPACE) {
1877
1916
  const specialChartMinusOne = this.specialCharacters().includes(this._maskService.actualValue.slice(position - 1, position));
1917
+ const allowFewMaskChangeMask = this._maskService.removeMask(this._inputValue())?.length ===
1918
+ this._maskService.removeMask(this._maskService.maskExpression)?.length;
1878
1919
  const specialChartPlusOne = this.specialCharacters().includes(this._maskService.actualValue.slice(position, position + 1));
1879
- if (this._allowFewMaskChangeMask() && !specialChartPlusOne) {
1920
+ if (allowFewMaskChangeMask && !specialChartPlusOne) {
1880
1921
  position = el.selectionStart + 1;
1881
- this._allowFewMaskChangeMask.set(false);
1882
1922
  }
1883
1923
  else {
1884
1924
  position = specialChartMinusOne ? position - 1 : position;
@@ -2237,9 +2277,6 @@ class NgxMaskDirective {
2237
2277
  return test;
2238
2278
  }
2239
2279
  else {
2240
- if (this._code() === MaskExpression.BACKSPACE) {
2241
- this._allowFewMaskChangeMask.set(true);
2242
- }
2243
2280
  const expression = this._maskExpressionArray()[this._maskExpressionArray().length - 1] ??
2244
2281
  MaskExpression.EMPTY_STRING;
2245
2282
  const maskValue = expression.includes(MaskExpression.CURLY_BRACKETS_LEFT)
@@ -2250,11 +2287,12 @@ class NgxMaskDirective {
2250
2287
  }
2251
2288
  }
2252
2289
  else {
2290
+ const cleanMask = this._maskService.removeMask(mask);
2253
2291
  const check = this._maskService
2254
2292
  .removeMask(this._inputValue())
2255
2293
  ?.split(MaskExpression.EMPTY_STRING)
2256
2294
  .every((character, index) => {
2257
- const indexMask = mask.charAt(index);
2295
+ const indexMask = cleanMask.charAt(index);
2258
2296
  return this._maskService._checkSymbolMask(character, indexMask);
2259
2297
  });
2260
2298
  if (check || this._justPasted()) {
@@ -2277,8 +2315,8 @@ class NgxMaskDirective {
2277
2315
  return uniqueCharacters.size === 1;
2278
2316
  });
2279
2317
  }
2280
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgxMaskDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2281
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", 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 } }, 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: [
2318
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgxMaskDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2319
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.3", 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 } }, 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: [
2282
2320
  {
2283
2321
  provide: NG_VALUE_ACCESSOR,
2284
2322
  useExisting: NgxMaskDirective,
@@ -2292,7 +2330,7 @@ class NgxMaskDirective {
2292
2330
  NgxMaskService,
2293
2331
  ], exportAs: ["mask", "ngxMask"], usesOnChanges: true, ngImport: i0 });
2294
2332
  }
2295
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgxMaskDirective, decorators: [{
2333
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgxMaskDirective, decorators: [{
2296
2334
  type: Directive,
2297
2335
  args: [{
2298
2336
  selector: 'input[mask], textarea[mask]',
@@ -2425,10 +2463,10 @@ class NgxMaskPipe {
2425
2463
  });
2426
2464
  }
2427
2465
  }
2428
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgxMaskPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2429
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.0.0", ngImport: i0, type: NgxMaskPipe, isStandalone: true, name: "mask" });
2466
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgxMaskPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2467
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.0.3", ngImport: i0, type: NgxMaskPipe, isStandalone: true, name: "mask" });
2430
2468
  }
2431
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgxMaskPipe, decorators: [{
2469
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgxMaskPipe, decorators: [{
2432
2470
  type: Pipe,
2433
2471
  args: [{
2434
2472
  name: 'mask',