@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,223 +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 { Directive, Input, Output, EventEmitter } from '@angular/core';
6
- import { TreeListComponent } from '../treelist.component';
7
- import { getter } from '@progress/kendo-common';
8
- import { isString } from '../utils';
9
- import { createState, RowSelectionState } from './selection-state';
10
- import { SelectionService } from './selection.service';
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "../treelist.component";
13
- import * as i2 from "./selection.service";
14
- const defaultColumnKeyGetter = (_column, columnIndex) => columnIndex;
15
- /**
16
- * A directive which controls the selection state. [See example](slug:selection_treelist).
17
- *
18
- * @example
19
- * ```html
20
- * <kendo-treelist
21
- * [kendoTreeListSelectable]="{ mode: 'row' }"
22
- * [selectedItems]="selectedItems">
23
- * <kendo-treelist-column field="name" title="Name"></kendo-treelist-column>
24
- * <kendo-treelist-column field="age" title="Age"></kendo-treelist-column>
25
- * </kendo-treelist>
26
- * ```
27
- * @remarks
28
- * Applied to: {@link TreeListComponent}.
29
- */
30
- export class SelectableDirective {
31
- treelist;
32
- selectionService;
33
- /**
34
- * @hidden
35
- */
36
- set selectable(value) {
37
- if (typeof value === 'object') { // add method to normalize this
38
- this._settings = value;
39
- }
40
- else {
41
- this._settings = {
42
- enabled: value
43
- };
44
- }
45
- this.state = createState(this._settings);
46
- this.state.fromArray(this._selectedItems || []);
47
- if (this._settings.enabled !== false) {
48
- this.treelist.isSelected = this._settings.mode === 'cell' ? this.cellSelected : this.rowSelected;
49
- this.subscribeSelection();
50
- }
51
- else {
52
- this.treelist.isSelected = () => false;
53
- this.unsubscribeSelection();
54
- }
55
- this.treelist.updateView();
56
- }
57
- /**
58
- * Specifies the selected items.
59
- */
60
- set selectedItems(value) {
61
- if (!value) {
62
- this.state.clear();
63
- }
64
- else if (value !== this.lastChange) {
65
- this.state.fromArray(value);
66
- this.treelist.updateView();
67
- }
68
- this._selectedItems = value;
69
- const currentValue = value || [];
70
- const previousState = this.selectionService.selectAllCheckedState;
71
- if (currentValue.length > 0 && currentValue.length >= this.treelist.view.flatData.length) {
72
- this.selectionService.selectAllCheckedState = true;
73
- }
74
- else if (currentValue.length === 0) {
75
- this.selectionService.selectAllCheckedState = false;
76
- }
77
- else {
78
- this.selectionService.selectAllCheckedState = 'indeterminate';
79
- }
80
- if (previousState !== this.selectionService.selectAllCheckedState) {
81
- this.selectionService.selectAllCheckedStateChange.next(this.selectionService.selectAllCheckedState);
82
- }
83
- }
84
- /**
85
- * Fires when the selected items are changed.
86
- */
87
- selectedItemsChange = new EventEmitter();
88
- /**
89
- * The field name or a function that specify the dataItems key.
90
- */
91
- set itemKey(value) {
92
- if (isString(value)) {
93
- this._keyGetter = getter(String(value));
94
- }
95
- else {
96
- this._keyGetter = value;
97
- }
98
- }
99
- /**
100
- * The field name or a function that specify the columns key.
101
- */
102
- set columnKey(value) {
103
- if (isString(value)) {
104
- this._columnKeyGetter = getter(String(value));
105
- }
106
- else if (value) {
107
- this._columnKeyGetter = value;
108
- }
109
- }
110
- get keyGetter() {
111
- return this._keyGetter || this.treelist.idGetter;
112
- }
113
- get columnKeyGetter() {
114
- return this._columnKeyGetter || defaultColumnKeyGetter;
115
- }
116
- subscriptions;
117
- state = new RowSelectionState();
118
- _settings;
119
- lastChange;
120
- _columnKeyGetter;
121
- _keyGetter;
122
- _selectedItems = [];
123
- constructor(treelist, selectionService) {
124
- this.treelist = treelist;
125
- this.selectionService = selectionService;
126
- this.cellSelected = this.cellSelected.bind(this);
127
- this.rowSelected = this.rowSelected.bind(this);
128
- this.selectionChange = this.selectionChange.bind(this);
129
- this.updateColumnIndices = this.updateColumnIndices.bind(this);
130
- this.treelist.selectable = this.selectable = true;
131
- }
132
- ngOnDestroy() {
133
- this.unsubscribeSelection();
134
- }
135
- /**
136
- * @hidden
137
- */
138
- cellSelected(dataItem, column, columnIndex) {
139
- return this.state.has(this.keyGetter(dataItem), this.columnKeyGetter(column, columnIndex));
140
- }
141
- /**
142
- * @hidden
143
- */
144
- rowSelected(dataItem) {
145
- return this.state.has(this.keyGetter(dataItem));
146
- }
147
- selectionChange({ action, items }) {
148
- if (action === 'select' || action === 'add') {
149
- if (action === 'select') {
150
- this.state.clear();
151
- }
152
- items.forEach(item => {
153
- this.state.add(this.keyGetter(item.dataItem), this.columnKeyGetter(item.column, item.columnIndex));
154
- });
155
- }
156
- else {
157
- items.forEach(item => {
158
- this.state.remove(this.keyGetter(item.dataItem), this.columnKeyGetter(item.column, item.columnIndex));
159
- });
160
- }
161
- this.emitSelectedItemsChange();
162
- }
163
- emitSelectedItemsChange() {
164
- this.selectionService.state = this.lastChange = this.state.toArray();
165
- this.selectedItemsChange.emit(this.lastChange);
166
- }
167
- subscribeSelection() {
168
- this.unsubscribeSelection();
169
- this.subscriptions = this.treelist.selectionChange.subscribe(this.selectionChange);
170
- if (this._settings.mode === 'cell') {
171
- this.subscriptions.add(this.treelist.columnOrderChange.subscribe(this.updateColumnIndices));
172
- this.subscriptions.add(this.treelist.columnLockedChange.subscribe(this.updateColumnIndices));
173
- }
174
- }
175
- unsubscribeSelection() {
176
- if (this.subscriptions) {
177
- this.subscriptions.unsubscribe();
178
- this.subscriptions = null;
179
- }
180
- }
181
- updateColumnIndices() {
182
- if (!this._columnKeyGetter) {
183
- const changes = new Map();
184
- const currentIndices = [];
185
- this.leafColumns.forEach((column) => {
186
- currentIndices.push(column);
187
- });
188
- this.treelist.columnsContainer.refresh();
189
- const leafColumns = this.leafColumns;
190
- currentIndices.forEach((column, index) => {
191
- if (column !== leafColumns[index]) {
192
- changes.set(index, leafColumns.indexOf(column));
193
- }
194
- });
195
- if (changes.size && this.state.updateColumKeys(changes)) {
196
- this.emitSelectedItemsChange();
197
- }
198
- }
199
- }
200
- get leafColumns() {
201
- return this.treelist.lockedLeafColumns.toArray().concat(this.treelist.nonLockedLeafColumns.toArray());
202
- }
203
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SelectableDirective, deps: [{ token: i1.TreeListComponent }, { token: i2.SelectionService }], target: i0.ɵɵFactoryTarget.Directive });
204
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: SelectableDirective, isStandalone: true, selector: "[kendoTreeListSelectable]", inputs: { selectable: "selectable", selectedItems: "selectedItems", itemKey: "itemKey", columnKey: "columnKey" }, outputs: { selectedItemsChange: "selectedItemsChange" }, exportAs: ["kendoTreeListSelectable"], ngImport: i0 });
205
- }
206
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SelectableDirective, decorators: [{
207
- type: Directive,
208
- args: [{
209
- exportAs: 'kendoTreeListSelectable',
210
- selector: '[kendoTreeListSelectable]',
211
- standalone: true
212
- }]
213
- }], ctorParameters: () => [{ type: i1.TreeListComponent }, { type: i2.SelectionService }], propDecorators: { selectable: [{
214
- type: Input
215
- }], selectedItems: [{
216
- type: Input
217
- }], selectedItemsChange: [{
218
- type: Output
219
- }], itemKey: [{
220
- type: Input
221
- }], columnKey: [{
222
- type: Input
223
- }] } });
@@ -1,28 +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
- * Arguments for the TreeList `selectionChange` event.
7
- */
8
- export class SelectionChangeEvent {
9
- /**
10
- * Specifies how the selection was changed.
11
- */
12
- action;
13
- /**
14
- * Specifies which items were changed.
15
- */
16
- items;
17
- /**
18
- * The TreeList component that triggered the event.
19
- */
20
- sender;
21
- /**
22
- * @hidden
23
- */
24
- constructor(action, items) {
25
- this.action = action;
26
- this.items = items;
27
- }
28
- }
@@ -1,104 +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
- * @hidden
7
- */
8
- export class RowSelectionState {
9
- keys = new Set();
10
- clear() {
11
- this.keys.clear();
12
- }
13
- has(key) {
14
- return this.keys.has(key);
15
- }
16
- add(key) {
17
- this.keys.add(key);
18
- }
19
- remove(key) {
20
- this.keys.delete(key);
21
- }
22
- toArray() {
23
- const result = [];
24
- this.keys.forEach(key => {
25
- result.push({ itemKey: key });
26
- });
27
- return result;
28
- }
29
- fromArray(arr) {
30
- this.keys.clear();
31
- arr.forEach(item => {
32
- this.add(item.itemKey);
33
- });
34
- }
35
- }
36
- /**
37
- * @hidden
38
- */
39
- export class CellSelectionState {
40
- keys = new Map();
41
- clear() {
42
- this.keys.clear();
43
- }
44
- has(key, columnKey) {
45
- return this.keys.has(key) && this.keys.get(key).has(columnKey);
46
- }
47
- add(key, columnKey) {
48
- if (!this.keys.has(key)) {
49
- this.keys.set(key, new Set());
50
- }
51
- const columnSet = this.keys.get(key);
52
- columnSet.add(columnKey);
53
- }
54
- remove(key, columnKey) {
55
- if (this.keys.has(key)) {
56
- const columnSet = this.keys.get(key);
57
- columnSet.delete(columnKey);
58
- if (!columnSet.size) {
59
- this.keys.delete(key);
60
- }
61
- }
62
- }
63
- toArray() {
64
- const result = [];
65
- this.forEach((itemKey, columnKey) => {
66
- result.push({ itemKey, columnKey });
67
- });
68
- return result;
69
- }
70
- fromArray(state) {
71
- this.keys.clear();
72
- state.forEach(item => {
73
- this.add(item.itemKey, item.columnKey);
74
- });
75
- }
76
- updateColumKeys(changes) {
77
- let hasChanges = false;
78
- this.keys.forEach((value, key) => {
79
- const newKeys = [];
80
- value.forEach(columnKey => {
81
- if (changes.has(columnKey)) {
82
- newKeys.push(changes.get(columnKey));
83
- hasChanges = true;
84
- }
85
- else {
86
- newKeys.push(columnKey);
87
- }
88
- });
89
- this.keys.set(key, new Set(newKeys));
90
- });
91
- return hasChanges;
92
- }
93
- forEach(callback) {
94
- this.keys.forEach((value, key) => {
95
- value.forEach((columnKey) => {
96
- callback(key, columnKey);
97
- });
98
- });
99
- }
100
- }
101
- /**
102
- * @hidden
103
- */
104
- export const createState = (settings) => settings.mode === 'cell' ? new CellSelectionState() : new RowSelectionState();
@@ -1,264 +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 { Injectable } from '@angular/core';
6
- import { Subject, Subscription, merge } from "rxjs";
7
- import { ViewCollection } from '../data/data.collection';
8
- import { SelectionChangeEvent } from './selection-change-event';
9
- import { hasClasses, isPresent, Keys } from '@progress/kendo-angular-common';
10
- import * as i0 from "@angular/core";
11
- /**
12
- * @hidden
13
- */
14
- export const defaultSelected = (_item) => false;
15
- const noop = () => false;
16
- /**
17
- * @hidden
18
- */
19
- export class SelectionService {
20
- changes = new Subject();
21
- selectAllCheckedStateChange = new Subject();
22
- state = [];
23
- set settings(value) {
24
- if (typeof value === 'object') {
25
- this._settings = value;
26
- }
27
- else {
28
- this._settings = {
29
- enabled: value
30
- };
31
- }
32
- this.enabled = this._settings.enabled !== false && !this._settings.readonly;
33
- if (this._settings.enabled !== false) {
34
- if (this._settings.mode === 'cell') {
35
- this.isCellSelected = this.cellSelected;
36
- this.isRowSelected = noop;
37
- }
38
- else {
39
- this.isCellSelected = noop;
40
- this.isRowSelected = this.rowSelected;
41
- }
42
- }
43
- else {
44
- this.isCellSelected = noop;
45
- this.isRowSelected = noop;
46
- }
47
- }
48
- get settings() {
49
- return this._settings;
50
- }
51
- get enableMarquee() {
52
- const checkboxOnly = this.settings?.checkboxOnly;
53
- if (!this.settings || checkboxOnly) {
54
- return false;
55
- }
56
- const dragAndMultiple = typeof (this.settings) === 'object' &&
57
- isPresent(this.settings) &&
58
- this.settings.multiple &&
59
- this.settings.enabled !== false &&
60
- !this.settings.checkboxOnly &&
61
- this.settings.drag !== false;
62
- return this.enabled && dragAndMultiple;
63
- }
64
- get enableMultiple() {
65
- return this.enabled && this.settings.multiple;
66
- }
67
- get rowSelection() {
68
- return this.settings.mode !== 'cell';
69
- }
70
- isSelected = defaultSelected;
71
- isRowSelected = noop;
72
- isCellSelected = noop;
73
- enabled = false;
74
- dragging = false;
75
- selectAllCheckedState = false;
76
- view;
77
- columnsContainer;
78
- _settings = {};
79
- selectionOrigin;
80
- tables = [];
81
- subscriptions = new Subscription();
82
- init(treelist) {
83
- this.view = treelist.view;
84
- this.columnsContainer = treelist.columnsContainer;
85
- this.subscriptions.add(merge(treelist.pageChange, treelist.dataStateChange).subscribe(() => {
86
- this.selectionOrigin = null;
87
- }));
88
- this.subscriptions.add(treelist.domEvents.cellMousedown.subscribe((args) => {
89
- if (this.enabled && this._settings.multiple && args.originalEvent.shiftKey) {
90
- args.originalEvent.preventDefault();
91
- }
92
- }));
93
- }
94
- ngOnDestroy() {
95
- this.subscriptions.unsubscribe();
96
- }
97
- registerTable(table) {
98
- this.tables.push(table);
99
- }
100
- unregisterTable(table) {
101
- this.tables = this.tables.filter(t => t !== table);
102
- }
103
- click(args, toggle) {
104
- if (this.dragging) {
105
- this.dragging = false;
106
- return;
107
- }
108
- const isCheckbox = args.originalEvent.target ? hasClasses(args.originalEvent.target, 'k-checkbox') : true;
109
- if (this.rowSelection && this.settings.checkboxOnly && !isCheckbox) {
110
- return;
111
- }
112
- const { dataItem, column, columnIndex, originalEvent } = args;
113
- const ctrlKey = originalEvent.ctrlKey || originalEvent.metaKey;
114
- if (((originalEvent.code === Keys.Enter || originalEvent.code === Keys.NumpadEnter) && !ctrlKey) || (originalEvent.button && originalEvent.button !== 0)) {
115
- return;
116
- }
117
- const selected = this.isSelected(dataItem, column, columnIndex);
118
- const toggleSelected = ctrlKey || toggle;
119
- if (this._settings.multiple) {
120
- if (originalEvent.shiftKey) {
121
- const origin = this.selectionOrigin || {
122
- columnIndex: 0,
123
- column: this.leafColumns[0],
124
- item: this.view.firstItem.data
125
- };
126
- this.selectRange({ item: dataItem, column, columnIndex }, origin);
127
- }
128
- else {
129
- this.selectionOrigin = {
130
- item: dataItem,
131
- column,
132
- columnIndex
133
- };
134
- const action = toggleSelected ? (selected ? 'remove' : 'add') : 'select';
135
- this.changes.next(new SelectionChangeEvent(action, [{
136
- dataItem,
137
- column,
138
- columnIndex
139
- }]));
140
- }
141
- }
142
- else if (!selected || toggleSelected) {
143
- const action = selected && toggleSelected ? 'remove' : 'select';
144
- this.changes.next(new SelectionChangeEvent(action, [{
145
- dataItem,
146
- column,
147
- columnIndex
148
- }]));
149
- }
150
- if (ctrlKey) {
151
- originalEvent.preventDefault();
152
- }
153
- }
154
- checkboxClick(args) {
155
- if (this.dragging) {
156
- this.dragging = false;
157
- return;
158
- }
159
- if (args.column.checkChildren && args.viewItem.hasChildren && !args.originalEvent.shiftKey && !args.originalEvent.ctrlKey) {
160
- const data = [args.dataItem];
161
- const selected = Boolean(args.viewItem.selected);
162
- ViewCollection.loadView({
163
- fields: Object.assign({}, this.view.fieldAccessor(), {
164
- data: data,
165
- hasFooter: false,
166
- pageable: false,
167
- isVirtual: false
168
- }),
169
- loaded: this.view.loaded,
170
- selectionState: this.view.selectionState
171
- }).subscribe(view => {
172
- if (!view) {
173
- return;
174
- }
175
- const selectedItems = view.data.filter(item => Boolean(item.selected) === selected).map(item => ({
176
- dataItem: item.data
177
- }));
178
- this.changes.next(new SelectionChangeEvent(selected ? 'remove' : 'add', selectedItems));
179
- });
180
- }
181
- else {
182
- this.click(args, true);
183
- }
184
- }
185
- toggleAll(select) {
186
- ViewCollection.loadView({
187
- fields: Object.assign({}, this.view.fieldAccessor(), {
188
- hasFooter: false,
189
- pageable: false,
190
- isVirtual: false
191
- }),
192
- loaded: this.view.loaded,
193
- selectionState: this.view.selectionState
194
- }).subscribe(view => {
195
- if (!view) {
196
- return;
197
- }
198
- const selectedItems = view.data.filter(item => Boolean(item.selected) !== select).map(item => ({
199
- dataItem: item.data
200
- }));
201
- this.changes.next(new SelectionChangeEvent(select ? 'add' : 'remove', selectedItems));
202
- this.selectAllCheckedState = select;
203
- this.selectAllCheckedStateChange.next(select);
204
- });
205
- }
206
- selectRange(firstPoint, secondPoint) {
207
- const rangeItems = this.rangeItems(firstPoint, secondPoint);
208
- this.changes.next(new SelectionChangeEvent('select', rangeItems));
209
- }
210
- rangeItems(firstPoint, secondPoint) {
211
- const firstIndex = this.view.findIndex(item => item.data === firstPoint.item || item === firstPoint.item);
212
- const secondIndex = this.view.findIndex(item => item.data === secondPoint.item || item === secondPoint.item);
213
- const startIndex = Math.min(firstIndex, secondIndex);
214
- const endIndex = Math.max(firstIndex, secondIndex);
215
- const rangeItems = this.view.data.slice(startIndex, endIndex + 1).filter(item => item.type === 'data');
216
- if (this._settings.mode === 'cell') {
217
- const leafColumns = this.leafColumns;
218
- const startColumnIndex = Math.min(firstPoint.columnIndex, secondPoint.columnIndex);
219
- const endColumnIndex = Math.max(firstPoint.columnIndex, secondPoint.columnIndex);
220
- const selectedItems = [];
221
- for (let idx = 0; idx < rangeItems.length; idx++) {
222
- for (let columnIdx = startColumnIndex; columnIdx <= endColumnIndex; columnIdx++) {
223
- selectedItems.push({
224
- dataItem: rangeItems[idx].data,
225
- column: leafColumns[columnIdx],
226
- columnIndex: columnIdx
227
- });
228
- }
229
- }
230
- return selectedItems;
231
- }
232
- return rangeItems.map(item => ({
233
- dataItem: item.data
234
- }));
235
- }
236
- updateSelectedState() {
237
- if (this.rowSelection) {
238
- this.view.updateSelectedState();
239
- }
240
- }
241
- targetArgs(target, skipFocusable) {
242
- let result;
243
- this.tables.some(t => {
244
- result = t.targetArgs(target, skipFocusable);
245
- return result;
246
- });
247
- return result;
248
- }
249
- rowSelected(dataItem) {
250
- return this.isSelected(dataItem);
251
- }
252
- cellSelected(dataItem, column, columnIndex) {
253
- return this.isSelected(dataItem, column, columnIndex);
254
- }
255
- // expose in the treelist?
256
- get leafColumns() {
257
- return this.columnsContainer.lockedLeafColumns.toArray().concat(this.columnsContainer.nonLockedLeafColumns.toArray());
258
- }
259
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SelectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
260
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SelectionService });
261
- }
262
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SelectionService, decorators: [{
263
- type: Injectable
264
- }] });