@progress/kendo-angular-dropdowns 25.1.0-develop.14 → 25.1.0-develop.16

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.
@@ -3,20 +3,20 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import * as i0 from '@angular/core';
6
- import { EventEmitter, Output, HostBinding, Input, Component, Directive, Injectable, HostListener, afterNextRender, ViewChild, ViewChildren, forwardRef, isDevMode, ViewContainerRef, ContentChild, ContentChildren, signal, ChangeDetectionStrategy, NgModule } from '@angular/core';
6
+ import { EventEmitter, Output, HostBinding, Input, Component, Directive, Injectable, HostListener, afterNextRender, ViewChild, ViewChildren, signal, forwardRef, isDevMode, ViewContainerRef, ContentChild, ChangeDetectionStrategy, runInInjectionContext, ContentChildren, NgModule } from '@angular/core';
7
7
  import * as i10 from '@progress/kendo-angular-common';
8
8
  import { isDocumentAvailable, isObjectPresent, removeHTMLAttributes, parseAttributes, isSafari, normalizeKeys, Keys, setHTMLAttributes, replaceMessagePlaceholder, isChanged, TemplateContextDirective, ResizeSensorComponent, closest as closest$1, hasFocusableParent, parseCSSClassNames, isControlRequired, guid, hasObservers, SeparatorComponent, SuffixTemplateDirective, PrefixTemplateDirective, KendoInput, KENDO_WEBMCP_HOST, provideComponentName, MultiTabStop, anyChanged, EventsOutsideAngularDirective, scrollbarWidth, ToggleButtonTabStopDirective, ResizeBatchService, KENDO_ADORNMENTS, KENDO_TOGGLEBUTTONTABSTOP } from '@progress/kendo-angular-common';
9
9
  export { PrefixTemplateDirective, SeparatorComponent, SuffixTemplateDirective, ToggleButtonTabStopDirective } from '@progress/kendo-angular-common';
10
10
  import * as i7 from '@progress/kendo-angular-utils';
11
11
  import { AdaptiveService } from '@progress/kendo-angular-utils';
12
12
  import * as i8 from '@angular/forms';
13
- import { NgControl, NG_VALUE_ACCESSOR, ReactiveFormsModule, FormsModule } from '@angular/forms';
13
+ import { NgControl, NG_VALUE_ACCESSOR, TouchedChangeEvent, ReactiveFormsModule, FormsModule } from '@angular/forms';
14
14
  import { validatePackage } from '@progress/kendo-licensing';
15
15
  import { getter as getter$1, touchEnabled, pointers } from '@progress/kendo-common';
16
16
  import * as i1 from '@progress/kendo-angular-l10n';
