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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/README.md +40 -99
  2. package/autocomplete/autocomplete.component.d.ts +1 -1
  3. package/autocomplete/autocomplete.module.d.ts +1 -1
  4. package/comboboxes/combobox-column/combobox-column.component.d.ts +1 -1
  5. package/comboboxes/combobox.component.d.ts +1 -1
  6. package/comboboxes/combobox.module.d.ts +1 -1
  7. package/common/action-sheet.component.d.ts +1 -1
  8. package/common/disabled-items/item-disabled.d.ts +1 -1
  9. package/common/filter-input.directive.d.ts +1 -1
  10. package/common/filtering/filter.directive.d.ts +1 -1
  11. package/common/list.component.d.ts +1 -1
  12. package/common/localization/messages.d.ts +1 -1
  13. package/common/models/direction.d.ts +1 -1
  14. package/common/models/fillmode.d.ts +1 -1
  15. package/common/models/list-type.d.ts +1 -1
  16. package/common/models/rounded.d.ts +1 -1
  17. package/common/models/size.d.ts +1 -1
  18. package/common/searchbar.component.d.ts +1 -1
  19. package/common/selection/selectable.directive.d.ts +1 -1
  20. package/common/shared-events.directive.d.ts +1 -1
  21. package/common/taglist.component.d.ts +2 -2
  22. package/common/util.d.ts +2 -2
  23. package/dropdownlist/dropdownlist.component.d.ts +1 -1
  24. package/dropdowns.module.d.ts +1 -1
  25. package/dropdowntrees/checked-state/base-check.directive.d.ts +1 -1
  26. package/dropdowntrees/checked-state/check-all.directive.d.ts +1 -1
  27. package/dropdowntrees/checked-state/check.directive.d.ts +1 -1
  28. package/dropdowntrees/data-binding/dropdowntree/flat-binding.directive.d.ts +1 -1
  29. package/dropdowntrees/data-binding/dropdowntree/hierarchy-binding.directive.d.ts +1 -1
  30. package/dropdowntrees/data-binding/multiselecttree/flat-binding.directive.d.ts +1 -1
  31. package/dropdowntrees/data-binding/multiselecttree/hierarchy-binding.directive.d.ts +1 -1
  32. package/dropdowntrees/dropdowntree.component.d.ts +1 -1
  33. package/dropdowntrees/expanded-state/expand.directive.d.ts +1 -1
  34. package/dropdowntrees/multiselecttree.component.d.ts +1 -1
  35. package/dropdowntrees/summary-tag/summary-tag.directive.d.ts +1 -1
  36. package/{esm2020 → esm2022}/autocomplete/autocomplete.component.mjs +235 -173
  37. package/{esm2020 → esm2022}/autocomplete/autocomplete.module.mjs +11 -11
  38. package/{esm2020 → esm2022}/comboboxes/combobox-column/column-cell-template.directive.mjs +4 -3
  39. package/{esm2020 → esm2022}/comboboxes/combobox-column/column-header-template.directive.mjs +4 -3
  40. package/esm2022/comboboxes/combobox-column/combobox-column.component.mjs +105 -0
  41. package/{esm2020 → esm2022}/comboboxes/combobox.component.mjs +326 -248
  42. package/{esm2020 → esm2022}/comboboxes/combobox.module.mjs +11 -11
  43. package/{esm2020 → esm2022}/comboboxes/multicolumncombobox.component.mjs +53 -48
  44. package/{esm2020 → esm2022}/common/action-sheet.component.mjs +26 -14
  45. package/{esm2020 → esm2022}/common/data.service.mjs +8 -7
  46. package/{esm2020 → esm2022}/common/disabled-items/disabled-items.service.mjs +6 -4
  47. package/{esm2020 → esm2022}/common/filter-input.directive.mjs +6 -3
  48. package/{esm2020 → esm2022}/common/filtering/filter.directive.mjs +20 -13
  49. package/{esm2020 → esm2022}/common/filtering/filterable-component.mjs +21 -0
  50. package/{esm2020 → esm2022}/common/list-item.directive.mjs +4 -3
  51. package/{esm2020 → esm2022}/common/list.component.mjs +72 -36
  52. package/{esm2020 → esm2022}/common/localization/custom-messages.component.mjs +9 -8
  53. package/{esm2020 → esm2022}/common/localization/localized-messages.directive.mjs +9 -8
  54. package/esm2022/common/localization/messages.mjs +65 -0
  55. package/{esm2020 → esm2022}/common/models/preventable-event.mjs +1 -3
  56. package/{esm2020 → esm2022}/common/models/remove-tag-event.mjs +4 -0
  57. package/{esm2020 → esm2022}/common/navigation/navigation.service.mjs +27 -23
  58. package/{esm2020 → esm2022}/common/searchbar.component.mjs +45 -28
  59. package/{esm2020 → esm2022}/common/selection/selectable.directive.mjs +9 -5
  60. package/{esm2020 → esm2022}/common/selection/selection.service.mjs +13 -10
  61. package/{esm2020 → esm2022}/common/shared-events.directive.mjs +13 -7
  62. package/{esm2020 → esm2022}/common/taglist.component.mjs +36 -27
  63. package/{esm2020 → esm2022}/common/templates/custom-item-template.directive.mjs +4 -3
  64. package/{esm2020 → esm2022}/common/templates/fixed-group-template.directive.mjs +4 -3
  65. package/{esm2020 → esm2022}/common/templates/footer-template.directive.mjs +4 -3
  66. package/{esm2020 → esm2022}/common/templates/group-tag-template.directive.mjs +4 -3
  67. package/{esm2020 → esm2022}/common/templates/group-template.directive.mjs +4 -3
  68. package/{esm2020 → esm2022}/common/templates/header-template.directive.mjs +4 -3
  69. package/{esm2020 → esm2022}/common/templates/item-template.directive.mjs +4 -3
  70. package/{esm2020 → esm2022}/common/templates/no-data-template.directive.mjs +4 -3
  71. package/{esm2020 → esm2022}/common/templates/tag-template.directive.mjs +4 -3
  72. package/{esm2020 → esm2022}/common/templates/value-template.directive.mjs +4 -3
  73. package/{esm2020 → esm2022}/dropdownlist/dropdownlist.component.mjs +259 -184
  74. package/{esm2020 → esm2022}/dropdownlist/dropdownlist.module.mjs +8 -8
  75. package/esm2022/dropdowns.module.mjs +87 -0
  76. package/{esm2020 → esm2022}/dropdowntrees/checked-state/base-check.directive.mjs +10 -3
  77. package/{esm2020 → esm2022}/dropdowntrees/checked-state/check-all.directive.mjs +38 -21
  78. package/{esm2020 → esm2022}/dropdowntrees/checked-state/check.directive.mjs +31 -15
  79. package/{esm2020 → esm2022}/dropdowntrees/data-binding/dropdowntree/flat-binding.directive.mjs +12 -7
  80. package/{esm2020 → esm2022}/dropdowntrees/data-binding/dropdowntree/hierarchy-binding.directive.mjs +8 -7
  81. package/{esm2020 → esm2022}/dropdowntrees/data-binding/multiselecttree/flat-binding.directive.mjs +12 -7
  82. package/{esm2020 → esm2022}/dropdowntrees/data-binding/multiselecttree/hierarchy-binding.directive.mjs +8 -7
  83. package/{esm2020 → esm2022}/dropdowntrees/dropdowntree.component.mjs +309 -232
  84. package/{esm2020 → esm2022}/dropdowntrees/dropdowntrees.module.mjs +12 -12
  85. package/{esm2020 → esm2022}/dropdowntrees/expanded-state/expand.directive.mjs +8 -7
  86. package/{esm2020 → esm2022}/dropdowntrees/lookup/lookup.service.mjs +4 -6
  87. package/{esm2020 → esm2022}/dropdowntrees/multiselecttree.component.mjs +324 -254
  88. package/{esm2020 → esm2022}/dropdowntrees/summary-tag/summary-tag.directive.mjs +8 -7
  89. package/{esm2020 → esm2022}/dropdowntrees/templates/node-template.directive.mjs +4 -3
  90. package/{esm2020 → esm2022}/index.mjs +0 -2
  91. package/{esm2020 → esm2022}/multiselect/multiselect.component.mjs +328 -254
  92. package/{esm2020 → esm2022}/multiselect/multiselect.module.mjs +11 -11
  93. package/{esm2020 → esm2022}/multiselect/summary-tag.directive.mjs +8 -7
  94. package/{esm2020 → esm2022}/package-metadata.mjs +2 -2
  95. package/{fesm2020 → fesm2022}/progress-kendo-angular-dropdowns.mjs +2528 -1927
  96. package/index.d.ts +0 -2
  97. package/multiselect/multiselect.component.d.ts +1 -1
  98. package/multiselect/multiselect.module.d.ts +1 -1
  99. package/multiselect/summary-tag.directive.d.ts +1 -1
  100. package/package.json +18 -24
  101. package/schematics/ngAdd/index.js +3 -3
  102. package/common/shared-directives.module.d.ts +0 -37
  103. package/common/shared.module.d.ts +0 -29
  104. package/esm2020/comboboxes/combobox-column/combobox-column.component.mjs +0 -60
  105. package/esm2020/common/localization/messages.mjs +0 -33
  106. package/esm2020/common/shared-directives.module.mjs +0 -84
  107. package/esm2020/common/shared.module.mjs +0 -68
  108. package/esm2020/dropdowns.module.mjs +0 -87
  109. package/fesm2015/progress-kendo-angular-dropdowns.mjs +0 -17609
  110. /package/{esm2020 → esm2022}/comboboxes/combobox-column/util.mjs +0 -0
  111. /package/{esm2020 → esm2022}/common/constants/error-messages.mjs +0 -0
  112. /package/{esm2020 → esm2022}/common/disabled-items/item-disabled.mjs +0 -0
  113. /package/{esm2020 → esm2022}/common/filtering/filter-settings.mjs +0 -0
  114. /package/{esm2020 → esm2022}/common/models/checkboxes-settings.mjs +0 -0
  115. /package/{esm2020 → esm2022}/common/models/direction.mjs +0 -0
  116. /package/{esm2020 → esm2022}/common/models/fillmode.mjs +0 -0
  117. /package/{esm2020 → esm2022}/common/models/list-type.mjs +0 -0
  118. /package/{esm2020 → esm2022}/common/models/page-change-event.mjs +0 -0
  119. /package/{esm2020 → esm2022}/common/models/popup-settings.mjs +0 -0
  120. /package/{esm2020 → esm2022}/common/models/rounded.mjs +0 -0
  121. /package/{esm2020 → esm2022}/common/models/size.mjs +0 -0
  122. /package/{esm2020 → esm2022}/common/models/virtualization-settings.mjs +0 -0
  123. /package/{esm2020 → esm2022}/common/navigation/navigation-action.mjs +0 -0
  124. /package/{esm2020 → esm2022}/common/util.mjs +0 -0
  125. /package/{esm2020 → esm2022}/directives.mjs +0 -0
  126. /package/{esm2020 → esm2022}/dropdowntrees/checked-state/checkable-settings.mjs +0 -0
  127. /package/{esm2020 → esm2022}/dropdowntrees/checked-state/checked-item.mjs +0 -0
  128. /package/{esm2020 → esm2022}/dropdowntrees/lookup/lookup.mjs +0 -0
  129. /package/{esm2020 → esm2022}/progress-kendo-angular-dropdowns.mjs +0 -0
