@progress/kendo-angular-treelist 21.4.1-develop.1 → 22.0.0-develop.1

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 (272) hide show
  1. package/binding-directives/base-binding.directive.d.ts +1 -1
  2. package/column-menu/column-menu-item-base.d.ts +1 -1
  3. package/columns/column-base.d.ts +1 -1
  4. package/editing-directives/editing-directive-base.d.ts +1 -1
  5. package/editing-directives/row-editing-directive-base.d.ts +1 -1
  6. package/fesm2022/progress-kendo-angular-treelist.mjs +519 -519
  7. package/filtering/base-filter-cell.component.d.ts +1 -1
  8. package/filtering/boolean-filter.component.d.ts +1 -1
  9. package/filtering/date-filter.component.d.ts +1 -1
  10. package/filtering/filter-host.directive.d.ts +1 -1
  11. package/filtering/filter-input-wrapper.component.d.ts +1 -1
  12. package/filtering/numeric-filter.component.d.ts +1 -1
  13. package/filtering/operators/filter-operator.base.d.ts +1 -1
  14. package/filtering/string-filter.component.d.ts +1 -1
  15. package/localization/messages.d.ts +1 -1
  16. package/package.json +23 -31
  17. package/schematics/ngAdd/index.js +3 -3
  18. package/esm2022/binding-directives/base-binding.directive.mjs +0 -180
  19. package/esm2022/binding-directives/data-bound-tree-component.mjs +0 -18
  20. package/esm2022/binding-directives/flat-binding.directive.mjs +0 -130
  21. package/esm2022/binding-directives/hierarchy-binding.directive.mjs +0 -109
  22. package/esm2022/column-menu/column-chooser-item-checked.directive.mjs +0 -45
  23. package/esm2022/column-menu/column-chooser.component.mjs +0 -221
  24. package/esm2022/column-menu/column-list-kb-nav.service.mjs +0 -40
  25. package/esm2022/column-menu/column-list.component.mjs +0 -380
  26. package/esm2022/column-menu/column-locked-change-event.mjs +0 -21
  27. package/esm2022/column-menu/column-menu-autosize-all.component.mjs +0 -78
  28. package/esm2022/column-menu/column-menu-autosize.component.mjs +0 -86
  29. package/esm2022/column-menu/column-menu-chooser.component.mjs +0 -164
  30. package/esm2022/column-menu/column-menu-container.component.mjs +0 -58
  31. package/esm2022/column-menu/column-menu-expandable-item.interface.mjs +0 -5
  32. package/esm2022/column-menu/column-menu-filter.component.mjs +0 -141
  33. package/esm2022/column-menu/column-menu-item-base.mjs +0 -41
  34. package/esm2022/column-menu/column-menu-item-content-template.directive.mjs +0 -43
  35. package/esm2022/column-menu/column-menu-item.component.mjs +0 -329
  36. package/esm2022/column-menu/column-menu-item.directive.mjs +0 -147
  37. package/esm2022/column-menu/column-menu-lock.component.mjs +0 -112
  38. package/esm2022/column-menu/column-menu-settings.interface.mjs +0 -5
  39. package/esm2022/column-menu/column-menu-sort.component.mjs +0 -115
  40. package/esm2022/column-menu/column-menu-template.directive.mjs +0 -47
  41. package/esm2022/column-menu/column-menu.component.mjs +0 -470
  42. package/esm2022/column-menu/column-menu.service.mjs +0 -70
  43. package/esm2022/column-menu/column-visibility-change-event.mjs +0 -19
  44. package/esm2022/column-menu/utils.mjs +0 -44
  45. package/esm2022/column-resizing/column-handle.directive.mjs +0 -226
  46. package/esm2022/column-resizing/column-resize.interface.mjs +0 -5
  47. package/esm2022/column-resizing/column-resizing.service.mjs +0 -143
  48. package/esm2022/column-resizing/table.directive.mjs +0 -130
  49. package/esm2022/columns/checkbox-column.component.mjs +0 -88
  50. package/esm2022/columns/column-base.mjs +0 -319
  51. package/esm2022/columns/column-common.mjs +0 -73
  52. package/esm2022/columns/column-group.component.mjs +0 -115
  53. package/esm2022/columns/column-list.mjs +0 -94
  54. package/esm2022/columns/column.component.mjs +0 -165
  55. package/esm2022/columns/columns-container.mjs +0 -90
  56. package/esm2022/columns/command-column.component.mjs +0 -77
  57. package/esm2022/columns/rowreorder-column.component.mjs +0 -57
  58. package/esm2022/columns/sort-settings.mjs +0 -17
  59. package/esm2022/columns/span-column.component.mjs +0 -201
  60. package/esm2022/common/cell-click-event-args.interface.mjs +0 -5
  61. package/esm2022/common/column-info.service.mjs +0 -54
  62. package/esm2022/common/create-form-group.mjs +0 -5
  63. package/esm2022/common/default-track-by.mjs +0 -13
  64. package/esm2022/common/dom-events.service.mjs +0 -24
  65. package/esm2022/common/error-messages.mjs +0 -15
  66. package/esm2022/common/filter-descriptor-differ.mjs +0 -69
  67. package/esm2022/common/filter-operator.interface.mjs +0 -5
  68. package/esm2022/common/id.service.mjs +0 -34
  69. package/esm2022/common/option-changes.service.mjs +0 -24
  70. package/esm2022/common/pager-settings.mjs +0 -19
  71. package/esm2022/common/preventable-event.mjs +0 -28
  72. package/esm2022/common/provider.service.mjs +0 -34
  73. package/esm2022/common/remove-confirmation.mjs +0 -5
  74. package/esm2022/common/single-popup.service.mjs +0 -132
  75. package/esm2022/common/sort.service.mjs +0 -14
  76. package/esm2022/data/change-event-args.interface.mjs +0 -5
  77. package/esm2022/data/change-notification.service.mjs +0 -30
  78. package/esm2022/data/data-item.interface.mjs +0 -5
  79. package/esm2022/data/data.collection.mjs +0 -503
  80. package/esm2022/data/treelist-item.interface.mjs +0 -5
  81. package/esm2022/directives.mjs +0 -291
  82. package/esm2022/dragdrop/column-reorder-config.mjs +0 -5
  83. package/esm2022/dragdrop/column-reorder-event.mjs +0 -31
  84. package/esm2022/dragdrop/column-reorder.service.mjs +0 -20
  85. package/esm2022/dragdrop/common.mjs +0 -69
  86. package/esm2022/dragdrop/context-types.mjs +0 -5
  87. package/esm2022/dragdrop/drag-and-drop.service.mjs +0 -65
  88. package/esm2022/dragdrop/drag-hint.service.mjs +0 -137
  89. package/esm2022/dragdrop/draggable-column.directive.mjs +0 -141
  90. package/esm2022/dragdrop/drop-cue.service.mjs +0 -46
  91. package/esm2022/dragdrop/drop-target.directive.mjs +0 -71
  92. package/esm2022/editing/add-command-tool.directive.mjs +0 -60
  93. package/esm2022/editing/add-command.directive.mjs +0 -96
  94. package/esm2022/editing/add-event-args.interface.mjs +0 -5
  95. package/esm2022/editing/base-command.directive.mjs +0 -95
  96. package/esm2022/editing/cancel-command.directive.mjs +0 -97
  97. package/esm2022/editing/cancel-event-args.interface.mjs +0 -5
  98. package/esm2022/editing/cell-close-event.mjs +0 -34
  99. package/esm2022/editing/edit-command.directive.mjs +0 -96
  100. package/esm2022/editing/edit-event-args.interface.mjs +0 -5
  101. package/esm2022/editing/edit-template.directive.mjs +0 -45
  102. package/esm2022/editing/edit.service.mjs +0 -174
  103. package/esm2022/editing/remove-command.directive.mjs +0 -96
  104. package/esm2022/editing/remove-event-args.interface.mjs +0 -5
  105. package/esm2022/editing/save-command.directive.mjs +0 -96
  106. package/esm2022/editing/save-event-args.interface.mjs +0 -5
  107. package/esm2022/editing-directives/create-form-group-args.interface.mjs +0 -5
  108. package/esm2022/editing-directives/edit-service.interface.mjs +0 -5
  109. package/esm2022/editing-directives/editing-directive-base.mjs +0 -137
  110. package/esm2022/editing-directives/flat-edit.service.mjs +0 -52
  111. package/esm2022/editing-directives/hierarchy-edit.service.mjs +0 -48
  112. package/esm2022/editing-directives/in-cell-editing.directive.mjs +0 -89
  113. package/esm2022/editing-directives/local-edit.service.mjs +0 -28
  114. package/esm2022/editing-directives/reactive-editing.directive.mjs +0 -61
  115. package/esm2022/editing-directives/row-editing-directive-base.mjs +0 -39
  116. package/esm2022/editing-directives/template-editing.directive.mjs +0 -68
  117. package/esm2022/editing-directives/utils.mjs +0 -41
  118. package/esm2022/excel/excel-command-tool.directive.mjs +0 -64
  119. package/esm2022/excel/excel-command.directive.mjs +0 -97
  120. package/esm2022/excel/excel-export-data.interface.mjs +0 -5
  121. package/esm2022/excel/excel-export-event.mjs +0 -15
  122. package/esm2022/excel/excel.component.mjs +0 -277
  123. package/esm2022/excel/excel.module.mjs +0 -45
  124. package/esm2022/excel/excel.service.mjs +0 -34
  125. package/esm2022/expand-state/expand-event.mjs +0 -30
  126. package/esm2022/expand-state/expand-state.service.mjs +0 -38
  127. package/esm2022/expand-state/expandable-tree-component.mjs +0 -18
  128. package/esm2022/expand-state/expandable.directive.mjs +0 -119
  129. package/esm2022/filtering/base-filter-cell.component.mjs +0 -172
  130. package/esm2022/filtering/boolean-filter.component.mjs +0 -91
  131. package/esm2022/filtering/cell/autocomplete-filter-cell.component.mjs +0 -113
  132. package/esm2022/filtering/cell/boolean-filter-cell.component.mjs +0 -107
  133. package/esm2022/filtering/cell/date-filter-cell.component.mjs +0 -132
  134. package/esm2022/filtering/cell/filter-cell-component.factory.mjs +0 -19
  135. package/esm2022/filtering/cell/filter-cell-host.directive.mjs +0 -33
  136. package/esm2022/filtering/cell/filter-cell-operators.component.mjs +0 -235
  137. package/esm2022/filtering/cell/filter-cell-template.directive.mjs +0 -46
  138. package/esm2022/filtering/cell/filter-cell-wrapper.component.mjs +0 -74
  139. package/esm2022/filtering/cell/filter-cell.component.mjs +0 -91
  140. package/esm2022/filtering/cell/numeric-filter-cell.component.mjs +0 -143
  141. package/esm2022/filtering/cell/string-filter-cell.component.mjs +0 -115
  142. package/esm2022/filtering/date-filter.component.mjs +0 -176
  143. package/esm2022/filtering/filter-component.interface.mjs +0 -5
  144. package/esm2022/filtering/filter-host.directive.mjs +0 -56
  145. package/esm2022/filtering/filter-input-wrapper.component.mjs +0 -119
  146. package/esm2022/filtering/filter-input.directive.mjs +0 -114
  147. package/esm2022/filtering/filter-row.component.mjs +0 -79
  148. package/esm2022/filtering/filter.service.mjs +0 -42
  149. package/esm2022/filtering/filterable.mjs +0 -16
  150. package/esm2022/filtering/menu/boolean-filter-menu.component.mjs +0 -168
  151. package/esm2022/filtering/menu/date-filter-menu-input.component.mjs +0 -174
  152. package/esm2022/filtering/menu/date-filter-menu.component.mjs +0 -207
  153. package/esm2022/filtering/menu/filter-menu-component.factory.mjs +0 -19
  154. package/esm2022/filtering/menu/filter-menu-container.component.mjs +0 -299
  155. package/esm2022/filtering/menu/filter-menu-dropdownlist.directive.mjs +0 -44
  156. package/esm2022/filtering/menu/filter-menu-host.directive.mjs +0 -46
  157. package/esm2022/filtering/menu/filter-menu-input-wrapper.component.mjs +0 -136
  158. package/esm2022/filtering/menu/filter-menu-template.directive.mjs +0 -43
  159. package/esm2022/filtering/menu/filter-menu.component.mjs +0 -202
  160. package/esm2022/filtering/menu/filter-radio-button.directive.mjs +0 -34
  161. package/esm2022/filtering/menu/menu-tabbing.service.mjs +0 -22
  162. package/esm2022/filtering/menu/numeric-filter-menu-input.component.mjs +0 -152
  163. package/esm2022/filtering/menu/numeric-filter-menu.component.mjs +0 -224
  164. package/esm2022/filtering/menu/string-filter-menu-input.component.mjs +0 -105
  165. package/esm2022/filtering/menu/string-filter-menu.component.mjs +0 -183
  166. package/esm2022/filtering/numeric-filter.component.mjs +0 -144
  167. package/esm2022/filtering/operators/after-eq-filter-operator.component.mjs +0 -72
  168. package/esm2022/filtering/operators/after-filter-operator.component.mjs +0 -72
  169. package/esm2022/filtering/operators/before-eq-filter-operator.component.mjs +0 -72
  170. package/esm2022/filtering/operators/before-filter-operator.component.mjs +0 -72
  171. package/esm2022/filtering/operators/contains-filter-operator.component.mjs +0 -64
  172. package/esm2022/filtering/operators/ends-with-filter-operator.component.mjs +0 -64
  173. package/esm2022/filtering/operators/eq-filter-operator.component.mjs +0 -112
  174. package/esm2022/filtering/operators/filter-operator.base.mjs +0 -98
  175. package/esm2022/filtering/operators/gt-filter-operator.component.mjs +0 -63
  176. package/esm2022/filtering/operators/gte-filter-operator.component.mjs +0 -63
  177. package/esm2022/filtering/operators/is-empty-filter-operator.component.mjs +0 -64
  178. package/esm2022/filtering/operators/is-not-empty-filter-operator.component.mjs +0 -64
  179. package/esm2022/filtering/operators/is-not-null-filter-operator.component.mjs +0 -112
  180. package/esm2022/filtering/operators/isnull-filter-operator.component.mjs +0 -112
  181. package/esm2022/filtering/operators/lt-filter-operator.component.mjs +0 -63
  182. package/esm2022/filtering/operators/lte-filter-operator.component.mjs +0 -63
  183. package/esm2022/filtering/operators/neq-filter-operator.component.mjs +0 -112
  184. package/esm2022/filtering/operators/not-contains-filter-operator.component.mjs +0 -64
  185. package/esm2022/filtering/operators/starts-with-filter-operator.component.mjs +0 -64
  186. package/esm2022/filtering/string-filter.component.mjs +0 -89
  187. package/esm2022/index.mjs +0 -146
  188. package/esm2022/layout/browser-support.service.mjs +0 -85
  189. package/esm2022/layout/resizable.directive.mjs +0 -83
  190. package/esm2022/layout/resize.service.mjs +0 -29
  191. package/esm2022/layout/responsive.service.mjs +0 -34
  192. package/esm2022/layout/row-sync.mjs +0 -47
  193. package/esm2022/localization/custom-messages.component.mjs +0 -53
  194. package/esm2022/localization/localized-messages.directive.mjs +0 -39
  195. package/esm2022/localization/messages.mjs +0 -510
  196. package/esm2022/navigation/default-focusable-element.mjs +0 -47
  197. package/esm2022/navigation/focus-group.mjs +0 -105
  198. package/esm2022/navigation/focus-root.mjs +0 -50
  199. package/esm2022/navigation/focusable-element.interface.mjs +0 -5
  200. package/esm2022/navigation/focusable.directive.mjs +0 -174
  201. package/esm2022/navigation/item-map.mjs +0 -59
  202. package/esm2022/navigation/logical-cell.directive.mjs +0 -187
  203. package/esm2022/navigation/logical-cell.interface.mjs +0 -5
  204. package/esm2022/navigation/logical-row.directive.mjs +0 -135
  205. package/esm2022/navigation/logical-row.interface.mjs +0 -5
  206. package/esm2022/navigation/model-cell.mjs +0 -37
  207. package/esm2022/navigation/navigation-cell.interface.mjs +0 -5
  208. package/esm2022/navigation/navigation-change.interface.mjs +0 -5
  209. package/esm2022/navigation/navigation-cursor.mjs +0 -176
  210. package/esm2022/navigation/navigation-metadata.mjs +0 -31
  211. package/esm2022/navigation/navigation-mode.mjs +0 -5
  212. package/esm2022/navigation/navigation-model.mjs +0 -126
  213. package/esm2022/navigation/navigation-row.interface.mjs +0 -5
  214. package/esm2022/navigation/navigation.service.mjs +0 -695
  215. package/esm2022/navigation/treelist-focusable-element.mjs +0 -28
  216. package/esm2022/package-metadata.mjs +0 -16
  217. package/esm2022/pdf/export-element.mjs +0 -129
  218. package/esm2022/pdf/pdf-command-tool.directive.mjs +0 -68
  219. package/esm2022/pdf/pdf-command.directive.mjs +0 -101
  220. package/esm2022/pdf/pdf-export-event.mjs +0 -18
  221. package/esm2022/pdf/pdf-margin.component.mjs +0 -33
  222. package/esm2022/pdf/pdf-margin.interface.mjs +0 -5
  223. package/esm2022/pdf/pdf-template.directive.mjs +0 -45
  224. package/esm2022/pdf/pdf.component.mjs +0 -269
  225. package/esm2022/pdf/pdf.module.mjs +0 -48
  226. package/esm2022/pdf/pdf.service.mjs +0 -40
  227. package/esm2022/pdf/treelist-query.mjs +0 -45
  228. package/esm2022/progress-kendo-angular-treelist.mjs +0 -8
  229. package/esm2022/rendering/cell-template.directive.mjs +0 -49
  230. package/esm2022/rendering/cell.component.mjs +0 -383
  231. package/esm2022/rendering/common/col-group.component.mjs +0 -39
  232. package/esm2022/rendering/common/dom-queries.mjs +0 -158
  233. package/esm2022/rendering/common/field-accessor.pipe.mjs +0 -48
  234. package/esm2022/rendering/common/level-items.pipe.mjs +0 -30
  235. package/esm2022/rendering/common/loading.component.mjs +0 -42
  236. package/esm2022/rendering/common/row-class.mjs +0 -5
  237. package/esm2022/rendering/common/spacer.component.mjs +0 -61
  238. package/esm2022/rendering/constants.mjs +0 -28
  239. package/esm2022/rendering/footer-template.directive.mjs +0 -45
  240. package/esm2022/rendering/header/header-template.directive.mjs +0 -45
  241. package/esm2022/rendering/header/header.component.mjs +0 -978
  242. package/esm2022/rendering/header/select-all-checkbox.directive.mjs +0 -90
  243. package/esm2022/rendering/list.component.mjs +0 -850
  244. package/esm2022/rendering/no-records-template.directive.mjs +0 -40
  245. package/esm2022/rendering/table-body.component.mjs +0 -665
  246. package/esm2022/rendering/toolbar/toolbar-focusable.directive.mjs +0 -77
  247. package/esm2022/rendering/toolbar/toolbar-navigation.service.mjs +0 -54
  248. package/esm2022/rendering/toolbar/toolbar-template.directive.mjs +0 -58
  249. package/esm2022/rendering/toolbar/toolbar.component.mjs +0 -110
  250. package/esm2022/row-reordering/flat-reorder.service.mjs +0 -48
  251. package/esm2022/row-reordering/hierarchical-reorder.service.mjs +0 -55
  252. package/esm2022/row-reordering/row-reorder.service.mjs +0 -273
  253. package/esm2022/row-reordering/types.mjs +0 -5
  254. package/esm2022/row-reordering/utils.mjs +0 -128
  255. package/esm2022/scrolling/content-scroll-event.mjs +0 -5
  256. package/esm2022/scrolling/row-height.service.mjs +0 -30
  257. package/esm2022/scrolling/scroll-bottom-event.mjs +0 -5
  258. package/esm2022/scrolling/scroll-request.service.mjs +0 -21
  259. package/esm2022/scrolling/scroll-sync.service.mjs +0 -80
  260. package/esm2022/scrolling/scroller.service.mjs +0 -112
  261. package/esm2022/scrolling/scrollmode.mjs +0 -5
  262. package/esm2022/scrolling/suspend.service.mjs +0 -17
  263. package/esm2022/selection/is-selected.mjs +0 -5
  264. package/esm2022/selection/marquee.directive.mjs +0 -196
  265. package/esm2022/selection/selectable-settings.mjs +0 -5
  266. package/esm2022/selection/selectable.directive.mjs +0 -223
  267. package/esm2022/selection/selection-change-event.mjs +0 -28
  268. package/esm2022/selection/selection-state.mjs +0 -104
  269. package/esm2022/selection/selection.service.mjs +0 -264
  270. package/esm2022/treelist.component.mjs +0 -3111
  271. package/esm2022/treelist.module.mjs +0 -183
  272. package/esm2022/utils.mjs +0 -113
