@acorex/components 21.0.0-next.37 → 21.0.0-next.39

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 (242) hide show
  1. package/accordion/index.d.ts +1 -0
  2. package/button-group/index.d.ts +4 -6
  3. package/calendar/index.d.ts +4 -0
  4. package/chips/index.d.ts +8 -3
  5. package/dialog/index.d.ts +1 -1
  6. package/fesm2022/acorex-components-accordion.mjs +21 -16
  7. package/fesm2022/acorex-components-accordion.mjs.map +1 -1
  8. package/fesm2022/acorex-components-action-sheet.mjs +12 -12
  9. package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
  10. package/fesm2022/acorex-components-alert.mjs +13 -13
  11. package/fesm2022/acorex-components-alert.mjs.map +1 -1
  12. package/fesm2022/acorex-components-aspect-ratio.mjs +3 -3
  13. package/fesm2022/acorex-components-aspect-ratio.mjs.map +1 -1
  14. package/fesm2022/acorex-components-audio-wave.mjs +10 -11
  15. package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
  16. package/fesm2022/acorex-components-autocomplete.mjs +7 -7
  17. package/fesm2022/acorex-components-autocomplete.mjs.map +1 -1
  18. package/fesm2022/acorex-components-avatar.mjs +12 -12
  19. package/fesm2022/acorex-components-avatar.mjs.map +1 -1
  20. package/fesm2022/acorex-components-badge.mjs +9 -9
  21. package/fesm2022/acorex-components-badge.mjs.map +1 -1
  22. package/fesm2022/acorex-components-bottom-navigation.mjs +11 -11
  23. package/fesm2022/acorex-components-bottom-navigation.mjs.map +1 -1
  24. package/fesm2022/acorex-components-breadcrumbs.mjs +11 -11
  25. package/fesm2022/acorex-components-breadcrumbs.mjs.map +1 -1
  26. package/fesm2022/acorex-components-button-group.mjs +19 -23
  27. package/fesm2022/acorex-components-button-group.mjs.map +1 -1
  28. package/fesm2022/acorex-components-button.mjs +18 -18
  29. package/fesm2022/acorex-components-button.mjs.map +1 -1
  30. package/fesm2022/acorex-components-calendar.mjs +32 -17
  31. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  32. package/fesm2022/acorex-components-check-box.mjs +10 -10
  33. package/fesm2022/acorex-components-check-box.mjs.map +1 -1
  34. package/fesm2022/acorex-components-chips.mjs +14 -12
  35. package/fesm2022/acorex-components-chips.mjs.map +1 -1
  36. package/fesm2022/acorex-components-circular-progress.mjs +10 -12
  37. package/fesm2022/acorex-components-circular-progress.mjs.map +1 -1
  38. package/fesm2022/acorex-components-code-editor.mjs +10 -10
  39. package/fesm2022/acorex-components-code-editor.mjs.map +1 -1
  40. package/fesm2022/acorex-components-collapse.mjs +13 -13
  41. package/fesm2022/acorex-components-collapse.mjs.map +1 -1
  42. package/fesm2022/acorex-components-color-box.mjs +9 -9
  43. package/fesm2022/acorex-components-color-box.mjs.map +1 -1
  44. package/fesm2022/acorex-components-color-palette.mjs +30 -30
  45. package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
  46. package/fesm2022/acorex-components-command.mjs +9 -9
  47. package/fesm2022/acorex-components-command.mjs.map +1 -1
  48. package/fesm2022/acorex-components-comment.mjs +32 -32
  49. package/fesm2022/acorex-components-comment.mjs.map +1 -1
  50. package/fesm2022/acorex-components-conversation.mjs +51 -51
  51. package/fesm2022/acorex-components-conversation.mjs.map +1 -1
  52. package/fesm2022/acorex-components-conversation2.mjs +186 -186
  53. package/fesm2022/acorex-components-conversation2.mjs.map +1 -1
  54. package/fesm2022/acorex-components-cron-job.mjs +46 -46
  55. package/fesm2022/acorex-components-cron-job.mjs.map +1 -1
  56. package/fesm2022/acorex-components-data-list.mjs +3 -3
  57. package/fesm2022/acorex-components-data-list.mjs.map +1 -1
  58. package/fesm2022/acorex-components-data-pager.mjs +37 -34
  59. package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
  60. package/fesm2022/acorex-components-data-table.mjs +43 -43
  61. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  62. package/fesm2022/acorex-components-datetime-box.mjs +9 -9
  63. package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
  64. package/fesm2022/acorex-components-datetime-input.mjs +9 -9
  65. package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
  66. package/fesm2022/acorex-components-datetime-picker.mjs +9 -9
  67. package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
  68. package/fesm2022/acorex-components-decorators.mjs +36 -43
  69. package/fesm2022/acorex-components-decorators.mjs.map +1 -1
  70. package/fesm2022/acorex-components-dialog.mjs +14 -15
  71. package/fesm2022/acorex-components-dialog.mjs.map +1 -1
  72. package/fesm2022/acorex-components-drawer-legacy.mjs +13 -13
  73. package/fesm2022/acorex-components-drawer-legacy.mjs.map +1 -1
  74. package/fesm2022/acorex-components-drawer.mjs +16 -15
  75. package/fesm2022/acorex-components-drawer.mjs.map +1 -1
  76. package/fesm2022/acorex-components-dropdown-button.mjs +9 -9
  77. package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
  78. package/fesm2022/acorex-components-dropdown.mjs +16 -18
  79. package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
  80. package/fesm2022/acorex-components-editor.mjs +11 -11
  81. package/fesm2022/acorex-components-editor.mjs.map +1 -1
  82. package/fesm2022/acorex-components-file-explorer.mjs +32 -32
  83. package/fesm2022/acorex-components-file-explorer.mjs.map +1 -1
  84. package/fesm2022/acorex-components-flow-chart.mjs +16 -16
  85. package/fesm2022/acorex-components-flow-chart.mjs.map +1 -1
  86. package/fesm2022/acorex-components-form.mjs +24 -32
  87. package/fesm2022/acorex-components-form.mjs.map +1 -1
  88. package/fesm2022/acorex-components-grid-layout-builder.mjs +13 -12
  89. package/fesm2022/acorex-components-grid-layout-builder.mjs.map +1 -1
  90. package/fesm2022/acorex-components-image-editor.mjs +47 -46
  91. package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
  92. package/fesm2022/acorex-components-image.mjs +9 -9
  93. package/fesm2022/acorex-components-image.mjs.map +1 -1
  94. package/fesm2022/acorex-components-json-viewer.mjs +8 -8
  95. package/fesm2022/acorex-components-json-viewer.mjs.map +1 -1
  96. package/fesm2022/acorex-components-kanban.mjs +6 -8
  97. package/fesm2022/acorex-components-kanban.mjs.map +1 -1
  98. package/fesm2022/acorex-components-kbd.mjs +7 -7
  99. package/fesm2022/acorex-components-kbd.mjs.map +1 -1
  100. package/fesm2022/acorex-components-label.mjs +9 -9
  101. package/fesm2022/acorex-components-label.mjs.map +1 -1
  102. package/fesm2022/acorex-components-list.mjs +9 -9
  103. package/fesm2022/acorex-components-list.mjs.map +1 -1
  104. package/fesm2022/acorex-components-loading-dialog.mjs +12 -12
  105. package/fesm2022/acorex-components-loading-dialog.mjs.map +1 -1
  106. package/fesm2022/acorex-components-loading.mjs +23 -23
  107. package/fesm2022/acorex-components-loading.mjs.map +1 -1
  108. package/fesm2022/acorex-components-map.mjs +289 -31
  109. package/fesm2022/acorex-components-map.mjs.map +1 -1
  110. package/fesm2022/acorex-components-media-viewer.mjs +41 -41
  111. package/fesm2022/acorex-components-media-viewer.mjs.map +1 -1
  112. package/fesm2022/acorex-components-menu.mjs +21 -21
  113. package/fesm2022/acorex-components-menu.mjs.map +1 -1
  114. package/fesm2022/{acorex-components-modal-acorex-components-modal-BmmAkCKJ.mjs → acorex-components-modal-acorex-components-modal-iYSPzoLn.mjs} +22 -22
  115. package/fesm2022/acorex-components-modal-acorex-components-modal-iYSPzoLn.mjs.map +1 -0
  116. package/fesm2022/acorex-components-modal-modal-content.component-sZWKhYM-.mjs +212 -0
  117. package/fesm2022/acorex-components-modal-modal-content.component-sZWKhYM-.mjs.map +1 -0
  118. package/fesm2022/acorex-components-modal.mjs +1 -1
  119. package/fesm2022/acorex-components-navbar.mjs +9 -9
  120. package/fesm2022/acorex-components-navbar.mjs.map +1 -1
  121. package/fesm2022/acorex-components-notification.mjs +23 -16
  122. package/fesm2022/acorex-components-notification.mjs.map +1 -1
  123. package/fesm2022/acorex-components-number-box-legacy.mjs +9 -9
  124. package/fesm2022/acorex-components-number-box-legacy.mjs.map +1 -1
  125. package/fesm2022/acorex-components-number-box.mjs +15 -14
  126. package/fesm2022/acorex-components-number-box.mjs.map +1 -1
  127. package/fesm2022/acorex-components-otp.mjs +9 -9
  128. package/fesm2022/acorex-components-otp.mjs.map +1 -1
  129. package/fesm2022/acorex-components-page.mjs +10 -10
  130. package/fesm2022/acorex-components-page.mjs.map +1 -1
  131. package/fesm2022/acorex-components-paint.mjs +39 -34
  132. package/fesm2022/acorex-components-paint.mjs.map +1 -1
  133. package/fesm2022/acorex-components-password-box.mjs +12 -12
  134. package/fesm2022/acorex-components-password-box.mjs.map +1 -1
  135. package/fesm2022/acorex-components-pdf-reader.mjs +8 -8
  136. package/fesm2022/acorex-components-pdf-reader.mjs.map +1 -1
  137. package/fesm2022/acorex-components-phone-box.mjs +9 -9
  138. package/fesm2022/acorex-components-phone-box.mjs.map +1 -1
  139. package/fesm2022/acorex-components-picker.mjs +15 -15
  140. package/fesm2022/acorex-components-picker.mjs.map +1 -1
  141. package/fesm2022/acorex-components-popover.mjs +11 -11
  142. package/fesm2022/acorex-components-popover.mjs.map +1 -1
  143. package/fesm2022/acorex-components-popup.mjs +13 -13
  144. package/fesm2022/acorex-components-popup.mjs.map +1 -1
  145. package/fesm2022/acorex-components-progress-bar.mjs +9 -11
  146. package/fesm2022/acorex-components-progress-bar.mjs.map +1 -1
  147. package/fesm2022/acorex-components-qrcode.mjs +7 -7
  148. package/fesm2022/acorex-components-qrcode.mjs.map +1 -1
  149. package/fesm2022/acorex-components-query-builder.mjs +8 -8
  150. package/fesm2022/acorex-components-query-builder.mjs.map +1 -1
  151. package/fesm2022/acorex-components-radio.mjs +7 -7
  152. package/fesm2022/acorex-components-radio.mjs.map +1 -1
  153. package/fesm2022/acorex-components-rail-navigation.mjs +36 -38
  154. package/fesm2022/acorex-components-rail-navigation.mjs.map +1 -1
  155. package/fesm2022/acorex-components-range-slider.mjs +10 -10
  156. package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
  157. package/fesm2022/acorex-components-rate-picker.mjs +35 -20
  158. package/fesm2022/acorex-components-rate-picker.mjs.map +1 -1
  159. package/fesm2022/acorex-components-rest-api-generator.mjs +22 -22
  160. package/fesm2022/acorex-components-rest-api-generator.mjs.map +1 -1
  161. package/fesm2022/acorex-components-result.mjs +8 -8
  162. package/fesm2022/acorex-components-result.mjs.map +1 -1
  163. package/fesm2022/acorex-components-routing-progress.mjs +8 -8
  164. package/fesm2022/acorex-components-routing-progress.mjs.map +1 -1
  165. package/fesm2022/acorex-components-rrule.mjs +9 -9
  166. package/fesm2022/acorex-components-rrule.mjs.map +1 -1
  167. package/fesm2022/acorex-components-scheduler-picker.mjs +56 -56
  168. package/fesm2022/acorex-components-scheduler-picker.mjs.map +1 -1
  169. package/fesm2022/acorex-components-scheduler.mjs +43 -43
  170. package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
  171. package/fesm2022/acorex-components-scss.mjs +4 -4
  172. package/fesm2022/acorex-components-scss.mjs.map +1 -1
  173. package/fesm2022/acorex-components-search-box.mjs +10 -16
  174. package/fesm2022/acorex-components-search-box.mjs.map +1 -1
  175. package/fesm2022/acorex-components-select-box.mjs +9 -11
  176. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  177. package/fesm2022/acorex-components-selection-list-2.mjs +11 -11
  178. package/fesm2022/acorex-components-selection-list-2.mjs.map +1 -1
  179. package/fesm2022/acorex-components-selection-list.mjs +9 -9
  180. package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
  181. package/fesm2022/acorex-components-side-menu.mjs +14 -14
  182. package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
  183. package/fesm2022/acorex-components-skeleton.mjs +8 -8
  184. package/fesm2022/acorex-components-skeleton.mjs.map +1 -1
  185. package/fesm2022/acorex-components-slider.mjs +10 -10
  186. package/fesm2022/acorex-components-slider.mjs.map +1 -1
  187. package/fesm2022/acorex-components-sliding-item.mjs +14 -14
  188. package/fesm2022/acorex-components-sliding-item.mjs.map +1 -1
  189. package/fesm2022/acorex-components-step-wizard.mjs +14 -14
  190. package/fesm2022/acorex-components-step-wizard.mjs.map +1 -1
  191. package/fesm2022/acorex-components-switch.mjs +14 -14
  192. package/fesm2022/acorex-components-switch.mjs.map +1 -1
  193. package/fesm2022/acorex-components-tabs.mjs +15 -15
  194. package/fesm2022/acorex-components-tabs.mjs.map +1 -1
  195. package/fesm2022/acorex-components-tag-box.mjs +9 -9
  196. package/fesm2022/acorex-components-tag-box.mjs.map +1 -1
  197. package/fesm2022/acorex-components-tag.mjs +9 -9
  198. package/fesm2022/acorex-components-tag.mjs.map +1 -1
  199. package/fesm2022/acorex-components-text-area.mjs +9 -9
  200. package/fesm2022/acorex-components-text-area.mjs.map +1 -1
  201. package/fesm2022/acorex-components-text-box.mjs +12 -12
  202. package/fesm2022/acorex-components-text-box.mjs.map +1 -1
  203. package/fesm2022/acorex-components-time-duration.mjs +7 -7
  204. package/fesm2022/acorex-components-time-duration.mjs.map +1 -1
  205. package/fesm2022/acorex-components-time-line.mjs +12 -12
  206. package/fesm2022/acorex-components-time-line.mjs.map +1 -1
  207. package/fesm2022/acorex-components-toast.mjs +14 -14
  208. package/fesm2022/acorex-components-toast.mjs.map +1 -1
  209. package/fesm2022/acorex-components-toolbar.mjs +8 -8
  210. package/fesm2022/acorex-components-toolbar.mjs.map +1 -1
  211. package/fesm2022/acorex-components-tooltip.mjs +11 -11
  212. package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
  213. package/fesm2022/acorex-components-tree-view-legacy.mjs +511 -0
  214. package/fesm2022/acorex-components-tree-view-legacy.mjs.map +1 -0
  215. package/fesm2022/acorex-components-tree-view.mjs +2016 -405
  216. package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
  217. package/fesm2022/acorex-components-uploader.mjs +16 -16
  218. package/fesm2022/acorex-components-uploader.mjs.map +1 -1
  219. package/fesm2022/acorex-components-video-player.mjs +7 -7
  220. package/fesm2022/acorex-components-video-player.mjs.map +1 -1
  221. package/fesm2022/acorex-components-wysiwyg.mjs +42 -42
  222. package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
  223. package/fesm2022/acorex-components.mjs.map +1 -1
  224. package/file-explorer/index.d.ts +6 -6
  225. package/grid-layout-builder/index.d.ts +2 -1
  226. package/loading/index.d.ts +1 -1
  227. package/map/index.d.ts +28 -1
  228. package/notification/index.d.ts +2 -0
  229. package/number-box/index.d.ts +1 -1
  230. package/package.json +6 -6
  231. package/paint/index.d.ts +6 -1
  232. package/rate-picker/index.d.ts +15 -5
  233. package/tree-view/index.d.ts +826 -168
  234. package/tree-view-legacy/README.md +3 -0
  235. package/tree-view-legacy/index.d.ts +184 -0
  236. package/fesm2022/acorex-components-modal-acorex-components-modal-BmmAkCKJ.mjs.map +0 -1
  237. package/fesm2022/acorex-components-modal-modal-content.component-5GqTzNOs.mjs +0 -214
  238. package/fesm2022/acorex-components-modal-modal-content.component-5GqTzNOs.mjs.map +0 -1
  239. package/fesm2022/acorex-components-tree2.mjs +0 -730
  240. package/fesm2022/acorex-components-tree2.mjs.map +0 -1
  241. package/tree2/README.md +0 -3
  242. package/tree2/index.d.ts +0 -346
