@progress/kendo-angular-inputs 18.0.1-develop.3 → 18.1.0-develop.10

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.
@@ -108,6 +108,10 @@ const getStylingClasses = (componentType, stylingOption, previousValue, newValue
108
108
  * Used to differentiate between the Radio and CheckBox components in their base class.
109
109
  */
110
110
  const COMPONENT_TYPE = new InjectionToken('TYPE_TOKEN');
111
+ /**
112
+ * @hidden
113
+ */
114
+ const replaceMessagePlaceholder = (message, name, value) => message.replace(new RegExp(`{\\s*${name}\\s*}`, 'g'), value);
111
115
 
112
116
  /**
113
117
  * @hidden
@@ -547,8 +551,8 @@ const packageMetadata = {
547
551
  productName: 'Kendo UI for Angular',
548
552
  productCode: 'KENDOUIANGULAR',
549
553
  productCodes: ['KENDOUIANGULAR'],
550
- publishDate: 1738076514,
551
- version: '18.0.1-develop.3',
554
+ publishDate: 1738357163,
555
+ version: '18.1.0-develop.10',
552
556
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
553
557
  };
554
558
 
@@ -2468,7 +2472,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2468
2472
  }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });
2469
2473
 
2470
2474
  const FOCUSED$5 = 'k-focus';
2471
- const DEFAULT_SIZE$9 = 'medium';
2475
+ const DEFAULT_SIZE$a = 'medium';
2472
2476
  const DEFAULT_THUMB_ROUNDED = 'full';
2473
2477
  const DEFAULT_TRACK_ROUNDED = 'full';
2474
2478
  /**
@@ -2534,7 +2538,7 @@ class SwitchComponent {
2534
2538
  * * `none`
2535
2539
  */
2536
2540
  set size(size) {
2537
- const newSize = size ? size : DEFAULT_SIZE$9;
2541
+ const newSize = size ? size : DEFAULT_SIZE$a;
2538
2542
  this.handleClasses(newSize, 'size');
2539
2543
  this._size = newSize;
2540
2544
  }
@@ -3811,9 +3815,9 @@ const PARSABLE_DEFAULTS = {
3811
3815
  step: 1
3812
3816
  };
3813
3817
  const FOCUSED$4 = 'k-focus';
3814
- const DEFAULT_SIZE$8 = 'medium';
3815
- const DEFAULT_ROUNDED$7 = 'medium';
3816
- const DEFAULT_FILL_MODE$5 = 'solid';
3818
+ const DEFAULT_SIZE$9 = 'medium';
3819
+ const DEFAULT_ROUNDED$8 = 'medium';
3820
+ const DEFAULT_FILL_MODE$6 = 'solid';
3817
3821
  /**
3818
3822
  * Represents the [Kendo UI NumericTextBox component for Angular]({% slug overview_numerictextbox %}).
3819
3823
  */
@@ -3940,7 +3944,7 @@ class NumericTextBoxComponent {
3940
3944
  * * `none`
3941
3945
  */
3942
3946
  set size(size) {
3943
- const newSize = size ? size : DEFAULT_SIZE$8;
3947
+ const newSize = size ? size : DEFAULT_SIZE$9;
3944
3948
  this.handleClasses(newSize, 'size');
3945
3949
  this._size = newSize;
3946
3950
  }
@@ -3957,7 +3961,7 @@ class NumericTextBoxComponent {
3957
3961
  * * `none`
3958
3962
  */
3959
3963
  set rounded(rounded) {
3960
- const newRounded = rounded ? rounded : DEFAULT_ROUNDED$7;
3964
+ const newRounded = rounded ? rounded : DEFAULT_ROUNDED$8;
3961
3965
  this.handleClasses(newRounded, 'rounded');
3962
3966
  this._rounded = newRounded;
3963
3967
  }
@@ -3974,7 +3978,7 @@ class NumericTextBoxComponent {
3974
3978
  * * `none`
3975
3979
  */
3976
3980
  set fillMode(fillMode) {
3977
- const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$5;
3981
+ const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$6;
3978
3982
  this.handleClasses(newFillMode, 'fillMode');
3979
3983
  this._fillMode = newFillMode;
3980
3984
  }
@@ -5546,9 +5550,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
5546
5550
 
5547
5551
  const resolvedPromise = Promise.resolve(null);
5548
5552
  const FOCUSED$3 = 'k-focus';
5549
- const DEFAULT_SIZE$7 = 'medium';
5550
- const DEFAULT_ROUNDED$6 = 'medium';
5551
- const DEFAULT_FILL_MODE$4 = 'solid';
5553
+ const DEFAULT_SIZE$8 = 'medium';
5554
+ const DEFAULT_ROUNDED$7 = 'medium';
5555
+ const DEFAULT_FILL_MODE$5 = 'solid';
5552
5556
  /**
5553
5557
  * Represents the [Kendo UI MaskedTextBox component for Angular]({% slug overview_maskedtextbox %}).
5554
5558
  *
@@ -5606,7 +5610,7 @@ class MaskedTextBoxComponent {
5606
5610
  * * `none`
5607
5611
  */
5608
5612
  set size(size) {
5609
- const newSize = size ? size : DEFAULT_SIZE$7;
5613
+ const newSize = size ? size : DEFAULT_SIZE$8;
5610
5614
  this.handleClasses(newSize, 'size');
5611
5615
  this._size = newSize;
5612
5616
  }
@@ -5623,7 +5627,7 @@ class MaskedTextBoxComponent {
5623
5627
  * * `none`
5624
5628
  */
5625
5629
  set rounded(rounded) {
5626
- const newRounded = rounded ? rounded : DEFAULT_ROUNDED$6;
5630
+ const newRounded = rounded ? rounded : DEFAULT_ROUNDED$7;
5627
5631
  this.handleClasses(newRounded, 'rounded');
5628
5632
  this._rounded = newRounded;
5629
5633
  }
@@ -5640,7 +5644,7 @@ class MaskedTextBoxComponent {
5640
5644
  * * `none`
5641
5645
  */
5642
5646
  set fillMode(fillMode) {
5643
- const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$4;
5647
+ const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$5;
5644
5648
  this.handleClasses(newFillMode, 'fillMode');
5645
5649
  this._fillMode = newFillMode;
5646
5650
  }
@@ -6429,7 +6433,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
6429
6433
  }] } });
6430
6434
 
6431
6435
  const FOCUSED$2 = 'k-focus';
6432
- const DEFAULT_SIZE$6 = 'medium';
6436
+ const DEFAULT_SIZE$7 = 'medium';
6433
6437
  /**
6434
6438
  * @hidden
6435
6439
  */
@@ -6489,7 +6493,7 @@ class RadioCheckBoxBase {
6489
6493
  * * `none`
6490
6494
  */
6491
6495
  set size(size) {
6492
- const newSize = size ? size : DEFAULT_SIZE$6;
6496
+ const newSize = size ? size : DEFAULT_SIZE$7;
6493
6497
  this.handleClasses(newSize, 'size');
6494
6498
  this._size = newSize;
6495
6499
  }
@@ -6653,7 +6657,7 @@ class RadioCheckBoxBase {
6653
6657
  ngChange = (_) => { };
6654
6658
  ngTouched = () => { };
6655
6659
  _isFocused = false;
6656
- _size = DEFAULT_SIZE$6;
6660
+ _size = DEFAULT_SIZE$7;
6657
6661
  constructor(componentType, hostElement, renderer, cdr, ngZone, injector) {
6658
6662
  this.componentType = componentType;
6659
6663
  this.hostElement = hostElement;
@@ -6722,7 +6726,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
6722
6726
  args: ['input', { static: true }]
6723
6727
  }] } });
6724
6728
 
6725
- const DEFAULT_ROUNDED$5 = 'medium';
6729
+ const DEFAULT_ROUNDED$6 = 'medium';
6726
6730
  class CheckBoxComponent extends RadioCheckBoxBase {
6727
6731
  renderer;
6728
6732
  hostElement;
@@ -6758,7 +6762,7 @@ class CheckBoxComponent extends RadioCheckBoxBase {
6758
6762
  * * `none`
6759
6763
  */
6760
6764
  set rounded(rounded) {
6761
- const newRounded = rounded ? rounded : DEFAULT_ROUNDED$5;
6765
+ const newRounded = rounded ? rounded : DEFAULT_ROUNDED$6;
6762
6766
  this.handleClasses(newRounded, 'rounded');
6763
6767
  this._rounded = newRounded;
6764
6768
  }
@@ -6799,7 +6803,7 @@ class CheckBoxComponent extends RadioCheckBoxBase {
6799
6803
  'aria-invalid': this.isControlInvalid
6800
6804
  };
6801
6805
  }
6802
- _rounded = DEFAULT_ROUNDED$5;
6806
+ _rounded = DEFAULT_ROUNDED$6;
6803
6807
  _checkedState = false;
6804
6808
  constructor(renderer, hostElement, cdr, ngZone, injector) {
6805
6809
  super('checkbox', hostElement, renderer, cdr, ngZone, injector);
@@ -6933,8 +6937,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
6933
6937
  type: Output
6934
6938
  }] } });
6935
6939
 
6936
- const DEFAULT_SIZE$5 = 'medium';
6937
- const DEFAULT_ROUNDED$4 = 'medium';
6940
+ const DEFAULT_SIZE$6 = 'medium';
6941
+ const DEFAULT_ROUNDED$5 = 'medium';
6938
6942
  /**
6939
6943
  * Represents the directive that renders the [Kendo UI CheckBox]({% slug overview_checkbox %}) input component.
6940
6944
  * The directive is placed on input type="checkbox" elements.
@@ -6959,7 +6963,7 @@ class CheckBoxDirective {
6959
6963
  * * `none`
6960
6964
  */
6961
6965
  set size(size) {
6962
- const newSize = size ? size : DEFAULT_SIZE$5;
6966
+ const newSize = size ? size : DEFAULT_SIZE$6;
6963
6967
  this.handleClasses(newSize, 'size');
6964
6968
  this._size = newSize;
6965
6969
  }
