@acorex/components 21.0.0-next.6 → 21.0.0-next.60

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 (283) hide show
  1. package/accordion/index.d.ts +0 -1
  2. package/autocomplete/index.d.ts +23 -9
  3. package/button/index.d.ts +38 -17
  4. package/button-group/index.d.ts +6 -4
  5. package/calendar/index.d.ts +4 -0
  6. package/chips/index.d.ts +3 -8
  7. package/code-editor/README.md +291 -1
  8. package/code-editor/index.d.ts +262 -20
  9. package/collapse/index.d.ts +4 -6
  10. package/command/index.d.ts +1 -0
  11. package/conversation2/README.md +426 -0
  12. package/conversation2/index.d.ts +6139 -0
  13. package/data-list/index.d.ts +1 -1
  14. package/data-table/index.d.ts +97 -261
  15. package/dialog/index.d.ts +1 -1
  16. package/drawer/README.md +2 -2
  17. package/drawer/index.d.ts +33 -57
  18. package/drawer-legacy/README.md +3 -0
  19. package/drawer-legacy/index.d.ts +86 -0
  20. package/editor/README.md +3 -0
  21. package/editor/index.d.ts +79 -0
  22. package/fesm2022/acorex-components-accordion.mjs +19 -24
  23. package/fesm2022/acorex-components-accordion.mjs.map +1 -1
  24. package/fesm2022/acorex-components-action-sheet.mjs +12 -12
  25. package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
  26. package/fesm2022/acorex-components-alert.mjs +14 -14
  27. package/fesm2022/acorex-components-alert.mjs.map +1 -1
  28. package/fesm2022/acorex-components-aspect-ratio.mjs +4 -4
  29. package/fesm2022/acorex-components-aspect-ratio.mjs.map +1 -1
  30. package/fesm2022/acorex-components-audio-wave.mjs +12 -11
  31. package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
  32. package/fesm2022/acorex-components-autocomplete.mjs +30 -13
  33. package/fesm2022/acorex-components-autocomplete.mjs.map +1 -1
  34. package/fesm2022/acorex-components-avatar.mjs +13 -13
  35. package/fesm2022/acorex-components-avatar.mjs.map +1 -1
  36. package/fesm2022/acorex-components-badge.mjs +10 -10
  37. package/fesm2022/acorex-components-badge.mjs.map +1 -1
  38. package/fesm2022/acorex-components-bottom-navigation.mjs +12 -12
  39. package/fesm2022/acorex-components-bottom-navigation.mjs.map +1 -1
  40. package/fesm2022/acorex-components-breadcrumbs.mjs +12 -12
  41. package/fesm2022/acorex-components-breadcrumbs.mjs.map +1 -1
  42. package/fesm2022/acorex-components-button-group.mjs +25 -21
  43. package/fesm2022/acorex-components-button-group.mjs.map +1 -1
  44. package/fesm2022/acorex-components-button.mjs +68 -28
  45. package/fesm2022/acorex-components-button.mjs.map +1 -1
  46. package/fesm2022/acorex-components-calendar.mjs +39 -18
  47. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  48. package/fesm2022/acorex-components-check-box.mjs +11 -11
  49. package/fesm2022/acorex-components-check-box.mjs.map +1 -1
  50. package/fesm2022/acorex-components-chips.mjs +12 -14
  51. package/fesm2022/acorex-components-chips.mjs.map +1 -1
  52. package/fesm2022/acorex-components-circular-progress.mjs +13 -11
  53. package/fesm2022/acorex-components-circular-progress.mjs.map +1 -1
  54. package/fesm2022/acorex-components-code-editor.mjs +532 -200
  55. package/fesm2022/acorex-components-code-editor.mjs.map +1 -1
  56. package/fesm2022/acorex-components-collapse.mjs +22 -34
  57. package/fesm2022/acorex-components-collapse.mjs.map +1 -1
  58. package/fesm2022/acorex-components-color-box.mjs +11 -11
  59. package/fesm2022/acorex-components-color-box.mjs.map +1 -1
  60. package/fesm2022/acorex-components-color-palette.mjs +32 -32
  61. package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
  62. package/fesm2022/acorex-components-command.mjs +18 -11
  63. package/fesm2022/acorex-components-command.mjs.map +1 -1
  64. package/fesm2022/acorex-components-comment.mjs +34 -34
  65. package/fesm2022/acorex-components-comment.mjs.map +1 -1
  66. package/fesm2022/acorex-components-conversation.mjs +56 -65
  67. package/fesm2022/acorex-components-conversation.mjs.map +1 -1
  68. package/fesm2022/acorex-components-conversation2.mjs +17641 -0
  69. package/fesm2022/acorex-components-conversation2.mjs.map +1 -0
  70. package/fesm2022/acorex-components-cron-job.mjs +53 -53
  71. package/fesm2022/acorex-components-cron-job.mjs.map +1 -1
  72. package/fesm2022/acorex-components-data-list.mjs +16 -27
  73. package/fesm2022/acorex-components-data-list.mjs.map +1 -1
  74. package/fesm2022/acorex-components-data-pager.mjs +62 -47
  75. package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
  76. package/fesm2022/acorex-components-data-table.mjs +509 -553
  77. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  78. package/fesm2022/acorex-components-datetime-box.mjs +10 -10
  79. package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
  80. package/fesm2022/acorex-components-datetime-input.mjs +10 -10
  81. package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
  82. package/fesm2022/acorex-components-datetime-picker.mjs +11 -11
  83. package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
  84. package/fesm2022/acorex-components-decorators.mjs +96 -54
  85. package/fesm2022/acorex-components-decorators.mjs.map +1 -1
  86. package/fesm2022/acorex-components-dialog.mjs +26 -16
  87. package/fesm2022/acorex-components-dialog.mjs.map +1 -1
  88. package/fesm2022/acorex-components-drawer-legacy.mjs +218 -0
  89. package/fesm2022/acorex-components-drawer-legacy.mjs.map +1 -0
  90. package/fesm2022/acorex-components-drawer.mjs +66 -150
  91. package/fesm2022/acorex-components-drawer.mjs.map +1 -1
  92. package/fesm2022/acorex-components-dropdown-button.mjs +9 -9
  93. package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
  94. package/fesm2022/acorex-components-dropdown.mjs +20 -18
  95. package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
  96. package/fesm2022/acorex-components-editor.mjs +195 -0
  97. package/fesm2022/acorex-components-editor.mjs.map +1 -0
  98. package/fesm2022/acorex-components-file-explorer.mjs +34 -34
  99. package/fesm2022/acorex-components-file-explorer.mjs.map +1 -1
  100. package/fesm2022/acorex-components-flow-chart.mjs +18 -18
  101. package/fesm2022/acorex-components-flow-chart.mjs.map +1 -1
  102. package/fesm2022/acorex-components-form.mjs +61 -30
  103. package/fesm2022/acorex-components-form.mjs.map +1 -1
  104. package/fesm2022/acorex-components-grid-layout-builder.mjs +14 -15
  105. package/fesm2022/acorex-components-grid-layout-builder.mjs.map +1 -1
  106. package/fesm2022/acorex-components-image-editor.mjs +206 -156
  107. package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
  108. package/fesm2022/acorex-components-image.mjs +10 -10
  109. package/fesm2022/acorex-components-image.mjs.map +1 -1
  110. package/fesm2022/acorex-components-json-viewer.mjs +9 -9
  111. package/fesm2022/acorex-components-json-viewer.mjs.map +1 -1
  112. package/fesm2022/acorex-components-kanban.mjs +9 -7
  113. package/fesm2022/acorex-components-kanban.mjs.map +1 -1
  114. package/fesm2022/acorex-components-kbd.mjs +29 -11
  115. package/fesm2022/acorex-components-kbd.mjs.map +1 -1
  116. package/fesm2022/acorex-components-label.mjs +9 -9
  117. package/fesm2022/acorex-components-label.mjs.map +1 -1
  118. package/fesm2022/acorex-components-list.mjs +10 -10
  119. package/fesm2022/acorex-components-list.mjs.map +1 -1
  120. package/fesm2022/acorex-components-loading-dialog.mjs +23 -14
  121. package/fesm2022/acorex-components-loading-dialog.mjs.map +1 -1
  122. package/fesm2022/acorex-components-loading.mjs +23 -23
  123. package/fesm2022/acorex-components-loading.mjs.map +1 -1
  124. package/fesm2022/acorex-components-map.mjs +290 -31
  125. package/fesm2022/acorex-components-map.mjs.map +1 -1
  126. package/fesm2022/acorex-components-media-viewer.mjs +95 -99
  127. package/fesm2022/acorex-components-media-viewer.mjs.map +1 -1
  128. package/fesm2022/acorex-components-menu.mjs +24 -24
  129. package/fesm2022/acorex-components-menu.mjs.map +1 -1
  130. package/fesm2022/{acorex-components-modal-acorex-components-modal-h5Y-qcbh.mjs → acorex-components-modal-acorex-components-modal-BnUdtPke.mjs} +24 -24
  131. package/fesm2022/acorex-components-modal-acorex-components-modal-BnUdtPke.mjs.map +1 -0
  132. package/fesm2022/acorex-components-modal-modal-content.component-Cgq-wx_m.mjs +214 -0
  133. package/fesm2022/acorex-components-modal-modal-content.component-Cgq-wx_m.mjs.map +1 -0
  134. package/fesm2022/acorex-components-modal.mjs +1 -1
  135. package/fesm2022/acorex-components-navbar.mjs +9 -9
  136. package/fesm2022/acorex-components-navbar.mjs.map +1 -1
  137. package/fesm2022/acorex-components-notification.mjs +16 -23
  138. package/fesm2022/acorex-components-notification.mjs.map +1 -1
  139. package/fesm2022/acorex-components-number-box-legacy.mjs +412 -0
  140. package/fesm2022/acorex-components-number-box-legacy.mjs.map +1 -0
  141. package/fesm2022/acorex-components-number-box.mjs +113 -331
  142. package/fesm2022/acorex-components-number-box.mjs.map +1 -1
  143. package/fesm2022/acorex-components-otp.mjs +10 -10
  144. package/fesm2022/acorex-components-otp.mjs.map +1 -1
  145. package/fesm2022/acorex-components-page.mjs +10 -10
  146. package/fesm2022/acorex-components-page.mjs.map +1 -1
  147. package/fesm2022/acorex-components-paint.mjs +35 -40
  148. package/fesm2022/acorex-components-paint.mjs.map +1 -1
  149. package/fesm2022/acorex-components-password-box.mjs +14 -14
  150. package/fesm2022/acorex-components-password-box.mjs.map +1 -1
  151. package/fesm2022/acorex-components-pdf-reader.mjs +9 -9
  152. package/fesm2022/acorex-components-pdf-reader.mjs.map +1 -1
  153. package/fesm2022/acorex-components-phone-box.mjs +47 -10
  154. package/fesm2022/acorex-components-phone-box.mjs.map +1 -1
  155. package/fesm2022/acorex-components-picker.mjs +19 -19
  156. package/fesm2022/acorex-components-picker.mjs.map +1 -1
  157. package/fesm2022/acorex-components-popover.mjs +12 -12
  158. package/fesm2022/acorex-components-popover.mjs.map +1 -1
  159. package/fesm2022/acorex-components-popup.mjs +13 -13
  160. package/fesm2022/acorex-components-popup.mjs.map +1 -1
  161. package/fesm2022/acorex-components-progress-bar.mjs +11 -9
  162. package/fesm2022/acorex-components-progress-bar.mjs.map +1 -1
  163. package/fesm2022/acorex-components-qrcode.mjs +10 -10
  164. package/fesm2022/acorex-components-qrcode.mjs.map +1 -1
  165. package/fesm2022/acorex-components-query-builder.mjs +9 -9
  166. package/fesm2022/acorex-components-query-builder.mjs.map +1 -1
  167. package/fesm2022/acorex-components-radio.mjs +9 -9
  168. package/fesm2022/acorex-components-radio.mjs.map +1 -1
  169. package/fesm2022/acorex-components-rail-navigation.mjs +40 -38
  170. package/fesm2022/acorex-components-rail-navigation.mjs.map +1 -1
  171. package/fesm2022/acorex-components-range-slider.mjs +11 -11
  172. package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
  173. package/fesm2022/acorex-components-rate-picker.mjs +20 -35
  174. package/fesm2022/acorex-components-rate-picker.mjs.map +1 -1
  175. package/fesm2022/acorex-components-rest-api-generator.mjs +23 -23
  176. package/fesm2022/acorex-components-rest-api-generator.mjs.map +1 -1
  177. package/fesm2022/acorex-components-result.mjs +8 -8
  178. package/fesm2022/acorex-components-result.mjs.map +1 -1
  179. package/fesm2022/acorex-components-routing-progress.mjs +8 -8
  180. package/fesm2022/acorex-components-routing-progress.mjs.map +1 -1
  181. package/fesm2022/acorex-components-rrule.mjs +111 -16
  182. package/fesm2022/acorex-components-rrule.mjs.map +1 -1
  183. package/fesm2022/acorex-components-scheduler-picker.mjs +2339 -0
  184. package/fesm2022/acorex-components-scheduler-picker.mjs.map +1 -0
  185. package/fesm2022/acorex-components-scheduler.mjs +52 -52
  186. package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
  187. package/fesm2022/acorex-components-scss.mjs +4 -4
  188. package/fesm2022/acorex-components-scss.mjs.map +1 -1
  189. package/fesm2022/acorex-components-search-box.mjs +23 -12
  190. package/fesm2022/acorex-components-search-box.mjs.map +1 -1
  191. package/fesm2022/acorex-components-select-box.mjs +36 -17
  192. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  193. package/fesm2022/acorex-components-selection-list-2.mjs +12 -12
  194. package/fesm2022/acorex-components-selection-list-2.mjs.map +1 -1
  195. package/fesm2022/acorex-components-selection-list.mjs +10 -10
  196. package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
  197. package/fesm2022/acorex-components-side-menu.mjs +31 -38
  198. package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
  199. package/fesm2022/acorex-components-skeleton.mjs +8 -8
  200. package/fesm2022/acorex-components-skeleton.mjs.map +1 -1
  201. package/fesm2022/acorex-components-slider.mjs +13 -13
  202. package/fesm2022/acorex-components-slider.mjs.map +1 -1
  203. package/fesm2022/acorex-components-sliding-item.mjs +17 -17
  204. package/fesm2022/acorex-components-sliding-item.mjs.map +1 -1
  205. package/fesm2022/acorex-components-step-wizard.mjs +16 -16
  206. package/fesm2022/acorex-components-step-wizard.mjs.map +1 -1
  207. package/fesm2022/acorex-components-switch.mjs +14 -14
  208. package/fesm2022/acorex-components-switch.mjs.map +1 -1
  209. package/fesm2022/acorex-components-tabs.mjs +28 -20
  210. package/fesm2022/acorex-components-tabs.mjs.map +1 -1
  211. package/fesm2022/acorex-components-tag-box.mjs +51 -21
  212. package/fesm2022/acorex-components-tag-box.mjs.map +1 -1
  213. package/fesm2022/acorex-components-tag.mjs +47 -11
  214. package/fesm2022/acorex-components-tag.mjs.map +1 -1
  215. package/fesm2022/acorex-components-text-area.mjs +9 -9
  216. package/fesm2022/acorex-components-text-area.mjs.map +1 -1
  217. package/fesm2022/acorex-components-text-box.mjs +13 -13
  218. package/fesm2022/acorex-components-text-box.mjs.map +1 -1
  219. package/fesm2022/acorex-components-time-duration.mjs +54 -14
  220. package/fesm2022/acorex-components-time-duration.mjs.map +1 -1
  221. package/fesm2022/acorex-components-time-line.mjs +14 -29
  222. package/fesm2022/acorex-components-time-line.mjs.map +1 -1
  223. package/fesm2022/acorex-components-toast.mjs +14 -14
  224. package/fesm2022/acorex-components-toast.mjs.map +1 -1
  225. package/fesm2022/acorex-components-toolbar.mjs +9 -9
  226. package/fesm2022/acorex-components-toolbar.mjs.map +1 -1
  227. package/fesm2022/acorex-components-tooltip.mjs +15 -20
  228. package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
  229. package/fesm2022/acorex-components-tree-view-legacy.mjs +511 -0
  230. package/fesm2022/acorex-components-tree-view-legacy.mjs.map +1 -0
  231. package/fesm2022/acorex-components-tree-view.mjs +2280 -437
  232. package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
  233. package/fesm2022/acorex-components-uploader.mjs +28 -641
  234. package/fesm2022/acorex-components-uploader.mjs.map +1 -1
  235. package/fesm2022/acorex-components-video-player.mjs +8 -8
  236. package/fesm2022/acorex-components-video-player.mjs.map +1 -1
  237. package/fesm2022/acorex-components-wysiwyg.mjs +79 -72
  238. package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
  239. package/fesm2022/acorex-components.mjs.map +1 -1
  240. package/file-explorer/index.d.ts +6 -6
  241. package/form/index.d.ts +3 -3
  242. package/grid-layout-builder/index.d.ts +1 -2
  243. package/image-editor/index.d.ts +11 -13
  244. package/kbd/index.d.ts +13 -7
  245. package/loading/index.d.ts +1 -1
  246. package/map/index.d.ts +28 -1
  247. package/media-viewer/index.d.ts +7 -3
  248. package/notification/index.d.ts +0 -2
  249. package/number-box/README.md +2 -2
  250. package/number-box/index.d.ts +32 -171
  251. package/number-box-legacy/README.md +3 -0
  252. package/number-box-legacy/index.d.ts +191 -0
  253. package/package.json +43 -17
  254. package/paint/index.d.ts +1 -6
  255. package/phone-box/index.d.ts +5 -4
  256. package/rate-picker/index.d.ts +5 -15
  257. package/rrule/index.d.ts +96 -1
  258. package/scheduler-picker/README.md +15 -0
  259. package/scheduler-picker/index.d.ts +1360 -0
  260. package/search-box/index.d.ts +6 -1
  261. package/select-box/index.d.ts +15 -10
  262. package/side-menu/index.d.ts +3 -2
  263. package/slider/index.d.ts +2 -2
  264. package/tag/index.d.ts +8 -2
  265. package/tag-box/index.d.ts +12 -3
  266. package/time-duration/index.d.ts +19 -3
  267. package/tooltip/index.d.ts +0 -1
  268. package/tree-view/index.d.ts +959 -168
  269. package/tree-view-legacy/README.md +3 -0
  270. package/tree-view-legacy/index.d.ts +184 -0
  271. package/uploader/index.d.ts +4 -331
  272. package/wysiwyg/index.d.ts +3 -2
  273. package/drawer-2/README.md +0 -3
  274. package/drawer-2/index.d.ts +0 -62
  275. package/fesm2022/acorex-components-drawer-2.mjs +0 -134
  276. package/fesm2022/acorex-components-drawer-2.mjs.map +0 -1
  277. package/fesm2022/acorex-components-modal-acorex-components-modal-h5Y-qcbh.mjs.map +0 -1
  278. package/fesm2022/acorex-components-modal-modal-content.component-B6tyMLdU.mjs +0 -235
  279. package/fesm2022/acorex-components-modal-modal-content.component-B6tyMLdU.mjs.map +0 -1
  280. package/fesm2022/acorex-components-number-box-2.mjs +0 -183
  281. package/fesm2022/acorex-components-number-box-2.mjs.map +0 -1
  282. package/number-box-2/README.md +0 -3
  283. package/number-box-2/index.d.ts +0 -41
