@genexus/genexus-ide-ui 0.0.62 → 0.0.64

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 (574) hide show
  1. package/dist/cjs/ch-accordion.cjs.entry.js +1 -1
  2. package/dist/cjs/ch-action-group_2.cjs.entry.js +1 -1
  3. package/dist/cjs/ch-alert.cjs.entry.js +1 -1
  4. package/dist/cjs/ch-checkbox_3.cjs.entry.js +1171 -0
  5. package/dist/cjs/ch-drag-bar.cjs.entry.js +1 -1
  6. package/dist/cjs/ch-dropdown-item-separator.cjs.entry.js +1 -1
  7. package/dist/cjs/ch-dropdown-item.cjs.entry.js +1 -1
  8. package/dist/cjs/ch-dropdown.cjs.entry.js +1 -1
  9. package/dist/cjs/ch-form-checkbox.cjs.entry.js +1 -1
  10. package/dist/cjs/ch-grid-action-refresh_7.cjs.entry.js +1 -1
  11. package/dist/cjs/ch-grid-column-display.cjs.entry.js +1 -1
  12. package/dist/cjs/ch-grid-infinite-scroll.cjs.entry.js +1 -1
  13. package/dist/cjs/ch-grid-row-actions.cjs.entry.js +1 -1
  14. package/dist/cjs/ch-grid-rowset-empty.cjs.entry.js +1 -1
  15. package/dist/cjs/ch-grid-rowset-legend.cjs.entry.js +1 -1
  16. package/dist/cjs/ch-grid-virtual-scroller.cjs.entry.js +1 -1
  17. package/dist/cjs/ch-grid_8.cjs.entry.js +2 -2
  18. package/dist/cjs/ch-icon_2.cjs.entry.js +2 -1
  19. package/dist/cjs/ch-intersection-observer.cjs.entry.js +1 -1
  20. package/dist/cjs/ch-next-data-modeling-render.cjs.entry.js +242 -0
  21. package/dist/cjs/{ch-next-data-modeling-item.cjs.entry.js → ch-next-data-modeling_2.cjs.entry.js} +21 -2
  22. package/dist/cjs/ch-next-progress-bar.cjs.entry.js +1 -1
  23. package/dist/cjs/ch-notifications-item.cjs.entry.js +1 -1
  24. package/dist/cjs/ch-notifications.cjs.entry.js +1 -1
  25. package/dist/cjs/ch-qr.cjs.entry.js +1 -1
  26. package/dist/cjs/ch-select-option.cjs.entry.js +1 -1
  27. package/dist/cjs/ch-select.cjs.entry.js +2 -2
  28. package/dist/cjs/ch-sidebar-menu-list-item.cjs.entry.js +1 -1
  29. package/dist/cjs/ch-sidebar-menu-list.cjs.entry.js +1 -1
  30. package/dist/cjs/ch-sidebar-menu.cjs.entry.js +2 -2
  31. package/dist/cjs/ch-step-list-item.cjs.entry.js +1 -1
  32. package/dist/cjs/ch-step-list.cjs.entry.js +1 -1
  33. package/dist/cjs/ch-style.cjs.entry.js +1 -1
  34. package/dist/cjs/ch-suggest_4.cjs.entry.js +3 -3
  35. package/dist/cjs/ch-test-action-group.cjs.entry.js +1 -1
  36. package/dist/cjs/ch-test-dropdown.cjs.entry.js +1 -1
  37. package/dist/cjs/ch-test-suggest.cjs.entry.js +1 -1
  38. package/dist/cjs/ch-textblock.cjs.entry.js +1 -1
  39. package/dist/cjs/ch-timer.cjs.entry.js +1 -1
  40. package/dist/cjs/ch-tooltip.cjs.entry.js +1 -1
  41. package/dist/cjs/ch-tree-item.cjs.entry.js +1 -1
  42. package/dist/cjs/ch-tree-view-render-wrapper.cjs.entry.js +163 -0
  43. package/dist/cjs/ch-tree-view-render_2.cjs.entry.js +822 -0
  44. package/dist/cjs/ch-tree.cjs.entry.js +1 -1
  45. package/dist/cjs/ch-window_2.cjs.entry.js +1 -1
  46. package/dist/cjs/{common-5d08e273.js → common-2100f35f.js} +1 -1
  47. package/dist/cjs/{config-c652329b.js → config-8634e7dd.js} +1 -1
  48. package/dist/cjs/{form-c75c9ac0.js → form-437d6a38.js} +1 -1
  49. package/dist/cjs/genexus-ide-ui.cjs.js +2 -2
  50. package/dist/cjs/gx-grid-chameleon.cjs.entry.js +1 -1
  51. package/dist/cjs/gx-ide-bpm-app-declaration.cjs.entry.js +4 -4
  52. package/dist/cjs/gx-ide-container_4.cjs.entry.js +4 -3
  53. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js +2 -2
  54. package/dist/cjs/gx-ide-directory-selector.cjs.entry.js +24 -5
  55. package/dist/cjs/gx-ide-entity-selector_2.cjs.entry.js +2 -2
  56. package/dist/cjs/gx-ide-file-selector.cjs.entry.js +1 -1
  57. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js +96 -64
  58. package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js +30 -15
  59. package/dist/cjs/gx-ide-list-selector_2.cjs.entry.js +1 -1
  60. package/dist/cjs/gx-ide-new-environment.cjs.entry.js +3 -3
  61. package/dist/cjs/gx-ide-new-kb.cjs.entry.js +3 -3
  62. package/dist/cjs/gx-ide-new-object.cjs.entry.js +2 -2
  63. package/dist/cjs/gx-ide-object-selector.cjs.entry.js +3 -3
  64. package/dist/cjs/gx-ide-references.cjs.entry.js +3 -3
  65. package/dist/cjs/gx-ide-share-kb.cjs.entry.js +3 -3
  66. package/dist/cjs/gx-ide-status-buttons_2.cjs.entry.js +1 -1
  67. package/dist/cjs/gx-ide-switch-panel.cjs.entry.js +1 -1
  68. package/dist/cjs/gx-ide-switcher.cjs.entry.js +1 -1
  69. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +3 -3
  70. package/dist/cjs/gx-ide-team-dev-select-recent-comment.cjs.entry.js +2 -2
  71. package/dist/cjs/gx-ide-team-dev-update-partial-selection.cjs.entry.js +2 -2
  72. package/dist/cjs/gx-ide-team-dev-update-to-revision.cjs.entry.js +2 -2
  73. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +3 -3
  74. package/dist/cjs/gx-ide-template.cjs.entry.js +2 -2
  75. package/dist/cjs/gx-ide-test.cjs.entry.js +108 -123
  76. package/dist/cjs/gx-ide-top-bar.cjs.entry.js +1 -1
  77. package/dist/cjs/gx-ide-ww-images.cjs.entry.js +3 -3
  78. package/dist/cjs/gxg-accordion-item.cjs.entry.js +2 -2
  79. package/dist/cjs/gxg-accordion.cjs.entry.js +1 -1
  80. package/dist/cjs/gxg-alert.cjs.entry.js +1 -1
  81. package/dist/cjs/gxg-box.cjs.entry.js +1 -1
  82. package/dist/cjs/gxg-breadcrumb.cjs.entry.js +1 -1
  83. package/dist/cjs/gxg-breadcrumbs.cjs.entry.js +1 -1
  84. package/dist/cjs/gxg-button-group.cjs.entry.js +3 -3
  85. package/dist/cjs/gxg-button.cjs.entry.js +2 -2
  86. package/dist/cjs/gxg-card.cjs.entry.js +36 -3
  87. package/dist/cjs/gxg-color-picker.cjs.entry.js +3 -3
  88. package/dist/cjs/gxg-column.cjs.entry.js +1 -1
  89. package/dist/cjs/gxg-columns.cjs.entry.js +1 -1
  90. package/dist/cjs/gxg-combo-box_2.cjs.entry.js +3 -3
  91. package/dist/cjs/gxg-container.cjs.entry.js +1 -1
  92. package/dist/cjs/gxg-contextual-menu-item.cjs.entry.js +1 -1
  93. package/dist/cjs/gxg-contextual-menu-submenu.cjs.entry.js +1 -1
  94. package/dist/cjs/gxg-contextual-menu.cjs.entry.js +1 -1
  95. package/dist/cjs/gxg-demo.cjs.entry.js +1 -1
  96. package/dist/cjs/gxg-drag-box.cjs.entry.js +1 -1
  97. package/dist/cjs/gxg-drag-container.cjs.entry.js +1 -1
  98. package/dist/cjs/gxg-drop-down.cjs.entry.js +2 -2
  99. package/dist/cjs/gxg-filter-item.cjs.entry.js +1 -1
  100. package/dist/cjs/gxg-filter.cjs.entry.js +1 -1
  101. package/dist/cjs/gxg-form-checkbox-group.cjs.entry.js +2 -2
  102. package/dist/cjs/gxg-form-checkbox.cjs.entry.js +3 -3
  103. package/dist/cjs/gxg-form-message.cjs.entry.js +2 -2
  104. package/dist/cjs/gxg-form-radio-group.cjs.entry.js +2 -2
  105. package/dist/cjs/gxg-form-radio.cjs.entry.js +1 -1
  106. package/dist/cjs/gxg-form-textarea.cjs.entry.js +3 -3
  107. package/dist/cjs/gxg-label_2.cjs.entry.js +2 -2
  108. package/dist/cjs/gxg-list-box_2.cjs.entry.js +3 -3
  109. package/dist/cjs/gxg-loader.cjs.entry.js +1 -1
  110. package/dist/cjs/gxg-menu-item.cjs.entry.js +1 -1
  111. package/dist/cjs/gxg-menu-slim-item.cjs.entry.js +1 -1
  112. package/dist/cjs/gxg-menu-slim-list.cjs.entry.js +1 -1
  113. package/dist/cjs/gxg-menu-slim.cjs.entry.js +1 -1
  114. package/dist/cjs/gxg-menu.cjs.entry.js +1 -1
  115. package/dist/cjs/gxg-modal.cjs.entry.js +2 -2
  116. package/dist/cjs/gxg-more-info.cjs.entry.js +1 -1
  117. package/dist/cjs/gxg-option-v2.cjs.entry.js +1 -1
  118. package/dist/cjs/gxg-option.cjs.entry.js +1 -1
  119. package/dist/cjs/gxg-options-item.cjs.entry.js +1 -1
  120. package/dist/cjs/gxg-options.cjs.entry.js +2 -2
  121. package/dist/cjs/gxg-paginator.cjs.entry.js +1 -1
  122. package/dist/cjs/gxg-pill.cjs.entry.js +12 -4
  123. package/dist/cjs/gxg-pills.cjs.entry.js +4 -3
  124. package/dist/cjs/gxg-progress-bar.cjs.entry.js +1 -1
  125. package/dist/cjs/gxg-scroll.cjs.entry.js +1 -1
  126. package/dist/cjs/gxg-select-v2.cjs.entry.js +2 -2
  127. package/dist/cjs/gxg-select.cjs.entry.js +3 -3
  128. package/dist/cjs/gxg-separator.cjs.entry.js +1 -1
  129. package/dist/cjs/gxg-slider.cjs.entry.js +1 -1
  130. package/dist/cjs/gxg-spacer-layout.cjs.entry.js +1 -1
  131. package/dist/cjs/gxg-spacer-one.cjs.entry.js +1 -1
  132. package/dist/cjs/gxg-split.cjs.entry.js +1 -1
  133. package/dist/cjs/gxg-splitter.cjs.entry.js +1 -1
  134. package/dist/cjs/gxg-stack.cjs.entry.js +1 -1
  135. package/dist/cjs/gxg-stepper.cjs.entry.js +1 -1
  136. package/dist/cjs/gxg-tab_4.cjs.entry.js +14 -7
  137. package/dist/cjs/gxg-test.cjs.entry.js +1 -1
  138. package/dist/cjs/gxg-text.cjs.entry.js +8 -4
  139. package/dist/cjs/gxg-title-editable.cjs.entry.js +11 -5
  140. package/dist/cjs/gxg-toggle.cjs.entry.js +1 -1
  141. package/dist/cjs/gxg-toolbar-item.cjs.entry.js +1 -1
  142. package/dist/cjs/gxg-toolbar.cjs.entry.js +1 -1
  143. package/dist/cjs/gxg-tree-grid-divs.cjs.entry.js +1 -1
  144. package/dist/cjs/{gxg-tree_2.cjs.entry.js → gxg-tree-item.cjs.entry.js} +1 -213
  145. package/dist/cjs/gxg-tree.cjs.entry.js +218 -0
  146. package/dist/cjs/gxg-window.cjs.entry.js +1 -1
  147. package/dist/cjs/{index-3e90909d.js → index-69adec41.js} +1 -1
  148. package/dist/cjs/{index-5a32426a.js → index-f9bb1815.js} +5 -0
  149. package/dist/cjs/loader.cjs.js +2 -2
  150. package/dist/cjs/{render-combo-items-d99a186a.js → render-combo-items-05509216.js} +1 -1
  151. package/dist/cjs/{render-suggest-c623955f.js → render-suggest-a4363c7b.js} +1 -1
  152. package/dist/cjs/{store-0866de9f.js → store-5fad773e.js} +2 -1
  153. package/dist/collection/collection-manifest.json +5 -3
  154. package/dist/collection/common/config.js +1 -1
  155. package/dist/collection/components/_helpers/directory-selector/directory-selector.js +28 -4
  156. package/dist/collection/components/_helpers/list-selector/list-selector-item/list-selector-item.js +1 -1
  157. package/dist/collection/components/_helpers/list-selector/list-selector.js +1 -1
  158. package/dist/collection/components/_test/test.css +5 -0
  159. package/dist/collection/components/_test/test.js +109 -220
  160. package/dist/collection/components/kb-manager-export/gx-ide-assets/kb-manager-export/langs/kb-manager-export.lang.en.json +4 -1
  161. package/dist/collection/components/kb-manager-export/helpers.js +9 -25
  162. package/dist/collection/components/kb-manager-export/kb-manager-export.js +97 -44
  163. package/dist/collection/components/kb-manager-import/gx-ide-assets/kb-manager-import/langs/kb-manager-import.lang.en.json +1 -0
  164. package/dist/collection/components/kb-manager-import/helpers.js +3 -1
  165. package/dist/collection/components/kb-manager-import/kb-manager-import.js +26 -12
  166. package/dist/components/button-group.js +1 -1
  167. package/dist/components/ch-next-data-modeling-item.js +1 -457
  168. package/dist/components/ch-next-data-modeling-render.js +295 -0
  169. package/dist/components/ch-next-data-modeling.js +1 -27
  170. package/dist/components/ch-tree-view-item.js +6 -0
  171. package/dist/components/ch-tree-view-render-wrapper.js +227 -0
  172. package/dist/components/ch-tree-view-render.js +6 -0
  173. package/dist/components/ch-tree-view.js +6 -0
  174. package/dist/components/config.js +1 -1
  175. package/dist/components/directory-selector.js +25 -5
  176. package/dist/components/form-text.js +1 -0
  177. package/dist/components/gx-ide-kb-manager-export.js +114 -74
  178. package/dist/components/gx-ide-kb-manager-import.js +43 -22
  179. package/dist/components/gx-ide-references.js +21 -15
  180. package/dist/components/gx-ide-test.js +120 -160
  181. package/dist/components/gxg-card.js +66 -4
  182. package/dist/components/gxg-color-picker.js +2 -2
  183. package/dist/components/gxg-pill.js +11 -2
  184. package/dist/components/gxg-pills.js +3 -2
  185. package/dist/components/gxg-title-editable.js +1 -143
  186. package/dist/components/gxg-tree-item.js +614 -1
  187. package/dist/components/gxg-tree-view.js +2 -2
  188. package/dist/components/gxg-tree.js +236 -1
  189. package/dist/components/icon2.js +1 -0
  190. package/dist/components/index.js +5 -3
  191. package/dist/components/next-data-modeling-item.js +466 -0
  192. package/dist/{esm/ch-next-data-modeling.entry.js → components/next-data-modeling.js} +21 -7
  193. package/dist/components/store.js +1 -0
  194. package/dist/components/tab-bar.js +3 -1
  195. package/dist/components/tab-button.js +2 -1
  196. package/dist/components/tab.js +2 -1
  197. package/dist/components/tabs.js +8 -2
  198. package/dist/components/text.js +8 -3
  199. package/dist/components/title-editable.js +152 -0
  200. package/dist/components/{tree-x-list-item.js → tree-view-item.js} +49 -34
  201. package/dist/components/{ch-test-tree-x.js → tree-view-render.js} +242 -39
  202. package/dist/components/tree-view.js +410 -435
  203. package/dist/components/tree-view2.js +231 -0
  204. package/dist/esm/ch-accordion.entry.js +1 -1
  205. package/dist/esm/ch-action-group_2.entry.js +1 -1
  206. package/dist/esm/ch-alert.entry.js +1 -1
  207. package/dist/esm/ch-checkbox_3.entry.js +1165 -0
  208. package/dist/esm/ch-drag-bar.entry.js +1 -1
  209. package/dist/esm/ch-dropdown-item-separator.entry.js +1 -1
  210. package/dist/esm/ch-dropdown-item.entry.js +1 -1
  211. package/dist/esm/ch-dropdown.entry.js +1 -1
  212. package/dist/esm/ch-form-checkbox.entry.js +1 -1
  213. package/dist/esm/ch-grid-action-refresh_7.entry.js +1 -1
  214. package/dist/esm/ch-grid-column-display.entry.js +1 -1
  215. package/dist/esm/ch-grid-infinite-scroll.entry.js +1 -1
  216. package/dist/esm/ch-grid-row-actions.entry.js +1 -1
  217. package/dist/esm/ch-grid-rowset-empty.entry.js +1 -1
  218. package/dist/esm/ch-grid-rowset-legend.entry.js +1 -1
  219. package/dist/esm/ch-grid-virtual-scroller.entry.js +1 -1
  220. package/dist/esm/ch-grid_8.entry.js +2 -2
  221. package/dist/esm/ch-icon_2.entry.js +2 -1
  222. package/dist/esm/ch-intersection-observer.entry.js +1 -1
  223. package/dist/esm/ch-next-data-modeling-render.entry.js +238 -0
  224. package/dist/esm/{ch-next-data-modeling-item.entry.js → ch-next-data-modeling_2.entry.js} +21 -3
  225. package/dist/esm/ch-next-progress-bar.entry.js +1 -1
  226. package/dist/esm/ch-notifications-item.entry.js +1 -1
  227. package/dist/esm/ch-notifications.entry.js +1 -1
  228. package/dist/esm/ch-qr.entry.js +1 -1
  229. package/dist/esm/ch-select-option.entry.js +1 -1
  230. package/dist/esm/ch-select.entry.js +2 -2
  231. package/dist/esm/ch-sidebar-menu-list-item.entry.js +1 -1
  232. package/dist/esm/ch-sidebar-menu-list.entry.js +1 -1
  233. package/dist/esm/ch-sidebar-menu.entry.js +2 -2
  234. package/dist/esm/ch-step-list-item.entry.js +1 -1
  235. package/dist/esm/ch-step-list.entry.js +1 -1
  236. package/dist/esm/ch-style.entry.js +1 -1
  237. package/dist/esm/ch-suggest_4.entry.js +3 -3
  238. package/dist/esm/ch-test-action-group.entry.js +1 -1
  239. package/dist/esm/ch-test-dropdown.entry.js +1 -1
  240. package/dist/esm/ch-test-suggest.entry.js +1 -1
  241. package/dist/esm/ch-textblock.entry.js +1 -1
  242. package/dist/esm/ch-timer.entry.js +1 -1
  243. package/dist/esm/ch-tooltip.entry.js +1 -1
  244. package/dist/esm/ch-tree-item.entry.js +1 -1
  245. package/dist/esm/ch-tree-view-render-wrapper.entry.js +159 -0
  246. package/dist/esm/ch-tree-view-render_2.entry.js +817 -0
  247. package/dist/esm/ch-tree.entry.js +1 -1
  248. package/dist/esm/ch-window_2.entry.js +1 -1
  249. package/dist/esm/{common-ec35ec2f.js → common-202491f0.js} +1 -1
  250. package/dist/esm/{config-ee66bdf4.js → config-e6f580c8.js} +1 -1
  251. package/dist/esm/{form-267b92df.js → form-1e8f483d.js} +1 -1
  252. package/dist/esm/genexus-ide-ui.js +3 -3
  253. package/dist/esm/gx-grid-chameleon.entry.js +1 -1
  254. package/dist/esm/gx-ide-bpm-app-declaration.entry.js +4 -4
  255. package/dist/esm/gx-ide-container_4.entry.js +4 -3
  256. package/dist/esm/gx-ide-create-kb-from-server.entry.js +2 -2
  257. package/dist/esm/gx-ide-directory-selector.entry.js +24 -5
  258. package/dist/esm/gx-ide-entity-selector_2.entry.js +2 -2
  259. package/dist/esm/gx-ide-file-selector.entry.js +1 -1
  260. package/dist/esm/gx-ide-kb-manager-export.entry.js +96 -64
  261. package/dist/esm/gx-ide-kb-manager-import.entry.js +30 -15
  262. package/dist/esm/gx-ide-list-selector_2.entry.js +1 -1
  263. package/dist/esm/gx-ide-new-environment.entry.js +3 -3
  264. package/dist/esm/gx-ide-new-kb.entry.js +3 -3
  265. package/dist/esm/gx-ide-new-object.entry.js +2 -2
  266. package/dist/esm/gx-ide-object-selector.entry.js +3 -3
  267. package/dist/esm/gx-ide-references.entry.js +3 -3
  268. package/dist/esm/gx-ide-share-kb.entry.js +3 -3
  269. package/dist/esm/gx-ide-status-buttons_2.entry.js +1 -1
  270. package/dist/esm/gx-ide-switch-panel.entry.js +1 -1
  271. package/dist/esm/gx-ide-switcher.entry.js +1 -1
  272. package/dist/esm/gx-ide-team-dev-commit.entry.js +3 -3
  273. package/dist/esm/gx-ide-team-dev-select-recent-comment.entry.js +2 -2
  274. package/dist/esm/gx-ide-team-dev-update-partial-selection.entry.js +2 -2
  275. package/dist/esm/gx-ide-team-dev-update-to-revision.entry.js +2 -2
  276. package/dist/esm/gx-ide-team-dev-update.entry.js +3 -3
  277. package/dist/esm/gx-ide-template.entry.js +2 -2
  278. package/dist/esm/gx-ide-test.entry.js +108 -123
  279. package/dist/esm/gx-ide-top-bar.entry.js +1 -1
  280. package/dist/esm/gx-ide-ww-images.entry.js +3 -3
  281. package/dist/esm/gxg-accordion-item.entry.js +2 -2
  282. package/dist/esm/gxg-accordion.entry.js +1 -1
  283. package/dist/esm/gxg-alert.entry.js +1 -1
  284. package/dist/esm/gxg-box.entry.js +1 -1
  285. package/dist/esm/gxg-breadcrumb.entry.js +1 -1
  286. package/dist/esm/gxg-breadcrumbs.entry.js +1 -1
  287. package/dist/esm/gxg-button-group.entry.js +3 -3
  288. package/dist/esm/gxg-button.entry.js +2 -2
  289. package/dist/esm/gxg-card.entry.js +36 -3
  290. package/dist/esm/gxg-color-picker.entry.js +3 -3
  291. package/dist/esm/gxg-column.entry.js +1 -1
  292. package/dist/esm/gxg-columns.entry.js +1 -1
  293. package/dist/esm/gxg-combo-box_2.entry.js +3 -3
  294. package/dist/esm/gxg-container.entry.js +1 -1
  295. package/dist/esm/gxg-contextual-menu-item.entry.js +1 -1
  296. package/dist/esm/gxg-contextual-menu-submenu.entry.js +1 -1
  297. package/dist/esm/gxg-contextual-menu.entry.js +1 -1
  298. package/dist/esm/gxg-demo.entry.js +1 -1
  299. package/dist/esm/gxg-drag-box.entry.js +1 -1
  300. package/dist/esm/gxg-drag-container.entry.js +1 -1
  301. package/dist/esm/gxg-drop-down.entry.js +2 -2
  302. package/dist/esm/gxg-filter-item.entry.js +1 -1
  303. package/dist/esm/gxg-filter.entry.js +1 -1
  304. package/dist/esm/gxg-form-checkbox-group.entry.js +2 -2
  305. package/dist/esm/gxg-form-checkbox.entry.js +3 -3
  306. package/dist/esm/gxg-form-message.entry.js +2 -2
  307. package/dist/esm/gxg-form-radio-group.entry.js +2 -2
  308. package/dist/esm/gxg-form-radio.entry.js +1 -1
  309. package/dist/esm/gxg-form-textarea.entry.js +3 -3
  310. package/dist/esm/gxg-label_2.entry.js +2 -2
  311. package/dist/esm/gxg-list-box_2.entry.js +3 -3
  312. package/dist/esm/gxg-loader.entry.js +1 -1
  313. package/dist/esm/gxg-menu-item.entry.js +1 -1
  314. package/dist/esm/gxg-menu-slim-item.entry.js +1 -1
  315. package/dist/esm/gxg-menu-slim-list.entry.js +1 -1
  316. package/dist/esm/gxg-menu-slim.entry.js +1 -1
  317. package/dist/esm/gxg-menu.entry.js +1 -1
  318. package/dist/esm/gxg-modal.entry.js +2 -2
  319. package/dist/esm/gxg-more-info.entry.js +1 -1
  320. package/dist/esm/gxg-option-v2.entry.js +1 -1
  321. package/dist/esm/gxg-option.entry.js +1 -1
  322. package/dist/esm/gxg-options-item.entry.js +1 -1
  323. package/dist/esm/gxg-options.entry.js +2 -2
  324. package/dist/esm/gxg-paginator.entry.js +1 -1
  325. package/dist/esm/gxg-pill.entry.js +12 -4
  326. package/dist/esm/gxg-pills.entry.js +4 -3
  327. package/dist/esm/gxg-progress-bar.entry.js +1 -1
  328. package/dist/esm/gxg-scroll.entry.js +1 -1
  329. package/dist/esm/gxg-select-v2.entry.js +2 -2
  330. package/dist/esm/gxg-select.entry.js +3 -3
  331. package/dist/esm/gxg-separator.entry.js +1 -1
  332. package/dist/esm/gxg-slider.entry.js +1 -1
  333. package/dist/esm/gxg-spacer-layout.entry.js +1 -1
  334. package/dist/esm/gxg-spacer-one.entry.js +1 -1
  335. package/dist/esm/gxg-split.entry.js +1 -1
  336. package/dist/esm/gxg-splitter.entry.js +1 -1
  337. package/dist/esm/gxg-stack.entry.js +1 -1
  338. package/dist/esm/gxg-stepper.entry.js +1 -1
  339. package/dist/esm/gxg-tab_4.entry.js +14 -7
  340. package/dist/esm/gxg-test.entry.js +1 -1
  341. package/dist/esm/gxg-text.entry.js +8 -4
  342. package/dist/esm/gxg-title-editable.entry.js +11 -5
  343. package/dist/esm/gxg-toggle.entry.js +1 -1
  344. package/dist/esm/gxg-toolbar-item.entry.js +1 -1
  345. package/dist/esm/gxg-toolbar.entry.js +1 -1
  346. package/dist/esm/gxg-tree-grid-divs.entry.js +1 -1
  347. package/dist/{components/gxg-tree-item2.js → esm/gxg-tree-item.entry.js} +9 -79
  348. package/dist/{components/gxg-tree2.js → esm/gxg-tree.entry.js} +8 -32
  349. package/dist/esm/gxg-window.entry.js +1 -1
  350. package/dist/esm/{index-0da01575.js → index-0aa3977d.js} +5 -0
  351. package/dist/esm/{index-ea94e298.js → index-5ae5cf27.js} +1 -1
  352. package/dist/esm/loader.js +3 -3
  353. package/dist/esm/{render-combo-items-faf78e28.js → render-combo-items-ede5de19.js} +1 -1
  354. package/dist/esm/{render-suggest-e44dde1b.js → render-suggest-f3af661b.js} +1 -1
  355. package/dist/esm/{store-c2650ca5.js → store-eca88b9a.js} +2 -1
  356. package/dist/genexus-ide-ui/genexus-ide-ui.css +4 -4
  357. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  358. package/dist/genexus-ide-ui/gx-ide-assets/kb-manager-export/langs/kb-manager-export.lang.en.json +4 -1
  359. package/dist/genexus-ide-ui/gx-ide-assets/kb-manager-import/langs/kb-manager-import.lang.en.json +1 -0
  360. package/dist/genexus-ide-ui/{p-1fe05a05.entry.js → p-01978a13.entry.js} +1 -1
  361. package/dist/genexus-ide-ui/p-0261c202.entry.js +1 -0
  362. package/dist/genexus-ide-ui/{p-54f01d52.entry.js → p-0371daa4.entry.js} +1 -1
  363. package/dist/genexus-ide-ui/{p-73cfc07c.entry.js → p-040e960d.entry.js} +1 -1
  364. package/dist/genexus-ide-ui/p-045ddedf.entry.js +1 -0
  365. package/dist/genexus-ide-ui/{p-cbe42c29.entry.js → p-0495c639.entry.js} +1 -1
  366. package/dist/genexus-ide-ui/{p-b5dc509f.entry.js → p-07c6f7dd.entry.js} +1 -1
  367. package/dist/genexus-ide-ui/p-0906fb46.js +2 -0
  368. package/dist/genexus-ide-ui/{p-1294d220.entry.js → p-0cba56a1.entry.js} +1 -1
  369. package/dist/genexus-ide-ui/{p-527ace08.entry.js → p-0cc3af0d.entry.js} +1 -1
  370. package/dist/genexus-ide-ui/p-0d7c0cd1.entry.js +1 -0
  371. package/dist/genexus-ide-ui/{p-0c360621.entry.js → p-0e29d370.entry.js} +1 -1
  372. package/dist/genexus-ide-ui/{p-fec82adb.entry.js → p-0ff8550a.entry.js} +1 -1
  373. package/dist/genexus-ide-ui/{p-eddf8a1e.entry.js → p-10fa87ef.entry.js} +1 -1
  374. package/dist/genexus-ide-ui/{p-9aa2dd17.entry.js → p-112dc730.entry.js} +1 -1
  375. package/dist/genexus-ide-ui/{p-bb7ae451.entry.js → p-128c0527.entry.js} +1 -1
  376. package/dist/genexus-ide-ui/{p-db4f2732.entry.js → p-15685d3f.entry.js} +1 -1
  377. package/dist/genexus-ide-ui/{p-df02f70a.entry.js → p-15f4ca7a.entry.js} +1 -1
  378. package/dist/genexus-ide-ui/{p-5e40990d.entry.js → p-161969f3.entry.js} +1 -1
  379. package/dist/genexus-ide-ui/{p-4d506c74.entry.js → p-16aad0e4.entry.js} +1 -1
  380. package/dist/genexus-ide-ui/{p-b9d071f7.entry.js → p-16b0acef.entry.js} +1 -1
  381. package/dist/genexus-ide-ui/{p-fb92083f.entry.js → p-1a8d710a.entry.js} +1 -1
  382. package/dist/genexus-ide-ui/{p-d9a5b3d6.entry.js → p-1ad41f2e.entry.js} +1 -1
  383. package/dist/genexus-ide-ui/p-1bf68774.entry.js +1 -0
  384. package/dist/genexus-ide-ui/{p-81c9847d.entry.js → p-20751bae.entry.js} +1 -1
  385. package/dist/genexus-ide-ui/{p-0dee851b.entry.js → p-207c378b.entry.js} +1 -1
  386. package/dist/genexus-ide-ui/{p-a48badf0.entry.js → p-21a768d0.entry.js} +1 -1
  387. package/dist/genexus-ide-ui/{p-1dece95c.entry.js → p-231244f2.entry.js} +1 -1
  388. package/dist/genexus-ide-ui/{p-e7c46bbe.entry.js → p-2422a593.entry.js} +1 -1
  389. package/dist/genexus-ide-ui/p-2447a18f.entry.js +1 -0
  390. package/dist/genexus-ide-ui/{p-8a29aa0e.entry.js → p-2582e3d7.entry.js} +1 -1
  391. package/dist/genexus-ide-ui/{p-283afc3b.entry.js → p-2589e00e.entry.js} +1 -1
  392. package/dist/genexus-ide-ui/{p-3e3cb535.entry.js → p-264b3088.entry.js} +1 -1
  393. package/dist/genexus-ide-ui/p-264f77c4.entry.js +1 -0
  394. package/dist/genexus-ide-ui/{p-c6b514cb.entry.js → p-266539cf.entry.js} +1 -1
  395. package/dist/genexus-ide-ui/{p-bb77cb65.entry.js → p-27d835c0.entry.js} +1 -1
  396. package/dist/genexus-ide-ui/{p-a8e97a42.entry.js → p-285f0790.entry.js} +1 -1
  397. package/dist/genexus-ide-ui/{p-42209f9f.entry.js → p-2c5289df.entry.js} +1 -1
  398. package/dist/genexus-ide-ui/{p-aacec189.entry.js → p-34f4deb8.entry.js} +1 -1
  399. package/dist/genexus-ide-ui/{p-117498b7.entry.js → p-383f10ab.entry.js} +1 -1
  400. package/dist/genexus-ide-ui/{p-e8e2f4c1.entry.js → p-39bd6c60.entry.js} +1 -1
  401. package/dist/genexus-ide-ui/{p-df7996d5.entry.js → p-39c03652.entry.js} +1 -1
  402. package/dist/genexus-ide-ui/{p-f3837d78.entry.js → p-3b55122b.entry.js} +1 -1
  403. package/dist/genexus-ide-ui/{p-eb328b50.entry.js → p-3fbc7703.entry.js} +1 -1
  404. package/dist/genexus-ide-ui/p-3fc20855.entry.js +1 -0
  405. package/dist/genexus-ide-ui/{p-f8c8eebd.entry.js → p-42f71c47.entry.js} +1 -1
  406. package/dist/genexus-ide-ui/p-43386091.entry.js +1 -0
  407. package/dist/genexus-ide-ui/{p-a2479a2f.entry.js → p-43947003.entry.js} +1 -1
  408. package/dist/genexus-ide-ui/p-439a45c1.entry.js +1 -0
  409. package/dist/genexus-ide-ui/{p-8243c51d.entry.js → p-46632b39.entry.js} +1 -1
  410. package/dist/genexus-ide-ui/{p-bfb41ce9.js → p-47629213.js} +1 -1
  411. package/dist/genexus-ide-ui/{p-4f02b7bf.entry.js → p-4a756245.entry.js} +1 -1
  412. package/dist/genexus-ide-ui/{p-718759e7.entry.js → p-4ad2bc69.entry.js} +1 -1
  413. package/dist/genexus-ide-ui/{p-45b17fd8.entry.js → p-4ca8f7d3.entry.js} +1 -1
  414. package/dist/genexus-ide-ui/{p-9b93752d.entry.js → p-4cb93e1b.entry.js} +1 -1
  415. package/dist/genexus-ide-ui/{p-123b8351.entry.js → p-4d42f077.entry.js} +1 -1
  416. package/dist/genexus-ide-ui/{p-984f7626.entry.js → p-4da6f594.entry.js} +1 -1
  417. package/dist/genexus-ide-ui/{p-780caf92.entry.js → p-4f63438d.entry.js} +1 -1
  418. package/dist/genexus-ide-ui/{p-1fc0c236.entry.js → p-53424a7c.entry.js} +1 -1
  419. package/dist/genexus-ide-ui/{p-11af125f.js → p-551539eb.js} +1 -1
  420. package/dist/genexus-ide-ui/p-5624cbd0.entry.js +1 -0
  421. package/dist/genexus-ide-ui/{p-68ec655f.entry.js → p-57327cd3.entry.js} +1 -1
  422. package/dist/genexus-ide-ui/{p-f69d8c9f.entry.js → p-57972075.entry.js} +1 -1
  423. package/dist/genexus-ide-ui/{p-6b301bbb.entry.js → p-59244df7.entry.js} +1 -1
  424. package/dist/genexus-ide-ui/{p-9dfc4afa.entry.js → p-5babe487.entry.js} +1 -1
  425. package/dist/genexus-ide-ui/{p-5ec25f04.entry.js → p-61b5f2f2.entry.js} +1 -1
  426. package/dist/genexus-ide-ui/{p-71b14079.entry.js → p-61e5b3a7.entry.js} +1 -1
  427. package/dist/genexus-ide-ui/{p-d30c5a8e.entry.js → p-6272fb68.entry.js} +1 -1
  428. package/dist/genexus-ide-ui/{p-606d6814.entry.js → p-6811e556.entry.js} +1 -1
  429. package/dist/genexus-ide-ui/{p-34763105.entry.js → p-68626d13.entry.js} +1 -1
  430. package/dist/genexus-ide-ui/p-689ffafd.entry.js +1 -0
  431. package/dist/genexus-ide-ui/p-68be9582.entry.js +1 -0
  432. package/dist/genexus-ide-ui/{p-90416fc8.js → p-698d274a.js} +1 -1
  433. package/dist/genexus-ide-ui/p-6bb17c51.js +1 -0
  434. package/dist/genexus-ide-ui/{p-d67c476c.entry.js → p-6cd18b45.entry.js} +1 -1
  435. package/dist/genexus-ide-ui/{p-98b8a4b7.entry.js → p-6dba1f6c.entry.js} +1 -1
  436. package/dist/genexus-ide-ui/{p-df744a68.entry.js → p-6fafe9d4.entry.js} +1 -1
  437. package/dist/genexus-ide-ui/{p-8738b63b.entry.js → p-6fb33e4c.entry.js} +1 -1
  438. package/dist/genexus-ide-ui/{p-65e532d8.entry.js → p-718dc78b.entry.js} +1 -1
  439. package/dist/genexus-ide-ui/{p-3485ddda.entry.js → p-73204c8a.entry.js} +1 -1
  440. package/dist/genexus-ide-ui/p-783a1530.entry.js +1 -0
  441. package/dist/genexus-ide-ui/{p-e8a21ed7.entry.js → p-7ae11b35.entry.js} +1 -1
  442. package/dist/genexus-ide-ui/{p-ade59c73.entry.js → p-7d1fd88e.entry.js} +1 -1
  443. package/dist/genexus-ide-ui/{p-82ba2bec.entry.js → p-7d327d28.entry.js} +1 -1
  444. package/dist/genexus-ide-ui/{p-fc6b970d.entry.js → p-7fc8f83b.entry.js} +1 -1
  445. package/dist/genexus-ide-ui/{p-b8917eee.entry.js → p-832a1eff.entry.js} +1 -1
  446. package/dist/genexus-ide-ui/{p-94d2d18a.entry.js → p-88f896a6.entry.js} +1 -1
  447. package/dist/genexus-ide-ui/p-8c574452.entry.js +1 -0
  448. package/dist/genexus-ide-ui/{p-dfac4d3c.entry.js → p-8cf88b58.entry.js} +1 -1
  449. package/dist/genexus-ide-ui/{p-7c44a3c8.entry.js → p-8fddfbd1.entry.js} +1 -1
  450. package/dist/genexus-ide-ui/{p-19e6c2b8.entry.js → p-90b5b7ed.entry.js} +1 -1
  451. package/dist/genexus-ide-ui/{p-4a01a404.entry.js → p-91fe1c0d.entry.js} +1 -1
  452. package/dist/genexus-ide-ui/{p-976e8118.entry.js → p-95d1a4e7.entry.js} +1 -1
  453. package/dist/genexus-ide-ui/{p-3fc9cf29.entry.js → p-97dc4967.entry.js} +1 -1
  454. package/dist/genexus-ide-ui/{p-9f4b6230.entry.js → p-98ea872a.entry.js} +1 -1
  455. package/dist/genexus-ide-ui/{p-fb368434.entry.js → p-99da5de7.entry.js} +1 -1
  456. package/dist/genexus-ide-ui/{p-870c7d8f.entry.js → p-9b29a8e8.entry.js} +1 -1
  457. package/dist/genexus-ide-ui/p-9d73a85c.entry.js +1 -0
  458. package/dist/genexus-ide-ui/{p-1ff3cf87.entry.js → p-9df2aae3.entry.js} +1 -1
  459. package/dist/genexus-ide-ui/p-a0d3d2b0.entry.js +1 -0
  460. package/dist/genexus-ide-ui/{p-abfc0ad8.entry.js → p-a14dde56.entry.js} +1 -1
  461. package/dist/genexus-ide-ui/{p-c11c96d7.entry.js → p-a214edb5.entry.js} +1 -1
  462. package/dist/genexus-ide-ui/{p-a5463fc9.entry.js → p-a2c7dc8a.entry.js} +1 -1
  463. package/dist/genexus-ide-ui/{p-46ed607e.entry.js → p-a6f02255.entry.js} +1 -1
  464. package/dist/genexus-ide-ui/{p-4e53dfaf.entry.js → p-a7c3a0fc.entry.js} +1 -1
  465. package/dist/genexus-ide-ui/p-a85038e2.js +1 -0
  466. package/dist/genexus-ide-ui/{p-566ae3e7.entry.js → p-a96aa03c.entry.js} +1 -1
  467. package/dist/genexus-ide-ui/p-a99c17b1.entry.js +1 -0
  468. package/dist/genexus-ide-ui/{p-56935fba.entry.js → p-b0268924.entry.js} +1 -1
  469. package/dist/genexus-ide-ui/{p-52f6ee1e.js → p-b9fca59c.js} +1 -1
  470. package/dist/genexus-ide-ui/{p-f93e94dc.entry.js → p-ba7c3c18.entry.js} +1 -1
  471. package/dist/genexus-ide-ui/{p-0574b321.entry.js → p-bca4d4c1.entry.js} +1 -1
  472. package/dist/genexus-ide-ui/{p-25b333a5.entry.js → p-bce289e6.entry.js} +1 -1
  473. package/dist/genexus-ide-ui/{p-339a8480.entry.js → p-bf93ac90.entry.js} +1 -1
  474. package/dist/genexus-ide-ui/{p-9c82381c.entry.js → p-c00aa636.entry.js} +1 -1
  475. package/dist/genexus-ide-ui/{p-1b51da5e.entry.js → p-c0532785.entry.js} +1 -1
  476. package/dist/genexus-ide-ui/{p-8a70239f.entry.js → p-c19354eb.entry.js} +1 -1
  477. package/dist/genexus-ide-ui/{p-aec51bab.entry.js → p-c5e22cd8.entry.js} +1 -1
  478. package/dist/genexus-ide-ui/p-c74f5d08.entry.js +1 -0
  479. package/dist/genexus-ide-ui/p-c914cc1f.entry.js +1 -0
  480. package/dist/genexus-ide-ui/{p-b4b4cbdc.entry.js → p-cb1845a9.entry.js} +1 -1
  481. package/dist/genexus-ide-ui/{p-ad30241e.entry.js → p-cc7d2262.entry.js} +1 -1
  482. package/dist/genexus-ide-ui/{p-4cf3c2b9.entry.js → p-ccc9151e.entry.js} +1 -1
  483. package/dist/genexus-ide-ui/{p-72be1b75.entry.js → p-cd2fb5c9.entry.js} +1 -1
  484. package/dist/genexus-ide-ui/{p-7e13efb2.entry.js → p-cd6dafe5.entry.js} +1 -1
  485. package/dist/genexus-ide-ui/{p-5cc7c201.entry.js → p-cdaaf8f9.entry.js} +1 -1
  486. package/dist/genexus-ide-ui/{p-e542c155.entry.js → p-ce76b613.entry.js} +1 -1
  487. package/dist/genexus-ide-ui/{p-f7aa606a.entry.js → p-cf421c67.entry.js} +1 -1
  488. package/dist/genexus-ide-ui/{p-cb3a255c.entry.js → p-d080030a.entry.js} +1 -1
  489. package/dist/genexus-ide-ui/p-d0dbf94f.entry.js +1 -0
  490. package/dist/genexus-ide-ui/{p-133b562f.entry.js → p-d25da0c9.entry.js} +1 -1
  491. package/dist/genexus-ide-ui/{p-b0cb9690.entry.js → p-d5005f26.entry.js} +1 -1
  492. package/dist/genexus-ide-ui/{p-f9f1d95d.entry.js → p-da2dfb82.entry.js} +1 -1
  493. package/dist/genexus-ide-ui/{p-32bade0f.entry.js → p-da5317f5.entry.js} +1 -1
  494. package/dist/genexus-ide-ui/{p-657e57e7.entry.js → p-dc3efe56.entry.js} +1 -1
  495. package/dist/genexus-ide-ui/p-e45b5686.entry.js +1 -0
  496. package/dist/genexus-ide-ui/{p-9e428123.entry.js → p-e7c96dec.entry.js} +1 -1
  497. package/dist/genexus-ide-ui/{p-0f1388e1.entry.js → p-eb3895cc.entry.js} +1 -1
  498. package/dist/genexus-ide-ui/{p-93ec18f7.entry.js → p-eb49012b.entry.js} +1 -1
  499. package/dist/genexus-ide-ui/{p-7dd9df47.entry.js → p-ed89f1ee.entry.js} +1 -1
  500. package/dist/genexus-ide-ui/{p-3c8b9c4b.entry.js → p-efd187d0.entry.js} +1 -1
  501. package/dist/genexus-ide-ui/{p-b900ffbc.entry.js → p-f7fd7fa8.entry.js} +1 -1
  502. package/dist/genexus-ide-ui/{p-6d42b2c4.entry.js → p-f8750a75.entry.js} +1 -1
  503. package/dist/genexus-ide-ui/p-f97d7bbe.entry.js +1 -0
  504. package/dist/genexus-ide-ui/p-fa4e7177.js +1 -0
  505. package/dist/genexus-ide-ui/{p-253669d3.entry.js → p-fb2a7e10.entry.js} +1 -1
  506. package/dist/genexus-ide-ui/{p-0e28d8f3.entry.js → p-fb921907.entry.js} +1 -1
  507. package/dist/genexus-ide-ui/{p-866f6d39.entry.js → p-fc03bdd3.entry.js} +1 -1
  508. package/dist/genexus-ide-ui/{p-d7b452ef.entry.js → p-fd73e13a.entry.js} +1 -1
  509. package/dist/genexus-ide-ui/{p-0ae159de.entry.js → p-fdb7b01c.entry.js} +1 -1
  510. package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/next/data-modeling-render/next-data-modeling-render.css +3 -0
  511. package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/renders/tree-view/tree-view-render.css +3 -0
  512. package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/test/test-tree-view/tree-view-render-wrapper.css +0 -0
  513. package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/tree-view/tree-view/tree-view.css +45 -0
  514. package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/tree-view/{tree-x-list-item/tree-x-list-item.css → tree-view-item/tree-view-item.css} +58 -36
  515. package/dist/node_modules/@genexus/gemini/dist/collection/components/button-group/button-group.css +4 -5
  516. package/dist/node_modules/@genexus/gemini/dist/collection/components/card/card.css +96 -0
  517. package/dist/node_modules/@genexus/gemini/dist/collection/components/pills/pill.css +28 -0
  518. package/dist/node_modules/@genexus/gemini/dist/collection/components/pills/pills.css +7 -0
  519. package/dist/node_modules/@genexus/gemini/dist/collection/components/tab/tab.css +6 -0
  520. package/dist/node_modules/@genexus/gemini/dist/collection/components/tab-bar/tab-bar.css +10 -0
  521. package/dist/node_modules/@genexus/gemini/dist/collection/components/tab-button/tab-button.css +43 -0
  522. package/dist/node_modules/@genexus/gemini/dist/collection/components/tabs/tabs.css +12 -0
  523. package/dist/node_modules/@genexus/gemini/dist/collection/components/text/text.css +9 -0
  524. package/dist/node_modules/@genexus/gemini/dist/collection/components/title-editable/title-editable.css +25 -6
  525. package/dist/node_modules/@genexus/gemini/dist/collection/components/tree-view/tree-view.css +20 -25
  526. package/dist/types/common/helpers.d.ts +2 -2
  527. package/dist/types/components/_helpers/directory-selector/directory-selector.d.ts +4 -0
  528. package/dist/types/components/_test/test.d.ts +3 -35
  529. package/dist/types/components/kb-manager-export/helpers.d.ts +6 -4
  530. package/dist/types/components/kb-manager-export/kb-manager-export.d.ts +15 -8
  531. package/dist/types/components/kb-manager-import/helpers.d.ts +4 -3
  532. package/dist/types/components/kb-manager-import/kb-manager-import.d.ts +7 -6
  533. package/dist/types/components/references/helpers.d.ts +2 -2
  534. package/dist/types/components/references/references.d.ts +3 -3
  535. package/dist/types/components.d.ts +3 -60
  536. package/package.json +3 -3
  537. package/dist/cjs/ch-checkbox.cjs.entry.js +0 -93
  538. package/dist/cjs/ch-next-data-modeling.cjs.entry.js +0 -19
  539. package/dist/cjs/ch-test-tree-x.cjs.entry.js +0 -458
  540. package/dist/cjs/ch-tree-x_3.cjs.entry.js +0 -1541
  541. package/dist/components/ch-tree-x-list-item.js +0 -6
  542. package/dist/components/ch-tree-x.js +0 -6
  543. package/dist/components/tree-x.js +0 -504
  544. package/dist/esm/ch-checkbox.entry.js +0 -89
  545. package/dist/esm/ch-test-tree-x.entry.js +0 -454
  546. package/dist/esm/ch-tree-x_3.entry.js +0 -1535
  547. package/dist/esm/gxg-tree_2.entry.js +0 -757
  548. package/dist/genexus-ide-ui/p-00b5896d.entry.js +0 -1
  549. package/dist/genexus-ide-ui/p-092ccacd.entry.js +0 -1
  550. package/dist/genexus-ide-ui/p-1ad68b23.entry.js +0 -3
  551. package/dist/genexus-ide-ui/p-292fc3f4.entry.js +0 -1
  552. package/dist/genexus-ide-ui/p-2e0a65a3.entry.js +0 -1
  553. package/dist/genexus-ide-ui/p-2f3c0023.entry.js +0 -1
  554. package/dist/genexus-ide-ui/p-3442d19a.entry.js +0 -1
  555. package/dist/genexus-ide-ui/p-38c18db5.js +0 -1
  556. package/dist/genexus-ide-ui/p-39968306.entry.js +0 -1
  557. package/dist/genexus-ide-ui/p-3f0f7f80.entry.js +0 -1
  558. package/dist/genexus-ide-ui/p-5755f985.entry.js +0 -1
  559. package/dist/genexus-ide-ui/p-606fee7b.entry.js +0 -1
  560. package/dist/genexus-ide-ui/p-6211ca46.entry.js +0 -1
  561. package/dist/genexus-ide-ui/p-85597097.entry.js +0 -1
  562. package/dist/genexus-ide-ui/p-9380b713.entry.js +0 -1
  563. package/dist/genexus-ide-ui/p-976c3a09.js +0 -2
  564. package/dist/genexus-ide-ui/p-9e530c7d.entry.js +0 -1
  565. package/dist/genexus-ide-ui/p-ad5040e4.entry.js +0 -1
  566. package/dist/genexus-ide-ui/p-aeb3b032.entry.js +0 -1
  567. package/dist/genexus-ide-ui/p-b8d5c561.js +0 -1
  568. package/dist/genexus-ide-ui/p-c53522c9.entry.js +0 -1
  569. package/dist/genexus-ide-ui/p-d104f9a4.entry.js +0 -1
  570. package/dist/genexus-ide-ui/p-e46e26a6.js +0 -1
  571. package/dist/genexus-ide-ui/p-f6a6d8bb.entry.js +0 -1
  572. package/dist/genexus-ide-ui/p-fbb1cd20.entry.js +0 -1
  573. package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/test/test-tree-x.css +0 -3
  574. package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/tree-view/tree-x/tree-x.css +0 -45
