@progress/kendo-angular-dropdowns 25.1.0-develop.8 → 25.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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: 1787574795,
41
- version: '25.1.0-develop.8',
40
+ publishDate: 1788864937,
41
+ version: '25.1.0',
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,20 @@ 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();
8502
+ if (shouldOpen) {
8503
+ this.focus();
8504
+ }
8292
8505
  this._toggle(shouldOpen);
8293
8506
  });
8294
8507
  }
8295
8508
  _toggle(open) {
8296
- this._open = open;
8509
+ this._open.set(open);
8297
8510
  this.destroyPopup();
8298
8511
  if (this.isActionSheetExpanded) {
8299
8512
  this.closeActionSheet();
8300
8513
  }
8301
- if (this._open) {
8514
+ if (this._open()) {
8302
8515
  this.createPopup();
8303
8516
  }
8304
8517
  }
@@ -8333,7 +8546,7 @@ class DropDownListComponent {
8333
8546
  * Returns the current open state. Returns `true` if the popup or actionSheet is open.
8334
8547
  */
8335
8548
  get isOpen() {
8336
- return isTruthy(this._open || this.isActionSheetExpanded);
8549
+ return isTruthy(this._open() || this.isActionSheetExpanded);
8337
8550
  }
8338
8551
  /**
8339
8552
  * 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 +8582,6 @@ class DropDownListComponent {
8369
8582
  * @hidden
8370
8583
  */
8371
8584
  setDisabledState(isDisabled) {
8372
- this.cdr.markForCheck();
8373
8585
  this.disabled = isDisabled;
8374
8586
  }
8375
8587
  /**
@@ -8402,7 +8614,7 @@ class DropDownListComponent {
8402
8614
  * @hidden
8403
8615
  */
8404
8616
  getText() {
8405
- return this.text;
8617
+ return this._text();
8406
8618
  }
8407
8619
  createPopup() {
8408
8620
  if (this.virtual) {
@@ -8470,13 +8682,13 @@ class DropDownListComponent {
8470
8682
  }
8471
8683
  updateState({ dataItem, confirm = false }) {
8472
8684
  this.dataItem = dataItem;
8473
- this.text = getter(dataItem, this.textField);
8685
+ this._text.set(getter(dataItem, this.textField));
8474
8686
  if (confirm) {
8475
8687
  this._previousDataItem = dataItem;
8476
8688
  }
8477
8689
  }
8478
8690
  clearState() {
8479
- this.text = undefined;
8691
+ this._text.set(undefined);
8480
8692
  this.dataItem = undefined;
8481
8693
  }
8482
8694
  resetSelection(index) {
@@ -8683,6 +8895,13 @@ class DropDownListComponent {
8683
8895
  componentBlur() {
8684
8896
  if (!this.isActionSheetExpanded) {
8685
8897
  this.isFocused = false;
8898
+ if (isDocumentAvailable()) {
8899
+ setTimeout(() => {
8900
+ if (this.searchInput && document.activeElement === this.searchInput.nativeElement) {
8901
+ this.searchInput.nativeElement.blur();
8902
+ }
8903
+ });
8904
+ }
8686
8905
  const selectionPresent = isPresent(this.selectionService.selected[0]);
8687
8906
  const valueHasChanged = selectionPresent && getter(this.value, this.valueField) !== getter(this.dataService.itemAt(this.selectionService.selected[0]), this.valueField);
8688
8907
  if (valueHasChanged ||
@@ -8870,11 +9089,9 @@ class DropDownListComponent {
8870
9089
  }
8871
9090
  assignAriaDescribedBy() {
8872
9091
  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();
9092
+ const trimmed = currentValue.replace(this.valueLabelId(), '').trim();
9093
+ this.valueLabelId.set(`k-${guid()}`);
9094
+ const newValue = `${this.valueLabelId()} ${trimmed}`.trim();
8878
9095
  this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-describedby', newValue);
8879
9096
  }
8880
9097
  setComponentClasses() {
@@ -8956,7 +9173,7 @@ class DropDownListComponent {
8956
9173
  listboxLabel="Options"
8957
9174
  >
8958
9175
  </ng-container>
8959
- <span class="k-input-inner" unselectable="on" [id]="valueLabelId" (click)="$event.preventDefault()">
9176
+ <span class="k-input-inner" unselectable="on" [id]="valueLabelId()" (click)="$event.preventDefault()">
8960
9177
  <span class="k-input-value-text">
8961
9178
  @if (valueTemplate) {
8962
9179
  <ng-template
@@ -9096,11 +9313,13 @@ class DropDownListComponent {
9096
9313
  </ng-template>
9097
9314
  }
9098
9315
  </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"] }] });
9316
+ `, 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
9317
  }
9101
9318
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: DropDownListComponent, decorators: [{
9102
9319
  type: Component,
9103
9320
  args: [{
9321
+ selector: 'kendo-dropdownlist',
9322
+ changeDetection: ChangeDetectionStrategy.OnPush,
9104
9323
  exportAs: 'kendoDropDownList',
9105
9324
  providers: [
9106
9325
  DROPDOWNLIST_VALUE_ACCESSOR,
@@ -9122,7 +9341,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
9122
9341
  { provide: KENDO_WEBMCP_HOST, useExisting: forwardRef(() => DropDownListComponent) },
9123
9342
  provideComponentName('dropdownlist')
9124
9343
  ],
9125
- selector: 'kendo-dropdownlist',
9126
9344
  template: `
9127
9345
  <ng-container kendoDropDownListLocalizedMessages
9128
9346
  i18n-noDataText="kendo.dropdownlist.noDataText|The text displayed in the popup when there are no items"
@@ -9147,7 +9365,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
9147
9365
  listboxLabel="Options"
9148
9366
  >
9149
9367
  </ng-container>
9150
- <span class="k-input-inner" unselectable="on" [id]="valueLabelId" (click)="$event.preventDefault()">
9368
+ <span class="k-input-inner" unselectable="on" [id]="valueLabelId()" (click)="$event.preventDefault()">
9151
9369
  <span class="k-input-value-text">
9152
9370
  @if (valueTemplate) {
9153
9371
  <ng-template
@@ -9943,12 +10161,30 @@ class MultiSelectComponent {
9943
10161
  tagListId = `k-${guid()}`;
9944
10162
  tagPrefix = "tag-" + guid();
9945
10163
  optionPrefix = "option-" + guid();
9946
- popupRef;
9947
- text;
9948
- tags;
9949
- isAllSelected = false;
9950
- isPartiallySelected = false;
9951
- focusedTagIndex = undefined;
10164
+ get popupRef() {
10165
+ return this._popupRef();
10166
+ }
10167
+ set popupRef(value) {
10168
+ this._popupRef.set(value);
10169
+ }
10170
+ get isAllSelected() {
10171
+ return this._isAllSelected();
10172
+ }
10173
+ set isAllSelected(value) {
10174
+ this._isAllSelected.set(value);
10175
+ }
10176
+ set isPartiallySelected(value) {
10177
+ this._isPartiallySelected.set(value);
10178
+ }
10179
+ get isPartiallySelected() {
10180
+ return this._isPartiallySelected();
10181
+ }
10182
+ get text() { return this._text(); }
10183
+ set text(v) { this._text.set(v); }
10184
+ get tags() { return this._tags(); }
10185
+ set tags(v) { this._tags.set(v); }
10186
+ get focusedTagIndex() { return this._focusedTagIndex(); }
10187
+ set focusedTagIndex(v) { this._focusedTagIndex.set(v); }
9952
10188
  /**
9953
10189
  * @hidden
9954
10190
  */
@@ -10137,7 +10373,8 @@ class MultiSelectComponent {
10137
10373
  * Shows or hides the current group sticky header when using grouped data.
10138
10374
  * By default the sticky header is displayed ([see example](https://www.telerik.com/kendo-angular-ui/components/dropdowns/autocomplete/grouping#sticky-header)).
10139
10375
  */
10140
- showStickyHeader = true;
10376
+ set showStickyHeader(v) { this._showStickyHeader.set(v); }
10377
+ get showStickyHeader() { return this._showStickyHeader(); }
10141
10378
  /**
10142
10379
  * Renders a Select All sticky header item at the top of the popup list.
10143
10380
  * Clicking it selects or deselects all currently available items and triggers the `valueChange` event.
@@ -10157,19 +10394,22 @@ class MultiSelectComponent {
10157
10394
  /**
10158
10395
  * @hidden
10159
10396
  */
10160
- focusableId = `k-${guid()}`;
10397
+ set focusableId(v) { this._focusableId.set(v); }
10398
+ get focusableId() { return this._focusableId(); }
10161
10399
  /**
10162
10400
  * 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
10401
  * Set to `false` to keep the list open while the component has focus.
10164
10402
  *
10165
10403
  * @default true
10166
10404
  */
10167
- autoClose = true;
10405
+ set autoClose(v) { this._autoClose.set(v); }
10406
+ get autoClose() { return this._autoClose(); }
10168
10407
  /**
10169
10408
  * Controls the loading state of the MultiSelect.
10170
10409
  * Set to `true` to display the loading indicator.
10171
10410
  */
10172
- loading;
10411
+ set loading(v) { this._loading.set(v); }
10412
+ get loading() { return this._loading(); }
10173
10413
  /**
10174
10414
  * Sets the data source for the MultiSelect.
10175
10415
  * Provide the data as an array of items.
@@ -10201,7 +10441,7 @@ class MultiSelectComponent {
10201
10441
  * > The component ignores selected values that don't exist in the data source.
10202
10442
  */
10203
10443
  set value(values) {
10204
- this._value = values ? values : [];
10444
+ this._value.set(values ? values : []);
10205
10445
  if (!this.differ && this.value) {
10206
10446
  this.differ = this.differs.find(this.value).create();
10207
10447
  }
@@ -10211,26 +10451,29 @@ class MultiSelectComponent {
10211
10451
  }
10212
10452
  }
10213
10453
  get value() {
10214
- return this._value;
10454
+ return this._value();
10215
10455
  }
10216
10456
  /**
10217
10457
  * Sets the field name that contains the item value in the data objects.
10218
10458
  * Skip this property when your data contains only primitive values.
10219
10459
  * Supports nested property paths like `category.id`.
10220
10460
  */
10221
- valueField;
10461
+ set valueField(v) { this._valueField.set(v); }
10462
+ get valueField() { return this._valueField(); }
10222
10463
  /**
10223
10464
  * Sets the field name that contains the item text in the data objects.
10224
10465
  * Skip this property when your data contains only primitive values.
10225
10466
  * Supports nested property paths like `category.name`.
10226
10467
  */
10227
- textField;
10468
+ set textField(v) { this._textField.set(v); }
10469
+ get textField() { return this._textField(); }
10228
10470
  /**
10229
10471
  * Sets the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) attribute of the component.
10230
10472
  *
10231
10473
  * @default 0
10232
10474
  */
10233
- tabindex = 0;
10475
+ set tabindex(v) { this._tabindex.set(v); }
10476
+ get tabindex() { return this._tabindex(); }
10234
10477
  /**
10235
10478
  * @hidden
10236
10479
  */
@@ -10248,10 +10491,10 @@ class MultiSelectComponent {
10248
10491
  if (size) {
10249
10492
  this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', size));
10250
10493
  }
10251
- this._size = size;
10494
+ this._size.set(size);
10252
10495
  }
10253
10496
  get size() {
10254
- return this._size;
10497
+ return this._size();
10255
10498
  }
10256
10499
  /**
10257
10500
  * Sets the border radius of the component. The default value is set by the Kendo theme.
@@ -10261,10 +10504,10 @@ class MultiSelectComponent {
10261
10504
  if (rounded) {
10262
10505
  this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(rounded));
10263
10506
  }
10264
- this._rounded = rounded;
10507
+ this._rounded.set(rounded);
10265
10508
  }
10266
10509
  get rounded() {
10267
- return this._rounded;
10510
+ return this._rounded();
10268
10511
  }
10269
10512
  /**
10270
10513
  * Sets the fill mode of the component. The default value is set by the Kendo theme.
@@ -10274,20 +10517,20 @@ class MultiSelectComponent {
10274
10517
  if (fillMode) {
10275
10518
  this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', fillMode));
10276
10519
  }
10277
- this._fillMode = fillMode;
10520
+ this._fillMode.set(fillMode);
10278
10521
  }
10279
10522
  get fillMode() {
10280
- return this._fillMode;
10523
+ return this._fillMode();
10281
10524
  }
10282
10525
  /**
10283
10526
  * Sets the placeholder text for the MultiSelect input.
10284
10527
  * When the values are selected, it disappears.
10285
10528
  */
10286
10529
  set placeholder(text) {
10287
- this._placeholder = text || '';
10530
+ this._placeholder.set(text || '');
10288
10531
  }
10289
10532
  get placeholder() {
10290
- return this.selectedDataItems.length ? '' : this._placeholder;
10533
+ return this.selectedDataItems.length ? '' : this._placeholder();
10291
10534
  }
10292
10535
  /**
10293
10536
  * Controls the adaptive mode behavior of the component.
@@ -10295,17 +10538,20 @@ class MultiSelectComponent {
10295
10538
  *
10296
10539
  * @default "none"
10297
10540
  */
10298
- adaptiveMode = 'none';
10541
+ set adaptiveMode(v) { this._adaptiveMode.set(v); }
10542
+ get adaptiveMode() { return this._adaptiveMode(); }
10299
10543
  /**
10300
10544
  * Sets the title text for the ActionSheet in adaptive mode.
10301
10545
  * Uses the component's label text by default.
10302
10546
  */
10303
- adaptiveTitle = '';
10547
+ set adaptiveTitle(v) { this._adaptiveTitle.set(v); }
10548
+ get adaptiveTitle() { return this._adaptiveTitle(); }
10304
10549
  /**
10305
10550
  * Sets the subtitle text for the ActionSheet in adaptive mode.
10306
10551
  * No subtitle appears by default.
10307
10552
  */
10308
- adaptiveSubtitle;
10553
+ set adaptiveSubtitle(v) { this._adaptiveSubtitle.set(v); }
10554
+ get adaptiveSubtitle() { return this._adaptiveSubtitle(); }
10309
10555
  /**
10310
10556
  * @hidden
10311
10557
  */
@@ -10319,7 +10565,8 @@ class MultiSelectComponent {
10319
10565
  *
10320
10566
  * @default false
10321
10567
  */
10322
- disabled = false;
10568
+ set disabled(v) { this._disabled.set(v); }
10569
+ get disabled() { return this._disabled(); }
10323
10570
  /**
10324
10571
  * Determines wether the item will be disabled. The function is executed for each data item.
10325
10572
  * The function receives the item as an argument and should return `true` if the item is disabled.
@@ -10337,10 +10584,10 @@ class MultiSelectComponent {
10337
10584
  * @default false
10338
10585
  */
10339
10586
  set checkboxes(settings) {
10340
- this._checkboxes = normalizeCheckboxesSettings(settings);
10587
+ this._checkboxes.set(normalizeCheckboxesSettings(settings));
10341
10588
  }
10342
10589
  get checkboxes() {
10343
- return this._checkboxes;
10590
+ return this._checkboxes();
10344
10591
  }
10345
10592
  /**
10346
10593
  * Controls the read-only state of the component.
@@ -10348,33 +10595,35 @@ class MultiSelectComponent {
10348
10595
  *
10349
10596
  * @default false
10350
10597
  */
10351
- readonly = false;
10598
+ get readonly() { return this._readonly(); }
10599
+ set readonly(v) { this._readonly.set(v); }
10352
10600
  /**
10353
10601
  * Enables the filtering functionality of the MultiSelect.
10354
10602
  * Set to `true` to allow users to filter the data by typing.
10355
10603
  *
10356
10604
  * @default false
10357
10605
  */
10358
- filterable = false;
10606
+ set filterable(v) { this._filterable.set(v); }
10607
+ get filterable() { return this._filterable(); }
10359
10608
  /**
10360
10609
  * Enables virtualization to improve performance with large datasets.
10361
10610
  * Pass `true` for default settings or an object to configure virtualization.
10362
10611
  */
10363
10612
  set virtual(settings) {
10364
- this._virtualSettings = normalizeVirtualizationSettings(settings);
10613
+ this._virtualSettings.set(normalizeVirtualizationSettings(settings));
10365
10614
  }
10366
10615
  get virtual() {
10367
- return this._virtualSettings;
10616
+ return this._virtualSettings();
10368
10617
  }
10369
10618
  /**
10370
10619
  * Configures the popup appearance and behavior.
10371
10620
  * Set properties like `animate`, `width`, `height`, `popupClass`, and `appendTo`.
10372
10621
  */
10373
10622
  set popupSettings(settings) {
10374
- this._popupSettings = Object.assign({ animate: true }, settings);
10623
+ this._popupSettings.set(Object.assign({ animate: true }, settings));
10375
10624
  }
10376
10625
  get popupSettings() {
10377
- return this._popupSettings;
10626
+ return this._popupSettings();
10378
10627
  }
10379
10628
  /**
10380
10629
  * Sets the height of the options list in the popup.
@@ -10382,29 +10631,28 @@ class MultiSelectComponent {
10382
10631
  *
10383
10632
  * @default 200
10384
10633
  */
10385
- set listHeight(_listHeight) {
10386
- this._listHeight = _listHeight;
10634
+ set listHeight(v) {
10635
+ this._listHeight.set(v);
10387
10636
  }
10388
10637
  get listHeight() {
10389
10638
  if (this.isAdaptive) {
10390
10639
  return;
10391
10640
  }
10392
- return this._listHeight;
10641
+ return this._listHeight();
10393
10642
  }
10394
- _listHeight = 200;
10395
10643
  /**
10396
10644
  * Controls the type of selected values.
10397
10645
  * Set to `true` for primitive values or `false` for object references.
10398
10646
  * When undefined, the component determines the type based on `valueField`.
10399
10647
  */
10400
10648
  set valuePrimitive(isPrimitive) {
10401
- this._valuePrimitive = isPrimitive;
10649
+ this._valuePrimitive.set(isPrimitive);
10402
10650
  }
10403
10651
  get valuePrimitive() {
10404
- if (!isPresent(this._valuePrimitive)) {
10652
+ if (!isPresent(this._valuePrimitive())) {
10405
10653
  return !isPresent(this.valueField);
10406
10654
  }
10407
- return this._valuePrimitive;
10655
+ return this._valuePrimitive();
10408
10656
  }
10409
10657
  /**
10410
10658
  * Controls whether a clear button appears when items are selected.
@@ -10412,14 +10660,16 @@ class MultiSelectComponent {
10412
10660
  *
10413
10661
  * @default true
10414
10662
  */
10415
- clearButton = true;
10663
+ set clearButton(v) { this._clearButton.set(v); }
10664
+ get clearButton() { return this._clearButton(); }
10416
10665
  /**
10417
10666
  * Sets a function that transforms selected data items into display tags.
10418
10667
  * Use this to customize how selected items appear as tags.
10419
10668
  *
10420
10669
  * @default (tags) => tags || []
10421
10670
  */
10422
- tagMapper = (tags) => tags || [];
10671
+ set tagMapper(fn) { this._tagMapper.set(fn); }
10672
+ get tagMapper() { return this._tagMapper(); }
10423
10673
  /**
10424
10674
  * Allows users to add custom values not present in the data source.
10425
10675
  * Set to `true` to enable custom value input.
@@ -10427,20 +10677,14 @@ class MultiSelectComponent {
10427
10677
  *
10428
10678
  * @default false
10429
10679
  */
10430
- allowCustom = false;
10680
+ set allowCustom(v) { this._allowCustom.set(v); }
10681
+ get allowCustom() { return this._allowCustom(); }
10431
10682
  /**
10432
10683
  * Sets a function that normalizes custom user input into data items.
10433
10684
  * Use this when your data items differ from simple strings.
10434
10685
  */
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
- }));
10686
+ set valueNormalizer(fn) { this._valueNormalizer.set(fn); }
10687
+ get valueNormalizer() { return this._valueNormalizer(); }
10444
10688
  /**
10445
10689
  * Sets HTML attributes for the inner input element.
10446
10690
  * You cannot change attributes essential for component functionality.
@@ -10448,7 +10692,8 @@ class MultiSelectComponent {
10448
10692
  * @remarks
10449
10693
  * This property is related to accessibility.
10450
10694
  */
10451
- inputAttributes;
10695
+ set inputAttributes(v) { this._inputAttributes.set(v); }
10696
+ get inputAttributes() { return this._inputAttributes(); }
10452
10697
  /**
10453
10698
  * Fires when the user types in the input field.
10454
10699
  * Use this event to filter the data source based on user input.
@@ -10571,9 +10816,11 @@ class MultiSelectComponent {
10571
10816
  }
10572
10817
  disabledIndices;
10573
10818
  initialized = false;
10574
- _size;
10575
- _rounded;
10576
- _fillMode;
10819
+ _isPartiallySelected = signal(false, ...(ngDevMode ? [{ debugName: "_isPartiallySelected" }] : []));
10820
+ _isAllSelected = signal(null, ...(ngDevMode ? [{ debugName: "_isAllSelected" }] : []));
10821
+ _size = signal(undefined, ...(ngDevMode ? [{ debugName: "_size" }] : []));
10822
+ _rounded = signal(undefined, ...(ngDevMode ? [{ debugName: "_rounded" }] : []));
10823
+ _fillMode = signal(undefined, ...(ngDevMode ? [{ debugName: "_fillMode" }] : []));
10577
10824
  _valueHolder = [];
10578
10825
  isCustomValueSelected = false;
10579
10826
  preserveFocusIndex = null;
@@ -10603,6 +10850,7 @@ class MultiSelectComponent {
10603
10850
  : pageData;
10604
10851
  return data;
10605
10852
  }
10853
+ _focusedTagIndex = signal(undefined, ...(ngDevMode ? [{ debugName: "_focusedTagIndex" }] : []));
10606
10854
  constructor(wrapper, localization, popupService, dataService, selectionService, navigationService, disabledItemsService, cdr, differs, renderer, _zone, injector, adaptiveService) {
10607
10855
  this.wrapper = wrapper;
10608
10856
  this.localization = localization;
@@ -10822,7 +11070,7 @@ class MultiSelectComponent {
10822
11070
  this.addCustomValue(this.text);
10823
11071
  this.addCustomValue(text);
10824
11072
  }
10825
- this.text = text;
11073
+ this._text.set(text);
10826
11074
  if (text && !this.isOpen) {
10827
11075
  this.openPopup();
10828
11076
  }
@@ -10852,7 +11100,7 @@ class MultiSelectComponent {
10852
11100
  if (this.filterable && this.text) {
10853
11101
  this.filterChange.emit("");
10854
11102
  }
10855
- this.text = "";
11103
+ this._text.set('');
10856
11104
  /* Clearing the value from the input as the setInputSize calculation will be incorrect otherwise.
10857
11105
  Calling cdr.detectChanges to clear the input value as a result of property binding
10858
11106
  causes JAWS to read outdated tag values in IE upon tag selection for some reason. */
@@ -10983,13 +11231,23 @@ class MultiSelectComponent {
10983
11231
  this.searchbar.setInputSize();
10984
11232
  this.subs.add(this.renderer.listen(this.wrapper.nativeElement, 'mousedown', this.handleMousedown.bind(this)));
10985
11233
  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
- }
11234
+ runInInjectionContext(this.injector, () => {
11235
+ afterNextRender(() => {
11236
+ const ariaLabel = this.searchbar.input.nativeElement.getAttribute('aria-labelledby') ||
11237
+ this.searchbar.input.nativeElement.getAttribute('data-kendo-label-id');
11238
+ if (ariaLabel) {
11239
+ this.renderer.setAttribute(this.tagList.hostElement.nativeElement, 'aria-labelledby', ariaLabel);
11240
+ }
11241
+ });
10992
11242
  });
11243
+ const control = this.formControl;
11244
+ if (control && control.events) {
11245
+ this.subs.add(control.events.subscribe(e => {
11246
+ if (e instanceof TouchedChangeEvent) {
11247
+ this.cdr.markForCheck();
11248
+ }
11249
+ }));
11250
+ }
10993
11251
  }
10994
11252
  ngOnDestroy() {
10995
11253
  this._toggle(false);
@@ -11006,23 +11264,22 @@ class MultiSelectComponent {
11006
11264
  // The Promise is required for opening the popup on load.
11007
11265
  // Otherwise, the "Expression has changed..." type error will be thrown.
11008
11266
  Promise.resolve(null).then(() => {
11009
- const shouldOpen = isPresent(open) ? open : !this._open;
11267
+ const shouldOpen = isPresent(open) ? open : !this._open();
11010
11268
  this._toggle(shouldOpen);
11011
- this.cdr.markForCheck();
11012
11269
  });
11013
11270
  }
11014
11271
  /**
11015
11272
  * Returns the current open state. Returns `true` if the popup or actionSheet is open.
11016
11273
  */
11017
11274
  get isOpen() {
11018
- return isTruthy(this._open || this.isActionSheetExpanded);
11275
+ return isTruthy(this._open() || this.isActionSheetExpanded);
11019
11276
  }
11020
11277
  /**
11021
11278
  * Resets the MultiSelect by clearing the text and value.
11022
11279
  * This method does not trigger the `selectionChange` and `valueChange` events.
11023
11280
  */
11024
11281
  reset() {
11025
- this.text = "";
11282
+ this._text.set('');
11026
11283
  this.value = [];
11027
11284
  }
11028
11285
  /**
@@ -11054,7 +11311,6 @@ class MultiSelectComponent {
11054
11311
  * @hidden
11055
11312
  */
11056
11313
  setDisabledState(isDisabled) {
11057
- this.cdr.markForCheck();
11058
11314
  this.disabled = isDisabled;
11059
11315
  }
11060
11316
  /**
@@ -11068,13 +11324,43 @@ class MultiSelectComponent {
11068
11324
  }
11069
11325
  onChangeCallback = (_) => { };
11070
11326
  onTouchedCallback = (_) => { };
11071
- _placeholder = '';
11072
- _open = false;
11073
- _value = [];
11074
- _popupSettings = { animate: true };
11075
- _virtualSettings;
11076
- _valuePrimitive;
11077
- _checkboxes = { enabled: false };
11327
+ _popupRef = signal(null, ...(ngDevMode ? [{ debugName: "_popupRef" }] : []));
11328
+ _placeholder = signal('', ...(ngDevMode ? [{ debugName: "_placeholder" }] : []));
11329
+ _open = signal(false, ...(ngDevMode ? [{ debugName: "_open" }] : []));
11330
+ _value = signal([], ...(ngDevMode ? [{ debugName: "_value" }] : []));
11331
+ _popupSettings = signal({ animate: true }, ...(ngDevMode ? [{ debugName: "_popupSettings" }] : []));
11332
+ _virtualSettings = signal(undefined, ...(ngDevMode ? [{ debugName: "_virtualSettings" }] : []));
11333
+ _valuePrimitive = signal(undefined, ...(ngDevMode ? [{ debugName: "_valuePrimitive" }] : []));
11334
+ _checkboxes = signal({ enabled: false }, ...(ngDevMode ? [{ debugName: "_checkboxes" }] : []));
11335
+ _text = signal(undefined, ...(ngDevMode ? [{ debugName: "_text" }] : []));
11336
+ _tags = signal(undefined, ...(ngDevMode ? [{ debugName: "_tags" }] : []));
11337
+ _showStickyHeader = signal(true, ...(ngDevMode ? [{ debugName: "_showStickyHeader" }] : []));
11338
+ _focusableId = signal(`k-${guid()}`, ...(ngDevMode ? [{ debugName: "_focusableId" }] : []));
11339
+ _autoClose = signal(true, ...(ngDevMode ? [{ debugName: "_autoClose" }] : []));
11340
+ _loading = signal(undefined, ...(ngDevMode ? [{ debugName: "_loading" }] : []));
11341
+ _valueField = signal(undefined, ...(ngDevMode ? [{ debugName: "_valueField" }] : []));
11342
+ _textField = signal(undefined, ...(ngDevMode ? [{ debugName: "_textField" }] : []));
11343
+ _tabindex = signal(0, ...(ngDevMode ? [{ debugName: "_tabindex" }] : []));
11344
+ _adaptiveMode = signal('none', ...(ngDevMode ? [{ debugName: "_adaptiveMode" }] : []));
11345
+ _adaptiveTitle = signal('', ...(ngDevMode ? [{ debugName: "_adaptiveTitle" }] : []));
11346
+ _adaptiveSubtitle = signal(undefined, ...(ngDevMode ? [{ debugName: "_adaptiveSubtitle" }] : []));
11347
+ _disabled = signal(false, ...(ngDevMode ? [{ debugName: "_disabled" }] : []));
11348
+ _readonly = signal(false, ...(ngDevMode ? [{ debugName: "_readonly" }] : []));
11349
+ _filterable = signal(false, ...(ngDevMode ? [{ debugName: "_filterable" }] : []));
11350
+ _clearButton = signal(true, ...(ngDevMode ? [{ debugName: "_clearButton" }] : []));
11351
+ _tagMapper = signal((tags) => tags || [], ...(ngDevMode ? [{ debugName: "_tagMapper" }] : []));
11352
+ _allowCustom = signal(false, ...(ngDevMode ? [{ debugName: "_allowCustom" }] : []));
11353
+ _valueNormalizer = signal((text) => text.pipe(map((userInput) => {
11354
+ const comparer = (item) => typeof item === 'string' && userInput.toLowerCase() === item.toLowerCase();
11355
+ const matchingValue = this.value.find(comparer);
11356
+ if (matchingValue) {
11357
+ return matchingValue;
11358
+ }
11359
+ const matchingItem = this.dataService.find(comparer);
11360
+ return matchingItem ? matchingItem : userInput;
11361
+ })), ...(ngDevMode ? [{ debugName: "_valueNormalizer" }] : []));
11362
+ _inputAttributes = signal(undefined, ...(ngDevMode ? [{ debugName: "_inputAttributes" }] : []));
11363
+ _listHeight = signal(200, ...(ngDevMode ? [{ debugName: "_listHeight" }] : []));
11078
11364
  _isFocused = false;
11079
11365
  set isFocused(isFocused) {
11080
11366
  this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-focus');
@@ -11243,7 +11529,9 @@ class MultiSelectComponent {
11243
11529
  const itemIndex = this.dataService.indexOf(newValue);
11244
11530
  const customItem = itemIndex === -1;
11245
11531
  if (this.value.indexOf(newValue) === -1) {
11246
- !this.isActionSheetExpanded && (this.tags = this.buildTags([...this.selectedDataItems, normalizedValue]));
11532
+ if (!this.isActionSheetExpanded) {
11533
+ this.tags = this.buildTags([...this.selectedDataItems, normalizedValue]);
11534
+ }
11247
11535
  if (!customItem) {
11248
11536
  this.selectionService.add(itemIndex);
11249
11537
  }
@@ -11386,6 +11674,7 @@ class MultiSelectComponent {
11386
11674
  this.selectionService.selectFromTo(0, dataItemsCount - 1);
11387
11675
  this.selectionService.emitMultipleAddedRemoved();
11388
11676
  }
11677
+ this.cdr.markForCheck();
11389
11678
  }
11390
11679
  handleSelectAllToBeginning() {
11391
11680
  const selectedItemsCount = this.selectionService.selected.length;
@@ -11565,14 +11854,14 @@ class MultiSelectComponent {
11565
11854
  return eventArgs.isDefaultPrevented();
11566
11855
  }
11567
11856
  _toggle(open) {
11568
- this._open = open;
11857
+ this._open.set(open);
11569
11858
  this.destroyPopup();
11570
11859
  if (this.isActionSheetExpanded) {
11571
11860
  this.actionSheet.toggle(false);
11572
11861
  this.closed.emit();
11573
11862
  this.isFocused = false;
11574
11863
  }
11575
- if (this._open) {
11864
+ if (this._open()) {
11576
11865
  this.createPopup();
11577
11866
  }
11578
11867
  }
@@ -11624,7 +11913,7 @@ class MultiSelectComponent {
11624
11913
  if (!this.dataService.grouped) {
11625
11914
  setListBoxAriaLabelledBy(this.optionsList, this.searchbar.input, this.renderer);
11626
11915
  }
11627
- this.optionsList.scrollToItem(this.selectionService.focused);
11916
+ this.optionsList?.scrollToItem(this.selectionService.focused);
11628
11917
  this.selectionService.focus(this.selectionService.focused);
11629
11918
  this.opened.emit();
11630
11919
  });
@@ -12025,12 +12314,14 @@ class MultiSelectComponent {
12025
12314
  </ng-template>
12026
12315
  }
12027
12316
  </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"] }] });
12317
+ `, 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
12318
  }
12030
12319
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: MultiSelectComponent, decorators: [{
12031
12320
  type: Component,
12032
12321
  args: [{
12322
+ selector: 'kendo-multiselect',
12033
12323
  exportAs: 'kendoMultiSelect',
12324
+ changeDetection: ChangeDetectionStrategy.OnPush,
12034
12325
  providers: [
12035
12326
  MULTISELECT_VALUE_ACCESSOR,
12036
12327
  DataService,
@@ -12053,7 +12344,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
12053
12344
  },
12054
12345
  provideComponentName('multiselect')
12055
12346
  ],
12056
- selector: 'kendo-multiselect',
12057
12347
  template: `
12058
12348
  <ng-container kendoMultiSelectLocalizedMessages
12059
12349
  i18n-noDataText="kendo.multiselect.noDataText|The text displayed in the popup when there are no items"
@@ -12684,8 +12974,10 @@ class MultiColumnComboBoxComponent extends ComboBoxComponent {
12684
12974
  set headerTable(headerTable) {
12685
12975
  this._headerTable = headerTable;
12686
12976
  if (this.headerTable) {
12687
- this.zone.onStable.pipe(take(1)).subscribe(() => {
12688
- this.rowWidth = this.calculateRowWidth();
12977
+ runInInjectionContext(this.injector, () => {
12978
+ afterNextRender(() => {
12979
+ this.rowWidth.set(this.calculateRowWidth());
12980
+ });
12689
12981
  });
12690
12982
  }
12691
12983
  }
@@ -12696,18 +12988,20 @@ class MultiColumnComboBoxComponent extends ComboBoxComponent {
12696
12988
  * @hidden
12697
12989
  */
12698
12990
  set headerColumns(columns) {
12699
- this.zone.onStable.pipe(take(1)).subscribe(() => {
12700
- this.headerColumnWidths = columns.map(column => column.nativeElement.offsetWidth);
12991
+ runInInjectionContext(this.injector, () => {
12992
+ afterNextRender(() => {
12993
+ this.headerColumnWidths.set(columns.map(column => column.nativeElement.offsetWidth));
12994
+ });
12701
12995
  });
12702
12996
  }
12703
12997
  /**
12704
12998
  * @hidden
12705
12999
  */
12706
- rowWidth;
13000
+ rowWidth = signal(undefined, ...(ngDevMode ? [{ debugName: "rowWidth" }] : []));
12707
13001
  /**
12708
13002
  * @hidden
12709
13003
  */
12710
- headerColumnWidths = [];
13004
+ headerColumnWidths = signal([], ...(ngDevMode ? [{ debugName: "headerColumnWidths" }] : []));
12711
13005
  /**
12712
13006
  * @hidden
12713
13007
  */
@@ -12766,12 +13060,20 @@ class MultiColumnComboBoxComponent extends ComboBoxComponent {
12766
13060
  this.updateColumnsMediaState();
12767
13061
  this.addWindowResizeListener();
12768
13062
  this.windowSize = this.adaptiveService.size;
12769
- this.rowWidth = this.calculateRowWidth();
13063
+ this.rowWidth.set(this.calculateRowWidth());
12770
13064
  this.totalColumnsWidth = this.columns.reduce((total, currentColumn) => total + currentColumn.width, 0);
12771
13065
  this.columnsChangeSubscription = this.columns.changes.subscribe(() => {
12772
- this.rowWidth = this.calculateRowWidth();
13066
+ this.rowWidth.set(this.calculateRowWidth());
12773
13067
  this.totalColumnsWidth = this.columns.reduce((total, currentColumn) => total + currentColumn.width, 0);
12774
13068
  });
13069
+ const control = this.formControl;
13070
+ if (control && control.events) {
13071
+ this.subs.add(control.events.subscribe(e => {
13072
+ if (e instanceof TouchedChangeEvent) {
13073
+ this.cdr.markForCheck();
13074
+ }
13075
+ }));
13076
+ }
12775
13077
  this.cdr.detectChanges();
12776
13078
  }
12777
13079
  ngOnDestroy() {
@@ -12815,7 +13117,7 @@ class MultiColumnComboBoxComponent extends ComboBoxComponent {
12815
13117
  if (!this.virtual) {
12816
13118
  return this.columns.get(index).width;
12817
13119
  }
12818
- return this.headerColumnWidths[index];
13120
+ return this.headerColumnWidths()[index];
12819
13121
  }
12820
13122
  verifySettings() {
12821
13123
  if (!isDevMode()) {
@@ -13122,8 +13424,8 @@ class MultiColumnComboBoxComponent extends ComboBoxComponent {
13122
13424
  [id]="listBoxId"
13123
13425
  [virtual]="virtual"
13124
13426
  [type]="'dropdowngrid'"
13125
- [rowWidth]="rowWidth"
13126
13427
  [columnsWidths]="visibleColumnsWidths"
13428
+ [rowWidth]="rowWidth()"
13127
13429
  [showStickyHeader]="showStickyHeader"
13128
13430
  [ariaLabel]="messageFor('listboxLabel')"
13129
13431
  (pageChange)="pageChange($event)"
@@ -13164,11 +13466,13 @@ class MultiColumnComboBoxComponent extends ComboBoxComponent {
13164
13466
  }
13165
13467
  </div>
13166
13468
  </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"] }] });
13469
+ `, 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
13470
  }
13169
13471
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: MultiColumnComboBoxComponent, decorators: [{
13170
13472
  type: Component,
13171
13473
  args: [{
13474
+ selector: 'kendo-multicolumncombobox',
13475
+ changeDetection: ChangeDetectionStrategy.OnPush,
13172
13476
  providers: [
13173
13477
  SelectionService,
13174
13478
  DataService,
@@ -13202,7 +13506,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
13202
13506
  },
13203
13507
  provideComponentName('multicolumncombobox')
13204
13508
  ],
13205
- selector: 'kendo-multicolumncombobox',
13206
13509
  template: `
13207
13510
  <ng-container
13208
13511
  kendoMultiColumnComboBoxLocalizedMessages
@@ -13435,8 +13738,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
13435
13738
  [id]="listBoxId"
13436
13739
  [virtual]="virtual"
13437
13740
  [type]="'dropdowngrid'"
13438
- [rowWidth]="rowWidth"
13439
13741
  [columnsWidths]="visibleColumnsWidths"
13742
+ [rowWidth]="rowWidth()"
13440
13743
  [showStickyHeader]="showStickyHeader"
13441
13744
  [ariaLabel]="messageFor('listboxLabel')"
13442
13745
  (pageChange)="pageChange($event)"
@@ -13556,11 +13859,13 @@ class DropDownTreeComponent {
13556
13859
  /**
13557
13860
  * @hidden
13558
13861
  */
13559
- icon;
13862
+ set icon(value) { this._icon.set(value); }
13863
+ get icon() { return this._icon(); }
13560
13864
  /**
13561
13865
  * @hidden
13562
13866
  */
13563
- svgIcon;
13867
+ set svgIcon(value) { this._svgIcon.set(value); }
13868
+ get svgIcon() { return this._svgIcon(); }
13564
13869
  /**
13565
13870
  * @hidden
13566
13871
  */
@@ -13601,6 +13906,9 @@ class DropDownTreeComponent {
13601
13906
  get isReadonly() {
13602
13907
  return this.readonly ? '' : null;
13603
13908
  }
13909
+ get isReadonlyClass() {
13910
+ return this.readonly;
13911
+ }
13604
13912
  get hostAriaInvalid() {
13605
13913
  return (this.formControl?.invalid && (this.formControl?.touched || this.formControl?.dirty)) ? true : null;
13606
13914
  }
@@ -13702,23 +14010,25 @@ class DropDownTreeComponent {
13702
14010
  /**
13703
14011
  * Sets and gets the loading state of the DropDownTree.
13704
14012
  */
13705
- loading;
14013
+ set loading(value) { this._loading.set(value); }
14014
+ get loading() { return this._loading(); }
13706
14015
  /**
13707
14016
  * If set to `true`, renders a button on hovering over the component.
13708
14017
  * Clicking this button resets the value of the component to `undefined` and triggers the `change` event.
13709
14018
  */
13710
- clearButton = true;
14019
+ set clearButton(value) { this._clearButton.set(value); }
14020
+ get clearButton() { return this._clearButton(); }
13711
14021
  /**
13712
14022
  * Sets the data of the DropDownTree.
13713
14023
  *
13714
14024
  * > The data has to be provided in an array-like list with objects.
13715
14025
  */
13716
14026
  set data(data) {
13717
- this._nodes = data;
14027
+ this._data.set(data);
13718
14028
  this.setState();
13719
14029
  }
13720
14030
  get data() {
13721
- return this._nodes;
14031
+ return this._data();
13722
14032
  }
13723
14033
  /**
13724
14034
  * Sets the value of the DropDownTree.
@@ -13727,11 +14037,11 @@ class DropDownTreeComponent {
13727
14037
  *
13728
14038
  */
13729
14039
  set value(newValue) {
13730
- this._value = newValue;
14040
+ this._value.set(newValue);
13731
14041
  this.setState();
13732
14042
  }
13733
14043
  get value() {
13734
- return this._value;
14044
+ return this._value();
13735
14045
  }
13736
14046
  /**
13737
14047
  * The fields of the data item that provide the text content of the nodes inside the
@@ -13741,7 +14051,8 @@ class DropDownTreeComponent {
13741
14051
  *
13742
14052
  * > The `textField` property can be set to point to a nested property value - e.g. `category.name`.
13743
14053
  */
13744
- textField;
14054
+ set textField(value) { this._textField.set(value); }
14055
+ get textField() { return this._textField(); }
13745
14056
  /**
13746
14057
  * The fields of the data item that provide the value of the nodes inside the
13747
14058
  * DropDownTree ([see example](https://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdowntree/data-binding)). If the `valueField`
@@ -13750,24 +14061,29 @@ class DropDownTreeComponent {
13750
14061
  *
13751
14062
  * > The `valueField` property can be set to point to a nested property value - e.g. `category.id`.
13752
14063
  */
13753
- valueField;
14064
+ set valueField(value) { this._valueField.set(value); }
14065
+ get valueField() { return this._valueField(); }
13754
14066
  /**
13755
14067
  * Sets the level in the data set where the value can be found when `valueField` is an Array.
13756
14068
  * The field serves to correctly allocate a data item used when the DropDownTree is initialized with a value.
13757
14069
  */
13758
- valueDepth;
14070
+ set valueDepth(value) { this._valueDepth.set(value); }
14071
+ get valueDepth() { return this._valueDepth(); }
13759
14072
  /**
13760
14073
  * A function which determines if a specific node has child nodes.
13761
14074
  */
13762
- hasChildren = hasChildren$1;
14075
+ set hasChildren(fn) { this._hasChildren.set(fn); }
14076
+ get hasChildren() { return this._hasChildren(); }
13763
14077
  /**
13764
14078
  * A function which provides the child nodes for a given parent node.
13765
14079
  */
13766
- fetchChildren = fetchChildren$1;
14080
+ set fetchChildren(fn) { this._fetchChildren.set(fn); }
14081
+ get fetchChildren() { return this._fetchChildren(); }
13767
14082
  /**
13768
14083
  * Sets the placeholder of the input element of the DropDownTree.
13769
14084
  */
13770
- placeholder = "";
14085
+ set placeholder(value) { this._placeholder.set(value); }
14086
+ get placeholder() { return this._placeholder(); }
13771
14087
  /**
13772
14088
  * Configures the popup of the DropDownTree.
13773
14089
  *
@@ -13779,21 +14095,21 @@ class DropDownTreeComponent {
13779
14095
  * - `appendTo: "root" | "component" | ViewContainerRef`&mdash;Specifies the component to which the popup will be appended.
13780
14096
  */
13781
14097
  set popupSettings(settings) {
13782
- this._popupSettings = Object.assign({}, DEFAULT_POPUP_SETTINGS$1, settings);
14098
+ this._popupSettings.set(Object.assign({}, DEFAULT_POPUP_SETTINGS$1, settings));
13783
14099
  }
13784
14100
  get popupSettings() {
13785
- return this._popupSettings;
14101
+ return this._popupSettings();
13786
14102
  }
13787
14103
  /**
13788
14104
  * Keeps the current `dataItem` object in order to resolve selection.
13789
14105
  * Needs to be provided when `value` is bound in and `valuePrimitive` is set to true.
13790
14106
  */
13791
14107
  set dataItem(item) {
13792
- this._dataItem = item;
14108
+ this._dataItem.set(item);
13793
14109
  this.setState();
13794
14110
  }
13795
14111
  get dataItem() {
13796
- return this._dataItem ? this._dataItem : this.value;
14112
+ return this._dataItem() ? this._dataItem() : this.value;
13797
14113
  }
13798
14114
  /**
13799
14115
  * Sets the height of the options list in the popup. By default, `listHeight` is 200px.
@@ -13804,31 +14120,33 @@ class DropDownTreeComponent {
13804
14120
  * When using `adaptiveMode` and the screen size is `small` or `medium` the `listHeight` property is set to null.
13805
14121
  */
13806
14122
  set listHeight(_listHeight) {
13807
- this._listHeight = _listHeight;
14123
+ this._listHeight.set(_listHeight);
13808
14124
  }
13809
14125
  get listHeight() {
13810
14126
  if (this.isAdaptive) {
13811
14127
  return;
13812
14128
  }
13813
- return this._listHeight;
14129
+ return this._listHeight();
13814
14130
  }
13815
- _listHeight = 200;
13816
14131
  /**
13817
14132
  * 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
14133
  */
13819
- disabled = false;
14134
+ set disabled(value) { this._disabled.set(value); }
14135
+ get disabled() { return this._disabled(); }
13820
14136
  /**
13821
14137
  * Sets the read-only state of the component.
13822
14138
  *
13823
14139
  * @default false
13824
14140
  */
13825
- readonly = false;
14141
+ set readonly(value) { this._readonly.set(value); }
14142
+ get readonly() { return this._readonly(); }
13826
14143
  /**
13827
14144
  * Specifies the type of the selected value
13828
14145
  * ([more information and example](https://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdowntree/value-binding#primitive-values)).
13829
14146
  * If set to `true`, the selected value has to be of a primitive value.
13830
14147
  */
13831
- valuePrimitive = false;
14148
+ set valuePrimitive(value) { this._valuePrimitive.set(value); }
14149
+ get valuePrimitive() { return this._valuePrimitive(); }
13832
14150
  /**
13833
14151
  * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.
13834
14152
  *
@@ -13837,10 +14155,10 @@ class DropDownTreeComponent {
13837
14155
  set tabindex(value) {
13838
14156
  const providedTabIndex = Number(value);
13839
14157
  const defaultTabIndex = 0;
13840
- this._tabindex = !isNaN(providedTabIndex) ? providedTabIndex : defaultTabIndex;
14158
+ this._tabindex.set(!isNaN(providedTabIndex) ? providedTabIndex : defaultTabIndex);
13841
14159
  }
13842
14160
  get tabindex() {
13843
- return this.disabled ? -1 : this._tabindex;
14161
+ return this.disabled ? -1 : this._tabindex();
13844
14162
  }
13845
14163
  /**
13846
14164
  * Sets the size of the component. The default value is set by the Kendo theme.
@@ -13850,10 +14168,10 @@ class DropDownTreeComponent {
13850
14168
  if (size) {
13851
14169
  this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('picker', size));
13852
14170
  }
13853
- this._size = size;
14171
+ this._size.set(size);
13854
14172
  }
13855
14173
  get size() {
13856
- return this._size;
14174
+ return this._size();
13857
14175
  }
13858
14176
  /**
13859
14177
  * Sets the border radius of the component. The default value is set by the Kendo theme.
@@ -13863,10 +14181,10 @@ class DropDownTreeComponent {
13863
14181
  if (rounded) {
13864
14182
  this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(rounded));
13865
14183
  }
13866
- this._rounded = rounded;
14184
+ this._rounded.set(rounded);
13867
14185
  }
13868
14186
  get rounded() {
13869
- return this._rounded;
14187
+ return this._rounded();
13870
14188
  }
13871
14189
  /**
13872
14190
  * Sets the fillMode of the component. The default value is set by the Kendo theme.
@@ -13876,51 +14194,58 @@ class DropDownTreeComponent {
13876
14194
  if (fillMode) {
13877
14195
  this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('picker', fillMode));
13878
14196
  }
13879
- this._fillMode = fillMode;
14197
+ this._fillMode.set(fillMode);
13880
14198
  }
13881
14199
  get fillMode() {
13882
- return this._fillMode;
14200
+ return this._fillMode();
13883
14201
  }
13884
14202
  /**
13885
14203
  * A function that is executed for each data item and determines if a specific item is disabled.
13886
14204
  */
13887
- itemDisabled = itemDisabled$1;
14205
+ set itemDisabled(fn) { this._itemDisabled.set(fn); }
14206
+ get itemDisabled() { return this._itemDisabled(); }
13888
14207
  /**
13889
14208
  * A function that is executed for each data item and determines if a specific node is expanded.
13890
14209
  */
13891
- isNodeExpanded;
14210
+ set isNodeExpanded(fn) { this._isNodeExpanded.set(fn); }
14211
+ get isNodeExpanded() { return this._isNodeExpanded(); }
13892
14212
  /**
13893
14213
  * 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
14214
  * Useful for custom filtering implementations.
13895
14215
  */
13896
- isNodeVisible = isNodeVisible$1;
14216
+ set isNodeVisible(fn) { this._isNodeVisible.set(fn); }
14217
+ get isNodeVisible() { return this._isNodeVisible(); }
13897
14218
  /**
13898
14219
  * Indicates whether the child nodes will be fetched on node expand or will be initially prefetched.
13899
14220
  * @default true
13900
14221
  */
13901
- loadOnDemand = true;
14222
+ set loadOnDemand(value) { this._loadOnDemand.set(value); }
14223
+ get loadOnDemand() { return this._loadOnDemand(); }
13902
14224
  /**
13903
14225
  * Renders the built-in input element for filtering the DropDownTree.
13904
14226
  * 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
14227
  * 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
14228
  */
13907
- filterable = false;
14229
+ set filterable(value) { this._filterable.set(value); }
14230
+ get filterable() { return this._filterable(); }
13908
14231
  /**
13909
14232
  * @hidden
13910
14233
  */
13911
- filter = '';
14234
+ set filter(value) { this._filter.set(value); }
14235
+ get filter() { return this._filter(); }
13912
14236
  /**
13913
14237
  * @hidden
13914
14238
  *
13915
14239
  * Used by the kendo-label and kendo-floatinglabel to access and associate the focusable element with the provided label via aria-labelledby.
13916
14240
  */
13917
- focusableId = `k-${guid()}`;
14241
+ set focusableId(value) { this._focusableId.set(value); }
14242
+ get focusableId() { return this._focusableId(); }
13918
14243
  set isFocused(isFocused) {
13919
14244
  this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-focus');
13920
- this._isFocused = isFocused;
14245
+ this._isFocused.set(isFocused);
13921
14246
  }
13922
14247
  get isFocused() {
13923
- return this._isFocused;
14248
+ return this._isFocused();
13924
14249
  }
13925
14250
  get width() {
13926
14251
  const wrapperWidth = this.wrapper.nativeElement.offsetWidth;
@@ -13956,15 +14281,18 @@ class DropDownTreeComponent {
13956
14281
  /**
13957
14282
  * @hidden
13958
14283
  */
13959
- selectedKeys = [];
14284
+ get selectedKeys() { return this._selectedKeys(); }
14285
+ set selectedKeys(value) { this._selectedKeys.set(value); }
13960
14286
  /**
13961
14287
  * @hidden
13962
14288
  */
13963
- selectBy;
14289
+ get selectBy() { return this._selectBy(); }
14290
+ set selectBy(value) { this._selectBy.set(value); }
13964
14291
  /**
13965
14292
  * @hidden
13966
14293
  */
13967
- text;
14294
+ get text() { return this._text(); }
14295
+ set text(value) { this._text.set(value); }
13968
14296
  /**
13969
14297
  * @hidden
13970
14298
  */
@@ -13976,17 +14304,20 @@ class DropDownTreeComponent {
13976
14304
  /**
13977
14305
  * Enables or disables the adaptive mode. By default the adaptive rendering is disabled.
13978
14306
  */
13979
- adaptiveMode = 'none';
14307
+ set adaptiveMode(value) { this._adaptiveMode.set(value); }
14308
+ get adaptiveMode() { return this._adaptiveMode(); }
13980
14309
  /**
13981
14310
  * Sets the title of the ActionSheet that is rendered instead of the Popup when using small screen devices.
13982
14311
  * By default the ActionSheet title uses the text provided for the label of the DropDownTree.
13983
14312
  */
13984
- adaptiveTitle = '';
14313
+ set adaptiveTitle(value) { this._adaptiveTitle.set(value); }
14314
+ get adaptiveTitle() { return this._adaptiveTitle(); }
13985
14315
  /**
13986
14316
  * Sets the subtitle of the ActionSheet that is rendered instead of the Popup when using small screen devices.
13987
14317
  * By default the ActionSheet does not render a subtitle.
13988
14318
  */
13989
- adaptiveSubtitle = '';
14319
+ set adaptiveSubtitle(value) { this._adaptiveSubtitle.set(value); }
14320
+ get adaptiveSubtitle() { return this._adaptiveSubtitle(); }
13990
14321
  /**
13991
14322
  * @hidden
13992
14323
  */
@@ -13996,7 +14327,8 @@ class DropDownTreeComponent {
13996
14327
  /**
13997
14328
  * @hidden
13998
14329
  */
13999
- windowSize = 'large';
14330
+ get windowSize() { return this._windowSize(); }
14331
+ set windowSize(value) { this._windowSize.set(value); }
14000
14332
  /**
14001
14333
  * @hidden
14002
14334
  */
@@ -14082,7 +14414,8 @@ class DropDownTreeComponent {
14082
14414
  /**
14083
14415
  * @hidden
14084
14416
  */
14085
- allNodesHidden = false;
14417
+ get allNodesHidden() { return this._allNodesHidden(); }
14418
+ set allNodesHidden(value) { this._allNodesHidden.set(value); }
14086
14419
  /**
14087
14420
  * @hidden
14088
14421
  *
@@ -14097,17 +14430,7 @@ class DropDownTreeComponent {
14097
14430
  return ngControl?.control || null;
14098
14431
  }
14099
14432
  treeViewId = `k-${guid()}`;
14100
- _nodes;
14101
- _value;
14102
- _popupSettings = DEFAULT_POPUP_SETTINGS$1;
14103
- _tabindex = 0;
14104
- _isFocused = false;
14105
- _dataItem;
14106
14433
  _treeview;
14107
- _size;
14108
- _rounded;
14109
- _fillMode;
14110
- _popupRef = signal(null, ...(ngDevMode ? [{ debugName: "_popupRef" }] : []));
14111
14434
  _searchableNodes = [];
14112
14435
  _typedValue = '';
14113
14436
  printableCharacters = new Subject();
@@ -14116,6 +14439,45 @@ class DropDownTreeComponent {
14116
14439
  // Keep an instance of the last focused node for when the popup close is prevented
14117
14440
  // in order to be able to properly restore the focus
14118
14441
  lastNodeOnFocus;
14442
+ _popupRef = signal(undefined, ...(ngDevMode ? [{ debugName: "_popupRef" }] : []));
14443
+ _icon = signal(undefined, ...(ngDevMode ? [{ debugName: "_icon" }] : []));
14444
+ _svgIcon = signal(undefined, ...(ngDevMode ? [{ debugName: "_svgIcon" }] : []));
14445
+ _loading = signal(undefined, ...(ngDevMode ? [{ debugName: "_loading" }] : []));
14446
+ _clearButton = signal(true, ...(ngDevMode ? [{ debugName: "_clearButton" }] : []));
14447
+ _textField = signal(undefined, ...(ngDevMode ? [{ debugName: "_textField" }] : []));
14448
+ _valueField = signal(undefined, ...(ngDevMode ? [{ debugName: "_valueField" }] : []));
14449
+ _valueDepth = signal(undefined, ...(ngDevMode ? [{ debugName: "_valueDepth" }] : []));
14450
+ _hasChildren = signal(hasChildren$1, ...(ngDevMode ? [{ debugName: "_hasChildren" }] : []));
14451
+ _fetchChildren = signal(fetchChildren$1, ...(ngDevMode ? [{ debugName: "_fetchChildren" }] : []));
14452
+ _placeholder = signal('', ...(ngDevMode ? [{ debugName: "_placeholder" }] : []));
14453
+ _disabled = signal(false, ...(ngDevMode ? [{ debugName: "_disabled" }] : []));
14454
+ _readonly = signal(false, ...(ngDevMode ? [{ debugName: "_readonly" }] : []));
14455
+ _valuePrimitive = signal(false, ...(ngDevMode ? [{ debugName: "_valuePrimitive" }] : []));
14456
+ _loadOnDemand = signal(true, ...(ngDevMode ? [{ debugName: "_loadOnDemand" }] : []));
14457
+ _filterable = signal(false, ...(ngDevMode ? [{ debugName: "_filterable" }] : []));
14458
+ _filter = signal('', ...(ngDevMode ? [{ debugName: "_filter" }] : []));
14459
+ _focusableId = signal(`k-${guid()}`, ...(ngDevMode ? [{ debugName: "_focusableId" }] : []));
14460
+ _adaptiveMode = signal('none', ...(ngDevMode ? [{ debugName: "_adaptiveMode" }] : []));
14461
+ _adaptiveTitle = signal('', ...(ngDevMode ? [{ debugName: "_adaptiveTitle" }] : []));
14462
+ _adaptiveSubtitle = signal('', ...(ngDevMode ? [{ debugName: "_adaptiveSubtitle" }] : []));
14463
+ _isNodeExpanded = signal(undefined, ...(ngDevMode ? [{ debugName: "_isNodeExpanded" }] : []));
14464
+ _isNodeVisible = signal(isNodeVisible$1, ...(ngDevMode ? [{ debugName: "_isNodeVisible" }] : []));
14465
+ _itemDisabled = signal(itemDisabled$1, ...(ngDevMode ? [{ debugName: "_itemDisabled" }] : []));
14466
+ _data = signal(undefined, ...(ngDevMode ? [{ debugName: "_data" }] : []));
14467
+ _value = signal(undefined, ...(ngDevMode ? [{ debugName: "_value" }] : []));
14468
+ _popupSettings = signal(DEFAULT_POPUP_SETTINGS$1, ...(ngDevMode ? [{ debugName: "_popupSettings" }] : []));
14469
+ _dataItem = signal(undefined, ...(ngDevMode ? [{ debugName: "_dataItem" }] : []));
14470
+ _listHeight = signal(200, ...(ngDevMode ? [{ debugName: "_listHeight" }] : []));
14471
+ _tabindex = signal(0, ...(ngDevMode ? [{ debugName: "_tabindex" }] : []));
14472
+ _size = signal(undefined, ...(ngDevMode ? [{ debugName: "_size" }] : []));
14473
+ _rounded = signal(undefined, ...(ngDevMode ? [{ debugName: "_rounded" }] : []));
14474
+ _fillMode = signal(undefined, ...(ngDevMode ? [{ debugName: "_fillMode" }] : []));
14475
+ _isFocused = signal(false, ...(ngDevMode ? [{ debugName: "_isFocused" }] : []));
14476
+ _text = signal(undefined, ...(ngDevMode ? [{ debugName: "_text" }] : []));
14477
+ _allNodesHidden = signal(false, ...(ngDevMode ? [{ debugName: "_allNodesHidden" }] : []));
14478
+ _selectedKeys = signal([], ...(ngDevMode ? [{ debugName: "_selectedKeys" }] : []));
14479
+ _selectBy = signal(undefined, ...(ngDevMode ? [{ debugName: "_selectBy" }] : []));
14480
+ _windowSize = signal('large', ...(ngDevMode ? [{ debugName: "_windowSize" }] : []));
14119
14481
  constructor(injector, wrapper, popupService, navigationService, renderer, _zone, cdr, localization, adaptiveService) {
14120
14482
  this.injector = injector;
14121
14483
  this.wrapper = wrapper;
@@ -14184,6 +14546,14 @@ class DropDownTreeComponent {
14184
14546
  this.windowSize = this.adaptiveService.size;
14185
14547
  this.subs.add(this.renderer.listen(this.wrapper.nativeElement, 'click', this.handleClick.bind(this)));
14186
14548
  this.subs.add(this.renderer.listen(this.wrapper.nativeElement, 'keydown', this.handleKeydown.bind(this)));
14549
+ const control = this.formControl;
14550
+ if (control && control.events) {
14551
+ this.subs.add(control.events.subscribe(e => {
14552
+ if (e instanceof TouchedChangeEvent) {
14553
+ this.cdr.markForCheck();
14554
+ }
14555
+ }));
14556
+ }
14187
14557
  }
14188
14558
  /**
14189
14559
  * @hidden
@@ -14444,7 +14814,6 @@ class DropDownTreeComponent {
14444
14814
  */
14445
14815
  setDisabledState(isDisabled) {
14446
14816
  this.disabled = isDisabled;
14447
- this.cdr.markForCheck();
14448
14817
  }
14449
14818
  /**
14450
14819
  * @hidden
@@ -14454,10 +14823,12 @@ class DropDownTreeComponent {
14454
14823
  this.filter = value;
14455
14824
  this.filterChange.next(value);
14456
14825
  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
- }
14826
+ runInInjectionContext(this.injector, () => {
14827
+ afterNextRender(() => {
14828
+ if (this.data.length === 0 || this.allNodesHidden || this.filter === '') {
14829
+ this.filterInput?.nativeElement.focus();
14830
+ }
14831
+ });
14461
14832
  });
14462
14833
  }
14463
14834
  /**
@@ -14645,7 +15016,6 @@ class DropDownTreeComponent {
14645
15016
  else {
14646
15017
  this.clearState();
14647
15018
  }
14648
- this.cdr.markForCheck();
14649
15019
  }
14650
15020
  clearState() {
14651
15021
  this.text = undefined;
@@ -14811,7 +15181,7 @@ class DropDownTreeComponent {
14811
15181
  this.removeTreeViewFromTabOrder();
14812
15182
  }
14813
15183
  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: [
15184
+ 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
15185
  DataService,
14816
15186
  SelectionService,
14817
15187
  NavigationService,
@@ -15045,6 +15415,7 @@ class DropDownTreeComponent {
15045
15415
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: DropDownTreeComponent, decorators: [{
15046
15416
  type: Component,
15047
15417
  args: [{
15418
+ selector: 'kendo-dropdowntree',
15048
15419
  exportAs: 'kendoDropDownTree',
15049
15420
  providers: [
15050
15421
  DataService,
@@ -15079,7 +15450,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
15079
15450
  },
15080
15451
  provideComponentName('dropdowntree')
15081
15452
  ],
15082
- selector: 'kendo-dropdowntree',
15083
15453
  template: `
15084
15454
  <ng-container kendoDropDownTreeLocalizedMessages
15085
15455
  i18n-noDataText="kendo.dropdowntree.noDataText|The text displayed in the popup when there are no items"
@@ -15298,6 +15668,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
15298
15668
  }], isReadonly: [{
15299
15669
  type: HostBinding,
15300
15670
  args: ['attr.readonly']
15671
+ }], isReadonlyClass: [{
15672
+ type: HostBinding,
15673
+ args: ['class.k-readonly']
15301
15674
  }], hostAriaInvalid: [{
15302
15675
  type: HostBinding,
15303
15676
  args: ['attr.aria-invalid']
@@ -15416,9 +15789,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
15416
15789
  type: Input
15417
15790
  }], readonly: [{
15418
15791
  type: Input
15419
- }, {
15420
- type: HostBinding,
15421
- args: ['class.k-readonly']
15422
15792
  }], valuePrimitive: [{
15423
15793
  type: Input
15424
15794
  }], tabindex: [{
@@ -16003,6 +16373,9 @@ class MultiSelectTreeComponent {
16003
16373
  get isReadonly() {
16004
16374
  return this.readonly ? '' : null;
16005
16375
  }
16376
+ get isReadonlyClass() {
16377
+ return this.readonly;
16378
+ }
16006
16379
  get ariaActiveDescendant() {
16007
16380
  return this.focusedTagId;
16008
16381
  }
@@ -16028,19 +16401,22 @@ class MultiSelectTreeComponent {
16028
16401
  *
16029
16402
  * @default 'none'
16030
16403
  */
16031
- adaptiveMode = 'none';
16404
+ set adaptiveMode(value) { this._adaptiveMode.set(value); }
16405
+ get adaptiveMode() { return this._adaptiveMode(); }
16032
16406
  /**
16033
16407
  * Sets the title text for the ActionSheet in adaptive mode on small screens.
16034
16408
  * Uses the component label by default if not set.
16035
16409
  *
16036
16410
  * @default ''
16037
16411
  */
16038
- adaptiveTitle = '';
16412
+ set adaptiveTitle(value) { this._adaptiveTitle.set(value); }
16413
+ get adaptiveTitle() { return this._adaptiveTitle(); }
16039
16414
  /**
16040
16415
  * Sets the subtitle text for the ActionSheet in adaptive mode on small screens.
16041
16416
  * No subtitle appears by default.
16042
16417
  */
16043
- adaptiveSubtitle;
16418
+ set adaptiveSubtitle(value) { this._adaptiveSubtitle.set(value); }
16419
+ get adaptiveSubtitle() { return this._adaptiveSubtitle(); }
16044
16420
  /**
16045
16421
  * @hidden
16046
16422
  */
@@ -16050,7 +16426,8 @@ class MultiSelectTreeComponent {
16050
16426
  /**
16051
16427
  * @hidden
16052
16428
  */
16053
- windowSize = 'large';
16429
+ get windowSize() { return this._windowSize(); }
16430
+ set windowSize(value) { this._windowSize.set(value); }
16054
16431
  /**
16055
16432
  * @hidden
16056
16433
  */
@@ -16138,7 +16515,11 @@ class MultiSelectTreeComponent {
16138
16515
  * the popup is appended to a container and opened upon initialization.
16139
16516
  * Otherwise, the "Expression has changed..." type error will be thrown.
16140
16517
  */
16141
- Promise.resolve(null).then(() => this.treeview.animate = true);
16518
+ Promise.resolve(null).then(() => {
16519
+ if (this.treeview) {
16520
+ this.treeview.animate = true;
16521
+ }
16522
+ });
16142
16523
  }
16143
16524
  }
16144
16525
  get treeview() {
@@ -16155,10 +16536,10 @@ class MultiSelectTreeComponent {
16155
16536
  set tabindex(value) {
16156
16537
  const providedTabIndex = parseNumber(value);
16157
16538
  const defaultTabIndex = 0;
16158
- this._tabindex = !isNaN(providedTabIndex) ? providedTabIndex : defaultTabIndex;
16539
+ this._tabindex.set(!isNaN(providedTabIndex) ? providedTabIndex : defaultTabIndex);
16159
16540
  }
16160
16541
  get tabindex() {
16161
- return this.disabled ? -1 : this._tabindex;
16542
+ return this.disabled ? -1 : this._tabindex();
16162
16543
  }
16163
16544
  /**
16164
16545
  * Sets the visual size of the component. The default value is set by the Kendo theme.
@@ -16168,10 +16549,10 @@ class MultiSelectTreeComponent {
16168
16549
  if (size) {
16169
16550
  this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', size));
16170
16551
  }
16171
- this._size = size;
16552
+ this._size.set(size);
16172
16553
  }
16173
16554
  get size() {
16174
- return this._size;
16555
+ return this._size();
16175
16556
  }
16176
16557
  /**
16177
16558
  * Sets the border radius style of the component. The default value is set by the Kendo theme.
@@ -16181,10 +16562,10 @@ class MultiSelectTreeComponent {
16181
16562
  if (rounded) {
16182
16563
  this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(rounded));
16183
16564
  }
16184
- this._rounded = rounded;
16565
+ this._rounded.set(rounded);
16185
16566
  }
16186
16567
  get rounded() {
16187
- return this._rounded;
16568
+ return this._rounded();
16188
16569
  }
16189
16570
  /**
16190
16571
  * Sets the fill style for the component background and borders. The default value is set by the Kendo theme.
@@ -16194,22 +16575,22 @@ class MultiSelectTreeComponent {
16194
16575
  if (fillMode) {
16195
16576
  this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', fillMode));
16196
16577
  }
16197
- this._fillMode = fillMode;
16578
+ this._fillMode.set(fillMode);
16198
16579
  }
16199
16580
  get fillMode() {
16200
- return this._fillMode;
16581
+ return this._fillMode();
16201
16582
  }
16202
16583
  /**
16203
16584
  * Configures the popup container settings: animation, dimensions, styling and positioning.
16204
16585
  */
16205
16586
  set popupSettings(settings) {
16206
- this._popupSettings = Object.assign({}, DEFAULT_POPUP_SETTINGS, settings);
16587
+ this._popupSettings.set(Object.assign({}, DEFAULT_POPUP_SETTINGS, settings));
16207
16588
  // `detectChanges` needed, otherwise upon value initialization and `appendTo` property
16208
16589
  // an error is thrown => ExpressionChangedAfterItHasBeenCheckedError
16209
16590
  this.cdr.detectChanges();
16210
16591
  }
16211
16592
  get popupSettings() {
16212
- return this._popupSettings;
16593
+ return this._popupSettings();
16213
16594
  }
16214
16595
  /**
16215
16596
  * Configures the checkbox behavior for the MultiSelecTree nodes.
@@ -16218,17 +16599,17 @@ class MultiSelectTreeComponent {
16218
16599
  * @default '{ checkChildren: true, checkOnClick: true }'
16219
16600
  */
16220
16601
  set checkableSettings(settings) {
16221
- this._checkableSettings = Object.assign({}, DEFAULT_CHECKABLE_SETTINGS, settings);
16602
+ this._checkableSettings.set(Object.assign({}, DEFAULT_CHECKABLE_SETTINGS, settings));
16222
16603
  }
16223
16604
  get checkableSettings() {
16224
- return this._checkableSettings;
16605
+ return this._checkableSettings();
16225
16606
  }
16226
16607
  /**
16227
16608
  * Sets the hierarchical data source for the tree structure.
16228
16609
  * Provide an array of objects that contain the tree data and structure.
16229
16610
  */
16230
16611
  set data(data) {
16231
- this._nodes = data;
16612
+ this._data.set(data);
16232
16613
  this.setState();
16233
16614
  if (this.isContentInit) {
16234
16615
  // Needed for when the data is loaded later/asynchronously because it would not exist on ngContentInit
@@ -16236,25 +16617,25 @@ class MultiSelectTreeComponent {
16236
16617
  }
16237
16618
  }
16238
16619
  get data() {
16239
- return this._nodes;
16620
+ return this._data();
16240
16621
  }
16241
16622
  /**
16242
16623
  * Sets the selected values in the component.
16243
16624
  * Accepts primitive values if `valuePrimitive` is `true`, or objects if `false`.
16244
16625
  */
16245
16626
  set value(value) {
16246
- this._value = value ? value : [];
16627
+ this._value.set(value ? value : []);
16247
16628
  this.setState();
16248
16629
  }
16249
16630
  get value() {
16250
- return this._value;
16631
+ return this._value();
16251
16632
  }
16252
16633
  /**
16253
16634
  * Sets the data items that correspond to the selected values.
16254
16635
  * Required when using primitive values to resolve the full data objects.
16255
16636
  */
16256
16637
  set dataItems(items) {
16257
- this._dataItems = (items || []).map((dataItem, index) => {
16638
+ this._dataItems.set((items || []).map((dataItem, index) => {
16258
16639
  if (hasProps(dataItem, ['dataItem', 'index', 'level'])) {
16259
16640
  return dataItem;
16260
16641
  }
@@ -16266,11 +16647,11 @@ class MultiSelectTreeComponent {
16266
16647
  level,
16267
16648
  key
16268
16649
  };
16269
- });
16650
+ }));
16270
16651
  this.setState();
16271
16652
  }
16272
16653
  get dataItems() {
16273
- return this._dataItems || this.value.map((value, index) => {
16654
+ return this._dataItems() || this.value.map((value, index) => {
16274
16655
  const level = this.valueDepth[index] || 0;
16275
16656
  const key = valueFrom({ dataItem: value, level }, this.valueField) + '_' + (this.isHeterogeneous ? this.valueDepth[index] : 0);
16276
16657
  return {
@@ -16285,33 +16666,38 @@ class MultiSelectTreeComponent {
16285
16666
  * Specifies which data field provides the display text for tree nodes.
16286
16667
  * > The `textField` property can be set to point to a nested property value - e.g. `category.name`.
16287
16668
  */
16288
- textField;
16669
+ set textField(value) { this._textField.set(value); }
16670
+ get textField() { return this._textField(); }
16289
16671
  /**
16290
16672
  * Specifies which data field provides the unique values for tree nodes.
16291
16673
  * > The `valueField` property can be set to point to a nested property value - e.g. `category.id`.
16292
16674
  */
16293
- valueField;
16675
+ set valueField(value) { this._valueField.set(value); }
16676
+ get valueField() { return this._valueField(); }
16294
16677
  /**
16295
16678
  * Sets the levels in the data set where the values can be found when `valueField` is an Array.
16296
16679
  * The field serves to correctly allocate a data item used when the MultiSelectTree is initialized with a value.
16297
16680
  *
16298
16681
  * @default []
16299
16682
  */
16300
- valueDepth = [];
16683
+ set valueDepth(value) { this._valueDepth.set(value); }
16684
+ get valueDepth() { return this._valueDepth(); }
16301
16685
  /**
16302
16686
  * Controls the loading state visual indicator.
16303
16687
  * Shows a loading spinner when set to `true`.
16304
16688
  *
16305
16689
  * @default false
16306
16690
  */
16307
- loading;
16691
+ set loading(value) { this._loading.set(value); }
16692
+ get loading() { return this._loading(); }
16308
16693
  /**
16309
16694
  * Sets the placeholder text shown when no items are selected.
16310
16695
  * Helps guide users on what action to take.
16311
16696
  *
16312
16697
  * @default ''
16313
16698
  */
16314
- placeholder = '';
16699
+ set placeholder(value) { this._placeholder.set(value); }
16700
+ get placeholder() { return this._placeholder(); }
16315
16701
  /**
16316
16702
  * Sets the maximum height of the options list in the popup.
16317
16703
  * Controls vertical scrolling when content exceeds this height.
@@ -16319,97 +16705,110 @@ class MultiSelectTreeComponent {
16319
16705
  * @default 200
16320
16706
  */
16321
16707
  set listHeight(_listHeight) {
16322
- this._listHeight = _listHeight;
16708
+ this._listHeight.set(_listHeight);
16323
16709
  }
16324
16710
  get listHeight() {
16325
16711
  if (this.isAdaptive) {
16326
16712
  return;
16327
16713
  }
16328
- return this._listHeight;
16714
+ return this._listHeight();
16329
16715
  }
16330
- _listHeight = 200;
16331
16716
  /**
16332
16717
  * Controls whether the component accepts user input.
16333
16718
  * Prevents all user interactions when set to `true`.
16334
16719
  *
16335
16720
  * @default false
16336
16721
  */
16337
- disabled = false;
16722
+ set disabled(value) { this._disabled.set(value); }
16723
+ get disabled() { return this._disabled(); }
16338
16724
  /**
16339
16725
  * Sets the component to read-only mode.
16340
16726
  * Displays current selections but prevents changes.
16341
16727
  *
16342
16728
  * @default false
16343
16729
  */
16344
- readonly = false;
16730
+ set readonly(value) { this._readonly.set(value); }
16731
+ get readonly() { return this._readonly(); }
16345
16732
  /**
16346
16733
  * Determines the data type of selected values.
16347
16734
  * Set to `true` for primitive values, false for complex objects.
16348
16735
  *
16349
16736
  * @default false
16350
16737
  */
16351
- valuePrimitive = false;
16738
+ set valuePrimitive(value) { this._valuePrimitive.set(value); }
16739
+ get valuePrimitive() { return this._valuePrimitive(); }
16352
16740
  /**
16353
16741
  * Controls when child nodes load from the data source.
16354
16742
  * Set to `true` to load children only when parent nodes expand.
16355
16743
  *
16356
16744
  * @default false
16357
16745
  */
16358
- loadOnDemand = false;
16746
+ set loadOnDemand(value) { this._loadOnDemand.set(value); }
16747
+ get loadOnDemand() { return this._loadOnDemand(); }
16359
16748
  /**
16360
16749
  * Sets the unique identifier for the focusable element.
16361
16750
  * Used internally for accessibility and label association.
16362
16751
  */
16363
- focusableId = `k-${guid()}`;
16752
+ set focusableId(value) { this._focusableId.set(value); }
16753
+ get focusableId() { return this._focusableId(); }
16364
16754
  /**
16365
16755
  * Shows a clear button to reset all selections.
16366
16756
  * Appears on hover when selections exist and the component is not disabled.
16367
16757
  *
16368
16758
  * @default true
16369
16759
  */
16370
- clearButton = true;
16760
+ set clearButton(value) { this._clearButton.set(value); }
16761
+ get clearButton() { return this._clearButton(); }
16371
16762
  /**
16372
16763
  * Enables the built-in filter input for searching tree nodes.
16373
16764
  * Shows a search box above the tree when enabled.
16374
16765
  *
16375
16766
  * @default false
16376
16767
  */
16377
- filterable = false;
16768
+ set filterable(value) { this._filterable.set(value); }
16769
+ get filterable() { return this._filterable(); }
16378
16770
  /**
16379
16771
  * Shows a checkbox to select or deselect all visible tree nodes.
16380
16772
  * Appears above the tree when checkboxes are enabled.
16381
16773
  *
16382
16774
  * @default false
16383
16775
  */
16384
- checkAll = false;
16776
+ set checkAll(value) { this._checkAll.set(value); }
16777
+ get checkAll() { return this._checkAll(); }
16385
16778
  /**
16386
16779
  * Determines if a tree node contains child nodes.
16387
16780
  * Return `true` if the node has children, false otherwise.
16388
16781
  */
16389
- hasChildren = hasChildren;
16782
+ set hasChildren(fn) { this._hasChildren.set(fn); }
16783
+ get hasChildren() { return this._hasChildren(); }
16390
16784
  /**
16391
16785
  * Function that provides child nodes for a parent node.
16392
16786
  * Return an Observable of child objects for the given parent.
16393
16787
  */
16394
- fetchChildren = fetchChildren;
16788
+ set fetchChildren(fn) { this._fetchChildren.set(fn); }
16789
+ get fetchChildren() { return this._fetchChildren(); }
16395
16790
  /**
16396
16791
  * Determines if a specific node is expanded. The function is executed for each data item.
16397
16792
  */
16398
- isNodeExpanded;
16793
+ set isNodeExpanded(fn) { this._isNodeExpanded.set(fn); }
16794
+ get isNodeExpanded() { return this._isNodeExpanded(); }
16399
16795
  /**
16400
16796
  * Determines if a tree node should be hidden.
16401
16797
  */
16402
- isNodeVisible = isNodeVisible;
16798
+ set isNodeVisible(fn) { this._isNodeVisible.set(fn); }
16799
+ get isNodeVisible() { return this._isNodeVisible(); }
16403
16800
  /**
16404
16801
  * Determines if a tree node is disabled. The function is executed for each data item.
16405
16802
  */
16406
- itemDisabled = itemDisabled;
16803
+ set itemDisabled(fn) { this._itemDisabled.set(fn); }
16804
+ get itemDisabled() { return this._itemDisabled(); }
16407
16805
  /**
16408
16806
  * @param { Any[] } dataItems - The selected data items from the list.
16409
16807
  * @returns { Any[] } - The tags that will be rendered by the component.
16410
16808
  * Transforms the provided array of data items into an array of tags.
16411
16809
  */
16412
- tagMapper = (tags) => tags || [];
16810
+ set tagMapper(fn) { this._tagMapper.set(fn); }
16811
+ get tagMapper() { return this._tagMapper(); }
16413
16812
  /**
16414
16813
  * Fires when the component receives focus.
16415
16814
  */
@@ -16474,10 +16873,10 @@ class MultiSelectTreeComponent {
16474
16873
  }
16475
16874
  set isFocused(isFocused) {
16476
16875
  this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-focus');
16477
- this._isFocused = isFocused;
16876
+ this._isFocused.set(isFocused);
16478
16877
  }
16479
16878
  get isFocused() {
16480
- return this._isFocused;
16879
+ return this._isFocused();
16481
16880
  }
16482
16881
  /**
16483
16882
  * Returns the current open state. Returns `true` if the popup or actionSheet is open.
@@ -16623,18 +17022,21 @@ class MultiSelectTreeComponent {
16623
17022
  /**
16624
17023
  * @hidden
16625
17024
  */
16626
- filter = '';
17025
+ get filter() { return this._filter(); }
17026
+ set filter(value) { this._filter.set(value); }
16627
17027
  /**
16628
17028
  * @hidden
16629
17029
  */
16630
- checkedItems = [];
17030
+ get checkedItems() { return this._checkedItems(); }
17031
+ set checkedItems(value) { this._checkedItems.set(value); }
16631
17032
  /**
16632
17033
  * @hidden
16633
17034
  * The flag is needed in order to determine how to construct the items map keys.
16634
17035
  * If `true`, then the key consists of the item's value and level (depth),
16635
17036
  * else the key consists of the item's value and 0 (no leveling required)
16636
17037
  */
16637
- isHeterogeneous;
17038
+ get isHeterogeneous() { return this._isHeterogeneous(); }
17039
+ set isHeterogeneous(value) { this._isHeterogeneous.set(value); }
16638
17040
  /**
16639
17041
  * @hidden
16640
17042
  */
@@ -16642,24 +17044,18 @@ class MultiSelectTreeComponent {
16642
17044
  /**
16643
17045
  * @hidden
16644
17046
  */
16645
- allNodesHidden = false;
17047
+ get allNodesHidden() { return this._allNodesHidden(); }
17048
+ set allNodesHidden(value) { this._allNodesHidden.set(value); }
16646
17049
  tagListId = `k-${guid()}`;
16647
17050
  tagPrefix = "tag-" + guid();
16648
17051
  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;
17052
+ get tags() { return this._tags(); }
17053
+ set tags(value) { this._tags.set(value); }
17054
+ get focusedTagIndex() { return this._focusedTagIndex(); }
17055
+ set focusedTagIndex(value) { this._focusedTagIndex.set(value); }
17056
+ get disabledIndices() { return this._disabledIndices(); }
17057
+ set disabledIndices(value) { this._disabledIndices.set(value); }
16658
17058
  _treeview;
16659
- _dataItems;
16660
- _size;
16661
- _rounded;
16662
- _fillMode;
16663
17059
  _searchableNodes = [];
16664
17060
  _typedValue = '';
16665
17061
  printableCharacters = new Subject();
@@ -16669,6 +17065,50 @@ class MultiSelectTreeComponent {
16669
17065
  lastNodeOnFocus;
16670
17066
  // Used as check to avoid unnecessary 'registerLookupItems()' calls upon initialization
16671
17067
  isContentInit;
17068
+ // Signal backing fields — inputs
17069
+ _adaptiveMode = signal('none', ...(ngDevMode ? [{ debugName: "_adaptiveMode" }] : []));
17070
+ _adaptiveTitle = signal('', ...(ngDevMode ? [{ debugName: "_adaptiveTitle" }] : []));
17071
+ _adaptiveSubtitle = signal(undefined, ...(ngDevMode ? [{ debugName: "_adaptiveSubtitle" }] : []));
17072
+ _textField = signal(undefined, ...(ngDevMode ? [{ debugName: "_textField" }] : []));
17073
+ _valueField = signal(undefined, ...(ngDevMode ? [{ debugName: "_valueField" }] : []));
17074
+ _valueDepth = signal([], ...(ngDevMode ? [{ debugName: "_valueDepth" }] : []));
17075
+ _loading = signal(undefined, ...(ngDevMode ? [{ debugName: "_loading" }] : []));
17076
+ _placeholder = signal('', ...(ngDevMode ? [{ debugName: "_placeholder" }] : []));
17077
+ _disabled = signal(false, ...(ngDevMode ? [{ debugName: "_disabled" }] : []));
17078
+ _readonly = signal(false, ...(ngDevMode ? [{ debugName: "_readonly" }] : []));
17079
+ _valuePrimitive = signal(false, ...(ngDevMode ? [{ debugName: "_valuePrimitive" }] : []));
17080
+ _loadOnDemand = signal(false, ...(ngDevMode ? [{ debugName: "_loadOnDemand" }] : []));
17081
+ _focusableId = signal(`k-${guid()}`, ...(ngDevMode ? [{ debugName: "_focusableId" }] : []));
17082
+ _clearButton = signal(true, ...(ngDevMode ? [{ debugName: "_clearButton" }] : []));
17083
+ _filterable = signal(false, ...(ngDevMode ? [{ debugName: "_filterable" }] : []));
17084
+ _checkAll = signal(false, ...(ngDevMode ? [{ debugName: "_checkAll" }] : []));
17085
+ _hasChildren = signal(hasChildren, ...(ngDevMode ? [{ debugName: "_hasChildren" }] : []));
17086
+ _fetchChildren = signal(fetchChildren, ...(ngDevMode ? [{ debugName: "_fetchChildren" }] : []));
17087
+ _isNodeExpanded = signal(undefined, ...(ngDevMode ? [{ debugName: "_isNodeExpanded" }] : []));
17088
+ _isNodeVisible = signal(isNodeVisible, ...(ngDevMode ? [{ debugName: "_isNodeVisible" }] : []));
17089
+ _itemDisabled = signal(itemDisabled, ...(ngDevMode ? [{ debugName: "_itemDisabled" }] : []));
17090
+ _tagMapper = signal((tags) => tags || [], ...(ngDevMode ? [{ debugName: "_tagMapper" }] : []));
17091
+ // Signal backing fields — existing setter/getter pairs
17092
+ _data = signal(undefined, ...(ngDevMode ? [{ debugName: "_data" }] : []));
17093
+ _value = signal([], ...(ngDevMode ? [{ debugName: "_value" }] : []));
17094
+ _dataItems = signal(undefined, ...(ngDevMode ? [{ debugName: "_dataItems" }] : []));
17095
+ _listHeight = signal(200, ...(ngDevMode ? [{ debugName: "_listHeight" }] : []));
17096
+ _tabindex = signal(0, ...(ngDevMode ? [{ debugName: "_tabindex" }] : []));
17097
+ _size = signal(undefined, ...(ngDevMode ? [{ debugName: "_size" }] : []));
17098
+ _rounded = signal(undefined, ...(ngDevMode ? [{ debugName: "_rounded" }] : []));
17099
+ _fillMode = signal(undefined, ...(ngDevMode ? [{ debugName: "_fillMode" }] : []));
17100
+ _popupSettings = signal(DEFAULT_POPUP_SETTINGS, ...(ngDevMode ? [{ debugName: "_popupSettings" }] : []));
17101
+ _checkableSettings = signal(DEFAULT_CHECKABLE_SETTINGS, ...(ngDevMode ? [{ debugName: "_checkableSettings" }] : []));
17102
+ // Signal backing fields — internal state driving template
17103
+ _isFocused = signal(false, ...(ngDevMode ? [{ debugName: "_isFocused" }] : []));
17104
+ _filter = signal('', ...(ngDevMode ? [{ debugName: "_filter" }] : []));
17105
+ _checkedItems = signal([], ...(ngDevMode ? [{ debugName: "_checkedItems" }] : []));
17106
+ _isHeterogeneous = signal(undefined, ...(ngDevMode ? [{ debugName: "_isHeterogeneous" }] : []));
17107
+ _allNodesHidden = signal(false, ...(ngDevMode ? [{ debugName: "_allNodesHidden" }] : []));
17108
+ _tags = signal(undefined, ...(ngDevMode ? [{ debugName: "_tags" }] : []));
17109
+ _focusedTagIndex = signal(undefined, ...(ngDevMode ? [{ debugName: "_focusedTagIndex" }] : []));
17110
+ _disabledIndices = signal(undefined, ...(ngDevMode ? [{ debugName: "_disabledIndices" }] : []));
17111
+ _windowSize = signal('large', ...(ngDevMode ? [{ debugName: "_windowSize" }] : []));
16672
17112
  constructor(injector, wrapper, popupService, renderer, navigationService, _zone, localization, cdr, lookup, adaptiveService) {
16673
17113
  this.injector = injector;
16674
17114
  this.wrapper = wrapper;
@@ -16708,6 +17148,14 @@ class MultiSelectTreeComponent {
16708
17148
  this.windowSize = this.adaptiveService.size;
16709
17149
  this.subs.add(this.renderer.listen(this.wrapper.nativeElement, 'click', this.handleClick.bind(this)));
16710
17150
  this.subs.add(this.renderer.listen(this.wrapper.nativeElement, 'keydown', this.handleKeydown.bind(this)));
17151
+ const control = this.formControl;
17152
+ if (control && control.events) {
17153
+ this.subs.add(control.events.subscribe(e => {
17154
+ if (e instanceof TouchedChangeEvent) {
17155
+ this.cdr.markForCheck();
17156
+ }
17157
+ }));
17158
+ }
16711
17159
  }
16712
17160
  /**
16713
17161
  * @hidden
@@ -17031,7 +17479,6 @@ class MultiSelectTreeComponent {
17031
17479
  */
17032
17480
  setDisabledState(isDisabled) {
17033
17481
  this.disabled = isDisabled;
17034
- this.cdr.markForCheck();
17035
17482
  }
17036
17483
  /**
17037
17484
  * @hidden
@@ -17383,7 +17830,6 @@ class MultiSelectTreeComponent {
17383
17830
  this.setTags();
17384
17831
  this.checkedItems = this.dataItems.slice();
17385
17832
  }
17386
- this.cdr.markForCheck();
17387
17833
  }
17388
17834
  setTags() {
17389
17835
  const source = this.dataItems.map(item => item.dataItem);
@@ -17495,7 +17941,7 @@ class MultiSelectTreeComponent {
17495
17941
  this.opened.emit();
17496
17942
  }
17497
17943
  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: [
17944
+ 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
17945
  LocalizationService,
17500
17946
  NavigationService,
17501
17947
  DataService,
@@ -17771,11 +18217,12 @@ class MultiSelectTreeComponent {
17771
18217
  @if (isOpen || isAdaptiveModeEnabled) {
17772
18218
  <kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
17773
18219
  }
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"] }] });
18220
+ `, 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
18221
  }
17776
18222
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: MultiSelectTreeComponent, decorators: [{
17777
18223
  type: Component,
17778
18224
  args: [{
18225
+ selector: 'kendo-multiselecttree',
17779
18226
  exportAs: 'kendoMultiSelectTree',
17780
18227
  providers: [
17781
18228
  LocalizationService,
@@ -17807,7 +18254,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
17807
18254
  },
17808
18255
  provideComponentName('multiselecttree')
17809
18256
  ],
17810
- selector: 'kendo-multiselecttree',
17811
18257
  template: `
17812
18258
  <ng-container kendoMultiSelectTreeLocalizedMessages
17813
18259
  i18n-noDataText="kendo.multiselecttree.noDataText|The text displayed in the popup when there are no items"
@@ -18056,6 +18502,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
18056
18502
  <kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
18057
18503
  }
18058
18504
  `,
18505
+ changeDetection: ChangeDetectionStrategy.OnPush,
18059
18506
  standalone: true,
18060
18507
  imports: [LocalizedMessagesDirective, TagListComponent, IconWrapperComponent, NgTemplateOutlet, AdaptiveRendererComponent, NgClass, FilterInputDirective, EventsOutsideAngularDirective, TemplateContextDirective, CheckAllDirective, TreeViewComponent, CheckDirective, ResizeSensorComponent, SeparatorComponent]
18061
18508
  }]
@@ -18083,6 +18530,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
18083
18530
  }], isReadonly: [{
18084
18531
  type: HostBinding,
18085
18532
  args: ['attr.readonly']
18533
+ }], isReadonlyClass: [{
18534
+ type: HostBinding,
18535
+ args: ['class.k-readonly']
18086
18536
  }], ariaActiveDescendant: [{
18087
18537
  type: HostBinding,
18088
18538
  args: ['attr.aria-activedescendant']
@@ -18162,9 +18612,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
18162
18612
  type: Input
18163
18613
  }], readonly: [{
18164
18614
  type: Input
18165
- }, {
18166
- type: HostBinding,
18167
- args: ['class.k-readonly']
18168
18615
  }], valuePrimitive: [{
18169
18616
  type: Input
18170
18617
  }], loadOnDemand: [{