@@ -1,380 +0,0 @@
1
- /**-----------------------------------------------------------------------------------------
2
- * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
- * Licensed under commercial license. See LICENSE.md in the project root for more information
4
- *-------------------------------------------------------------------------------------------*/
5
- import { Component, HostBinding, Input, ElementRef, NgZone, Renderer2, Output, EventEmitter, QueryList, ViewChildren, ViewChild } from '@angular/core';
6
- import { NgClass } from '@angular/common';
7
- import { CheckBoxComponent } from '@progress/kendo-angular-inputs';
8
- import { take } from 'rxjs/operators';
9
- import { ColumnMenuChooserItemCheckedDirective } from './column-chooser-item-checked.directive';
10
- import { ColumnMenuService } from './column-menu.service';
11
- import { ColumnListKeyboardNavigation } from './column-list-kb-nav.service';
12
- import { Subscription } from 'rxjs';
13
- import { Keys, normalizeKeys } from '@progress/kendo-angular-common';
14
- import * as i0 from "@angular/core";
15
- import * as i1 from "./column-list-kb-nav.service";
16
- /**
17
- * @hidden
18
- */
19
- export class ColumnListComponent {
20
- element;
21
- ngZone;
22
- renderer;
23
- listNavigationService;
24
- className = true;
25
- reset = new EventEmitter();
26
- apply = new EventEmitter();
27
- columnChange = new EventEmitter();
28
- set columns(value) {
29
- this._columns = value.filter(column => column.includeInChooser !== false);
30
- this.allColumns = value;
31
- this.updateColumnState();
32
- }
33
- get columns() {
34
- return this._columns;
35
- }
36
- autoSync = true;
37
- ariaLabel;
38
- allowHideAll = false;
39
- applyText;
40
- resetText;
41
- actionsClass = 'k-actions k-actions-stretched k-actions-horizontal';
42
- isLast;
43
- isExpanded;
44
- service;
45
- resetButton;
46
- applyButton;
47
- options;
48
- checkboxes;
49
- hasLocked;
50
- hasVisibleLocked;
51
- unlockedCount = 0;
52
- hasUnlockedFiltered;
53
- hasFiltered;
54
- handledKeys = [Keys.ArrowDown, Keys.ArrowUp, Keys.Space];
55
- _columns;
56
- allColumns;
57
- domSubscriptions = new Subscription();
58
- constructor(element, ngZone, renderer, listNavigationService) {
59
- this.element = element;
60
- this.ngZone = ngZone;
61
- this.renderer = renderer;
62
- this.listNavigationService = listNavigationService;
63
- }
64
- ngOnInit() {
65
- if (!this.element) {
66
- return;
67
- }
68
- this.ngZone.runOutsideAngular(() => {
69
- this.domSubscriptions.add(this.renderer.listen(this.element.nativeElement, 'click', (e) => {
70
- this.ngZone.onStable.pipe(take(1)).subscribe(() => {
71
- this.handleCheckBoxClick(e);
72
- });
73
- }));
74
- this.domSubscriptions.add(this.renderer.listen(this.element.nativeElement, 'keydown', this.onKeydown));
75
- });
76
- }
77
- ngAfterViewInit() {
78
- this.listNavigationService.items = this.options.toArray();
79
- this.listNavigationService.toggle(0, true);
80
- this.ngZone.onStable.pipe(take(1)).subscribe(() => this.updateDisabled());
81
- }
82
- ngOnChanges(changes) {
83
- if (!this.service) {
84
- return;
85
- }
86
- if (changes['isLast'] && this.isLast) {
87
- this.service.menuTabbingService.lastFocusable = this.applyButton.nativeElement;
88
- }
89
- if (changes['isExpanded'] && this.isExpanded && this.isLast && this.applyButton) {
90
- this.service.menuTabbingService.lastFocusable = this.applyButton.nativeElement;
91
- }
92
- }
93
- ngOnDestroy() {
94
- this.domSubscriptions.unsubscribe();
95
- }
96
- isDisabled(column) {
97
- return !(this.allowHideAll || this.hasFiltered || column.hidden || this.columns.find(current => current !== column && !current.hidden)) ||
98
- (this.hasVisibleLocked && !this.hasUnlockedFiltered && this.unlockedCount === 1 && !column.locked && !column.hidden);
99
- }
100
- cancelChanges() {
101
- this.checkboxes.forEach((element, index) => {
102
- element.checkedState = !this.columns[index].hidden;
103
- });
104
- this.updateDisabled();
105
- this.reset.emit();
106
- }
107
- applyChanges() {
108
- const changed = [];
109
- this.checkboxes.forEach((item, index) => {
110
- const column = this.columns[index];
111
- const hidden = !item.checkedState;
112
- if (Boolean(column.hidden) !== hidden) {
113
- column.hidden = hidden;
114
- changed.push(column);
115
- }
116
- });
117
- this.updateDisabled();
118
- this.apply.emit(changed);
119
- }
120
- onTab(e) {
121
- if (this.isLast) {
122
- e.preventDefault();
123
- if (this.service) {
124
- this.service.menuTabbingService.firstFocusable.focus();
125
- }
126
- else {
127
- this.listNavigationService.toggle(this.listNavigationService.activeIndex, true);
128
- }
129
- }
130
- }
131
- onKeydown = (e) => {
132
- const code = normalizeKeys(e);
133
- if (this.handledKeys.includes(code)) {
134
- e.preventDefault();
135
- }
136
- if (e.key === 'Tab' && !e.shiftKey && this.autoSync) {
137
- e.preventDefault();
138
- }
139
- if (e.key === 'Tab' && e.shiftKey) {
140
- this.ngZone.run(() => {
141
- if (e.target.matches('.k-column-list-item')) {
142
- e.preventDefault();
143
- this.resetButton?.nativeElement.focus();
144
- }
145
- });
146
- }
147
- if (code === Keys.ArrowDown) {
148
- this.listNavigationService.next();
149
- }
150
- else if (code === Keys.ArrowUp) {
151
- this.listNavigationService.prev();
152
- }
153
- else if (code === Keys.Space && e.target.classList.contains('k-column-list-item')) {
154
- this.listNavigationService.toggleCheckedState();
155
- }
156
- };
157
- updateDisabled() {
158
- if (this.allowHideAll && !this.hasLocked) {
159
- return;
160
- }
161
- // Cache visible columns to avoid repeated checks
162
- const visibleColumns = [];
163
- const columnMap = new Map();
164
- this.checkboxes.forEach((checkbox, index) => {
165
- // Reset all disabled states first
166
- this.setDisabledState(checkbox, false);
167
- if (checkbox.checkedState) {
168
- visibleColumns.push({ checkbox, index });
169
- columnMap.set(index, this.columns[index]);
170
- }
171
- });
172
- // Only apply disabled states where needed
173
- if (!this.allowHideAll && visibleColumns.length === 1 && !this.hasFiltered) {
174
- this.setDisabledState(visibleColumns[0].checkbox, true);
175
- }
176
- else if (this.hasLocked && !this.hasUnlockedFiltered) {
177
- const checkedUnlocked = visibleColumns.filter(item => !columnMap.get(item.index).locked);
178
- if (checkedUnlocked.length === 1) {
179
- this.setDisabledState(checkedUnlocked[0].checkbox, true);
180
- }
181
- }
182
- }
183
- updateColumnState() {
184
- this.hasLocked = this.allColumns.filter(column => column.locked && (!column.hidden || column.includeInChooser !== false)).length > 0;
185
- this.hasVisibleLocked = this.allColumns.filter(column => column.locked && !column.hidden).length > 0;
186
- this.unlockedCount = this.columns.filter(column => !column.locked && !column.hidden).length;
187
- const filteredColumns = this.allColumns.filter(column => column.includeInChooser === false && !column.hidden);
188
- if (filteredColumns.length) {
189
- this.hasFiltered = filteredColumns.length > 0;
190
- this.hasUnlockedFiltered = filteredColumns.filter(column => !column.locked).length > 0;
191
- }
192
- else {
193
- this.hasFiltered = false;
194
- this.hasUnlockedFiltered = false;
195
- }
196
- }
197
- setDisabledState(checkbox, disabled) {
198
- if (checkbox.disabled !== disabled) {
199
- this.ngZone.runOutsideAngular(() => {
200
- checkbox.disabled = disabled;
201
- const checkboxElement = checkbox.hostElement.nativeElement;
202
- const parentElement = checkboxElement.parentElement;
203
- if (disabled) {
204
- this.renderer.setAttribute(parentElement, 'aria-disabled', 'true');
205
- }
206
- else {
207
- this.renderer.removeAttribute(parentElement, 'aria-disabled');
208
- }
209
- });
210
- }
211
- }
212
- handleCheckBoxClick = (e) => {
213
- const closestItem = e.target.closest('.k-column-list-item');
214
- if (closestItem) {
215
- const checkboxElement = closestItem.querySelector('.k-checkbox-wrap');
216
- const index = parseInt(checkboxElement.firstElementChild.getAttribute('data-index'), 10);
217
- const checkbox = this.checkboxes.toArray()[index];
218
- if (e.target === checkbox.input.nativeElement) {
219
- closestItem.focus();
220
- e.target.classList.remove('k-focus');
221
- }
222
- if (this.autoSync) {
223
- if (!this.columns[index]) {
224
- return;
225
- }
226
- const column = this.columns[index];
227
- const hidden = !checkbox.checkedState;
228
- if (Boolean(column.hidden) !== hidden) {
229
- this.ngZone.runOutsideAngular(() => {
230
- column.hidden = hidden;
231
- this.ngZone.run(() => {
232
- this.columnChange.emit([column]);
233
- });
234
- });
235
- }
236
- }
237
- else {
238
- this.ngZone.run(() => this.updateDisabled());
239
- }
240
- if (index !== this.listNavigationService.activeIndex) {
241
- this.listNavigationService.toggle(this.listNavigationService.activeIndex, false);
242
- this.listNavigationService.activeIndex = index;
243
- this.listNavigationService.toggle(index, true);
244
- }
245
- }
246
- };
247
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ColumnListComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.ColumnListKeyboardNavigation }], target: i0.ɵɵFactoryTarget.Component });
248
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ColumnListComponent, isStandalone: true, selector: "kendo-treelist-columnlist", inputs: { columns: "columns", autoSync: "autoSync", ariaLabel: "ariaLabel", allowHideAll: "allowHideAll", applyText: "applyText", resetText: "resetText", actionsClass: "actionsClass", isLast: "isLast", isExpanded: "isExpanded", service: "service" }, outputs: { reset: "reset", apply: "apply", columnChange: "columnChange" }, host: { properties: { "class.k-column-list-wrapper": "this.className" } }, providers: [ColumnListKeyboardNavigation], viewQueries: [{ propertyName: "resetButton", first: true, predicate: ["resetButton"], descendants: true }, { propertyName: "applyButton", first: true, predicate: ["applyButton"], descendants: true }, { propertyName: "options", predicate: ColumnMenuChooserItemCheckedDirective, descendants: true }, { propertyName: "checkboxes", predicate: CheckBoxComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
249
- <div
250
- class="k-column-list"
251
- role="listbox"
252
- aria-multiselectable="true"
253
- [attr.aria-label]="ariaLabel">
254
- @for (column of columns; track column; let index = $index) {
255
- <label
256
- class='k-column-list-item'
257
- [kendoColumnMenuChooserItemChecked]="!column.hidden"
258
- role="option">
259
- <kendo-checkbox
260
- [inputAttributes]="{'data-index': index.toString()}"
261
- [checkedState]="!column.hidden"
262
- [disabled]="isDisabled(column)"
263
- [tabindex]="-1"
264
- ></kendo-checkbox>
265
- <span class="k-checkbox-label">{{ column.displayTitle }}</span>
266
- </label>
267
- }
268
- </div>
269
- @if (!autoSync) {
270
- <div [ngClass]="actionsClass">
271
- <button
272
- #applyButton
273
- type="button"
274
- class="k-button k-button-solid-primary k-button-solid k-button-md k-rounded-md k-button-rectangle"
275
- (click)="applyChanges()"
276
- (keydown.enter)="$event.preventDefault(); $event.stopPropagation(); applyChanges();"
277
- (keydown.space)="$event.preventDefault(); $event.stopPropagation(); applyChanges();">{{ applyText }}</button>
278
- <button
279
- #resetButton
280
- type="button"
281
- (keydown.tab)="onTab($event)"
282
- class="k-button k-button-solid-base k-button-solid k-button-md k-rounded-md k-button-rectangle"
283
- (click)="cancelChanges()"
284
- (keydown.enter)="$event.preventDefault(); $event.stopPropagation(); cancelChanges();"
285
- (keydown.space)="$event.preventDefault(); $event.stopPropagation(); cancelChanges();">{{ resetText }}</button>
286
- </div>
287
- }
288
- `, isInline: true, dependencies: [{ kind: "directive", type: ColumnMenuChooserItemCheckedDirective, selector: "[kendoColumnMenuChooserItemChecked]", inputs: ["kendoColumnMenuChooserItemChecked"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: CheckBoxComponent, selector: "kendo-checkbox", inputs: ["checkedState", "rounded"], outputs: ["checkedStateChange"], exportAs: ["kendoCheckBox"] }] });
289
- }
290
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ColumnListComponent, decorators: [{
291
- type: Component,
292
- args: [{
293
- selector: 'kendo-treelist-columnlist',
294
- providers: [ColumnListKeyboardNavigation],
295
- template: `
296
- <div
297
- class="k-column-list"
298
- role="listbox"
299
- aria-multiselectable="true"
300
- [attr.aria-label]="ariaLabel">
301
- @for (column of columns; track column; let index = $index) {
302
- <label
303
- class='k-column-list-item'
304
- [kendoColumnMenuChooserItemChecked]="!column.hidden"
305
- role="option">
306
- <kendo-checkbox
307
- [inputAttributes]="{'data-index': index.toString()}"
308
- [checkedState]="!column.hidden"
309
- [disabled]="isDisabled(column)"
310
- [tabindex]="-1"
311
- ></kendo-checkbox>
312
- <span class="k-checkbox-label">{{ column.displayTitle }}</span>
313
- </label>
314
- }
315
- </div>
316
- @if (!autoSync) {
317
- <div [ngClass]="actionsClass">
318
- <button
319
- #applyButton
320
- type="button"
321
- class="k-button k-button-solid-primary k-button-solid k-button-md k-rounded-md k-button-rectangle"
322
- (click)="applyChanges()"
323
- (keydown.enter)="$event.preventDefault(); $event.stopPropagation(); applyChanges();"
324
- (keydown.space)="$event.preventDefault(); $event.stopPropagation(); applyChanges();">{{ applyText }}</button>
325
- <button
326
- #resetButton
327
- type="button"
328
- (keydown.tab)="onTab($event)"
329
- class="k-button k-button-solid-base k-button-solid k-button-md k-rounded-md k-button-rectangle"
330
- (click)="cancelChanges()"
331
- (keydown.enter)="$event.preventDefault(); $event.stopPropagation(); cancelChanges();"
332
- (keydown.space)="$event.preventDefault(); $event.stopPropagation(); cancelChanges();">{{ resetText }}</button>
333
- </div>
334
- }
335
- `,
336
- standalone: true,
337
- imports: [ColumnMenuChooserItemCheckedDirective, NgClass, CheckBoxComponent]
338
- }]
339
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1.ColumnListKeyboardNavigation }], propDecorators: { className: [{
340
- type: HostBinding,
341
- args: ["class.k-column-list-wrapper"]
342
- }], reset: [{
343
- type: Output
344
- }], apply: [{
345
- type: Output
346
- }], columnChange: [{
347
- type: Output
348
- }], columns: [{
349
- type: Input
350
- }], autoSync: [{
351
- type: Input
352
- }], ariaLabel: [{
353
- type: Input
354
- }], allowHideAll: [{
355
- type: Input
356
- }], applyText: [{
357
- type: Input
358
- }], resetText: [{
359
- type: Input
360
- }], actionsClass: [{
361
- type: Input
362
- }], isLast: [{
363
- type: Input
364
- }], isExpanded: [{
365
- type: Input
366
- }], service: [{
367
- type: Input
368
- }], resetButton: [{
369
- type: ViewChild,
370
- args: ['resetButton', { static: false }]
371
- }], applyButton: [{
372
- type: ViewChild,
373
- args: ['applyButton', { static: false }]
374
- }], options: [{
375
- type: ViewChildren,
376
- args: [ColumnMenuChooserItemCheckedDirective]
377
- }], checkboxes: [{
378
- type: ViewChildren,
379
- args: [CheckBoxComponent]
380
- }] } });
@@ -1,21 +0,0 @@
1
- /**-----------------------------------------------------------------------------------------
2
- * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
- * Licensed under commercial license. See LICENSE.md in the project root for more information
4
- *-------------------------------------------------------------------------------------------*/
5
- /**
6
- * Represents the event arguments for the `columnLockedChange` event in the Kendo UI for Angular TreeList.
7
- * Use this event to access the columns whose locked state has changed.
8
- *
9
- */
10
- export class ColumnLockedChangeEvent {
11
- /**
12
- * The array of columns whose locked state has changed.
13
- */
14
- columns;
15
- /**
16
- * @hidden
17
- */
18
- constructor(columns) {
19
- this.columns = columns;
20
- }
21
- }
@@ -1,78 +0,0 @@
1
- /**-----------------------------------------------------------------------------------------
2
- * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
- * Licensed under commercial license. See LICENSE.md in the project root for more information
4
- *-------------------------------------------------------------------------------------------*/
5
- import { Component, isDevMode } from '@angular/core';
6
- import { displayInlineFlexIcon } from '@progress/kendo-svg-icons';
7
- import { ColumnMenuErrorMessages } from '../common/error-messages';
8
- import { ContextService } from '../common/provider.service';
9
- import { ColumnMenuItemBase } from './column-menu-item-base';
10
- import { autoSizeColumn } from './utils';
11
- import { ColumnMenuItemComponent } from './column-menu-item.component';
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "../common/provider.service";
14
- /**
15
- * Represents the Kendo UI TreeList column-menu item for resizing all columns to fit the widest header or cell content without wrapping. [See example](slug:columnmenu_treelist#toc-autosize-all-columns-item).
16
- *
17
- * Place this component inside a [`ColumnMenuTemplate`]({% slug api_treelist_columnmenutemplatedirective %}) directive to enable the feature.
18
- * Register the component as a known column menu item by setting the [`ColumnMenuService`]({% slug api_treelist_columnmenuservice %}) to the `service` input. [See example](slug:columnmenu_treelist#toc-customizing-the-content).
19
- *
20
- * @example
21
- * ```html
22
- * <kendo-treelist [columnMenu]="true" ...>
23
- * <ng-template kendoTreeListColumnMenuTemplate let-service="service">
24
- * <kendo-treelist-columnmenu-autosize-all-columns [service]="service">
25
- * </kendo-treelist-columnmenu-autosize-all-columns>
26
- * </ng-template>
27
- * </kendo-treelist>
28
- * ```
29
- */
30
- export class ColumnMenuAutoSizeAllColumnsComponent extends ColumnMenuItemBase {
31
- ctx;
32
- displayInlineFlexIcon = displayInlineFlexIcon;
33
- constructor(ctx) {
34
- super();
35
- this.ctx = ctx;
36
- }
37
- ngOnInit() {
38
- const isVirtualColumns = this.ctx.treelist.columnMenuTemplate && this.ctx.treelist.virtualColumns;
39
- if (isVirtualColumns && isDevMode()) {
40
- console.warn(ColumnMenuErrorMessages.autoSizeAllColumns);
41
- }
42
- }
43
- /**
44
- * Resizes all columns to the minimum possible width so that they fit the widest header or cell content without wrapping.
45
- */
46
- autoSizeAllColumns() {
47
- autoSizeColumn(this.ctx.treelist, this.service);
48
- }
49
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ColumnMenuAutoSizeAllColumnsComponent, deps: [{ token: i1.ContextService }], target: i0.ɵɵFactoryTarget.Component });
50
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ColumnMenuAutoSizeAllColumnsComponent, isStandalone: true, selector: "kendo-treelist-columnmenu-autosize-all-columns", usesInheritance: true, ngImport: i0, template: `
51
- @if (!this.ctx.treelist.virtualColumns) {
52
- <kendo-treelist-columnmenu-item
53
- [text]="ctx.localization.get('autosizeAllColumns')"
54
- icon="display-inline-flex"
55
- [svgIcon]="displayInlineFlexIcon"
56
- (itemClick)="autoSizeAllColumns()"
57
- ></kendo-treelist-columnmenu-item>
58
- }
59
- `, isInline: true, dependencies: [{ kind: "component", type: ColumnMenuItemComponent, selector: "kendo-treelist-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service"], outputs: ["itemClick", "expand", "collapse"] }] });
60
- }
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ColumnMenuAutoSizeAllColumnsComponent, decorators: [{
62
- type: Component,
63
- args: [{
64
- selector: 'kendo-treelist-columnmenu-autosize-all-columns',
65
- template: `
66
- @if (!this.ctx.treelist.virtualColumns) {
67
- <kendo-treelist-columnmenu-item
68
- [text]="ctx.localization.get('autosizeAllColumns')"
69
- icon="display-inline-flex"
70
- [svgIcon]="displayInlineFlexIcon"
71
- (itemClick)="autoSizeAllColumns()"
72
- ></kendo-treelist-columnmenu-item>
73
- }
74
- `,
75
- standalone: true,
76
- imports: [ColumnMenuItemComponent]
77
- }]
78
- }], ctorParameters: () => [{ type: i1.ContextService }] });
@@ -1,86 +0,0 @@
1
- /**-----------------------------------------------------------------------------------------
2
- * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
- * Licensed under commercial license. See LICENSE.md in the project root for more information
4
- *-------------------------------------------------------------------------------------------*/
5
- import { Component, Input, isDevMode } from '@angular/core';
6
- import { maxWidthIcon } from '@progress/kendo-svg-icons';
7
- import { ContextService } from '../common/provider.service';
8
- import { ColumnMenuItemBase } from './column-menu-item-base';
9
- import { autoSizeColumn } from './utils';
10
- import { ColumnMenuItemComponent } from './column-menu-item.component';
11
- import { ColumnMenuErrorMessages } from '../common/error-messages';
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "../common/provider.service";
14
- /**
15
- * Represents the Kendo UI for Angular TreeList column-menu item for resizing a specified column to fit the header or cell content without wrapping. [See example](slug:columnmenu_treelist#toc-customizing-the-content).
16
- *
17
- * Place this component inside a [`ColumnMenuTemplate`]({% slug api_treelist_columnmenutemplatedirective %}) directive to enable the feature.
18
- * Set the [`ColumnMenuService`]({% slug api_treelist_columnmenuservice %}) and `column` inputs using the values passed by the template.
19
- *
20
- * @example
21
- * ```html
22
- * <kendo-treelist [columnMenu]="true" ...>
23
- * <ng-template kendoTreeListColumnMenuTemplate let-service="service" let-column="column">
24
- * <kendo-treelist-columnmenu-autosize-column [column]="column" [service]="service">
25
- * </kendo-treelist-columnmenu-autosize-column>
26
- * </ng-template>
27
- * </kendo-treelist>
28
- * ```
29
- */
30
- export class ColumnMenuAutoSizeColumnComponent extends ColumnMenuItemBase {
31
- ctx;
32
- /**
33
- * The TreeList column instance to resize with the auto size column option.
34
- */
35
- column;
36
- maxWidthIcon = maxWidthIcon;
37
- constructor(ctx) {
38
- super();
39
- this.ctx = ctx;
40
- }
41
- ngOnInit() {
42
- const isVirtualColumns = this.ctx.treelist.columnMenuTemplate && this.ctx.treelist.virtualColumns;
43
- if (isVirtualColumns && isDevMode()) {
44
- console.warn(ColumnMenuErrorMessages.autoSizeColumn);
45
- }
46
- }
47
- /**
48
- * Resizes the specified column to the minimum possible width so that it fits the widest header or cell content without wrapping.
49
- */
50
- autoSizeColumn() {
51
- autoSizeColumn(this.ctx.treelist, this.service, this.column);
52
- }
53
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ColumnMenuAutoSizeColumnComponent, deps: [{ token: i1.ContextService }], target: i0.ɵɵFactoryTarget.Component });
54
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ColumnMenuAutoSizeColumnComponent, isStandalone: true, selector: "kendo-treelist-columnmenu-autosize-column", inputs: { column: "column" }, usesInheritance: true, ngImport: i0, template: `
55
- @if (!this.ctx.treelist.virtualColumns) {
56
- <kendo-treelist-columnmenu-item
57
- class="k-grid-columnmenu-autosize-column"
58
- [text]="ctx.localization.get('autosizeThisColumn')"
59
- icon="max-width"
60
- [svgIcon]="maxWidthIcon"
61
- (itemClick)="autoSizeColumn()"
62
- ></kendo-treelist-columnmenu-item>
63
- }
64
- `, isInline: true, dependencies: [{ kind: "component", type: ColumnMenuItemComponent, selector: "kendo-treelist-columnmenu-item", inputs: ["icon", "svgIcon", "text", "selected", "disabled", "expanded", "service"], outputs: ["itemClick", "expand", "collapse"] }] });
65
- }
66
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ColumnMenuAutoSizeColumnComponent, decorators: [{
67
- type: Component,
68
- args: [{
69
- selector: 'kendo-treelist-columnmenu-autosize-column',
70
- template: `
71
- @if (!this.ctx.treelist.virtualColumns) {
72
- <kendo-treelist-columnmenu-item
73
- class="k-grid-columnmenu-autosize-column"
74
- [text]="ctx.localization.get('autosizeThisColumn')"
75
- icon="max-width"
76
- [svgIcon]="maxWidthIcon"
77
- (itemClick)="autoSizeColumn()"
78
- ></kendo-treelist-columnmenu-item>
79
- }
80
- `,
81
- standalone: true,
82
- imports: [ColumnMenuItemComponent]
83
- }]
84
- }], ctorParameters: () => [{ type: i1.ContextService }], propDecorators: { column: [{
85
- type: Input
86
- }] } });