@@ -1,184 +1,975 @@
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, EventEmitter } 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 AXTreeViewNodeDoubleClickEvent extends AXHtmlEvent {
102
+ node: AXTreeViewNode;
103
+ }
104
+ interface AXTreeViewNodeClickEvent extends AXHtmlEvent {
105
+ node: AXTreeViewNode;
106
+ }
107
+ interface AXTreeViewSelectionChangeEvent extends AXEvent {
108
+ selectedNodes: AXTreeViewNode[];
109
+ }
110
+ interface AXTreeViewDropEvent extends AXEvent {
111
+ node: AXTreeViewNode;
112
+ previousParent?: AXTreeViewNode;
113
+ currentParent?: AXTreeViewNode;
114
+ previousIndex: number;
115
+ currentIndex: number;
116
+ }
117
+ interface AXTreeViewItemTemplateContext {
118
+ $implicit: AXTreeViewNode;
119
+ node: AXTreeViewNode;
120
+ level: number;
121
+ expanded: boolean;
122
+ childrenCount: number;
123
+ loading: boolean;
124
+ /** Whether the node is effectively disabled (considering inheritance from parents) */
125
+ disabled: boolean;
126
+ }
127
+ type AXTreeViewViewLook = 'default' | 'card' | 'with-line';
128
+ type AXTreeViewDragArea = 'handler' | 'item';
129
+ type AXTreeViewDragBehavior = 'none' | 'order-only' | 'move' | 'both';
130
+ type AXTreeViewSelectMode = 'none' | 'single' | 'multiple';
131
+ /**
132
+ * Selection behavior mode for tree nodes.
133
+ *
134
+ * Controls how node selection behaves in the tree:
135
+ * - **'all'**: No restrictions or special behavior. Any node can be selected independently.
136
+ * - **'intermediate'**: When children are selected, parent nodes show indeterminate state.
137
+ * If all children are selected, parent becomes selected; if some are selected, parent shows indeterminate.
138
+ * - **'leaf'**: Only leaf nodes (nodes with no children) can be selected. Parent nodes cannot be selected.
139
+ * - **'nested'**: Selecting a parent node automatically selects all its children (cascading selection).
140
+ * - **'intermediate-nested'**: Combines both behaviors - selecting parent selects children AND children selection affects parent state.
141
+ *
142
+ * @example
143
+ * ```typescript
144
+ * // Allow any node to be selected
145
+ * <ax-tree-view [selectionBehavior]="'all'" />
146
+ *
147
+ * // Only leaf nodes can be selected
148
+ * <ax-tree-view [selectionBehavior]="'leaf'" />
149
+ *
150
+ * // Parent shows indeterminate when children are selected
151
+ * <ax-tree-view [selectionBehavior]="'intermediate'" />
152
+ *
153
+ * // Selecting parent selects all children
154
+ * <ax-tree-view [selectionBehavior]="'nested'" />
155
+ *
156
+ * // Both: selecting parent selects children AND children affect parent state
157
+ * <ax-tree-view [selectionBehavior]="'intermediate-nested'" />
158
+ * ```
159
+ */
160
+ type AXTreeViewSelectionBehavior = 'all' | 'intermediate' | 'leaf' | 'nested' | 'intermediate-nested';
161
+ /**
162
+ * Function type for lazy loading tree nodes
163
+ */
164
+ type AXTreeViewCallback = (id?: string) => AXTreeViewNode[] | Promise<AXTreeViewNode[]>;
165
+ /**
166
+ * Data source type - can be static array or lazy loading function
167
+ */
168
+ type AXTreeViewDataSource = AXTreeViewNode[] | AXTreeViewCallback;
169
+ /**
170
+ * Flat node representation for keyboard navigation
171
+ */
172
+ interface AXTreeViewFlatNode {
173
+ node: AXTreeViewNode;
174
+ level: number;
175
+ parent?: AXTreeViewNode;
176
+ }
177
+ /**
178
+ * Children selection state for parent node calculation
179
+ */
180
+ interface AXTreeViewChildrenSelectionState {
181
+ allSelected: boolean;
182
+ someSelected: boolean;
76
183
  }