@@ -46,205 +46,46 @@ const stopPropagation = (event) => event.stopImmediatePropagation();
46
46
  * Represents the [Kendo UI DropDownTree component for Angular]({% slug overview_ddt %}).
47
47
  */
48
48
  export class DropDownTreeComponent {
49
- constructor(injector, wrapper, popupService, navigationService, renderer, _zone, cdr, localization) {
50
- this.injector = injector;
51
- this.wrapper = wrapper;
52
- this.popupService = popupService;
53
- this.navigationService = navigationService;
54
- this.renderer = renderer;
55
- this._zone = _zone;
56
- this.cdr = cdr;
57
- this.localization = localization;
58
- /**
59
- * @hidden
60
- */
61
- this.touchEnabled = touchEnabled;
62
- /**
63
- * @hidden
64
- */
65
- this.animationDuration = animationDuration;
66
- /**
67
- * @hidden
68
- */
69
- this.searchIcon = searchIcon;
70
- /**
71
- * @hidden
72
- */
73
- this.caretAltDownIcon = caretAltDownIcon;
74
- /**
75
- * @hidden
76
- */
77
- this.xIcon = xIcon;
78
- this.hostClasses = true;
79
- this.role = 'combobox';
80
- this.ariaHasPopup = 'tree';
81
- /**
82
- * Fires each time the popup is about to open
83
- * ([see example]({% slug openstate_ddt %})).
84
- * This event is preventable. If you cancel it, the popup will remain closed.
85
- */
86
- this.open = new EventEmitter();
87
- /**
88
- * Fires after the popup has been opened.
89
- */
90
- this.opened = new EventEmitter();
91
- /**
92
- * Fires each time the popup is about to close
93
- * ([see example]({% slug openstate_ddt %})).
94
- * This event is preventable. If you cancel it, the popup will remain open.
95
- */
96
- this.close = new EventEmitter();
97
- /**
98
- * Fires after the popup has been closed.
99
- */
100
- this.closed = new EventEmitter();
101
- /**
102
- * Fires when the user expands a node in the popup TreeView.
103
- */
104
- this.nodeExpand = new EventEmitter();
105
- /**
106
- * Fires when the user collapses a node in the popup TreeView.
107
- */
108
- this.nodeCollapse = new EventEmitter();
109
- /**
110
- * Fires each time the user focuses the DropDownTree.
111
- */
112
- this.onFocus = new EventEmitter();
113
- /**
114
- * Fires each time the DropDownTree gets blurred.
115
- */
116
- this.onBlur = new EventEmitter();
117
- /**
118
- * Fires each time the value is changed
119
- * ([see example](slug:events_ddt)).
120
- */
121
- this.valueChange = new EventEmitter();
122
- /**
123
- * Fires when the value of the built-in filter input element changes.
124
- */
125
- this.filterChange = new EventEmitter();
126
- /**
127
- * If set to `true`, renders a button on hovering over the component.
128
- * Clicking this button resets the value of the component to `undefined` and triggers the `change` event.
129
- */
130
- this.clearButton = true;
131
- /**
132
- * A function which determines if a specific node has child nodes.
133
- */
134
- this.hasChildren = hasChildren;
135
- /**
136
- * A function which provides the child nodes for a given parent node.
137
- */
138
- this.fetchChildren = fetchChildren;
139
- /**
140
- * The hint which is displayed when the component is empty.
141
- */
142
- this.placeholder = "";
143
- this._listHeight = 200;
144
- /**
145
- * Sets the disabled state of the component. To learn how to disable the component in reactive forms, refer to the article on [Forms Support](slug:formssupport_ddt#toc-managing-the-dropdowntree-disabled-state-in-reactive-forms).
146
- */
147
- this.disabled = false;
148
- /**
149
- * Sets the read-only state of the component.
150
- *
151
- * @default false
152
- */
153
- this.readonly = false;
154
- /**
155
- * Specifies the type of the selected value
156
- * ([more information and example]({% slug valuebinding_ddt %}#toc-primitive-values)).
157
- * If set to `true`, the selected value has to be of a primitive value.
158
- */
159
- this.valuePrimitive = false;
160
- /**
161
- * A function that is executed for each data item and determines if a specific item is disabled.
162
- */
163
- this.itemDisabled = itemDisabled;
164
- /**
165
- * A callback which determines whether a tree node should be rendered as hidden. The utility .k-hidden class is used to hide the nodes.
166
- * Useful for custom filtering implementations.
167
- */
168
- this.isNodeVisible = isNodeVisible;
169
- /**
170
- * Indicates whether the child nodes will be fetched on node expand or will be initially prefetched.
171
- * @default true
172
- */
173
- this.loadOnDemand = true;
174
- /**
175
- * Renders the built-in input element for filtering the DropDownTree.
176
- * If set to `true`, the component emits the `filterChange` event, which can be used to [filter the DropDownTree manually]({% slug filtering_ddt %}#toc-manual-filtering).
177
- * A built-in filtering implementation is available to use with the [`kendoDropDownTreeHierarchyBinding`]({% slug api_dropdowns_dropdowntreehierarchybindingdirective %}) and [`kendoDropDownTreeFlatBinding`]({% slug api_dropdowns_dropdowntreeflatbindingdirective %}) directives.
178
- */
179
- this.filterable = false;
180
- /**
181
- * @hidden
182
- */
183
- this.filter = '';
184
- /**
185
- * @hidden
186
- *
187
- * Used by the kendo-label and kendo-floatinglabel to access and associate the focusable element with the provided label via aria-labelledby.
188
- */
189
- this.focusableId = `k-${guid()}`;
190
- /**
191
- * @hidden
192
- */
193
- this.selectedKeys = [];
194
- /**
195
- * Enables or disables the adaptive mode. By default the adaptive rendering is disabled.
196
- */
197
- this.adaptiveMode = 'none';
198
- /**
199
- * Sets the title of the ActionSheet that is rendered instead of the Popup when using small screen devices.
200
- * By default the ActionSheet title uses the text provided for the label of the AutoComplete.
201
- */
202
- this.title = '';
203
- /**
204
- * Sets the subtitle of the ActionSheet that is rendered instead of the Popup when using small screen devices.
205
- * By default the ActionSheet subtitle uses the text provided for the `placeholder` of the AutoComplete.
206
- */
207
- this.subtitle = '';
208
- /**
209
- * @hidden
210
- */
211
- this.windowSize = 'large';
212
- /**
213
- * @hidden
214
- */
215
- this.isActionSheetExpanded = false;
216
- /**
217
- * @hidden
218
- */
219
- this.filterStateChange = new EventEmitter();
220
- /**
221
- * @hidden
222
- */
223
- this.allNodesHidden = false;
224
- /**
225
- * @hidden
226
- *
227
- * Used to associate the value label with the wrapper via aria-describedby.
228
- */
229
- this.valueLabelId = `k-${guid()}`;
230
- this.treeViewId = `k-${guid()}`;
231
- this._popupSettings = DEFAULT_POPUP_SETTINGS;
232
- this._tabindex = 0;
233
- this._isFocused = false;
234
- this._size = 'medium';
235
- this._rounded = 'medium';
236
- this._fillMode = 'solid';
237
- this._searchableNodes = [];
238
- this._typedValue = '';
239
- this.printableCharacters = new Subject();
240
- this.subs = new Subscription();
241
- this.onTouchedCallback = noop;
242
- this.onChangeCallback = noop;
243
- this.direction = localization.rtl ? 'rtl' : 'ltr';
244
- this.subscribeEvents();
245
- this.subscribeTouchEvents();
246
- this.subscribeFocusEvents();
247
- }
49
+ injector;
50
+ wrapper;
51
+ popupService;
52
+ navigationService;
53
+ renderer;
54
+ _zone;
55
+ cdr;
56
+ localization;
57
+ /**
58
+ * @hidden
59
+ */
60
+ icon;
61
+ /**
62
+ * @hidden
63
+ */
64
+ svgIcon;
65
+ /**
66
+ * @hidden
67
+ */
68
+ touchEnabled = touchEnabled;
69
+ /**
70
+ * @hidden
71
+ */
72
+ animationDuration = animationDuration;
73
+ /**
74
+ * @hidden
75
+ */
76
+ searchIcon = searchIcon;
77
+ /**
78
+ * @hidden
79
+ */
80
+ caretAltDownIcon = caretAltDownIcon;
81
+ /**
82
+ * @hidden
83
+ */
84
+ xIcon = xIcon;
85
+ /**
86
+ * @hidden
87
+ */
88
+ responsiveRendererComponent;
248
89
  /**
249
90
  * @hidden
250
91
  */
@@ -257,6 +98,7 @@ export class DropDownTreeComponent {
257
98
  get actionSheetSearchBar() {
258
99
  return this.responsiveRendererComponent?.actionSheetSearchBar;
259
100
  }
101
+ hostClasses = true;
260
102
  get isReadonly() {
261
103
  return this.readonly ? '' : null;
262
104
  }
@@ -278,15 +120,25 @@ export class DropDownTreeComponent {
278
120
  get id() {
279
121
  return this.focusableId;
280
122
  }
123
+ direction;
281
124
  get hostTabIndex() {
282
125
  return this.tabindex;
283
126
  }
127
+ role = 'combobox';
128
+ ariaHasPopup = 'tree';
284
129
  get isAriaExpanded() {
285
130
  return this.isOpen;
286
131
  }
287
132
  get hostAriaAutocomplete() {
288
133
  return this.filterable ? 'list' : null;
289
134
  }
135
+ noDataTemplate;
136
+ headerTemplate;
137
+ footerTemplate;
138
+ nodeTemplate;
139
+ valueTemplate;
140
+ popupTemplate;
141
+ container;
290
142
  set treeview(treeview) {
291
143
  if (treeview) {
292
144
  if (this.isFocused && !this.filterable || this.touchEnabled) {
@@ -301,6 +153,61 @@ export class DropDownTreeComponent {
301
153
  get treeview() {
302
154
  return this._treeview;
303
155
  }
156
+ filterInput;
157
+ /**
158
+ * Fires each time the popup is about to open
159
+ * ([see example]({% slug openstate_ddt %})).
160
+ * This event is preventable. If you cancel it, the popup will remain closed.
161
+ */
162
+ open = new EventEmitter();
163
+ /**
164
+ * Fires after the popup has been opened.
165
+ */
166
+ opened = new EventEmitter();
167
+ /**
168
+ * Fires each time the popup is about to close
169
+ * ([see example]({% slug openstate_ddt %})).
170
+ * This event is preventable. If you cancel it, the popup will remain open.
171
+ */
172
+ close = new EventEmitter();
173
+ /**
174
+ * Fires after the popup has been closed.
175
+ */
176
+ closed = new EventEmitter();
177
+ /**
178
+ * Fires when the user expands a node in the popup TreeView.
179
+ */
180
+ nodeExpand = new EventEmitter();
181
+ /**
182
+ * Fires when the user collapses a node in the popup TreeView.
183
+ */
184
+ nodeCollapse = new EventEmitter();
185
+ /**
186
+ * Fires each time the user focuses the DropDownTree.
187
+ */
188
+ onFocus = new EventEmitter();
189
+ /**
190
+ * Fires each time the DropDownTree gets blurred.
191
+ */
192
+ onBlur = new EventEmitter();
193
+ /**
194
+ * Fires each time the value is changed
195
+ * ([see example](slug:events_ddt)).
196
+ */
197
+ valueChange = new EventEmitter();
198
+ /**
199
+ * Fires when the value of the built-in filter input element changes.
200
+ */
201
+ filterChange = new EventEmitter();
202
+ /**
203
+ * Sets and gets the loading state of the DropDownTree.
204
+ */
205
+ loading;
206
+ /**
207
+ * If set to `true`, renders a button on hovering over the component.
208
+ * Clicking this button resets the value of the component to `undefined` and triggers the `change` event.
209
+ */
210
+ clearButton = true;
304
211
  /**
305
212
  * Sets the data of the DropDownTree.
306
213
  *
@@ -326,6 +233,41 @@ export class DropDownTreeComponent {
326
233
  get value() {
327
234
  return this._value;
328
235
  }
236
+ /**
237
+ * The fields of the data item that provide the text content of the nodes inside the
238
+ * DropDownTree ([see example]({% slug databinding_ddt %})). If the `textField`
239
+ * input is set to an array, each hierarchical level uses the field that corresponds
240
+ * to the same index in the array, or the last item in the array.
241
+ *
242
+ * > The `textField` property can be set to point to a nested property value - e.g. `category.name`.
243
+ */
244
+ textField;
245
+ /**
246
+ * The fields of the data item that provide the value of the nodes inside the
247
+ * DropDownTree ([see example]({% slug databinding_ddt %})). If the `valueField`
248
+ * input is set to an array, each hierarchical level uses the field that corresponds
249
+ * to the same index in the array, or the last item in the array.
250
+ *
251
+ * > The `valueField` property can be set to point to a nested property value - e.g. `category.id`.
252
+ */
253
+ valueField;
254
+ /**
255
+ * Sets the level in the data set where the value can be found when `valueField` is an Array.
256
+ * The field serves to correctly allocate a data item used when the DropDownTree is initialized with a value.
257
+ */
258
+ valueDepth;
259
+ /**
260
+ * A function which determines if a specific node has child nodes.
261
+ */
262
+ hasChildren = hasChildren;
263
+ /**
264
+ * A function which provides the child nodes for a given parent node.
265
+ */
266
+ fetchChildren = fetchChildren;
267
+ /**
268
+ * The hint which is displayed when the component is empty.
269
+ */
270
+ placeholder = "";
329
271
  /**
330
272
  * Configures the popup of the DropDownTree.
331
273
  *
@@ -370,6 +312,23 @@ export class DropDownTreeComponent {
370
312
  }
371
313
  return this._listHeight;
372
314
  }
315
+ _listHeight = 200;
316
+ /**
317
+ * Sets the disabled state of the component. To learn how to disable the component in reactive forms, refer to the article on [Forms Support](slug:formssupport_ddt#toc-managing-the-dropdowntree-disabled-state-in-reactive-forms).
318
+ */
319
+ disabled = false;
320
+ /**
321
+ * Sets the read-only state of the component.
322
+ *
323
+ * @default false
324
+ */
325
+ readonly = false;
326
+ /**
327
+ * Specifies the type of the selected value
328
+ * ([more information and example]({% slug valuebinding_ddt %}#toc-primitive-values)).
329
+ * If set to `true`, the selected value has to be of a primitive value.
330
+ */
331
+ valuePrimitive = false;
373
332
  /**
374
333
  * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.
375
334
  */
@@ -445,6 +404,40 @@ export class DropDownTreeComponent {
445
404
  get fillMode() {
446
405
  return this._fillMode;
447
406
  }
407
+ /**
408
+ * A function that is executed for each data item and determines if a specific item is disabled.
409
+ */
410
+ itemDisabled = itemDisabled;
411
+ /**
412
+ * A function that is executed for each data item and determines if a specific node is expanded.
413
+ */
414
+ isNodeExpanded;
415
+ /**
416
+ * A callback which determines whether a tree node should be rendered as hidden. The utility .k-hidden class is used to hide the nodes.
417
+ * Useful for custom filtering implementations.
418
+ */
419
+ isNodeVisible = isNodeVisible;
420
+ /**
421
+ * Indicates whether the child nodes will be fetched on node expand or will be initially prefetched.
422
+ * @default true
423
+ */
424
+ loadOnDemand = true;
425
+ /**
426
+ * Renders the built-in input element for filtering the DropDownTree.
427
+ * If set to `true`, the component emits the `filterChange` event, which can be used to [filter the DropDownTree manually]({% slug filtering_ddt %}#toc-manual-filtering).
428
+ * A built-in filtering implementation is available to use with the [`kendoDropDownTreeHierarchyBinding`]({% slug api_dropdowns_dropdowntreehierarchybindingdirective %}) and [`kendoDropDownTreeFlatBinding`]({% slug api_dropdowns_dropdowntreeflatbindingdirective %}) directives.
429
+ */
430
+ filterable = false;
431
+ /**
432
+ * @hidden
433
+ */
434
+ filter = '';
435
+ /**
436
+ * @hidden
437
+ *
438
+ * Used by the kendo-label and kendo-floatinglabel to access and associate the focusable element with the provided label via aria-labelledby.
439
+ */
440
+ focusableId = `k-${guid()}`;
448
441
  set isFocused(isFocused) {
449
442
  this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-focus');
450
443
  this._isFocused = isFocused;
@@ -477,6 +470,19 @@ export class DropDownTreeComponent {
477
470
  get isFilterActive() {
478
471
  return this.filterInput && document.activeElement === this.filterInput.nativeElement;
479
472
  }
473
+ popupRef;
474
+ /**
475
+ * @hidden
476
+ */
477
+ selectedKeys = [];
478
+ /**
479
+ * @hidden
480
+ */
481
+ selectBy;
482
+ /**
483
+ * @hidden
484
+ */
485
+ text;
480
486
  /**
481
487
  * @hidden
482
488
  */
@@ -485,12 +491,34 @@ export class DropDownTreeComponent {
485
491
  this.filterChange.emit(text);
486
492
  }
487
493
  }
494
+ /**
495
+ * Enables or disables the adaptive mode. By default the adaptive rendering is disabled.
496
+ */
497
+ adaptiveMode = 'none';
498
+ /**
499
+ * Sets the title of the ActionSheet that is rendered instead of the Popup when using small screen devices.
500
+ * By default the ActionSheet title uses the text provided for the label of the AutoComplete.
501
+ */
502
+ title = '';
503
+ /**
504
+ * Sets the subtitle of the ActionSheet that is rendered instead of the Popup when using small screen devices.
505
+ * By default the ActionSheet subtitle uses the text provided for the `placeholder` of the AutoComplete.
506
+ */
507
+ subtitle = '';
488
508
  /**
489
509
  * @hidden
490
510
  */
491
511
  get isAdaptiveModeEnabled() {
492
512
  return this.adaptiveMode === 'auto';
493
513
  }
514
+ /**
515
+ * @hidden
516
+ */
517
+ windowSize = 'large';
518
+ /**
519
+ * @hidden
520
+ */
521
+ isActionSheetExpanded = false;
494
522
  /**
495
523
  * @hidden
496
524
  */
@@ -563,6 +591,20 @@ export class DropDownTreeComponent {
563
591
  get isVisible() {
564
592
  return this.isNodeVisible;
565
593
  }
594
+ /**
595
+ * @hidden
596
+ */
597
+ filterStateChange = new EventEmitter();
598
+ /**
599
+ * @hidden
600
+ */
601
+ allNodesHidden = false;
602
+ /**
603
+ * @hidden
604
+ *
605
+ * Used to associate the value label with the wrapper via aria-describedby.
606
+ */
607
+ valueLabelId = `k-${guid()}`;
566
608
  /**
567
609
  * @hidden
568
610
  */
@@ -570,6 +612,39 @@ export class DropDownTreeComponent {
570
612
  const ngControl = this.injector.get(NgControl, null);
571
613
  return ngControl?.control || null;
572
614
  }
615
+ treeViewId = `k-${guid()}`;
616
+ _nodes;
617
+ _value;
618
+ _popupSettings = DEFAULT_POPUP_SETTINGS;
619
+ _tabindex = 0;
620
+ _isFocused = false;
621
+ _dataItem;
622
+ _treeview;
623
+ _size = 'medium';
624
+ _rounded = 'medium';
625
+ _fillMode = 'solid';
626
+ _searchableNodes = [];
627
+ _typedValue = '';
628
+ printableCharacters = new Subject();
629
+ subs = new Subscription();
630
+ touchstartDisposeHandler;
631
+ // Keep an instance of the last focused node for when the popup close is prevented
632
+ // in order to be able to properly restore the focus
633
+ lastNodeOnFocus;
634
+ constructor(injector, wrapper, popupService, navigationService, renderer, _zone, cdr, localization) {
635
+ this.injector = injector;
636
+ this.wrapper = wrapper;
637
+ this.popupService = popupService;
638
+ this.navigationService = navigationService;
639
+ this.renderer = renderer;
640
+ this._zone = _zone;
641
+ this.cdr = cdr;
642
+ this.localization = localization;
643
+ this.direction = localization.rtl ? 'rtl' : 'ltr';
644
+ this.subscribeEvents();
645
+ this.subscribeTouchEvents();
646
+ this.subscribeFocusEvents();
647
+ }
573
648
  ngOnInit() {
574
649
  this.subs.add(this.printableCharacters.pipe(tap((char) => {
575
650
  this._typedValue += char;
@@ -908,6 +983,8 @@ export class DropDownTreeComponent {
908
983
  get filterInputClasses() {
909
984
  return `${this.size ? getSizeClass('input', this.size) : ''} ${this.fillMode ? 'k-input-' + this.fillMode : ''} ${this.rounded ? getRoundedClass(this.rounded) : ''}`;
910
985
  }
986
+ onTouchedCallback = noop;
987
+ onChangeCallback = noop;
911
988
  verifySettings() {
912
989
  if (!isDevMode()) {
913
990
  return;
@@ -1249,36 +1326,35 @@ export class DropDownTreeComponent {
1249
1326
  this.removeTreeViewFromTabOrder();
1250
1327
  this.filterable && this.actionSheetSearchBar.focus();
1251
1328
  }
1252
- }
1253
- DropDownTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DropDownTreeComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }, { token: i1.PopupService }, { token: i2.NavigationService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i3.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
1254
- DropDownTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", 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", title: "title", subtitle: "subtitle" }, 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: [
1255
- DataService,
1256
- SelectionService,
1257
- NavigationService,
1258
- DisabledItemsService,
1259
- LocalizationService,
1260
- {
1261
- provide: L10N_PREFIX,
1262
- useValue: 'kendo.dropdowntree'
1263
- },
1264
- {
1265
- multi: true,
1266
- provide: NG_VALUE_ACCESSOR,
1267
- useExisting: forwardRef(() => DropDownTreeComponent)
1268
- },
1269
- {
1270
- provide: KendoInput,
1271
- useExisting: forwardRef(() => DropDownTreeComponent)
1272
- },
1273
- {
1274
- provide: DataBoundComponent,
1275
- useExisting: forwardRef(() => DropDownTreeComponent)
1276
- },
1277
- {
1278
- provide: ExpandableComponent,
1279
- useExisting: forwardRef(() => DropDownTreeComponent)
1280
- }
1281
- ], queries: [{ propertyName: "noDataTemplate", first: true, predicate: NoDataTemplateDirective, descendants: true }, { propertyName: "headerTemplate", first: true, predicate: HeaderTemplateDirective, descendants: true }, { propertyName: "footerTemplate", first: true, predicate: FooterTemplateDirective, descendants: true }, { propertyName: "nodeTemplate", first: true, predicate: NodeTemplateDirective, descendants: true }, { propertyName: "valueTemplate", first: true, predicate: ValueTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "responsiveRendererComponent", first: true, predicate: ResponsiveRendererComponent, descendants: true }, { propertyName: "popupTemplate", first: true, predicate: ["popupTemplate"], descendants: true, static: true }, { propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "treeview", first: true, predicate: ["treeview"], descendants: true }, { propertyName: "filterInput", first: true, predicate: ["filterInput"], descendants: true }], exportAs: ["kendoDropDownTree"], usesOnChanges: true, ngImport: i0, template: `
1329
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropDownTreeComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }, { token: i1.PopupService }, { token: i2.NavigationService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i3.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
1330
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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", title: "title", subtitle: "subtitle" }, 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: [
1331
+ DataService,
1332
+ SelectionService,
1333
+ NavigationService,
1334
+ DisabledItemsService,
1335
+ LocalizationService,
1336
+ {
1337
+ provide: L10N_PREFIX,
1338
+ useValue: 'kendo.dropdowntree'
1339
+ },
1340
+ {
1341
+ multi: true,
1342
+ provide: NG_VALUE_ACCESSOR,
1343
+ useExisting: forwardRef(() => DropDownTreeComponent)
1344
+ },
1345
+ {
1346
+ provide: KendoInput,
1347
+ useExisting: forwardRef(() => DropDownTreeComponent)
1348
+ },
1349
+ {
1350
+ provide: DataBoundComponent,
1351
+ useExisting: forwardRef(() => DropDownTreeComponent)
1352
+ },
1353
+ {
1354
+ provide: ExpandableComponent,
1355
+ useExisting: forwardRef(() => DropDownTreeComponent)
1356
+ }
1357
+ ], queries: [{ propertyName: "noDataTemplate", first: true, predicate: NoDataTemplateDirective, descendants: true }, { propertyName: "headerTemplate", first: true, predicate: HeaderTemplateDirective, descendants: true }, { propertyName: "footerTemplate", first: true, predicate: FooterTemplateDirective, descendants: true }, { propertyName: "nodeTemplate", first: true, predicate: NodeTemplateDirective, descendants: true }, { propertyName: "valueTemplate", first: true, predicate: ValueTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "responsiveRendererComponent", first: true, predicate: ResponsiveRendererComponent, descendants: true }, { propertyName: "popupTemplate", first: true, predicate: ["popupTemplate"], descendants: true, static: true }, { propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "treeview", first: true, predicate: ["treeview"], descendants: true }, { propertyName: "filterInput", first: true, predicate: ["filterInput"], descendants: true }], exportAs: ["kendoDropDownTree"], usesOnChanges: true, ngImport: i0, template: `
1282
1358
  <ng-container kendoDropDownTreeLocalizedMessages
1283
1359
  i18n-noDataText="kendo.dropdowntree.noDataText|The text displayed in the popup when there are no items"
1284
1360
  noDataText="NO DATA FOUND"
@@ -1301,7 +1377,7 @@ DropDownTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
1301
1377
  class="k-input-inner"
1302
1378
  (click)="$event.preventDefault()"
1303
1379
  >
1304
- <span class="k-input-value-text">
1380
+ <span class="k-input-value-text" *ngIf="valueTemplate || text || placeholder">
1305
1381
  <ng-template *ngIf="valueTemplate"
1306
1382
  [templateContext]="{
1307
1383
  templateRef: valueTemplate.templateRef,
@@ -1451,7 +1527,8 @@ DropDownTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
1451
1527
 
1452
1528
  <kendo-resize-sensor *ngIf="isOpen || isAdaptiveModeEnabled" (resize)="onResize()"></kendo-resize-sensor>
1453
1529
  `, 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: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { 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: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ResponsiveRendererComponent, selector: "responsive-renderer", inputs: ["title", "showActionButtons", "subtitle", "size", "showTextInput", "sharedPopupActionSheetTemplate", "isActionSheetExpanded", "text", "placeholder"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand", "onCollapse", "onApply", "onCancel"] }, { kind: "directive", type: FilterInputDirective, selector: "[filterInput]", inputs: ["filterInput"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: TreeViewComponent, selector: "kendo-treeview", inputs: ["filterInputPlaceholder", "expandDisabledNodes", "animate", "nodeTemplate", "loadMoreButtonTemplate", "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: SelectDirective, selector: "[kendoTreeViewSelectable]", inputs: ["isSelected", "selectBy", "kendoTreeViewSelectable", "selectedKeys"], outputs: ["selectedKeysChange"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1454
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DropDownTreeComponent, decorators: [{
1530
+ }
1531
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropDownTreeComponent, decorators: [{
1455
1532
  type: Component,
1456
1533
  args: [{
1457
1534
  exportAs: 'kendoDropDownTree',
@@ -1507,7 +1584,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
1507
1584
  class="k-input-inner"
1508
1585
  (click)="$event.preventDefault()"
1509
1586
  >
1510
- <span class="k-input-value-text">
1587
+ <span class="k-input-value-text" *ngIf="valueTemplate || text || placeholder">
1511
1588
  <ng-template *ngIf="valueTemplate"
1512
1589
  [templateContext]="{
1513
1590
  templateRef: valueTemplate.templateRef,