@@ -0,0 +1,1171 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const index = require('./index-f9bb1815.js');
6
+ const reserverdNames = require('./reserverd-names-1b00889a.js');
7
+ const helpers = require('./helpers-291cb1cb.js');
8
+
9
+ const checkboxCss = "*,::before,::after{box-sizing:border-box}:host{display:flex;align-items:center;align-self:stretch;outline:unset;touch-action:manipulation;user-select:none}:host(.ch-checkbox--actionable) :is(.input,.label){cursor:pointer}.container{position:relative;width:min(1em, 20px);height:min(1em, 20px);border:1px solid var(--option-border-color, currentColor);border-radius:18.75%}.container--checked{background-color:var(--option-checked-color, #ffffff00)}.container:focus-within{box-shadow:0 0 1px 1px color-mix(in srgb, currentColor 25%, transparent)}.input{display:flex;width:100%;height:100%;opacity:0;margin:0;padding:0}.option{position:absolute;left:50%;top:50%;transform:translate(-50%, -50%);width:50%;height:50%;background-color:currentColor;opacity:0;pointer-events:none}.option--checked{opacity:1;-webkit-mask:url(\"data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8' %3E%3Cpath fill='currentColor' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z' /%3E%3C/svg%3E\")}.option--indeterminate{opacity:1}.label{margin-inline-start:min(0.35em, 7px)}";
10
+
11
+ const CHECKBOX_ID = "checkbox";
12
+ const PARTS = (checked, indeterminate) => `${checked ? " checked" : ""}${indeterminate ? " indeterminate" : ""}`;
13
+ const CheckBox = class {
14
+ constructor(hostRef) {
15
+ index.registerInstance(this, hostRef);
16
+ this.click = index.createEvent(this, "click", 7);
17
+ this.input = index.createEvent(this, "input", 7);
18
+ /**
19
+ * This attribute lets you specify if the element is disabled.
20
+ * If disabled, it will not fire any user interaction related event
21
+ * (for example, click event).
22
+ */
23
+ this.disabled = false;
24
+ /**
25
+ * True to highlight control when an action is fired.
26
+ */
27
+ this.highlightable = false;
28
+ /**
29
+ * `true` if the control's value is indeterminate.
30
+ */
31
+ this.indeterminate = false;
32
+ /**
33
+ * This attribute indicates that the user cannot modify the value of the control.
34
+ * Same as [readonly](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-readonly)
35
+ * attribute for `input` elements.
36
+ */
37
+ this.readonly = false;
38
+ this.getValue = (checked) => checked ? this.checkedValue : this.unCheckedValue;
39
+ /**
40
+ * Checks if it is necessary to prevent the click from bubbling
41
+ */
42
+ this.handleClick = (event) => {
43
+ if (this.readonly || this.disabled) {
44
+ return;
45
+ }
46
+ event.stopPropagation();
47
+ };
48
+ this.handleChange = (event) => {
49
+ event.stopPropagation();
50
+ const inputRef = event.target;
51
+ const checked = inputRef.checked;
52
+ const value = this.getValue(checked);
53
+ this.checked = checked;
54
+ this.value = value;
55
+ inputRef.value = value; // Update input's value before emitting the event
56
+ this.input.emit(event);
57
+ if (this.highlightable) {
58
+ this.click.emit();
59
+ }
60
+ };
61
+ }
62
+ valueChanged() {
63
+ this.checked = this.value === this.checkedValue;
64
+ }
65
+ componentWillLoad() {
66
+ this.checked = this.value === this.checkedValue;
67
+ }
68
+ render() {
69
+ var _a;
70
+ const additionalParts = PARTS(this.checked, this.indeterminate);
71
+ return (index.h(index.Host, { class: {
72
+ [reserverdNames.DISABLED_CLASS]: this.disabled,
73
+ "ch-checkbox--actionable": (!this.readonly && !this.disabled) ||
74
+ (this.readonly && this.highlightable)
75
+ } }, index.h("div", { class: {
76
+ container: true,
77
+ "container--checked": this.checked
78
+ }, part: `container${additionalParts}` }, index.h("input", { "aria-label": ((_a = this.accessibleName) === null || _a === void 0 ? void 0 : _a.trim()) !== "" &&
79
+ this.accessibleName !== this.caption
80
+ ? this.accessibleName
81
+ : null, id: this.caption ? CHECKBOX_ID : null, class: "input", part: "input", type: "checkbox", checked: this.checked, disabled: this.disabled || this.readonly, indeterminate: this.indeterminate, value: this.value, onClick: this.handleClick, onInput: this.handleChange }), index.h("div", { class: {
82
+ option: true,
83
+ "option--checked": this.checked && !this.indeterminate,
84
+ "option--indeterminate": this.indeterminate
85
+ }, part: `option${additionalParts}`, "aria-hidden": "true" })), this.caption && (index.h("label", { class: "label", part: "label", htmlFor: CHECKBOX_ID, onClick: this.handleClick }, this.caption))));
86
+ }
87
+ get element() { return index.getElement(this); }
88
+ static get watchers() { return {
89
+ "value": ["valueChanged"]
90
+ }; }
91
+ };
92
+ CheckBox.style = checkboxCss;
93
+
94
+ const scrollToEdge = (event, container, scrollSpeed, scrollThreshold) => {
95
+ const mousePositionY = event.clientY - container.getBoundingClientRect().top;
96
+ const containerHeight = container.clientHeight;
97
+ const mouseAtTheTop = mousePositionY <= scrollThreshold;
98
+ const mouseAtTheBottom = mousePositionY > containerHeight - scrollThreshold;
99
+ if (mouseAtTheTop || mouseAtTheBottom) {
100
+ const scrollAmount = mouseAtTheTop
101
+ ? mousePositionY - scrollThreshold
102
+ : mousePositionY - (containerHeight - scrollThreshold);
103
+ // Adjust container scroll position
104
+ container.scrollTop += scrollAmount / scrollSpeed;
105
+ }
106
+ };
107
+
108
+ const treeViewCss = "ch-tree-view{display:flex;position:relative;width:100%;overflow:auto}ch-tree-view>.ch-tree-view-container{position:absolute;inset:0}ch-tree-view.ch-tree-view-dragging-item ch-tree-view-item{pointer-events:var(--ch-tree-view-pointer-events, all)}ch-tree-view.ch-tree-view-dragging-item .ch-tree-view-list-item--deny-drop{pointer-events:none}ch-tree-view.ch-tree-view--dragging-selected-items ch-tree-view-item[selected]{--ch-tree-view-pointer-events:none}ch-tree-view.ch-tree-view-waiting-drop-processing{cursor:wait}ch-tree-view.ch-tree-view-waiting-drop-processing>.ch-tree-view-container{pointer-events:none}.ch-tree-view-drag-info{--rtl-offset:16px;position:fixed;left:0;top:0;transform:translate(calc(var(--ch-tree-view-dragging-item-x) + var(--rtl-offset)), calc(var(--ch-tree-view-dragging-item-y) + 8px));pointer-events:none;z-index:1;animation:ch-tree-view-drag-info-fade-in 10ms}@keyframes ch-tree-view-drag-info-fade-in{0%,100%{opacity:0}}html[dir=rtl] .ch-tree-view-drag-info{--rtl-offset:-100%}";
109
+
110
+ const TREE_ITEM_TAG_NAME$1 = "ch-tree-view-item";
111
+ const TREE_TAG_NAME = "ch-tree-view";
112
+ // Selectors
113
+ // const CHECKED_ITEMS = `${TREE_ITEM_TAG_NAME}[checked]`;
114
+ const TEXT_FORMAT = "text/plain";
115
+ const ARROW_DOWN_KEY = "ArrowDown";
116
+ const ARROW_UP_KEY = "ArrowUp";
117
+ const EDIT_KEY = "F2";
118
+ const isTreeItem = (element) => element.tagName.toLowerCase() === TREE_ITEM_TAG_NAME$1;
119
+ const getFocusedTreeItem = () => helpers.focusComposedPath().find(isTreeItem);
120
+ const canMoveTreeItemFocus = (treeItem) => treeItem && !treeItem.editing;
121
+ const getDroppableZoneKey = (newContainerId, draggedItems) => `"newContainerId":"${newContainerId}","metadata":"${JSON.stringify(draggedItems)}"`;
122
+ const POSITION_X_DRAG_CUSTOM_VAR = "--ch-tree-view-dragging-item-x";
123
+ const POSITION_Y_DRAG_CUSTOM_VAR = "--ch-tree-view-dragging-item-y";
124
+ const ChTreeView = class {
125
+ constructor(hostRef) {
126
+ index.registerInstance(this, hostRef);
127
+ this.droppableZoneEnter = index.createEvent(this, "droppableZoneEnter", 7);
128
+ this.expandedItemChange = index.createEvent(this, "expandedItemChange", 7);
129
+ this.itemContextmenu = index.createEvent(this, "itemContextmenu", 7);
130
+ this.itemsDropped = index.createEvent(this, "itemsDropped", 7);
131
+ this.selectedItemsChange = index.createEvent(this, "selectedItemsChange", 7);
132
+ // @todo TODO: Check if key codes works in Safari
133
+ this.keyDownEvents = {
134
+ [ARROW_DOWN_KEY]: event => {
135
+ const treeItem = getFocusedTreeItem();
136
+ if (!canMoveTreeItemFocus(treeItem)) {
137
+ return;
138
+ }
139
+ event.preventDefault();
140
+ treeItem.focusNextItem(helpers.mouseEventModifierKey(event));
141
+ },
142
+ [ARROW_UP_KEY]: event => {
143
+ const treeItem = getFocusedTreeItem();
144
+ if (!canMoveTreeItemFocus(treeItem)) {
145
+ return;
146
+ }
147
+ event.preventDefault();
148
+ treeItem.focusPreviousItem(helpers.mouseEventModifierKey(event));
149
+ },
150
+ [EDIT_KEY]: event => {
151
+ const treeItem = getFocusedTreeItem();
152
+ if (!treeItem || !treeItem.editable) {
153
+ return;
154
+ }
155
+ event.preventDefault();
156
+ treeItem.editing = true;
157
+ }
158
+ };
159
+ this.draggingSelectedItems = false;
160
+ this.needForRAF = true; // To prevent redundant RAF (request animation frame) calls
161
+ this.selectedItemsInfo = new Map();
162
+ /**
163
+ * Cache to avoid duplicate requests when checking the droppable zone in the
164
+ * same drag event.
165
+ */
166
+ this.validDroppableZoneCache = new Map();
167
+ this.draggedIds = [];
168
+ this.draggedParentIds = [];
169
+ this.draggingInTheDocument = false;
170
+ this.draggingInTree = false;
171
+ /**
172
+ * Set this attribute if you want to allow multi selection of the items.
173
+ */
174
+ this.multiSelection = false;
175
+ /**
176
+ * This property lets you specify the time (in ms) that the mouse must be
177
+ * over in a subtree to open it when dragging.
178
+ */
179
+ this.openSubTreeCountdown = 750;
180
+ /**
181
+ * `true` to scroll in the tree when dragging an item near the edges of the
182
+ * tree.
183
+ */
184
+ this.scrollToEdgeOnDrag = true;
185
+ /**
186
+ * This property lets you specify if the tree is waiting to process the drop
187
+ * of items.
188
+ */
189
+ this.waitDropProcessing = false;
190
+ this.trackItemDrag = (event) => {
191
+ event.preventDefault();
192
+ this.lastDragEvent = event;
193
+ this.updateDropEffect(event);
194
+ if (!this.needForRAF) {
195
+ return;
196
+ }
197
+ this.needForRAF = false; // No need to call RAF up until next frame
198
+ requestAnimationFrame(() => {
199
+ this.needForRAF = true; // RAF now consumes the movement instruction so a new one can come
200
+ this.el.style.setProperty(POSITION_X_DRAG_CUSTOM_VAR, `${this.lastDragEvent.pageX}px`);
201
+ this.el.style.setProperty(POSITION_Y_DRAG_CUSTOM_VAR, `${this.lastDragEvent.pageY}px`);
202
+ });
203
+ };
204
+ this.fixScrollPositionOnDrag = () => {
205
+ if (!this.draggingInTree || !this.lastDragEvent) {
206
+ return;
207
+ }
208
+ requestAnimationFrame(() => {
209
+ scrollToEdge(this.lastDragEvent, this.el, 10, 30);
210
+ requestAnimationFrame(this.fixScrollPositionOnDrag);
211
+ });
212
+ };
213
+ }
214
+ // /**
215
+ // * Returns an array of the selected tree items, providing the id, caption and
216
+ // * selected status.
217
+ // */
218
+ // @Method()
219
+ // async getCheckedItems(): Promise<CheckedTreeItemInfo[]> {
220
+ // const checkedItems = Array.from(
221
+ // this.el.querySelectorAll(CHECKED_ITEMS)
222
+ // ) as HTMLChTreeViewItemElement[];
223
+ // return checkedItems.map(item => ({
224
+ // id: item.id,
225
+ // caption: item.caption,
226
+ // selected: item.selected
227
+ // }));
228
+ // }
229
+ handleContextMenuEvent(event) {
230
+ const treeItem = event.target.closest(TREE_ITEM_TAG_NAME$1);
231
+ if (!treeItem) {
232
+ return;
233
+ }
234
+ event.preventDefault();
235
+ this.itemContextmenu.emit({
236
+ id: treeItem.id,
237
+ itemRef: treeItem,
238
+ metadata: treeItem.metadata,
239
+ contextmenuEvent: event
240
+ });
241
+ }
242
+ // Set edit mode in items
243
+ handleKeyDownEvents(event) {
244
+ const keyHandler = this.keyDownEvents[event.key];
245
+ if (keyHandler) {
246
+ keyHandler(event);
247
+ }
248
+ }
249
+ // We can't use capture, because the dataTransfer info would not be defined
250
+ // Also, we cant use capture and setTimeout with 0 seconds, because the
251
+ // getData method can only be accessed during the dragstart and drop event
252
+ handleDragStart(event) {
253
+ // Reset the validity of the droppable zones with each new drag start
254
+ this.validDroppableZoneCache.clear();
255
+ this.draggingInTheDocument = true;
256
+ this.dragStartTimestamp = new Date().getTime();
257
+ this.draggedItems = JSON.parse(event.dataTransfer.getData(TEXT_FORMAT));
258
+ }
259
+ handleDragEnd() {
260
+ this.draggingInTheDocument = false;
261
+ }
262
+ handleDragEnter(event) {
263
+ this.cancelSubTreeOpening(null, true);
264
+ event.stopPropagation();
265
+ const containerTarget = event.target;
266
+ // Check if it is a valid item
267
+ if (containerTarget.tagName.toLowerCase() !== TREE_ITEM_TAG_NAME$1) {
268
+ return;
269
+ }
270
+ this.lastOpenSubTreeItem = containerTarget;
271
+ this.openSubTreeAfterCountdown(containerTarget);
272
+ if (this.validDroppableZone(event) === "valid") {
273
+ containerTarget.dragState = "enter";
274
+ }
275
+ }
276
+ handleDragLeave(event) {
277
+ const currentTarget = event.target;
278
+ if (currentTarget.tagName.toLowerCase() !== TREE_ITEM_TAG_NAME$1) {
279
+ return;
280
+ }
281
+ const treeItem = currentTarget;
282
+ treeItem.dragState = "none";
283
+ this.cancelSubTreeOpening(treeItem);
284
+ }
285
+ cancelSubTreeOpening(treeItem, forceClear = false) {
286
+ if (this.lastOpenSubTreeItem === treeItem || forceClear) {
287
+ clearTimeout(this.openSubTreeTimeout);
288
+ this.lastOpenSubTreeItem = null;
289
+ }
290
+ }
291
+ handleItemDrop(event) {
292
+ event.stopPropagation();
293
+ this.cancelSubTreeOpening(null, true);
294
+ const newContainer = event.target;
295
+ const draggedItems = JSON.parse(event.dataTransfer.getData(TEXT_FORMAT));
296
+ // The droppable zone must be checked, even if it was marked as not valid
297
+ // @todo Try to drop an item with high delays in droppable zone checking
298
+ if (this.validDroppableZone(event) !== "valid") {
299
+ return;
300
+ }
301
+ this.itemsDropped.emit({
302
+ newContainer: { id: newContainer.id, metadata: newContainer.metadata },
303
+ draggingSelectedItems: this.draggingSelectedItems,
304
+ draggedItems: draggedItems,
305
+ dropInTheSameTree: this.draggingInTree
306
+ });
307
+ }
308
+ handleItemDragStart(event) {
309
+ document.body.addEventListener("dragover", this.trackItemDrag, {
310
+ capture: true
311
+ });
312
+ this.currentDraggedItem = event.target;
313
+ const allItemsCanBeDragged = this.checkDragValidityAndUpdateDragInfo(event.detail);
314
+ if (!allItemsCanBeDragged) {
315
+ // This effect disables drop interactions in all page elements, so there
316
+ // is no need to capture and prevent the drop event in the window
317
+ event.detail.dragEvent.dataTransfer.effectAllowed = "none";
318
+ return;
319
+ }
320
+ this.draggingInTree = true;
321
+ if (this.scrollToEdgeOnDrag) {
322
+ this.fixScrollPositionOnDrag();
323
+ }
324
+ }
325
+ handleItemDragEnd() {
326
+ this.draggingInTree = false;
327
+ document.body.removeEventListener("dragover", this.trackItemDrag, {
328
+ capture: true
329
+ });
330
+ // Reset not allowed droppable ids
331
+ this.resetVariables();
332
+ }
333
+ /**
334
+ * Only sync the info about the selected items. It does not update the state
335
+ * of the previous selected items.
336
+ */
337
+ handleSelectedItemSync(event) {
338
+ event.stopPropagation();
339
+ const selectedItemInfo = event.detail;
340
+ // If the item is selected, add it to list
341
+ if (selectedItemInfo.selected) {
342
+ this.selectedItemsInfo.set(selectedItemInfo.id, selectedItemInfo);
343
+ }
344
+ else {
345
+ this.selectedItemsInfo.delete(selectedItemInfo.id);
346
+ }
347
+ }
348
+ handleSelectedItemChange(event) {
349
+ event.stopPropagation();
350
+ const selectedItemInfo = event.detail;
351
+ const selectedItemEl = event.target;
352
+ this.handleItemSelection(selectedItemEl, selectedItemInfo);
353
+ }
354
+ /**
355
+ * Clear all information about the selected items. This method is intended to
356
+ * be used when selected items are reordered and the selected references will
357
+ * no longer be useful.
358
+ */
359
+ async clearSelectedItemsInfo() {
360
+ this.clearSelectedItems();
361
+ }
362
+ /**
363
+ * Given an item id, it displays and scrolls into the item view.
364
+ */
365
+ async scrollIntoVisible(treeItemId) {
366
+ const itemRef = this.el.querySelector(`${TREE_ITEM_TAG_NAME$1}#${treeItemId}`);
367
+ if (!itemRef) {
368
+ return;
369
+ }
370
+ let parentItem = itemRef.parentElement;
371
+ // Expand all parents
372
+ while (parentItem.tagName.toLowerCase() === TREE_ITEM_TAG_NAME$1) {
373
+ parentItem.expanded = true;
374
+ parentItem = parentItem.parentElement;
375
+ }
376
+ // Wait until the parents are expanded
377
+ requestAnimationFrame(() => {
378
+ itemRef.scrollIntoView();
379
+ });
380
+ }
381
+ /**
382
+ * Update the information about the valid droppable zones.
383
+ * @param requestTimestamp Time where the request to the server was made. Useful to avoid having old information.
384
+ * @param newContainerId ID of the container where the drag is trying to be made.
385
+ * @param draggedItems Information about the dragged items.
386
+ * @param validDrop Current state of the droppable zone.
387
+ */
388
+ async updateValidDropZone(requestTimestamp, newContainerId, draggedItems, validDrop) {
389
+ var _a;
390
+ if (!this.draggingInTheDocument ||
391
+ requestTimestamp <= this.dragStartTimestamp) {
392
+ return;
393
+ }
394
+ const droppableZoneKey = getDroppableZoneKey(newContainerId, draggedItems);
395
+ this.validDroppableZoneCache.set(droppableZoneKey, validDrop ? "valid" : "invalid");
396
+ const shouldUpdateDragEnterInCurrentContainer = ((_a = this.lastOpenSubTreeItem) === null || _a === void 0 ? void 0 : _a.id) === newContainerId;
397
+ if (shouldUpdateDragEnterInCurrentContainer) {
398
+ this.lastOpenSubTreeItem.dragState = "enter";
399
+ }
400
+ }
401
+ validDroppableZone(event) {
402
+ const containerTarget = event.target;
403
+ const cacheKey = getDroppableZoneKey(containerTarget.id, this.draggedItems);
404
+ let droppableZoneState = this.validDroppableZoneCache.get(cacheKey);
405
+ // Invalidate the cache, because the item is no longer waiting for its content to be downloaded
406
+ if (droppableZoneState === "temporal-invalid" &&
407
+ !containerTarget.lazyLoad &&
408
+ !containerTarget.downloading) {
409
+ droppableZoneState = null;
410
+ }
411
+ if (droppableZoneState != null) {
412
+ return droppableZoneState;
413
+ }
414
+ // Do not show drop zones if:
415
+ // - The effect does not allow it.
416
+ // - The drop is disabled in the container target.
417
+ // - When dragging in the same tree, don't mark droppable zones if they are
418
+ // the dragged items or their direct parents.
419
+ if (event.dataTransfer.effectAllowed === "none" ||
420
+ containerTarget.dropDisabled ||
421
+ (this.draggingInTree &&
422
+ (this.draggedIds.includes(containerTarget.id) ||
423
+ this.draggedParentIds.includes(containerTarget.id)))) {
424
+ this.validDroppableZoneCache.set(cacheKey, "invalid");
425
+ return "invalid";
426
+ }
427
+ // Disable drops when items need to lazy load their content first
428
+ if (containerTarget.lazyLoad || containerTarget.downloading) {
429
+ this.validDroppableZoneCache.set(cacheKey, "temporal-invalid");
430
+ return "temporal-invalid";
431
+ }
432
+ this.validDroppableZoneCache.set(cacheKey, "checking");
433
+ this.droppableZoneEnter.emit({
434
+ newContainer: {
435
+ id: containerTarget.id,
436
+ metadata: containerTarget.metadata
437
+ },
438
+ draggedItems: this.draggedItems
439
+ });
440
+ return "checking";
441
+ }
442
+ openSubTreeAfterCountdown(currentTarget) {
443
+ if (currentTarget.leaf || currentTarget.expanded) {
444
+ return;
445
+ }
446
+ this.openSubTreeTimeout = setTimeout(() => {
447
+ currentTarget.expanded = true;
448
+ this.expandedItemChange.emit({ id: currentTarget.id, expanded: true });
449
+ }, this.openSubTreeCountdown);
450
+ }
451
+ updateDropEffect(event) {
452
+ const itemTarget = event.target;
453
+ // Check if it is a valid item
454
+ if (itemTarget.tagName.toLowerCase() !== TREE_ITEM_TAG_NAME$1 ||
455
+ itemTarget.closest(TREE_TAG_NAME) !== this.el) {
456
+ return;
457
+ }
458
+ const droppableZoneState = this.validDroppableZone(event);
459
+ if (droppableZoneState === "invalid" ||
460
+ droppableZoneState === "temporal-invalid") {
461
+ event.dataTransfer.dropEffect = "none";
462
+ }
463
+ }
464
+ resetVariables() {
465
+ this.draggedIds = [];
466
+ this.draggedParentIds = [];
467
+ }
468
+ /**
469
+ * First, it check if all items can be dragged. If so, it updates the
470
+ * dataTransfer in the drag event to store the ids and metadata of the
471
+ * dragged items. Also it updates the visual information of the dragged
472
+ * items.
473
+ * @returns If all selected items can be dragged.
474
+ */
475
+ checkDragValidityAndUpdateDragInfo(dragInfo) {
476
+ const draggedElement = dragInfo.elem;
477
+ const isDraggingSelectedItems = this.selectedItemsInfo.has(draggedElement.id);
478
+ this.draggingSelectedItems = isDraggingSelectedItems;
479
+ let dataTransferInfo = [];
480
+ let dragIsEnabledForAllItems;
481
+ if (isDraggingSelectedItems) {
482
+ const selectedItemKeys = [...this.selectedItemsInfo.keys()];
483
+ const selectedItemValues = [...this.selectedItemsInfo.values()];
484
+ const selectedItemCount = selectedItemKeys.length;
485
+ dragIsEnabledForAllItems = selectedItemValues.every(el => !el.itemRef.dragDisabled);
486
+ this.draggedIds = selectedItemKeys;
487
+ dataTransferInfo = selectedItemValues.map(el => ({
488
+ id: el.id,
489
+ metadata: el.metadata
490
+ }));
491
+ this.dragInfo =
492
+ selectedItemCount === 1
493
+ ? draggedElement.caption
494
+ : selectedItemCount.toString();
495
+ }
496
+ else {
497
+ dragIsEnabledForAllItems = !draggedElement.dragDisabled;
498
+ dataTransferInfo = [
499
+ { id: draggedElement.id, metadata: draggedElement.metadata }
500
+ ];
501
+ this.draggedIds = [draggedElement.id];
502
+ this.dragInfo = draggedElement.caption;
503
+ }
504
+ this.getDirectParentsOfDraggableItems(isDraggingSelectedItems);
505
+ // Update drag event info
506
+ const data = JSON.stringify(dataTransferInfo);
507
+ dragInfo.dragEvent.dataTransfer.setData(TEXT_FORMAT, data);
508
+ // We must keep the data binding and processing even if there is an item
509
+ // that can't be dragged, otherwise, other trees or element might behave
510
+ // unexpected when a dragstart event comes
511
+ return dragIsEnabledForAllItems;
512
+ }
513
+ getDirectParentsOfDraggableItems(draggingSelectedItems) {
514
+ if (!draggingSelectedItems) {
515
+ const parentTreeItemElem = this.currentDraggedItem.parentElement;
516
+ if (parentTreeItemElem.tagName.toLowerCase() === TREE_ITEM_TAG_NAME$1) {
517
+ this.draggedParentIds.push(parentTreeItemElem.id);
518
+ }
519
+ return;
520
+ }
521
+ // Dragging selected items
522
+ this.selectedItemsInfo.forEach(selectedItem => {
523
+ const parentId = selectedItem.parentId;
524
+ // parentId === "" when the item is in the first level of the tree
525
+ if (parentId !== "") {
526
+ this.draggedParentIds.push(parentId);
527
+ }
528
+ });
529
+ }
530
+ handleItemSelection(selectedItemEl, selectedItemInfo) {
531
+ // If the Control key was not pressed or multi selection is disabled,
532
+ // remove all selected items
533
+ if (!selectedItemInfo.ctrlKeyPressed || !this.multiSelection) {
534
+ // Don't update the state of the selected item if no needed
535
+ this.selectedItemsInfo.delete(selectedItemInfo.id);
536
+ this.selectedItemsInfo.forEach(treeItem => {
537
+ treeItem.itemRef.selected = false;
538
+ });
539
+ this.clearSelectedItems();
540
+ // Re-select the item
541
+ selectedItemEl.selected = selectedItemInfo.selected;
542
+ }
543
+ // If the item is selected, add it to list
544
+ if (selectedItemInfo.selected) {
545
+ this.selectedItemsInfo.set(selectedItemInfo.id, selectedItemInfo);
546
+ }
547
+ // Sync with UI model
548
+ this.selectedItemsChange.emit(this.selectedItemsInfo);
549
+ }
550
+ clearSelectedItems() {
551
+ this.selectedItemsInfo.clear();
552
+ }
553
+ disconnectedCallback() {
554
+ this.resetVariables();
555
+ // Remove dragover body event
556
+ this.handleItemDragEnd();
557
+ }
558
+ render() {
559
+ return (index.h(index.Host, { class: {
560
+ "ch-tree-view-dragging-item": this.draggingInTheDocument,
561
+ "ch-tree-view-not-dragging-item": !this.draggingInTheDocument,
562
+ "ch-tree-view--dragging-selected-items": this.draggingInTree && this.draggingSelectedItems,
563
+ "ch-tree-view-waiting-drop-processing": this.waitDropProcessing
564
+ } }, index.h("div", { role: "tree", part: "tree-x-container", "aria-multiselectable": this.multiSelection.toString(), class: "ch-tree-view-container" }, index.h("slot", null)), this.draggingInTree && (index.h("span", { "aria-hidden": "true", class: "ch-tree-view-drag-info" }, this.dragInfo))));
565
+ }
566
+ get el() { return index.getElement(this); }
567
+ };
568
+ ChTreeView.style = treeViewCss;
569
+
570
+ const treeViewItemCss = ":where(button){all:unset;display:flex;user-select:none;touch-action:manipulation;-webkit-user-drag:element}*,::before,::after{box-sizing:border-box}:host{--ch-tree-view-view__checkbox-size:1em;--ch-tree-view-view__expandable-button-width:0.75em;--ch-tree-view-item__dashed-line--inset-inline-start:0px;--ch-tree-view-item__dashed-line--inset-inline-end:4px;--ch-tree-view-item-gap:5px;--ch-tree-view-item-custom-padding-inline-start:0px;--ch-tree-tab-width:calc(\n var(--ch-tree-view-view__checkbox-size) +\n var(--ch-tree-view-view__expandable-button-width) +\n (var(--ch-tree-view-item-gap) * 2)\n );display:grid;grid-template-rows:min-content;overflow:hidden}.header{--own-offset:0px;display:flex;align-items:center;min-height:calc(1em + 6px);padding-inline-start:calc( var(--padding-inline-start) + var(--ch-tree-view-item-custom-padding-inline-start) )}.header--disabled{opacity:0.5;pointer-events:none}.header--even{--padding-inline-start:calc(\n var(--parent-padding-inline-start--odd, 0px) + var(--ch-tree-tab-width)\n )}.header--even+.expandable{--parent-padding-inline-start--even:calc(\n var(--parent-padding-inline-start--odd, 0px) + var(--ch-tree-tab-width)\n )}.header--even .dashed-line{--inset-inline-start:calc(\n var(--parent-padding-inline-start--odd, 0px) +\n var(--parent-checkbox-offset) + var(--parent-expandable-offset)\n )}.header--even-expandable{--padding-inline-start:calc(\n var(--parent-padding-inline-start--odd, 0px) + var(--ch-tree-tab-width) -\n calc(\n var(--ch-tree-view-view__expandable-button-width) +\n var(--ch-tree-view-item-gap)\n )\n )}.header--even-expandable+.expandable{--parent-padding-inline-start--even:calc(\n var(--parent-padding-inline-start--odd, 0px) + var(--ch-tree-tab-width) -\n calc(\n var(--ch-tree-view-view__expandable-button-width) +\n var(--ch-tree-view-item-gap)\n )\n )}.header--odd{--padding-inline-start:calc(\n var(--parent-padding-inline-start--even, 0px) + var(--ch-tree-tab-width)\n )}.header--odd+.expandable{--parent-padding-inline-start--odd:calc(\n var(--parent-padding-inline-start--even, 0px) + var(--ch-tree-tab-width)\n )}.header--odd .dashed-line{--inset-inline-start:calc(\n var(--parent-padding-inline-start--even, 0px) +\n var(--parent-checkbox-offset) + var(--parent-expandable-offset)\n )}.header--odd-expandable{--padding-inline-start:calc(\n var(--parent-padding-inline-start--even, 0px) + var(--ch-tree-tab-width) -\n calc(\n var(--ch-tree-view-view__expandable-button-width) +\n var(--ch-tree-view-item-gap)\n )\n )}.header--odd-expandable+.expandable{--parent-padding-inline-start--odd:calc(\n var(--parent-padding-inline-start--even, 0px) + var(--ch-tree-tab-width) -\n calc(\n var(--ch-tree-view-view__expandable-button-width) +\n var(--ch-tree-view-item-gap)\n )\n )}.header--level-0{--padding-inline-start:0px}.header--level-0+.expandable{--parent-padding-inline-start--even:0px}.header--expandable-offset{--own-offset:calc(\n var(--ch-tree-view-view__expandable-button-width) +\n var(--ch-tree-view-item-gap)\n )}.header--expandable-offset+.expandable{--parent-expandable-offset:calc(\n var(--ch-tree-view-view__expandable-button-width) / 2\n )}.header--checkbox-offset+.expandable{--parent-checkbox-offset:calc(\n var(--ch-tree-view-view__checkbox-size) / 2\n );--parent-negative-checkbox-offset:calc(\n var(--ch-tree-view-view__checkbox-size) / 2\n )}.dashed-line{position:absolute;inset-inline-start:calc( var(--inset-inline-start) + var(--ch-tree-view-item__dashed-line--inset-inline-start) + var(--ch-tree-view-item-custom-padding-inline-start) );height:1px;width:calc( var(--ch-tree-tab-width) - var(--parent-checkbox-offset) - var(--parent-expandable-offset) - var(--own-offset) - var(--ch-tree-view-item__dashed-line--inset-inline-start) - var(--ch-tree-view-item__dashed-line--inset-inline-end) );border:0 dashed color-mix(in srgb, currentColor 65%, transparent);border-block-end-width:1px;pointer-events:none;content-visibility:hidden;z-index:1}.last-all-line{inset-block-start:0;height:calc(100% - var(--ch-tree-view-item-distance-to-checkbox));border-inline-start-width:1px;border-end-start-radius:2px}.last-line{inset-block-start:0;height:100%;border-inline-start-width:1px;border-style:solid;border-block-end:unset}.expandable-button{display:grid;place-items:center;width:var(--ch-tree-view-view__expandable-button-width);height:var(--ch-tree-view-view__expandable-button-width);margin-inline-end:var(--ch-tree-view-item-gap);z-index:1;cursor:pointer;content-visibility:auto;contain-intrinsic-size:auto var(--ch-tree-view-view__expandable-button-width)}.expandable-button::before{content:\"\";width:calc(100% - 2px);height:calc(100% - 2px);background-color:currentColor;-webkit-mask-size:calc( var(--ch-tree-view-view__expandable-button-width) - 2px )}.expandable-button--collapsed::before{-webkit-mask-image:url('data:image/svg+xml,<svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.15,8.5H8.54v5.61h-1V8.5H1.93v-1H7.54V1.89h1V7.5h5.61Z\"/></svg>')}.expandable-button--expanded::before{-webkit-mask-image:url('data:image/svg+xml,<svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.15,8.5H1.93v-1H14.15Z\"/></svg>')}.expandable-button:focus-visible{outline:1px solid #000}.checkbox{width:var(--ch-tree-view-view__checkbox-size);margin-inline-end:var(--ch-tree-view-item-gap)}.checkbox::part(container){width:var(--ch-tree-view-view__checkbox-size);height:var(--ch-tree-view-view__checkbox-size)}.action{display:grid;grid-template:\"left-img text right-img\"/max-content 1fr max-content;align-items:center;height:100%;flex:1;cursor:pointer}.readonly-mode{padding-block:0.75px}.left-img,.right-img{display:block;width:0.875em;height:0.875em;content-visibility:auto;contain-intrinsic-size:auto 0.875em}.left-img{grid-area:left-img;margin-inline-end:var(--ch-tree-view-item-gap)}.right-img{grid-area:right-img;margin-inline-start:var(--ch-tree-view-item-gap)}.edit-name{grid-area:text;width:100%;height:100%;padding:0;margin:0;background-color:unset;color:unset;border:1px solid currentColor;font:unset;outline:unset}.downloading{width:0.75em;height:0.75em;margin-inline-start:8px;border:2px solid currentColor;border-inline-start-color:transparent;border-radius:50%;opacity:0.75;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.expandable{--parent-expandable-offset:0px;--parent-negative-checkbox-offset:0px;--parent-checkbox-offset:0px;display:grid;grid-auto-rows:min-content;position:relative}.expandable--lazy-loaded{content-visibility:auto;contain-intrinsic-size:auto 100px}.expandable--collapsed{display:none;overflow:hidden;content-visibility:hidden}";
571
+
572
+ const resetDragImage = new Image();
573
+ const DISTANCE_TO_CHECKBOX_CUSTOM_VAR = "--ch-tree-view-item-distance-to-checkbox";
574
+ const INITIAL_LEVEL = 0;
575
+ // Selectors
576
+ const TREE_ITEM_TAG_NAME = "ch-tree-view-item";
577
+ const DIRECT_TREE_ITEM_CHILDREN = `:scope>${TREE_ITEM_TAG_NAME}`;
578
+ const FIRST_ENABLED_SUB_ITEM = `${TREE_ITEM_TAG_NAME}:not([disabled])`;
579
+ const LAST_SUB_ITEM = `:scope>${TREE_ITEM_TAG_NAME}:last-child`;
580
+ // Keys
581
+ const EXPANDABLE_ID = "expandable";
582
+ const ENTER_KEY = "Enter";
583
+ const ESCAPE_KEY = "Escape";
584
+ // Export Parts
585
+ const getCheckboxExportPart = (part) => `${part}:checkbox__${part}`;
586
+ const CHECKBOX_EXPORT_PARTS = [
587
+ "container",
588
+ "input",
589
+ "option",
590
+ "checked",
591
+ "indeterminate"
592
+ ]
593
+ .map(getCheckboxExportPart)
594
+ .join(",");
595
+ const ChTreeViewItem = class {
596
+ constructor(hostRef) {
597
+ index.registerInstance(this, hostRef);
598
+ this.checkboxChange = index.createEvent(this, "checkboxChange", 7);
599
+ this.checkboxToggleChange = index.createEvent(this, "checkboxToggleChange", 7);
600
+ this.itemDragStart = index.createEvent(this, "itemDragStart", 7);
601
+ this.itemDragEnd = index.createEvent(this, "itemDragEnd", 7);
602
+ this.loadLazyContent = index.createEvent(this, "loadLazyContent", 7);
603
+ this.modifyCaption = index.createEvent(this, "modifyCaption", 7);
604
+ this.openReference = index.createEvent(this, "openReference", 7);
605
+ this.selectedItemChange = index.createEvent(this, "selectedItemChange", 7);
606
+ this.selectedItemSync = index.createEvent(this, "selectedItemSync", 7);
607
+ /**
608
+ * Useful to ignore the checkbox change when it was committed from a children.
609
+ */
610
+ this.ignoreCheckboxChange = false;
611
+ /**
612
+ * Set this attribute if you want display a checkbox in the control.
613
+ */
614
+ this.checkbox = false;
615
+ /**
616
+ * Set this attribute if you want the checkbox to be checked by default.
617
+ * Only works if `checkbox = true`
618
+ */
619
+ this.checked = false;
620
+ /**
621
+ * Set this attribute if you want to set a custom render for the control, by
622
+ * passing a slot.
623
+ */
624
+ this.customRender = false;
625
+ /**
626
+ * This attribute lets you specify if the element is disabled.
627
+ * If disabled, it will not fire any user interaction related event
628
+ * (for example, click event).
629
+ */
630
+ this.disabled = false;
631
+ /**
632
+ * This attribute lets you specify if the drag operation is disabled in the
633
+ * control. If `true`, the control can't be dragged.
634
+ */
635
+ this.dragDisabled = false;
636
+ /**
637
+ * This attribute lets you specify if the drop operation is disabled in the
638
+ * control. If `true`, the control won't accept any drops.
639
+ */
640
+ this.dropDisabled = false;
641
+ /**
642
+ * This property lets you define the current state of the item when it's
643
+ * being dragged.
644
+ */
645
+ this.dragState = "none";
646
+ /**
647
+ * This attribute lets you specify when items are being lazy loaded in the
648
+ * control.
649
+ */
650
+ this.downloading = false;
651
+ /**
652
+ * Set this attribute when the item is in edit mode
653
+ */
654
+ this.editing = false;
655
+ /**
656
+ * If the item has a sub-tree, this attribute determines if the subtree is
657
+ * displayed.
658
+ */
659
+ this.expanded = false;
660
+ /**
661
+ * This attribute specifies if the control is the last items in its subtree
662
+ */
663
+ this.lastItem = false;
664
+ /**
665
+ * Determine if the items are lazy loaded when opening the first time the
666
+ * control.
667
+ */
668
+ this.lazyLoad = false;
669
+ /**
670
+ * The presence of this attribute determine whether the item contains a
671
+ * subtree. `true` if the item does not have a subtree.
672
+ */
673
+ this.leaf = false;
674
+ /**
675
+ * Level in the tree at which the item is placed.
676
+ */
677
+ this.level = INITIAL_LEVEL;
678
+ /**
679
+ * `true` if the checkbox's value is indeterminate.
680
+ */
681
+ this.indeterminate = false;
682
+ /**
683
+ * This attribute lets you specify if the item is selected
684
+ */
685
+ this.selected = false;
686
+ /**
687
+ * `true` to show the downloading spinner when lazy loading the sub items of
688
+ * the control.
689
+ */
690
+ this.showDownloadingSpinner = true;
691
+ /**
692
+ * `true` to show the expandable button that allows to expand/collapse the
693
+ * items of the control. Only works if `leaf === false`.
694
+ */
695
+ this.showExpandableButton = true;
696
+ /**
697
+ * `true` to display the relation between tree items and tree lists using
698
+ * lines.
699
+ */
700
+ this.showLines = "none";
701
+ /**
702
+ * Set this attribute if you want all the children item's checkboxes to be
703
+ * checked when the parent item checkbox is checked, or to be unchecked when
704
+ * the parent item checkbox is unchecked.
705
+ */
706
+ this.toggleCheckboxes = false;
707
+ this.checkIfShouldRemoveEditMode = (event) => {
708
+ event.stopPropagation();
709
+ if (event.code !== ENTER_KEY && event.code !== ESCAPE_KEY) {
710
+ return;
711
+ }
712
+ event.preventDefault();
713
+ const commitEdition = event.code === ENTER_KEY;
714
+ this.removeEditMode(true, commitEdition)();
715
+ };
716
+ this.removeEditModeOnClick = (event) => {
717
+ // The click is executed outside the input and the pointer type is defined,
718
+ // meaning that the button click was not triggered by the Enter or Space keys
719
+ if (!event.composedPath().includes(this.inputRef) && event.pointerType) {
720
+ this.removeEditMode(false)();
721
+ }
722
+ };
723
+ this.removeEditMode = (shouldFocusHeader, commitEdition = false) => () => {
724
+ // When pressing the enter key in the input, the removeEditMode event is
725
+ // triggered twice (due to the headerRef.focus() triggering the onBlur
726
+ // event in the input), so we need to check if the edit mode was disabled
727
+ if (!this.editing) {
728
+ return;
729
+ }
730
+ this.editing = false;
731
+ document.body.removeEventListener("click", this.removeEditModeOnClick, {
732
+ capture: true
733
+ });
734
+ const newCaption = this.inputRef.value;
735
+ if (commitEdition && newCaption.trim() !== "") {
736
+ this.modifyCaption.emit({
737
+ id: this.el.id,
738
+ caption: newCaption
739
+ });
740
+ }
741
+ if (shouldFocusHeader) {
742
+ this.headerRef.focus();
743
+ }
744
+ };
745
+ this.toggleExpand = (event) => {
746
+ event.stopPropagation();
747
+ if (!this.leaf) {
748
+ this.expanded = !this.expanded;
749
+ }
750
+ this.selected = true;
751
+ this.selectedItemChange.emit(this.getSelectedInfo(helpers.mouseEventModifierKey(event), true));
752
+ };
753
+ this.getSelectedInfo = (ctrlKeyPressed, selected) => ({
754
+ ctrlKeyPressed: ctrlKeyPressed,
755
+ expanded: this.expanded,
756
+ id: this.el.id,
757
+ itemRef: this.el,
758
+ metadata: this.metadata,
759
+ parentId: this.el.parentElement.id,
760
+ selected: selected
761
+ });
762
+ this.handleActionDblClick = (event) => {
763
+ event.stopPropagation();
764
+ if (helpers.mouseEventModifierKey(event)) {
765
+ this.toggleSelected();
766
+ return;
767
+ }
768
+ this.emitOpenReference();
769
+ // The Control key is not pressed, so the control can be expanded
770
+ if (!this.leaf) {
771
+ this.toggleExpand(event);
772
+ }
773
+ };
774
+ /**
775
+ * Event triggered by the following actions on the main button:
776
+ * - Click
777
+ * - Enter keydown
778
+ * - Space keydown and keyup
779
+ */
780
+ this.handleActionClick = (event) => {
781
+ event.stopPropagation();
782
+ // Don't perform actions when editing
783
+ if (this.editing) {
784
+ return;
785
+ }
786
+ event.preventDefault();
787
+ // Click event
788
+ if (event.pointerType) {
789
+ this.toggleOrSelect(event);
790
+ return;
791
+ }
792
+ this.emitOpenReference();
793
+ // Enter or space
794
+ this.toggleExpand(event);
795
+ };
796
+ /**
797
+ * Event triggered by key events on the main button.
798
+ */
799
+ this.handleActionKeyDown = (event) => {
800
+ // Only toggle if the Enter key was pressed with the Ctrl key
801
+ if (helpers.mouseEventModifierKey(event) && event.code === ENTER_KEY) {
802
+ event.stopPropagation();
803
+ this.toggleSelected();
804
+ }
805
+ };
806
+ this.handleCheckedChange = (event) => {
807
+ event.stopPropagation();
808
+ const checked = event.target.checked;
809
+ this.checked = checked;
810
+ this.indeterminate = false; // Changing the checked value makes it no longer indeterminate
811
+ this.checkboxChange.emit({
812
+ id: this.el.id,
813
+ checked: this.checked,
814
+ indeterminate: false
815
+ });
816
+ };
817
+ this.renderImg = (cssClass, src) => (index.h("img", { "aria-hidden": "true", class: cssClass, part: cssClass, alt: "", src: src, loading: "lazy" }));
818
+ this.handleDragStart = (event) => {
819
+ // Disallow drag when editing the caption
820
+ if (this.editing) {
821
+ event.preventDefault();
822
+ event.stopPropagation();
823
+ return;
824
+ }
825
+ // Remove drag image
826
+ event.dataTransfer.setDragImage(resetDragImage, 0, 0);
827
+ event.dataTransfer.effectAllowed = "move";
828
+ this.dragState = "start";
829
+ this.itemDragStart.emit({
830
+ elem: this.el,
831
+ dragEvent: event
832
+ });
833
+ };
834
+ this.handleDragEnd = () => {
835
+ // event.preventDefault();
836
+ // this.el.style.cursor = null;
837
+ this.dragState = "none";
838
+ this.itemDragEnd.emit();
839
+ };
840
+ this.handleDrop = () => {
841
+ this.dragState = "none";
842
+ };
843
+ }
844
+ updateChildrenCheckedValue(newValue) {
845
+ if (!this.toggleCheckboxes || this.leaf || this.ignoreCheckboxChange) {
846
+ this.ignoreCheckboxChange = false;
847
+ return;
848
+ }
849
+ const treeItems = this.getDirectTreeItems();
850
+ treeItems.forEach(treeItem => {
851
+ if (treeItem.checked !== newValue || treeItem.indeterminate !== false) {
852
+ treeItem.updateChecked(newValue, false);
853
+ }
854
+ });
855
+ }
856
+ handleEditingChange(isEditing) {
857
+ if (!isEditing) {
858
+ return;
859
+ }
860
+ document.body.addEventListener("click", this.removeEditModeOnClick, {
861
+ capture: true
862
+ });
863
+ // Wait until the input is rendered to focus it
864
+ index.writeTask(() => {
865
+ requestAnimationFrame(() => {
866
+ if (this.inputRef) {
867
+ this.inputRef.focus();
868
+ }
869
+ });
870
+ });
871
+ }
872
+ handleExpandedChange(isExpanded) {
873
+ this.lazyLoadItems(isExpanded);
874
+ }
875
+ handleLasItemChange(isLastItem) {
876
+ if (isLastItem && this.showLines) {
877
+ this.setResizeObserver();
878
+ }
879
+ else {
880
+ this.disconnectObserver();
881
+ }
882
+ }
883
+ handleSelectedChange(newValue) {
884
+ this.selectedItemSync.emit(this.getSelectedInfo(true, // Does not matter in this case
885
+ newValue));
886
+ }
887
+ handleShowLinesChange(newShowLines) {
888
+ if (newShowLines && this.lastItem) {
889
+ this.setResizeObserver();
890
+ }
891
+ else {
892
+ this.disconnectObserver();
893
+ }
894
+ }
895
+ updateCheckboxValue(event) {
896
+ // No need to update the checkbox value based on the children checkbox
897
+ if (!this.toggleCheckboxes || this.el === event.target) {
898
+ return;
899
+ }
900
+ const updatedCheck = event.detail.checked;
901
+ const treeItems = this.getDirectTreeItems();
902
+ // Check if all the items have the same value as the updated item
903
+ const allItemsHaveTheSameCheckedValue = treeItems.every(treeItem => treeItem.checked === updatedCheck);
904
+ const eventMustBeEmitted = this.checked !== updatedCheck ||
905
+ this.indeterminate !== !allItemsHaveTheSameCheckedValue;
906
+ this.ignoreCheckboxChange = this.checked !== updatedCheck;
907
+ this.checked = updatedCheck;
908
+ this.indeterminate = !allItemsHaveTheSameCheckedValue;
909
+ // Sync with the UI Model
910
+ if (eventMustBeEmitted) {
911
+ this.checkboxToggleChange.emit({
912
+ id: this.el.id,
913
+ checked: updatedCheck,
914
+ indeterminate: !allItemsHaveTheSameCheckedValue
915
+ });
916
+ }
917
+ }
918
+ /**
919
+ * Focus the next item in the tree. If the control is expanded, it focuses
920
+ * the first subitem in its tree.
921
+ */
922
+ async focusNextItem(ctrlKeyPressed) {
923
+ // Focus the first subitem if expanded
924
+ if (!this.leaf && this.expanded) {
925
+ const subItem = this.el.querySelector(FIRST_ENABLED_SUB_ITEM);
926
+ // The tree item could be empty or downloading subitem, so it is uncertain
927
+ // if the query won't fail
928
+ if (subItem) {
929
+ subItem.setFocus(ctrlKeyPressed);
930
+ return;
931
+ }
932
+ }
933
+ // Otherwise, focus the next sibling
934
+ this.focusNextSibling(ctrlKeyPressed);
935
+ }
936
+ /**
937
+ * Focus the next sibling item in the tree.
938
+ */
939
+ async focusNextSibling(ctrlKeyPressed) {
940
+ const nextSiblingItem = this.el
941
+ .nextElementSibling;
942
+ // Focus the next sibling, if exists
943
+ if (nextSiblingItem) {
944
+ // If the next sibling is disabled, ask for its next sibling
945
+ if (nextSiblingItem.disabled) {
946
+ nextSiblingItem.focusNextItem(ctrlKeyPressed);
947
+ }
948
+ else {
949
+ nextSiblingItem.setFocus(ctrlKeyPressed);
950
+ }
951
+ return;
952
+ }
953
+ // The item is the last one of the tree at the first level
954
+ if (this.level === INITIAL_LEVEL) {
955
+ return;
956
+ }
957
+ // Otherwise, ask the parent to focus the next sibling
958
+ const parentItem = this.el.parentElement;
959
+ parentItem.focusNextSibling(ctrlKeyPressed);
960
+ }
961
+ /**
962
+ * Focus the previous item in the tree. If the previous item is expanded, it focuses
963
+ * the last subitem in its tree.
964
+ */
965
+ async focusPreviousItem(ctrlKeyPressed) {
966
+ const previousSiblingItem = this.el
967
+ .previousElementSibling;
968
+ // Focus last item of the previous sibling
969
+ if (previousSiblingItem) {
970
+ previousSiblingItem.focusLastItem(ctrlKeyPressed);
971
+ return;
972
+ }
973
+ // The item is the first one of the tree at the first level
974
+ if (this.level === INITIAL_LEVEL) {
975
+ return;
976
+ }
977
+ // Otherwise, set focus in the parent element
978
+ const parentItem = this.el.parentElement;
979
+ // Check if the parent is not disabled
980
+ if (parentItem.disabled) {
981
+ parentItem.focusPreviousItem(ctrlKeyPressed);
982
+ return;
983
+ }
984
+ parentItem.setFocus(ctrlKeyPressed);
985
+ }
986
+ /**
987
+ * Focus the last item in its subtree. If the control is not expanded, it
988
+ * focus the control.
989
+ */
990
+ async focusLastItem(ctrlKeyPressed) {
991
+ // Focus the last subitem if expanded and not lazy loading
992
+ if (!this.leaf && this.expanded) {
993
+ const lastSubItem = this.el.querySelector(LAST_SUB_ITEM);
994
+ // The tree item could be empty or downloading subitem, so it is uncertain
995
+ // if the query won't fail
996
+ if (lastSubItem) {
997
+ lastSubItem.focusLastItem(ctrlKeyPressed);
998
+ return;
999
+ }
1000
+ }
1001
+ // If the last item is disabled, try to focus the previous sibling
1002
+ if (this.disabled) {
1003
+ this.focusPreviousItem(ctrlKeyPressed);
1004
+ return;
1005
+ }
1006
+ // Otherwise, it focuses the control
1007
+ this.setFocus(ctrlKeyPressed);
1008
+ }
1009
+ /**
1010
+ * Set focus in the control.
1011
+ */
1012
+ async setFocus(ctrlKeyPressed) {
1013
+ this.headerRef.focus();
1014
+ // Normal navigation auto selects the item.
1015
+ if (!ctrlKeyPressed) {
1016
+ this.setSelected();
1017
+ }
1018
+ }
1019
+ /**
1020
+ * Update `checked` and `indeterminate` properties.
1021
+ */
1022
+ async updateChecked(newChecked, newIndeterminate) {
1023
+ this.checked = newChecked;
1024
+ this.indeterminate = newIndeterminate;
1025
+ // Emit the event to sync with the UI model, even if the item does not
1026
+ // have toggleCheckboxes property
1027
+ this.checkboxToggleChange.emit({
1028
+ id: this.el.id,
1029
+ checked: newChecked,
1030
+ indeterminate: newIndeterminate
1031
+ });
1032
+ }
1033
+ getDirectTreeItems() {
1034
+ return Array.from(this.el.querySelectorAll(DIRECT_TREE_ITEM_CHILDREN));
1035
+ }
1036
+ setResizeObserver() {
1037
+ this.watcher = new ResizeObserver(() => {
1038
+ const distanceToCheckbox = this.el.getBoundingClientRect().height -
1039
+ this.headerRef.getBoundingClientRect().height / 2;
1040
+ this.el.style.setProperty(DISTANCE_TO_CHECKBOX_CUSTOM_VAR, distanceToCheckbox + "px");
1041
+ });
1042
+ this.watcher.observe(this.el);
1043
+ this.watcher.observe(this.headerRef);
1044
+ }
1045
+ disconnectObserver() {
1046
+ if (!this.watcher) {
1047
+ return;
1048
+ }
1049
+ this.watcher.disconnect();
1050
+ this.watcher = null;
1051
+ }
1052
+ lazyLoadItems(expanded) {
1053
+ if (!this.lazyLoad || !expanded) {
1054
+ return;
1055
+ }
1056
+ // Load items
1057
+ this.lazyLoad = false;
1058
+ this.downloading = true;
1059
+ this.loadLazyContent.emit(this.el.id);
1060
+ }
1061
+ toggleSelected() {
1062
+ const selected = !this.selected;
1063
+ this.selected = selected;
1064
+ this.selectedItemChange.emit(this.getSelectedInfo(true, selected));
1065
+ }
1066
+ setSelected() {
1067
+ this.selected = true;
1068
+ this.selectedItemChange.emit(this.getSelectedInfo(false, true));
1069
+ }
1070
+ toggleOrSelect(event) {
1071
+ if (helpers.mouseEventModifierKey(event)) {
1072
+ this.toggleSelected();
1073
+ }
1074
+ else {
1075
+ this.setSelected();
1076
+ }
1077
+ }
1078
+ emitOpenReference() {
1079
+ this.openReference.emit({
1080
+ id: this.el.id,
1081
+ leaf: this.leaf,
1082
+ metadata: this.metadata
1083
+ });
1084
+ }
1085
+ componentWillLoad() {
1086
+ // Check if must lazy load
1087
+ this.lazyLoadItems(this.expanded);
1088
+ // Sync selected state with the main tree
1089
+ if (this.selected) {
1090
+ this.selectedItemChange.emit(this.getSelectedInfo(true, true));
1091
+ }
1092
+ }
1093
+ componentDidLoad() {
1094
+ if (this.lastItem && this.showLines) {
1095
+ this.setResizeObserver();
1096
+ }
1097
+ }
1098
+ disconnectedCallback() {
1099
+ // If it was disconnected on edit mode, remove the body event handler
1100
+ if (this.editing) {
1101
+ this.removeEditMode(false);
1102
+ }
1103
+ this.disconnectObserver();
1104
+ }
1105
+ render() {
1106
+ const evenLevel = this.level % 2 === 0;
1107
+ const expandableButtonVisible = !this.leaf && this.showExpandableButton;
1108
+ const expandableButtonNotVisible = !this.leaf && !this.showExpandableButton;
1109
+ const acceptDrop = !this.dropDisabled && !this.leaf && this.dragState !== "start";
1110
+ const hasContent = !this.leaf && !this.lazyLoad;
1111
+ const showAllLines = this.showLines === "all" && this.level !== INITIAL_LEVEL;
1112
+ const showLastLine = this.showLines === "last" &&
1113
+ this.level !== INITIAL_LEVEL &&
1114
+ this.lastItem;
1115
+ return (index.h(index.Host, { role: "treeitem", "aria-level": this.level + 1, "aria-selected": this.selected ? "true" : null, class: {
1116
+ [TREE_ITEM_TAG_NAME + "--downloading"]: this.downloading,
1117
+ [TREE_ITEM_TAG_NAME + "--editing"]: this.editing,
1118
+ [TREE_ITEM_TAG_NAME + "--not-editing"]: !this.editing,
1119
+ [TREE_ITEM_TAG_NAME + "--drag-" + this.dragState]: this.dragState !== "none" && this.dragState !== "start",
1120
+ [TREE_ITEM_TAG_NAME + "--deny-drop"]: this.leaf
1121
+ }, style: { "--level": `${this.level}` },
1122
+ // Drag and drop
1123
+ onDrop: acceptDrop ? this.handleDrop : null }, index.h("button", { "aria-controls": hasContent ? EXPANDABLE_ID : null, "aria-expanded": hasContent ? this.expanded.toString() : null, class: {
1124
+ header: true,
1125
+ "header--selected": this.selected,
1126
+ "header--disabled": this.disabled,
1127
+ "header--expandable-offset": expandableButtonVisible,
1128
+ "header--checkbox-offset": expandableButtonNotVisible && this.checkbox,
1129
+ "header--even": evenLevel,
1130
+ "header--odd": !evenLevel,
1131
+ "header--even-expandable": evenLevel && expandableButtonVisible,
1132
+ "header--odd-expandable": !evenLevel && expandableButtonVisible,
1133
+ "header--level-0": this.level === INITIAL_LEVEL
1134
+ }, part: `header${this.disabled ? " disabled" : ""}${this.selected ? " selected" : ""}${this.level === INITIAL_LEVEL ? " level-0" : ""}`, type: "button", disabled: this.disabled, onClick: this.handleActionClick, onKeyDown: !this.editing ? this.handleActionKeyDown : null,
1135
+ // Drag and drop
1136
+ draggable: !this.dragDisabled, onDragStart: this.handleDragStart, onDragEnd: !this.dragDisabled ? this.handleDragEnd : null, ref: el => (this.headerRef = el) }, !this.leaf && this.showExpandableButton && (index.h("button", { type: "button", class: {
1137
+ "expandable-button": true,
1138
+ "expandable-button--expanded": this.expanded,
1139
+ "expandable-button--collapsed": !this.expanded
1140
+ }, part: `expandable-button${this.disabled ? " disabled" : ""}${this.expanded ? " expanded" : " collapsed"}`, disabled: this.disabled, onClick: this.toggleExpand })), this.checkbox && (index.h("ch-checkbox", { accessibleName: this.caption, class: "checkbox", exportparts: CHECKBOX_EXPORT_PARTS, part: `checkbox${this.disabled ? " disabled" : ""}${this.checked ? " checked" : ""}${this.indeterminate ? " indeterminate" : ""}`, checkedValue: "true", disabled: this.disabled, indeterminate: this.indeterminate, unCheckedValue: "false", value: `${this.checked}`, onInput: this.handleCheckedChange })), this.customRender ? (index.h("slot", { name: "custom-content" })) : ([
1141
+ index.h("div", { class: {
1142
+ action: true,
1143
+ "readonly-mode": !this.editing
1144
+ }, part: `action${!this.editing ? " readonly-mode" : ""}${!this.leaf && this.expanded ? " expanded" : ""}`, onDblClick: !this.editing ? this.handleActionDblClick : null }, this.leftImgSrc && this.renderImg("left-img", this.leftImgSrc), this.editable && this.editing ? (index.h("input", { class: "edit-name", part: "edit-name", disabled: this.disabled, type: "text", value: this.caption, onBlur: this.removeEditMode(false), onKeyDown: this.checkIfShouldRemoveEditMode, ref: el => (this.inputRef = el) })) : (this.caption), this.rightImgSrc &&
1145
+ this.renderImg("right-img", this.rightImgSrc)),
1146
+ this.showDownloadingSpinner && !this.leaf && this.downloading && (index.h("div", { class: "downloading", part: "downloading" }))
1147
+ ]), (showAllLines || showLastLine) && (index.h("div", { class: {
1148
+ "dashed-line": true,
1149
+ "last-all-line": showAllLines && this.lastItem,
1150
+ "last-line": showLastLine
1151
+ }, part: `dashed-line${this.lastItem ? " last-all-line" : ""}` }))), hasContent && (index.h("div", { role: "group", "aria-busy": (!!this.downloading).toString(), "aria-live": this.downloading ? "polite" : null, id: EXPANDABLE_ID, class: {
1152
+ expandable: true,
1153
+ "expandable--collapsed": !this.expanded,
1154
+ "expandable--lazy-loaded": !this.downloading
1155
+ }, part: `expandable${this.expanded ? " expanded" : " collapsed"}${!this.downloading ? " lazy-loaded" : ""}` }, index.h("slot", null)))));
1156
+ }
1157
+ get el() { return index.getElement(this); }
1158
+ static get watchers() { return {
1159
+ "checked": ["updateChildrenCheckedValue"],
1160
+ "editing": ["handleEditingChange"],
1161
+ "expanded": ["handleExpandedChange"],
1162
+ "lastItem": ["handleLasItemChange"],
1163
+ "selected": ["handleSelectedChange"],
1164
+ "showLines": ["handleShowLinesChange"]
1165
+ }; }
1166
+ };
1167
+ ChTreeViewItem.style = treeViewItemCss;
1168
+
1169
+ exports.ch_checkbox = CheckBox;
1170
+ exports.ch_tree_view = ChTreeView;
1171
+ exports.ch_tree_view_item = ChTreeViewItem;