77
184
 
78
- declare class AXTreeViewComponent extends NXComponent {
185
+ declare class AXTreeViewComponent {
79
186
  #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;
187
+ private readonly treeService;
188
+ private readonly platformService;
189
+ private readonly destroyRef;
190
+ /** Tree data source - can be static array or lazy loading function */
191
+ readonly datasource: _angular_core.ModelSignal<AXTreeViewDataSource>;
192
+ /** Selection mode: 'single' (click to select) or 'multiple' (checkbox selection). Default: `'single'`. In multiple mode, checkboxes are automatically shown. */
193
+ readonly selectMode: _angular_core.InputSignal<AXTreeViewSelectMode>;
194
+ /** 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). Default: `'intermediate'` */
195
+ readonly selectionBehavior: _angular_core.InputSignal<AXTreeViewSelectionBehavior>;
196
+ /** Drag area: 'handler' (drag handle), 'item' (entire item). Default: `'handler'` */
197
+ readonly dragArea: _angular_core.InputSignal<AXTreeViewDragArea>;
198
+ /** Drag behavior: 'none' (disabled), 'order-only' (reorder only), 'move' (move between parents), 'both' (allow both). Default: `'none'` */
199
+ readonly dragBehavior: _angular_core.InputSignal<AXTreeViewDragBehavior>;
200
+ /** Whether to show icons. Default: `true` */
201
+ readonly showIcons: _angular_core.InputSignal<boolean>;
202
+ /** Whether to show children count badge. Default: `true` */
203
+ readonly showChildrenBadge: _angular_core.InputSignal<boolean>;
204
+ /** Custom icon for expanded nodes. Default: `'fa-solid fa-chevron-down'` */
205
+ readonly expandedIcon: _angular_core.InputSignal<string>;
206
+ /** Custom icon for collapsed nodes. Default: `'fa-solid fa-chevron-right'` */
207
+ readonly collapsedIcon: _angular_core.InputSignal<string>;
208
+ /** Indent size in pixels for each level. Default: `16` */
209
+ readonly indentSize: _angular_core.InputSignal<number>;
210
+ /** Visual style variant. Default: `'default'` */
211
+ readonly look: _angular_core.InputSignal<AXTreeViewViewLook>;
212
+ /** Custom template for tree items. Default: `undefined` */
213
+ readonly nodeTemplate: _angular_core.InputSignal<TemplateRef<AXTreeViewItemTemplateContext>>;
214
+ /** Field name for node ID. Default: `'id'` */
215
+ readonly idField: _angular_core.InputSignal<string>;
216
+ /** Field name for node title. Default: `'title'` */
217
+ readonly titleField: _angular_core.InputSignal<string>;
218
+ /** Field name for node tooltip. Default: `'tooltip'` */
219
+ readonly tooltipField: _angular_core.InputSignal<string>;
220
+ /** Field name for node icon. Default: `'icon'` */
221
+ readonly iconField: _angular_core.InputSignal<string>;
222
+ /** Field name for expanded state. Default: `'expanded'` */
223
+ readonly expandedField: _angular_core.InputSignal<string>;
224
+ /** Field name for selected state. Default: `'selected'` */
225
+ readonly selectedField: _angular_core.InputSignal<string>;
226
+ /** Field name for indeterminate state. Default: `'indeterminate'` */
227
+ readonly indeterminateField: _angular_core.InputSignal<string>;
228
+ /** Field name for disabled state. Default: `'disabled'` */
229
+ readonly disabledField: _angular_core.InputSignal<string>;
230
+ /** Field name for hidden state. Default: `'hidden'` */
231
+ readonly hiddenField: _angular_core.InputSignal<string>;
232
+ /** Field name for children array. Default: `'children'` */
233
+ readonly childrenField: _angular_core.InputSignal<string>;
234
+ /** Field name for children count. Default: `'childrenCount'` */
235
+ readonly childrenCountField: _angular_core.InputSignal<string>;
236
+ /** Field name for custom data. Default: `'data'` */
237
+ readonly dataField: _angular_core.InputSignal<string>;
238
+ /** Whether disabled state is inherited from parent nodes. Default: `true`. */
239
+ readonly inheritDisabled: _angular_core.InputSignal<boolean>;
240
+ /** Whether double-click on node content toggles expand/collapse. Default: `true`. */
241
+ readonly expandOnDoubleClick: _angular_core.InputSignal<boolean>;
242
+ /** Emitted before a drop operation - set canceled to true to prevent drop */
243
+ readonly onBeforeDrop: _angular_core.OutputEmitterRef<AXTreeViewBeforeDropEvent>;
244
+ /** Emitted when a node is toggled (expanded/collapsed) */
245
+ readonly onNodeToggle: _angular_core.OutputEmitterRef<AXTreeViewNodeToggleEvent>;
246
+ /** Emitted when a node is selected/deselected */
247
+ readonly onNodeSelect: _angular_core.OutputEmitterRef<AXTreeViewNodeSelectEvent>;
248
+ /** Emitted when a node is double-clicked */
249
+ onNodeDoubleClick: EventEmitter<AXTreeViewNodeDoubleClickEvent>;
250
+ /** Emitted when a node is double-clicked */
251
+ readonly onNodeClick: _angular_core.OutputEmitterRef<AXTreeViewNodeClickEvent>;
252
+ /** Emitted when selection changes - returns all currently selected nodes */
253
+ readonly onSelectionChange: _angular_core.OutputEmitterRef<AXTreeViewSelectionChangeEvent>;
254
+ /** Emitted when nodes are reordered within the same parent */
255
+ readonly onOrderChange: _angular_core.OutputEmitterRef<AXTreeViewDropEvent>;
256
+ /** Emitted when a node is moved to a different parent */
257
+ readonly onMoveChange: _angular_core.OutputEmitterRef<AXTreeViewDropEvent>;
258
+ /** Emitted for any item change (order or move) */
259
+ readonly onItemsChange: _angular_core.OutputEmitterRef<AXTreeViewDropEvent>;
260
+ /** Internal signal for tree nodes */
261
+ protected readonly nodes: _angular_core.WritableSignal<AXTreeViewNode[]>;
262
+ /** Internal signal for tracking loading state of individual nodes */
263
+ protected readonly loadingNodes: _angular_core.WritableSignal<Set<string>>;
264
+ /** Signal for tracking root/tree-level loading state (used by reloadData) */
265
+ private readonly _isLoading;
266
+ /** Public readonly signal for tree loading state - can be used in templates */
267
+ readonly isLoading: _angular_core.Signal<boolean>;
268
+ /** Currently focused node ID for keyboard navigation */
269
+ protected readonly focusedNodeId: _angular_core.WritableSignal<string>;
270
+ /** RTL detection signal */
271
+ protected readonly isRtl: _angular_core.WritableSignal<boolean>;
272
+ /** active node id */
273
+ protected readonly activeNodeId: _angular_core.WritableSignal<string>;
274
+ /** Computed chevron icons that flip for RTL */
275
+ protected readonly directionExpandedIcon: _angular_core.Signal<string>;
276
+ protected readonly directionCollapsedIcon: _angular_core.Signal<string>;
277
+ /** Flag to prevent infinite loops when syncing datasource */
278
+ private isUpdatingFromDatasource;
279
+ /** Computed to check if datasource is a function */
280
+ private readonly isLazyDataSource;
281
+ /** Computed: Returns true when selection is restricted to leaf nodes only */
282
+ protected readonly isLeafOnlyMode: _angular_core.Signal<boolean>;
283
+ /** Computed: Returns true when selecting a parent automatically selects all its children */
284
+ protected readonly cascadesToChildren: _angular_core.Signal<boolean>;
285
+ /** Computed: Returns true when parent nodes show indeterminate state based on children selection */
286
+ protected readonly hasIntermediateState: _angular_core.Signal<boolean>;
287
+ /** Computed: Returns true when drag handle should be shown */
288
+ protected readonly shouldShowDragHandle: _angular_core.Signal<boolean>;
289
+ /** Signal to track if double-click output has subscribers */
290
+ private readonly hasDoubleClickSubscribers;
291
+ /**
292
+ * Returns true if double-click output has no subscribers (should disable directive)
293
+ * Uses a computed signal that checks if EventEmitter has observers
294
+ * If no subscribers AND expandOnDoubleClick is false, disable the directive (return true)
295
+ * If has subscribers OR expandOnDoubleClick is true, enable the directive (return false)
296
+ */
297
+ protected readonly isDoubleClickDisabled: _angular_core.Signal<boolean>;
298
+ /** Check EventEmitter observers and update signal */
299
+ private checkDoubleClickSubscribers;
300
+ /**
301
+ * Get a property value from a node using the configured field name
302
+ */
303
+ protected getNodeProp<T = unknown>(node: AXTreeViewNode, fieldName: string, defaultValue?: T): T;
304
+ /**
305
+ * Set a property value on a node using the configured field name
306
+ */
307
+ protected setNodeProp(node: AXTreeViewNode, fieldName: string, value: unknown): void;
308
+ /**
309
+ * Get node ID
310
+ */
311
+ protected getNodeId(node: AXTreeViewNode): string;
312
+ /**
313
+ * Get node title
314
+ */
315
+ protected getNodeTitle(node: AXTreeViewNode): string;
316
+ /**
317
+ * Get node tooltip
318
+ */
319
+ protected getNodeTooltip(node: AXTreeViewNode): string | undefined;
320
+ /**
321
+ * Get node icon
322
+ */
323
+ protected getNodeIcon(node: AXTreeViewNode): string | undefined;
324
+ /**
325
+ * Get node expanded state
326
+ */
327
+ protected getNodeExpanded(node: AXTreeViewNode): boolean;
328
+ /**
329
+ * Set node expanded state
330
+ */
331
+ protected setNodeExpanded(node: AXTreeViewNode, value: boolean): void;
332
+ /**
333
+ * Get node selected state
334
+ */
335
+ protected getNodeSelected(node: AXTreeViewNode): boolean;
336
+ /**
337
+ * Set node selected state
338
+ */
339
+ protected setNodeSelected(node: AXTreeViewNode, value: boolean): void;
340
+ /**
341
+ * Get node indeterminate state
342
+ */
343
+ protected getNodeIndeterminate(node: AXTreeViewNode): boolean;
344
+ /**
345
+ * Set node indeterminate state
346
+ */
347
+ protected setNodeIndeterminate(node: AXTreeViewNode, value: boolean): void;
348
+ /**
349
+ * Get node's own disabled state (without inheritance)
350
+ */
351
+ protected getNodeDisabled(node: AXTreeViewNode): boolean;
352
+ /**
353
+ * Check if node is effectively disabled (considering inheritance from parents)
354
+ * When inheritDisabled is true:
355
+ * - Returns true if node itself is disabled
356
+ * - Returns true if any ancestor is disabled AND node doesn't have explicit `disabled: false`
357
+ * When inheritDisabled is false:
358
+ * - Only returns node's own disabled state
359
+ */
360
+ protected isNodeEffectivelyDisabled(node: AXTreeViewNode): boolean;
361
+ /**
362
+ * Check if any ancestor of the node is disabled
363
+ */
364
+ private isAnyAncestorDisabled;
365
+ /**
366
+ * Get node hidden state
367
+ */
368
+ protected getNodeHidden(node: AXTreeViewNode): boolean;
369
+ /**
370
+ * Get node children array
371
+ */
372
+ protected getNodeChildren(node: AXTreeViewNode): AXTreeViewNode[] | undefined;
373
+ /**
374
+ * Set node children array
375
+ */
376
+ protected setNodeChildren(node: AXTreeViewNode, value: AXTreeViewNode[] | undefined): void;
377
+ /**
378
+ * Get node children count
379
+ */
380
+ protected getNodeChildrenCount(node: AXTreeViewNode): number | undefined;
381
+ /**
382
+ * Set node children count
383
+ */
384
+ protected setNodeChildrenCount(node: AXTreeViewNode, value: number | undefined): void;
385
+ /**
386
+ * Expand all nodes in the tree (with lazy loading support)
387
+ */
388
+ expandAll(): Promise<void>;
389
+ /**
390
+ * Collapse all nodes in the tree
391
+ */
392
+ collapseAll(): void;
393
+ /**
394
+ * Get count of selected nodes
395
+ */
396
+ getSelectedCount(): number;
397
+ /**
398
+ * Check if any nodes are selected
399
+ */
400
+ hasSelection(): boolean;
401
+ /**
402
+ * Get all selected nodes
403
+ */
404
+ getSelectedNodes(): AXTreeViewNode[];
405
+ /**
406
+ * Delete selected nodes from the tree
407
+ */
408
+ deleteSelected(): void;
409
+ /**
410
+ * Select all nodes in the tree (respects disabled state)
411
+ */
412
+ selectAll(): void;
413
+ /**
414
+ * Deselect all nodes in the tree
415
+ */
416
+ deselectAll(): void;
417
+ /**
418
+ * Find a node by ID in the tree
419
+ */
420
+ findNode(id: string): AXTreeViewNode | null;
421
+ /**
422
+ * Refresh the tree to trigger change detection
423
+ */
169
424
  refresh(): void;
170
- setNodeExpandAndChildren(valueFields: (number | string)[], value: boolean): Promise<void>;
171
- private findNodesByValueField;
172
- private expandNodeAndAllChildren;
425
+ /**
426
+ * Reload the entire tree data from the datasource
427
+ * For callback datasource: clears all nodes and reloads from root
428
+ * For array datasource: refreshes the current data
429
+ * @returns Promise that resolves when reload is complete
430
+ */
431
+ reloadData(): Promise<void>;
432
+ /**
433
+ * Check if the tree is currently loading data (root level)
434
+ * @returns true if the tree is loading root data
435
+ */
436
+ getIsLoading(): boolean;
437
+ /**
438
+ * Check if a node is currently loading
439
+ */
440
+ isNodeLoading(nodeId: string): boolean;
441
+ /**
442
+ * Get loading state for a node (internal state)
443
+ */
444
+ getNodeLoading(node: AXTreeViewNode): boolean;
445
+ /**
446
+ * Edit/update a node's properties
447
+ * @param nodeId - The ID of the node to edit
448
+ * @param updates - Partial node object with properties to update
449
+ * @returns true if node was found and updated, false otherwise
450
+ */
451
+ editNode(nodeId: string, updates: Partial<AXTreeViewNode>): boolean;
452
+ /**
453
+ * Add a child node to a parent node
454
+ * @param parentId - The ID of the parent node
455
+ * @param childNode - The child node to add
456
+ * @param index - Optional index to insert at (default: append to end)
457
+ * @returns true if parent was found and child was added, false otherwise
458
+ */
459
+ addChild(parentId: string, childNode: AXTreeViewNode, index?: number): boolean;
460
+ /**
461
+ * Remove a node from the tree
462
+ * @param nodeId - The ID of the node to remove
463
+ * @returns The removed node if found, null otherwise
464
+ */
465
+ removeNode(nodeId: string): AXTreeViewNode | null;
466
+ /**
467
+ * Expand a specific node
468
+ * @param nodeId - The ID of the node to expand
469
+ * @returns Promise that resolves when expansion is complete (if lazy loading)
470
+ */
471
+ expandNode(nodeId: string): Promise<void>;
472
+ /**
473
+ * Collapse a specific node
474
+ * @param nodeId - The ID of the node to collapse
475
+ */
476
+ collapseNode(nodeId: string): void;
477
+ /**
478
+ * Toggle expansion state of a specific node
479
+ * @param nodeId - The ID of the node to toggle
480
+ * @returns Promise that resolves when toggle is complete (if lazy loading)
481
+ */
482
+ toggleNodeExpansion(nodeId: string): Promise<void>;
483
+ /**
484
+ * Programmatically select a node
485
+ * @param nodeId - The ID of the node to select
486
+ * @returns true if node was found and selected, false otherwise
487
+ */
488
+ selectNode(nodeId: string): boolean;
489
+ /**
490
+ * Programmatically deselect a node
491
+ * @param nodeId - The ID of the node to deselect
492
+ * @returns true if node was found and deselected, false otherwise
493
+ */
494
+ deselectNode(nodeId: string): boolean;
495
+ /**
496
+ * Get parent node of a given node
497
+ * @param nodeId - The ID of the node
498
+ * @returns The parent node if found, null otherwise
499
+ */
500
+ getParent(nodeId: string): AXTreeViewNode | null;
501
+ /**
502
+ * Get children of a node
503
+ * @param nodeId - The ID of the parent node
504
+ * @returns Array of child nodes, or null if node not found
505
+ */
506
+ getChildren(nodeId: string): AXTreeViewNode[] | null;
507
+ /**
508
+ * Get all root nodes
509
+ * @returns Array of root nodes
510
+ */
511
+ getRootNodes(): AXTreeViewNode[];
512
+ /**
513
+ * Get all nodes in a flat array
514
+ * @returns Array of all nodes in the tree
515
+ */
516
+ getAllNodes(): AXTreeViewNode[];
517
+ /**
518
+ * Get the path to a node (array of parent IDs from root to node)
519
+ * @param nodeId - The ID of the node
520
+ * @returns Array of node IDs representing the path, or empty array if node not found
521
+ */
522
+ getNodePath(nodeId: string): string[];
523
+ /**
524
+ * Get the level/depth of a node (0 = root level)
525
+ * @param nodeId - The ID of the node
526
+ * @returns The level of the node, or -1 if node not found
527
+ */
528
+ getNodeLevel(nodeId: string): number;
529
+ /**
530
+ * Programmatically move a node to a new parent
531
+ * @param nodeId - The ID of the node to move
532
+ * @param newParentId - The ID of the new parent (undefined for root level)
533
+ * @param index - Optional index to insert at (default: append to end)
534
+ * @returns true if move was successful, false otherwise
535
+ */
536
+ moveNode(nodeId: string, newParentId?: string, index?: number): boolean;
537
+ /**
538
+ * Clone a node (creates a deep copy)
539
+ * @param nodeId - The ID of the node to clone
540
+ * @returns The cloned node, or null if node not found
541
+ */
542
+ cloneNode(nodeId: string): AXTreeViewNode | null;
543
+ /**
544
+ * Focus a specific node by ID
545
+ * @param nodeId - The ID of the node to focus
546
+ * @returns true if node was found and focused, false otherwise
547
+ */
548
+ focusNode(nodeId: string): boolean;
549
+ /**
550
+ * Get all expanded nodes
551
+ * @returns Array of expanded nodes
552
+ */
553
+ getExpandedNodes(): AXTreeViewNode[];
554
+ /**
555
+ * Get all collapsed nodes that have children
556
+ * @returns Array of collapsed nodes with children
557
+ */
558
+ getCollapsedNodes(): AXTreeViewNode[];
559
+ /**
560
+ * Check if a node is expanded
561
+ * @param nodeId - The ID of the node
562
+ * @returns true if node is expanded, false otherwise
563
+ */
564
+ isNodeExpanded(nodeId: string): boolean;
565
+ /**
566
+ * Check if a node is selected
567
+ * @param nodeId - The ID of the node
568
+ * @returns true if node is selected, false otherwise
569
+ */
570
+ isNodeSelected(nodeId: string): boolean;
571
+ /**
572
+ * Check if a node has children
573
+ * @param nodeId - The ID of the node
574
+ * @returns true if node has children, false otherwise
575
+ */
576
+ hasChildren(nodeId: string): boolean;
577
+ /**
578
+ * Check if a node is disabled (considering inheritance from parent nodes)
579
+ * @param nodeId - The ID of the node
580
+ * @returns true if node is disabled (directly or inherited), false otherwise
581
+ */
582
+ isDisabled(nodeId: string): boolean;
583
+ /**
584
+ * Get template context for a node
585
+ */
586
+ getTemplateContext(node: AXTreeViewNode, level?: number): AXTreeViewItemTemplateContext;
587
+ /**
588
+ * Calculate padding-inline for a node based on its level
589
+ */
590
+ getNodePaddingInline(level: number): number;
591
+ /**
592
+ * Check if node should show expand toggle
593
+ */
594
+ shouldShowExpandToggle(node: AXTreeViewNode): boolean;
595
+ /**
596
+ * Check if checkboxes should be shown (only for multiple mode)
597
+ */
598
+ shouldShowCheckbox(): boolean;
599
+ /**
600
+ * Check if double-click directive should be disabled for a node
601
+ * Disabled for leaf nodes (immediate clicks) or when isDoubleClickDisabled is true
602
+ */
603
+ protected isDoubleClickDisabledForNode(node: AXTreeViewNode): boolean;
604
+ /**
605
+ * Check if a node is a leaf (has no children)
606
+ * A node is a leaf if it has no loaded children AND no childrenCount (or childrenCount is 0)
607
+ */
608
+ isLeafNode(node: AXTreeViewNode): boolean;
609
+ /**
610
+ * Check if a node can be selected (considering selectMode and isLeafOnlyMode)
611
+ */
612
+ canSelectNode(node: AXTreeViewNode): boolean;
613
+ /**
614
+ * Check if checkbox should be shown for a specific node
615
+ */
616
+ shouldShowCheckboxForNode(node: AXTreeViewNode): boolean;
617
+ /**
618
+ * Generate unique list ID for each node
619
+ */
620
+ getListId(node?: AXTreeViewNode): string;
621
+ /**
622
+ * Check if a node is currently focused
623
+ */
624
+ isNodeFocused(nodeId: string): boolean;
625
+ /**
626
+ * Get ARIA level for a node
627
+ */
628
+ getNodeAriaLevel(level: number): number;
629
+ /**
630
+ * Get ARIA expanded state for a node
631
+ */
632
+ getNodeAriaExpanded(node: AXTreeViewNode): string | null;
633
+ /**
634
+ * Get ARIA selected state for a node
635
+ */
636
+ getNodeAriaSelected(node: AXTreeViewNode): string | null;
637
+ /**
638
+ * Emit selection change event with all selected nodes
639
+ */
640
+ private emitSelectionChange;
641
+ /**
642
+ * Handle node double click
643
+ */
644
+ onNodeDoubleClickHandle(node: AXTreeViewNode, event: Event): Promise<void>;
645
+ /**
646
+ * Handle node click handle
647
+ */
648
+ onNodeClickHandle(node: AXTreeViewNode, event: Event): void;
649
+ /**
650
+ * Toggle node expansion state with lazy loading support
651
+ * Note: Disabled nodes can still be toggled (expanded/collapsed) for better UX
652
+ */
653
+ toggleNode(node: AXTreeViewNode, event: Event): Promise<void>;
654
+ /**
655
+ * Toggle node selection state with indeterminate support (for multiple mode)
656
+ */
657
+ toggleSelection(node: AXTreeViewNode, event: AXValueChangedEvent): void;
658
+ /**
659
+ * Handle drop events for tree nodes
660
+ */
661
+ onDrop(event: AXDropListDroppedEvent, parentNode?: AXTreeViewNode): void;
662
+ /**
663
+ * Handle drop events when dropping directly onto a node (to make it a child)
664
+ */
665
+ onDropOntoNode(event: AXDropListDroppedEvent, targetNode: AXTreeViewNode): void;
666
+ /**
667
+ * Handle node focus event
668
+ */
669
+ onNodeFocus(nodeId: string): void;
670
+ /**
671
+ * Handle tree container focus - focus first node if none is focused
672
+ */
673
+ onTreeFocus(event: FocusEvent): void;
674
+ /**
675
+ * Handle tree container blur
676
+ */
677
+ onTreeBlur(event: FocusEvent): void;
678
+ /**
679
+ * Handle keyboard navigation
680
+ */
681
+ handleKeyDown(event: KeyboardEvent): void;
682
+ /**
683
+ * Load root items when datasource is a function
684
+ */
685
+ private loadRootItems;
686
+ /**
687
+ * Load children for a node using lazy loading
688
+ * Only calls callback if:
689
+ * - children field is undefined or empty
690
+ * - AND childrenCount > 0
691
+ */
692
+ private loadNodeChildren;
693
+ /**
694
+ * Internal method to refresh nodes signal and sync back to datasource if it's an array
695
+ * Creates new array references for all nested children to ensure reactivity
696
+ */
697
+ private refreshNodes;
698
+ /**
699
+ * Recursively ensure all children arrays have new references to trigger change detection
700
+ * Mutates the tree structure by replacing children arrays with new array references
701
+ */
702
+ private ensureNewArrayReferences;
703
+ /**
704
+ * Handle single selection mode
705
+ */
706
+ private handleSingleSelection;
707
+ /**
708
+ * Handle multiple selection mode (used internally, but in multiple mode selection is primarily handled by checkboxes)
709
+ */
710
+ private handleMultipleSelection;
711
+ /**
712
+ * Get array reference by drop list ID
713
+ */
714
+ private getArrayByListId;
715
+ /**
716
+ * Find parent node by list ID
717
+ */
718
+ private findParentByListId;
719
+ /**
720
+ * Check if move operation is allowed based on dragBehavior
721
+ */
722
+ private canMoveToParent;
723
+ /**
724
+ * Check if reorder operation is allowed based on dragBehavior
725
+ */
726
+ private canReorder;
727
+ /**
728
+ * Handle reordering within the same list */
729
+ private handleReorder;
730
+ /**
731
+ * Handle moving between different lists
732
+ */
733
+ private handleMove;
734
+ /**
735
+ * Emit beforeDrop event and return whether to continue
736
+ */
737
+ private emitBeforeDropEvent;
738
+ /**
739
+ * Emit drop events based on operation type
740
+ */
741
+ private emitDropEvents;
742
+ /**
743
+ * Get the currently focused node
744
+ */
745
+ private getFocusedNode;
746
+ /**
747
+ * Set focus to a node by ID
748
+ */
749
+ private focusNodeById;
750
+ /**
751
+ * Handle keyboard navigation keys
752
+ */
753
+ private handleNavigationKey;
754
+ /**
755
+ * Handle Space key selection
756
+ * In single mode: replaces selection (deselects all, selects this node)
757
+ * In multiple mode: toggles selection
758
+ */
759
+ private handleSpaceKeySelection;
760
+ /**
761
+ * Handle Enter key selection
762
+ * In single mode: replaces selection (deselects all, selects this node)
763
+ * In multiple mode: replaces selection (deselects all, selects this node and respects selectionBehavior)
764
+ */
765
+ private handleEnterKeySelection;
766
+ /**
767
+ * Handle Ctrl/Cmd + Enter key selection
768
+ */
769
+ private handleCtrlEnterSelection;
770
+ /**
771
+ * Type guard to check if value is an Event
772
+ */
773
+ private isEvent;
774
+ /**
775
+ * Handle errors consistently
776
+ */
777
+ private handleError;
173
778
  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>;
779
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXTreeViewComponent, "ax-tree-view", never, { "datasource": { "alias": "datasource"; "required": true; "isSignal": true; }; "selectMode": { "alias": "selectMode"; "required": false; "isSignal": true; }; "selectionBehavior": { "alias": "selectionBehavior"; "required": false; "isSignal": true; }; "dragArea": { "alias": "dragArea"; "required": false; "isSignal": true; }; "dragBehavior": { "alias": "dragBehavior"; "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; }; "inheritDisabled": { "alias": "inheritDisabled"; "required": false; "isSignal": true; }; "expandOnDoubleClick": { "alias": "expandOnDoubleClick"; "required": false; "isSignal": true; }; }, { "datasource": "datasourceChange"; "onBeforeDrop": "onBeforeDrop"; "onNodeToggle": "onNodeToggle"; "onNodeSelect": "onNodeSelect"; "onNodeDoubleClick": "onNodeDoubleClick"; "onNodeClick": "onNodeClick"; "onSelectionChange": "onSelectionChange"; "onOrderChange": "onOrderChange"; "onMoveChange": "onMoveChange"; "onItemsChange": "onItemsChange"; }, never, never, true, never>;
175
780
  }
176
781
 
177
782
  declare class AXTreeViewModule {
178
783
  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]>;
784
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXTreeViewModule, never, [typeof AXTreeViewComponent], never>;
180
785
  static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXTreeViewModule>;
181
786
  }
182
787
 
183
- export { AXTreeItemClickBaseEvent, AXTreeViewBase, AXTreeViewComponent, AXTreeViewItemComponent, AXTreeViewModule };
184
- export type { AXTreeViewExpandBehavior, AXTreeViewLook, AXTreeViewOperationMethod, AXTreeViewSelectionBehavior, AXTreeViewSelectionScope };
788
+ /**
789
+ * Service for tree node operations
790
+ * Handles all business logic for tree node manipulation
791
+ */
792
+ declare class AXTreeViewService {
793
+ private static readonly ROOT_LIST_ID;
794
+ private static readonly NODE_DROP_PREFIX;
795
+ private static readonly LIST_PREFIX;
796
+ /**
797
+ * Find a node by ID in the tree
798
+ */
799
+ findNodeById(nodes: AXTreeViewNode[], id: string, idField?: string, childrenField?: string): AXTreeViewNode | null;
800
+ /**
801
+ * Find parent node of a given node
802
+ */
803
+ findParentNode(nodes: AXTreeViewNode[], targetNode: AXTreeViewNode, idField?: string, childrenField?: string): AXTreeViewNode | undefined;
804
+ /**
805
+ * Check if targetNode is a descendant of ancestorNode (or the same node)
806
+ * Prevents circular references by checking if target exists in ancestor's children tree
807
+ */
808
+ isValidDropTarget(movedNode: AXTreeViewNode, targetNode: AXTreeViewNode, idField?: string, childrenField?: string): boolean;
809
+ /**
810
+ * Check if targetNode is a descendant of ancestorNode
811
+ */
812
+ private isNodeDescendantOf;
813
+ /**
814
+ * Build a flat list of all visible focusable nodes
815
+ */
816
+ buildFlatNodeList(nodes: AXTreeViewNode[], hiddenField?: string, disabledField?: string, expandedField?: string, childrenField?: string): AXTreeViewFlatNode[];
817
+ /**
818
+ * Check if node has children
819
+ */
820
+ hasChildren(node: AXTreeViewNode, childrenField?: string): boolean;
821
+ /**
822
+ * Check if node can be lazy loaded
823
+ */
824
+ canLazyLoad(node: AXTreeViewNode, isLazyDataSource: boolean, childrenCountField?: string, childrenField?: string): boolean;
825
+ /**
826
+ * Recursively select/deselect all children
827
+ */
828
+ selectAllChildren(children: AXTreeViewNode[], selected: boolean, selectedField?: string, indeterminateField?: string, childrenField?: string): void;
829
+ /**
830
+ * Get selection state of children
831
+ */
832
+ getChildrenSelectionState(children: AXTreeViewNode[], selectedField?: string, indeterminateField?: string): AXTreeViewChildrenSelectionState;
833
+ /**
834
+ * Update parent node states based on children selection (with intermediate state support)
835
+ */
836
+ updateParentStates(nodes: AXTreeViewNode[], changedNode: AXTreeViewNode, intermediateState: boolean, idField?: string, childrenField?: string, selectedField?: string, indeterminateField?: string): void;
837
+ /**
838
+ * Recursively deselect all nodes
839
+ */
840
+ deselectAllNodes(nodes: AXTreeViewNode[], selectedField?: string, indeterminateField?: string, childrenField?: string): void;
841
+ /**
842
+ * Recursively set selection state for all nodes
843
+ */
844
+ setAllSelection(nodes: AXTreeViewNode[], selected: boolean, selectedField?: string, indeterminateField?: string, childrenField?: string): void;
845
+ /**
846
+ * Recursively count selected nodes
847
+ */
848
+ countSelected(nodes: AXTreeViewNode[], selectedField?: string, childrenField?: string): number;
849
+ /**
850
+ * Recursively collect selected nodes
851
+ */
852
+ collectSelected(nodes: AXTreeViewNode[], result: AXTreeViewNode[], selectedField?: string, childrenField?: string): void;
853
+ /**
854
+ * Recursively remove selected nodes
855
+ */
856
+ removeSelected(nodes: AXTreeViewNode[], selectedField?: string, indeterminateField?: string, childrenField?: string): void;
857
+ /**
858
+ * Recursively update all parent states in the tree (used after deletion)
859
+ */
860
+ updateAllParentStates(nodes: AXTreeViewNode[], intermediateState: boolean, childrenField?: string, selectedField?: string, indeterminateField?: string): void;
861
+ /**
862
+ * Recursively set expanded state (with lazy loading)
863
+ */
864
+ setExpandedState(nodes: AXTreeViewNode[], expanded: boolean, isLazyDataSource: boolean, loadNodeChildren: (node: AXTreeViewNode) => Promise<void>, expandedField?: string, childrenField?: string, childrenCountField?: string): Promise<void>;
865
+ /**
866
+ * Get array reference by drop list ID
867
+ */
868
+ getArrayByListId(nodes: AXTreeViewNode[], listId: string, idField?: string, childrenField?: string): AXTreeViewNode[] | null;
869
+ /**
870
+ * Find parent node by list ID
871
+ */
872
+ findParentByListId(nodes: AXTreeViewNode[], listId: string, idField?: string, childrenField?: string): AXTreeViewNode | undefined;
873
+ /**
874
+ * Generate unique list ID for each node
875
+ */
876
+ getListId(node: AXTreeViewNode | undefined, idField?: string): string;
877
+ /**
878
+ * Get root list ID constant
879
+ */
880
+ getRootListId(): string;
881
+ /**
882
+ * Get node drop prefix constant
883
+ */
884
+ getNodeDropPrefix(): string;
885
+ /**
886
+ * Get list prefix constant
887
+ */
888
+ getListPrefix(): string;
889
+ /**
890
+ * Get all nodes in a flat array
891
+ */
892
+ getAllNodes(nodes: AXTreeViewNode[], childrenField?: string): AXTreeViewNode[];
893
+ /**
894
+ * Get the path to a node (array of parent nodes from root to node)
895
+ */
896
+ getNodePath(nodes: AXTreeViewNode[], nodeId: string, idField?: string, childrenField?: string): AXTreeViewNode[];
897
+ /**
898
+ * Get the level/depth of a node (0 = root level)
899
+ */
900
+ getNodeLevel(nodes: AXTreeViewNode[], nodeId: string, idField?: string, childrenField?: string): number;
901
+ /**
902
+ * Get sibling nodes of a given node
903
+ */
904
+ getSiblings(nodes: AXTreeViewNode[], nodeId: string, idField?: string, childrenField?: string): AXTreeViewNode[];
905
+ /**
906
+ * Clone a node (creates a deep copy)
907
+ */
908
+ 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;
909
+ /**
910
+ * Move a node to a new parent in the tree
911
+ * @param nodes - Root nodes array
912
+ * @param nodeId - The ID of the node to move
913
+ * @param newParentId - The ID of the new parent (undefined for root level)
914
+ * @param index - Optional index to insert at (default: append to end)
915
+ * @param idField - Field name for node ID
916
+ * @param childrenField - Field name for children array
917
+ * @param childrenCountField - Field name for children count
918
+ * @param expandedField - Field name for expanded state
919
+ * @returns Object with success status, moved node, previous parent, new parent, and indices
920
+ */
921
+ moveNode(nodes: AXTreeViewNode[], nodeId: string, newParentId: string | undefined, index: number | undefined, idField?: string, childrenField?: string, childrenCountField?: string, expandedField?: string): {
922
+ success: boolean;
923
+ movedNode?: AXTreeViewNode;
924
+ previousParent?: AXTreeViewNode;
925
+ newParent?: AXTreeViewNode;
926
+ previousIndex: number;
927
+ currentIndex: number;
928
+ };
929
+ /**
930
+ * Edit/update a node's properties
931
+ * @param nodes - Root nodes array
932
+ * @param nodeId - The ID of the node to edit
933
+ * @param updates - Partial node object with properties to update
934
+ * @param idField - Field name for node ID
935
+ * @param childrenField - Field name for children array
936
+ * @param childrenCountField - Field name for children count
937
+ * @returns The updated node if found, null otherwise
938
+ */
939
+ editNode(nodes: AXTreeViewNode[], nodeId: string, updates: Partial<AXTreeViewNode>, idField?: string, childrenField?: string, childrenCountField?: string): AXTreeViewNode | null;
940
+ /**
941
+ * Add a child node to a parent node
942
+ * @param nodes - Root nodes array
943
+ * @param parentId - The ID of the parent node
944
+ * @param childNode - The child node to add
945
+ * @param index - Optional index to insert at (default: append to end)
946
+ * @param idField - Field name for node ID
947
+ * @param childrenField - Field name for children array
948
+ * @param childrenCountField - Field name for children count
949
+ * @param expandedField - Field name for expanded state
950
+ * @returns The parent node if found and child was added, null otherwise
951
+ */
952
+ addChild(nodes: AXTreeViewNode[], parentId: string, childNode: AXTreeViewNode, index: number | undefined, idField?: string, childrenField?: string, childrenCountField?: string, expandedField?: string): AXTreeViewNode | null;
953
+ /**
954
+ * Remove a node from the tree
955
+ * @param nodes - Root nodes array
956
+ * @param nodeId - The ID of the node to remove
957
+ * @param idField - Field name for node ID
958
+ * @param childrenField - Field name for children array
959
+ * @param childrenCountField - Field name for children count
960
+ * @returns The removed node if found, null otherwise
961
+ */
962
+ removeNode(nodes: AXTreeViewNode[], nodeId: string, idField?: string, childrenField?: string, childrenCountField?: string): AXTreeViewNode | null;
963
+ /**
964
+ * Validate node structure (check for required fields and circular references)
965
+ */
966
+ validateNode(node: AXTreeViewNode, visitedIds?: Set<string>, idField?: string, titleField?: string, childrenField?: string, childrenCountField?: string): {
967
+ valid: boolean;
968
+ errors: string[];
969
+ };
970
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXTreeViewService, never>;
971
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXTreeViewService>;
972
+ }
973
+
974
+ export { AXTreeViewComponent, AXTreeViewModule, AXTreeViewService };
975
+ export type { AXTreeViewBeforeDropEvent, AXTreeViewCallback, AXTreeViewChildrenSelectionState, AXTreeViewDataSource, AXTreeViewDragArea, AXTreeViewDragBehavior, AXTreeViewDropEvent, AXTreeViewFlatNode, AXTreeViewItemTemplateContext, AXTreeViewNode, AXTreeViewNodeClickEvent, AXTreeViewNodeDoubleClickEvent, AXTreeViewNodeSelectEvent, AXTreeViewNodeToggleEvent, AXTreeViewSelectMode, AXTreeViewSelectionBehavior, AXTreeViewSelectionChangeEvent, AXTreeViewViewLook };