@@ -6977,7 +6981,7 @@ class CheckBoxDirective {
6977
6981
  * * `none`
6978
6982
  */
6979
6983
  set rounded(rounded) {
6980
- const newRounded = rounded ? rounded : DEFAULT_ROUNDED$4;
6984
+ const newRounded = rounded ? rounded : DEFAULT_ROUNDED$5;
6981
6985
  this.handleClasses(newRounded, 'rounded');
6982
6986
  this._rounded = newRounded;
6983
6987
  }
@@ -8072,7 +8076,7 @@ class ColorContrastSvgComponent {
8072
8076
  }
8073
8077
  findValue(contrast, saturation, low, high, comparer) {
8074
8078
  const mid = (low + high) / 2;
8075
- const hsva = Object.assign({}, this.hsva.value, { s: saturation / this.metrics.width, v: 1 - mid / this.metrics.height });
8079
+ const hsva = { ...this.hsva.value, s: saturation / this.metrics.width, v: 1 - mid / this.metrics.height };
8076
8080
  const currentContrast = getContrastFromTwoRGBAs(getRGBA(getColorFromHSV(hsva)), getRGBA(this.backgroundColor || ''));
8077
8081
  if (low + 0.5 > high) {
8078
8082
  if (currentContrast < contrast + 1 && currentContrast > contrast - 1) {
@@ -11314,9 +11318,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
11314
11318
 
11315
11319
  /* eslint-disable @typescript-eslint/no-explicit-any */
11316
11320
  const DOM_FOCUS_EVENTS = ['focus', 'blur'];
11317
- const DEFAULT_SIZE$4 = 'medium';
11318
- const DEFAULT_ROUNDED$3 = 'medium';
11319
- const DEFAULT_FILL_MODE$3 = 'solid';
11321
+ const DEFAULT_SIZE$5 = 'medium';
11322
+ const DEFAULT_ROUNDED$4 = 'medium';
11323
+ const DEFAULT_FILL_MODE$4 = 'solid';
11320
11324
  /**
11321
11325
  * @hidden
11322
11326
  */
@@ -11520,7 +11524,7 @@ class ColorPickerComponent {
11520
11524
  * * `none`
11521
11525
  */
11522
11526
  set size(size) {
11523
- const newSize = size ? size : DEFAULT_SIZE$4;
11527
+ const newSize = size ? size : DEFAULT_SIZE$5;
11524
11528
  this.handleClasses(newSize, 'size');
11525
11529
  this._size = newSize;
11526
11530
  }
@@ -11539,7 +11543,7 @@ class ColorPickerComponent {
11539
11543
  * * `none`
11540
11544
  */
11541
11545
  set rounded(rounded) {
11542
- const newRounded = rounded ? rounded : DEFAULT_ROUNDED$3;
11546
+ const newRounded = rounded ? rounded : DEFAULT_ROUNDED$4;
11543
11547
  this.handleClasses(newRounded, 'rounded');
11544
11548
  this._rounded = newRounded;
11545
11549
  }
@@ -11557,7 +11561,7 @@ class ColorPickerComponent {
11557
11561
  * * `none`
11558
11562
  */
11559
11563
  set fillMode(fillMode) {
11560
- const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$3;
11564
+ const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$4;
11561
11565
  this.handleClasses(newFillMode, 'fillMode');
11562
11566
  this._fillMode = newFillMode;
11563
11567
  }
@@ -13056,7 +13060,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
13056
13060
  type: Output
13057
13061
  }] } });
13058
13062
 
13059
- const DEFAULT_SIZE$3 = 'medium';
13063
+ const DEFAULT_SIZE$4 = 'medium';
13060
13064
  /**
13061
13065
  * Represents the directive that renders the [Kendo UI RadioButton]({% slug overview_checkbox %}) input component.
13062
13066
  * The directive is placed on input type="radio" elements.
@@ -13080,7 +13084,7 @@ class RadioButtonDirective {
13080
13084
  * * `none`
13081
13085
  */
13082
13086
  set size(size) {
13083
- const newSize = size ? size : DEFAULT_SIZE$3;
13087
+ const newSize = size ? size : DEFAULT_SIZE$4;
13084
13088
  this.handleClasses(newSize, 'size');
13085
13089
  this._size = newSize;
13086
13090
  }
@@ -14075,9 +14079,9 @@ const noop = () => { };
14075
14079
  let _id = 0;
14076
14080
  const nextId = () => 'k-signature-focusable-' + _id++;
14077
14081
  const FOCUSED_CLASS = 'k-focus';
14078
- const DEFAULT_SIZE$2 = 'medium';
14079
- const DEFAULT_ROUNDED$2 = 'medium';
14080
- const DEFAULT_FILL_MODE$2 = 'solid';
14082
+ const DEFAULT_SIZE$3 = 'medium';
14083
+ const DEFAULT_ROUNDED$3 = 'medium';
14084
+ const DEFAULT_FILL_MODE$3 = 'solid';
14081
14085
  const DEFAULT_POPUP_SCALE = 3;
14082
14086
  const DEFAULT_EXPORT_SCALE = 2;
14083
14087
  const DEFAULT_COLOR = '#000000';
@@ -14170,7 +14174,7 @@ class SignatureComponent {
14170
14174
  * * `large`
14171
14175
  * * `none`
14172
14176
  */
14173
- size = DEFAULT_SIZE$2;
14177
+ size = DEFAULT_SIZE$3;
14174
14178
  /**
14175
14179
  * The `rounded` property specifies the border radius of the signature
14176
14180
  * ([see example](slug:appearance_signature#rounded-corners)).
@@ -14182,7 +14186,7 @@ class SignatureComponent {
14182
14186
  * * `full` (not supported by the Signature)
14183
14187
  * * `none`
14184
14188
  */
14185
- rounded = DEFAULT_ROUNDED$2;
14189
+ rounded = DEFAULT_ROUNDED$3;
14186
14190
  /**
14187
14191
  * The `fillMode` property specifies the background and border styles of the signature
14188
14192
  * ([see example](slug:appearance_signature#toc-fill-mode)).
@@ -14193,7 +14197,7 @@ class SignatureComponent {
14193
14197
  * * `outline`
14194
14198
  * * `none`
14195
14199
  */
14196
- fillMode = DEFAULT_FILL_MODE$2;
14200
+ fillMode = DEFAULT_FILL_MODE$3;
14197
14201
  /**
14198
14202
  * The stroke color of the signature.
14199
14203
  *
@@ -14585,9 +14589,9 @@ class SignatureComponent {
14585
14589
  const classList = this.element.nativeElement.classList;
14586
14590
  this.hostClasses.forEach(([name]) => classList.remove(name));
14587
14591
  this.hostClasses = [
14588
- [`k-signature-${SIZE_MAP[this.size || DEFAULT_SIZE$2]}`, !isNone(this.size)],
14589
- [`k-input-${this.fillMode || DEFAULT_FILL_MODE$2}`, !isNone(this.fillMode)],
14590
- [`k-rounded-${ROUNDED_MAP[this.rounded || DEFAULT_ROUNDED$2]}`, !isNone(this.rounded)]
14592
+ [`k-signature-${SIZE_MAP[this.size || DEFAULT_SIZE$3]}`, !isNone(this.size)],
14593
+ [`k-input-${this.fillMode || DEFAULT_FILL_MODE$3}`, !isNone(this.fillMode)],
14594
+ [`k-rounded-${ROUNDED_MAP[this.rounded || DEFAULT_ROUNDED$3]}`, !isNone(this.rounded)]
14591
14595
  ];
14592
14596
  this.hostClasses.forEach(([name, enabled]) => classList.toggle(name, enabled));
14593
14597
  }
@@ -15366,9 +15370,9 @@ const resizeClasses = {
15366
15370
  'auto': 'k-resize-none'
15367
15371
  };
15368
15372
  const FOCUSED$1 = 'k-focus';
15369
- const DEFAULT_SIZE$1 = 'medium';
15370
- const DEFAULT_ROUNDED$1 = 'medium';
15371
- const DEFAULT_FILL_MODE$1 = 'solid';
15373
+ const DEFAULT_SIZE$2 = 'medium';
15374
+ const DEFAULT_ROUNDED$2 = 'medium';
15375
+ const DEFAULT_FILL_MODE$2 = 'solid';
15372
15376
  /**
15373
15377
  * Represents the [Kendo UI TextArea component for Angular]({% slug overview_textarea %}).
15374
15378
  */
@@ -15495,7 +15499,7 @@ class TextAreaComponent extends TextFieldsBase {
15495
15499
  * * `none`
15496
15500
  */
15497
15501
  set size(size) {
15498
- const newSize = size ? size : DEFAULT_SIZE$1;
15502
+ const newSize = size ? size : DEFAULT_SIZE$2;
15499
15503
  this.handleClasses(newSize, 'size');
15500
15504
  this._size = newSize;
15501
15505
  }
@@ -15513,7 +15517,7 @@ class TextAreaComponent extends TextFieldsBase {
15513
15517
  * * `none`
15514
15518
  */
15515
15519
  set rounded(rounded) {
15516
- const newRounded = rounded ? rounded : DEFAULT_ROUNDED$1;
15520
+ const newRounded = rounded ? rounded : DEFAULT_ROUNDED$2;
15517
15521
  this.handleClasses(newRounded, 'rounded');
15518
15522
  this._rounded = newRounded;
15519
15523
  }
@@ -15531,7 +15535,7 @@ class TextAreaComponent extends TextFieldsBase {
15531
15535
  * * `none`
15532
15536
  */
15533
15537
  set fillMode(fillMode) {
15534
- const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$1;
15538
+ const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$2;
15535
15539
  this.handleClasses(newFillMode, 'fillMode');
15536
15540
  this._fillMode = newFillMode;
15537
15541
  }
@@ -16289,9 +16293,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
16289
16293
 
16290
16294
  /* eslint-disable @typescript-eslint/no-explicit-any */
16291
16295
  const FOCUSED = 'k-focus';
16292
- const DEFAULT_SIZE = 'medium';
16293
- const DEFAULT_ROUNDED = 'medium';
16294
- const DEFAULT_FILL_MODE = 'solid';
16296
+ const DEFAULT_SIZE$1 = 'medium';
16297
+ const DEFAULT_ROUNDED$1 = 'medium';
16298
+ const DEFAULT_FILL_MODE$1 = 'solid';
16295
16299
  const iconsMap = { checkIcon, exclamationCircleIcon, xIcon };
16296
16300
  class TextBoxComponent {
16297
16301
  localizationService;
@@ -16405,7 +16409,7 @@ class TextBoxComponent {
16405
16409
  * * `none`
16406
16410
  */
16407
16411
  set size(size) {
16408
- const newSize = size ? size : DEFAULT_SIZE;
16412
+ const newSize = size ? size : DEFAULT_SIZE$1;
16409
16413
  this.handleClasses(newSize, 'size');
16410
16414
  this._size = newSize;
16411
16415
  }
@@ -16424,7 +16428,7 @@ class TextBoxComponent {
16424
16428
  * * `none`
16425
16429
  */
16426
16430
  set rounded(rounded) {
16427
- const newRounded = rounded ? rounded : DEFAULT_ROUNDED;
16431
+ const newRounded = rounded ? rounded : DEFAULT_ROUNDED$1;
16428
16432
  this.handleClasses(newRounded, 'rounded');
16429
16433
  this._rounded = newRounded;
16430
16434
  }
@@ -16442,7 +16446,7 @@ class TextBoxComponent {
16442
16446
  * * `none`
16443
16447
  */
16444
16448
  set fillMode(fillMode) {
16445
- const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE;
16449
+ const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$1;
16446
16450
  this.handleClasses(newFillMode, 'fillMode');
16447
16451
  this._fillMode = newFillMode;
16448
16452
  }
@@ -17247,37 +17251,1097 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
17247
17251
  }] } });
17248
17252
 
17249
17253
  /**
17250
- * Utility array that contains all `TextBox` related components and directives
17254
+ * @hidden
17251
17255
  */
17252
- const KENDO_TEXTBOX = [
17253
- TextBoxDirective,
17254
- TextBoxComponent,
17255
- InputSeparatorComponent,
17256
- TextBoxSuffixTemplateDirective,
17257
- TextBoxPrefixTemplateDirective,
17258
- TextBoxCustomMessagesComponent,
17259
- PrefixTemplateDirective,
17260
- SuffixTemplateDirective,
17261
- SeparatorComponent
17262
- ];
17256
+ class OTPInputSeparatorComponent {
17257
+ set separator(otpSeparator) {
17258
+ this._separator = otpSeparator;
17259
+ this.clearSeparator();
17260
+ if (!isPresent$1(otpSeparator)) {
17261
+ return;
17262
+ }
17263
+ if (typeof otpSeparator === 'string') {
17264
+ this.hasText = true;
17265
+ return;
17266
+ }
17267
+ if (typeof otpSeparator.value !== 'string') {
17268
+ this.hasSVGIcon = otpSeparator?.type === 'svgIcon';
17269
+ this.separatorSVGIcon = otpSeparator.value;
17270
+ return;
17271
+ }
17272
+ this.hasIconClass = otpSeparator?.type === 'iconClass';
17273
+ this.hasFontIcon = otpSeparator?.type === 'fontIcon';
17274
+ this.separatorIconString = otpSeparator.value;
17275
+ }
17276
+ get separator() {
17277
+ return this._separator;
17278
+ }
17279
+ wrapperClass = true;
17280
+ hasText;
17281
+ hasIconClass;
17282
+ hasSVGIcon;
17283
+ hasFontIcon;
17284
+ separatorIconString;
17285
+ separatorSVGIcon;
17286
+ _separator;
17287
+ clearSeparator() {
17288
+ this.hasText = false;
17289
+ this.hasFontIcon = false;
17290
+ this.hasIconClass = false;
17291
+ this.hasSVGIcon = false;
17292
+ }
17293
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OTPInputSeparatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
17294
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OTPInputSeparatorComponent, isStandalone: true, selector: "kendo-otpinput-separator", inputs: { separator: "separator" }, host: { properties: { "class.k-otp-separator": "this.wrapperClass" } }, exportAs: ["kendoOTPInputSeparator"], ngImport: i0, template: `
17295
+ <ng-container *ngIf="hasText">{{this.separator}}</ng-container>
17296
+ <span *ngIf="hasIconClass" [ngClass]="separatorIconString"></span>
17297
+ <kendo-icon-wrapper
17298
+ *ngIf="hasFontIcon || hasSVGIcon"
17299
+ [name]="separatorIconString"
17300
+ [svgIcon]="separatorSVGIcon"
17301
+ ></kendo-icon-wrapper>
17302
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }] });
17303
+ }
17304
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OTPInputSeparatorComponent, decorators: [{
17305
+ type: Component,
17306
+ args: [{
17307
+ exportAs: 'kendoOTPInputSeparator',
17308
+ selector: 'kendo-otpinput-separator',
17309
+ template: `
17310
+ <ng-container *ngIf="hasText">{{this.separator}}</ng-container>
17311
+ <span *ngIf="hasIconClass" [ngClass]="separatorIconString"></span>
17312
+ <kendo-icon-wrapper
17313
+ *ngIf="hasFontIcon || hasSVGIcon"
17314
+ [name]="separatorIconString"
17315
+ [svgIcon]="separatorSVGIcon"
17316
+ ></kendo-icon-wrapper>
17317
+ `,
17318
+ standalone: true,
17319
+ imports: [NgIf, NgClass, IconWrapperComponent]
17320
+ }]
17321
+ }], propDecorators: { separator: [{
17322
+ type: Input
17323
+ }], wrapperClass: [{
17324
+ type: HostBinding,
17325
+ args: ['class.k-otp-separator']
17326
+ }] } });
17327
+
17263
17328
  /**
17264
- * Utility array that contains all `NumericTextBox` related components and directives
17329
+ * @hidden
17265
17330
  */
17266
- const KENDO_NUMERICTEXTBOX = [
17267
- NumericTextBoxComponent,
17268
- NumericTextBoxCustomMessagesComponent,
17269
- PrefixTemplateDirective,
17270
- SuffixTemplateDirective,
17271
- SeparatorComponent
17272
- ];
17331
+ class OTPInputMessages extends ComponentMessages {
17332
+ /**
17333
+ * The aria-label of the OTP Input. Follows the pattern **Input {currentInput} of {totalInputs}, current value {value}** by default.
17334
+ * Тhe default label text when the current input is 1, and the total number of inputs is 4 will be
17335
+ * **Input 1 of 4, current value null**.
17336
+ *
17337
+ * The message consists of several parts - the current input number, the total number of inputs, the current value and a localizable string.
17338
+ * To allow for reordering its parts, the `ariaLabel` input accepts a string with placeholders for the current input,
17339
+ * total number of inputs and current value. The `{currentInput}`, `{totalInputs}` and `{currentValue}` placeholders will be
17340
+ * replaced internally with the respective actual values.
17341
+ */
17342
+ ariaLabel;
17343
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OTPInputMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
17344
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: OTPInputMessages, selector: "kendo-otpinput-messages-base", inputs: { ariaLabel: "ariaLabel" }, usesInheritance: true, ngImport: i0 });
17345
+ }
17346
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OTPInputMessages, decorators: [{
17347
+ type: Directive,
17348
+ args: [{
17349
+ // eslint-disable-next-line @angular-eslint/directive-selector
17350
+ selector: 'kendo-otpinput-messages-base'
17351
+ }]
17352
+ }], propDecorators: { ariaLabel: [{
17353
+ type: Input
17354
+ }] } });
17355
+
17273
17356
  /**
17274
- * Utility array that contains all `MaskedTextBox` related components and directives
17357
+ * @hidden
17275
17358
  */
17276
- const KENDO_MASKEDTEXTBOX = [
17277
- MaskedTextBoxComponent,
17278
- PrefixTemplateDirective,
17279
- SuffixTemplateDirective,
17280
- SeparatorComponent
17359
+ class LocalizedOTPInputMessagesDirective extends OTPInputMessages {
17360
+ service;
17361
+ constructor(service) {
17362
+ super();
17363
+ this.service = service;
17364
+ }
17365
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LocalizedOTPInputMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });
17366
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: LocalizedOTPInputMessagesDirective, isStandalone: true, selector: "[kendoOTPInputLocalizedMessages]", providers: [
17367
+ {
17368
+ provide: OTPInputMessages,
17369
+ useExisting: forwardRef(() => LocalizedOTPInputMessagesDirective)
17370
+ }
17371
+ ], usesInheritance: true, ngImport: i0 });
17372
+ }
17373
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LocalizedOTPInputMessagesDirective, decorators: [{
17374
+ type: Directive,
17375
+ args: [{
17376
+ providers: [
17377
+ {
17378
+ provide: OTPInputMessages,
17379
+ useExisting: forwardRef(() => LocalizedOTPInputMessagesDirective)
17380
+ }
17381
+ ],
17382
+ selector: '[kendoOTPInputLocalizedMessages]',
17383
+ standalone: true
17384
+ }]
17385
+ }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });
17386
+
17387
+ const DEFAULT_SIZE = 'medium';
17388
+ const DEFAULT_ROUNDED = 'medium';
17389
+ const DEFAULT_FILL_MODE = 'solid';
17390
+ const DEFAULT_OTPINPUT_LENGTH = 4;
17391
+ class OTPInputComponent {
17392
+ hostElement;
17393
+ cdr;
17394
+ injector;
17395
+ renderer;
17396
+ localizationService;
17397
+ zone;
17398
+ /**
17399
+ * Configures the total number of input fields.
17400
+ *
17401
+ * @default 4
17402
+ */
17403
+ set length(value) {
17404
+ if (value < 1 || this._length === value) {
17405
+ return;
17406
+ }
17407
+ this._length = value;
17408
+ this.inputsArray = new Array(this._length);
17409
+ }
17410
+ get length() {
17411
+ return this._length;
17412
+ }
17413
+ /**
17414
+ * Configures the input type.
17415
+ *
17416
+ * * The possible values are:
17417
+ * * `text` (default)
17418
+ * * `number`
17419
+ * * `password`
17420
+ *
17421
+ * @default 'text'
17422
+ */
17423
+ type = 'text';
17424
+ /**
17425
+ * Configures whether the input fields are separate or adjacent to each other.
17426
+ *
17427
+ * @default true
17428
+ */
17429
+ spacing = true;
17430
+ /**
17431
+ * Adds a separator between groups of input fields.
17432
+ *
17433
+ * > The configuration can only be applied when `groupLength` is set.
17434
+ */
17435
+ separator;
17436
+ /**
17437
+ * Configures whether the component is enabled or disabled.
17438
+ *
17439
+ * @default false
17440
+ */
17441
+ disabled = false;
17442
+ /**
17443
+ * Configures whether the component is readonly.
17444
+ *
17445
+ * @default false
17446
+ */
17447
+ readonly = false;
17448
+ /**
17449
+ * Configures the placeholder of the input fields.
17450
+ */
17451
+ placeholder;
17452
+ /**
17453
+ * Configures the length of the groups. If `groupLength` is a number, all groups will have the same length. If it's an array, each group can have a different length.
17454
+ */
17455
+ get groupLength() {
17456
+ return this._groupLength;
17457
+ }
17458
+ set groupLength(length) {
17459
+ const isNumber = typeof length === 'number';
17460
+ if (this._groupLength === length ||
17461
+ isPresent$1(length) &&
17462
+ ((isNumber && (length < 1 || length > this.length)) ||
17463
+ (!isNumber && !this.isValidGroupArray(length)))) {
17464
+ return;
17465
+ }
17466
+ if (!isPresent$1(length)) {
17467
+ this.clearGroups();
17468
+ }
17469
+ else if (isNumber) {
17470
+ this.populateGroupArray(length);
17471
+ }
17472
+ else {
17473
+ this.groupLengthArray = length;
17474
+ if (!this.spacing) {
17475
+ this.adjacentGroups = this.groupLengthArray;
17476
+ }
17477
+ }
17478
+ this._groupLength = length;
17479
+ this.populateSeparatorPosititons();
17480
+ }
17481
+ /**
17482
+ * Configures the value of the component. Unfilled input fields are represented with space.
17483
+ */
17484
+ get value() {
17485
+ return this._value;
17486
+ }
17487
+ set value(input) {
17488
+ if (this._value === input ||
17489
+ (this.type === 'number' && isPresent$1(input) && !this.isValidNumber(input))) {
17490
+ return;
17491
+ }
17492
+ if (!isPresent$1(input)) {
17493
+ this.clearInputValues();
17494
+ this._value = null;
17495
+ }
17496
+ else {
17497
+ this._value = input.slice(0, this.length);
17498
+ if (!this.inputFieldValueChanged) {
17499
+ this.fillInputs(input, 0, true);
17500
+ }
17501
+ }
17502
+ if (this.inputAttributes) {
17503
+ this.setInputAttributes();
17504
+ }
17505
+ else {
17506
+ this.setDefaultAttributes();
17507
+ }
17508
+ }
17509
+ /**
17510
+ * The `size` property specifies the padding of the input fields.
17511
+ *
17512
+ * The possible values are:
17513
+ * * `small`
17514
+ * * `medium` (default)
17515
+ * * `large`
17516
+ * * `none`
17517
+ */
17518
+ set size(size) {
17519
+ const newSize = size || DEFAULT_SIZE;
17520
+ const elem = this.hostElement.nativeElement;
17521
+ this.renderer.removeClass(elem, `k-otp-${SIZE_MAP[this._size]}`);
17522
+ this.renderer.addClass(elem, `k-otp-${SIZE_MAP[newSize]}`);
17523
+ this._size = newSize;
17524
+ }
17525
+ get size() {
17526
+ return this._size;
17527
+ }
17528
+ /**
17529
+ * The `rounded` property specifies the border radius of the OTP Input.
17530
+ *
17531
+ * The possible values are:
17532
+ * * `small`
17533
+ * * `medium` (default)
17534
+ * * `large`
17535
+ * * `full`
17536
+ * * `none`
17537
+ */
17538
+ set rounded(rounded) {
17539
+ this._rounded = rounded || DEFAULT_ROUNDED;
17540
+ }
17541
+ get rounded() {
17542
+ return this._rounded;
17543
+ }
17544
+ /**
17545
+ * The `fillMode` property specifies the background and border styles of the OTP Input.
17546
+ *
17547
+ * The possible values are:
17548
+ * * `flat`
17549
+ * * `solid` (default)
17550
+ * * `outline`
17551
+ * * `none`
17552
+ */
17553
+ set fillMode(fillMode) {
17554
+ const newFillMode = fillMode || DEFAULT_FILL_MODE;
17555
+ this.setGroupFillMode(newFillMode, this._fillMode);
17556
+ this._fillMode = newFillMode;
17557
+ }
17558
+ get fillMode() {
17559
+ return this._fillMode;
17560
+ }
17561
+ /**
17562
+ * Sets the HTML attributes of the inner focusable input element. Attributes which are essential for certain component functionalities cannot be changed.
17563
+ */
17564
+ set inputAttributes(attributes) {
17565
+ this._inputAttributes = attributes;
17566
+ this.parsedAttributes = this.inputAttributes ?
17567
+ { ...this.defaultAttributes, ...this.inputAttributes } :
17568
+ this.inputAttributes;
17569
+ this.setInputAttributes();
17570
+ }
17571
+ get inputAttributes() {
17572
+ return this._inputAttributes;
17573
+ }
17574
+ /**
17575
+ * Fires each time the value is changed by the user&mdash;
17576
+ * When the value of the component is programmatically changed to `ngModel` or `formControl`
17577
+ * through its API or form binding, the `valueChange` event is not triggered because it
17578
+ * might cause a mix-up with the built-in `valueChange` mechanisms of the `ngModel` or `formControl` bindings.
17579
+ */
17580
+ valueChange = new EventEmitter();
17581
+ /**
17582
+ * Fires when the length of the trimmed value is equal to `length`.
17583
+ */
17584
+ inputFinish = new EventEmitter();
17585
+ /**
17586
+ * Fires each time the user focuses the OTP Input.
17587
+ */
17588
+ onFocus = new EventEmitter();
17589
+ /**
17590
+ * Fires each time the user blurs the OTP Input.
17591
+ */
17592
+ onBlur = new EventEmitter();
17593
+ wrapperClass = true;
17594
+ get invalidClass() {
17595
+ return this.isControlInvalid;
17596
+ }
17597
+ direction;
17598
+ role = 'group';
17599
+ /**
17600
+ * @hidden
17601
+ */
17602
+ inputFields;
17603
+ /**
17604
+ * @hidden
17605
+ */
17606
+ set inputGroups(elements) {
17607
+ this._inputGroups = elements;
17608
+ this.setGroupFillMode(this.fillMode);
17609
+ }
17610
+ get inputGroups() {
17611
+ return this._inputGroups;
17612
+ }
17613
+ /**
17614
+ * @hidden
17615
+ */
17616
+ groupLengthArray;
17617
+ /**
17618
+ * @hidden
17619
+ */
17620
+ inputsArray;
17621
+ /**
17622
+ * @hidden
17623
+ */
17624
+ inputsValues = [].constructor(DEFAULT_OTPINPUT_LENGTH);
17625
+ /**
17626
+ * @hidden
17627
+ */
17628
+ adjacentGroups;
17629
+ _length = DEFAULT_OTPINPUT_LENGTH;
17630
+ _groupLength;
17631
+ _inputGroups;
17632
+ separatorPositions = new Set();
17633
+ _value = null;
17634
+ _size = DEFAULT_SIZE;
17635
+ _rounded = DEFAULT_ROUNDED;
17636
+ _fillMode = DEFAULT_FILL_MODE;
17637
+ _isFocused = false;
17638
+ focusChangedProgrammatically = false;
17639
+ inputFieldValueChanged = false;
17640
+ focusedInput;
17641
+ _inputAttributes;
17642
+ parsedAttributes = {};
17643
+ get defaultAttributes() {
17644
+ return {
17645
+ autocomplete: 'off'
17646
+ };
17647
+ }
17648
+ subscriptions;
17649
+ ngChange = (_) => { };
17650
+ ngTouched = () => { };
17651
+ constructor(hostElement, cdr, injector, renderer, localizationService, zone) {
17652
+ this.hostElement = hostElement;
17653
+ this.cdr = cdr;
17654
+ this.injector = injector;
17655
+ this.renderer = renderer;
17656
+ this.localizationService = localizationService;
17657
+ this.zone = zone;
17658
+ this.direction = localizationService.rtl ? 'rtl' : 'ltr';
17659
+ }
17660
+ ngOnInit() {
17661
+ this.inputsArray = Array.from({ length: this._length });
17662
+ this.subscriptions = this.localizationService.changes.subscribe(({ rtl }) => {
17663
+ this.direction = rtl ? 'rtl' : 'ltr';
17664
+ });
17665
+ this.zone.runOutsideAngular(() => {
17666
+ this.subscriptions.add(this.renderer.listen(this.hostElement.nativeElement, 'paste', this.handlePaste.bind(this)));
17667
+ this.subscriptions.add(this.renderer.listen(this.hostElement.nativeElement, 'keydown', this.handleKeydown.bind(this)));
17668
+ });
17669
+ }
17670
+ ngAfterViewInit() {
17671
+ this.subscriptions.add(this.inputFields.changes.subscribe(this.handleInputChanges.bind(this)));
17672
+ this.handleInputChanges();
17673
+ this.renderer.addClass(this.hostElement.nativeElement, `k-otp-${SIZE_MAP[this._size]}`);
17674
+ this.setGroupFillMode(this.fillMode);
17675
+ this.zone.onStable.pipe(take(1)).subscribe(() => {
17676
+ this.fillInputs(this.value);
17677
+ });
17678
+ }
17679
+ ngOnChanges(changes) {
17680
+ if (changes.length) {
17681
+ if (typeof this.groupLength === 'number') {
17682
+ this.populateGroupArray(this.groupLength);
17683
+ }
17684
+ this.populateSeparatorPosititons();
17685
+ }
17686
+ if (changes.spacing) {
17687
+ if (this.spacing === true) {
17688
+ this.adjacentGroups = null;
17689
+ }
17690
+ else {
17691
+ this.adjacentGroups = this.groupLengthArray ?? [this.length];
17692
+ }
17693
+ }
17694
+ if (changes.type && this.type === 'number') {
17695
+ if (isPresent$1(this.value) && !this.isValidNumber(this.value)) {
17696
+ this.value = null;
17697
+ }
17698
+ }
17699
+ }
17700
+ ngOnDestroy() {
17701
+ this.subscriptions.unsubscribe();
17702
+ }
17703
+ /**
17704
+ * @hidden
17705
+ */
17706
+ get formControl() {
17707
+ const ngControl = this.injector.get(NgControl, null);
17708
+ return ngControl?.control || null;
17709
+ }
17710
+ /**
17711
+ * @hidden
17712
+ */
17713
+ writeValue(value) {
17714
+ this.value = value;
17715
+ }
17716
+ /**
17717
+ * @hidden
17718
+ */
17719
+ registerOnChange(fn) {
17720
+ this.ngChange = fn;
17721
+ }
17722
+ /**
17723
+ * @hidden
17724
+ */
17725
+ registerOnTouched(fn) {
17726
+ this.ngTouched = fn;
17727
+ }
17728
+ /**
17729
+ * @hidden
17730
+ */
17731
+ setDisabledState(isDisabled) {
17732
+ this.cdr.markForCheck();
17733
+ this.disabled = isDisabled;
17734
+ }
17735
+ /**
17736
+ * @hidden
17737
+ */
17738
+ get isControlInvalid() {
17739
+ return this.formControl?.touched && this.formControl.invalid;
17740
+ }
17741
+ /**
17742
+ * @hidden
17743
+ */
17744
+ get isFocused() {
17745
+ return this._isFocused;
17746
+ }
17747
+ /**
17748
+ * @hidden
17749
+ */
17750
+ set isFocused(value) {
17751
+ if (this._isFocused !== value && this.hostElement) {
17752
+ this._isFocused = value;
17753
+ }
17754
+ }
17755
+ /**
17756
+ * @hidden
17757
+ */
17758
+ get hasGroups() {
17759
+ if (!this.spacing && isPresent$1(this.groupLength)) {
17760
+ return true;
17761
+ }
17762
+ }
17763
+ /**
17764
+ * @hidden
17765
+ */
17766
+ showGroupSeparator(index) {
17767
+ return this.separator && this.groupLengthArray && index < this.groupLengthArray.length - 1;
17768
+ }
17769
+ /**
17770
+ * @hidden
17771
+ */
17772
+ showSeparator(index) {
17773
+ return this.separator && this.groupLength ? this.separatorPositions.has(index) : false;
17774
+ }
17775
+ /**
17776
+ * @hidden
17777
+ */
17778
+ handleValueChange(index, groupIndex) {
17779
+ this.inputFieldValueChanged = true;
17780
+ if (groupIndex) {
17781
+ index = this.getIndexByGroup(groupIndex, index);
17782
+ }
17783
+ let newValue = '';
17784
+ this.inputFields.forEach((input) => newValue = newValue.concat(input.value?.toString() || " "));
17785
+ if (!areSame(this.value, newValue)) {
17786
+ this.value = newValue;
17787
+ this.ngChange(newValue);
17788
+ this.valueChange.emit(newValue);
17789
+ }
17790
+ this.inputFieldValueChanged = false;
17791
+ if (this.value && this.value.trim().length === this.length) {
17792
+ this.inputFinish.emit(this.value);
17793
+ }
17794
+ if (isPresent$1(index) && isPresent$1(this.inputFields?.get(index).value)) {
17795
+ this.focusNext();
17796
+ }
17797
+ }
17798
+ /**
17799
+ * @hidden
17800
+ */
17801
+ handleInputFocus(index, groupIndex) {
17802
+ if (this.focusChangedProgrammatically) {
17803
+ return;
17804
+ }
17805
+ if (groupIndex) {
17806
+ index = this.getIndexByGroup(groupIndex, index);
17807
+ }
17808
+ this.focusedInput = index;
17809
+ }
17810
+ /**
17811
+ * @hidden
17812
+ */
17813
+ handleInput(event, index, groupIndex) {
17814
+ if (this.type === 'number' && !this.isValidNumber(event?.data)) {
17815
+ const inputIndex = groupIndex ? this.getIndexByGroup(groupIndex, index) : index;
17816
+ this.inputFields.get(inputIndex).value = null;
17817
+ this.showInvalidInput(inputIndex);
17818
+ return;
17819
+ }
17820
+ this.handleValueChange(index, groupIndex);
17821
+ }
17822
+ /**
17823
+ * @hidden
17824
+ */
17825
+ fillInputs(text, start = 0, replaceLast = false) {
17826
+ if (!isPresent$1(text)) {
17827
+ return;
17828
+ }
17829
+ let charCounter = 0;
17830
+ this.inputFields?.forEach((otpInput, i) => {
17831
+ if (i < start) {
17832
+ return;
17833
+ }
17834
+ if (charCounter < text.length) {
17835
+ if (text[charCounter] === ' ') {
17836
+ otpInput.value = null;
17837
+ }
17838
+ else {
17839
+ otpInput.value = text[charCounter];
17840
+ }
17841
+ charCounter++;
17842
+ }
17843
+ else if (replaceLast) {
17844
+ otpInput.value = null;
17845
+ }
17846
+ });
17847
+ }
17848
+ /**
17849
+ * Focuses the OTP Input.
17850
+ */
17851
+ focus(index) {
17852
+ if (!this.inputFields || index < 0 || index >= this.length) {
17853
+ return;
17854
+ }
17855
+ this.focusChangedProgrammatically = true;
17856
+ this.isFocused = true;
17857
+ this.inputFields.get(index || 0).focus();
17858
+ this.focusedInput = index || 0;
17859
+ this.focusChangedProgrammatically = false;
17860
+ }
17861
+ /**
17862
+ * Blurs the OTP Input.
17863
+ */
17864
+ blur() {
17865
+ this.focusChangedProgrammatically = true;
17866
+ const isFocusedElement = this.hostElement.nativeElement.querySelector(':focus');
17867
+ if (isFocusedElement) {
17868
+ isFocusedElement.blur();
17869
+ }
17870
+ this.isFocused = false;
17871
+ this.focusChangedProgrammatically = false;
17872
+ }
17873
+ /**
17874
+ * @hidden
17875
+ */
17876
+ handleFocus() {
17877
+ this.zone.run(() => {
17878
+ if (!this.focusChangedProgrammatically && hasObservers(this.onFocus)) {
17879
+ this.onFocus.emit();
17880
+ }
17881
+ this.isFocused = true;
17882
+ });
17883
+ }
17884
+ /**
17885
+ * @hidden
17886
+ */
17887
+ handleBlur() {
17888
+ this.zone.run(() => {
17889
+ if (!this.focusChangedProgrammatically) {
17890
+ this.ngTouched();
17891
+ this.onBlur.emit();
17892
+ }
17893
+ this.isFocused = false;
17894
+ });
17895
+ }
17896
+ getIndexByGroup(groupIndex, itemIndex) {
17897
+ return this.groupLengthArray.slice(0, groupIndex).reduce((sum, current) => sum + current, 0) + itemIndex;
17898
+ }
17899
+ focusNext() {
17900
+ if (!this.inputFields || this.focusedInput === this.length - 1) {
17901
+ return;
17902
+ }
17903
+ this.focusChangedProgrammatically = true;
17904
+ this.isFocused = true;
17905
+ this.inputFields.get(this.focusedInput).blur();
17906
+ this.inputFields.get(this.focusedInput + 1).focus();
17907
+ this.focusedInput++;
17908
+ this.focusChangedProgrammatically = false;
17909
+ }
17910
+ focusPrevious() {
17911
+ if (!this.inputFields || this.focusedInput === 0) {
17912
+ return;
17913
+ }
17914
+ this.focusChangedProgrammatically = true;
17915
+ this.isFocused = true;
17916
+ this.inputFields.get(this.focusedInput).blur();
17917
+ this.inputFields.get(this.focusedInput - 1).focus();
17918
+ this.focusedInput--;
17919
+ this.focusChangedProgrammatically = false;
17920
+ }
17921
+ handlePaste(event) {
17922
+ event.preventDefault();
17923
+ const text = event.clipboardData.getData('text').trim();
17924
+ if (text === '') {
17925
+ return;
17926
+ }
17927
+ if (this.type === 'number' && !this.isValidNumber(text)) {
17928
+ this.showInvalidInput(this.focusedInput);
17929
+ return;
17930
+ }
17931
+ this.inputFieldValueChanged = true;
17932
+ this.fillInputs(text, this.focusedInput);
17933
+ this.handleValueChange();
17934
+ this.inputFieldValueChanged = false;
17935
+ const focusedInput = this.focusedInput + text.length < this.inputFields?.length ?
17936
+ this.focusedInput + text.length :
17937
+ this.inputFields.length - 1;
17938
+ this.inputFields.get(this.focusedInput).blur();
17939
+ this.focusedInput = focusedInput;
17940
+ this.inputFields.get(this.focusedInput).focus();
17941
+ }
17942
+ handleKeydown(event) {
17943
+ if (event.keyCode === Keys.ArrowRight) {
17944
+ event.preventDefault();
17945
+ this.direction === 'ltr' ? this.focusNext() : this.focusPrevious();
17946
+ }
17947
+ if (event.keyCode === Keys.ArrowLeft) {
17948
+ event.preventDefault();
17949
+ this.direction === 'ltr' ? this.focusPrevious() : this.focusNext();
17950
+ }
17951
+ if (event.keyCode === Keys.Backspace) {
17952
+ event.preventDefault();
17953
+ this.inputFields.get(this.focusedInput).value = null;
17954
+ this.handleValueChange();
17955
+ this.focusPrevious();
17956
+ }
17957
+ if (event.keyCode === Keys.Delete) {
17958
+ event.preventDefault();
17959
+ this.inputFields.get(this.focusedInput).value = null;
17960
+ this.handleValueChange();
17961
+ }
17962
+ }
17963
+ isValidGroupArray(groups) {
17964
+ if (!isPresent$1(groups)) {
17965
+ return;
17966
+ }
17967
+ const sum = groups.reduce((sum, current) => sum + current, 0);
17968
+ return sum === this.length;
17969
+ }
17970
+ populateGroupArray(length) {
17971
+ const groupsCount = Math.floor(this.length / length);
17972
+ const remainder = this.length % length;
17973
+ const result = Array(groupsCount).fill(length);
17974
+ if (remainder > 0) {
17975
+ result.push(remainder);
17976
+ }
17977
+ this.groupLengthArray = [...result];
17978
+ // groups with spacing shouldn't be wrapped in `k-input-group`
17979
+ if (!this.spacing) {
17980
+ this.adjacentGroups = [...this.groupLengthArray];
17981
+ }
17982
+ }
17983
+ populateSeparatorPosititons() {
17984
+ let itemIndex = 0;
17985
+ this.separatorPositions.clear();
17986
+ if (!isPresent$1(this.groupLengthArray)) {
17987
+ return;
17988
+ }
17989
+ for (let i = 0; i < this.groupLengthArray.length - 1; i++) {
17990
+ itemIndex += this.groupLengthArray[i];
17991
+ this.separatorPositions.add(itemIndex - 1);
17992
+ }
17993
+ }
17994
+ clearGroups() {
17995
+ this.groupLengthArray = null;
17996
+ if (!this.spacing) {
17997
+ this.adjacentGroups = [this.length];
17998
+ }
17999
+ else {
18000
+ this.adjacentGroups = null;
18001
+ }
18002
+ this.separatorPositions.clear();
18003
+ }
18004
+ clearInputValues() {
18005
+ this.inputFields?.forEach((input) => input.value = null);
18006
+ }
18007
+ handleInputChanges() {
18008
+ this.zone.onStable.pipe(take(1)).subscribe(() => {
18009
+ this.fillInputs(this.value?.trim());
18010
+ if (this.inputAttributes) {
18011
+ this.setInputAttributes();
18012
+ }
18013
+ else {
18014
+ this.setDefaultAttributes();
18015
+ }
18016
+ this.cdr.detectChanges();
18017
+ });
18018
+ }
18019
+ setGroupFillMode(fillMode, previousFillMode) {
18020
+ this.inputGroups?.forEach(element => {
18021
+ if (previousFillMode !== 'none') {
18022
+ this.renderer.removeClass(element.nativeElement, `k-input-group-${previousFillMode}`);
18023
+ }
18024
+ if (fillMode !== 'none') {
18025
+ this.renderer.addClass(element.nativeElement, `k-input-group-${fillMode}`);
18026
+ }
18027
+ });
18028
+ }
18029
+ setInputAttributes() {
18030
+ this.inputFields?.forEach((input, index) => {
18031
+ if (!this.parsedAttributes || !this.parsedAttributes?.['aria-label']) {
18032
+ input.inputAttributes = { ...this.parsedAttributes, 'aria-label': this.ariaLabel(index) };
18033
+ }
18034
+ else {
18035
+ input.inputAttributes = this.parsedAttributes;
18036
+ }
18037
+ });
18038
+ }
18039
+ setDefaultAttributes() {
18040
+ this.inputFields?.forEach((input, index) => {
18041
+ input.inputAttributes = {
18042
+ autocomplete: 'off',
18043
+ 'aria-label': this.ariaLabel(index)
18044
+ };
18045
+ });
18046
+ }
18047
+ ariaLabel(index) {
18048
+ const localizationMsg = this.localizationService.get('ariaLabel') || '';
18049
+ return replaceMessagePlaceholder(replaceMessagePlaceholder(replaceMessagePlaceholder(localizationMsg, 'currentInput', (index + 1).toString()), 'totalInputs', this.length.toString()), 'value', this.value);
18050
+ }
18051
+ isValidNumber(value) {
18052
+ if (!isPresent$1(value)) {
18053
+ return;
18054
+ }
18055
+ const trimmedValue = value.trim();
18056
+ return trimmedValue !== '' &&
18057
+ trimmedValue !== 'Infinity' &&
18058
+ trimmedValue !== '-Infinity' &&
18059
+ !isNaN(Number(trimmedValue));
18060
+ }
18061
+ showInvalidInput(index) {
18062
+ const inputElement = this.inputFields.get(index).hostElement.nativeElement;
18063
+ this.renderer.addClass(inputElement, 'k-invalid');
18064
+ this.zone.runOutsideAngular(() => {
18065
+ setTimeout(() => {
18066
+ if (!this.isControlInvalid && inputElement) {
18067
+ this.renderer.removeClass(inputElement, 'k-invalid');
18068
+ }
18069
+ }, 300);
18070
+ });
18071
+ }
18072
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OTPInputComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
18073
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OTPInputComponent, isStandalone: true, selector: "kendo-otpinput", inputs: { length: "length", type: "type", spacing: "spacing", separator: "separator", disabled: "disabled", readonly: "readonly", placeholder: "placeholder", groupLength: "groupLength", value: "value", size: "size", rounded: "rounded", fillMode: "fillMode", inputAttributes: "inputAttributes" }, outputs: { valueChange: "valueChange", inputFinish: "inputFinish", onFocus: "focus", onBlur: "blur" }, host: { properties: { "class.k-otp": "this.wrapperClass", "class.k-invalid": "this.invalidClass", "attr.dir": "this.direction", "attr.role": "this.role" } }, providers: [
18074
+ LocalizationService,
18075
+ { provide: L10N_PREFIX, useValue: 'kendo.otpinput' },
18076
+ {
18077
+ provide: NG_VALUE_ACCESSOR,
18078
+ useExisting: forwardRef(() => OTPInputComponent),
18079
+ multi: true
18080
+ },
18081
+ { provide: KendoInput, useExisting: forwardRef(() => OTPInputComponent) }
18082
+ ], viewQueries: [{ propertyName: "inputFields", predicate: TextBoxComponent, descendants: true }, { propertyName: "inputGroups", predicate: ["inputGroup"], descendants: true }], exportAs: ["kendoOTPInput"], usesOnChanges: true, ngImport: i0, template: `
18083
+ <ng-container kendoOTPInputLocalizedMessages
18084
+ i18n-ariaLabel="kendo.otpinput.ariaLabel|The value of the aria-label attribute of the input fields."
18085
+ ariaLabel="{{ 'Input {currentInput} of {totalInputs}, current value {value}' }}"
18086
+ ></ng-container>
18087
+ <ng-container
18088
+ kendoInputSharedEvents
18089
+ [hostElement]="hostElement"
18090
+ [(isFocused)]="isFocused"
18091
+ (handleBlur)="handleBlur()"
18092
+ (onFocus)="handleFocus()"
18093
+ >
18094
+ <ng-container *ngIf="spacing; else groups">
18095
+ <ng-container *ngFor="let input of inputsArray; let i = index">
18096
+ <kendo-textbox
18097
+ class="k-otp-input"
18098
+ [class.k-invalid]="isControlInvalid"
18099
+ [selectOnFocus]="true"
18100
+ [maxlength]="1"
18101
+ [type]="type !== 'number' ? type : null"
18102
+ [placeholder]="placeholder"
18103
+ [size]="size"
18104
+ [rounded]="rounded"
18105
+ [fillMode]="fillMode"
18106
+ [disabled]="disabled"
18107
+ [readonly]="readonly"
18108
+ (focus)="handleInputFocus(i)"
18109
+ (input)="handleInput($event, i)"
18110
+ ></kendo-textbox>
18111
+ <kendo-otpinput-separator *ngIf="showSeparator(i)" [separator]="separator"></kendo-otpinput-separator>
18112
+ </ng-container>
18113
+ </ng-container>
18114
+ <ng-template #groups>
18115
+ <ng-container *ngFor="let group of adjacentGroups; let i = index">
18116
+ <div #inputGroup class="k-input-group">
18117
+ <kendo-textbox
18118
+ *ngFor="let input of [].constructor(group); let j = index"
18119
+ class="k-otp-input"
18120
+ [class.k-invalid]="isControlInvalid"
18121
+ [selectOnFocus]="true"
18122
+ [maxlength]="1"
18123
+ [type]="type !== 'number' ? type : null"
18124
+ [placeholder]="placeholder"
18125
+ [size]="size"
18126
+ [rounded]="rounded"
18127
+ [fillMode]="fillMode"
18128
+ [disabled]="disabled"
18129
+ [readonly]="readonly"
18130
+ (focus)="handleInputFocus(j, i)"
18131
+ (input)="handleInput($event, j, i)"
18132
+ ></kendo-textbox>
18133
+ </div>
18134
+ <kendo-otpinput-separator *ngIf="showGroupSeparator(i)" [separator]="separator"></kendo-otpinput-separator>
18135
+ </ng-container>
18136
+ </ng-template>
18137
+ <ng-container>
18138
+ `, isInline: true, dependencies: [{ kind: "directive", type: SharedInputEventsDirective, selector: "[kendoInputSharedEvents]", inputs: ["hostElement", "clearButtonClicked", "isFocused"], outputs: ["isFocusedChange", "onFocus", "handleBlur"] }, { kind: "component", type: TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "type", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength", "inputAttributes"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { kind: "component", type: OTPInputSeparatorComponent, selector: "kendo-otpinput-separator", inputs: ["separator"], exportAs: ["kendoOTPInputSeparator"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: LocalizedOTPInputMessagesDirective, selector: "[kendoOTPInputLocalizedMessages]" }] });
18139
+ }
18140
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OTPInputComponent, decorators: [{
18141
+ type: Component,
18142
+ args: [{
18143
+ exportAs: 'kendoOTPInput',
18144
+ providers: [
18145
+ LocalizationService,
18146
+ { provide: L10N_PREFIX, useValue: 'kendo.otpinput' },
18147
+ {
18148
+ provide: NG_VALUE_ACCESSOR,
18149
+ useExisting: forwardRef(() => OTPInputComponent),
18150
+ multi: true
18151
+ },
18152
+ { provide: KendoInput, useExisting: forwardRef(() => OTPInputComponent) }
18153
+ ],
18154
+ selector: 'kendo-otpinput',
18155
+ template: `
18156
+ <ng-container kendoOTPInputLocalizedMessages
18157
+ i18n-ariaLabel="kendo.otpinput.ariaLabel|The value of the aria-label attribute of the input fields."
18158
+ ariaLabel="{{ 'Input {currentInput} of {totalInputs}, current value {value}' }}"
18159
+ ></ng-container>
18160
+ <ng-container
18161
+ kendoInputSharedEvents
18162
+ [hostElement]="hostElement"
18163
+ [(isFocused)]="isFocused"
18164
+ (handleBlur)="handleBlur()"
18165
+ (onFocus)="handleFocus()"
18166
+ >
18167
+ <ng-container *ngIf="spacing; else groups">
18168
+ <ng-container *ngFor="let input of inputsArray; let i = index">
18169
+ <kendo-textbox
18170
+ class="k-otp-input"
18171
+ [class.k-invalid]="isControlInvalid"
18172
+ [selectOnFocus]="true"
18173
+ [maxlength]="1"
18174
+ [type]="type !== 'number' ? type : null"
18175
+ [placeholder]="placeholder"
18176
+ [size]="size"
18177
+ [rounded]="rounded"
18178
+ [fillMode]="fillMode"
18179
+ [disabled]="disabled"
18180
+ [readonly]="readonly"
18181
+ (focus)="handleInputFocus(i)"
18182
+ (input)="handleInput($event, i)"
18183
+ ></kendo-textbox>
18184
+ <kendo-otpinput-separator *ngIf="showSeparator(i)" [separator]="separator"></kendo-otpinput-separator>
18185
+ </ng-container>
18186
+ </ng-container>
18187
+ <ng-template #groups>
18188
+ <ng-container *ngFor="let group of adjacentGroups; let i = index">
18189
+ <div #inputGroup class="k-input-group">
18190
+ <kendo-textbox
18191
+ *ngFor="let input of [].constructor(group); let j = index"
18192
+ class="k-otp-input"
18193
+ [class.k-invalid]="isControlInvalid"
18194
+ [selectOnFocus]="true"
18195
+ [maxlength]="1"
18196
+ [type]="type !== 'number' ? type : null"
18197
+ [placeholder]="placeholder"
18198
+ [size]="size"
18199
+ [rounded]="rounded"
18200
+ [fillMode]="fillMode"
18201
+ [disabled]="disabled"
18202
+ [readonly]="readonly"
18203
+ (focus)="handleInputFocus(j, i)"
18204
+ (input)="handleInput($event, j, i)"
18205
+ ></kendo-textbox>
18206
+ </div>
18207
+ <kendo-otpinput-separator *ngIf="showGroupSeparator(i)" [separator]="separator"></kendo-otpinput-separator>
18208
+ </ng-container>
18209
+ </ng-template>
18210
+ <ng-container>
18211
+ `,
18212
+ standalone: true,
18213
+ imports: [SharedInputEventsDirective, TextBoxComponent, OTPInputSeparatorComponent, NgFor, NgIf, LocalizedOTPInputMessagesDirective]
18214
+ }]
18215
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { length: [{
18216
+ type: Input
18217
+ }], type: [{
18218
+ type: Input
18219
+ }], spacing: [{
18220
+ type: Input
18221
+ }], separator: [{
18222
+ type: Input
18223
+ }], disabled: [{
18224
+ type: Input
18225
+ }], readonly: [{
18226
+ type: Input
18227
+ }], placeholder: [{
18228
+ type: Input
18229
+ }], groupLength: [{
18230
+ type: Input
18231
+ }], value: [{
18232
+ type: Input
18233
+ }], size: [{
18234
+ type: Input
18235
+ }], rounded: [{
18236
+ type: Input
18237
+ }], fillMode: [{
18238
+ type: Input
18239
+ }], inputAttributes: [{
18240
+ type: Input
18241
+ }], valueChange: [{
18242
+ type: Output
18243
+ }], inputFinish: [{
18244
+ type: Output
18245
+ }], onFocus: [{
18246
+ type: Output,
18247
+ args: ['focus']
18248
+ }], onBlur: [{
18249
+ type: Output,
18250
+ args: ['blur']
18251
+ }], wrapperClass: [{
18252
+ type: HostBinding,
18253
+ args: ['class.k-otp']
18254
+ }], invalidClass: [{
18255
+ type: HostBinding,
18256
+ args: ['class.k-invalid']
18257
+ }], direction: [{
18258
+ type: HostBinding,
18259
+ args: ['attr.dir']
18260
+ }], role: [{
18261
+ type: HostBinding,
18262
+ args: ['attr.role']
18263
+ }], inputFields: [{
18264
+ type: ViewChildren,
18265
+ args: [TextBoxComponent]
18266
+ }], inputGroups: [{
18267
+ type: ViewChildren,
18268
+ args: ['inputGroup']
18269
+ }] } });
18270
+
18271
+ /**
18272
+ * Custom component messages override default component messages.
18273
+ */
18274
+ class OTPInputCustomMessagesComponent extends OTPInputMessages {
18275
+ service;
18276
+ constructor(service) {
18277
+ super();
18278
+ this.service = service;
18279
+ }
18280
+ get override() {
18281
+ return true;
18282
+ }
18283
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OTPInputCustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
18284
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OTPInputCustomMessagesComponent, isStandalone: true, selector: "kendo-otpinput-messages", providers: [
18285
+ {
18286
+ provide: OTPInputMessages,
18287
+ useExisting: forwardRef(() => OTPInputCustomMessagesComponent)
18288
+ }
18289
+ ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });
18290
+ }
18291
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OTPInputCustomMessagesComponent, decorators: [{
18292
+ type: Component,
18293
+ args: [{
18294
+ providers: [
18295
+ {
18296
+ provide: OTPInputMessages,
18297
+ useExisting: forwardRef(() => OTPInputCustomMessagesComponent)
18298
+ }
18299
+ ],
18300
+ selector: 'kendo-otpinput-messages',
18301
+ template: ``,
18302
+ standalone: true
18303
+ }]
18304
+ }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });
18305
+
18306
+ /**
18307
+ * Utility array that contains all `TextBox` related components and directives
18308
+ */
18309
+ const KENDO_TEXTBOX = [
18310
+ TextBoxDirective,
18311
+ TextBoxComponent,
18312
+ InputSeparatorComponent,
18313
+ TextBoxSuffixTemplateDirective,
18314
+ TextBoxPrefixTemplateDirective,
18315
+ TextBoxCustomMessagesComponent,
18316
+ PrefixTemplateDirective,
18317
+ SuffixTemplateDirective,
18318
+ SeparatorComponent
18319
+ ];
18320
+ /**
18321
+ * Utility array that contains all `NumericTextBox` related components and directives
18322
+ */
18323
+ const KENDO_NUMERICTEXTBOX = [
18324
+ NumericTextBoxComponent,
18325
+ NumericTextBoxCustomMessagesComponent,
18326
+ PrefixTemplateDirective,
18327
+ SuffixTemplateDirective,
18328
+ SeparatorComponent
18329
+ ];
18330
+ /**
18331
+ * Utility array that contains all `MaskedTextBox` related components and directives
18332
+ */
18333
+ const KENDO_MASKEDTEXTBOX = [
18334
+ MaskedTextBoxComponent,
18335
+ PrefixTemplateDirective,
18336
+ SuffixTemplateDirective,
18337
+ SeparatorComponent
18338
+ ];
18339
+ /**
18340
+ * Utility array that contains all `OTP` related components and directives
18341
+ */
18342
+ const KENDO_OTPINPUT = [
18343
+ OTPInputComponent,
18344
+ OTPInputCustomMessagesComponent
17281
18345
  ];
17282
18346
  /**
17283
18347
  * Utility array that contains all `TextArea` related components and directives
@@ -17398,6 +18462,7 @@ const KENDO_INPUTS = [
17398
18462
  ...KENDO_FLATCOLORPICKER,
17399
18463
  ...KENDO_COLORGRADIENT,
17400
18464
  ...KENDO_COLORPALETTE,
18465
+ ...KENDO_OTPINPUT
17401
18466
  ];
17402
18467
 
17403
18468
  //IMPORTANT: NgModule export kept for backwards compatibility
@@ -17435,8 +18500,8 @@ const KENDO_INPUTS = [
17435
18500
  */
17436
18501
  class InputsModule {
17437
18502
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InputsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
17438
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: InputsModule, imports: [TextBoxDirective, TextBoxComponent, InputSeparatorComponent, TextBoxSuffixTemplateDirective, TextBoxPrefixTemplateDirective, TextBoxCustomMessagesComponent, i7.PrefixTemplateDirective, i7.SuffixTemplateDirective, i7.SeparatorComponent, NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent, i7.PrefixTemplateDirective, i7.SuffixTemplateDirective, i7.SeparatorComponent, MaskedTextBoxComponent, i7.PrefixTemplateDirective, i7.SuffixTemplateDirective, i7.SeparatorComponent, TextAreaComponent, TextAreaDirective, TextAreaPrefixComponent, TextAreaSuffixComponent, i7.SeparatorComponent, CheckBoxComponent, CheckBoxDirective, RadioButtonComponent, RadioButtonDirective, SwitchComponent, SwitchCustomMessagesComponent, FormFieldComponent, HintComponent, ErrorComponent, SliderComponent, SliderCustomMessagesComponent, LabelTemplateDirective, RangeSliderComponent, RangeSliderCustomMessagesComponent, LabelTemplateDirective, RatingComponent, RatingItemTemplateDirective, RatingHoveredItemTemplateDirective, RatingSelectedItemTemplateDirective, SignatureComponent, SignatureCustomMessagesComponent, ColorPickerComponent, ColorPickerCustomMessagesComponent, FlatColorPickerComponent, ColorPickerCustomMessagesComponent, ColorGradientComponent, ColorPickerCustomMessagesComponent, ColorPaletteComponent, ColorPickerCustomMessagesComponent, i7.PrefixTemplateDirective, i7.SuffixTemplateDirective, i7.SeparatorComponent], exports: [TextBoxDirective, TextBoxComponent, InputSeparatorComponent, TextBoxSuffixTemplateDirective, TextBoxPrefixTemplateDirective, TextBoxCustomMessagesComponent, i7.PrefixTemplateDirective, i7.SuffixTemplateDirective, i7.SeparatorComponent, NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent, i7.PrefixTemplateDirective, i7.SuffixTemplateDirective, i7.SeparatorComponent, MaskedTextBoxComponent, i7.PrefixTemplateDirective, i7.SuffixTemplateDirective, i7.SeparatorComponent, TextAreaComponent, TextAreaDirective, TextAreaPrefixComponent, TextAreaSuffixComponent, i7.SeparatorComponent, CheckBoxComponent, CheckBoxDirective, RadioButtonComponent, RadioButtonDirective, SwitchComponent, SwitchCustomMessagesComponent, FormFieldComponent, HintComponent, ErrorComponent, SliderComponent, SliderCustomMessagesComponent, LabelTemplateDirective, RangeSliderComponent, RangeSliderCustomMessagesComponent, LabelTemplateDirective, RatingComponent, RatingItemTemplateDirective, RatingHoveredItemTemplateDirective, RatingSelectedItemTemplateDirective, SignatureComponent, SignatureCustomMessagesComponent, ColorPickerComponent, ColorPickerCustomMessagesComponent, FlatColorPickerComponent, ColorPickerCustomMessagesComponent, ColorGradientComponent, ColorPickerCustomMessagesComponent, ColorPaletteComponent, ColorPickerCustomMessagesComponent, i7.PrefixTemplateDirective, i7.SuffixTemplateDirective, i7.SeparatorComponent] });
17439
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InputsModule, providers: [IconsService, PopupService, ResizeBatchService, DialogContainerService, DialogService, WindowService, WindowContainerService], imports: [TextBoxComponent, i7.SeparatorComponent, NumericTextBoxComponent, i7.SeparatorComponent, i7.SeparatorComponent, i7.SeparatorComponent, SliderComponent, RangeSliderComponent, RatingComponent, SignatureComponent, ColorPickerComponent, FlatColorPickerComponent, ColorGradientComponent, i7.SeparatorComponent] });
18503
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: InputsModule, imports: [TextBoxDirective, TextBoxComponent, InputSeparatorComponent, TextBoxSuffixTemplateDirective, TextBoxPrefixTemplateDirective, TextBoxCustomMessagesComponent, i7.PrefixTemplateDirective, i7.SuffixTemplateDirective, i7.SeparatorComponent, NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent, i7.PrefixTemplateDirective, i7.SuffixTemplateDirective, i7.SeparatorComponent, MaskedTextBoxComponent, i7.PrefixTemplateDirective, i7.SuffixTemplateDirective, i7.SeparatorComponent, TextAreaComponent, TextAreaDirective, TextAreaPrefixComponent, TextAreaSuffixComponent, i7.SeparatorComponent, CheckBoxComponent, CheckBoxDirective, RadioButtonComponent, RadioButtonDirective, SwitchComponent, SwitchCustomMessagesComponent, FormFieldComponent, HintComponent, ErrorComponent, SliderComponent, SliderCustomMessagesComponent, LabelTemplateDirective, RangeSliderComponent, RangeSliderCustomMessagesComponent, LabelTemplateDirective, RatingComponent, RatingItemTemplateDirective, RatingHoveredItemTemplateDirective, RatingSelectedItemTemplateDirective, SignatureComponent, SignatureCustomMessagesComponent, ColorPickerComponent, ColorPickerCustomMessagesComponent, FlatColorPickerComponent, ColorPickerCustomMessagesComponent, ColorGradientComponent, ColorPickerCustomMessagesComponent, ColorPaletteComponent, ColorPickerCustomMessagesComponent, OTPInputComponent, OTPInputCustomMessagesComponent, i7.PrefixTemplateDirective, i7.SuffixTemplateDirective, i7.SeparatorComponent], exports: [TextBoxDirective, TextBoxComponent, InputSeparatorComponent, TextBoxSuffixTemplateDirective, TextBoxPrefixTemplateDirective, TextBoxCustomMessagesComponent, i7.PrefixTemplateDirective, i7.SuffixTemplateDirective, i7.SeparatorComponent, NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent, i7.PrefixTemplateDirective, i7.SuffixTemplateDirective, i7.SeparatorComponent, MaskedTextBoxComponent, i7.PrefixTemplateDirective, i7.SuffixTemplateDirective, i7.SeparatorComponent, TextAreaComponent, TextAreaDirective, TextAreaPrefixComponent, TextAreaSuffixComponent, i7.SeparatorComponent, CheckBoxComponent, CheckBoxDirective, RadioButtonComponent, RadioButtonDirective, SwitchComponent, SwitchCustomMessagesComponent, FormFieldComponent, HintComponent, ErrorComponent, SliderComponent, SliderCustomMessagesComponent, LabelTemplateDirective, RangeSliderComponent, RangeSliderCustomMessagesComponent, LabelTemplateDirective, RatingComponent, RatingItemTemplateDirective, RatingHoveredItemTemplateDirective, RatingSelectedItemTemplateDirective, SignatureComponent, SignatureCustomMessagesComponent, ColorPickerComponent, ColorPickerCustomMessagesComponent, FlatColorPickerComponent, ColorPickerCustomMessagesComponent, ColorGradientComponent, ColorPickerCustomMessagesComponent, ColorPaletteComponent, ColorPickerCustomMessagesComponent, OTPInputComponent, OTPInputCustomMessagesComponent, i7.PrefixTemplateDirective, i7.SuffixTemplateDirective, i7.SeparatorComponent] });
18504
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InputsModule, providers: [IconsService, PopupService, ResizeBatchService, DialogContainerService, DialogService, WindowService, WindowContainerService], imports: [TextBoxComponent, i7.SeparatorComponent, NumericTextBoxComponent, i7.SeparatorComponent, i7.SeparatorComponent, i7.SeparatorComponent, SliderComponent, RangeSliderComponent, RatingComponent, SignatureComponent, ColorPickerComponent, FlatColorPickerComponent, ColorGradientComponent, OTPInputComponent, i7.SeparatorComponent] });
17440
18505
  }
17441
18506
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InputsModule, decorators: [{
17442
18507
  type: NgModule,
@@ -18039,5 +19104,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
18039
19104
  * Generated bundle index. Do not edit.
18040
19105
  */
18041
19106
 
18042
- export { ActiveColorClickEvent, CheckBoxComponent, CheckBoxDirective, CheckBoxModule, ColorGradientComponent, ColorPaletteComponent, ColorPickerCancelEvent, ColorPickerCloseEvent, ColorPickerComponent, ColorPickerCustomMessagesComponent, ColorPickerModule, ColorPickerOpenEvent, ErrorComponent, FlatColorPickerComponent, FormFieldComponent, FormFieldModule, HintComponent, InputSeparatorComponent, InputsModule, KENDO_CHECKBOX, KENDO_COLORGRADIENT, KENDO_COLORPALETTE, KENDO_COLORPICKER, KENDO_FLATCOLORPICKER, KENDO_FORMFIELD, KENDO_INPUTS, KENDO_MASKEDTEXTBOX, KENDO_NUMERICTEXTBOX, KENDO_RADIOBUTTON, KENDO_RANGESLIDER, KENDO_RATING, KENDO_SIGNATURE, KENDO_SLIDER, KENDO_SWITCH, KENDO_TEXTAREA, KENDO_TEXTBOX, LabelTemplateDirective, LocalizedColorPickerMessagesDirective, LocalizedNumericTextBoxMessagesDirective, LocalizedRangeSliderMessagesDirective, LocalizedSignatureMessagesDirective, LocalizedSliderMessagesDirective, LocalizedSwitchMessagesDirective, LocalizedTextBoxMessagesDirective, MaskedTextBoxComponent, MaskedTextBoxModule, MaskingService, NumericLabelDirective, NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent, NumericTextBoxModule, RadioButtonComponent, RadioButtonDirective, RadioButtonModule, RangeSliderComponent, RangeSliderCustomMessagesComponent, RangeSliderModule, RatingComponent, RatingHoveredItemTemplateDirective, RatingItemTemplateDirective, RatingModule, RatingSelectedItemTemplateDirective, SignatureCloseEvent, SignatureComponent, SignatureCustomMessagesComponent, SignatureMessages, SignatureModule, SignatureOpenEvent, SliderComponent, SliderCustomMessagesComponent, SliderModule, SliderTicksComponent, SwitchBlurEvent, SwitchComponent, SwitchCustomMessagesComponent, SwitchFocusEvent, SwitchModule, TextAreaComponent, TextAreaDirective, TextAreaModule, TextAreaPrefixComponent, TextAreaSuffixComponent, TextBoxComponent, TextBoxCustomMessagesComponent, TextBoxDirective, TextBoxModule, TextBoxPrefixTemplateDirective, TextBoxSuffixTemplateDirective };
19107
+ export { ActiveColorClickEvent, CheckBoxComponent, CheckBoxDirective, CheckBoxModule, ColorGradientComponent, ColorPaletteComponent, ColorPickerCancelEvent, ColorPickerCloseEvent, ColorPickerComponent, ColorPickerCustomMessagesComponent, ColorPickerModule, ColorPickerOpenEvent, ErrorComponent, FlatColorPickerComponent, FormFieldComponent, FormFieldModule, HintComponent, InputSeparatorComponent, InputsModule, KENDO_CHECKBOX, KENDO_COLORGRADIENT, KENDO_COLORPALETTE, KENDO_COLORPICKER, KENDO_FLATCOLORPICKER, KENDO_FORMFIELD, KENDO_INPUTS, KENDO_MASKEDTEXTBOX, KENDO_NUMERICTEXTBOX, KENDO_OTPINPUT, KENDO_RADIOBUTTON, KENDO_RANGESLIDER, KENDO_RATING, KENDO_SIGNATURE, KENDO_SLIDER, KENDO_SWITCH, KENDO_TEXTAREA, KENDO_TEXTBOX, LabelTemplateDirective, LocalizedColorPickerMessagesDirective, LocalizedNumericTextBoxMessagesDirective, LocalizedRangeSliderMessagesDirective, LocalizedSignatureMessagesDirective, LocalizedSliderMessagesDirective, LocalizedSwitchMessagesDirective, LocalizedTextBoxMessagesDirective, MaskedTextBoxComponent, MaskedTextBoxModule, MaskingService, NumericLabelDirective, NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent, NumericTextBoxModule, OTPInputComponent, OTPInputCustomMessagesComponent, RadioButtonComponent, RadioButtonDirective, RadioButtonModule, RangeSliderComponent, RangeSliderCustomMessagesComponent, RangeSliderModule, RatingComponent, RatingHoveredItemTemplateDirective, RatingItemTemplateDirective, RatingModule, RatingSelectedItemTemplateDirective, SignatureCloseEvent, SignatureComponent, SignatureCustomMessagesComponent, SignatureMessages, SignatureModule, SignatureOpenEvent, SliderComponent, SliderCustomMessagesComponent, SliderModule, SliderTicksComponent, SwitchBlurEvent, SwitchComponent, SwitchCustomMessagesComponent, SwitchFocusEvent, SwitchModule, TextAreaComponent, TextAreaDirective, TextAreaModule, TextAreaPrefixComponent, TextAreaSuffixComponent, TextBoxComponent, TextBoxCustomMessagesComponent, TextBoxDirective, TextBoxModule, TextBoxPrefixTemplateDirective, TextBoxSuffixTemplateDirective };
18043
19108