17
17
  import { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';
18
18
  import { Subscription, merge, fromEvent, Subject, of, interval } from 'rxjs';
19
- import { map, switchMap, take, auditTime, tap, filter, partition, throttleTime, catchError, skipWhile, concatMap, takeUntil, debounceTime } from 'rxjs/operators';
19
+ import { map, auditTime, tap, take, filter, partition, throttleTime, catchError, skipWhile, concatMap, takeUntil, debounceTime } from 'rxjs/operators';
20
20
  import * as i2 from '@progress/kendo-angular-popup';
21
21
  import { PopupService } from '@progress/kendo-angular-popup';
22
22
  import { NgStyle, NgClass, NgTemplateOutlet } from '@angular/common';
@@ -37,8 +37,8 @@ const packageMetadata = {
37
37
  productName: 'Kendo UI for Angular',
38
38
  productCode: 'KENDOUIANGULAR',
39
39
  productCodes: ['KENDOUIANGULAR'],
40
- publishDate: 1787752554,
41
- version: '25.1.0-develop.14',
40
+ publishDate: 1787916681,
41
+ version: '25.1.0-develop.16',
42
42
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
43
43
  };
44
44
 
@@ -403,7 +403,7 @@ const isTruthy = (value) => !!value;
403
403
  * @hidden
404
404
  */
405
405
  const setListBoxAriaLabelledBy = (optionsList, element, renderer) => {
406
- const listBox = optionsList.wrapper.nativeElement.querySelector('kendo-list ul');
406
+ const listBox = optionsList?.wrapper.nativeElement.querySelector('kendo-list ul');
407
407
  const ariaLabel = element.nativeElement.getAttribute('aria-labelledby') || element.nativeElement.getAttribute('data-kendo-label-id');
408
408
  if (ariaLabel) {
409
409
  renderer.setAttribute(listBox, 'aria-labelledby', ariaLabel);
@@ -2059,11 +2059,10 @@ class ListComponent {
2059
2059
  this.renderer = renderer;
2060
2060
  this.localization = localization;
2061
2061
  this.injector = injector;
2062
- this.selectSubscription = merge(this.selectionService.onSelect.pipe(map((args) => args.indices[0])), this.selectionService.onFocus)
2063
- .pipe(
2064
- // handle only the very last onSelect/onFocus emission
2065
- switchMap(event => this.zone.onStable.pipe(take(1), map(() => event))))
2066
- .subscribe(this.scrollToItem.bind(this));
2062
+ this.selectSubscription = merge(this.selectionService.onSelect.pipe(map((args) => args.indices[0])), this.selectionService.onFocus).subscribe((index) => {
2063
+ this.scrollToItem(index);
2064
+ this.cdr.markForCheck();
2065
+ });
2067
2066
  this.prepareClasses();
2068
2067
  this.initSelectAllCheckboxState();
2069
2068
  }
@@ -3523,11 +3522,21 @@ class Messages extends ComponentMessages {
3523
3522
  /**
3524
3523
  * The text displayed in the popup when there are no items.
3525
3524
  */
3526
- noDataText;
3525
+ set noDataText(value) {
3526
+ this._noDataText.set(value);
3527
+ }
3528
+ get noDataText() {
3529
+ return this._noDataText();
3530
+ }
3527
3531
  /**
3528
3532
  * The title of the clear button.
3529
3533
  */
3530
- clearTitle;
3534
+ set clearTitle(value) {
3535
+ this._clearTitle.set(value);
3536
+ }
3537
+ get clearTitle() {
3538
+ return this._clearTitle();
3539
+ }
3531
3540
  /**
3532
3541
  * The text of the Select All item in the popup.
3533
3542
  */
@@ -3535,33 +3544,89 @@ class Messages extends ComponentMessages {
3535
3544
  /**
3536
3545
  * The text of the Check All checkbox label in the tree popup.
3537
3546
  */
3538
- checkAllText;
3547
+ set checkAllText(value) {
3548
+ this._checkAllText.set(value);
3549
+ }
3550
+ get checkAllText() {
3551
+ return this._checkAllText();
3552
+ }
3539
3553
  /**
3540
3554
  * The text set as aria-label on the select button. Available for DropDownList, ComboBox, MultiColumnComboBox, and DropDownTree.
3541
3555
  */
3542
- selectButtonText;
3556
+ set selectButtonText(value) {
3557
+ this._selectButtonText.set(value);
3558
+ }
3559
+ get selectButtonText() {
3560
+ return this._selectButtonText();
3561
+ }
3543
3562
  /**
3544
3563
  * The text set as aria-label on the list filter input. Available for DropDownList, DropDownTree, and MultiSelectTree.
3545
3564
  */
3546
- filterInputLabel;
3565
+ set filterInputLabel(value) {
3566
+ this._filterInputLabel.set(value);
3567
+ }
3568
+ get filterInputLabel() {
3569
+ return this._filterInputLabel();
3570
+ }
3547
3571
  /**
3548
3572
  * The text set as aria-label on the popup containing the list of options when its role is `region`.
3549
3573
  */
3550
- popupLabel;
3574
+ set popupLabel(value) {
3575
+ this._popupLabel.set(value);
3576
+ }
3577
+ get popupLabel() {
3578
+ return this._popupLabel();
3579
+ }
3551
3580
  /**
3552
3581
  * The title of the Close button of the ActionSheet that is rendered instead of the Popup when using small screen devices in adaptive mode.
3553
3582
  */
3554
- adaptiveCloseButtonTitle;
3583
+ set adaptiveCloseButtonTitle(value) {
3584
+ this._adaptiveCloseButtonTitle.set(value);
3585
+ }
3586
+ get adaptiveCloseButtonTitle() {
3587
+ return this._adaptiveCloseButtonTitle();
3588
+ }
3555
3589
  /**
3556
3590
  * The text for the input's placeholder when filtering is enabled. Available for DropDownTree and MultiSelectTree.
3557
3591
  */
3558
- filterInputPlaceholder;
3592
+ set filterInputPlaceholder(value) {
3593
+ this._filterInputPlaceholder.set(value);
3594
+ }
3595
+ get filterInputPlaceholder() {
3596
+ return this._filterInputPlaceholder();
3597
+ }
3598
+ /**
3599
+ * The accessible label of the listbox that contains the list of options. Available for DropDownList, ComboBox, MultiColumnComboBox, AutoComplete, and MultiSelect.
3600
+ */
3601
+ set listboxLabel(value) {
3602
+ this._listboxLabel.set(value);
3603
+ }
3604
+ ;
3605
+ get listboxLabel() {
3606
+ return this._listboxLabel();
3607
+ }
3608
+ /**
3609
+ * The accessible label of the input element. Available for MultiSelectTree.
3610
+ */
3611
+ set inputLabel(value) {
3612
+ this._inputLabel.set(value);
3613
+ }
3614
+ ;
3615
+ get inputLabel() {
3616
+ return this._inputLabel();
3617
+ }
3559
3618
  /**
3560
3619
  * The accessible label of the tag list element that contains the selected items. Available for MultiSelect and MultiSelectTree.
3561
3620
  */
3562
- chipListLabel;
3621
+ set chipListLabel(value) {
3622
+ this._chipListLabel.set(value);
3623
+ }
3624
+ ;
3625
+ get chipListLabel() {
3626
+ return this._chipListLabel();
3627
+ }
3563
3628
  /**
3564
- * The text displayed when the user types a custom value that is not in the list of options. Available for ComboBox and MultiSelect.
3629
+ * The text displayed when the user types a custom value that is not in the list of options. Available for ComboBox and MultiSelect.
3565
3630
  *
3566
3631
  * The text includes a localizable string and the custom value.
3567
3632
  * For example, when adding a custom value **Test**, the default text is **Use "Test"**.
@@ -3569,17 +3634,26 @@ class Messages extends ComponentMessages {
3569
3634
  * You can reorder the custom value and the localizable part by using a placeholder in `useCustomValueText`.
3570
3635
  * Use `{customValue}` to insert the value, for example, **Add: {customValue}**.
3571
3636
  */
3572
- useCustomValueText;
3573
- /**
3574
- * The accessible label of the listbox that contains the list of options. Available for DropDownList, ComboBox, MultiColumnComboBox, AutoComplete, and MultiSelect.
3575
- */
3576
- listboxLabel;
3577
- /**
3578
- * The accessible label of the input element. Available for MultiSelectTree.
3579
- */
3580
- inputLabel;
3637
+ set useCustomValueText(value) {
3638
+ this._useCustomValueText.set(value);
3639
+ }
3640
+ get useCustomValueText() {
3641
+ return this._useCustomValueText();
3642
+ }
3643
+ _noDataText = signal(undefined, ...(ngDevMode ? [{ debugName: "_noDataText" }] : []));
3644
+ _clearTitle = signal(undefined, ...(ngDevMode ? [{ debugName: "_clearTitle" }] : []));
3645
+ _checkAllText = signal(undefined, ...(ngDevMode ? [{ debugName: "_checkAllText" }] : []));
3646
+ _selectButtonText = signal(undefined, ...(ngDevMode ? [{ debugName: "_selectButtonText" }] : []));
3647
+ _filterInputLabel = signal(undefined, ...(ngDevMode ? [{ debugName: "_filterInputLabel" }] : []));
3648
+ _popupLabel = signal(undefined, ...(ngDevMode ? [{ debugName: "_popupLabel" }] : []));
3649
+ _adaptiveCloseButtonTitle = signal(undefined, ...(ngDevMode ? [{ debugName: "_adaptiveCloseButtonTitle" }] : []));
3650
+ _filterInputPlaceholder = signal(undefined, ...(ngDevMode ? [{ debugName: "_filterInputPlaceholder" }] : []));
3651
+ _useCustomValueText = signal(undefined, ...(ngDevMode ? [{ debugName: "_useCustomValueText" }] : []));
3652
+ _listboxLabel = signal(undefined, ...(ngDevMode ? [{ debugName: "_listboxLabel" }] : []));
3653
+ _inputLabel = signal(undefined, ...(ngDevMode ? [{ debugName: "_inputLabel" }] : []));
3654
+ _chipListLabel = signal(undefined, ...(ngDevMode ? [{ debugName: "_chipListLabel" }] : []));
3581
3655
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
3582
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.27", type: Messages, isStandalone: true, inputs: { noDataText: "noDataText", clearTitle: "clearTitle", selectAllText: "selectAllText", checkAllText: "checkAllText", selectButtonText: "selectButtonText", filterInputLabel: "filterInputLabel", popupLabel: "popupLabel", adaptiveCloseButtonTitle: "adaptiveCloseButtonTitle", filterInputPlaceholder: "filterInputPlaceholder", chipListLabel: "chipListLabel", useCustomValueText: "useCustomValueText", listboxLabel: "listboxLabel", inputLabel: "inputLabel" }, usesInheritance: true, ngImport: i0 });
3656
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.27", type: Messages, isStandalone: true, inputs: { noDataText: "noDataText", clearTitle: "clearTitle", selectAllText: "selectAllText", checkAllText: "checkAllText", selectButtonText: "selectButtonText", filterInputLabel: "filterInputLabel", popupLabel: "popupLabel", adaptiveCloseButtonTitle: "adaptiveCloseButtonTitle", filterInputPlaceholder: "filterInputPlaceholder", listboxLabel: "listboxLabel", inputLabel: "inputLabel", chipListLabel: "chipListLabel", useCustomValueText: "useCustomValueText" }, usesInheritance: true, ngImport: i0 });
3583
3657
  }
3584
3658
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: Messages, decorators: [{
3585
3659
  type: Directive
@@ -3601,14 +3675,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
3601
3675
  type: Input
3602
3676
  }], filterInputPlaceholder: [{
3603
3677
  type: Input
3604
- }], chipListLabel: [{
3605
- type: Input
3606
- }], useCustomValueText: [{
3607
- type: Input
3608
3678
  }], listboxLabel: [{
3609
3679
  type: Input
3610
3680
  }], inputLabel: [{
3611
3681
  type: Input
3682
+ }], chipListLabel: [{
3683
+ type: Input
3684
+ }], useCustomValueText: [{
3685
+ type: Input
3612
3686
  }] } });
3613
3687
 
3614
3688
  /**
@@ -3785,7 +3859,7 @@ class AutoCompleteComponent {
3785
3859
  */
3786
3860
  toggle(open) {
3787
3861
  Promise.resolve(null).then(() => {
3788
- const shouldOpen = isPresent(open) ? open : !this._open;
3862
+ const shouldOpen = isPresent(open) ? open : !this._open();
3789
3863
  this._toggle(shouldOpen);
3790
3864
  });
3791
3865
  }
@@ -3793,7 +3867,7 @@ class AutoCompleteComponent {
3793
3867
  * Returns the current open state. Returns `true` if the popup or actionSheet is open.
3794
3868
  */
3795
3869
  get isOpen() {
3796
- return isTruthy(this._open || this.isActionSheetExpanded);
3870
+ return isTruthy(this._open() || this.isActionSheetExpanded);
3797
3871
  }
3798
3872
  /**
3799
3873
  * @hidden
@@ -3830,18 +3904,21 @@ class AutoCompleteComponent {
3830
3904
  *
3831
3905
  * @default true
3832
3906
  */
3833
- highlightFirst = true;
3907
+ set highlightFirst(value) { this._highlightFirst.set(value); }
3908
+ get highlightFirst() { return this._highlightFirst(); }
3834
3909
  /**
3835
3910
  * Shows or hides the current group sticky header when using grouped data.
3836
3911
  * By default, the sticky header is displayed ([see example](https://www.telerik.com/kendo-angular-ui/components/dropdowns/autocomplete/grouping#sticky-header)).
3837
3912
  *
3838
3913
  * @default true
3839
3914
  */
3840
- showStickyHeader = true;
3915
+ set showStickyHeader(value) { this._showStickyHeader.set(value); }
3916
+ get showStickyHeader() { return this._showStickyHeader(); }
3841
3917
  /**
3842
3918
  * @hidden
3843
3919
  */
3844
- focusableId = `k-${guid()}`;
3920
+ set focusableId(value) { this._focusableId.set(value); }
3921
+ get focusableId() { return this._focusableId(); }
3845
3922
  /**
3846
3923
  * Sets the data of the AutoComplete.
3847
3924
  *
@@ -3875,12 +3952,11 @@ class AutoCompleteComponent {
3875
3952
  */
3876
3953
  set value(newValue) {
3877
3954
  this.verifySettings(newValue);
3878
- this._value = newValue || NO_VALUE;
3955
+ this._value.set(newValue || NO_VALUE);
3879
3956
  this.text = this.value;
3880
- this.cdr.markForCheck();
3881
3957
  }
3882
3958
  get value() {
3883
- return this._value || NO_VALUE;
3959
+ return this._value() || NO_VALUE;
3884
3960
  }
3885
3961
  /**
3886
3962
  * Specifies the `string` property of the data item that represents the item value.
@@ -3888,31 +3964,36 @@ class AutoCompleteComponent {
3888
3964
  *
3889
3965
  * > The `valueField` property can be set to point to a nested property value - e.g. `category.name`.
3890
3966
  */
3891
- valueField;
3967
+ set valueField(value) { this._valueField.set(value); }
3968
+ get valueField() { return this._valueField(); }
3892
3969
  /**
3893
3970
  * Sets the placeholder of the AutoComplete.
3894
3971
  *
3895
3972
  * @default ""
3896
3973
  */
3897
- placeholder = "";
3974
+ set placeholder(value) { this._placeholder.set(value); }
3975
+ get placeholder() { return this._placeholder(); }
3898
3976
  /**
3899
3977
  * Enables or disables the adaptive mode. By default, the adaptive rendering is disabled.
3900
3978
  *
3901
3979
  * @default 'none'
3902
3980
  */
3903
- adaptiveMode = 'none';
3981
+ set adaptiveMode(value) { this._adaptiveMode.set(value); }
3982
+ get adaptiveMode() { return this._adaptiveMode(); }
3904
3983
  /**
3905
3984
  * Sets the title of the ActionSheet that renders instead of the Popup when using small screen devices.
3906
3985
  * By default, the ActionSheet title uses the text provided for the label of the AutoComplete.
3907
3986
  *
3908
3987
  * @default ''
3909
3988
  */
3910
- adaptiveTitle = '';
3989
+ set adaptiveTitle(value) { this._adaptiveTitle.set(value); }
3990
+ get adaptiveTitle() { return this._adaptiveTitle(); }
3911
3991
  /**
3912
3992
  * Sets the subtitle of the ActionSheet that renders instead of the Popup when using small screen devices.
3913
3993
  * By default, the ActionSheet does not render a subtitle.
3914
3994
  */
3915
- adaptiveSubtitle;
3995
+ set adaptiveSubtitle(value) { this._adaptiveSubtitle.set(value); }
3996
+ get adaptiveSubtitle() { return this._adaptiveSubtitle(); }
3916
3997
  /**
3917
3998
  * @hidden
3918
3999
  */
@@ -3930,10 +4011,10 @@ class AutoCompleteComponent {
3930
4011
  * - `appendTo: "root" | "component" | ViewContainerRef`—Specifies the component to which the popup will be appended.
3931
4012
  */
3932
4013
  set popupSettings(settings) {
3933
- this._popupSettings = Object.assign({ animate: true }, settings);
4014
+ this._popupSettings.set(Object.assign({ animate: true }, settings));
3934
4015
  }
3935
4016
  get popupSettings() {
3936
- return this._popupSettings;
4017
+ return this._popupSettings();
3937
4018
  }
3938
4019
  /**
3939
4020
  * Sets the height of the options list in the popup. By default, `listHeight` is 200px.
@@ -3945,21 +4026,21 @@ class AutoCompleteComponent {
3945
4026
  * @default 200
3946
4027
  */
3947
4028
  set listHeight(_listHeight) {
3948
- this._listHeight = _listHeight;
4029
+ this._listHeight.set(_listHeight);
3949
4030
  }
3950
4031
  get listHeight() {
3951
4032
  if (this.isAdaptive) {
3952
4033
  return;
3953
4034
  }
3954
- return this._listHeight;
4035
+ return this._listHeight();
3955
4036
  }
3956
- _listHeight = 200;
3957
4037
  /**
3958
4038
  * Sets and gets the loading state of the AutoComplete.
3959
4039
  *
3960
4040
  * @default false
3961
4041
  */
3962
- loading;
4042
+ set loading(value) { this._loading.set(value); }
4043
+ get loading() { return this._loading(); }
3963
4044
  /**
3964
4045
  * @hidden
3965
4046
  *
@@ -3968,19 +4049,22 @@ class AutoCompleteComponent {
3968
4049
  *
3969
4050
  * @default true
3970
4051
  */
3971
- clearButton = true;
4052
+ set clearButton(value) { this._clearButton.set(value); }
4053
+ get clearButton() { return this._clearButton(); }
3972
4054
  /**
3973
4055
  * Enables the auto-completion of the text based on the first data item.
3974
4056
  *
3975
4057
  * @default false
3976
4058
  */
3977
- suggest;
4059
+ set suggest(value) { this._suggest.set(value); }
4060
+ get suggest() { return this._suggest(); }
3978
4061
  /**
3979
4062
  * Sets the disabled state of the component. To learn how to disable the component in reactive forms, refer to the article on [Forms Support](https://www.telerik.com/kendo-angular-ui/components/dropdowns/autocomplete/forms#managing-the-autocomplete-disabled-state-in-reactive-forms).
3980
4063
  *
3981
4064
  * @default false
3982
4065
  */
3983
- disabled = false;
4066
+ set disabled(value) { this._disabled.set(value); }
4067
+ get disabled() { return this._disabled(); }
3984
4068
  /**
3985
4069
  * Defines a Boolean function that is executed for each data item in the component
3986
4070
  * ([see examples](https://www.telerik.com/kendo-angular-ui/components/dropdowns/autocomplete/disabled-items)).
@@ -3997,13 +4081,15 @@ class AutoCompleteComponent {
3997
4081
  *
3998
4082
  * @default false
3999
4083
  */
4000
- readonly = false;
4084
+ set readonly(value) { this._readonly.set(value); }
4085
+ get readonly() { return this._readonly(); }
4001
4086
  /**
4002
4087
  * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.
4003
4088
  *
4004
4089
  * @default 0
4005
4090
  */
4006
- tabindex = 0;
4091
+ set tabindex(value) { this._tabindex.set(value); }
4092
+ get tabindex() { return this._tabindex(); }
4007
4093
  /**
4008
4094
  * @hidden
4009
4095
  */
@@ -4019,17 +4105,18 @@ class AutoCompleteComponent {
4019
4105
  *
4020
4106
  * @default false
4021
4107
  */
4022
- filterable = false;
4108
+ set filterable(value) { this._filterable.set(value); }
4109
+ get filterable() { return this._filterable(); }
4023
4110
  /**
4024
4111
  * Enables the [virtualization](https://www.telerik.com/kendo-angular-ui/components/dropdowns/autocomplete/virtualization) functionality.
4025
4112
  *
4026
4113
  * @default false
4027
4114
  */
4028
4115
  set virtual(settings) {
4029
- this._virtualSettings = normalizeVirtualizationSettings(settings);
4116
+ this._virtualSettings.set(normalizeVirtualizationSettings(settings));
4030
4117
  }
4031
4118
  get virtual() {
4032
- return this._virtualSettings;
4119
+ return this._virtualSettings();
4033
4120
  }
4034
4121
  /**
4035
4122
  * Sets the size of the component. The default value is set by the Kendo theme.
@@ -4039,10 +4126,10 @@ class AutoCompleteComponent {
4039
4126
  if (size) {
4040
4127
  this.renderer.addClass(this.wrapper, getSizeClass('input', size));
4041
4128
  }
4042
- this._size = size;
4129
+ this._size.set(size);
4043
4130
  }
4044
4131
  get size() {
4045
- return this._size;
4132
+ return this._size();
4046
4133
  }
4047
4134
  /**
4048
4135
  * Sets the border radius of the component. The default value is set by the Kendo theme.
@@ -4052,10 +4139,10 @@ class AutoCompleteComponent {
4052
4139
  if (rounded) {
4053
4140
  this.renderer.addClass(this.wrapper, getRoundedClass(rounded));
4054
4141
  }
4055
- this._rounded = rounded;
4142
+ this._rounded.set(rounded);
4056
4143
  }
4057
4144
  get rounded() {
4058
- return this._rounded;
4145
+ return this._rounded();
4059
4146
  }
4060
4147
  /**
4061
4148
  * Sets the fillMode of the component. The default value is set by the Kendo theme.
@@ -4065,10 +4152,10 @@ class AutoCompleteComponent {
4065
4152
  if (fillMode) {
4066
4153
  this.renderer.addClass(this.wrapper, getFillModeClass('input', fillMode));
4067
4154
  }
4068
- this._fillMode = fillMode;
4155
+ this._fillMode.set(fillMode);
4069
4156
  }
4070
4157
  get fillMode() {
4071
- return this._fillMode;
4158
+ return this._fillMode();
4072
4159
  }
4073
4160
  /**
4074
4161
  * Sets the HTML attributes of the inner focusable input element. Attributes which are essential for certain component functionalities cannot be changed.
@@ -4076,7 +4163,8 @@ class AutoCompleteComponent {
4076
4163
  * @remarks
4077
4164
  * This property is related to accessibility.
4078
4165
  */
4079
- inputAttributes;
4166
+ set inputAttributes(value) { this._inputAttributes.set(value); }
4167
+ get inputAttributes() { return this._inputAttributes(); }
4080
4168
  /**
4081
4169
  * Fires each time the value changes—
4082
4170
  * when the component is blurred or the value is cleared through the **Clear** button
@@ -4160,7 +4248,8 @@ class AutoCompleteComponent {
4160
4248
  get dir() {
4161
4249
  return this.direction;
4162
4250
  }
4163
- text;
4251
+ get text() { return this._text(); }
4252
+ set text(value) { this._text.set(value); }
4164
4253
  listBoxId = `k-${guid()}`;
4165
4254
  optionPrefix = `k-${guid()}`;
4166
4255
  popupRef;
@@ -4225,6 +4314,14 @@ class AutoCompleteComponent {
4225
4314
  ngAfterViewInit() {
4226
4315
  this.windowSize = this.adaptiveService.size;
4227
4316
  this.cdr.detectChanges();
4317
+ const control = this.formControl;
4318
+ if (control && control.events) {
4319
+ this.subs.add(control.events.subscribe(e => {
4320
+ if (e instanceof TouchedChangeEvent) {
4321
+ this.cdr.markForCheck();
4322
+ }
4323
+ }));
4324
+ }
4228
4325
  }
4229
4326
  ngOnDestroy() {
4230
4327
  this.destroyPopup();
@@ -4288,7 +4385,6 @@ class AutoCompleteComponent {
4288
4385
  * @hidden
4289
4386
  */
4290
4387
  setDisabledState(isDisabled) {
4291
- this.cdr.markForCheck();
4292
4388
  this.disabled = isDisabled;
4293
4389
  }
4294
4390
  /**
@@ -4332,7 +4428,7 @@ class AutoCompleteComponent {
4332
4428
  this.windowSize = currentWindowSize;
4333
4429
  this.cdr.detectChanges();
4334
4430
  }
4335
- if (this._open && !this.isActionSheetExpanded) {
4431
+ if (this._open() && !this.isActionSheetExpanded) {
4336
4432
  const popupWrapper = this.popupRef.popupElement;
4337
4433
  const { min, max } = this.width;
4338
4434
  popupWrapper.style.minWidth = min;
@@ -4373,6 +4469,7 @@ class AutoCompleteComponent {
4373
4469
  return;
4374
4470
  }
4375
4471
  this.selectionService.focus(index);
4472
+ this.cdr.markForCheck();
4376
4473
  }
4377
4474
  /**
4378
4475
  * @hidden
@@ -4548,10 +4645,11 @@ class AutoCompleteComponent {
4548
4645
  this.valueChangeSubject.next(value);
4549
4646
  }
4550
4647
  popupMouseDownHandler = (event) => event.preventDefault();
4551
- _popupSettings = { animate: true };
4552
- _virtualSettings;
4553
- _open = false;
4554
- _value = "";
4648
+ _popupSettings = signal({ animate: true }, ...(ngDevMode ? [{ debugName: "_popupSettings" }] : []));
4649
+ _listHeight = signal(200, ...(ngDevMode ? [{ debugName: "_listHeight" }] : []));
4650
+ _virtualSettings = signal(undefined, ...(ngDevMode ? [{ debugName: "_virtualSettings" }] : []));
4651
+ _open = signal(false, ...(ngDevMode ? [{ debugName: "_open" }] : []));
4652
+ _value = signal("", ...(ngDevMode ? [{ debugName: "_value" }] : []));
4555
4653
  suggestedText;
4556
4654
  backspacePressed;
4557
4655
  subs = new Subscription();
@@ -4560,9 +4658,26 @@ class AutoCompleteComponent {
4560
4658
  wrapper;
4561
4659
  _isFocused = false;
4562
4660
  direction;
4563
- _size = undefined;
4564
- _rounded = undefined;
4565
- _fillMode = undefined;
4661
+ _size = signal(undefined, ...(ngDevMode ? [{ debugName: "_size" }] : []));
4662
+ _rounded = signal(undefined, ...(ngDevMode ? [{ debugName: "_rounded" }] : []));
4663
+ _fillMode = signal(undefined, ...(ngDevMode ? [{ debugName: "_fillMode" }] : []));
4664
+ _highlightFirst = signal(true, ...(ngDevMode ? [{ debugName: "_highlightFirst" }] : []));
4665
+ _text = signal(undefined, ...(ngDevMode ? [{ debugName: "_text" }] : []));
4666
+ _showStickyHeader = signal(true, ...(ngDevMode ? [{ debugName: "_showStickyHeader" }] : []));
4667
+ _focusableId = signal(`k-${guid()}`, ...(ngDevMode ? [{ debugName: "_focusableId" }] : []));
4668
+ _valueField = signal(undefined, ...(ngDevMode ? [{ debugName: "_valueField" }] : []));
4669
+ _placeholder = signal("", ...(ngDevMode ? [{ debugName: "_placeholder" }] : []));
4670
+ _adaptiveMode = signal('none', ...(ngDevMode ? [{ debugName: "_adaptiveMode" }] : []));
4671
+ _adaptiveTitle = signal('', ...(ngDevMode ? [{ debugName: "_adaptiveTitle" }] : []));
4672
+ _adaptiveSubtitle = signal(undefined, ...(ngDevMode ? [{ debugName: "_adaptiveSubtitle" }] : []));
4673
+ _loading = signal(undefined, ...(ngDevMode ? [{ debugName: "_loading" }] : []));
4674
+ _clearButton = signal(true, ...(ngDevMode ? [{ debugName: "_clearButton" }] : []));
4675
+ _suggest = signal(undefined, ...(ngDevMode ? [{ debugName: "_suggest" }] : []));
4676
+ _disabled = signal(false, ...(ngDevMode ? [{ debugName: "_disabled" }] : []));
4677
+ _readonly = signal(false, ...(ngDevMode ? [{ debugName: "_readonly" }] : []));
4678
+ _tabindex = signal(0, ...(ngDevMode ? [{ debugName: "_tabindex" }] : []));
4679
+ _filterable = signal(false, ...(ngDevMode ? [{ debugName: "_filterable" }] : []));
4680
+ _inputAttributes = signal(undefined, ...(ngDevMode ? [{ debugName: "_inputAttributes" }] : []));
4566
4681
  subscribeEvents() {
4567
4682
  if (!isDocumentAvailable()) {
4568
4683
  return;
@@ -4692,13 +4807,13 @@ class AutoCompleteComponent {
4692
4807
  }
4693
4808
  }
4694
4809
  _toggle(open) {
4695
- this._open = open;
4810
+ this._open.set(open);
4696
4811
  this.destroyPopup();
4697
4812
  if (this.isActionSheetExpanded) {
4698
4813
  this.actionSheet.toggle(false);
4699
4814
  this.focus();
4700
4815
  }
4701
- if (this._open) {
4816
+ if (this._open()) {
4702
4817
  this.createPopup();
4703
4818
  }
4704
4819
  }
@@ -4970,11 +5085,13 @@ class AutoCompleteComponent {
4970
5085
  </ng-template>
4971
5086
  }
4972
5087
  </ng-template>
4973
- `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { kind: "directive", type: SharedDropDownEventsDirective, selector: "[kendoDropDownSharedEvents]", inputs: ["hostElement", "clearButtonClicked", "isFocused"], outputs: ["isFocusedChange", "onFocus", "handleBlur"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SeparatorComponent, selector: "kendo-separator", inputs: ["orientation"] }, { kind: "component", type: SearchBarComponent, selector: "input[kendoSearchbar]", inputs: ["tagListId", "readonly", "disabled", "isRequired", "isSuggestable", "hasListAutocomplete", "userInput", "suggestedText", "inputAttributes", "id", "activeDescendant", "tabIndex", "isLoading", "ariaControls", "ariaExpanded", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-adaptive-renderer", inputs: ["title", "subtitle", "showTextInput", "sharedPopupActionSheetTemplate", "text", "placeholder", "searchBarValue", "filterable", "showListContainer"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "component", type: ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "ariaLive", "ariaLabel", "isMultiselect", "isActionSheetExpanded", "showStickyHeader", "rowWidth", "columnsWidths", "customItemTemplate", "text", "allowCustom", "defaultItem", "selectAll", "selectAllText", "isAllSelected", "isPartiallySelected", "data", "size", "rounded"], outputs: ["selectAllClick", "onClick", "pageChange", "listResize", "popupListScroll"] }] });
5088
+ `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { kind: "directive", type: SharedDropDownEventsDirective, selector: "[kendoDropDownSharedEvents]", inputs: ["hostElement", "clearButtonClicked", "isFocused"], outputs: ["isFocusedChange", "onFocus", "handleBlur"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SeparatorComponent, selector: "kendo-separator", inputs: ["orientation"] }, { kind: "component", type: SearchBarComponent, selector: "input[kendoSearchbar]", inputs: ["tagListId", "readonly", "disabled", "isRequired", "isSuggestable", "hasListAutocomplete", "userInput", "suggestedText", "inputAttributes", "id", "activeDescendant", "tabIndex", "isLoading", "ariaControls", "ariaExpanded", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-adaptive-renderer", inputs: ["title", "subtitle", "showTextInput", "sharedPopupActionSheetTemplate", "text", "placeholder", "searchBarValue", "filterable", "showListContainer"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "component", type: ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "ariaLive", "ariaLabel", "isMultiselect", "isActionSheetExpanded", "showStickyHeader", "rowWidth", "columnsWidths", "customItemTemplate", "text", "allowCustom", "defaultItem", "selectAll", "selectAllText", "isAllSelected", "isPartiallySelected", "data", "size", "rounded"], outputs: ["selectAllClick", "onClick", "pageChange", "listResize", "popupListScroll"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4974
5089
  }
4975
5090
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: AutoCompleteComponent, decorators: [{
4976
5091
  type: Component,
4977
5092
  args: [{
5093
+ selector: 'kendo-autocomplete',
5094
+ changeDetection: ChangeDetectionStrategy.OnPush,
4978
5095
  exportAs: 'kendoAutoComplete',
4979
5096
  providers: [
4980
5097
  AUTOCOMPLETE_VALUE_ACCESSOR,
@@ -4998,7 +5115,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
4998
5115
  { provide: KENDO_WEBMCP_HOST, useExisting: forwardRef(() => AutoCompleteComponent) },
4999
5116
  provideComponentName('autocomplete')
5000
5117
  ],
5001
- selector: 'kendo-autocomplete',
5002
5118
  template: `
5003
5119
  <ng-container kendoAutoCompleteLocalizedMessages
5004
5120
  i18n-noDataText="kendo.autocomplete.noDataText|The text displayed in the popup when there are no items"
@@ -5386,18 +5502,21 @@ class ComboBoxComponent extends MultiTabStop {
5386
5502
  /**
5387
5503
  * @hidden
5388
5504
  */
5389
- icon;
5505
+ set icon(value) { this._icon.set(value); }
5506
+ get icon() { return this._icon(); }
5390
5507
  /**
5391
5508
  * @hidden
5392
5509
  */
5393
- svgIcon;
5510
+ set svgIcon(value) { this._svgIcon.set(value); }
5511
+ get svgIcon() { return this._svgIcon(); }
5394
5512
  /**
5395
5513
  * Sets the HTML attributes of the inner focusable input element. Attributes essential for certain component functionalities cannot be changed.
5396
5514
  *
5397
5515
  * @remarks
5398
5516
  * This property is related to accessibility.
5399
5517
  */
5400
- inputAttributes;
5518
+ set inputAttributes(value) { this._inputAttributes.set(value); }
5519
+ get inputAttributes() { return this._inputAttributes(); }
5401
5520
  /**
5402
5521
  * @hidden
5403
5522
  */
@@ -5427,10 +5546,10 @@ class ComboBoxComponent extends MultiTabStop {
5427
5546
  */
5428
5547
  chevronDownIcon = chevronDownIcon;
5429
5548
  set text(text) {
5430
- this._text = isPresent(text) ? text.toString() : "";
5549
+ this._text.set(isPresent(text) ? text.toString() : "");
5431
5550
  }
5432
5551
  get text() {
5433
- return this._text;
5552
+ return this._text();
5434
5553
  }
5435
5554
  /**
5436
5555
  * @hidden
@@ -5478,11 +5597,13 @@ class ComboBoxComponent extends MultiTabStop {
5478
5597
  * By default the sticky header is displayed ([see example](https://www.telerik.com/kendo-angular-ui/components/dropdowns/autocomplete/grouping#sticky-header)).
5479
5598
  * @default true
5480
5599
  */
5481
- showStickyHeader = true;
5600
+ set showStickyHeader(value) { this._showStickyHeader.set(value); }
5601
+ get showStickyHeader() { return this._showStickyHeader(); }
5482
5602
  /**
5483
5603
  * @hidden
5484
5604
  */
5485
- focusableId = `k-${guid()}`;
5605
+ set focusableId(value) { this._focusableId.set(value); }
5606
+ get focusableId() { return this._focusableId(); }
5486
5607
  /**
5487
5608
  * Specifies whether the ComboBox allows user-defined values that are not present in the dataset
5488
5609
  * ([more information and examples](https://www.telerik.com/kendo-angular-ui/components/dropdowns/combobox/custom-values)).
@@ -5491,7 +5612,8 @@ class ComboBoxComponent extends MultiTabStop {
5491
5612
  * The feature is not available when using adaptive mode.
5492
5613
  * @default false
5493
5614
  */
5494
- allowCustom = false;
5615
+ set allowCustom(value) { this._allowCustom.set(value); }
5616
+ get allowCustom() { return this._allowCustom(); }
5495
5617
  /**
5496
5618
  * Sets the data of the ComboBox.
5497
5619
  * The data must be provided in an array-like list.
@@ -5528,38 +5650,39 @@ class ComboBoxComponent extends MultiTabStop {
5528
5650
  * All selected values not present in the dataset are custom values. When the `Enter` key is pressed or the component loses focus, custom values are dismissed unless `allowCustom` is set to `true`.
5529
5651
  */
5530
5652
  set value(newValue) {
5531
- this._value = newValue;
5653
+ this._value.set(newValue);
5532
5654
  this.setState();
5533
- this.cdr.markForCheck();
5534
5655
  }
5535
5656
  get value() {
5536
- return this._value;
5657
+ return this._value();
5537
5658
  }
5538
5659
  /**
5539
5660
  * Sets the data item field that represents the item text. If the data contains only primitive values, do not define this property.
5540
5661
  *
5541
5662
  * The `textField` property can be set to a nested property value, for example, `category.name`.
5542
5663
  */
5543
- textField;
5664
+ set textField(value) { this._textField.set(value); }
5665
+ get textField() { return this._textField(); }
5544
5666
  /**
5545
5667
  * Sets the data item field that represents the item value.
5546
5668
  * If the data contains only primitive values, do not define it.
5547
5669
  *
5548
5670
  * > The `valueField` property can be set to point to a nested property value - e.g. `category.id`.
5549
5671
  */
5550
- valueField;
5672
+ set valueField(value) { this._valueField.set(value); }
5673
+ get valueField() { return this._valueField(); }
5551
5674
  /**
5552
5675
  * Specifies the type of the selected value. If set to `true`, the selected value must be a primitive type.
5553
5676
  * ([more information and example](https://www.telerik.com/kendo-angular-ui/components/dropdowns/combobox/value-binding#primitive-values-from-object-fields))
5554
5677
  */
5555
5678
  set valuePrimitive(isPrimitive) {
5556
- this._valuePrimitive = isPrimitive;
5679
+ this._valuePrimitive.set(isPrimitive);
5557
5680
  }
5558
5681
  get valuePrimitive() {
5559
- if (!isPresent(this._valuePrimitive)) {
5682
+ if (!isPresent(this._valuePrimitive())) {
5560
5683
  return !isPresent(this.valueField);
5561
5684
  }
5562
- return this._valuePrimitive;
5685
+ return this._valuePrimitive();
5563
5686
  }
5564
5687
  /**
5565
5688
  * A user-defined callback which returns normalized custom values.
@@ -5604,27 +5727,32 @@ class ComboBoxComponent extends MultiTabStop {
5604
5727
  * }
5605
5728
  * ```
5606
5729
  */
5607
- valueNormalizer = (text) => text.pipe(map((userInput) => userInput));
5730
+ set valueNormalizer(fn) { this._valueNormalizer.set(fn); }
5731
+ get valueNormalizer() { return this._valueNormalizer(); }
5608
5732
  /**
5609
5733
  * The hint that is displayed when the component is empty.
5610
5734
  * @default ''
5611
5735
  */
5612
- placeholder = "";
5736
+ set placeholder(value) { this._placeholder.set(value); }
5737
+ get placeholder() { return this._placeholder(); }
5613
5738
  /**
5614
5739
  * Enables or disables the adaptive mode. By default, adaptive rendering is disabled.
5615
5740
  * @default 'none'
5616
5741
  */
5617
- adaptiveMode = 'none';
5742
+ set adaptiveMode(value) { this._adaptiveMode.set(value); }
5743
+ get adaptiveMode() { return this._adaptiveMode(); }
5618
5744
  /**
5619
5745
  * Sets the title of the ActionSheet that is rendered instead of the Popup when using small screen devices.
5620
5746
  * By default, the ActionSheet title uses the text provided for the label of the ComboBox.
5621
5747
  * @default ''
5622
5748
  */
5623
- adaptiveTitle = '';
5749
+ set adaptiveTitle(value) { this._adaptiveTitle.set(value); }
5750
+ get adaptiveTitle() { return this._adaptiveTitle(); }
5624
5751
  /**
5625
5752
  * Sets the subtitle of the ActionSheet that is rendered instead of the Popup when using small screen devices. By default, the ActionSheet does not render a subtitle.
5626
5753
  */
5627
- adaptiveSubtitle;
5754
+ set adaptiveSubtitle(value) { this._adaptiveSubtitle.set(value); }
5755
+ get adaptiveSubtitle() { return this._adaptiveSubtitle(); }
5628
5756
  /**
5629
5757
  * @hidden
5630
5758
  */
@@ -5635,10 +5763,10 @@ class ComboBoxComponent extends MultiTabStop {
5635
5763
  * Configures the popup of the ComboBox.
5636
5764
  */
5637
5765
  set popupSettings(settings) {
5638
- this._popupSettings = Object.assign({ animate: true }, settings);
5766
+ this._popupSettings.set(Object.assign({ animate: true }, settings));
5639
5767
  }
5640
5768
  get popupSettings() {
5641
- return this._popupSettings;
5769
+ return this._popupSettings();
5642
5770
  }
5643
5771
  /**
5644
5772
  * Sets the height of the options list in the popup. By default, `listHeight` is 200px.
@@ -5649,34 +5777,37 @@ class ComboBoxComponent extends MultiTabStop {
5649
5777
  * When using `adaptiveMode` and the screen size is `small` or `medium` the `listHeight` property is set to null.
5650
5778
  */
5651
5779
  set listHeight(_listHeight) {
5652
- this._listHeight = _listHeight;
5780
+ this._listHeight.set(_listHeight);
5653
5781
  }
5654
5782
  get listHeight() {
5655
5783
  if (this.isAdaptive) {
5656
5784
  return;
5657
5785
  }
5658
- return this._listHeight;
5786
+ return this._listHeight();
5659
5787
  }
5660
- _listHeight = 200;
5661
5788
  /**
5662
5789
  * Sets and gets the loading state of the ComboBox.
5663
5790
  */
5664
- loading;
5791
+ set loading(value) { this._loading.set(value); }
5792
+ get loading() { return this._loading(); }
5665
5793
  /**
5666
5794
  * Enables the auto-completion of the text based on the first data item.
5667
5795
  * @default false
5668
5796
  */
5669
- suggest = false;
5797
+ set suggest(value) { this._suggest.set(value); }
5798
+ get suggest() { return this._suggest(); }
5670
5799
  /**
5671
5800
  * If set to `true`, renders a button on hovering over the component.
5672
5801
  * Clicking this button resets the value of the component to `undefined` and triggers the `change` event.
5673
5802
  * @default true
5674
5803
  */
5675
- clearButton = true;
5804
+ set clearButton(value) { this._clearButton.set(value); }
5805
+ get clearButton() { return this._clearButton(); }
5676
5806
  /**
5677
5807
  * Sets the disabled state of the component. To learn how to disable the component in reactive forms, refer to the articles on [ComboBox Forms Support](https://www.telerik.com/kendo-angular-ui/components/dropdowns/combobox/forms#managing-the-combobox-disabled-state-in-reactive-forms) and [MultiColumnComboBox Forms Support](https://www.telerik.com/kendo-angular-ui/components/dropdowns/multicolumncombobox/forms#managing-the-multicolumncombobox-disabled-state-in-reactive-forms).
5678
5808
  */
5679
- disabled = false;
5809
+ set disabled(value) { this._disabled.set(value); }
5810
+ get disabled() { return this._disabled(); }
5680
5811
  /**
5681
5812
  * Defines a Boolean function that is executed for each data item in the component ([see examples](https://www.telerik.com/kendo-angular-ui/components/dropdowns/combobox/disabled-items)). Determines whether the item is disabled.
5682
5813
  */
@@ -5690,13 +5821,15 @@ class ComboBoxComponent extends MultiTabStop {
5690
5821
  * Sets the read-only state of the component.
5691
5822
  * @default false
5692
5823
  */
5693
- readonly = false;
5824
+ set readonly(value) { this._readonly.set(value); }
5825
+ get readonly() { return this._readonly(); }
5694
5826
  /**
5695
5827
  * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.
5696
5828
  *
5697
5829
  * @default 0
5698
5830
  */
5699
- tabindex = 0;
5831
+ set tabindex(value) { this._tabindex.set(value); }
5832
+ get tabindex() { return this._tabindex(); }
5700
5833
  /**
5701
5834
  * @hidden
5702
5835
  */
@@ -5710,18 +5843,19 @@ class ComboBoxComponent extends MultiTabStop {
5710
5843
  * Enables the [filtering](https://www.telerik.com/kendo-angular-ui/components/dropdowns/combobox/filtering) functionality.
5711
5844
  * If set to `true`, the component emits the `filterChange` event.
5712
5845
  */
5713
- filterable = false;
5846
+ set filterable(value) { this._filterable.set(value); }
5847
+ get filterable() { return this._filterable(); }
5714
5848
  /**
5715
5849
  * Enables the [virtualization](https://www.telerik.com/kendo-angular-ui/components/dropdowns/combobox/virtualization) functionality.
5716
5850
  */
5717
5851
  set virtual(settings) {
5718
- this._virtualSettings = normalizeVirtualizationSettings(settings, {
5852
+ this._virtualSettings.set(normalizeVirtualizationSettings(settings, {
5719
5853
  itemHeight: this.defaultVirtualItemHeight,
5720
5854
  pageSize: this.defaultVirtualPageSize
5721
- });
5855
+ }));
5722
5856
  }
5723
5857
  get virtual() {
5724
- return this._virtualSettings;
5858
+ return this._virtualSettings();
5725
5859
  }
5726
5860
  /**
5727
5861
  * Sets the size of the component. The default value is set by the Kendo theme.
@@ -5731,10 +5865,10 @@ class ComboBoxComponent extends MultiTabStop {
5731
5865
  if (size) {
5732
5866
  this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', size));
5733
5867
  }
5734
- this._size = size;
5868
+ this._size.set(size);
5735
5869
  }
5736
5870
  get size() {
5737
- return this._size;
5871
+ return this._size();
5738
5872
  }
5739
5873
  /**
5740
5874
  * Sets the border radius of the component. The default value is set by the Kendo theme.
@@ -5744,10 +5878,10 @@ class ComboBoxComponent extends MultiTabStop {
5744
5878
  if (rounded) {
5745
5879
  this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(rounded));
5746
5880
  }
5747
- this._rounded = rounded;
5881
+ this._rounded.set(rounded);
5748
5882
  }
5749
5883
  get rounded() {
5750
- return this._rounded;
5884
+ return this._rounded();
5751
5885
  }
5752
5886
  /**
5753
5887
  * Sets the fillMode of the component. The default value is set by the Kendo theme.
@@ -5757,10 +5891,10 @@ class ComboBoxComponent extends MultiTabStop {
5757
5891
  if (fillMode) {
5758
5892
  this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', fillMode));
5759
5893
  }
5760
- this._fillMode = fillMode;
5894
+ this._fillMode.set(fillMode);
5761
5895
  }
5762
5896
  get fillMode() {
5763
- return this._fillMode;
5897
+ return this._fillMode();
5764
5898
  }
5765
5899
  /**
5766
5900
  * Fires each time the value is changed&mdash;
@@ -5906,29 +6040,50 @@ class ComboBoxComponent extends MultiTabStop {
5906
6040
  * Used for the default virtualization settings config.
5907
6041
  */
5908
6042
  defaultVirtualPageSize = 50;
6043
+ subs = new Subscription();
5909
6044
  valueSubscription;
5910
6045
  _filtering = false;
5911
- _text = '';
6046
+ _text = signal('', ...(ngDevMode ? [{ debugName: "_text" }] : []));
5912
6047
  filterText = '';
5913
- _open = false;
5914
- _value;
5915
- _valuePrimitive;
6048
+ _open = signal(false, ...(ngDevMode ? [{ debugName: "_open" }] : []));
6049
+ _value = signal(undefined, ...(ngDevMode ? [{ debugName: "_value" }] : []));
6050
+ _valuePrimitive = signal(undefined, ...(ngDevMode ? [{ debugName: "_valuePrimitive" }] : []));
5916
6051
  _previousDataItem;
5917
6052
  suggestedText;
5918
6053
  backspacePressed;
5919
- _popupSettings = { animate: true };
5920
- _virtualSettings;
6054
+ _popupSettings = signal({ animate: true }, ...(ngDevMode ? [{ debugName: "_popupSettings" }] : []));
6055
+ _virtualSettings = signal(undefined, ...(ngDevMode ? [{ debugName: "_virtualSettings" }] : []));
5921
6056
  popupMouseDownHandler = (event) => event.preventDefault();
5922
6057
  customValueSubject = new Subject();
5923
6058
  valueSubject = new Subject();
5924
6059
  clearValueSubject = new Subject();
5925
6060
  direction;
5926
- subs = new Subscription();
5927
6061
  touchstartDisposeHandler;
5928
6062
  selectClickDisposeHandler;
5929
- _size = undefined;
5930
- _rounded = undefined;
5931
- _fillMode = undefined;
6063
+ _size = signal(undefined, ...(ngDevMode ? [{ debugName: "_size" }] : []));
6064
+ _rounded = signal(undefined, ...(ngDevMode ? [{ debugName: "_rounded" }] : []));
6065
+ _fillMode = signal(undefined, ...(ngDevMode ? [{ debugName: "_fillMode" }] : []));
6066
+ _icon = signal(undefined, ...(ngDevMode ? [{ debugName: "_icon" }] : []));
6067
+ _svgIcon = signal(undefined, ...(ngDevMode ? [{ debugName: "_svgIcon" }] : []));
6068
+ _inputAttributes = signal(undefined, ...(ngDevMode ? [{ debugName: "_inputAttributes" }] : []));
6069
+ _showStickyHeader = signal(true, ...(ngDevMode ? [{ debugName: "_showStickyHeader" }] : []));
6070
+ _focusableId = signal(`k-${guid()}`, ...(ngDevMode ? [{ debugName: "_focusableId" }] : []));
6071
+ _allowCustom = signal(false, ...(ngDevMode ? [{ debugName: "_allowCustom" }] : []));
6072
+ _textField = signal(undefined, ...(ngDevMode ? [{ debugName: "_textField" }] : []));
6073
+ _valueField = signal(undefined, ...(ngDevMode ? [{ debugName: "_valueField" }] : []));
6074
+ _valueNormalizer = signal((text) => text.pipe(map((userInput) => userInput)), ...(ngDevMode ? [{ debugName: "_valueNormalizer" }] : []));
6075
+ _placeholder = signal("", ...(ngDevMode ? [{ debugName: "_placeholder" }] : []));
6076
+ _adaptiveMode = signal('none', ...(ngDevMode ? [{ debugName: "_adaptiveMode" }] : []));
6077
+ _adaptiveTitle = signal('', ...(ngDevMode ? [{ debugName: "_adaptiveTitle" }] : []));
6078
+ _adaptiveSubtitle = signal(undefined, ...(ngDevMode ? [{ debugName: "_adaptiveSubtitle" }] : []));
6079
+ _loading = signal(undefined, ...(ngDevMode ? [{ debugName: "_loading" }] : []));
6080
+ _suggest = signal(false, ...(ngDevMode ? [{ debugName: "_suggest" }] : []));
6081
+ _clearButton = signal(true, ...(ngDevMode ? [{ debugName: "_clearButton" }] : []));
6082
+ _disabled = signal(false, ...(ngDevMode ? [{ debugName: "_disabled" }] : []));
6083
+ _readonly = signal(false, ...(ngDevMode ? [{ debugName: "_readonly" }] : []));
6084
+ _tabindex = signal(0, ...(ngDevMode ? [{ debugName: "_tabindex" }] : []));
6085
+ _filterable = signal(false, ...(ngDevMode ? [{ debugName: "_filterable" }] : []));
6086
+ _listHeight = signal(200, ...(ngDevMode ? [{ debugName: "_listHeight" }] : []));
5932
6087
  constructor(wrapper, localization, popupService, selectionService, navigationService, disabledItemsService, dataService, zone, cdr, renderer, injector, hostElement, adaptiveService) {
5933
6088
  super();
5934
6089
  this.wrapper = wrapper;
@@ -5961,6 +6116,14 @@ class ComboBoxComponent extends MultiTabStop {
5961
6116
  ngAfterViewInit() {
5962
6117
  this.windowSize = this.adaptiveService.size;
5963
6118
  this.cdr.detectChanges();
6119
+ const control = this.formControl;
6120
+ if (control && control.events) {
6121
+ this.subs.add(control.events.subscribe(e => {
6122
+ if (e instanceof TouchedChangeEvent) {
6123
+ this.cdr.markForCheck();
6124
+ }
6125
+ }));
6126
+ }
5964
6127
  }
5965
6128
  createValueStream() {
5966
6129
  const valueStream = this.valueSubject.pipe(filter((candidate) => {
@@ -6170,16 +6333,15 @@ class ComboBoxComponent extends MultiTabStop {
6170
6333
  */
6171
6334
  toggle(open) {
6172
6335
  Promise.resolve(null).then(() => {
6173
- const shouldOpen = isPresent(open) ? open : !this._open;
6336
+ const shouldOpen = isPresent(open) ? open : !this._open();
6174
6337
  this._toggle(shouldOpen);
6175
- this.cdr.markForCheck();
6176
6338
  });
6177
6339
  }
6178
6340
  /**
6179
6341
  * Returns the current open state. Returns `true` if the popup or actionSheet is open.
6180
6342
  */
6181
6343
  get isOpen() {
6182
- return isTruthy(this._open || this.isActionSheetExpanded);
6344
+ return isTruthy(this._open() || this.isActionSheetExpanded);
6183
6345
  }
6184
6346
  /**
6185
6347
  * @hidden
@@ -6252,7 +6414,6 @@ class ComboBoxComponent extends MultiTabStop {
6252
6414
  * @hidden
6253
6415
  */
6254
6416
  setDisabledState(isDisabled) {
6255
- this.cdr.markForCheck();
6256
6417
  this.disabled = isDisabled;
6257
6418
  }
6258
6419
  /**
@@ -6744,13 +6905,13 @@ class ComboBoxComponent extends MultiTabStop {
6744
6905
  this.popupRef.popupAnchorViewportLeave.subscribe(() => this.togglePopup(false));
6745
6906
  }
6746
6907
  _toggle(open) {
6747
- this._open = open;
6908
+ this._open.set(open);
6748
6909
  this.destroyPopup();
6749
6910
  if (this.isActionSheetExpanded) {
6750
6911
  this.actionSheet.toggle(false);
6751
6912
  this.focus();
6752
6913
  }
6753
- if (this._open) {
6914
+ if (this._open()) {
6754
6915
  this.windowSize = this.adaptiveService.size;
6755
6916
  this.createPopup();
6756
6917
  }
@@ -7081,11 +7242,13 @@ class ComboBoxComponent extends MultiTabStop {
7081
7242
  </ng-template>
7082
7243
  }
7083
7244
  </ng-template>
7084
- `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { kind: "directive", type: SharedDropDownEventsDirective, selector: "[kendoDropDownSharedEvents]", inputs: ["hostElement", "clearButtonClicked", "isFocused"], outputs: ["isFocusedChange", "onFocus", "handleBlur"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SeparatorComponent, selector: "kendo-separator", inputs: ["orientation"] }, { kind: "component", type: SearchBarComponent, selector: "input[kendoSearchbar]", inputs: ["tagListId", "readonly", "disabled", "isRequired", "isSuggestable", "hasListAutocomplete", "userInput", "suggestedText", "inputAttributes", "id", "activeDescendant", "tabIndex", "isLoading", "ariaControls", "ariaExpanded", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-adaptive-renderer", inputs: ["title", "subtitle", "showTextInput", "sharedPopupActionSheetTemplate", "text", "placeholder", "searchBarValue", "filterable", "showListContainer"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "component", type: ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "ariaLive", "ariaLabel", "isMultiselect", "isActionSheetExpanded", "showStickyHeader", "rowWidth", "columnsWidths", "customItemTemplate", "text", "allowCustom", "defaultItem", "selectAll", "selectAllText", "isAllSelected", "isPartiallySelected", "data", "size", "rounded"], outputs: ["selectAllClick", "onClick", "pageChange", "listResize", "popupListScroll"] }] });
7245
+ `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { kind: "directive", type: SharedDropDownEventsDirective, selector: "[kendoDropDownSharedEvents]", inputs: ["hostElement", "clearButtonClicked", "isFocused"], outputs: ["isFocusedChange", "onFocus", "handleBlur"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SeparatorComponent, selector: "kendo-separator", inputs: ["orientation"] }, { kind: "component", type: SearchBarComponent, selector: "input[kendoSearchbar]", inputs: ["tagListId", "readonly", "disabled", "isRequired", "isSuggestable", "hasListAutocomplete", "userInput", "suggestedText", "inputAttributes", "id", "activeDescendant", "tabIndex", "isLoading", "ariaControls", "ariaExpanded", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-adaptive-renderer", inputs: ["title", "subtitle", "showTextInput", "sharedPopupActionSheetTemplate", "text", "placeholder", "searchBarValue", "filterable", "showListContainer"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "component", type: ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "ariaLive", "ariaLabel", "isMultiselect", "isActionSheetExpanded", "showStickyHeader", "rowWidth", "columnsWidths", "customItemTemplate", "text", "allowCustom", "defaultItem", "selectAll", "selectAllText", "isAllSelected", "isPartiallySelected", "data", "size", "rounded"], outputs: ["selectAllClick", "onClick", "pageChange", "listResize", "popupListScroll"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
7085
7246
  }
7086
7247
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: ComboBoxComponent, decorators: [{
7087
7248
  type: Component,
7088
7249
  args: [{
7250
+ selector: 'kendo-combobox',
7251
+ changeDetection: ChangeDetectionStrategy.OnPush,
7089
7252
  exportAs: 'kendoComboBox',
7090
7253
  providers: [
7091
7254
  COMBOBOX_VALUE_ACCESSOR,
@@ -7110,7 +7273,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
7110
7273
  { provide: KENDO_WEBMCP_HOST, useExisting: forwardRef(() => ComboBoxComponent) },
7111
7274
  provideComponentName('combobox')
7112
7275
  ],
7113
- selector: 'kendo-combobox',
7114
7276
  template: `
7115
7277
  <ng-container kendoComboBoxLocalizedMessages
7116
7278
  i18n-noDataText="kendo.combobox.noDataText|The text displayed in the popup when there are no items"
@@ -7584,7 +7746,8 @@ class DropDownListComponent {
7584
7746
  /**
7585
7747
  * @hidden
7586
7748
  */
7587
- customIconClass;
7749
+ set customIconClass(v) { this._customIconClass.set(v); }
7750
+ get customIconClass() { return this._customIconClass(); }
7588
7751
  /**
7589
7752
  * @hidden
7590
7753
  */
@@ -7658,19 +7821,23 @@ class DropDownListComponent {
7658
7821
  * Shows or hides the current group sticky header when using grouped data.
7659
7822
  * The sticky header displays by default. [see example.](https://www.telerik.com/kendo-angular-ui/components/dropdowns/autocomplete/grouping#sticky-header)
7660
7823
  */
7661
- showStickyHeader = true;
7824
+ set showStickyHeader(v) { this._showStickyHeader.set(v); }
7825
+ get showStickyHeader() { return this._showStickyHeader(); }
7662
7826
  /**
7663
7827
  * @hidden
7664
7828
  */
7665
- icon;
7829
+ set icon(v) { this._icon.set(v); }
7830
+ get icon() { return this._icon(); }
7666
7831
  /**
7667
7832
  * @hidden
7668
7833
  */
7669
- svgIcon;
7834
+ set svgIcon(v) { this._svgIcon.set(v); }
7835
+ get svgIcon() { return this._svgIcon(); }
7670
7836
  /**
7671
7837
  * Sets and gets the loading state of the `DropDownListComponent`.
7672
7838
  */
7673
- loading;
7839
+ set loading(v) { this._loading.set(v); }
7840
+ get loading() { return this._loading(); }
7674
7841
  /**
7675
7842
  * Sets the data of the `DropDownListComponent`.
7676
7843
  *
@@ -7705,12 +7872,11 @@ class DropDownListComponent {
7705
7872
  if (!isPresent(newValue)) {
7706
7873
  this._previousDataItem = undefined;
7707
7874
  }
7708
- this._value = newValue;
7875
+ this._value.set(newValue);
7709
7876
  this.setState();
7710
- this.cdr.markForCheck();
7711
7877
  }
7712
7878
  get value() {
7713
- return this._value;
7879
+ return this._value();
7714
7880
  }
7715
7881
  /**
7716
7882
  * Sets the data item field that represents the item text.
@@ -7718,28 +7884,33 @@ class DropDownListComponent {
7718
7884
  *
7719
7885
  * The `textField` property can point to a nested property value, for example, `category.name`.
7720
7886
  */
7721
- textField;
7887
+ set textField(v) { this._textField.set(v); }
7888
+ get textField() { return this._textField(); }
7722
7889
  /**
7723
7890
  * Sets the data item field that represents the item value.
7724
7891
  * If the data contains only primitive values, do not define this property.
7725
7892
  *
7726
7893
  * The `valueField` property can point to a nested property value, for example, `category.id`.
7727
7894
  */
7728
- valueField;
7895
+ set valueField(v) { this._valueField.set(v); }
7896
+ get valueField() { return this._valueField(); }
7729
7897
  /**
7730
7898
  * Enables or disables the adaptive mode. The adaptive rendering is disabled by default.
7731
7899
  */
7732
- adaptiveMode = 'none';
7900
+ set adaptiveMode(v) { this._adaptiveMode.set(v); }
7901
+ get adaptiveMode() { return this._adaptiveMode(); }
7733
7902
  /**
7734
7903
  * Sets the title of the ActionSheet rendered instead of the Popup on small screens.
7735
7904
  * By default, the ActionSheet title uses the label text of the `DropDownListComponent`.
7736
7905
  */
7737
- adaptiveTitle = '';
7906
+ set adaptiveTitle(v) { this._adaptiveTitle.set(v); }
7907
+ get adaptiveTitle() { return this._adaptiveTitle(); }
7738
7908
  /**
7739
7909
  * Sets the subtitle of the ActionSheet rendered instead of the Popup on small screens.
7740
7910
  * By default, the ActionSheet does not render a subtitle.
7741
7911
  */
7742
- adaptiveSubtitle = '';
7912
+ set adaptiveSubtitle(v) { this._adaptiveSubtitle.set(v); }
7913
+ get adaptiveSubtitle() { return this._adaptiveSubtitle(); }
7743
7914
  /**
7744
7915
  * @hidden
7745
7916
  */
@@ -7773,10 +7944,10 @@ class DropDownListComponent {
7773
7944
  * - `appendTo: "root" | "component" | ViewContainerRef`&mdash;Specifies the component to which the popup will be appended.
7774
7945
  */
7775
7946
  set popupSettings(settings) {
7776
- this._popupSettings = Object.assign({ animate: true }, settings);
7947
+ this._popupSettings.set(Object.assign({ animate: true }, settings));
7777
7948
  }
7778
7949
  get popupSettings() {
7779
- return this._popupSettings;
7950
+ return this._popupSettings();
7780
7951
  }
7781
7952
  /**
7782
7953
  * Sets the height of the options list in the popup.
@@ -7789,23 +7960,24 @@ class DropDownListComponent {
7789
7960
  * @default 200
7790
7961
  */
7791
7962
  set listHeight(_listHeight) {
7792
- this._listHeight = _listHeight;
7963
+ this._listHeight.set(_listHeight);
7793
7964
  }
7794
7965
  get listHeight() {
7795
7966
  if (this.isAdaptive) {
7796
7967
  return;
7797
7968
  }
7798
- return this._listHeight;
7969
+ return this._listHeight();
7799
7970
  }
7800
- _listHeight = 200;
7801
7971
  /**
7802
7972
  * Sets the text of the default empty item. The value type must match the data type.
7803
7973
  */
7804
- defaultItem;
7974
+ set defaultItem(v) { this._defaultItem.set(v); }
7975
+ get defaultItem() { return this._defaultItem(); }
7805
7976
  /**
7806
7977
  * Sets the disabled state of the component. To disable the component in reactive forms, see [Forms Support](https://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdownlist/forms#managing-the-dropdownlist-disabled-state-in-reactive-forms).
7807
7978
  */
7808
- disabled;
7979
+ set disabled(v) { this._disabled.set(v); }
7980
+ get disabled() { return this._disabled(); }
7809
7981
  /**
7810
7982
  * Defines a Boolean function executed for each data item in the component. Determines whether the item is disabled. [See examples.](https://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdownlist/disabled-items)
7811
7983
  */
@@ -7820,47 +7992,52 @@ class DropDownListComponent {
7820
7992
  *
7821
7993
  * @default false
7822
7994
  */
7823
- readonly = false;
7995
+ get readonly() { return this._readonly(); }
7996
+ set readonly(v) { this._readonly.set(v); }
7824
7997
  /**
7825
7998
  * Enables the [filtering](https://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdownlist/filtering) functionality of the `DropDownListComponent`.
7826
7999
  */
7827
- filterable = false;
8000
+ set filterable(v) { this._filterable.set(v); }
8001
+ get filterable() { return this._filterable(); }
7828
8002
  /**
7829
8003
  * Enables the [virtualization](https://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdownlist/virtualization) functionality.
7830
8004
  */
7831
8005
  set virtual(settings) {
7832
- this._virtualSettings = normalizeVirtualizationSettings(settings);
8006
+ this._virtualSettings.set(normalizeVirtualizationSettings(settings));
7833
8007
  }
7834
8008
  get virtual() {
7835
- return this._virtualSettings;
8009
+ return this._virtualSettings();
7836
8010
  }
7837
8011
  /**
7838
8012
  * Enables a case-insensitive search. Use this option when filtration is disabled.
7839
8013
  */
7840
- ignoreCase = true;
8014
+ set ignoreCase(v) { this._ignoreCase.set(v); }
8015
+ get ignoreCase() { return this._ignoreCase(); }
7841
8016
  /**
7842
8017
  * Sets the delay before an item search is performed. Use this option when filtration is disabled.
7843
8018
  */
7844
- delay = 500;
8019
+ set delay(v) { this._delay.set(v); }
8020
+ get delay() { return this._delay(); }
7845
8021
  /**
7846
8022
  * Specifies the type of the selected value. If set to `true`, the selected value must be a primitive value.
7847
8023
  * * [More information and example.](https://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdownlist/value-binding#primitive-values-from-object-fields)
7848
8024
  */
7849
8025
  set valuePrimitive(isPrimitive) {
7850
- this._valuePrimitive = isPrimitive;
8026
+ this._valuePrimitive.set(isPrimitive);
7851
8027
  }
7852
8028
  get valuePrimitive() {
7853
- if (!isPresent(this._valuePrimitive)) {
8029
+ if (!isPresent(this._valuePrimitive())) {
7854
8030
  return !isPresent(this.valueField);
7855
8031
  }
7856
- return this._valuePrimitive;
8032
+ return this._valuePrimitive();
7857
8033
  }
7858
8034
  /**
7859
8035
  * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.
7860
8036
  *
7861
8037
  * @default 0
7862
8038
  */
7863
- tabindex = 0;
8039
+ set tabindex(v) { this._tabindex.set(v); }
8040
+ get tabindex() { return this._tabindex(); }
7864
8041
  /**
7865
8042
  * @hidden
7866
8043
  */
@@ -7878,10 +8055,10 @@ class DropDownListComponent {
7878
8055
  if (size) {
7879
8056
  this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('picker', size));
7880
8057
  }
7881
- this._size = size;
8058
+ this._size.set(size);
7882
8059
  }
7883
8060
  get size() {
7884
- return this._size;
8061
+ return this._size();
7885
8062
  }
7886
8063
  /**
7887
8064
  * Sets the border radius of the component. The default value is set by the Kendo theme.
@@ -7891,10 +8068,10 @@ class DropDownListComponent {
7891
8068
  if (rounded) {
7892
8069
  this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(rounded));
7893
8070
  }
7894
- this._rounded = rounded;
8071
+ this._rounded.set(rounded);
7895
8072
  }
7896
8073
  get rounded() {
7897
- return this._rounded;
8074
+ return this._rounded();
7898
8075
  }
7899
8076
  /**
7900
8077
  * Sets the fillMode of the component. The default value is set by the Kendo theme.
@@ -7904,16 +8081,17 @@ class DropDownListComponent {
7904
8081
  if (fillMode) {
7905
8082
  this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('picker', fillMode));
7906
8083
  }
7907
- this._fillMode = fillMode;
8084
+ this._fillMode.set(fillMode);
7908
8085
  }
7909
8086
  get fillMode() {
7910
- return this._fillMode;
8087
+ return this._fillMode();
7911
8088
  }
7912
8089
  /**
7913
8090
  * Toggles the left and right arrow keys navigation functionality.
7914
8091
  * @hidden
7915
8092
  */
7916
- leftRightArrowsNavigation = true;
8093
+ set leftRightArrowsNavigation(v) { this._leftRightArrowsNavigation.set(v); }
8094
+ get leftRightArrowsNavigation() { return this._leftRightArrowsNavigation(); }
7917
8095
  /**
7918
8096
  * Fires each time the value changes. [See example.](https://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdownlist/events).
7919
8097
  */
@@ -8022,7 +8200,8 @@ class DropDownListComponent {
8022
8200
  /**
8023
8201
  * @hidden
8024
8202
  */
8025
- focusableId = `k-${guid()}`;
8203
+ get focusableId() { return this._focusableId(); }
8204
+ set focusableId(id) { this._focusableId.set(id); }
8026
8205
  get dir() {
8027
8206
  return this.direction;
8028
8207
  }
@@ -8121,7 +8300,7 @@ class DropDownListComponent {
8121
8300
  }
8122
8301
  groupIndices = [];
8123
8302
  optionPrefix = `k-${guid()}`;
8124
- valueLabelId;
8303
+ valueLabelId = signal('', ...(ngDevMode ? [{ debugName: "valueLabelId" }] : []));
8125
8304
  filterText = '';
8126
8305
  listBoxId = `k-${guid()}`;
8127
8306
  subs = new Subscription();
@@ -8133,6 +8312,9 @@ class DropDownListComponent {
8133
8312
  get isFocused() {
8134
8313
  return this._isFocused;
8135
8314
  }
8315
+ get text() {
8316
+ return this._text();
8317
+ }
8136
8318
  direction;
8137
8319
  dataItem;
8138
8320
  popupRef;
@@ -8147,16 +8329,36 @@ class DropDownListComponent {
8147
8329
  hostElementFocused = new EventEmitter();
8148
8330
  hostElementBlurred = new EventEmitter();
8149
8331
  touchstartDisposeHandler;
8150
- _value;
8151
- _open = false;
8332
+ _customIconClass = signal(undefined, ...(ngDevMode ? [{ debugName: "_customIconClass" }] : []));
8333
+ _showStickyHeader = signal(true, ...(ngDevMode ? [{ debugName: "_showStickyHeader" }] : []));
8334
+ _icon = signal(undefined, ...(ngDevMode ? [{ debugName: "_icon" }] : []));
8335
+ _svgIcon = signal(undefined, ...(ngDevMode ? [{ debugName: "_svgIcon" }] : []));
8336
+ _loading = signal(undefined, ...(ngDevMode ? [{ debugName: "_loading" }] : []));
8337
+ _textField = signal(undefined, ...(ngDevMode ? [{ debugName: "_textField" }] : []));
8338
+ _valueField = signal(undefined, ...(ngDevMode ? [{ debugName: "_valueField" }] : []));
8339
+ _adaptiveMode = signal('none', ...(ngDevMode ? [{ debugName: "_adaptiveMode" }] : []));
8340
+ _adaptiveTitle = signal('', ...(ngDevMode ? [{ debugName: "_adaptiveTitle" }] : []));
8341
+ _adaptiveSubtitle = signal('', ...(ngDevMode ? [{ debugName: "_adaptiveSubtitle" }] : []));
8342
+ _listHeight = signal(200, ...(ngDevMode ? [{ debugName: "_listHeight" }] : []));
8343
+ _defaultItem = signal(undefined, ...(ngDevMode ? [{ debugName: "_defaultItem" }] : []));
8344
+ _disabled = signal(undefined, ...(ngDevMode ? [{ debugName: "_disabled" }] : []));
8345
+ _readonly = signal(false, ...(ngDevMode ? [{ debugName: "_readonly" }] : []));
8346
+ _filterable = signal(false, ...(ngDevMode ? [{ debugName: "_filterable" }] : []));
8347
+ _ignoreCase = signal(true, ...(ngDevMode ? [{ debugName: "_ignoreCase" }] : []));
8348
+ _delay = signal(500, ...(ngDevMode ? [{ debugName: "_delay" }] : []));
8349
+ _tabindex = signal(0, ...(ngDevMode ? [{ debugName: "_tabindex" }] : []));
8350
+ _leftRightArrowsNavigation = signal(true, ...(ngDevMode ? [{ debugName: "_leftRightArrowsNavigation" }] : []));
8351
+ _focusableId = signal(`k-${guid()}`, ...(ngDevMode ? [{ debugName: "_focusableId" }] : []));
8352
+ _value = signal(undefined, ...(ngDevMode ? [{ debugName: "_value" }] : []));
8353
+ _open = signal(false, ...(ngDevMode ? [{ debugName: "_open" }] : []));
8152
8354
  _previousDataItem;
8153
- _valuePrimitive;
8154
- text;
8155
- _popupSettings = { animate: true };
8156
- _virtualSettings;
8157
- _size = undefined;
8158
- _rounded = undefined;
8159
- _fillMode = undefined;
8355
+ _valuePrimitive = signal(undefined, ...(ngDevMode ? [{ debugName: "_valuePrimitive" }] : []));
8356
+ _text = signal(undefined, ...(ngDevMode ? [{ debugName: "_text" }] : []));
8357
+ _popupSettings = signal({ animate: true }, ...(ngDevMode ? [{ debugName: "_popupSettings" }] : []));
8358
+ _virtualSettings = signal(undefined, ...(ngDevMode ? [{ debugName: "_virtualSettings" }] : []));
8359
+ _size = signal(undefined, ...(ngDevMode ? [{ debugName: "_size" }] : []));
8360
+ _rounded = signal(undefined, ...(ngDevMode ? [{ debugName: "_rounded" }] : []));
8361
+ _fillMode = signal(undefined, ...(ngDevMode ? [{ debugName: "_fillMode" }] : []));
8160
8362
  constructor(wrapper, localization, popupService, selectionService, navigationService, disabledItemsService, dataService, _zone, renderer, cdr, injector, adaptiveService) {
8161
8363
  this.wrapper = wrapper;
8162
8364
  this.localization = localization;
@@ -8194,6 +8396,14 @@ class DropDownListComponent {
8194
8396
  }
8195
8397
  ngAfterViewInit() {
8196
8398
  this.windowSize = this.adaptiveService.size;
8399
+ const control = this.formControl;
8400
+ if (control && control.events) {
8401
+ this.subs.add(control.events.subscribe(e => {
8402
+ if (e instanceof TouchedChangeEvent) {
8403
+ this.cdr.markForCheck();
8404
+ }
8405
+ }));
8406
+ }
8197
8407
  }
8198
8408
  /**
8199
8409
  * @hidden
@@ -8288,17 +8498,17 @@ class DropDownListComponent {
8288
8498
  // The Promise is required to open the popup on load.
8289
8499
  // Otherwise, the "Expression has changed..." type error will be thrown.
8290
8500
  Promise.resolve(null).then(() => {
8291
- const shouldOpen = isPresent(open) ? open : !this._open;
8501
+ const shouldOpen = isPresent(open) ? open : !this._open();
8292
8502
  this._toggle(shouldOpen);
8293
8503
  });
8294
8504
  }
8295
8505
  _toggle(open) {
8296
- this._open = open;
8506
+ this._open.set(open);
8297
8507
  this.destroyPopup();
8298
8508
  if (this.isActionSheetExpanded) {
8299
8509
  this.closeActionSheet();
8300
8510
  }
8301
- if (this._open) {
8511
+ if (this._open()) {
8302
8512
  this.createPopup();
8303
8513
  }
8304
8514
  }
@@ -8333,7 +8543,7 @@ class DropDownListComponent {
8333
8543
  * Returns the current open state. Returns `true` if the popup or actionSheet is open.
8334
8544
  */
8335
8545
  get isOpen() {
8336
- return isTruthy(this._open || this.isActionSheetExpanded);
8546
+ return isTruthy(this._open() || this.isActionSheetExpanded);
8337
8547
  }
8338
8548
  /**
8339
8549
  * Resets the value of the `DropDownListComponent`. If you use the `reset` method to clear the value, the model does not update automatically and the `selectionChange` and `valueChange` events are not fired.
@@ -8369,7 +8579,6 @@ class DropDownListComponent {
8369
8579
  * @hidden
8370
8580
  */
8371
8581
  setDisabledState(isDisabled) {
8372
- this.cdr.markForCheck();
8373
8582
  this.disabled = isDisabled;
8374
8583
  }
8375
8584
  /**
@@ -8402,7 +8611,7 @@ class DropDownListComponent {
8402
8611
  * @hidden
8403
8612
  */
8404
8613
  getText() {
8405
- return this.text;
8614
+ return this._text();
8406
8615
  }
8407
8616
  createPopup() {
8408
8617
  if (this.virtual) {
@@ -8470,13 +8679,13 @@ class DropDownListComponent {
8470
8679
  }
8471
8680
  updateState({ dataItem, confirm = false }) {
8472
8681
  this.dataItem = dataItem;
8473
- this.text = getter(dataItem, this.textField);
8682
+ this._text.set(getter(dataItem, this.textField));
8474
8683
  if (confirm) {
8475
8684
  this._previousDataItem = dataItem;
8476
8685
  }
8477
8686
  }
8478
8687
  clearState() {
8479
- this.text = undefined;
8688
+ this._text.set(undefined);
8480
8689
  this.dataItem = undefined;
8481
8690
  }
8482
8691
  resetSelection(index) {
@@ -8870,11 +9079,9 @@ class DropDownListComponent {
8870
9079
  }
8871
9080
  assignAriaDescribedBy() {
8872
9081
  const currentValue = this.wrapper.nativeElement.getAttribute('aria-describedby') || '';
8873
- const trimmed = currentValue.replace(this.valueLabelId, '').trim();
8874
- // reset the value label ID to force readers to read the new value
8875
- this.valueLabelId = `k-${guid()}`;
8876
- // add to the current value - don't replace it
8877
- const newValue = `${this.valueLabelId} ${trimmed}`.trim();
9082
+ const trimmed = currentValue.replace(this.valueLabelId(), '').trim();
9083
+ this.valueLabelId.set(`k-${guid()}`);
9084
+ const newValue = `${this.valueLabelId()} ${trimmed}`.trim();
8878
9085
  this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-describedby', newValue);
8879
9086
  }
8880
9087
  setComponentClasses() {
@@ -8956,7 +9163,7 @@ class DropDownListComponent {
8956
9163
  listboxLabel="Options"
8957
9164
  >
8958
9165
  </ng-container>
8959
- <span class="k-input-inner" unselectable="on" [id]="valueLabelId" (click)="$event.preventDefault()">
9166
+ <span class="k-input-inner" unselectable="on" [id]="valueLabelId()" (click)="$event.preventDefault()">
8960
9167
  <span class="k-input-value-text">
8961
9168
  @if (valueTemplate) {
8962
9169
  <ng-template
@@ -9096,11 +9303,13 @@ class DropDownListComponent {
9096
9303
  </ng-template>
9097
9304
  }
9098
9305
  </ng-template>
9099
- `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-adaptive-renderer", inputs: ["title", "subtitle", "showTextInput", "sharedPopupActionSheetTemplate", "text", "placeholder", "searchBarValue", "filterable", "showListContainer"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: FilterInputDirective, selector: "[filterInput]", inputs: ["filterInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "ariaLive", "ariaLabel", "isMultiselect", "isActionSheetExpanded", "showStickyHeader", "rowWidth", "columnsWidths", "customItemTemplate", "text", "allowCustom", "defaultItem", "selectAll", "selectAllText", "isAllSelected", "isPartiallySelected", "data", "size", "rounded"], outputs: ["selectAllClick", "onClick", "pageChange", "listResize", "popupListScroll"] }] });
9306
+ `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-adaptive-renderer", inputs: ["title", "subtitle", "showTextInput", "sharedPopupActionSheetTemplate", "text", "placeholder", "searchBarValue", "filterable", "showListContainer"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: FilterInputDirective, selector: "[filterInput]", inputs: ["filterInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "ariaLive", "ariaLabel", "isMultiselect", "isActionSheetExpanded", "showStickyHeader", "rowWidth", "columnsWidths", "customItemTemplate", "text", "allowCustom", "defaultItem", "selectAll", "selectAllText", "isAllSelected", "isPartiallySelected", "data", "size", "rounded"], outputs: ["selectAllClick", "onClick", "pageChange", "listResize", "popupListScroll"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
9100
9307
  }
9101
9308
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: DropDownListComponent, decorators: [{
9102
9309
  type: Component,
9103
9310
  args: [{
9311
+ selector: 'kendo-dropdownlist',
9312
+ changeDetection: ChangeDetectionStrategy.OnPush,
9104
9313
  exportAs: 'kendoDropDownList',
9105
9314
  providers: [
9106
9315
  DROPDOWNLIST_VALUE_ACCESSOR,
@@ -9122,7 +9331,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
9122
9331
  { provide: KENDO_WEBMCP_HOST, useExisting: forwardRef(() => DropDownListComponent) },
9123
9332
  provideComponentName('dropdownlist')
9124
9333
  ],
9125
- selector: 'kendo-dropdownlist',
9126
9334
  template: `
9127
9335
  <ng-container kendoDropDownListLocalizedMessages
9128
9336
  i18n-noDataText="kendo.dropdownlist.noDataText|The text displayed in the popup when there are no items"
@@ -9147,7 +9355,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
9147
9355
  listboxLabel="Options"
9148
9356
  >
9149
9357
  </ng-container>
9150
- <span class="k-input-inner" unselectable="on" [id]="valueLabelId" (click)="$event.preventDefault()">
9358
+ <span class="k-input-inner" unselectable="on" [id]="valueLabelId()" (click)="$event.preventDefault()">
9151
9359
  <span class="k-input-value-text">
9152
9360
  @if (valueTemplate) {
9153
9361
  <ng-template
@@ -9943,12 +10151,30 @@ class MultiSelectComponent {
9943
10151
  tagListId = `k-${guid()}`;
9944
10152
  tagPrefix = "tag-" + guid();
9945
10153
  optionPrefix = "option-" + guid();
9946
- popupRef;
9947
- text;
9948
- tags;
9949
- isAllSelected = false;
9950
- isPartiallySelected = false;
9951
- focusedTagIndex = undefined;
10154
+ get popupRef() {
10155
+ return this._popupRef();
10156
+ }
10157
+ set popupRef(value) {
10158
+ this._popupRef.set(value);
10159
+ }
10160
+ get isAllSelected() {
10161
+ return this._isAllSelected();
10162
+ }
10163
+ set isAllSelected(value) {
10164
+ this._isAllSelected.set(value);
10165
+ }
10166
+ set isPartiallySelected(value) {
10167
+ this._isPartiallySelected.set(value);
10168
+ }
10169
+ get isPartiallySelected() {
10170
+ return this._isPartiallySelected();
10171
+ }
10172
+ get text() { return this._text(); }
10173
+ set text(v) { this._text.set(v); }
10174
+ get tags() { return this._tags(); }
10175
+ set tags(v) { this._tags.set(v); }
10176
+ get focusedTagIndex() { return this._focusedTagIndex(); }
10177
+ set focusedTagIndex(v) { this._focusedTagIndex.set(v); }
9952
10178
  /**
9953
10179
  * @hidden
9954
10180
  */
@@ -10137,7 +10363,8 @@ class MultiSelectComponent {
10137
10363
  * Shows or hides the current group sticky header when using grouped data.
10138
10364
  * By default the sticky header is displayed ([see example](https://www.telerik.com/kendo-angular-ui/components/dropdowns/autocomplete/grouping#sticky-header)).
10139
10365
  */
10140
- showStickyHeader = true;
10366
+ set showStickyHeader(v) { this._showStickyHeader.set(v); }
10367
+ get showStickyHeader() { return this._showStickyHeader(); }
10141
10368
  /**
10142
10369
  * Renders a Select All sticky header item at the top of the popup list.
10143
10370
  * Clicking it selects or deselects all currently available items and triggers the `valueChange` event.
@@ -10157,19 +10384,22 @@ class MultiSelectComponent {
10157
10384
  /**
10158
10385
  * @hidden
10159
10386
  */
10160
- focusableId = `k-${guid()}`;
10387
+ set focusableId(v) { this._focusableId.set(v); }
10388
+ get focusableId() { return this._focusableId(); }
10161
10389
  /**
10162
10390
  * Controls whether the options list closes after item selection finishes ([see example](https://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselect/open-state#keeping-the-options-list-open-while-on-focus)).
10163
10391
  * Set to `false` to keep the list open while the component has focus.
10164
10392
  *
10165
10393
  * @default true
10166
10394
  */
10167
- autoClose = true;
10395
+ set autoClose(v) { this._autoClose.set(v); }
10396
+ get autoClose() { return this._autoClose(); }
10168
10397
  /**
10169
10398
  * Controls the loading state of the MultiSelect.
10170
10399
  * Set to `true` to display the loading indicator.
10171
10400
  */
10172
- loading;
10401
+ set loading(v) { this._loading.set(v); }
10402
+ get loading() { return this._loading(); }
10173
10403
  /**
10174
10404
  * Sets the data source for the MultiSelect.
10175
10405
  * Provide the data as an array of items.
@@ -10201,7 +10431,7 @@ class MultiSelectComponent {
10201
10431
  * > The component ignores selected values that don't exist in the data source.
10202
10432
  */
10203
10433
  set value(values) {
10204
- this._value = values ? values : [];
10434
+ this._value.set(values ? values : []);
10205
10435
  if (!this.differ && this.value) {
10206
10436
  this.differ = this.differs.find(this.value).create();
10207
10437
  }
@@ -10211,26 +10441,29 @@ class MultiSelectComponent {
10211
10441
  }
10212
10442
  }
10213
10443
  get value() {
10214
- return this._value;
10444
+ return this._value();
10215
10445
  }
10216
10446
  /**
10217
10447
  * Sets the field name that contains the item value in the data objects.
10218
10448
  * Skip this property when your data contains only primitive values.
10219
10449
  * Supports nested property paths like `category.id`.
10220
10450
  */
10221
- valueField;
10451
+ set valueField(v) { this._valueField.set(v); }
10452
+ get valueField() { return this._valueField(); }
10222
10453
  /**
10223
10454
  * Sets the field name that contains the item text in the data objects.
10224
10455
  * Skip this property when your data contains only primitive values.
10225
10456
  * Supports nested property paths like `category.name`.
10226
10457
  */
10227
- textField;
10458
+ set textField(v) { this._textField.set(v); }
10459
+ get textField() { return this._textField(); }
10228
10460
  /**
10229
10461
  * Sets the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) attribute of the component.
10230
10462
  *
10231
10463
  * @default 0
10232
10464
  */
10233
- tabindex = 0;
10465
+ set tabindex(v) { this._tabindex.set(v); }
10466
+ get tabindex() { return this._tabindex(); }
10234
10467
  /**
10235
10468
  * @hidden
10236
10469
  */
@@ -10248,10 +10481,10 @@ class MultiSelectComponent {
10248
10481
  if (size) {
10249
10482
  this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', size));
10250
10483
  }
10251
- this._size = size;
10484
+ this._size.set(size);
10252
10485
  }
10253
10486
  get size() {
10254
- return this._size;
10487
+ return this._size();
10255
10488
  }
10256
10489
  /**
10257
10490
  * Sets the border radius of the component. The default value is set by the Kendo theme.
@@ -10261,10 +10494,10 @@ class MultiSelectComponent {
10261
10494
  if (rounded) {
10262
10495
  this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(rounded));
10263
10496
  }
10264
- this._rounded = rounded;
10497
+ this._rounded.set(rounded);
10265
10498
  }
10266
10499
  get rounded() {
10267
- return this._rounded;
10500
+ return this._rounded();
10268
10501
  }
10269
10502
  /**
10270
10503
  * Sets the fill mode of the component. The default value is set by the Kendo theme.
@@ -10274,20 +10507,20 @@ class MultiSelectComponent {
10274
10507
  if (fillMode) {
10275
10508
  this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', fillMode));
10276
10509
  }
10277
- this._fillMode = fillMode;
10510
+ this._fillMode.set(fillMode);
10278
10511
  }
10279
10512
  get fillMode() {
10280
- return this._fillMode;
10513
+ return this._fillMode();
10281
10514
  }
10282
10515
  /**
10283
10516
  * Sets the placeholder text for the MultiSelect input.
10284
10517
  * When the values are selected, it disappears.
10285
10518
  */
10286
10519
  set placeholder(text) {
10287
- this._placeholder = text || '';
10520
+ this._placeholder.set(text || '');
10288
10521
  }
10289
10522
  get placeholder() {
10290
- return this.selectedDataItems.length ? '' : this._placeholder;
10523
+ return this.selectedDataItems.length ? '' : this._placeholder();
10291
10524
  }
10292
10525
  /**
10293
10526
  * Controls the adaptive mode behavior of the component.
@@ -10295,17 +10528,20 @@ class MultiSelectComponent {
10295
10528
  *
10296
10529
  * @default "none"
10297
10530
  */
10298
- adaptiveMode = 'none';
10531
+ set adaptiveMode(v) { this._adaptiveMode.set(v); }
10532
+ get adaptiveMode() { return this._adaptiveMode(); }
10299
10533
  /**
10300
10534
  * Sets the title text for the ActionSheet in adaptive mode.
10301
10535
  * Uses the component's label text by default.
10302
10536
  */
10303
- adaptiveTitle = '';
10537
+ set adaptiveTitle(v) { this._adaptiveTitle.set(v); }
10538
+ get adaptiveTitle() { return this._adaptiveTitle(); }
10304
10539
  /**
10305
10540
  * Sets the subtitle text for the ActionSheet in adaptive mode.
10306
10541
  * No subtitle appears by default.
10307
10542
  */
10308
- adaptiveSubtitle;
10543
+ set adaptiveSubtitle(v) { this._adaptiveSubtitle.set(v); }
10544
+ get adaptiveSubtitle() { return this._adaptiveSubtitle(); }
10309
10545
  /**
10310
10546
  * @hidden
10311
10547
  */
@@ -10319,7 +10555,8 @@ class MultiSelectComponent {
10319
10555
  *
10320
10556
  * @default false
10321
10557
  */
10322
- disabled = false;
10558
+ set disabled(v) { this._disabled.set(v); }
10559
+ get disabled() { return this._disabled(); }
10323
10560
  /**
10324
10561
  * Determines wether the item will be disabled. The function is executed for each data item.
10325
10562
  * The function receives the item as an argument and should return `true` if the item is disabled.
@@ -10337,10 +10574,10 @@ class MultiSelectComponent {
10337
10574
  * @default false
10338
10575
  */
10339
10576
  set checkboxes(settings) {
10340
- this._checkboxes = normalizeCheckboxesSettings(settings);
10577
+ this._checkboxes.set(normalizeCheckboxesSettings(settings));
10341
10578
  }
10342
10579
  get checkboxes() {
10343
- return this._checkboxes;
10580
+ return this._checkboxes();
10344
10581
  }
10345
10582
  /**
10346
10583
  * Controls the read-only state of the component.
@@ -10348,33 +10585,35 @@ class MultiSelectComponent {
10348
10585
  *
10349
10586
  * @default false
10350
10587
  */
10351
- readonly = false;
10588
+ get readonly() { return this._readonly(); }
10589
+ set readonly(v) { this._readonly.set(v); }
10352
10590
  /**
10353
10591
  * Enables the filtering functionality of the MultiSelect.
10354
10592
  * Set to `true` to allow users to filter the data by typing.
10355
10593
  *
10356
10594
  * @default false
10357
10595
  */
10358
- filterable = false;
10596
+ set filterable(v) { this._filterable.set(v); }
10597
+ get filterable() { return this._filterable(); }
10359
10598
  /**
10360
10599
  * Enables virtualization to improve performance with large datasets.
10361
10600
  * Pass `true` for default settings or an object to configure virtualization.
10362
10601
  */
10363
10602
  set virtual(settings) {
10364
- this._virtualSettings = normalizeVirtualizationSettings(settings);
10603
+ this._virtualSettings.set(normalizeVirtualizationSettings(settings));
10365
10604
  }
10366
10605
  get virtual() {
10367
- return this._virtualSettings;
10606
+ return this._virtualSettings();
10368
10607
  }
10369
10608
  /**
10370
10609
  * Configures the popup appearance and behavior.
10371
10610
  * Set properties like `animate`, `width`, `height`, `popupClass`, and `appendTo`.
10372
10611
  */
10373
10612
  set popupSettings(settings) {
10374
- this._popupSettings = Object.assign({ animate: true }, settings);
10613
+ this._popupSettings.set(Object.assign({ animate: true }, settings));
10375
10614
  }
10376
10615
  get popupSettings() {
10377
- return this._popupSettings;
10616
+ return this._popupSettings();
10378
10617
  }
10379
10618
  /**
10380
10619
  * Sets the height of the options list in the popup.
@@ -10382,29 +10621,28 @@ class MultiSelectComponent {
10382
10621
  *
10383
10622
  * @default 200
10384
10623
  */
10385
- set listHeight(_listHeight) {
10386
- this._listHeight = _listHeight;
10624
+ set listHeight(v) {
10625
+ this._listHeight.set(v);
10387
10626
  }
10388
10627
  get listHeight() {
10389
10628
  if (this.isAdaptive) {
10390
10629
  return;
10391
10630
  }
10392
- return this._listHeight;
10631
+ return this._listHeight();
10393
10632
  }
10394
- _listHeight = 200;
10395
10633
  /**
10396
10634
  * Controls the type of selected values.
10397
10635
  * Set to `true` for primitive values or `false` for object references.
10398
10636
  * When undefined, the component determines the type based on `valueField`.
10399
10637
  */
10400
10638
  set valuePrimitive(isPrimitive) {
10401
- this._valuePrimitive = isPrimitive;
10639
+ this._valuePrimitive.set(isPrimitive);
10402
10640
  }
10403
10641
  get valuePrimitive() {
10404
- if (!isPresent(this._valuePrimitive)) {
10642
+ if (!isPresent(this._valuePrimitive())) {
10405
10643
  return !isPresent(this.valueField);
10406
10644
  }
10407
- return this._valuePrimitive;
10645
+ return this._valuePrimitive();
10408
10646
  }
10409
10647
  /**
10410
10648
  * Controls whether a clear button appears when items are selected.
@@ -10412,14 +10650,16 @@ class MultiSelectComponent {
10412
10650
  *
10413
10651
  * @default true
10414
10652
  */
10415
- clearButton = true;
10653
+ set clearButton(v) { this._clearButton.set(v); }
10654
+ get clearButton() { return this._clearButton(); }
10416
10655
  /**
10417
10656
  * Sets a function that transforms selected data items into display tags.
10418
10657
  * Use this to customize how selected items appear as tags.
10419
10658
  *
10420
10659
  * @default (tags) => tags || []
10421
10660
  */
10422
- tagMapper = (tags) => tags || [];
10661
+ set tagMapper(fn) { this._tagMapper.set(fn); }
10662
+ get tagMapper() { return this._tagMapper(); }
10423
10663
  /**
10424
10664
  * Allows users to add custom values not present in the data source.
10425
10665
  * Set to `true` to enable custom value input.
@@ -10427,20 +10667,14 @@ class MultiSelectComponent {
10427
10667
  *
10428
10668
  * @default false
10429
10669
  */
10430
- allowCustom = false;
10670
+ set allowCustom(v) { this._allowCustom.set(v); }
10671
+ get allowCustom() { return this._allowCustom(); }
10431
10672
  /**
10432
10673
  * Sets a function that normalizes custom user input into data items.
10433
10674
  * Use this when your data items differ from simple strings.
10434
10675
  */
10435
- valueNormalizer = (text) => text.pipe(map((userInput) => {
10436
- const comparer = (item) => typeof item === 'string' && userInput.toLowerCase() === item.toLowerCase();
10437
- const matchingValue = this.value.find(comparer);
10438
- if (matchingValue) {
10439
- return matchingValue;
10440
- }
10441
- const matchingItem = this.dataService.find(comparer);
10442
- return matchingItem ? matchingItem : userInput;
10443
- }));
10676
+ set valueNormalizer(fn) { this._valueNormalizer.set(fn); }
10677
+ get valueNormalizer() { return this._valueNormalizer(); }
10444
10678
  /**
10445
10679
  * Sets HTML attributes for the inner input element.
10446
10680
  * You cannot change attributes essential for component functionality.
@@ -10448,7 +10682,8 @@ class MultiSelectComponent {
10448
10682
  * @remarks
10449
10683
  * This property is related to accessibility.
10450
10684
  */
10451
- inputAttributes;
10685
+ set inputAttributes(v) { this._inputAttributes.set(v); }
10686
+ get inputAttributes() { return this._inputAttributes(); }
10452
10687
  /**
10453
10688
  * Fires when the user types in the input field.
10454
10689
  * Use this event to filter the data source based on user input.
@@ -10571,9 +10806,11 @@ class MultiSelectComponent {
10571
10806
  }
10572
10807
  disabledIndices;
10573
10808
  initialized = false;
10574
- _size;
10575
- _rounded;
10576
- _fillMode;
10809
+ _isPartiallySelected = signal(false, ...(ngDevMode ? [{ debugName: "_isPartiallySelected" }] : []));
10810
+ _isAllSelected = signal(null, ...(ngDevMode ? [{ debugName: "_isAllSelected" }] : []));
10811
+ _size = signal(undefined, ...(ngDevMode ? [{ debugName: "_size" }] : []));
10812
+ _rounded = signal(undefined, ...(ngDevMode ? [{ debugName: "_rounded" }] : []));
10813
+ _fillMode = signal(undefined, ...(ngDevMode ? [{ debugName: "_fillMode" }] : []));
10577
10814
  _valueHolder = [];
10578
10815
  isCustomValueSelected = false;
10579
10816
  preserveFocusIndex = null;
@@ -10603,6 +10840,7 @@ class MultiSelectComponent {
10603
10840
  : pageData;
10604
10841
  return data;
10605
10842
  }
10843
+ _focusedTagIndex = signal(undefined, ...(ngDevMode ? [{ debugName: "_focusedTagIndex" }] : []));
10606
10844
  constructor(wrapper, localization, popupService, dataService, selectionService, navigationService, disabledItemsService, cdr, differs, renderer, _zone, injector, adaptiveService) {
10607
10845
  this.wrapper = wrapper;
10608
10846
  this.localization = localization;
@@ -10822,7 +11060,7 @@ class MultiSelectComponent {
10822
11060
  this.addCustomValue(this.text);
10823
11061
  this.addCustomValue(text);
10824
11062
  }
10825
- this.text = text;
11063
+ this._text.set(text);
10826
11064
  if (text && !this.isOpen) {
10827
11065
  this.openPopup();
10828
11066
  }
@@ -10852,7 +11090,7 @@ class MultiSelectComponent {
10852
11090
  if (this.filterable && this.text) {
10853
11091
  this.filterChange.emit("");
10854
11092
  }
10855
- this.text = "";
11093
+ this._text.set('');
10856
11094
  /* Clearing the value from the input as the setInputSize calculation will be incorrect otherwise.
10857
11095
  Calling cdr.detectChanges to clear the input value as a result of property binding
10858
11096
  causes JAWS to read outdated tag values in IE upon tag selection for some reason. */
@@ -10983,13 +11221,23 @@ class MultiSelectComponent {
10983
11221
  this.searchbar.setInputSize();
10984
11222
  this.subs.add(this.renderer.listen(this.wrapper.nativeElement, 'mousedown', this.handleMousedown.bind(this)));
10985
11223
  this.subs.add(this.renderer.listen(this.wrapper.nativeElement, 'keydown', this.handleKeydown.bind(this)));
10986
- this._zone.onStable.pipe(take(1)).subscribe(() => {
10987
- const ariaLabel = this.searchbar.input.nativeElement.getAttribute('aria-labelledby') ||
10988
- this.searchbar.input.nativeElement.getAttribute('data-kendo-label-id');
10989
- if (ariaLabel) {
10990
- this.renderer.setAttribute(this.tagList.hostElement.nativeElement, 'aria-labelledby', ariaLabel);
10991
- }
11224
+ runInInjectionContext(this.injector, () => {
11225
+ afterNextRender(() => {
11226
+ const ariaLabel = this.searchbar.input.nativeElement.getAttribute('aria-labelledby') ||
11227
+ this.searchbar.input.nativeElement.getAttribute('data-kendo-label-id');
11228
+ if (ariaLabel) {
11229
+ this.renderer.setAttribute(this.tagList.hostElement.nativeElement, 'aria-labelledby', ariaLabel);
11230
+ }
11231
+ });
10992
11232
  });
11233
+ const control = this.formControl;
11234
+ if (control && control.events) {
11235
+ this.subs.add(control.events.subscribe(e => {
11236
+ if (e instanceof TouchedChangeEvent) {
11237
+ this.cdr.markForCheck();
11238
+ }
11239
+ }));
11240
+ }
10993
11241
  }
10994
11242
  ngOnDestroy() {
10995
11243
  this._toggle(false);
@@ -11006,23 +11254,22 @@ class MultiSelectComponent {
11006
11254
  // The Promise is required for opening the popup on load.
11007
11255
  // Otherwise, the "Expression has changed..." type error will be thrown.
11008
11256
  Promise.resolve(null).then(() => {
11009
- const shouldOpen = isPresent(open) ? open : !this._open;
11257
+ const shouldOpen = isPresent(open) ? open : !this._open();
11010
11258
  this._toggle(shouldOpen);
11011
- this.cdr.markForCheck();
11012
11259
  });
11013
11260
  }
11014
11261
  /**
11015
11262
  * Returns the current open state. Returns `true` if the popup or actionSheet is open.
11016
11263
  */
11017
11264
  get isOpen() {
11018
- return isTruthy(this._open || this.isActionSheetExpanded);
11265
+ return isTruthy(this._open() || this.isActionSheetExpanded);
11019
11266
  }
11020
11267
  /**
11021
11268
  * Resets the MultiSelect by clearing the text and value.
11022
11269
  * This method does not trigger the `selectionChange` and `valueChange` events.
11023
11270
  */
11024
11271
  reset() {
11025
- this.text = "";
11272
+ this._text.set('');
11026
11273
  this.value = [];
11027
11274
  }
11028
11275
  /**
@@ -11054,7 +11301,6 @@ class MultiSelectComponent {
11054
11301
  * @hidden
11055
11302
  */
11056
11303
  setDisabledState(isDisabled) {
11057
- this.cdr.markForCheck();
11058
11304
  this.disabled = isDisabled;
11059
11305
  }
11060
11306
  /**
@@ -11068,13 +11314,43 @@ class MultiSelectComponent {
11068
11314
  }
11069
11315
  onChangeCallback = (_) => { };
11070
11316
  onTouchedCallback = (_) => { };
11071
- _placeholder = '';
11072
- _open = false;
11073
- _value = [];
11074
- _popupSettings = { animate: true };
11075
- _virtualSettings;
11076
- _valuePrimitive;
11077
- _checkboxes = { enabled: false };
11317
+ _popupRef = signal(null, ...(ngDevMode ? [{ debugName: "_popupRef" }] : []));
11318
+ _placeholder = signal('', ...(ngDevMode ? [{ debugName: "_placeholder" }] : []));
11319
+ _open = signal(false, ...(ngDevMode ? [{ debugName: "_open" }] : []));
11320
+ _value = signal([], ...(ngDevMode ? [{ debugName: "_value" }] : []));
11321
+ _popupSettings = signal({ animate: true }, ...(ngDevMode ? [{ debugName: "_popupSettings" }] : []));
11322
+ _virtualSettings = signal(undefined, ...(ngDevMode ? [{ debugName: "_virtualSettings" }] : []));
11323
+ _valuePrimitive = signal(undefined, ...(ngDevMode ? [{ debugName: "_valuePrimitive" }] : []));
11324
+ _checkboxes = signal({ enabled: false }, ...(ngDevMode ? [{ debugName: "_checkboxes" }] : []));
11325
+ _text = signal(undefined, ...(ngDevMode ? [{ debugName: "_text" }] : []));
11326
+ _tags = signal(undefined, ...(ngDevMode ? [{ debugName: "_tags" }] : []));
11327
+ _showStickyHeader = signal(true, ...(ngDevMode ? [{ debugName: "_showStickyHeader" }] : []));
11328
+ _focusableId = signal(`k-${guid()}`, ...(ngDevMode ? [{ debugName: "_focusableId" }] : []));
11329
+ _autoClose = signal(true, ...(ngDevMode ? [{ debugName: "_autoClose" }] : []));
11330
+ _loading = signal(undefined, ...(ngDevMode ? [{ debugName: "_loading" }] : []));
11331
+ _valueField = signal(undefined, ...(ngDevMode ? [{ debugName: "_valueField" }] : []));
11332
+ _textField = signal(undefined, ...(ngDevMode ? [{ debugName: "_textField" }] : []));
11333
+ _tabindex = signal(0, ...(ngDevMode ? [{ debugName: "_tabindex" }] : []));
11334
+ _adaptiveMode = signal('none', ...(ngDevMode ? [{ debugName: "_adaptiveMode" }] : []));
11335
+ _adaptiveTitle = signal('', ...(ngDevMode ? [{ debugName: "_adaptiveTitle" }] : []));
11336
+ _adaptiveSubtitle = signal(undefined, ...(ngDevMode ? [{ debugName: "_adaptiveSubtitle" }] : []));
11337
+ _disabled = signal(false, ...(ngDevMode ? [{ debugName: "_disabled" }] : []));
11338
+ _readonly = signal(false, ...(ngDevMode ? [{ debugName: "_readonly" }] : []));
11339
+ _filterable = signal(false, ...(ngDevMode ? [{ debugName: "_filterable" }] : []));
11340
+ _clearButton = signal(true, ...(ngDevMode ? [{ debugName: "_clearButton" }] : []));
11341
+ _tagMapper = signal((tags) => tags || [], ...(ngDevMode ? [{ debugName: "_tagMapper" }] : []));
11342
+ _allowCustom = signal(false, ...(ngDevMode ? [{ debugName: "_allowCustom" }] : []));
11343
+ _valueNormalizer = signal((text) => text.pipe(map((userInput) => {
11344
+ const comparer = (item) => typeof item === 'string' && userInput.toLowerCase() === item.toLowerCase();
11345
+ const matchingValue = this.value.find(comparer);
11346
+ if (matchingValue) {
11347
+ return matchingValue;
11348
+ }
11349
+ const matchingItem = this.dataService.find(comparer);
11350
+ return matchingItem ? matchingItem : userInput;
11351
+ })), ...(ngDevMode ? [{ debugName: "_valueNormalizer" }] : []));
11352
+ _inputAttributes = signal(undefined, ...(ngDevMode ? [{ debugName: "_inputAttributes" }] : []));
11353
+ _listHeight = signal(200, ...(ngDevMode ? [{ debugName: "_listHeight" }] : []));
11078
11354
  _isFocused = false;
11079
11355
  set isFocused(isFocused) {
11080
11356
  this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-focus');
@@ -11243,7 +11519,9 @@ class MultiSelectComponent {
11243
11519
  const itemIndex = this.dataService.indexOf(newValue);
11244
11520
  const customItem = itemIndex === -1;
11245
11521
  if (this.value.indexOf(newValue) === -1) {
11246
- !this.isActionSheetExpanded && (this.tags = this.buildTags([...this.selectedDataItems, normalizedValue]));
11522
+ if (!this.isActionSheetExpanded) {
11523
+ this.tags = this.buildTags([...this.selectedDataItems, normalizedValue]);
11524
+ }
11247
11525
  if (!customItem) {
11248
11526
  this.selectionService.add(itemIndex);
11249
11527
  }
@@ -11386,6 +11664,7 @@ class MultiSelectComponent {
11386
11664
  this.selectionService.selectFromTo(0, dataItemsCount - 1);
11387
11665
  this.selectionService.emitMultipleAddedRemoved();
11388
11666
  }
11667
+ this.cdr.markForCheck();
11389
11668
  }
11390
11669
  handleSelectAllToBeginning() {
11391
11670
  const selectedItemsCount = this.selectionService.selected.length;
@@ -11565,14 +11844,14 @@ class MultiSelectComponent {
11565
11844
  return eventArgs.isDefaultPrevented();
11566
11845
  }
11567
11846
  _toggle(open) {
11568
- this._open = open;
11847
+ this._open.set(open);
11569
11848
  this.destroyPopup();
11570
11849
  if (this.isActionSheetExpanded) {
11571
11850
  this.actionSheet.toggle(false);
11572
11851
  this.closed.emit();
11573
11852
  this.isFocused = false;
11574
11853
  }
11575
- if (this._open) {
11854
+ if (this._open()) {
11576
11855
  this.createPopup();
11577
11856
  }
11578
11857
  }
@@ -11624,7 +11903,7 @@ class MultiSelectComponent {
11624
11903
  if (!this.dataService.grouped) {
11625
11904
  setListBoxAriaLabelledBy(this.optionsList, this.searchbar.input, this.renderer);
11626
11905
  }
11627
- this.optionsList.scrollToItem(this.selectionService.focused);
11906
+ this.optionsList?.scrollToItem(this.selectionService.focused);
11628
11907
  this.selectionService.focus(this.selectionService.focused);
11629
11908
  this.opened.emit();
11630
11909
  });
@@ -12025,12 +12304,14 @@ class MultiSelectComponent {
12025
12304
  </ng-template>
12026
12305
  }
12027
12306
  </ng-template>
12028
- `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { kind: "directive", type: SharedDropDownEventsDirective, selector: "[kendoDropDownSharedEvents]", inputs: ["hostElement", "clearButtonClicked", "isFocused"], outputs: ["isFocusedChange", "onFocus", "handleBlur"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SeparatorComponent, selector: "kendo-separator", inputs: ["orientation"] }, { kind: "component", type: TagListComponent, selector: "kendo-taglist", inputs: ["tags", "textField", "valueField", "valueDepth", "focused", "template", "groupTemplate", "disabled", "tagPrefix", "id", "ariaLabel", "size", "rounded", "fillMode", "disabledIndices"], outputs: ["removeTag"] }, { kind: "component", type: SearchBarComponent, selector: "input[kendoSearchbar]", inputs: ["tagListId", "readonly", "disabled", "isRequired", "isSuggestable", "hasListAutocomplete", "userInput", "suggestedText", "inputAttributes", "id", "activeDescendant", "tabIndex", "isLoading", "ariaControls", "ariaExpanded", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-adaptive-renderer", inputs: ["title", "subtitle", "showTextInput", "sharedPopupActionSheetTemplate", "text", "placeholder", "searchBarValue", "filterable", "showListContainer"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "component", type: ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "ariaLive", "ariaLabel", "isMultiselect", "isActionSheetExpanded", "showStickyHeader", "rowWidth", "columnsWidths", "customItemTemplate", "text", "allowCustom", "defaultItem", "selectAll", "selectAllText", "isAllSelected", "isPartiallySelected", "data", "size", "rounded"], outputs: ["selectAllClick", "onClick", "pageChange", "listResize", "popupListScroll"] }] });
12307
+ `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { kind: "directive", type: SharedDropDownEventsDirective, selector: "[kendoDropDownSharedEvents]", inputs: ["hostElement", "clearButtonClicked", "isFocused"], outputs: ["isFocusedChange", "onFocus", "handleBlur"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SeparatorComponent, selector: "kendo-separator", inputs: ["orientation"] }, { kind: "component", type: TagListComponent, selector: "kendo-taglist", inputs: ["tags", "textField", "valueField", "valueDepth", "focused", "template", "groupTemplate", "disabled", "tagPrefix", "id", "ariaLabel", "size", "rounded", "fillMode", "disabledIndices"], outputs: ["removeTag"] }, { kind: "component", type: SearchBarComponent, selector: "input[kendoSearchbar]", inputs: ["tagListId", "readonly", "disabled", "isRequired", "isSuggestable", "hasListAutocomplete", "userInput", "suggestedText", "inputAttributes", "id", "activeDescendant", "tabIndex", "isLoading", "ariaControls", "ariaExpanded", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-adaptive-renderer", inputs: ["title", "subtitle", "showTextInput", "sharedPopupActionSheetTemplate", "text", "placeholder", "searchBarValue", "filterable", "showListContainer"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "component", type: ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "ariaLive", "ariaLabel", "isMultiselect", "isActionSheetExpanded", "showStickyHeader", "rowWidth", "columnsWidths", "customItemTemplate", "text", "allowCustom", "defaultItem", "selectAll", "selectAllText", "isAllSelected", "isPartiallySelected", "data", "size", "rounded"], outputs: ["selectAllClick", "onClick", "pageChange", "listResize", "popupListScroll"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12029
12308
  }
12030
12309
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: MultiSelectComponent, decorators: [{
12031
12310
  type: Component,
12032
12311
  args: [{
12312
+ selector: 'kendo-multiselect',
12033
12313
  exportAs: 'kendoMultiSelect',
12314
+ changeDetection: ChangeDetectionStrategy.OnPush,
12034
12315
  providers: [
12035
12316
  MULTISELECT_VALUE_ACCESSOR,
12036
12317
  DataService,
@@ -12053,7 +12334,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
12053
12334
  },
12054
12335
  provideComponentName('multiselect')
12055
12336
  ],
12056
- selector: 'kendo-multiselect',
12057
12337
  template: `
12058
12338
  <ng-container kendoMultiSelectLocalizedMessages
12059
12339
  i18n-noDataText="kendo.multiselect.noDataText|The text displayed in the popup when there are no items"
@@ -12684,8 +12964,10 @@ class MultiColumnComboBoxComponent extends ComboBoxComponent {
12684
12964
  set headerTable(headerTable) {
12685
12965
  this._headerTable = headerTable;
12686
12966
  if (this.headerTable) {
12687
- this.zone.onStable.pipe(take(1)).subscribe(() => {
12688
- this.rowWidth = this.calculateRowWidth();
12967
+ runInInjectionContext(this.injector, () => {
12968
+ afterNextRender(() => {
12969
+ this.rowWidth.set(this.calculateRowWidth());
12970
+ });
12689
12971
  });
12690
12972
  }
12691
12973
  }
@@ -12696,18 +12978,20 @@ class MultiColumnComboBoxComponent extends ComboBoxComponent {
12696
12978
  * @hidden
12697
12979
  */
12698
12980
  set headerColumns(columns) {
12699
- this.zone.onStable.pipe(take(1)).subscribe(() => {
12700
- this.headerColumnWidths = columns.map(column => column.nativeElement.offsetWidth);
12981
+ runInInjectionContext(this.injector, () => {
12982
+ afterNextRender(() => {
12983
+ this.headerColumnWidths.set(columns.map(column => column.nativeElement.offsetWidth));
12984
+ });
12701
12985
  });
12702
12986
  }
12703
12987
  /**
12704
12988
  * @hidden
12705
12989
  */
12706
- rowWidth;
12990
+ rowWidth = signal(undefined, ...(ngDevMode ? [{ debugName: "rowWidth" }] : []));
12707
12991
  /**
12708
12992
  * @hidden
12709
12993
  */
12710
- headerColumnWidths = [];
12994
+ headerColumnWidths = signal([], ...(ngDevMode ? [{ debugName: "headerColumnWidths" }] : []));
12711
12995
  /**
12712
12996
  * @hidden
12713
12997
  */
@@ -12766,12 +13050,20 @@ class MultiColumnComboBoxComponent extends ComboBoxComponent {
12766
13050
  this.updateColumnsMediaState();
12767
13051
  this.addWindowResizeListener();
12768
13052
  this.windowSize = this.adaptiveService.size;
12769
- this.rowWidth = this.calculateRowWidth();
13053
+ this.rowWidth.set(this.calculateRowWidth());
12770
13054
  this.totalColumnsWidth = this.columns.reduce((total, currentColumn) => total + currentColumn.width, 0);
12771
13055
  this.columnsChangeSubscription = this.columns.changes.subscribe(() => {
12772
- this.rowWidth = this.calculateRowWidth();
13056
+ this.rowWidth.set(this.calculateRowWidth());
12773
13057
  this.totalColumnsWidth = this.columns.reduce((total, currentColumn) => total + currentColumn.width, 0);
12774
13058
  });
13059
+ const control = this.formControl;
13060
+ if (control && control.events) {
13061
+ this.subs.add(control.events.subscribe(e => {
13062
+ if (e instanceof TouchedChangeEvent) {
13063
+ this.cdr.markForCheck();
13064
+ }
13065
+ }));
13066
+ }
12775
13067
  this.cdr.detectChanges();
12776
13068
  }
12777
13069
  ngOnDestroy() {
@@ -12815,7 +13107,7 @@ class MultiColumnComboBoxComponent extends ComboBoxComponent {
12815
13107
  if (!this.virtual) {
12816
13108
  return this.columns.get(index).width;
12817
13109
  }
12818
- return this.headerColumnWidths[index];
13110
+ return this.headerColumnWidths()[index];
12819
13111
  }
12820
13112
  verifySettings() {
12821
13113
  if (!isDevMode()) {
@@ -13122,8 +13414,8 @@ class MultiColumnComboBoxComponent extends ComboBoxComponent {
13122
13414
  [id]="listBoxId"
13123
13415
  [virtual]="virtual"
13124
13416
  [type]="'dropdowngrid'"
13125
- [rowWidth]="rowWidth"
13126
13417
  [columnsWidths]="visibleColumnsWidths"
13418
+ [rowWidth]="rowWidth()"
13127
13419
  [showStickyHeader]="showStickyHeader"
13128
13420
  [ariaLabel]="messageFor('listboxLabel')"
13129
13421
  (pageChange)="pageChange($event)"
@@ -13164,11 +13456,13 @@ class MultiColumnComboBoxComponent extends ComboBoxComponent {
13164
13456
  }
13165
13457
  </div>
13166
13458
  </ng-template>
13167
- `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { kind: "directive", type: SharedDropDownEventsDirective, selector: "[kendoDropDownSharedEvents]", inputs: ["hostElement", "clearButtonClicked", "isFocused"], outputs: ["isFocusedChange", "onFocus", "handleBlur"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SeparatorComponent, selector: "kendo-separator", inputs: ["orientation"] }, { kind: "component", type: SearchBarComponent, selector: "input[kendoSearchbar]", inputs: ["tagListId", "readonly", "disabled", "isRequired", "isSuggestable", "hasListAutocomplete", "userInput", "suggestedText", "inputAttributes", "id", "activeDescendant", "tabIndex", "isLoading", "ariaControls", "ariaExpanded", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-adaptive-renderer", inputs: ["title", "subtitle", "showTextInput", "sharedPopupActionSheetTemplate", "text", "placeholder", "searchBarValue", "filterable", "showListContainer"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "ariaLive", "ariaLabel", "isMultiselect", "isActionSheetExpanded", "showStickyHeader", "rowWidth", "columnsWidths", "customItemTemplate", "text", "allowCustom", "defaultItem", "selectAll", "selectAllText", "isAllSelected", "isPartiallySelected", "data", "size", "rounded"], outputs: ["selectAllClick", "onClick", "pageChange", "listResize", "popupListScroll"] }] });
13459
+ `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { kind: "directive", type: SharedDropDownEventsDirective, selector: "[kendoDropDownSharedEvents]", inputs: ["hostElement", "clearButtonClicked", "isFocused"], outputs: ["isFocusedChange", "onFocus", "handleBlur"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SeparatorComponent, selector: "kendo-separator", inputs: ["orientation"] }, { kind: "component", type: SearchBarComponent, selector: "input[kendoSearchbar]", inputs: ["tagListId", "readonly", "disabled", "isRequired", "isSuggestable", "hasListAutocomplete", "userInput", "suggestedText", "inputAttributes", "id", "activeDescendant", "tabIndex", "isLoading", "ariaControls", "ariaExpanded", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-adaptive-renderer", inputs: ["title", "subtitle", "showTextInput", "sharedPopupActionSheetTemplate", "text", "placeholder", "searchBarValue", "filterable", "showListContainer"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "ariaLive", "ariaLabel", "isMultiselect", "isActionSheetExpanded", "showStickyHeader", "rowWidth", "columnsWidths", "customItemTemplate", "text", "allowCustom", "defaultItem", "selectAll", "selectAllText", "isAllSelected", "isPartiallySelected", "data", "size", "rounded"], outputs: ["selectAllClick", "onClick", "pageChange", "listResize", "popupListScroll"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13168
13460
  }
13169
13461
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: MultiColumnComboBoxComponent, decorators: [{
13170
13462
  type: Component,
13171
13463
  args: [{
13464
+ selector: 'kendo-multicolumncombobox',
13465
+ changeDetection: ChangeDetectionStrategy.OnPush,
13172
13466
  providers: [
13173
13467
  SelectionService,
13174
13468
  DataService,
@@ -13202,7 +13496,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
13202
13496
  },
13203
13497
  provideComponentName('multicolumncombobox')
13204
13498
  ],
13205
- selector: 'kendo-multicolumncombobox',
13206
13499
  template: `
13207
13500
  <ng-container
13208
13501
  kendoMultiColumnComboBoxLocalizedMessages
@@ -13435,8 +13728,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
13435
13728
  [id]="listBoxId"
13436
13729
  [virtual]="virtual"
13437
13730
  [type]="'dropdowngrid'"
13438
- [rowWidth]="rowWidth"
13439
13731
  [columnsWidths]="visibleColumnsWidths"
13732
+ [rowWidth]="rowWidth()"
13440
13733
  [showStickyHeader]="showStickyHeader"
13441
13734
  [ariaLabel]="messageFor('listboxLabel')"
13442
13735
  (pageChange)="pageChange($event)"
@@ -13556,11 +13849,13 @@ class DropDownTreeComponent {
13556
13849
  /**
13557
13850
  * @hidden
13558
13851
  */
13559
- icon;
13852
+ set icon(value) { this._icon.set(value); }
13853
+ get icon() { return this._icon(); }
13560
13854
  /**
13561
13855
  * @hidden
13562
13856
  */
13563
- svgIcon;
13857
+ set svgIcon(value) { this._svgIcon.set(value); }
13858
+ get svgIcon() { return this._svgIcon(); }
13564
13859
  /**
13565
13860
  * @hidden
13566
13861
  */
@@ -13601,6 +13896,9 @@ class DropDownTreeComponent {
13601
13896
  get isReadonly() {
13602
13897
  return this.readonly ? '' : null;
13603
13898
  }
13899
+ get isReadonlyClass() {
13900
+ return this.readonly;
13901
+ }
13604
13902
  get hostAriaInvalid() {
13605
13903
  return (this.formControl?.invalid && (this.formControl?.touched || this.formControl?.dirty)) ? true : null;
13606
13904
  }
@@ -13702,23 +14000,25 @@ class DropDownTreeComponent {
13702
14000
  /**
13703
14001
  * Sets and gets the loading state of the DropDownTree.
13704
14002
  */
13705
- loading;
14003
+ set loading(value) { this._loading.set(value); }
14004
+ get loading() { return this._loading(); }
13706
14005
  /**
13707
14006
  * If set to `true`, renders a button on hovering over the component.
13708
14007
  * Clicking this button resets the value of the component to `undefined` and triggers the `change` event.
13709
14008
  */
13710
- clearButton = true;
14009
+ set clearButton(value) { this._clearButton.set(value); }
14010
+ get clearButton() { return this._clearButton(); }
13711
14011
  /**
13712
14012
  * Sets the data of the DropDownTree.
13713
14013
  *
13714
14014
  * > The data has to be provided in an array-like list with objects.
13715
14015
  */
13716
14016
  set data(data) {
13717
- this._nodes = data;
14017
+ this._data.set(data);
13718
14018
  this.setState();
13719
14019
  }
13720
14020
  get data() {
13721
- return this._nodes;
14021
+ return this._data();
13722
14022
  }
13723
14023
  /**
13724
14024
  * Sets the value of the DropDownTree.
@@ -13727,11 +14027,11 @@ class DropDownTreeComponent {
13727
14027
  *
13728
14028
  */
13729
14029
  set value(newValue) {
13730
- this._value = newValue;
14030
+ this._value.set(newValue);
13731
14031
  this.setState();
13732
14032
  }
13733
14033
  get value() {
13734
- return this._value;
14034
+ return this._value();
13735
14035
  }
13736
14036
  /**
13737
14037
  * The fields of the data item that provide the text content of the nodes inside the
@@ -13741,7 +14041,8 @@ class DropDownTreeComponent {
13741
14041
  *
13742
14042
  * > The `textField` property can be set to point to a nested property value - e.g. `category.name`.
13743
14043
  */
13744
- textField;
14044
+ set textField(value) { this._textField.set(value); }
14045
+ get textField() { return this._textField(); }
13745
14046
  /**
13746
14047
  * The fields of the data item that provide the value of the nodes inside the
13747
14048
  * DropDownTree ([see example](https://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdowntree/data-binding)). If the `valueField`
@@ -13750,24 +14051,29 @@ class DropDownTreeComponent {
13750
14051
  *
13751
14052
  * > The `valueField` property can be set to point to a nested property value - e.g. `category.id`.
13752
14053
  */
13753
- valueField;
14054
+ set valueField(value) { this._valueField.set(value); }
14055
+ get valueField() { return this._valueField(); }
13754
14056
  /**
13755
14057
  * Sets the level in the data set where the value can be found when `valueField` is an Array.
13756
14058
  * The field serves to correctly allocate a data item used when the DropDownTree is initialized with a value.
13757
14059
  */
13758
- valueDepth;
14060
+ set valueDepth(value) { this._valueDepth.set(value); }
14061
+ get valueDepth() { return this._valueDepth(); }
13759
14062
  /**
13760
14063
  * A function which determines if a specific node has child nodes.
13761
14064
  */
13762
- hasChildren = hasChildren$1;
14065
+ set hasChildren(fn) { this._hasChildren.set(fn); }
14066
+ get hasChildren() { return this._hasChildren(); }
13763
14067
  /**
13764
14068
  * A function which provides the child nodes for a given parent node.
13765
14069
  */
13766
- fetchChildren = fetchChildren$1;
14070
+ set fetchChildren(fn) { this._fetchChildren.set(fn); }
14071
+ get fetchChildren() { return this._fetchChildren(); }
13767
14072
  /**
13768
14073
  * Sets the placeholder of the input element of the DropDownTree.
13769
14074
  */
13770
- placeholder = "";
14075
+ set placeholder(value) { this._placeholder.set(value); }
14076
+ get placeholder() { return this._placeholder(); }
13771
14077
  /**
13772
14078
  * Configures the popup of the DropDownTree.
13773
14079
  *
@@ -13779,21 +14085,21 @@ class DropDownTreeComponent {
13779
14085
  * - `appendTo: "root" | "component" | ViewContainerRef`&mdash;Specifies the component to which the popup will be appended.
13780
14086
  */
13781
14087
  set popupSettings(settings) {
13782
- this._popupSettings = Object.assign({}, DEFAULT_POPUP_SETTINGS$1, settings);
14088
+ this._popupSettings.set(Object.assign({}, DEFAULT_POPUP_SETTINGS$1, settings));
13783
14089
  }
13784
14090
  get popupSettings() {
13785
- return this._popupSettings;
14091
+ return this._popupSettings();
13786
14092
  }
13787
14093
  /**
13788
14094
  * Keeps the current `dataItem` object in order to resolve selection.
13789
14095
  * Needs to be provided when `value` is bound in and `valuePrimitive` is set to true.
13790
14096
  */
13791
14097
  set dataItem(item) {
13792
- this._dataItem = item;
14098
+ this._dataItem.set(item);
13793
14099
  this.setState();
13794
14100
  }
13795
14101
  get dataItem() {
13796
- return this._dataItem ? this._dataItem : this.value;
14102
+ return this._dataItem() ? this._dataItem() : this.value;
13797
14103
  }
13798
14104
  /**
13799
14105
  * Sets the height of the options list in the popup. By default, `listHeight` is 200px.
@@ -13804,31 +14110,33 @@ class DropDownTreeComponent {
13804
14110
  * When using `adaptiveMode` and the screen size is `small` or `medium` the `listHeight` property is set to null.
13805
14111
  */
13806
14112
  set listHeight(_listHeight) {
13807
- this._listHeight = _listHeight;
14113
+ this._listHeight.set(_listHeight);
13808
14114
  }
13809
14115
  get listHeight() {
13810
14116
  if (this.isAdaptive) {
13811
14117
  return;
13812
14118
  }
13813
- return this._listHeight;
14119
+ return this._listHeight();
13814
14120
  }
13815
- _listHeight = 200;
13816
14121
  /**
13817
14122
  * Sets the disabled state of the component. To learn how to disable the component in reactive forms, refer to the article on [Forms Support](https://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdowntree/forms#managing-the-dropdowntree-disabled-state-in-reactive-forms).
13818
14123
  */
13819
- disabled = false;
14124
+ set disabled(value) { this._disabled.set(value); }
14125
+ get disabled() { return this._disabled(); }
13820
14126
  /**
13821
14127
  * Sets the read-only state of the component.
13822
14128
  *
13823
14129
  * @default false
13824
14130
  */
13825
- readonly = false;
14131
+ set readonly(value) { this._readonly.set(value); }
14132
+ get readonly() { return this._readonly(); }
13826
14133
  /**
13827
14134
  * Specifies the type of the selected value
13828
14135
  * ([more information and example](https://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdowntree/value-binding#primitive-values)).
13829
14136
  * If set to `true`, the selected value has to be of a primitive value.
13830
14137
  */
13831
- valuePrimitive = false;
14138
+ set valuePrimitive(value) { this._valuePrimitive.set(value); }
14139
+ get valuePrimitive() { return this._valuePrimitive(); }
13832
14140
  /**
13833
14141
  * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.
13834
14142
  *
@@ -13837,10 +14145,10 @@ class DropDownTreeComponent {
13837
14145
  set tabindex(value) {
13838
14146
  const providedTabIndex = Number(value);
13839
14147
  const defaultTabIndex = 0;
13840
- this._tabindex = !isNaN(providedTabIndex) ? providedTabIndex : defaultTabIndex;
14148
+ this._tabindex.set(!isNaN(providedTabIndex) ? providedTabIndex : defaultTabIndex);
13841
14149
  }
13842
14150
  get tabindex() {
13843
- return this.disabled ? -1 : this._tabindex;
14151
+ return this.disabled ? -1 : this._tabindex();
13844
14152
  }
13845
14153
  /**
13846
14154
  * Sets the size of the component. The default value is set by the Kendo theme.
@@ -13850,10 +14158,10 @@ class DropDownTreeComponent {
13850
14158
  if (size) {
13851
14159
  this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('picker', size));
13852
14160
  }
13853
- this._size = size;
14161
+ this._size.set(size);
13854
14162
  }
13855
14163
  get size() {
13856
- return this._size;
14164
+ return this._size();
13857
14165
  }
13858
14166
  /**
13859
14167
  * Sets the border radius of the component. The default value is set by the Kendo theme.
@@ -13863,10 +14171,10 @@ class DropDownTreeComponent {
13863
14171
  if (rounded) {
13864
14172
  this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(rounded));
13865
14173
  }
13866
- this._rounded = rounded;
14174
+ this._rounded.set(rounded);
13867
14175
  }
13868
14176
  get rounded() {
13869
- return this._rounded;
14177
+ return this._rounded();
13870
14178
  }
13871
14179
  /**
13872
14180
  * Sets the fillMode of the component. The default value is set by the Kendo theme.
@@ -13876,51 +14184,58 @@ class DropDownTreeComponent {
13876
14184
  if (fillMode) {
13877
14185
  this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('picker', fillMode));
13878
14186
  }
13879
- this._fillMode = fillMode;
14187
+ this._fillMode.set(fillMode);
13880
14188
  }
13881
14189
  get fillMode() {
13882
- return this._fillMode;
14190
+ return this._fillMode();
13883
14191
  }
13884
14192
  /**
13885
14193
  * A function that is executed for each data item and determines if a specific item is disabled.
13886
14194
  */
13887
- itemDisabled = itemDisabled$1;
14195
+ set itemDisabled(fn) { this._itemDisabled.set(fn); }
14196
+ get itemDisabled() { return this._itemDisabled(); }
13888
14197
  /**
13889
14198
  * A function that is executed for each data item and determines if a specific node is expanded.
13890
14199
  */
13891
- isNodeExpanded;
14200
+ set isNodeExpanded(fn) { this._isNodeExpanded.set(fn); }
14201
+ get isNodeExpanded() { return this._isNodeExpanded(); }
13892
14202
  /**
13893
14203
  * A callback which determines whether a tree node should be rendered as hidden. The utility `.k-hidden` class is used to hide the nodes.
13894
14204
  * Useful for custom filtering implementations.
13895
14205
  */
13896
- isNodeVisible = isNodeVisible$1;
14206
+ set isNodeVisible(fn) { this._isNodeVisible.set(fn); }
14207
+ get isNodeVisible() { return this._isNodeVisible(); }
13897
14208
  /**
13898
14209
  * Indicates whether the child nodes will be fetched on node expand or will be initially prefetched.
13899
14210
  * @default true
13900
14211
  */
13901
- loadOnDemand = true;
14212
+ set loadOnDemand(value) { this._loadOnDemand.set(value); }
14213
+ get loadOnDemand() { return this._loadOnDemand(); }
13902
14214
  /**
13903
14215
  * Renders the built-in input element for filtering the DropDownTree.
13904
14216
  * If set to `true`, the component emits the `filterChange` event, which can be used to [filter the DropDownTree manually](https://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdowntree/filtering#manual-filtering).
13905
14217
  * A built-in filtering implementation is available to use with the [`kendoDropDownTreeHierarchyBinding`](https://www.telerik.com/kendo-angular-ui/components/dropdowns/api/dropdowntreehierarchybindingdirective) and [`kendoDropDownTreeFlatBinding`](https://www.telerik.com/kendo-angular-ui/components/dropdowns/api/dropdowntreeflatbindingdirective) directives.
13906
14218
  */
13907
- filterable = false;
14219
+ set filterable(value) { this._filterable.set(value); }
14220
+ get filterable() { return this._filterable(); }
13908
14221
  /**
13909
14222
  * @hidden
13910
14223
  */
13911
- filter = '';
14224
+ set filter(value) { this._filter.set(value); }
14225
+ get filter() { return this._filter(); }
13912
14226
  /**
13913
14227
  * @hidden
13914
14228
  *
13915
14229
  * Used by the kendo-label and kendo-floatinglabel to access and associate the focusable element with the provided label via aria-labelledby.
13916
14230
  */
13917
- focusableId = `k-${guid()}`;
14231
+ set focusableId(value) { this._focusableId.set(value); }
14232
+ get focusableId() { return this._focusableId(); }
13918
14233
  set isFocused(isFocused) {
13919
14234
  this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-focus');
13920
- this._isFocused = isFocused;
14235
+ this._isFocused.set(isFocused);
13921
14236
  }
13922
14237
  get isFocused() {
13923
- return this._isFocused;
14238
+ return this._isFocused();
13924
14239
  }
13925
14240
  get width() {
13926
14241
  const wrapperWidth = this.wrapper.nativeElement.offsetWidth;
@@ -13956,15 +14271,18 @@ class DropDownTreeComponent {
13956
14271
  /**
13957
14272
  * @hidden
13958
14273
  */
13959
- selectedKeys = [];
14274
+ get selectedKeys() { return this._selectedKeys(); }
14275
+ set selectedKeys(value) { this._selectedKeys.set(value); }
13960
14276
  /**
13961
14277
  * @hidden
13962
14278
  */
13963
- selectBy;
14279
+ get selectBy() { return this._selectBy(); }
14280
+ set selectBy(value) { this._selectBy.set(value); }
13964
14281
  /**
13965
14282
  * @hidden
13966
14283
  */
13967
- text;
14284
+ get text() { return this._text(); }
14285
+ set text(value) { this._text.set(value); }
13968
14286
  /**
13969
14287
  * @hidden
13970
14288
  */
@@ -13976,17 +14294,20 @@ class DropDownTreeComponent {
13976
14294
  /**
13977
14295
  * Enables or disables the adaptive mode. By default the adaptive rendering is disabled.
13978
14296
  */
13979
- adaptiveMode = 'none';
14297
+ set adaptiveMode(value) { this._adaptiveMode.set(value); }
14298
+ get adaptiveMode() { return this._adaptiveMode(); }
13980
14299
  /**
13981
14300
  * Sets the title of the ActionSheet that is rendered instead of the Popup when using small screen devices.
13982
14301
  * By default the ActionSheet title uses the text provided for the label of the DropDownTree.
13983
14302
  */
13984
- adaptiveTitle = '';
14303
+ set adaptiveTitle(value) { this._adaptiveTitle.set(value); }
14304
+ get adaptiveTitle() { return this._adaptiveTitle(); }
13985
14305
  /**
13986
14306
  * Sets the subtitle of the ActionSheet that is rendered instead of the Popup when using small screen devices.
13987
14307
  * By default the ActionSheet does not render a subtitle.
13988
14308
  */
13989
- adaptiveSubtitle = '';
14309
+ set adaptiveSubtitle(value) { this._adaptiveSubtitle.set(value); }
14310
+ get adaptiveSubtitle() { return this._adaptiveSubtitle(); }
13990
14311
  /**
13991
14312
  * @hidden
13992
14313
  */
@@ -13996,7 +14317,8 @@ class DropDownTreeComponent {
13996
14317
  /**
13997
14318
  * @hidden
13998
14319
  */
13999
- windowSize = 'large';
14320
+ get windowSize() { return this._windowSize(); }
14321
+ set windowSize(value) { this._windowSize.set(value); }
14000
14322
  /**
14001
14323
  * @hidden
14002
14324
  */
@@ -14082,7 +14404,8 @@ class DropDownTreeComponent {
14082
14404
  /**
14083
14405
  * @hidden
14084
14406
  */
14085
- allNodesHidden = false;
14407
+ get allNodesHidden() { return this._allNodesHidden(); }
14408
+ set allNodesHidden(value) { this._allNodesHidden.set(value); }
14086
14409
  /**
14087
14410
  * @hidden
14088
14411
  *
@@ -14097,17 +14420,7 @@ class DropDownTreeComponent {
14097
14420
  return ngControl?.control || null;
14098
14421
  }
14099
14422
  treeViewId = `k-${guid()}`;
14100
- _nodes;
14101
- _value;
14102
- _popupSettings = DEFAULT_POPUP_SETTINGS$1;
14103
- _tabindex = 0;
14104
- _isFocused = false;
14105
- _dataItem;
14106
14423
  _treeview;
14107
- _size;
14108
- _rounded;
14109
- _fillMode;
14110
- _popupRef = signal(null, ...(ngDevMode ? [{ debugName: "_popupRef" }] : []));
14111
14424
  _searchableNodes = [];
14112
14425
  _typedValue = '';
14113
14426
  printableCharacters = new Subject();
@@ -14116,6 +14429,45 @@ class DropDownTreeComponent {
14116
14429
  // Keep an instance of the last focused node for when the popup close is prevented
14117
14430
  // in order to be able to properly restore the focus
14118
14431
  lastNodeOnFocus;
14432
+ _popupRef = signal(undefined, ...(ngDevMode ? [{ debugName: "_popupRef" }] : []));
14433
+ _icon = signal(undefined, ...(ngDevMode ? [{ debugName: "_icon" }] : []));
14434
+ _svgIcon = signal(undefined, ...(ngDevMode ? [{ debugName: "_svgIcon" }] : []));
14435
+ _loading = signal(undefined, ...(ngDevMode ? [{ debugName: "_loading" }] : []));
14436
+ _clearButton = signal(true, ...(ngDevMode ? [{ debugName: "_clearButton" }] : []));
14437
+ _textField = signal(undefined, ...(ngDevMode ? [{ debugName: "_textField" }] : []));
14438
+ _valueField = signal(undefined, ...(ngDevMode ? [{ debugName: "_valueField" }] : []));
14439
+ _valueDepth = signal(undefined, ...(ngDevMode ? [{ debugName: "_valueDepth" }] : []));
14440
+ _hasChildren = signal(hasChildren$1, ...(ngDevMode ? [{ debugName: "_hasChildren" }] : []));
14441
+ _fetchChildren = signal(fetchChildren$1, ...(ngDevMode ? [{ debugName: "_fetchChildren" }] : []));
14442
+ _placeholder = signal('', ...(ngDevMode ? [{ debugName: "_placeholder" }] : []));
14443
+ _disabled = signal(false, ...(ngDevMode ? [{ debugName: "_disabled" }] : []));
14444
+ _readonly = signal(false, ...(ngDevMode ? [{ debugName: "_readonly" }] : []));
14445
+ _valuePrimitive = signal(false, ...(ngDevMode ? [{ debugName: "_valuePrimitive" }] : []));
14446
+ _loadOnDemand = signal(true, ...(ngDevMode ? [{ debugName: "_loadOnDemand" }] : []));
14447
+ _filterable = signal(false, ...(ngDevMode ? [{ debugName: "_filterable" }] : []));
14448
+ _filter = signal('', ...(ngDevMode ? [{ debugName: "_filter" }] : []));
14449
+ _focusableId = signal(`k-${guid()}`, ...(ngDevMode ? [{ debugName: "_focusableId" }] : []));
14450
+ _adaptiveMode = signal('none', ...(ngDevMode ? [{ debugName: "_adaptiveMode" }] : []));
14451
+ _adaptiveTitle = signal('', ...(ngDevMode ? [{ debugName: "_adaptiveTitle" }] : []));
14452
+ _adaptiveSubtitle = signal('', ...(ngDevMode ? [{ debugName: "_adaptiveSubtitle" }] : []));
14453
+ _isNodeExpanded = signal(undefined, ...(ngDevMode ? [{ debugName: "_isNodeExpanded" }] : []));
14454
+ _isNodeVisible = signal(isNodeVisible$1, ...(ngDevMode ? [{ debugName: "_isNodeVisible" }] : []));
14455
+ _itemDisabled = signal(itemDisabled$1, ...(ngDevMode ? [{ debugName: "_itemDisabled" }] : []));
14456
+ _data = signal(undefined, ...(ngDevMode ? [{ debugName: "_data" }] : []));
14457
+ _value = signal(undefined, ...(ngDevMode ? [{ debugName: "_value" }] : []));
14458
+ _popupSettings = signal(DEFAULT_POPUP_SETTINGS$1, ...(ngDevMode ? [{ debugName: "_popupSettings" }] : []));
14459
+ _dataItem = signal(undefined, ...(ngDevMode ? [{ debugName: "_dataItem" }] : []));
14460
+ _listHeight = signal(200, ...(ngDevMode ? [{ debugName: "_listHeight" }] : []));
14461
+ _tabindex = signal(0, ...(ngDevMode ? [{ debugName: "_tabindex" }] : []));
14462
+ _size = signal(undefined, ...(ngDevMode ? [{ debugName: "_size" }] : []));
14463
+ _rounded = signal(undefined, ...(ngDevMode ? [{ debugName: "_rounded" }] : []));
14464
+ _fillMode = signal(undefined, ...(ngDevMode ? [{ debugName: "_fillMode" }] : []));
14465
+ _isFocused = signal(false, ...(ngDevMode ? [{ debugName: "_isFocused" }] : []));
14466
+ _text = signal(undefined, ...(ngDevMode ? [{ debugName: "_text" }] : []));
14467
+ _allNodesHidden = signal(false, ...(ngDevMode ? [{ debugName: "_allNodesHidden" }] : []));
14468
+ _selectedKeys = signal([], ...(ngDevMode ? [{ debugName: "_selectedKeys" }] : []));
14469
+ _selectBy = signal(undefined, ...(ngDevMode ? [{ debugName: "_selectBy" }] : []));
14470
+ _windowSize = signal('large', ...(ngDevMode ? [{ debugName: "_windowSize" }] : []));
14119
14471
  constructor(injector, wrapper, popupService, navigationService, renderer, _zone, cdr, localization, adaptiveService) {
14120
14472
  this.injector = injector;
14121
14473
  this.wrapper = wrapper;
@@ -14184,6 +14536,14 @@ class DropDownTreeComponent {
14184
14536
  this.windowSize = this.adaptiveService.size;
14185
14537
  this.subs.add(this.renderer.listen(this.wrapper.nativeElement, 'click', this.handleClick.bind(this)));
14186
14538
  this.subs.add(this.renderer.listen(this.wrapper.nativeElement, 'keydown', this.handleKeydown.bind(this)));
14539
+ const control = this.formControl;
14540
+ if (control && control.events) {
14541
+ this.subs.add(control.events.subscribe(e => {
14542
+ if (e instanceof TouchedChangeEvent) {
14543
+ this.cdr.markForCheck();
14544
+ }
14545
+ }));
14546
+ }
14187
14547
  }
14188
14548
  /**
14189
14549
  * @hidden
@@ -14444,7 +14804,6 @@ class DropDownTreeComponent {
14444
14804
  */
14445
14805
  setDisabledState(isDisabled) {
14446
14806
  this.disabled = isDisabled;
14447
- this.cdr.markForCheck();
14448
14807
  }
14449
14808
  /**
14450
14809
  * @hidden
@@ -14454,10 +14813,12 @@ class DropDownTreeComponent {
14454
14813
  this.filter = value;
14455
14814
  this.filterChange.next(value);
14456
14815
  this.allNodesHidden = this.areNodesHidden(this.nodes);
14457
- this._zone.onStable.pipe(take(1)).subscribe(() => {
14458
- if (this.data.length === 0 || this.allNodesHidden || this.filter === '') {
14459
- this.filterInput?.nativeElement.focus();
14460
- }
14816
+ runInInjectionContext(this.injector, () => {
14817
+ afterNextRender(() => {
14818
+ if (this.data.length === 0 || this.allNodesHidden || this.filter === '') {
14819
+ this.filterInput?.nativeElement.focus();
14820
+ }
14821
+ });
14461
14822
  });
14462
14823
  }
14463
14824
  /**
@@ -14645,7 +15006,6 @@ class DropDownTreeComponent {
14645
15006
  else {
14646
15007
  this.clearState();
14647
15008
  }
14648
- this.cdr.markForCheck();
14649
15009
  }
14650
15010
  clearState() {
14651
15011
  this.text = undefined;
@@ -14811,7 +15171,7 @@ class DropDownTreeComponent {
14811
15171
  this.removeTreeViewFromTabOrder();
14812
15172
  }
14813
15173
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: DropDownTreeComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }, { token: i2.PopupService }, { token: NavigationService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i1.LocalizationService }, { token: i7.AdaptiveService }], target: i0.ɵɵFactoryTarget.Component });
14814
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.27", type: DropDownTreeComponent, isStandalone: true, selector: "kendo-dropdowntree", inputs: { icon: "icon", svgIcon: "svgIcon", loading: "loading", clearButton: "clearButton", data: "data", value: "value", textField: "textField", valueField: "valueField", valueDepth: "valueDepth", hasChildren: "hasChildren", fetchChildren: "fetchChildren", placeholder: "placeholder", popupSettings: "popupSettings", dataItem: "dataItem", listHeight: "listHeight", disabled: "disabled", readonly: "readonly", valuePrimitive: "valuePrimitive", tabindex: "tabindex", size: "size", rounded: "rounded", fillMode: "fillMode", itemDisabled: "itemDisabled", isNodeExpanded: "isNodeExpanded", isNodeVisible: "isNodeVisible", loadOnDemand: "loadOnDemand", filterable: "filterable", filter: "filter", focusableId: "focusableId", adaptiveMode: "adaptiveMode", adaptiveTitle: "adaptiveTitle", adaptiveSubtitle: "adaptiveSubtitle" }, outputs: { open: "open", opened: "opened", close: "close", closed: "closed", nodeExpand: "nodeExpand", nodeCollapse: "nodeCollapse", onFocus: "focus", onBlur: "blur", valueChange: "valueChange", filterChange: "filterChange" }, host: { properties: { "class.k-dropdowntree": "this.hostClasses", "class.k-picker": "this.hostClasses", "attr.readonly": "this.isReadonly", "attr.aria-invalid": "this.hostAriaInvalid", "class.k-disabled": "this.isDisabled", "attr.aria-disabled": "this.isDisabled", "class.k-loading": "this.isLoading", "attr.aria-busy": "this.isBusy", "attr.aria-controls": "this.hostAriaControls", "attr.id": "this.id", "attr.dir": "this.direction", "attr.tabindex": "this.hostTabIndex", "attr.role": "this.role", "attr.aria-haspopup": "this.ariaHasPopup", "attr.aria-expanded": "this.isAriaExpanded", "attr.aria-autocomplete": "this.hostAriaAutocomplete", "class.k-readonly": "this.readonly" } }, providers: [
15174
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.27", type: DropDownTreeComponent, isStandalone: true, selector: "kendo-dropdowntree", inputs: { icon: "icon", svgIcon: "svgIcon", loading: "loading", clearButton: "clearButton", data: "data", value: "value", textField: "textField", valueField: "valueField", valueDepth: "valueDepth", hasChildren: "hasChildren", fetchChildren: "fetchChildren", placeholder: "placeholder", popupSettings: "popupSettings", dataItem: "dataItem", listHeight: "listHeight", disabled: "disabled", readonly: "readonly", valuePrimitive: "valuePrimitive", tabindex: "tabindex", size: "size", rounded: "rounded", fillMode: "fillMode", itemDisabled: "itemDisabled", isNodeExpanded: "isNodeExpanded", isNodeVisible: "isNodeVisible", loadOnDemand: "loadOnDemand", filterable: "filterable", filter: "filter", focusableId: "focusableId", adaptiveMode: "adaptiveMode", adaptiveTitle: "adaptiveTitle", adaptiveSubtitle: "adaptiveSubtitle" }, outputs: { open: "open", opened: "opened", close: "close", closed: "closed", nodeExpand: "nodeExpand", nodeCollapse: "nodeCollapse", onFocus: "focus", onBlur: "blur", valueChange: "valueChange", filterChange: "filterChange" }, host: { properties: { "class.k-dropdowntree": "this.hostClasses", "class.k-picker": "this.hostClasses", "attr.readonly": "this.isReadonly", "class.k-readonly": "this.isReadonlyClass", "attr.aria-invalid": "this.hostAriaInvalid", "class.k-disabled": "this.isDisabled", "attr.aria-disabled": "this.isDisabled", "class.k-loading": "this.isLoading", "attr.aria-busy": "this.isBusy", "attr.aria-controls": "this.hostAriaControls", "attr.id": "this.id", "attr.dir": "this.direction", "attr.tabindex": "this.hostTabIndex", "attr.role": "this.role", "attr.aria-haspopup": "this.ariaHasPopup", "attr.aria-expanded": "this.isAriaExpanded", "attr.aria-autocomplete": "this.hostAriaAutocomplete" } }, providers: [
14815
15175
  DataService,
14816
15176
  SelectionService,
14817
15177
  NavigationService,
@@ -15045,6 +15405,7 @@ class DropDownTreeComponent {
15045
15405
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: DropDownTreeComponent, decorators: [{
15046
15406
  type: Component,
15047
15407
  args: [{
15408
+ selector: 'kendo-dropdowntree',
15048
15409
  exportAs: 'kendoDropDownTree',
15049
15410
  providers: [
15050
15411
  DataService,
@@ -15079,7 +15440,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
15079
15440
  },
15080
15441
  provideComponentName('dropdowntree')
15081
15442
  ],
15082
- selector: 'kendo-dropdowntree',
15083
15443
  template: `
15084
15444
  <ng-container kendoDropDownTreeLocalizedMessages
15085
15445
  i18n-noDataText="kendo.dropdowntree.noDataText|The text displayed in the popup when there are no items"
@@ -15298,6 +15658,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
15298
15658
  }], isReadonly: [{
15299
15659
  type: HostBinding,
15300
15660
  args: ['attr.readonly']
15661
+ }], isReadonlyClass: [{
15662
+ type: HostBinding,
15663
+ args: ['class.k-readonly']
15301
15664
  }], hostAriaInvalid: [{
15302
15665
  type: HostBinding,
15303
15666
  args: ['attr.aria-invalid']
@@ -15416,9 +15779,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
15416
15779
  type: Input
15417
15780
  }], readonly: [{
15418
15781
  type: Input
15419
- }, {
15420
- type: HostBinding,
15421
- args: ['class.k-readonly']
15422
15782
  }], valuePrimitive: [{
15423
15783
  type: Input
15424
15784
  }], tabindex: [{
@@ -16003,6 +16363,9 @@ class MultiSelectTreeComponent {
16003
16363
  get isReadonly() {
16004
16364
  return this.readonly ? '' : null;
16005
16365
  }
16366
+ get isReadonlyClass() {
16367
+ return this.readonly;
16368
+ }
16006
16369
  get ariaActiveDescendant() {
16007
16370
  return this.focusedTagId;
16008
16371
  }
@@ -16028,19 +16391,22 @@ class MultiSelectTreeComponent {
16028
16391
  *
16029
16392
  * @default 'none'
16030
16393
  */
16031
- adaptiveMode = 'none';
16394
+ set adaptiveMode(value) { this._adaptiveMode.set(value); }
16395
+ get adaptiveMode() { return this._adaptiveMode(); }
16032
16396
  /**
16033
16397
  * Sets the title text for the ActionSheet in adaptive mode on small screens.
16034
16398
  * Uses the component label by default if not set.
16035
16399
  *
16036
16400
  * @default ''
16037
16401
  */
16038
- adaptiveTitle = '';
16402
+ set adaptiveTitle(value) { this._adaptiveTitle.set(value); }
16403
+ get adaptiveTitle() { return this._adaptiveTitle(); }
16039
16404
  /**
16040
16405
  * Sets the subtitle text for the ActionSheet in adaptive mode on small screens.
16041
16406
  * No subtitle appears by default.
16042
16407
  */
16043
- adaptiveSubtitle;
16408
+ set adaptiveSubtitle(value) { this._adaptiveSubtitle.set(value); }
16409
+ get adaptiveSubtitle() { return this._adaptiveSubtitle(); }
16044
16410
  /**
16045
16411
  * @hidden
16046
16412
  */
@@ -16050,7 +16416,8 @@ class MultiSelectTreeComponent {
16050
16416
  /**
16051
16417
  * @hidden
16052
16418
  */
16053
- windowSize = 'large';
16419
+ get windowSize() { return this._windowSize(); }
16420
+ set windowSize(value) { this._windowSize.set(value); }
16054
16421
  /**
16055
16422
  * @hidden
16056
16423
  */
@@ -16138,7 +16505,11 @@ class MultiSelectTreeComponent {
16138
16505
  * the popup is appended to a container and opened upon initialization.
16139
16506
  * Otherwise, the "Expression has changed..." type error will be thrown.
16140
16507
  */
16141
- Promise.resolve(null).then(() => this.treeview.animate = true);
16508
+ Promise.resolve(null).then(() => {
16509
+ if (this.treeview) {
16510
+ this.treeview.animate = true;
16511
+ }
16512
+ });
16142
16513
  }
16143
16514
  }
16144
16515
  get treeview() {
@@ -16155,10 +16526,10 @@ class MultiSelectTreeComponent {
16155
16526
  set tabindex(value) {
16156
16527
  const providedTabIndex = parseNumber(value);
16157
16528
  const defaultTabIndex = 0;
16158
- this._tabindex = !isNaN(providedTabIndex) ? providedTabIndex : defaultTabIndex;
16529
+ this._tabindex.set(!isNaN(providedTabIndex) ? providedTabIndex : defaultTabIndex);
16159
16530
  }
16160
16531
  get tabindex() {
16161
- return this.disabled ? -1 : this._tabindex;
16532
+ return this.disabled ? -1 : this._tabindex();
16162
16533
  }
16163
16534
  /**
16164
16535
  * Sets the visual size of the component. The default value is set by the Kendo theme.
@@ -16168,10 +16539,10 @@ class MultiSelectTreeComponent {
16168
16539
  if (size) {
16169
16540
  this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', size));
16170
16541
  }
16171
- this._size = size;
16542
+ this._size.set(size);
16172
16543
  }
16173
16544
  get size() {
16174
- return this._size;
16545
+ return this._size();
16175
16546
  }
16176
16547
  /**
16177
16548
  * Sets the border radius style of the component. The default value is set by the Kendo theme.
@@ -16181,10 +16552,10 @@ class MultiSelectTreeComponent {
16181
16552
  if (rounded) {
16182
16553
  this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(rounded));
16183
16554
  }
16184
- this._rounded = rounded;
16555
+ this._rounded.set(rounded);
16185
16556
  }
16186
16557
  get rounded() {
16187
- return this._rounded;
16558
+ return this._rounded();
16188
16559
  }
16189
16560
  /**
16190
16561
  * Sets the fill style for the component background and borders. The default value is set by the Kendo theme.
@@ -16194,22 +16565,22 @@ class MultiSelectTreeComponent {
16194
16565
  if (fillMode) {
16195
16566
  this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', fillMode));
16196
16567
  }
16197
- this._fillMode = fillMode;
16568
+ this._fillMode.set(fillMode);
16198
16569
  }
16199
16570
  get fillMode() {
16200
- return this._fillMode;
16571
+ return this._fillMode();
16201
16572
  }
16202
16573
  /**
16203
16574
  * Configures the popup container settings: animation, dimensions, styling and positioning.
16204
16575
  */
16205
16576
  set popupSettings(settings) {
16206
- this._popupSettings = Object.assign({}, DEFAULT_POPUP_SETTINGS, settings);
16577
+ this._popupSettings.set(Object.assign({}, DEFAULT_POPUP_SETTINGS, settings));
16207
16578
  // `detectChanges` needed, otherwise upon value initialization and `appendTo` property
16208
16579
  // an error is thrown => ExpressionChangedAfterItHasBeenCheckedError
16209
16580
  this.cdr.detectChanges();
16210
16581
  }
16211
16582
  get popupSettings() {
16212
- return this._popupSettings;
16583
+ return this._popupSettings();
16213
16584
  }
16214
16585
  /**
16215
16586
  * Configures the checkbox behavior for the MultiSelecTree nodes.
@@ -16218,17 +16589,17 @@ class MultiSelectTreeComponent {
16218
16589
  * @default '{ checkChildren: true, checkOnClick: true }'
16219
16590
  */
16220
16591
  set checkableSettings(settings) {
16221
- this._checkableSettings = Object.assign({}, DEFAULT_CHECKABLE_SETTINGS, settings);
16592
+ this._checkableSettings.set(Object.assign({}, DEFAULT_CHECKABLE_SETTINGS, settings));
16222
16593
  }
16223
16594
  get checkableSettings() {
16224
- return this._checkableSettings;
16595
+ return this._checkableSettings();
16225
16596
  }
16226
16597
  /**
16227
16598
  * Sets the hierarchical data source for the tree structure.
16228
16599
  * Provide an array of objects that contain the tree data and structure.
16229
16600
  */
16230
16601
  set data(data) {
16231
- this._nodes = data;
16602
+ this._data.set(data);
16232
16603
  this.setState();
16233
16604
  if (this.isContentInit) {
16234
16605
  // Needed for when the data is loaded later/asynchronously because it would not exist on ngContentInit
@@ -16236,25 +16607,25 @@ class MultiSelectTreeComponent {
16236
16607
  }
16237
16608
  }
16238
16609
  get data() {
16239
- return this._nodes;
16610
+ return this._data();
16240
16611
  }
16241
16612
  /**
16242
16613
  * Sets the selected values in the component.
16243
16614
  * Accepts primitive values if `valuePrimitive` is `true`, or objects if `false`.
16244
16615
  */
16245
16616
  set value(value) {
16246
- this._value = value ? value : [];
16617
+ this._value.set(value ? value : []);
16247
16618
  this.setState();
16248
16619
  }
16249
16620
  get value() {
16250
- return this._value;
16621
+ return this._value();
16251
16622
  }
16252
16623
  /**
16253
16624
  * Sets the data items that correspond to the selected values.
16254
16625
  * Required when using primitive values to resolve the full data objects.
16255
16626
  */
16256
16627
  set dataItems(items) {
16257
- this._dataItems = (items || []).map((dataItem, index) => {
16628
+ this._dataItems.set((items || []).map((dataItem, index) => {
16258
16629
  if (hasProps(dataItem, ['dataItem', 'index', 'level'])) {
16259
16630
  return dataItem;
16260
16631
  }
@@ -16266,11 +16637,11 @@ class MultiSelectTreeComponent {
16266
16637
  level,
16267
16638
  key
16268
16639
  };
16269
- });
16640
+ }));
16270
16641
  this.setState();
16271
16642
  }
16272
16643
  get dataItems() {
16273
- return this._dataItems || this.value.map((value, index) => {
16644
+ return this._dataItems() || this.value.map((value, index) => {
16274
16645
  const level = this.valueDepth[index] || 0;
16275
16646
  const key = valueFrom({ dataItem: value, level }, this.valueField) + '_' + (this.isHeterogeneous ? this.valueDepth[index] : 0);
16276
16647
  return {
@@ -16285,33 +16656,38 @@ class MultiSelectTreeComponent {
16285
16656
  * Specifies which data field provides the display text for tree nodes.
16286
16657
  * > The `textField` property can be set to point to a nested property value - e.g. `category.name`.
16287
16658
  */
16288
- textField;
16659
+ set textField(value) { this._textField.set(value); }
16660
+ get textField() { return this._textField(); }
16289
16661
  /**
16290
16662
  * Specifies which data field provides the unique values for tree nodes.
16291
16663
  * > The `valueField` property can be set to point to a nested property value - e.g. `category.id`.
16292
16664
  */
16293
- valueField;
16665
+ set valueField(value) { this._valueField.set(value); }
16666
+ get valueField() { return this._valueField(); }
16294
16667
  /**
16295
16668
  * Sets the levels in the data set where the values can be found when `valueField` is an Array.
16296
16669
  * The field serves to correctly allocate a data item used when the MultiSelectTree is initialized with a value.
16297
16670
  *
16298
16671
  * @default []
16299
16672
  */
16300
- valueDepth = [];
16673
+ set valueDepth(value) { this._valueDepth.set(value); }
16674
+ get valueDepth() { return this._valueDepth(); }
16301
16675
  /**
16302
16676
  * Controls the loading state visual indicator.
16303
16677
  * Shows a loading spinner when set to `true`.
16304
16678
  *
16305
16679
  * @default false
16306
16680
  */
16307
- loading;
16681
+ set loading(value) { this._loading.set(value); }
16682
+ get loading() { return this._loading(); }
16308
16683
  /**
16309
16684
  * Sets the placeholder text shown when no items are selected.
16310
16685
  * Helps guide users on what action to take.
16311
16686
  *
16312
16687
  * @default ''
16313
16688
  */
16314
- placeholder = '';
16689
+ set placeholder(value) { this._placeholder.set(value); }
16690
+ get placeholder() { return this._placeholder(); }
16315
16691
  /**
16316
16692
  * Sets the maximum height of the options list in the popup.
16317
16693
  * Controls vertical scrolling when content exceeds this height.
@@ -16319,97 +16695,110 @@ class MultiSelectTreeComponent {
16319
16695
  * @default 200
16320
16696
  */
16321
16697
  set listHeight(_listHeight) {
16322
- this._listHeight = _listHeight;
16698
+ this._listHeight.set(_listHeight);
16323
16699
  }
16324
16700
  get listHeight() {
16325
16701
  if (this.isAdaptive) {
16326
16702
  return;
16327
16703
  }
16328
- return this._listHeight;
16704
+ return this._listHeight();
16329
16705
  }
16330
- _listHeight = 200;
16331
16706
  /**
16332
16707
  * Controls whether the component accepts user input.
16333
16708
  * Prevents all user interactions when set to `true`.
16334
16709
  *
16335
16710
  * @default false
16336
16711
  */
16337
- disabled = false;
16712
+ set disabled(value) { this._disabled.set(value); }
16713
+ get disabled() { return this._disabled(); }
16338
16714
  /**
16339
16715
  * Sets the component to read-only mode.
16340
16716
  * Displays current selections but prevents changes.
16341
16717
  *
16342
16718
  * @default false
16343
16719
  */
16344
- readonly = false;
16720
+ set readonly(value) { this._readonly.set(value); }
16721
+ get readonly() { return this._readonly(); }
16345
16722
  /**
16346
16723
  * Determines the data type of selected values.
16347
16724
  * Set to `true` for primitive values, false for complex objects.
16348
16725
  *
16349
16726
  * @default false
16350
16727
  */
16351
- valuePrimitive = false;
16728
+ set valuePrimitive(value) { this._valuePrimitive.set(value); }
16729
+ get valuePrimitive() { return this._valuePrimitive(); }
16352
16730
  /**
16353
16731
  * Controls when child nodes load from the data source.
16354
16732
  * Set to `true` to load children only when parent nodes expand.
16355
16733
  *
16356
16734
  * @default false
16357
16735
  */
16358
- loadOnDemand = false;
16736
+ set loadOnDemand(value) { this._loadOnDemand.set(value); }
16737
+ get loadOnDemand() { return this._loadOnDemand(); }
16359
16738
  /**
16360
16739
  * Sets the unique identifier for the focusable element.
16361
16740
  * Used internally for accessibility and label association.
16362
16741
  */
16363
- focusableId = `k-${guid()}`;
16742
+ set focusableId(value) { this._focusableId.set(value); }
16743
+ get focusableId() { return this._focusableId(); }
16364
16744
  /**
16365
16745
  * Shows a clear button to reset all selections.
16366
16746
  * Appears on hover when selections exist and the component is not disabled.
16367
16747
  *
16368
16748
  * @default true
16369
16749
  */
16370
- clearButton = true;
16750
+ set clearButton(value) { this._clearButton.set(value); }
16751
+ get clearButton() { return this._clearButton(); }
16371
16752
  /**
16372
16753
  * Enables the built-in filter input for searching tree nodes.
16373
16754
  * Shows a search box above the tree when enabled.
16374
16755
  *
16375
16756
  * @default false
16376
16757
  */
16377
- filterable = false;
16758
+ set filterable(value) { this._filterable.set(value); }
16759
+ get filterable() { return this._filterable(); }
16378
16760
  /**
16379
16761
  * Shows a checkbox to select or deselect all visible tree nodes.
16380
16762
  * Appears above the tree when checkboxes are enabled.
16381
16763
  *
16382
16764
  * @default false
16383
16765
  */
16384
- checkAll = false;
16766
+ set checkAll(value) { this._checkAll.set(value); }
16767
+ get checkAll() { return this._checkAll(); }
16385
16768
  /**
16386
16769
  * Determines if a tree node contains child nodes.
16387
16770
  * Return `true` if the node has children, false otherwise.
16388
16771
  */
16389
- hasChildren = hasChildren;
16772
+ set hasChildren(fn) { this._hasChildren.set(fn); }
16773
+ get hasChildren() { return this._hasChildren(); }
16390
16774
  /**
16391
16775
  * Function that provides child nodes for a parent node.
16392
16776
  * Return an Observable of child objects for the given parent.
16393
16777
  */
16394
- fetchChildren = fetchChildren;
16778
+ set fetchChildren(fn) { this._fetchChildren.set(fn); }
16779
+ get fetchChildren() { return this._fetchChildren(); }
16395
16780
  /**
16396
16781
  * Determines if a specific node is expanded. The function is executed for each data item.
16397
16782
  */
16398
- isNodeExpanded;
16783
+ set isNodeExpanded(fn) { this._isNodeExpanded.set(fn); }
16784
+ get isNodeExpanded() { return this._isNodeExpanded(); }
16399
16785
  /**
16400
16786
  * Determines if a tree node should be hidden.
16401
16787
  */
16402
- isNodeVisible = isNodeVisible;
16788
+ set isNodeVisible(fn) { this._isNodeVisible.set(fn); }
16789
+ get isNodeVisible() { return this._isNodeVisible(); }
16403
16790
  /**
16404
16791
  * Determines if a tree node is disabled. The function is executed for each data item.
16405
16792
  */
16406
- itemDisabled = itemDisabled;
16793
+ set itemDisabled(fn) { this._itemDisabled.set(fn); }
16794
+ get itemDisabled() { return this._itemDisabled(); }
16407
16795
  /**
16408
16796
  * @param { Any[] } dataItems - The selected data items from the list.
16409
16797
  * @returns { Any[] } - The tags that will be rendered by the component.
16410
16798
  * Transforms the provided array of data items into an array of tags.
16411
16799
  */
16412
- tagMapper = (tags) => tags || [];
16800
+ set tagMapper(fn) { this._tagMapper.set(fn); }
16801
+ get tagMapper() { return this._tagMapper(); }
16413
16802
  /**
16414
16803
  * Fires when the component receives focus.
16415
16804
  */
@@ -16474,10 +16863,10 @@ class MultiSelectTreeComponent {
16474
16863
  }
16475
16864
  set isFocused(isFocused) {
16476
16865
  this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-focus');
16477
- this._isFocused = isFocused;
16866
+ this._isFocused.set(isFocused);
16478
16867
  }
16479
16868
  get isFocused() {
16480
- return this._isFocused;
16869
+ return this._isFocused();
16481
16870
  }
16482
16871
  /**
16483
16872
  * Returns the current open state. Returns `true` if the popup or actionSheet is open.
@@ -16623,18 +17012,21 @@ class MultiSelectTreeComponent {
16623
17012
  /**
16624
17013
  * @hidden
16625
17014
  */
16626
- filter = '';
17015
+ get filter() { return this._filter(); }
17016
+ set filter(value) { this._filter.set(value); }
16627
17017
  /**
16628
17018
  * @hidden
16629
17019
  */
16630
- checkedItems = [];
17020
+ get checkedItems() { return this._checkedItems(); }
17021
+ set checkedItems(value) { this._checkedItems.set(value); }
16631
17022
  /**
16632
17023
  * @hidden
16633
17024
  * The flag is needed in order to determine how to construct the items map keys.
16634
17025
  * If `true`, then the key consists of the item's value and level (depth),
16635
17026
  * else the key consists of the item's value and 0 (no leveling required)
16636
17027
  */
16637
- isHeterogeneous;
17028
+ get isHeterogeneous() { return this._isHeterogeneous(); }
17029
+ set isHeterogeneous(value) { this._isHeterogeneous.set(value); }
16638
17030
  /**
16639
17031
  * @hidden
16640
17032
  */
@@ -16642,24 +17034,18 @@ class MultiSelectTreeComponent {
16642
17034
  /**
16643
17035
  * @hidden
16644
17036
  */
16645
- allNodesHidden = false;
17037
+ get allNodesHidden() { return this._allNodesHidden(); }
17038
+ set allNodesHidden(value) { this._allNodesHidden.set(value); }
16646
17039
  tagListId = `k-${guid()}`;
16647
17040
  tagPrefix = "tag-" + guid();
16648
17041
  popupRef;
16649
- tags;
16650
- focusedTagIndex = undefined;
16651
- disabledIndices;
16652
- _nodes;
16653
- _value = [];
16654
- _tabindex = 0;
16655
- _popupSettings = DEFAULT_POPUP_SETTINGS;
16656
- _checkableSettings = DEFAULT_CHECKABLE_SETTINGS;
16657
- _isFocused = false;
17042
+ get tags() { return this._tags(); }
17043
+ set tags(value) { this._tags.set(value); }
17044
+ get focusedTagIndex() { return this._focusedTagIndex(); }
17045
+ set focusedTagIndex(value) { this._focusedTagIndex.set(value); }
17046
+ get disabledIndices() { return this._disabledIndices(); }
17047
+ set disabledIndices(value) { this._disabledIndices.set(value); }
16658
17048
  _treeview;
16659
- _dataItems;
16660
- _size;
16661
- _rounded;
16662
- _fillMode;
16663
17049
  _searchableNodes = [];
16664
17050
  _typedValue = '';
16665
17051
  printableCharacters = new Subject();
@@ -16669,6 +17055,50 @@ class MultiSelectTreeComponent {
16669
17055
  lastNodeOnFocus;
16670
17056
  // Used as check to avoid unnecessary 'registerLookupItems()' calls upon initialization
16671
17057
  isContentInit;
17058
+ // Signal backing fields — inputs
17059
+ _adaptiveMode = signal('none', ...(ngDevMode ? [{ debugName: "_adaptiveMode" }] : []));
17060
+ _adaptiveTitle = signal('', ...(ngDevMode ? [{ debugName: "_adaptiveTitle" }] : []));
17061
+ _adaptiveSubtitle = signal(undefined, ...(ngDevMode ? [{ debugName: "_adaptiveSubtitle" }] : []));
17062
+ _textField = signal(undefined, ...(ngDevMode ? [{ debugName: "_textField" }] : []));
17063
+ _valueField = signal(undefined, ...(ngDevMode ? [{ debugName: "_valueField" }] : []));
17064
+ _valueDepth = signal([], ...(ngDevMode ? [{ debugName: "_valueDepth" }] : []));
17065
+ _loading = signal(undefined, ...(ngDevMode ? [{ debugName: "_loading" }] : []));
17066
+ _placeholder = signal('', ...(ngDevMode ? [{ debugName: "_placeholder" }] : []));
17067
+ _disabled = signal(false, ...(ngDevMode ? [{ debugName: "_disabled" }] : []));
17068
+ _readonly = signal(false, ...(ngDevMode ? [{ debugName: "_readonly" }] : []));
17069
+ _valuePrimitive = signal(false, ...(ngDevMode ? [{ debugName: "_valuePrimitive" }] : []));
17070
+ _loadOnDemand = signal(false, ...(ngDevMode ? [{ debugName: "_loadOnDemand" }] : []));
17071
+ _focusableId = signal(`k-${guid()}`, ...(ngDevMode ? [{ debugName: "_focusableId" }] : []));
17072
+ _clearButton = signal(true, ...(ngDevMode ? [{ debugName: "_clearButton" }] : []));
17073
+ _filterable = signal(false, ...(ngDevMode ? [{ debugName: "_filterable" }] : []));
17074
+ _checkAll = signal(false, ...(ngDevMode ? [{ debugName: "_checkAll" }] : []));
17075
+ _hasChildren = signal(hasChildren, ...(ngDevMode ? [{ debugName: "_hasChildren" }] : []));
17076
+ _fetchChildren = signal(fetchChildren, ...(ngDevMode ? [{ debugName: "_fetchChildren" }] : []));
17077
+ _isNodeExpanded = signal(undefined, ...(ngDevMode ? [{ debugName: "_isNodeExpanded" }] : []));
17078
+ _isNodeVisible = signal(isNodeVisible, ...(ngDevMode ? [{ debugName: "_isNodeVisible" }] : []));
17079
+ _itemDisabled = signal(itemDisabled, ...(ngDevMode ? [{ debugName: "_itemDisabled" }] : []));
17080
+ _tagMapper = signal((tags) => tags || [], ...(ngDevMode ? [{ debugName: "_tagMapper" }] : []));
17081
+ // Signal backing fields — existing setter/getter pairs
17082
+ _data = signal(undefined, ...(ngDevMode ? [{ debugName: "_data" }] : []));
17083
+ _value = signal([], ...(ngDevMode ? [{ debugName: "_value" }] : []));
17084
+ _dataItems = signal(undefined, ...(ngDevMode ? [{ debugName: "_dataItems" }] : []));
17085
+ _listHeight = signal(200, ...(ngDevMode ? [{ debugName: "_listHeight" }] : []));
17086
+ _tabindex = signal(0, ...(ngDevMode ? [{ debugName: "_tabindex" }] : []));
17087
+ _size = signal(undefined, ...(ngDevMode ? [{ debugName: "_size" }] : []));
17088
+ _rounded = signal(undefined, ...(ngDevMode ? [{ debugName: "_rounded" }] : []));
17089
+ _fillMode = signal(undefined, ...(ngDevMode ? [{ debugName: "_fillMode" }] : []));
17090
+ _popupSettings = signal(DEFAULT_POPUP_SETTINGS, ...(ngDevMode ? [{ debugName: "_popupSettings" }] : []));
17091
+ _checkableSettings = signal(DEFAULT_CHECKABLE_SETTINGS, ...(ngDevMode ? [{ debugName: "_checkableSettings" }] : []));
17092
+ // Signal backing fields — internal state driving template
17093
+ _isFocused = signal(false, ...(ngDevMode ? [{ debugName: "_isFocused" }] : []));
17094
+ _filter = signal('', ...(ngDevMode ? [{ debugName: "_filter" }] : []));
17095
+ _checkedItems = signal([], ...(ngDevMode ? [{ debugName: "_checkedItems" }] : []));
17096
+ _isHeterogeneous = signal(undefined, ...(ngDevMode ? [{ debugName: "_isHeterogeneous" }] : []));
17097
+ _allNodesHidden = signal(false, ...(ngDevMode ? [{ debugName: "_allNodesHidden" }] : []));
17098
+ _tags = signal(undefined, ...(ngDevMode ? [{ debugName: "_tags" }] : []));
17099
+ _focusedTagIndex = signal(undefined, ...(ngDevMode ? [{ debugName: "_focusedTagIndex" }] : []));
17100
+ _disabledIndices = signal(undefined, ...(ngDevMode ? [{ debugName: "_disabledIndices" }] : []));
17101
+ _windowSize = signal('large', ...(ngDevMode ? [{ debugName: "_windowSize" }] : []));
16672
17102
  constructor(injector, wrapper, popupService, renderer, navigationService, _zone, localization, cdr, lookup, adaptiveService) {
16673
17103
  this.injector = injector;
16674
17104
  this.wrapper = wrapper;
@@ -16708,6 +17138,14 @@ class MultiSelectTreeComponent {
16708
17138
  this.windowSize = this.adaptiveService.size;
16709
17139
  this.subs.add(this.renderer.listen(this.wrapper.nativeElement, 'click', this.handleClick.bind(this)));
16710
17140
  this.subs.add(this.renderer.listen(this.wrapper.nativeElement, 'keydown', this.handleKeydown.bind(this)));
17141
+ const control = this.formControl;
17142
+ if (control && control.events) {
17143
+ this.subs.add(control.events.subscribe(e => {
17144
+ if (e instanceof TouchedChangeEvent) {
17145
+ this.cdr.markForCheck();
17146
+ }
17147
+ }));
17148
+ }
16711
17149
  }
16712
17150
  /**
16713
17151
  * @hidden
@@ -17031,7 +17469,6 @@ class MultiSelectTreeComponent {
17031
17469
  */
17032
17470
  setDisabledState(isDisabled) {
17033
17471
  this.disabled = isDisabled;
17034
- this.cdr.markForCheck();
17035
17472
  }
17036
17473
  /**
17037
17474
  * @hidden
@@ -17383,7 +17820,6 @@ class MultiSelectTreeComponent {
17383
17820
  this.setTags();
17384
17821
  this.checkedItems = this.dataItems.slice();
17385
17822
  }
17386
- this.cdr.markForCheck();
17387
17823
  }
17388
17824
  setTags() {
17389
17825
  const source = this.dataItems.map(item => item.dataItem);
@@ -17495,7 +17931,7 @@ class MultiSelectTreeComponent {
17495
17931
  this.opened.emit();
17496
17932
  }
17497
17933
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: MultiSelectTreeComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }, { token: i2.PopupService }, { token: i0.Renderer2 }, { token: NavigationService }, { token: i0.NgZone }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: MultiSelectTreeLookupService }, { token: i7.AdaptiveService }], target: i0.ɵɵFactoryTarget.Component });
17498
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.27", type: MultiSelectTreeComponent, isStandalone: true, selector: "kendo-multiselecttree", inputs: { adaptiveMode: "adaptiveMode", adaptiveTitle: "adaptiveTitle", adaptiveSubtitle: "adaptiveSubtitle", tabindex: "tabindex", size: "size", rounded: "rounded", fillMode: "fillMode", popupSettings: "popupSettings", checkableSettings: "checkableSettings", data: "data", value: "value", dataItems: "dataItems", textField: "textField", valueField: "valueField", valueDepth: "valueDepth", loading: "loading", placeholder: "placeholder", listHeight: "listHeight", disabled: "disabled", readonly: "readonly", valuePrimitive: "valuePrimitive", loadOnDemand: "loadOnDemand", focusableId: "focusableId", clearButton: "clearButton", filterable: "filterable", checkAll: "checkAll", hasChildren: "hasChildren", fetchChildren: "fetchChildren", isNodeExpanded: "isNodeExpanded", isNodeVisible: "isNodeVisible", itemDisabled: "itemDisabled", tagMapper: "tagMapper" }, outputs: { onFocus: "focus", onBlur: "blur", open: "open", opened: "opened", close: "close", closed: "closed", nodeExpand: "nodeExpand", nodeCollapse: "nodeCollapse", valueChange: "valueChange", removeTag: "removeTag", filterChange: "filterChange" }, host: { properties: { "class.k-disabled": "this.isDisabled", "class.k-loading": "this.isLoading", "attr.aria-invalid": "this.hostAriaInvalid", "attr.aria-busy": "this.isBusy", "attr.id": "this.id", "attr.dir": "this.direction", "attr.tabindex": "this.hostTabIndex", "attr.readonly": "this.isReadonly", "attr.aria-activedescendant": "this.ariaActiveDescendant", "class.k-readonly": "this.readonly" } }, providers: [
17934
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.27", type: MultiSelectTreeComponent, isStandalone: true, selector: "kendo-multiselecttree", inputs: { adaptiveMode: "adaptiveMode", adaptiveTitle: "adaptiveTitle", adaptiveSubtitle: "adaptiveSubtitle", tabindex: "tabindex", size: "size", rounded: "rounded", fillMode: "fillMode", popupSettings: "popupSettings", checkableSettings: "checkableSettings", data: "data", value: "value", dataItems: "dataItems", textField: "textField", valueField: "valueField", valueDepth: "valueDepth", loading: "loading", placeholder: "placeholder", listHeight: "listHeight", disabled: "disabled", readonly: "readonly", valuePrimitive: "valuePrimitive", loadOnDemand: "loadOnDemand", focusableId: "focusableId", clearButton: "clearButton", filterable: "filterable", checkAll: "checkAll", hasChildren: "hasChildren", fetchChildren: "fetchChildren", isNodeExpanded: "isNodeExpanded", isNodeVisible: "isNodeVisible", itemDisabled: "itemDisabled", tagMapper: "tagMapper" }, outputs: { onFocus: "focus", onBlur: "blur", open: "open", opened: "opened", close: "close", closed: "closed", nodeExpand: "nodeExpand", nodeCollapse: "nodeCollapse", valueChange: "valueChange", removeTag: "removeTag", filterChange: "filterChange" }, host: { properties: { "class.k-disabled": "this.isDisabled", "class.k-loading": "this.isLoading", "attr.aria-invalid": "this.hostAriaInvalid", "attr.aria-busy": "this.isBusy", "attr.id": "this.id", "attr.dir": "this.direction", "attr.tabindex": "this.hostTabIndex", "attr.readonly": "this.isReadonly", "class.k-readonly": "this.isReadonlyClass", "attr.aria-activedescendant": "this.ariaActiveDescendant" } }, providers: [
17499
17935
  LocalizationService,
17500
17936
  NavigationService,
17501
17937
  DataService,
@@ -17771,11 +18207,12 @@ class MultiSelectTreeComponent {
17771
18207
  @if (isOpen || isAdaptiveModeEnabled) {
17772
18208
  <kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
17773
18209
  }
17774
- `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { kind: "component", type: TagListComponent, selector: "kendo-taglist", inputs: ["tags", "textField", "valueField", "valueDepth", "focused", "template", "groupTemplate", "disabled", "tagPrefix", "id", "ariaLabel", "size", "rounded", "fillMode", "disabledIndices"], outputs: ["removeTag"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-adaptive-renderer", inputs: ["title", "subtitle", "showTextInput", "sharedPopupActionSheetTemplate", "text", "placeholder", "searchBarValue", "filterable", "showListContainer"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: FilterInputDirective, selector: "[filterInput]", inputs: ["filterInput"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "directive", type: CheckAllDirective, selector: "[checkAll]", inputs: ["lastAction", "treeview", "checkedItems", "valueField", "checkAll"], outputs: ["checkedItemsChange"] }, { kind: "component", type: TreeViewComponent, selector: "kendo-treeview", inputs: ["filterInputPlaceholder", "expandDisabledNodes", "animate", "nodeTemplate", "loadMoreButtonTemplate", "loadMoreButtonRole", "trackBy", "nodes", "textField", "hasChildren", "isChecked", "isDisabled", "hasCheckbox", "isExpanded", "isSelected", "isVisible", "navigable", "children", "loadOnDemand", "filterable", "filter", "size", "disableParentNodesOnly"], outputs: ["childrenLoaded", "blur", "focus", "expand", "collapse", "nodeDragStart", "nodeDrag", "filterStateChange", "nodeDrop", "nodeDragEnd", "addItem", "removeItem", "checkedChange", "selectionChange", "filterChange", "nodeClick", "nodeDblClick"], exportAs: ["kendoTreeView"] }, { kind: "directive", type: CheckDirective, selector: "[kendoMultiSelectTreeCheckable]", inputs: ["checkable", "valueField", "checkedItems"], outputs: ["checkedItemsChange"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: SeparatorComponent, selector: "kendo-separator", inputs: ["orientation"] }] });
18210
+ `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { kind: "component", type: TagListComponent, selector: "kendo-taglist", inputs: ["tags", "textField", "valueField", "valueDepth", "focused", "template", "groupTemplate", "disabled", "tagPrefix", "id", "ariaLabel", "size", "rounded", "fillMode", "disabledIndices"], outputs: ["removeTag"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-adaptive-renderer", inputs: ["title", "subtitle", "showTextInput", "sharedPopupActionSheetTemplate", "text", "placeholder", "searchBarValue", "filterable", "showListContainer"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: FilterInputDirective, selector: "[filterInput]", inputs: ["filterInput"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "directive", type: CheckAllDirective, selector: "[checkAll]", inputs: ["lastAction", "treeview", "checkedItems", "valueField", "checkAll"], outputs: ["checkedItemsChange"] }, { kind: "component", type: TreeViewComponent, selector: "kendo-treeview", inputs: ["filterInputPlaceholder", "expandDisabledNodes", "animate", "nodeTemplate", "loadMoreButtonTemplate", "loadMoreButtonRole", "trackBy", "nodes", "textField", "hasChildren", "isChecked", "isDisabled", "hasCheckbox", "isExpanded", "isSelected", "isVisible", "navigable", "children", "loadOnDemand", "filterable", "filter", "size", "disableParentNodesOnly"], outputs: ["childrenLoaded", "blur", "focus", "expand", "collapse", "nodeDragStart", "nodeDrag", "filterStateChange", "nodeDrop", "nodeDragEnd", "addItem", "removeItem", "checkedChange", "selectionChange", "filterChange", "nodeClick", "nodeDblClick"], exportAs: ["kendoTreeView"] }, { kind: "directive", type: CheckDirective, selector: "[kendoMultiSelectTreeCheckable]", inputs: ["checkable", "valueField", "checkedItems"], outputs: ["checkedItemsChange"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: SeparatorComponent, selector: "kendo-separator", inputs: ["orientation"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
17775
18211
  }
17776
18212
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: MultiSelectTreeComponent, decorators: [{
17777
18213
  type: Component,
17778
18214
  args: [{
18215
+ selector: 'kendo-multiselecttree',
17779
18216
  exportAs: 'kendoMultiSelectTree',
17780
18217
  providers: [
17781
18218
  LocalizationService,
@@ -17807,7 +18244,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
17807
18244
  },
17808
18245
  provideComponentName('multiselecttree')
17809
18246
  ],
17810
- selector: 'kendo-multiselecttree',
17811
18247
  template: `
17812
18248
  <ng-container kendoMultiSelectTreeLocalizedMessages
17813
18249
  i18n-noDataText="kendo.multiselecttree.noDataText|The text displayed in the popup when there are no items"
@@ -18056,6 +18492,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
18056
18492
  <kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
18057
18493
  }
18058
18494
  `,
18495
+ changeDetection: ChangeDetectionStrategy.OnPush,
18059
18496
  standalone: true,
18060
18497
  imports: [LocalizedMessagesDirective, TagListComponent, IconWrapperComponent, NgTemplateOutlet, AdaptiveRendererComponent, NgClass, FilterInputDirective, EventsOutsideAngularDirective, TemplateContextDirective, CheckAllDirective, TreeViewComponent, CheckDirective, ResizeSensorComponent, SeparatorComponent]
18061
18498
  }]
@@ -18083,6 +18520,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
18083
18520
  }], isReadonly: [{
18084
18521
  type: HostBinding,
18085
18522
  args: ['attr.readonly']
18523
+ }], isReadonlyClass: [{
18524
+ type: HostBinding,
18525
+ args: ['class.k-readonly']
18086
18526
  }], ariaActiveDescendant: [{
18087
18527
  type: HostBinding,
18088
18528
  args: ['attr.aria-activedescendant']
@@ -18162,9 +18602,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
18162
18602
  type: Input
18163
18603
  }], readonly: [{
18164
18604
  type: Input
18165
- }, {
18166
- type: HostBinding,
18167
- args: ['class.k-readonly']
18168
18605
  }], valuePrimitive: [{
18169
18606
  type: Input
18170
18607
  }], loadOnDemand: [{