@@ -1,184 +1,842 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { EventEmitter, TemplateRef } from '@angular/core';
3
- import * as i4 from '@acorex/cdk/common';
4
- import { AXClickEvent, NXComponent, AXExpandToggleIcons, AXValueChangedEvent } from '@acorex/cdk/common';
5
- import { AXPlatform } from '@acorex/core/platform';
6
- import * as i3 from '@angular/common';
7
- import * as i5 from '@acorex/components/decorators';
8
- import * as i6 from '@acorex/components/check-box';
9
- import * as i7 from '@acorex/components/form';
10
- import * as i8 from '@angular/forms';
11
- import * as i9 from '@acorex/components/tooltip';
12
- import * as i10 from '@acorex/components/loading';
2
+ import { TemplateRef } from '@angular/core';
3
+ import { AXEvent, AXHtmlEvent, AXValueChangedEvent } from '@acorex/cdk/common';
4
+ import { AXDropListDroppedEvent } from '@acorex/cdk/drag-drop';
13
5
 
14
- declare class AXTreeItemClickBaseEvent extends AXClickEvent {
15
- nativeElement: any;
6
+ /**
7
+ * TreeView Component - Design Tokens
8
+ *
9
+ * The component supports the following CSS custom properties (design tokens):
10
+ *
11
+ * **Layout & Spacing:**
12
+ * - `--ax-comp-tree-view-indent-size`: Indentation size for each tree level.
13
+ * Default: `12px`
14
+ * - `--ax-comp-tree-view-node-margin`: Vertical margin between nodes.
15
+ * Default: `0.125rem`
16
+ *
17
+ * **Node Styling:**
18
+ * - `--ax-comp-tree-view-node-border-radius`: Border radius for tree nodes.
19
+ * Default: `6px`
20
+ * - `--ax-comp-tree-view-node-hover-bg`: Background color on node hover.
21
+ * Default: `rgba(var(--ax-sys-color-on-lightest-surface), 0.04)`
22
+ * - `--ax-comp-tree-view-node-selected-bg`: Background color for selected nodes.
23
+ * Default: `rgba(var(--ax-sys-color-primary-500), 0.12)`
24
+ *
25
+ * **Tree Lines (with-line look):**
26
+ * - `--ax-comp-tree-view-line-color`: Color for tree structure lines.
27
+ * Default: `rgba(var(--ax-sys-color-on-lightest-surface), 0.15)`
28
+ *
29
+ * **Drag & Drop:**
30
+ * - `--ax-comp-tree-view-drag-preview-opacity`: Opacity of dragged element preview.
31
+ * Default: `0.9`
32
+ * - `--ax-comp-tree-view-drag-placeholder-bg`: Background for drag placeholder.
33
+ * Default: `rgba(var(--ax-sys-color-on-lightest-surface), 0.02)`
34
+ * - `--ax-comp-tree-view-drop-active-bg`: Background when hovering over valid drop zone.
35
+ * Default: `rgba(var(--ax-sys-color-primary-500), 0.08)`
36
+ * - `--ax-comp-tree-view-drop-active-outline`: Outline color for active drop zones.
37
+ * Default: `rgba(var(--ax-sys-color-primary-500), 0.3)`
38
+ *
39
+ * **Dynamic Tokens (set via TypeScript):**
40
+ * - `--ax-tree-view-indent-size`: Dynamically set from `indentSize` input
41
+ * - `--ax-tree-view-line-offset`: Dynamically calculated as `indentSize / 2`
42
+ * - `--ax-tree-view-line-color`: Optional override for line color
43
+ *
44
+ * @example
45
+ * ```css
46
+ * // Customize tree appearance
47
+ * ax-tree-view {
48
+ * --ax-comp-tree-view-indent-size: 16px;
49
+ * --ax-comp-tree-view-node-selected-bg: rgba(var(--ax-sys-color-primary-600), 0.15);
50
+ * --ax-comp-tree-view-line-color: rgba(var(--ax-sys-color-on-lightest-surface), 0.1);
51
+ * --ax-comp-tree-view-node-hover-bg: rgba(var(--ax-sys-color-primary-500), 0.06);
52
+ * }
53
+ * ```
54
+ *
55
+ * @remarks
56
+ * All color tokens use Acorex design system variables (`--ax-sys-color-*`) for automatic
57
+ * light/dark mode support. Colors adapt based on the active theme without additional configuration.
58
+ */
59
+ interface AXTreeViewBeforeDropEvent extends AXEvent {
60
+ movedNode: AXTreeViewNode;
61
+ previousParent?: AXTreeViewNode;
62
+ currentParent?: AXTreeViewNode;
63
+ previousIndex: number;
64
+ currentIndex: number;
65
+ canceled: boolean;
16
66
  }
17
- type AXTreeViewSelectionBehavior = 'autoExpand' | 'cascade' | 'indeterminate';
18
- type AXTreeViewExpandBehavior = 'click' | 'dbClick' | 'defult';
19
- type AXTreeViewOperationMethod = 'expand' | 'active' | 'visible' | 'disabled';
20
- type AXTreeViewLook = 'with-line' | 'defult';
21
- type AXTreeViewSelectionScope = 'all' | 'parent' | 'children';
22
- declare abstract class AXTreeViewBase {
23
- abstract getChildren(item: unknown): unknown[];
24
- abstract hasChildren(item: unknown): boolean;
25
- abstract itemTemplate: any;
26
- abstract disableField(): string;
27
- abstract childrenField(): string;
28
- abstract valueField(): string;
29
- abstract activeField(): string;
30
- abstract hasChildField(): string;
31
- abstract tooltipField(): string;
32
- abstract showEmptyNodeMassage(): boolean;
33
- abstract expandOn(): AXTreeViewExpandBehavior;
34
- abstract focusNodeEnabled(): boolean;
35
- abstract toggleIcons(): {
36
- expanded: string;
37
- collapsed: string;
38
- } | null;
39
- abstract itemsPromise: boolean;
40
- abstract itemsSignal(): unknown[];
41
- abstract fetchData(item: unknown): void;
42
- abstract setNodeLoading(value: unknown, loading: boolean): void;
43
- abstract handleUnActiveNode(items: unknown[]): void;
44
- abstract onCollapsedChanged: EventEmitter<{
45
- component: any;
46
- data: unknown;
47
- nativeElement: any;
48
- }>;
49
- abstract onNodeClick: EventEmitter<{
50
- component: any;
51
- data: unknown;
52
- nativeElement: any;
53
- }>;
54
- abstract onNodedbClick: EventEmitter<{
55
- component: any;
56
- data: unknown;
57
- nativeElement: any;
58
- }>;
67
+ /**
68
+ * Tree view node interface.
69
+ *
70
+ * By default, nodes should have the following structure:
71
+ * ```typescript
72
+ * {
73
+ * id: string; // Unique identifier for the node
74
+ * title: string; // Display text for the node
75
+ * tooltip?: string; // Optional tooltip text
76
+ * icon?: string; // Optional icon class name
77
+ * expanded?: boolean; // Whether the node is expanded
78
+ * selected?: boolean; // Whether the node is selected
79
+ * indeterminate?: boolean; // Whether the checkbox is in indeterminate state
80
+ * disabled?: boolean; // Whether the node is disabled
81
+ * hidden?: boolean; // Whether the node is hidden
82
+ * children?: AXTreeViewNode[]; // Child nodes
83
+ * childrenCount?: number; // Count of children (for lazy loading)
84
+ * data?: unknown; // Optional custom data
85
+ * }
86
+ * ```
87
+ *
88
+ * However, you can use custom field names by providing field name inputs
89
+ * (idField, titleField, etc.) to the component. The component will then
90
+ * use those field names to access node properties.
91
+ */
92
+ interface AXTreeViewNode {
93
+ [key: string]: unknown;
59
94
  }
60
-
61
- declare class AXTreeViewItemComponent extends NXComponent {
62
- constructor();
63
- treeView: AXTreeViewBase;
64
- item: _angular_core.InputSignal<unknown>;
65
- isExpanded: _angular_core.ModelSignal<boolean>;
66
- isActive: _angular_core.ModelSignal<boolean>;
67
- isLoading: _angular_core.InputSignal<boolean>;
68
- executorChanges: _angular_core.InputSignal<AXTreeViewOperationMethod>;
69
- protected platformService: AXPlatform;
70
- protected arrowIcon: _angular_core.Signal<string>;
71
- protected handleArrowNodeClick(): void;
72
- protected handleTextClick(): void;
73
- protected handleTextDbClick(): void;
74
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXTreeViewItemComponent, never>;
75
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXTreeViewItemComponent, "ax-tree-view-item", never, { "item": { "alias": "item"; "required": false; "isSignal": true; }; "isExpanded": { "alias": "isExpanded"; "required": false; "isSignal": true; }; "isActive": { "alias": "isActive"; "required": false; "isSignal": true; }; "isLoading": { "alias": "isLoading"; "required": false; "isSignal": true; }; "executorChanges": { "alias": "executorChanges"; "required": false; "isSignal": true; }; }, { "isExpanded": "isExpandedChange"; "isActive": "isActiveChange"; }, never, ["ax-check-box", "ax-prefix", "ax-text", "ax-suffix", "*"], true, never>;
95
+ interface AXTreeViewNodeToggleEvent extends AXHtmlEvent {
96
+ node: AXTreeViewNode;
97
+ }
98
+ interface AXTreeViewNodeSelectEvent extends AXHtmlEvent {
99
+ node: AXTreeViewNode;
100
+ }
101
+ interface AXTreeViewSelectionChangeEvent extends AXEvent {
102
+ selectedNodes: AXTreeViewNode[];
103
+ }
104
+ interface AXTreeViewDropEvent extends AXEvent {
105
+ node: AXTreeViewNode;
106
+ previousParent?: AXTreeViewNode;
107
+ currentParent?: AXTreeViewNode;
108
+ previousIndex: number;
109
+ currentIndex: number;
110
+ }
111
+ interface AXTreeViewItemTemplateContext {
112
+ $implicit: AXTreeViewNode;
113
+ node: AXTreeViewNode;
114
+ level: number;
115
+ expanded: boolean;
116
+ childrenCount: number;
117
+ loading: boolean;
118
+ }
119
+ type AXTreeViewViewLook = 'default' | 'card' | 'with-line';
120
+ type AXTreeViewDragMode = 'none' | 'handler' | 'item';
121
+ type AXTreeViewDragOperationType = 'order-only' | 'move' | 'both';
122
+ type AXTreeViewSelectMode = 'none' | 'single' | 'multiple';
123
+ /**
124
+ * Selection behavior mode for tree nodes.
125
+ *
126
+ * Controls how node selection behaves in the tree:
127
+ * - **'all'**: No restrictions or special behavior. Any node can be selected independently.
128
+ * - **'intermediate'**: When children are selected, parent nodes show indeterminate state.
129
+ * If all children are selected, parent becomes selected; if some are selected, parent shows indeterminate.
130
+ * - **'leaf'**: Only leaf nodes (nodes with no children) can be selected. Parent nodes cannot be selected.
131
+ * - **'nested'**: Selecting a parent node automatically selects all its children (cascading selection).
132
+ * - **'intermediate-nested'**: Combines both behaviors - selecting parent selects children AND children selection affects parent state.
133
+ *
134
+ * @example
135
+ * ```typescript
136
+ * // Allow any node to be selected
137
+ * <ax-tree-view [selectionBehavior]="'all'" />
138
+ *
139
+ * // Only leaf nodes can be selected
140
+ * <ax-tree-view [selectionBehavior]="'leaf'" />
141
+ *
142
+ * // Parent shows indeterminate when children are selected
143
+ * <ax-tree-view [selectionBehavior]="'intermediate'" />
144
+ *
145
+ * // Selecting parent selects all children
146
+ * <ax-tree-view [selectionBehavior]="'nested'" />
147
+ *
148
+ * // Both: selecting parent selects children AND children affect parent state
149
+ * <ax-tree-view [selectionBehavior]="'intermediate-nested'" />
150
+ * ```
151
+ */
152
+ type AXTreeViewSelectionBehavior = 'all' | 'intermediate' | 'leaf' | 'nested' | 'intermediate-nested';
153
+ /**
154
+ * Function type for lazy loading tree nodes
155
+ */
156
+ type AXTreeViewCallback = (id?: string) => AXTreeViewNode[] | Promise<AXTreeViewNode[]>;
157
+ /**
158
+ * Data source type - can be static array or lazy loading function
159
+ */
160
+ type AXTreeViewDataSource = AXTreeViewNode[] | AXTreeViewCallback;
161
+ /**
162
+ * Flat node representation for keyboard navigation
163
+ */
164
+ interface AXTreeViewFlatNode {
165
+ node: AXTreeViewNode;
166
+ level: number;
167
+ parent?: AXTreeViewNode;
168
+ }
169
+ /**
170
+ * Children selection state for parent node calculation
171
+ */
172
+ interface AXTreeViewChildrenSelectionState {
173
+ allSelected: boolean;
174
+ someSelected: boolean;
76
175
  }
77
176
 
78
- declare class AXTreeViewComponent extends NXComponent {
177
+ declare class AXTreeViewComponent {
79
178
  #private;
80
- /** @ignore */
81
- private get __hostClass();
82
- itemsSignal: _angular_core.WritableSignal<unknown[]>;
83
- itemsPromise: any;
84
- items: _angular_core.InputSignal<unknown[] | ((selectedItemId?: string | number) => unknown[] | Promise<unknown[]>)>;
85
- protected get resolvedItems(): unknown[];
86
- showCheckbox: _angular_core.InputSignal<boolean>;
87
- hasCheckboxField: _angular_core.InputSignal<string>;
88
- selectionMode: _angular_core.InputSignal<"single" | "multiple">;
89
- selectionBehavior: _angular_core.InputSignal<AXTreeViewSelectionBehavior>;
90
- selectionScope: _angular_core.InputSignal<AXTreeViewSelectionScope>;
91
- focusNodeEnabled: _angular_core.InputSignal<boolean>;
92
- valueField: _angular_core.InputSignal<string>;
93
- textField: _angular_core.InputSignal<string>;
94
- visibleField: _angular_core.InputSignal<string>;
95
- disableField: _angular_core.InputSignal<string>;
96
- hasChildField: _angular_core.InputSignal<string>;
97
- selectedField: _angular_core.InputSignal<string>;
98
- expandedField: _angular_core.InputSignal<string>;
99
- tooltipField: _angular_core.InputSignal<string>;
100
- childrenField: _angular_core.InputSignal<string>;
101
- activeField: _angular_core.InputSignal<string>;
102
- indeterminateField: _angular_core.InputSignal<string>;
103
- parentField: _angular_core.InputSignal<string>;
104
- iconField: _angular_core.InputSignal<string>;
105
- toggleIcons: _angular_core.InputSignal<AXExpandToggleIcons>;
106
- look: _angular_core.InputSignal<AXTreeViewLook>;
107
- showEmptyNodeMassage: _angular_core.InputSignal<boolean>;
108
- onSelectionChanged: _angular_core.OutputEmitterRef<AXTreeItemClickBaseEvent>;
109
- onItemSelectedChanged: _angular_core.OutputEmitterRef<AXTreeItemClickBaseEvent>;
110
- onNodeClick: _angular_core.OutputEmitterRef<AXTreeItemClickBaseEvent>;
111
- onCollapsedChanged: _angular_core.OutputEmitterRef<AXTreeItemClickBaseEvent>;
112
- onNodedbClick: _angular_core.OutputEmitterRef<AXTreeItemClickBaseEvent>;
113
- executorChanges: _angular_core.WritableSignal<AXTreeViewOperationMethod>;
114
- itemTemplate?: TemplateRef<unknown>;
115
- emptyTemplate?: TemplateRef<unknown>;
116
- protected platformService: AXPlatform;
117
- expandOn: _angular_core.InputSignal<AXTreeViewExpandBehavior>;
118
- protected handleNodeSelectionClick(event: AXValueChangedEvent, item: unknown): void;
119
- /**
120
- *
121
- * auto expand
122
- *
123
- */
124
- private toggleExpand;
125
- /**
126
- *
127
- * expand and change value parent change
128
- *
129
- */
130
- private expandAndToggleSelection;
131
- private applySelectionToChildren;
132
- /**
133
- *
134
- * indeterminate logic
135
- *
136
- */
137
- private updateParentSelection;
138
- private findParent;
139
- /**
140
- *
141
- * find node selected true for emit Selections
142
- *
143
- */
144
- private findSelectedNodes;
145
- /**
146
- *
147
- * find for emit Selections single mode
148
- *
149
- */
150
- private handleUnSelectNode;
151
- /**
152
- *
153
- * lazy load logic
154
- *
155
- */
156
- fetchData(selectedNode?: unknown): void;
157
- private findNode;
158
- /**
159
- *
160
- * emit when arrow click
161
- *
162
- */
163
- protected handleNodeExpandClick(node: AXTreeItemClickBaseEvent): void;
164
- handleUnActiveNode(unActiveSource: unknown[]): void;
165
- private loadingState;
166
- protected isNodeLoading(nodeId: string | number): boolean;
167
- setNodeLoading(nodeId: string | number, isLoading: boolean): void;
168
- executeOnTreeNode(node: unknown, operation: AXTreeViewOperationMethod, value: boolean): void;
179
+ private readonly treeService;
180
+ private readonly platformService;
181
+ private readonly destroyRef;
182
+ /** Tree data source - can be static array or lazy loading function */
183
+ readonly datasource: _angular_core.ModelSignal<AXTreeViewDataSource>;
184
+ /** Selection mode: 'single' (click to select) or 'multiple' (checkbox selection) */
185
+ readonly selectMode: _angular_core.InputSignal<AXTreeViewSelectMode>;
186
+ /** Whether to show checkboxes for selection (only applies to multiple mode) */
187
+ readonly showCheckbox: _angular_core.InputSignal<boolean>;
188
+ /** Selection behavior: 'all' (select anything, no special behavior), 'intermediate' (parent indeterminate state when children selected), 'leaf' (only leaf nodes selectable), 'nested' (selecting parent selects all children) */
189
+ readonly selectionBehavior: _angular_core.InputSignal<AXTreeViewSelectionBehavior>;
190
+ /** When true, clicking on a node toggles its selection (works for both single and multiple modes) */
191
+ readonly checkOnClick: _angular_core.InputSignal<boolean>;
192
+ /** Drag and drop mode: 'none' (disabled), 'handler' (drag handle), 'item' (entire item) */
193
+ readonly dragMode: _angular_core.InputSignal<AXTreeViewDragMode>;
194
+ /** Drag operation type: 'order-only' (reorder only), 'move' (move between parents), 'both' (allow both) */
195
+ readonly dragOperationType: _angular_core.InputSignal<AXTreeViewDragOperationType>;
196
+ /** Whether to show icons */
197
+ readonly showIcons: _angular_core.InputSignal<boolean>;
198
+ /** Whether to show children count badge */
199
+ readonly showChildrenBadge: _angular_core.InputSignal<boolean>;
200
+ /** Custom icon for expanded nodes */
201
+ readonly expandedIcon: _angular_core.InputSignal<string>;
202
+ /** Custom icon for collapsed nodes */
203
+ readonly collapsedIcon: _angular_core.InputSignal<string>;
204
+ /** Indent size in pixels for each level */
205
+ readonly indentSize: _angular_core.InputSignal<number>;
206
+ /** Visual style variant */
207
+ readonly look: _angular_core.InputSignal<AXTreeViewViewLook>;
208
+ /** Custom template for tree items */
209
+ readonly nodeTemplate: _angular_core.InputSignal<TemplateRef<AXTreeViewItemTemplateContext>>;
210
+ /** Field name for node ID (default: 'id') */
211
+ readonly idField: _angular_core.InputSignal<string>;
212
+ /** Field name for node title (default: 'title') */
213
+ readonly titleField: _angular_core.InputSignal<string>;
214
+ /** Field name for node tooltip (default: 'tooltip') */
215
+ readonly tooltipField: _angular_core.InputSignal<string>;
216
+ /** Field name for node icon (default: 'icon') */
217
+ readonly iconField: _angular_core.InputSignal<string>;
218
+ /** Field name for expanded state (default: 'expanded') */
219
+ readonly expandedField: _angular_core.InputSignal<string>;
220
+ /** Field name for selected state (default: 'selected') */
221
+ readonly selectedField: _angular_core.InputSignal<string>;
222
+ /** Field name for indeterminate state (default: 'indeterminate') */
223
+ readonly indeterminateField: _angular_core.InputSignal<string>;
224
+ /** Field name for disabled state (default: 'disabled') */
225
+ readonly disabledField: _angular_core.InputSignal<string>;
226
+ /** Field name for hidden state (default: 'hidden') */
227
+ readonly hiddenField: _angular_core.InputSignal<string>;
228
+ /** Field name for children array (default: 'children') */
229
+ readonly childrenField: _angular_core.InputSignal<string>;
230
+ /** Field name for children count (default: 'childrenCount') */
231
+ readonly childrenCountField: _angular_core.InputSignal<string>;
232
+ /** Field name for custom data (default: 'data') */
233
+ readonly dataField: _angular_core.InputSignal<string>;
234
+ /** Emitted before a drop operation - set canceled to true to prevent drop */
235
+ readonly onBeforeDrop: _angular_core.OutputEmitterRef<AXTreeViewBeforeDropEvent>;
236
+ /** Emitted when a node is toggled (expanded/collapsed) */
237
+ readonly onNodeToggle: _angular_core.OutputEmitterRef<AXTreeViewNodeToggleEvent>;
238
+ /** Emitted when a node is selected/deselected */
239
+ readonly onNodeSelect: _angular_core.OutputEmitterRef<AXTreeViewNodeSelectEvent>;
240
+ /** Emitted when selection changes - returns all currently selected nodes */
241
+ readonly onSelectionChange: _angular_core.OutputEmitterRef<AXTreeViewSelectionChangeEvent>;
242
+ /** Emitted when nodes are reordered within the same parent */
243
+ readonly onOrderChange: _angular_core.OutputEmitterRef<AXTreeViewDropEvent>;
244
+ /** Emitted when a node is moved to a different parent */
245
+ readonly onMoveChange: _angular_core.OutputEmitterRef<AXTreeViewDropEvent>;
246
+ /** Emitted for any item change (order or move) */
247
+ readonly onItemsChange: _angular_core.OutputEmitterRef<AXTreeViewDropEvent>;
248
+ /** Internal signal for tree nodes */
249
+ protected readonly nodes: _angular_core.WritableSignal<AXTreeViewNode[]>;
250
+ /** Internal signal for tracking loading state */
251
+ protected readonly loadingNodes: _angular_core.WritableSignal<Set<string>>;
252
+ /** Currently focused node ID for keyboard navigation */
253
+ protected readonly focusedNodeId: _angular_core.WritableSignal<string>;
254
+ /** RTL detection signal */
255
+ protected readonly isRtl: _angular_core.WritableSignal<boolean>;
256
+ /** Computed chevron icons that flip for RTL */
257
+ protected readonly directionExpandedIcon: _angular_core.Signal<string>;
258
+ protected readonly directionCollapsedIcon: _angular_core.Signal<string>;
259
+ /** Flag to prevent infinite loops when syncing datasource */
260
+ private isUpdatingFromDatasource;
261
+ /** Computed to check if datasource is a function */
262
+ private readonly isLazyDataSource;
263
+ /** Computed: Returns true when selection is restricted to leaf nodes only */
264
+ protected readonly isLeafOnlyMode: _angular_core.Signal<boolean>;
265
+ /** Computed: Returns true when selecting a parent automatically selects all its children */
266
+ protected readonly cascadesToChildren: _angular_core.Signal<boolean>;
267
+ /** Computed: Returns true when parent nodes show indeterminate state based on children selection */
268
+ protected readonly hasIntermediateState: _angular_core.Signal<boolean>;
269
+ /**
270
+ * Get a property value from a node using the configured field name
271
+ */
272
+ protected getNodeProp<T = unknown>(node: AXTreeViewNode, fieldName: string, defaultValue?: T): T;
273
+ /**
274
+ * Set a property value on a node using the configured field name
275
+ */
276
+ protected setNodeProp(node: AXTreeViewNode, fieldName: string, value: unknown): void;
277
+ /**
278
+ * Get node ID
279
+ */
280
+ protected getNodeId(node: AXTreeViewNode): string;
281
+ /**
282
+ * Get node title
283
+ */
284
+ protected getNodeTitle(node: AXTreeViewNode): string;
285
+ /**
286
+ * Get node tooltip
287
+ */
288
+ protected getNodeTooltip(node: AXTreeViewNode): string | undefined;
289
+ /**
290
+ * Get node icon
291
+ */
292
+ protected getNodeIcon(node: AXTreeViewNode): string | undefined;
293
+ /**
294
+ * Get node expanded state
295
+ */
296
+ protected getNodeExpanded(node: AXTreeViewNode): boolean;
297
+ /**
298
+ * Set node expanded state
299
+ */
300
+ protected setNodeExpanded(node: AXTreeViewNode, value: boolean): void;
301
+ /**
302
+ * Get node selected state
303
+ */
304
+ protected getNodeSelected(node: AXTreeViewNode): boolean;
305
+ /**
306
+ * Set node selected state
307
+ */
308
+ protected setNodeSelected(node: AXTreeViewNode, value: boolean): void;
309
+ /**
310
+ * Get node indeterminate state
311
+ */
312
+ protected getNodeIndeterminate(node: AXTreeViewNode): boolean;
313
+ /**
314
+ * Set node indeterminate state
315
+ */
316
+ protected setNodeIndeterminate(node: AXTreeViewNode, value: boolean): void;
317
+ /**
318
+ * Get node disabled state
319
+ */
320
+ protected getNodeDisabled(node: AXTreeViewNode): boolean;
321
+ /**
322
+ * Get node hidden state
323
+ */
324
+ protected getNodeHidden(node: AXTreeViewNode): boolean;
325
+ /**
326
+ * Get node children array
327
+ */
328
+ protected getNodeChildren(node: AXTreeViewNode): AXTreeViewNode[] | undefined;
329
+ /**
330
+ * Set node children array
331
+ */
332
+ protected setNodeChildren(node: AXTreeViewNode, value: AXTreeViewNode[] | undefined): void;
333
+ /**
334
+ * Get node children count
335
+ */
336
+ protected getNodeChildrenCount(node: AXTreeViewNode): number | undefined;
337
+ /**
338
+ * Set node children count
339
+ */
340
+ protected setNodeChildrenCount(node: AXTreeViewNode, value: number | undefined): void;
341
+ /**
342
+ * Expand all nodes in the tree (with lazy loading support)
343
+ */
344
+ expandAll(): Promise<void>;
345
+ /**
346
+ * Collapse all nodes in the tree
347
+ */
348
+ collapseAll(): void;
349
+ /**
350
+ * Get count of selected nodes
351
+ */
352
+ getSelectedCount(): number;
353
+ /**
354
+ * Check if any nodes are selected
355
+ */
356
+ hasSelection(): boolean;
357
+ /**
358
+ * Get all selected nodes
359
+ */
360
+ getSelectedNodes(): AXTreeViewNode[];
361
+ /**
362
+ * Delete selected nodes from the tree
363
+ */
364
+ deleteSelected(): void;
365
+ /**
366
+ * Select all nodes in the tree
367
+ */
368
+ selectAll(): void;
369
+ /**
370
+ * Deselect all nodes in the tree
371
+ */
372
+ deselectAll(): void;
373
+ /**
374
+ * Find a node by ID in the tree
375
+ */
376
+ findNode(id: string): AXTreeViewNode | null;
377
+ /**
378
+ * Refresh the tree to trigger change detection
379
+ */
169
380
  refresh(): void;
170
- setNodeExpandAndChildren(valueFields: (number | string)[], value: boolean): Promise<void>;
171
- private findNodesByValueField;
172
- private expandNodeAndAllChildren;
381
+ /**
382
+ * Check if a node is currently loading
383
+ */
384
+ isNodeLoading(nodeId: string): boolean;
385
+ /**
386
+ * Get loading state for a node (internal state)
387
+ */
388
+ getNodeLoading(node: AXTreeViewNode): boolean;
389
+ /**
390
+ * Edit/update a node's properties
391
+ * @param nodeId - The ID of the node to edit
392
+ * @param updates - Partial node object with properties to update
393
+ * @returns true if node was found and updated, false otherwise
394
+ */
395
+ editNode(nodeId: string, updates: Partial<AXTreeViewNode>): boolean;
396
+ /**
397
+ * Add a child node to a parent node
398
+ * @param parentId - The ID of the parent node
399
+ * @param childNode - The child node to add
400
+ * @param index - Optional index to insert at (default: append to end)
401
+ * @returns true if parent was found and child was added, false otherwise
402
+ */
403
+ addChild(parentId: string, childNode: AXTreeViewNode, index?: number): boolean;
404
+ /**
405
+ * Remove a node from the tree
406
+ * @param nodeId - The ID of the node to remove
407
+ * @returns The removed node if found, null otherwise
408
+ */
409
+ removeNode(nodeId: string): AXTreeViewNode | null;
410
+ /**
411
+ * Expand a specific node
412
+ * @param nodeId - The ID of the node to expand
413
+ * @returns Promise that resolves when expansion is complete (if lazy loading)
414
+ */
415
+ expandNode(nodeId: string): Promise<void>;
416
+ /**
417
+ * Collapse a specific node
418
+ * @param nodeId - The ID of the node to collapse
419
+ */
420
+ collapseNode(nodeId: string): void;
421
+ /**
422
+ * Toggle expansion state of a specific node
423
+ * @param nodeId - The ID of the node to toggle
424
+ * @returns Promise that resolves when toggle is complete (if lazy loading)
425
+ */
426
+ toggleNodeExpansion(nodeId: string): Promise<void>;
427
+ /**
428
+ * Programmatically select a node
429
+ * @param nodeId - The ID of the node to select
430
+ * @returns true if node was found and selected, false otherwise
431
+ */
432
+ selectNode(nodeId: string): boolean;
433
+ /**
434
+ * Programmatically deselect a node
435
+ * @param nodeId - The ID of the node to deselect
436
+ * @returns true if node was found and deselected, false otherwise
437
+ */
438
+ deselectNode(nodeId: string): boolean;
439
+ /**
440
+ * Get parent node of a given node
441
+ * @param nodeId - The ID of the node
442
+ * @returns The parent node if found, null otherwise
443
+ */
444
+ getParent(nodeId: string): AXTreeViewNode | null;
445
+ /**
446
+ * Get children of a node
447
+ * @param nodeId - The ID of the parent node
448
+ * @returns Array of child nodes, or null if node not found
449
+ */
450
+ getChildren(nodeId: string): AXTreeViewNode[] | null;
451
+ /**
452
+ * Get all root nodes
453
+ * @returns Array of root nodes
454
+ */
455
+ getRootNodes(): AXTreeViewNode[];
456
+ /**
457
+ * Get all nodes in a flat array
458
+ * @returns Array of all nodes in the tree
459
+ */
460
+ getAllNodes(): AXTreeViewNode[];
461
+ /**
462
+ * Get the path to a node (array of parent IDs from root to node)
463
+ * @param nodeId - The ID of the node
464
+ * @returns Array of node IDs representing the path, or empty array if node not found
465
+ */
466
+ getNodePath(nodeId: string): string[];
467
+ /**
468
+ * Get the level/depth of a node (0 = root level)
469
+ * @param nodeId - The ID of the node
470
+ * @returns The level of the node, or -1 if node not found
471
+ */
472
+ getNodeLevel(nodeId: string): number;
473
+ /**
474
+ * Programmatically move a node to a new parent
475
+ * @param nodeId - The ID of the node to move
476
+ * @param newParentId - The ID of the new parent (undefined for root level)
477
+ * @param index - Optional index to insert at (default: append to end)
478
+ * @returns true if move was successful, false otherwise
479
+ */
480
+ moveNode(nodeId: string, newParentId?: string, index?: number): boolean;
481
+ /**
482
+ * Clone a node (creates a deep copy)
483
+ * @param nodeId - The ID of the node to clone
484
+ * @returns The cloned node, or null if node not found
485
+ */
486
+ cloneNode(nodeId: string): AXTreeViewNode | null;
487
+ /**
488
+ * Focus a specific node by ID
489
+ * @param nodeId - The ID of the node to focus
490
+ * @returns true if node was found and focused, false otherwise
491
+ */
492
+ focusNode(nodeId: string): boolean;
493
+ /**
494
+ * Get all expanded nodes
495
+ * @returns Array of expanded nodes
496
+ */
497
+ getExpandedNodes(): AXTreeViewNode[];
498
+ /**
499
+ * Get all collapsed nodes that have children
500
+ * @returns Array of collapsed nodes with children
501
+ */
502
+ getCollapsedNodes(): AXTreeViewNode[];
503
+ /**
504
+ * Check if a node is expanded
505
+ * @param nodeId - The ID of the node
506
+ * @returns true if node is expanded, false otherwise
507
+ */
508
+ isNodeExpanded(nodeId: string): boolean;
509
+ /**
510
+ * Check if a node is selected
511
+ * @param nodeId - The ID of the node
512
+ * @returns true if node is selected, false otherwise
513
+ */
514
+ isNodeSelected(nodeId: string): boolean;
515
+ /**
516
+ * Check if a node has children
517
+ * @param nodeId - The ID of the node
518
+ * @returns true if node has children, false otherwise
519
+ */
520
+ hasChildren(nodeId: string): boolean;
521
+ /**
522
+ * Get template context for a node
523
+ */
524
+ getTemplateContext(node: AXTreeViewNode, level?: number): AXTreeViewItemTemplateContext;
525
+ /**
526
+ * Calculate padding-inline for a node based on its level
527
+ */
528
+ getNodePaddingInline(level: number): number;
529
+ /**
530
+ * Check if node should show expand toggle
531
+ */
532
+ shouldShowExpandToggle(node: AXTreeViewNode): boolean;
533
+ /**
534
+ * Check if checkboxes should be shown (only for multiple mode)
535
+ */
536
+ shouldShowCheckbox(): boolean;
537
+ /**
538
+ * Check if a node is a leaf (has no children)
539
+ * A node is a leaf if it has no loaded children AND no childrenCount (or childrenCount is 0)
540
+ */
541
+ isLeafNode(node: AXTreeViewNode): boolean;
542
+ /**
543
+ * Check if a node can be selected (considering selectMode and isLeafOnlyMode)
544
+ */
545
+ canSelectNode(node: AXTreeViewNode): boolean;
546
+ /**
547
+ * Check if checkbox should be shown for a specific node
548
+ */
549
+ shouldShowCheckboxForNode(node: AXTreeViewNode): boolean;
550
+ /**
551
+ * Generate unique list ID for each node
552
+ */
553
+ getListId(node?: AXTreeViewNode): string;
554
+ /**
555
+ * Check if a node is currently focused
556
+ */
557
+ isNodeFocused(nodeId: string): boolean;
558
+ /**
559
+ * Get ARIA level for a node
560
+ */
561
+ getNodeAriaLevel(level: number): number;
562
+ /**
563
+ * Get ARIA expanded state for a node
564
+ */
565
+ getNodeAriaExpanded(node: AXTreeViewNode): string | null;
566
+ /**
567
+ * Get ARIA selected state for a node
568
+ */
569
+ getNodeAriaSelected(node: AXTreeViewNode): string | null;
570
+ /**
571
+ * Emit selection change event with all selected nodes
572
+ */
573
+ private emitSelectionChange;
574
+ /**
575
+ * Handle node click - for single selection mode or multiple mode with checkOnClick enabled
576
+ */
577
+ onNodeClick(node: AXTreeViewNode, event: Event): void;
578
+ /**
579
+ * Toggle node expansion state with lazy loading support
580
+ */
581
+ toggleNode(node: AXTreeViewNode, event: Event): Promise<void>;
582
+ /**
583
+ * Toggle node selection state with indeterminate support (for multiple mode)
584
+ */
585
+ toggleSelection(node: AXTreeViewNode, event: AXValueChangedEvent): void;
586
+ /**
587
+ * Handle drop events for tree nodes
588
+ */
589
+ onDrop(event: AXDropListDroppedEvent, parentNode?: AXTreeViewNode): void;
590
+ /**
591
+ * Handle drop events when dropping directly onto a node (to make it a child)
592
+ */
593
+ onDropOntoNode(event: AXDropListDroppedEvent, targetNode: AXTreeViewNode): void;
594
+ /**
595
+ * Handle node focus event
596
+ */
597
+ onNodeFocus(nodeId: string): void;
598
+ /**
599
+ * Handle tree container focus - focus first node if none is focused
600
+ */
601
+ onTreeFocus(event: FocusEvent): void;
602
+ /**
603
+ * Handle tree container blur
604
+ */
605
+ onTreeBlur(event: FocusEvent): void;
606
+ /**
607
+ * Handle keyboard navigation
608
+ */
609
+ handleKeyDown(event: KeyboardEvent): void;
610
+ /**
611
+ * Load root items when datasource is a function
612
+ */
613
+ private loadRootItems;
614
+ /**
615
+ * Load children for a node using lazy loading
616
+ */
617
+ private loadNodeChildren;
618
+ /**
619
+ * Internal method to refresh nodes signal and sync back to datasource if it's an array
620
+ * Creates new array references for all nested children to ensure reactivity
621
+ */
622
+ private refreshNodes;
623
+ /**
624
+ * Recursively ensure all children arrays have new references to trigger change detection
625
+ * Mutates the tree structure by replacing children arrays with new array references
626
+ */
627
+ private ensureNewArrayReferences;
628
+ /**
629
+ * Handle single selection mode
630
+ */
631
+ private handleSingleSelection;
632
+ /**
633
+ * Handle multiple selection mode with checkOnClick
634
+ */
635
+ private handleMultipleSelection;
636
+ /**
637
+ * Get array reference by drop list ID
638
+ */
639
+ private getArrayByListId;
640
+ /**
641
+ * Find parent node by list ID
642
+ */
643
+ private findParentByListId;
644
+ /**
645
+ * Check if move operation is allowed based on dragOperationType
646
+ */
647
+ private canMoveToParent;
648
+ /**
649
+ * Check if reorder operation is allowed based on dragOperationType
650
+ */
651
+ private canReorder;
652
+ /**
653
+ * Handle reordering within the same list */
654
+ private handleReorder;
655
+ /**
656
+ * Handle moving between different lists
657
+ */
658
+ private handleMove;
659
+ /**
660
+ * Emit beforeDrop event and return whether to continue
661
+ */
662
+ private emitBeforeDropEvent;
663
+ /**
664
+ * Emit drop events based on operation type
665
+ */
666
+ private emitDropEvents;
667
+ /**
668
+ * Get the currently focused node
669
+ */
670
+ private getFocusedNode;
671
+ /**
672
+ * Set focus to a node by ID
673
+ */
674
+ private focusNodeById;
675
+ /**
676
+ * Handle keyboard navigation keys
677
+ */
678
+ private handleNavigationKey;
679
+ /**
680
+ * Handle Space key selection
681
+ */
682
+ private handleSpaceKeySelection;
683
+ /**
684
+ * Handle Enter key selection
685
+ */
686
+ private handleEnterKeySelection;
687
+ /**
688
+ * Handle Ctrl/Cmd + Enter key selection
689
+ */
690
+ private handleCtrlEnterSelection;
691
+ /**
692
+ * Type guard to check if value is an Event
693
+ */
694
+ private isEvent;
695
+ /**
696
+ * Handle errors consistently
697
+ */
698
+ private handleError;
173
699
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXTreeViewComponent, never>;
174
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXTreeViewComponent, "ax-tree-view", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "showCheckbox": { "alias": "showCheckbox"; "required": false; "isSignal": true; }; "hasCheckboxField": { "alias": "hasCheckboxField"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "selectionBehavior": { "alias": "selectionBehavior"; "required": false; "isSignal": true; }; "selectionScope": { "alias": "selectionScope"; "required": false; "isSignal": true; }; "focusNodeEnabled": { "alias": "focusNodeEnabled"; "required": false; "isSignal": true; }; "valueField": { "alias": "valueField"; "required": false; "isSignal": true; }; "textField": { "alias": "textField"; "required": false; "isSignal": true; }; "visibleField": { "alias": "visibleField"; "required": false; "isSignal": true; }; "disableField": { "alias": "disableField"; "required": false; "isSignal": true; }; "hasChildField": { "alias": "hasChildField"; "required": false; "isSignal": true; }; "selectedField": { "alias": "selectedField"; "required": false; "isSignal": true; }; "expandedField": { "alias": "expandedField"; "required": false; "isSignal": true; }; "tooltipField": { "alias": "tooltipField"; "required": false; "isSignal": true; }; "childrenField": { "alias": "childrenField"; "required": false; "isSignal": true; }; "activeField": { "alias": "activeField"; "required": false; "isSignal": true; }; "indeterminateField": { "alias": "indeterminateField"; "required": false; "isSignal": true; }; "parentField": { "alias": "parentField"; "required": false; "isSignal": true; }; "iconField": { "alias": "iconField"; "required": false; "isSignal": true; }; "toggleIcons": { "alias": "toggleIcons"; "required": false; "isSignal": true; }; "look": { "alias": "look"; "required": false; "isSignal": true; }; "showEmptyNodeMassage": { "alias": "showEmptyNodeMassage"; "required": false; "isSignal": true; }; "itemTemplate": { "alias": "itemTemplate"; "required": false; }; "emptyTemplate": { "alias": "emptyTemplate"; "required": false; }; "expandOn": { "alias": "expandOn"; "required": false; "isSignal": true; }; }, { "onSelectionChanged": "onSelectionChanged"; "onItemSelectedChanged": "onItemSelectedChanged"; "onNodeClick": "onNodeClick"; "onCollapsedChanged": "onCollapsedChanged"; "onNodedbClick": "onNodedbClick"; }, never, never, true, never>;
700
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXTreeViewComponent, "ax-tree-view", never, { "datasource": { "alias": "datasource"; "required": true; "isSignal": true; }; "selectMode": { "alias": "selectMode"; "required": false; "isSignal": true; }; "showCheckbox": { "alias": "showCheckbox"; "required": false; "isSignal": true; }; "selectionBehavior": { "alias": "selectionBehavior"; "required": false; "isSignal": true; }; "checkOnClick": { "alias": "checkOnClick"; "required": false; "isSignal": true; }; "dragMode": { "alias": "dragMode"; "required": false; "isSignal": true; }; "dragOperationType": { "alias": "dragOperationType"; "required": false; "isSignal": true; }; "showIcons": { "alias": "showIcons"; "required": false; "isSignal": true; }; "showChildrenBadge": { "alias": "showChildrenBadge"; "required": false; "isSignal": true; }; "expandedIcon": { "alias": "expandedIcon"; "required": false; "isSignal": true; }; "collapsedIcon": { "alias": "collapsedIcon"; "required": false; "isSignal": true; }; "indentSize": { "alias": "indentSize"; "required": false; "isSignal": true; }; "look": { "alias": "look"; "required": false; "isSignal": true; }; "nodeTemplate": { "alias": "nodeTemplate"; "required": false; "isSignal": true; }; "idField": { "alias": "idField"; "required": false; "isSignal": true; }; "titleField": { "alias": "titleField"; "required": false; "isSignal": true; }; "tooltipField": { "alias": "tooltipField"; "required": false; "isSignal": true; }; "iconField": { "alias": "iconField"; "required": false; "isSignal": true; }; "expandedField": { "alias": "expandedField"; "required": false; "isSignal": true; }; "selectedField": { "alias": "selectedField"; "required": false; "isSignal": true; }; "indeterminateField": { "alias": "indeterminateField"; "required": false; "isSignal": true; }; "disabledField": { "alias": "disabledField"; "required": false; "isSignal": true; }; "hiddenField": { "alias": "hiddenField"; "required": false; "isSignal": true; }; "childrenField": { "alias": "childrenField"; "required": false; "isSignal": true; }; "childrenCountField": { "alias": "childrenCountField"; "required": false; "isSignal": true; }; "dataField": { "alias": "dataField"; "required": false; "isSignal": true; }; }, { "datasource": "datasourceChange"; "onBeforeDrop": "onBeforeDrop"; "onNodeToggle": "onNodeToggle"; "onNodeSelect": "onNodeSelect"; "onSelectionChange": "onSelectionChange"; "onOrderChange": "onOrderChange"; "onMoveChange": "onMoveChange"; "onItemsChange": "onItemsChange"; }, never, never, true, never>;
175
701
  }
176
702
 
177
703
  declare class AXTreeViewModule {
178
704
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXTreeViewModule, never>;
179
- static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXTreeViewModule, never, [typeof AXTreeViewComponent, typeof AXTreeViewItemComponent, typeof i3.CommonModule, typeof i4.AXCommonModule, typeof i5.AXDecoratorModule, typeof i6.AXCheckBoxModule, typeof i7.AXFormModule, typeof i8.FormsModule, typeof i9.AXTooltipModule, typeof i10.AXLoadingModule], [typeof AXTreeViewComponent, typeof AXTreeViewItemComponent]>;
705
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXTreeViewModule, never, [typeof AXTreeViewComponent], never>;
180
706
  static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXTreeViewModule>;
181
707
  }
182
708
 
183
- export { AXTreeItemClickBaseEvent, AXTreeViewBase, AXTreeViewComponent, AXTreeViewItemComponent, AXTreeViewModule };
184
- export type { AXTreeViewExpandBehavior, AXTreeViewLook, AXTreeViewOperationMethod, AXTreeViewSelectionBehavior, AXTreeViewSelectionScope };
709
+ /**
710
+ * Service for tree node operations
711
+ * Handles all business logic for tree node manipulation
712
+ */
713
+ declare class AXTreeViewService {
714
+ private static readonly ROOT_LIST_ID;
715
+ private static readonly NODE_DROP_PREFIX;
716
+ private static readonly LIST_PREFIX;
717
+ /**
718
+ * Find a node by ID in the tree
719
+ */
720
+ findNodeById(nodes: AXTreeViewNode[], id: string, idField?: string): AXTreeViewNode | null;
721
+ /**
722
+ * Find parent node of a given node
723
+ */
724
+ findParentNode(nodes: AXTreeViewNode[], targetNode: AXTreeViewNode, idField?: string, childrenField?: string): AXTreeViewNode | undefined;
725
+ /**
726
+ * Check if targetNode is a descendant of ancestorNode (or the same node)
727
+ * Prevents circular references by checking if target exists in ancestor's children tree
728
+ */
729
+ isValidDropTarget(movedNode: AXTreeViewNode, targetNode: AXTreeViewNode, idField?: string, childrenField?: string): boolean;
730
+ /**
731
+ * Check if targetNode is a descendant of ancestorNode
732
+ */
733
+ private isNodeDescendantOf;
734
+ /**
735
+ * Build a flat list of all visible focusable nodes
736
+ */
737
+ buildFlatNodeList(nodes: AXTreeViewNode[], hiddenField?: string, disabledField?: string, expandedField?: string, childrenField?: string): AXTreeViewFlatNode[];
738
+ /**
739
+ * Check if node has children
740
+ */
741
+ hasChildren(node: AXTreeViewNode, childrenField?: string): boolean;
742
+ /**
743
+ * Check if node can be lazy loaded
744
+ */
745
+ canLazyLoad(node: AXTreeViewNode, isLazyDataSource: boolean, childrenCountField?: string, childrenField?: string): boolean;
746
+ /**
747
+ * Recursively select/deselect all children
748
+ */
749
+ selectAllChildren(children: AXTreeViewNode[], selected: boolean, selectedField?: string, indeterminateField?: string, childrenField?: string): void;
750
+ /**
751
+ * Get selection state of children
752
+ */
753
+ getChildrenSelectionState(children: AXTreeViewNode[], selectedField?: string, indeterminateField?: string): AXTreeViewChildrenSelectionState;
754
+ /**
755
+ * Update parent node states based on children selection (with intermediate state support)
756
+ */
757
+ updateParentStates(nodes: AXTreeViewNode[], changedNode: AXTreeViewNode, intermediateState: boolean, idField?: string, childrenField?: string, selectedField?: string, indeterminateField?: string): void;
758
+ /**
759
+ * Recursively deselect all nodes
760
+ */
761
+ deselectAllNodes(nodes: AXTreeViewNode[], selectedField?: string, indeterminateField?: string, childrenField?: string): void;
762
+ /**
763
+ * Recursively set selection state for all nodes
764
+ */
765
+ setAllSelection(nodes: AXTreeViewNode[], selected: boolean, selectedField?: string, indeterminateField?: string, childrenField?: string): void;
766
+ /**
767
+ * Recursively count selected nodes
768
+ */
769
+ countSelected(nodes: AXTreeViewNode[], selectedField?: string, childrenField?: string): number;
770
+ /**
771
+ * Recursively collect selected nodes
772
+ */
773
+ collectSelected(nodes: AXTreeViewNode[], result: AXTreeViewNode[], selectedField?: string, childrenField?: string): void;
774
+ /**
775
+ * Recursively remove selected nodes
776
+ */
777
+ removeSelected(nodes: AXTreeViewNode[], selectedField?: string, indeterminateField?: string, childrenField?: string): void;
778
+ /**
779
+ * Recursively update all parent states in the tree (used after deletion)
780
+ */
781
+ updateAllParentStates(nodes: AXTreeViewNode[], intermediateState: boolean, childrenField?: string, selectedField?: string, indeterminateField?: string): void;
782
+ /**
783
+ * Recursively set expanded state (with lazy loading)
784
+ */
785
+ setExpandedState(nodes: AXTreeViewNode[], expanded: boolean, isLazyDataSource: boolean, loadNodeChildren: (node: AXTreeViewNode) => Promise<void>, expandedField?: string, childrenField?: string, childrenCountField?: string): Promise<void>;
786
+ /**
787
+ * Get array reference by drop list ID
788
+ */
789
+ getArrayByListId(nodes: AXTreeViewNode[], listId: string, idField?: string, childrenField?: string): AXTreeViewNode[] | null;
790
+ /**
791
+ * Find parent node by list ID
792
+ */
793
+ findParentByListId(nodes: AXTreeViewNode[], listId: string, idField?: string): AXTreeViewNode | undefined;
794
+ /**
795
+ * Generate unique list ID for each node
796
+ */
797
+ getListId(node: AXTreeViewNode | undefined, idField?: string): string;
798
+ /**
799
+ * Get root list ID constant
800
+ */
801
+ getRootListId(): string;
802
+ /**
803
+ * Get node drop prefix constant
804
+ */
805
+ getNodeDropPrefix(): string;
806
+ /**
807
+ * Get list prefix constant
808
+ */
809
+ getListPrefix(): string;
810
+ /**
811
+ * Get all nodes in a flat array
812
+ */
813
+ getAllNodes(nodes: AXTreeViewNode[], childrenField?: string): AXTreeViewNode[];
814
+ /**
815
+ * Get the path to a node (array of parent nodes from root to node)
816
+ */
817
+ getNodePath(nodes: AXTreeViewNode[], nodeId: string): AXTreeViewNode[];
818
+ /**
819
+ * Get the level/depth of a node (0 = root level)
820
+ */
821
+ getNodeLevel(nodes: AXTreeViewNode[], nodeId: string): number;
822
+ /**
823
+ * Get sibling nodes of a given node
824
+ */
825
+ getSiblings(nodes: AXTreeViewNode[], nodeId: string, idField?: string, childrenField?: string): AXTreeViewNode[];
826
+ /**
827
+ * Clone a node (creates a deep copy)
828
+ */
829
+ cloneNode(node: AXTreeViewNode, idField?: string, titleField?: string, tooltipField?: string, iconField?: string, expandedField?: string, selectedField?: string, indeterminateField?: string, disabledField?: string, hiddenField?: string, childrenCountField?: string, dataField?: string, childrenField?: string): AXTreeViewNode;
830
+ /**
831
+ * Validate node structure (check for required fields and circular references)
832
+ */
833
+ validateNode(node: AXTreeViewNode, visitedIds?: Set<string>, idField?: string, titleField?: string, childrenField?: string, childrenCountField?: string): {
834
+ valid: boolean;
835
+ errors: string[];
836
+ };
837
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXTreeViewService, never>;
838
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXTreeViewService>;
839
+ }
840
+
841
+ export { AXTreeViewComponent, AXTreeViewModule, AXTreeViewService };
842
+ export type { AXTreeViewBeforeDropEvent, AXTreeViewCallback, AXTreeViewChildrenSelectionState, AXTreeViewDataSource, AXTreeViewDragMode, AXTreeViewDragOperationType, AXTreeViewDropEvent, AXTreeViewFlatNode, AXTreeViewItemTemplateContext, AXTreeViewNode, AXTreeViewNodeSelectEvent, AXTreeViewNodeToggleEvent, AXTreeViewSelectMode, AXTreeViewSelectionBehavior, AXTreeViewSelectionChangeEvent, AXTreeViewViewLook };