aeico-components 0.1.5 → 0.1.7

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 (337) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +0 -0
  3. package/dist/chunks/action-button.cjs +296 -0
  4. package/dist/chunks/action-button.cjs.map +1 -0
  5. package/dist/chunks/action-button.js +297 -0
  6. package/dist/chunks/action-button.js.map +1 -0
  7. package/dist/chunks/alert.cjs +26 -32
  8. package/dist/chunks/alert.cjs.map +1 -1
  9. package/dist/chunks/alert.js +27 -33
  10. package/dist/chunks/alert.js.map +1 -1
  11. package/dist/chunks/badge.cjs +2 -2
  12. package/dist/chunks/badge.cjs.map +1 -1
  13. package/dist/chunks/badge.js +3 -3
  14. package/dist/chunks/badge.js.map +1 -1
  15. package/dist/chunks/breadcrumb-item.cjs +9 -9
  16. package/dist/chunks/breadcrumb-item.cjs.map +1 -1
  17. package/dist/chunks/breadcrumb-item.js +10 -10
  18. package/dist/chunks/breadcrumb-item.js.map +1 -1
  19. package/dist/chunks/button-group.cjs +1 -1
  20. package/dist/chunks/button-group.cjs.map +1 -1
  21. package/dist/chunks/button-group.js +2 -2
  22. package/dist/chunks/button-group.js.map +1 -1
  23. package/dist/chunks/button.cjs +40 -51
  24. package/dist/chunks/button.cjs.map +1 -1
  25. package/dist/chunks/button.js +41 -52
  26. package/dist/chunks/button.js.map +1 -1
  27. package/dist/chunks/card.cjs +2 -2
  28. package/dist/chunks/card.cjs.map +1 -1
  29. package/dist/chunks/card.js +3 -3
  30. package/dist/chunks/card.js.map +1 -1
  31. package/dist/chunks/checkbox.cjs +18 -5
  32. package/dist/chunks/checkbox.cjs.map +1 -1
  33. package/dist/chunks/checkbox.js +18 -5
  34. package/dist/chunks/checkbox.js.map +1 -1
  35. package/dist/chunks/color.cjs +1 -1
  36. package/dist/chunks/color.js +1 -1
  37. package/dist/chunks/copy-button.cjs +171 -0
  38. package/dist/chunks/copy-button.cjs.map +1 -0
  39. package/dist/chunks/copy-button.js +172 -0
  40. package/dist/chunks/copy-button.js.map +1 -0
  41. package/dist/chunks/detail-group.cjs +65 -0
  42. package/dist/chunks/detail-group.cjs.map +1 -0
  43. package/dist/chunks/detail-group.js +66 -0
  44. package/dist/chunks/detail-group.js.map +1 -0
  45. package/dist/chunks/detail.cjs +7 -4
  46. package/dist/chunks/detail.cjs.map +1 -1
  47. package/dist/chunks/detail.js +8 -5
  48. package/dist/chunks/detail.js.map +1 -1
  49. package/dist/chunks/dialog.cjs +2 -2
  50. package/dist/chunks/dialog.cjs.map +1 -1
  51. package/dist/chunks/dialog.js +3 -3
  52. package/dist/chunks/dialog.js.map +1 -1
  53. package/dist/chunks/divider.cjs +2 -2
  54. package/dist/chunks/divider.cjs.map +1 -1
  55. package/dist/chunks/divider.js +3 -3
  56. package/dist/chunks/divider.js.map +1 -1
  57. package/dist/chunks/drawer.cjs +180 -0
  58. package/dist/chunks/drawer.cjs.map +1 -0
  59. package/dist/chunks/drawer.js +181 -0
  60. package/dist/chunks/drawer.js.map +1 -0
  61. package/dist/chunks/dropdown-button.cjs +10 -11
  62. package/dist/chunks/dropdown-button.cjs.map +1 -1
  63. package/dist/chunks/dropdown-button.js +14 -15
  64. package/dist/chunks/dropdown-button.js.map +1 -1
  65. package/dist/chunks/icon.cjs +57 -11
  66. package/dist/chunks/icon.cjs.map +1 -1
  67. package/dist/chunks/icon.js +58 -12
  68. package/dist/chunks/icon.js.map +1 -1
  69. package/dist/chunks/menu.cjs +396 -0
  70. package/dist/chunks/menu.cjs.map +1 -0
  71. package/dist/chunks/menu.js +397 -0
  72. package/dist/chunks/menu.js.map +1 -0
  73. package/dist/chunks/navbar.cjs +2 -2
  74. package/dist/chunks/navbar.cjs.map +1 -1
  75. package/dist/chunks/navbar.js +3 -3
  76. package/dist/chunks/navbar.js.map +1 -1
  77. package/dist/chunks/number-input.cjs +110 -0
  78. package/dist/chunks/number-input.cjs.map +1 -0
  79. package/dist/chunks/number-input.js +111 -0
  80. package/dist/chunks/number-input.js.map +1 -0
  81. package/dist/chunks/pagination.cjs +475 -0
  82. package/dist/chunks/pagination.cjs.map +1 -0
  83. package/dist/chunks/pagination.js +476 -0
  84. package/dist/chunks/pagination.js.map +1 -0
  85. package/dist/chunks/progress-bar.cjs +101 -0
  86. package/dist/chunks/progress-bar.cjs.map +1 -0
  87. package/dist/chunks/progress-bar.js +102 -0
  88. package/dist/chunks/progress-bar.js.map +1 -0
  89. package/dist/chunks/radio.cjs +11 -7
  90. package/dist/chunks/radio.cjs.map +1 -1
  91. package/dist/chunks/radio.js +11 -7
  92. package/dist/chunks/radio.js.map +1 -1
  93. package/dist/chunks/select.cjs +97 -66
  94. package/dist/chunks/select.cjs.map +1 -1
  95. package/dist/chunks/select.js +97 -66
  96. package/dist/chunks/select.js.map +1 -1
  97. package/dist/chunks/size.cjs +1 -1
  98. package/dist/chunks/size.js +1 -1
  99. package/dist/chunks/slider.cjs +35 -75
  100. package/dist/chunks/slider.cjs.map +1 -1
  101. package/dist/chunks/slider.js +35 -75
  102. package/dist/chunks/slider.js.map +1 -1
  103. package/dist/chunks/spinner.cjs +102 -0
  104. package/dist/chunks/spinner.cjs.map +1 -0
  105. package/dist/chunks/spinner.js +103 -0
  106. package/dist/chunks/spinner.js.map +1 -0
  107. package/dist/chunks/switch.cjs +110 -16
  108. package/dist/chunks/switch.cjs.map +1 -1
  109. package/dist/chunks/switch.js +111 -17
  110. package/dist/chunks/switch.js.map +1 -1
  111. package/dist/chunks/tab-panel.cjs +14 -5
  112. package/dist/chunks/tab-panel.cjs.map +1 -1
  113. package/dist/chunks/tab-panel.js +15 -6
  114. package/dist/chunks/tab-panel.js.map +1 -1
  115. package/dist/chunks/tag.cjs +2 -2
  116. package/dist/chunks/tag.cjs.map +1 -1
  117. package/dist/chunks/tag.js +3 -3
  118. package/dist/chunks/tag.js.map +1 -1
  119. package/dist/chunks/text-input.cjs +11 -16
  120. package/dist/chunks/text-input.cjs.map +1 -1
  121. package/dist/chunks/text-input.js +11 -16
  122. package/dist/chunks/text-input.js.map +1 -1
  123. package/dist/chunks/textarea.cjs +137 -0
  124. package/dist/chunks/textarea.cjs.map +1 -0
  125. package/dist/chunks/textarea.js +138 -0
  126. package/dist/chunks/textarea.js.map +1 -0
  127. package/dist/chunks/tooltip.cjs +292 -0
  128. package/dist/chunks/tooltip.cjs.map +1 -0
  129. package/dist/chunks/tooltip.js +293 -0
  130. package/dist/chunks/tooltip.js.map +1 -0
  131. package/dist/chunks/tree.cjs +468 -0
  132. package/dist/chunks/tree.cjs.map +1 -0
  133. package/dist/chunks/tree.js +469 -0
  134. package/dist/chunks/tree.js.map +1 -0
  135. package/dist/chunks/variables.cjs +273 -249
  136. package/dist/chunks/variables.cjs.map +1 -1
  137. package/dist/chunks/variables.js +273 -249
  138. package/dist/chunks/variables.js.map +1 -1
  139. package/dist/copy-button.cjs +6 -0
  140. package/dist/copy-button.cjs.map +1 -0
  141. package/dist/copy-button.js +6 -0
  142. package/dist/copy-button.js.map +1 -0
  143. package/dist/detail-group.cjs +6 -0
  144. package/dist/detail-group.cjs.map +1 -0
  145. package/dist/detail-group.js +6 -0
  146. package/dist/detail-group.js.map +1 -0
  147. package/dist/drawer.cjs +6 -0
  148. package/dist/drawer.cjs.map +1 -0
  149. package/dist/drawer.js +6 -0
  150. package/dist/drawer.js.map +1 -0
  151. package/dist/dropdown.js +4 -4
  152. package/dist/index.cjs +24 -99
  153. package/dist/index.cjs.map +1 -1
  154. package/dist/index.js +41 -116
  155. package/dist/index.js.map +1 -1
  156. package/dist/menu.cjs +6 -0
  157. package/dist/menu.cjs.map +1 -0
  158. package/dist/menu.js +6 -0
  159. package/dist/menu.js.map +1 -0
  160. package/dist/number-input.cjs +6 -0
  161. package/dist/number-input.cjs.map +1 -0
  162. package/dist/number-input.js +6 -0
  163. package/dist/number-input.js.map +1 -0
  164. package/dist/pagination.cjs +6 -0
  165. package/dist/pagination.cjs.map +1 -0
  166. package/dist/pagination.js +6 -0
  167. package/dist/pagination.js.map +1 -0
  168. package/dist/progress-bar.cjs +6 -0
  169. package/dist/progress-bar.cjs.map +1 -0
  170. package/dist/progress-bar.js +6 -0
  171. package/dist/progress-bar.js.map +1 -0
  172. package/dist/select.cjs +2 -2
  173. package/dist/select.cjs.map +1 -1
  174. package/dist/select.js +3 -3
  175. package/dist/select.js.map +1 -1
  176. package/dist/spinner.cjs +6 -0
  177. package/dist/spinner.cjs.map +1 -0
  178. package/dist/spinner.js +6 -0
  179. package/dist/spinner.js.map +1 -0
  180. package/dist/textarea.cjs +5 -0
  181. package/dist/textarea.cjs.map +1 -0
  182. package/dist/textarea.js +5 -0
  183. package/dist/textarea.js.map +1 -0
  184. package/dist/tooltip.cjs +6 -0
  185. package/dist/tooltip.cjs.map +1 -0
  186. package/dist/tooltip.js +6 -0
  187. package/dist/tooltip.js.map +1 -0
  188. package/dist/tree.cjs +6 -0
  189. package/dist/tree.cjs.map +1 -0
  190. package/dist/tree.js +6 -0
  191. package/dist/tree.js.map +1 -0
  192. package/dist/types/aeico-field.d.ts +52 -0
  193. package/dist/types/alert/alert.d.ts +1 -0
  194. package/dist/types/card/defines.d.ts +1 -1
  195. package/dist/types/copy-button/copy-button.d.ts +32 -0
  196. package/dist/types/copy-button/defines.d.ts +1 -0
  197. package/dist/types/copy-button/index.d.ts +3 -0
  198. package/dist/types/detail/defines.d.ts +2 -1
  199. package/dist/types/detail/detail.d.ts +3 -1
  200. package/dist/types/detail/index.d.ts +1 -1
  201. package/dist/types/detail-group/detail-group.d.ts +39 -0
  202. package/dist/types/detail-group/index.d.ts +2 -0
  203. package/dist/types/drawer/defines.d.ts +1 -0
  204. package/dist/types/drawer/drawer.d.ts +31 -0
  205. package/dist/types/drawer/index.d.ts +3 -0
  206. package/dist/types/icon/built-in-icons.d.ts +1 -0
  207. package/dist/types/icon/defines.d.ts +5 -1
  208. package/dist/types/icon/icon.d.ts +1 -0
  209. package/dist/types/icon/index.d.ts +1 -1
  210. package/dist/types/icon/registry.d.ts +8 -0
  211. package/dist/types/index.d.ts +17 -0
  212. package/dist/types/menu/defines.d.ts +15 -0
  213. package/dist/types/menu/index.d.ts +5 -0
  214. package/dist/types/menu/menu-item.d.ts +63 -0
  215. package/dist/types/menu/menu.d.ts +34 -0
  216. package/dist/types/number-input/index.d.ts +2 -0
  217. package/dist/types/number-input/number-input.d.ts +35 -0
  218. package/dist/types/pagination/defines.d.ts +2 -0
  219. package/dist/types/pagination/index.d.ts +3 -0
  220. package/dist/types/pagination/pagination.d.ts +77 -0
  221. package/dist/types/select/select.d.ts +2 -2
  222. package/dist/types/spinner/defines.d.ts +3 -0
  223. package/dist/types/spinner/index.d.ts +3 -0
  224. package/dist/types/spinner/spinner.d.ts +35 -0
  225. package/dist/types/switch/defines.d.ts +1 -0
  226. package/dist/types/switch/switch.d.ts +8 -4
  227. package/dist/types/tabs/defines.d.ts +1 -0
  228. package/dist/types/tabs/tabs.d.ts +3 -0
  229. package/dist/types/text-input/text-input.d.ts +0 -4
  230. package/dist/types/textarea/index.d.ts +1 -0
  231. package/dist/types/textarea/textarea.d.ts +26 -0
  232. package/dist/types/tooltip/defines.d.ts +2 -0
  233. package/dist/types/tooltip/index.d.ts +4 -0
  234. package/dist/types/tooltip/tooltip.d.ts +48 -0
  235. package/dist/types/tree/defines.d.ts +23 -0
  236. package/dist/types/tree/index.d.ts +5 -0
  237. package/dist/types/tree/tree-item.d.ts +54 -0
  238. package/dist/types/tree/tree.d.ts +64 -0
  239. package/package.json +5 -5
  240. package/src/aeico-field.ts +142 -7
  241. package/src/alert/alert.ts +3 -2
  242. package/src/card/defines.ts +1 -1
  243. package/src/checkbox/checkbox.ts +17 -2
  244. package/src/copy-button/copy-button.ts +150 -0
  245. package/src/copy-button/defines.ts +5 -0
  246. package/src/copy-button/index.ts +3 -0
  247. package/src/detail/defines.ts +2 -1
  248. package/src/detail/detail.ts +5 -1
  249. package/src/detail/index.ts +1 -1
  250. package/src/detail-group/detail-group.ts +104 -0
  251. package/src/detail-group/index.ts +2 -0
  252. package/src/drawer/defines.ts +1 -0
  253. package/src/drawer/drawer.ts +157 -0
  254. package/src/drawer/index.ts +3 -0
  255. package/src/icon/built-in-icons.ts +21 -0
  256. package/src/icon/defines.ts +6 -1
  257. package/src/icon/icon.ts +29 -10
  258. package/src/icon/index.ts +1 -1
  259. package/src/icon/registry.ts +23 -1
  260. package/src/index.ts +30 -0
  261. package/src/menu/defines.ts +17 -0
  262. package/src/menu/index.ts +5 -0
  263. package/src/menu/menu-item.ts +315 -0
  264. package/src/menu/menu.ts +81 -0
  265. package/src/number-input/index.ts +2 -0
  266. package/src/number-input/number-input.ts +137 -0
  267. package/src/pagination/defines.ts +2 -0
  268. package/src/pagination/index.ts +3 -0
  269. package/src/pagination/pagination.ts +310 -0
  270. package/src/radio-group/radio-group.ts +11 -4
  271. package/src/select/select.ts +111 -70
  272. package/src/slider/slider.ts +9 -2
  273. package/src/spinner/defines.ts +12 -0
  274. package/src/spinner/index.ts +3 -0
  275. package/src/spinner/spinner.ts +81 -0
  276. package/src/styles/color.css +91 -91
  277. package/src/styles/components/action-button.css +37 -0
  278. package/src/styles/components/alert.css +22 -28
  279. package/src/styles/components/badge.css +13 -20
  280. package/src/styles/components/breadcrumb-item.css +7 -7
  281. package/src/styles/components/button.css +39 -50
  282. package/src/styles/components/card.css +45 -30
  283. package/src/styles/components/checkbox.css +9 -36
  284. package/src/styles/components/copy-button.css +108 -0
  285. package/src/styles/components/detail-group.css +10 -0
  286. package/src/styles/components/detail.css +56 -35
  287. package/src/styles/components/dialog.css +11 -11
  288. package/src/styles/components/divider.css +3 -3
  289. package/src/styles/components/drawer.css +152 -0
  290. package/src/styles/components/dropdown-item.css +7 -8
  291. package/src/styles/components/dropdown.css +3 -4
  292. package/src/styles/components/field-label.css +120 -0
  293. package/src/styles/components/icon-button.css +25 -36
  294. package/src/styles/components/icon.css +1 -1
  295. package/src/styles/components/menu-item.css +167 -0
  296. package/src/styles/components/menu.css +17 -0
  297. package/src/styles/components/navbar.css +16 -16
  298. package/src/styles/components/number-input.css +158 -0
  299. package/src/styles/components/pagination.css +205 -0
  300. package/src/styles/components/progress-bar.css +2 -3
  301. package/src/styles/components/radio-group.css +69 -106
  302. package/src/styles/components/select-option.css +5 -5
  303. package/src/styles/components/select.css +30 -69
  304. package/src/styles/components/slider.css +26 -71
  305. package/src/styles/components/spinner.css +78 -0
  306. package/src/styles/components/switch.css +64 -27
  307. package/src/styles/components/tab-panel.css +1 -1
  308. package/src/styles/components/tab.css +4 -5
  309. package/src/styles/components/tabs.css +49 -1
  310. package/src/styles/components/tag.css +14 -21
  311. package/src/styles/components/text-input.css +17 -64
  312. package/src/styles/components/textarea.css +66 -0
  313. package/src/styles/components/tooltip.css +102 -0
  314. package/src/styles/components/tree-item.css +152 -0
  315. package/src/styles/components/tree.css +10 -0
  316. package/src/styles/layout.css +457 -25
  317. package/src/styles/radius.css +10 -0
  318. package/src/styles/size.css +7 -7
  319. package/src/styles/variables.css +271 -247
  320. package/src/switch/defines.ts +1 -0
  321. package/src/switch/switch.ts +61 -12
  322. package/src/tabs/defines.ts +1 -0
  323. package/src/tabs/tabs.ts +12 -0
  324. package/src/text-input/text-input.ts +10 -15
  325. package/src/textarea/index.ts +1 -0
  326. package/src/textarea/textarea.ts +107 -0
  327. package/src/tooltip/defines.ts +11 -0
  328. package/src/tooltip/index.ts +4 -0
  329. package/src/tooltip/tooltip.ts +183 -0
  330. package/src/tree/defines.ts +26 -0
  331. package/src/tree/index.ts +5 -0
  332. package/src/tree/tree-item.ts +258 -0
  333. package/src/tree/tree.ts +237 -0
  334. package/dist/chunks/aeico-field.cjs +0 -179
  335. package/dist/chunks/aeico-field.cjs.map +0 -1
  336. package/dist/chunks/aeico-field.js +0 -180
  337. package/dist/chunks/aeico-field.js.map +0 -1
@@ -0,0 +1,469 @@
1
+ import { S as SVG_NS, A as AeicoComponent } from "./aeico-component.js";
2
+ import { prop, html } from "aeico";
3
+ import { v as variables } from "./variables.js";
4
+ const style$1 = ":host {\n display: block;\n}\n\n.tree {\n display: block;\n padding: 0.25rem;\n box-sizing: border-box;\n user-select: none;\n}\n";
5
+ const style = ":host {\n display: block;\n --ae-tree-indent: 1.25rem;\n --tree-item-height: 2rem;\n --tree-item-font-size: 0.9375rem;\n --tree-item-color: var(--ae-color-text-main, #343a40);\n --tree-item-color-disabled: var(--ae-color-text-disabled, #bbb);\n --tree-item-bg-hover: var(--ae-surface-raised, rgba(0, 0, 0, 0.04));\n --tree-item-bg-selected: var(--ae-color-primary-bg-subtle, rgba(14, 99, 156, 0.08));\n --tree-item-color-selected: var(--ae-color-primary, #0e639c);\n --tree-item-line-color: var(--ae-border-default, rgba(0, 0, 0, 0.15));\n --tree-item-expand-size: 1rem;\n}\n\n.tree-item-content {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n height: var(--tree-item-height);\n padding-left: calc(var(--ae-tree-indent) * var(--depth, 0) + 0.25rem);\n padding-right: 0.5rem;\n font-size: var(--tree-item-font-size);\n color: var(--tree-item-color);\n cursor: pointer;\n user-select: none;\n border-radius: var(--ae-border-radius, var(--ae-radius-sm));\n transition: background 0.1s, color 0.1s;\n box-sizing: border-box;\n}\n\n.tree-item-content:hover {\n background: var(--tree-item-bg-hover);\n}\n\n.expand-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--tree-item-expand-size);\n height: var(--tree-item-expand-size);\n padding: 0;\n border: none;\n background: transparent;\n color: inherit;\n cursor: pointer;\n border-radius: var(--ae-border-radius, var(--ae-radius-sm));\n transition: transform 0.18s;\n outline: none;\n -webkit-appearance: none;\n appearance: none;\n}\n\n.expand-btn:focus-visible {\n outline: 2px solid var(--ae-color-primary, #0e639c);\n outline-offset: 1px;\n}\n\n.expand-btn svg,\n.expand-btn ae-icon {\n display: block;\n width: 0.625rem;\n height: 0.625rem;\n fill: currentColor;\n transition: transform 0.18s;\n}\n\n/* ae-icon uses font-size for its internal sizing */\n.expand-btn ae-icon,\n.expand-placeholder ae-icon {\n font-size: 0.625rem;\n}\n\n:host([expanded]) .expand-btn svg,\n:host([expanded]) .expand-btn ae-icon {\n transform: rotate(90deg);\n}\n\n/* Leaf placeholder keeps alignment consistent */\n.expand-placeholder {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--tree-item-expand-size);\n height: var(--tree-item-expand-size);\n}\n\n.tree-item-checkbox {\n flex-shrink: 0;\n width: 0.875rem;\n height: 0.875rem;\n margin: 0;\n cursor: pointer;\n accent-color: var(--ae-color-primary, #0e639c);\n}\n\n.tree-item-label {\n display: inline-flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n height: 100%;\n padding: 0 0.25rem;\n border: none;\n background: transparent;\n color: inherit;\n font-size: inherit;\n font-family: inherit;\n text-align: left;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n cursor: pointer;\n outline: none;\n -webkit-appearance: none;\n appearance: none;\n}\n\n.tree-item-label:focus-visible {\n outline: 2px solid var(--ae-color-primary, #0e639c);\n outline-offset: -2px;\n border-radius: var(--ae-border-radius, var(--ae-radius-sm));\n}\n\n:host([selected]) .tree-item-content {\n background: var(--tree-item-bg-selected);\n color: var(--tree-item-color-selected);\n}\n\n:host([disabled]) .tree-item-content {\n color: var(--tree-item-color-disabled);\n cursor: not-allowed;\n}\n\n:host([disabled]) .tree-item-content * {\n pointer-events: none;\n}\n\n.tree-item-children {\n display: none;\n}\n\n:host([expanded]) .tree-item-children {\n display: block;\n}\n\n:host([showline]) .tree-item-children {\n margin-left: calc(var(--ae-tree-indent) * var(--depth, 0) + 0.25rem + calc(var(--tree-item-expand-size) / 2));\n padding-left: calc(var(--ae-tree-indent) - calc(var(--tree-item-expand-size) / 2));\n border-left: 1px dashed var(--tree-item-line-color);\n}\n";
6
+ var __create$1 = Object.create;
7
+ var __defProp$1 = Object.defineProperty;
8
+ var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;
9
+ var __knownSymbol$1 = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
10
+ var __typeError$1 = (msg) => {
11
+ throw TypeError(msg);
12
+ };
13
+ var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
14
+ var __decoratorStart$1 = (base) => [, , , __create$1((base == null ? void 0 : base[__knownSymbol$1("metadata")]) ?? null)];
15
+ var __decoratorStrings$1 = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
16
+ var __expectFn$1 = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError$1("Function expected") : fn;
17
+ var __decoratorContext$1 = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings$1[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError$1("Already initialized") : fns.push(__expectFn$1(fn || null)) });
18
+ var __decoratorMetadata$1 = (array, target) => __defNormalProp$1(target, __knownSymbol$1("metadata"), array[3]);
19
+ var __runInitializers$1 = (array, flags, self, value) => {
20
+ for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
21
+ return value;
22
+ };
23
+ var __decorateElement$1 = (array, flags, name, decorators, target, extra) => {
24
+ var fn, it, done, ctx, access, k = flags & 7, s = false, p = false;
25
+ var j = array.length + 1, key = __decoratorStrings$1[k + 5];
26
+ var initializers = array[j - 1] = [], extraInitializers = array[j] || (array[j] = []);
27
+ var desc = (target = target.prototype, __getOwnPropDesc$1({ get [name]() {
28
+ return __privateGet$1(this, extra);
29
+ }, set [name](x) {
30
+ return __privateSet$1(this, extra, x);
31
+ } }, name));
32
+ for (var i = decorators.length - 1; i >= 0; i--) {
33
+ ctx = __decoratorContext$1(k, name, done = {}, array[3], extraInitializers);
34
+ {
35
+ ctx.static = s, ctx.private = p, access = ctx.access = { has: (x) => name in x };
36
+ access.get = (x) => x[name];
37
+ access.set = (x, y) => x[name] = y;
38
+ }
39
+ it = (0, decorators[i])({ get: desc.get, set: desc.set }, ctx), done._ = 1;
40
+ if (it === void 0) __expectFn$1(it) && (desc[key] = it);
41
+ else if (typeof it !== "object" || it === null) __typeError$1("Object expected");
42
+ else __expectFn$1(fn = it.get) && (desc.get = fn), __expectFn$1(fn = it.set) && (desc.set = fn), __expectFn$1(fn = it.init) && initializers.unshift(fn);
43
+ }
44
+ return desc && __defProp$1(target, name, desc), target;
45
+ };
46
+ var __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, typeof key !== "symbol" ? key + "" : key, value);
47
+ var __accessCheck$1 = (obj, member, msg) => member.has(obj) || __typeError$1("Cannot " + msg);
48
+ var __privateGet$1 = (obj, member, getter) => (__accessCheck$1(obj, member, "read from private field"), member.get(obj));
49
+ var __privateAdd$1 = (obj, member, value) => member.has(obj) ? __typeError$1("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
50
+ var __privateSet$1 = (obj, member, value, setter) => (__accessCheck$1(obj, member, "write to private field"), member.set(obj, value), value);
51
+ var _indeterminate_dec, _checked_dec, _selected_dec, _expanded_dec, _disabled_dec, _icon_dec$1, _key_dec, _a$1, _init$1, _key, _icon$1, _disabled, _expanded, _selected, _checked, _indeterminate;
52
+ let _autoKeyCounter = 0;
53
+ class TreeItem extends (_a$1 = AeicoComponent, _key_dec = [prop({ type: String })], _icon_dec$1 = [prop({ type: String })], _disabled_dec = [prop({ type: Boolean })], _expanded_dec = [prop({ type: Boolean })], _selected_dec = [prop({ type: Boolean })], _checked_dec = [prop({ type: Boolean })], _indeterminate_dec = [prop({ type: Boolean })], _a$1) {
54
+ constructor() {
55
+ super(...arguments);
56
+ __privateAdd$1(this, _key, __runInitializers$1(_init$1, 8, this)), __runInitializers$1(_init$1, 11, this);
57
+ __privateAdd$1(this, _icon$1, __runInitializers$1(_init$1, 12, this)), __runInitializers$1(_init$1, 15, this);
58
+ __publicField$1(this, "_autoKey", `ae-tree-item-${_autoKeyCounter++}`);
59
+ __privateAdd$1(this, _disabled, __runInitializers$1(_init$1, 16, this, false)), __runInitializers$1(_init$1, 19, this);
60
+ __privateAdd$1(this, _expanded, __runInitializers$1(_init$1, 20, this, false)), __runInitializers$1(_init$1, 23, this);
61
+ __privateAdd$1(this, _selected, __runInitializers$1(_init$1, 24, this, false)), __runInitializers$1(_init$1, 27, this);
62
+ __privateAdd$1(this, _checked, __runInitializers$1(_init$1, 28, this, false)), __runInitializers$1(_init$1, 31, this);
63
+ __privateAdd$1(this, _indeterminate, __runInitializers$1(_init$1, 32, this, false)), __runInitializers$1(_init$1, 35, this);
64
+ __publicField$1(this, "_checkboxEl", null);
65
+ __publicField$1(this, "_handleExpandClick", (e) => {
66
+ e.stopPropagation();
67
+ if (this.disabled) return;
68
+ this.dispatchEvent(
69
+ new CustomEvent("_tree-item-toggle-expand", {
70
+ bubbles: true,
71
+ composed: true,
72
+ detail: { key: this._effectiveKey }
73
+ })
74
+ );
75
+ });
76
+ __publicField$1(this, "_handleLabelClick", () => {
77
+ if (this.disabled) return;
78
+ this.dispatchEvent(
79
+ new CustomEvent("_tree-item-select", {
80
+ bubbles: true,
81
+ composed: true,
82
+ detail: { key: this._effectiveKey }
83
+ })
84
+ );
85
+ });
86
+ __publicField$1(this, "_handleCheckChange", (e) => {
87
+ if (this.disabled) return;
88
+ const input = e.target;
89
+ this.dispatchEvent(
90
+ new CustomEvent("_tree-item-check", {
91
+ bubbles: true,
92
+ composed: true,
93
+ detail: { key: this._effectiveKey, checked: input.checked }
94
+ })
95
+ );
96
+ });
97
+ __publicField$1(this, "_handleKeydown", (e) => {
98
+ if (e.key === "Enter" || e.key === " ") {
99
+ e.preventDefault();
100
+ if (e.target.classList.contains("tree-item-label")) {
101
+ this._handleLabelClick();
102
+ }
103
+ }
104
+ if (e.key === "ArrowRight" && this._hasChildren && !this.expanded) {
105
+ this._handleExpandClick(e);
106
+ }
107
+ if (e.key === "ArrowLeft" && this.expanded) {
108
+ this._handleExpandClick(e);
109
+ }
110
+ });
111
+ }
112
+ get _effectiveKey() {
113
+ return this.key ?? this._autoKey;
114
+ }
115
+ connectedCallback() {
116
+ var _a2, _b;
117
+ super.connectedCallback();
118
+ if (((_a2 = this.parentElement) == null ? void 0 : _a2.tagName.toLowerCase()) === "ae-tree-item" && !this.hasAttribute("slot")) {
119
+ this.setAttribute("slot", "sub");
120
+ }
121
+ let depth = 0;
122
+ let el = this.parentElement;
123
+ while (el) {
124
+ const tag = el.tagName.toLowerCase();
125
+ if (tag === "ae-tree-item") {
126
+ depth++;
127
+ } else if (tag === "ae-tree") {
128
+ break;
129
+ }
130
+ el = el.parentElement;
131
+ }
132
+ this.style.setProperty("--depth", String(depth));
133
+ if ((_b = this._parentTree) == null ? void 0 : _b.showLine) {
134
+ this.setAttribute("showline", "");
135
+ }
136
+ }
137
+ onMounted() {
138
+ var _a2;
139
+ if (((_a2 = this._parentTree) == null ? void 0 : _a2.defaultExpandAll) && this._hasChildren) {
140
+ this.expanded = true;
141
+ }
142
+ }
143
+ get _parentTree() {
144
+ return this.closest("ae-tree");
145
+ }
146
+ get _isCheckable() {
147
+ var _a2;
148
+ return ((_a2 = this._parentTree) == null ? void 0 : _a2.checkable) ?? false;
149
+ }
150
+ get _hasChildren() {
151
+ return !!this.querySelector(':scope > ae-tree-item[slot="sub"]');
152
+ }
153
+ onUpdated() {
154
+ if (this._checkboxEl) {
155
+ this._checkboxEl.checked = this.checked;
156
+ this._checkboxEl.indeterminate = this.indeterminate;
157
+ }
158
+ }
159
+ render() {
160
+ var _a2;
161
+ const hasChildren = this._hasChildren;
162
+ const isCheckable = this._isCheckable;
163
+ const expandIcon = this.icon ?? ((_a2 = this._parentTree) == null ? void 0 : _a2.icon);
164
+ return html(({ div, button, span, input, slot, svg, path, aeIcon }) => {
165
+ div(
166
+ {
167
+ className: "tree-item-content",
168
+ role: "treeitem",
169
+ "aria-expanded": hasChildren ? String(this.expanded) : void 0,
170
+ "aria-selected": String(this.selected),
171
+ "aria-disabled": this.disabled ? "true" : void 0
172
+ },
173
+ () => {
174
+ if (hasChildren) {
175
+ button(
176
+ {
177
+ type: "button",
178
+ className: "expand-btn",
179
+ tabIndex: -1,
180
+ "aria-hidden": "true",
181
+ "@click": this._handleExpandClick
182
+ },
183
+ () => {
184
+ if (expandIcon) {
185
+ aeIcon({ className: "expand-icon", name: expandIcon });
186
+ } else {
187
+ svg(
188
+ {
189
+ className: "expand-icon",
190
+ viewBox: "0 0 10 10",
191
+ "aria-hidden": "true",
192
+ xmlns: SVG_NS
193
+ },
194
+ () => {
195
+ path({ d: "M2 1l6 4-6 4V1z" });
196
+ }
197
+ );
198
+ }
199
+ }
200
+ );
201
+ } else {
202
+ span({ className: "expand-placeholder", "aria-hidden": "true" });
203
+ }
204
+ if (isCheckable) {
205
+ this._checkboxEl = input({
206
+ type: "checkbox",
207
+ className: "tree-item-checkbox",
208
+ checked: this.checked,
209
+ disabled: this.disabled,
210
+ tabIndex: -1,
211
+ "@change": this._handleCheckChange
212
+ });
213
+ }
214
+ button(
215
+ {
216
+ type: "button",
217
+ className: "tree-item-label",
218
+ disabled: this.disabled,
219
+ "@click": this._handleLabelClick,
220
+ "@keydown": this._handleKeydown
221
+ },
222
+ () => {
223
+ slot();
224
+ }
225
+ );
226
+ }
227
+ );
228
+ div({ className: "tree-item-children", role: "group" }, () => {
229
+ slot({ name: "sub" });
230
+ });
231
+ });
232
+ }
233
+ }
234
+ _init$1 = __decoratorStart$1(_a$1);
235
+ _key = /* @__PURE__ */ new WeakMap();
236
+ _icon$1 = /* @__PURE__ */ new WeakMap();
237
+ _disabled = /* @__PURE__ */ new WeakMap();
238
+ _expanded = /* @__PURE__ */ new WeakMap();
239
+ _selected = /* @__PURE__ */ new WeakMap();
240
+ _checked = /* @__PURE__ */ new WeakMap();
241
+ _indeterminate = /* @__PURE__ */ new WeakMap();
242
+ __decorateElement$1(_init$1, 4, "key", _key_dec, TreeItem, _key);
243
+ __decorateElement$1(_init$1, 4, "icon", _icon_dec$1, TreeItem, _icon$1);
244
+ __decorateElement$1(_init$1, 4, "disabled", _disabled_dec, TreeItem, _disabled);
245
+ __decorateElement$1(_init$1, 4, "expanded", _expanded_dec, TreeItem, _expanded);
246
+ __decorateElement$1(_init$1, 4, "selected", _selected_dec, TreeItem, _selected);
247
+ __decorateElement$1(_init$1, 4, "checked", _checked_dec, TreeItem, _checked);
248
+ __decorateElement$1(_init$1, 4, "indeterminate", _indeterminate_dec, TreeItem, _indeterminate);
249
+ __decoratorMetadata$1(_init$1, TreeItem);
250
+ __publicField$1(TreeItem, "tagName", "tree-item");
251
+ __publicField$1(TreeItem, "styles", [variables, style]);
252
+ TreeItem.register();
253
+ var __create = Object.create;
254
+ var __defProp = Object.defineProperty;
255
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
256
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
257
+ var __typeError = (msg) => {
258
+ throw TypeError(msg);
259
+ };
260
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
261
+ var __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol("metadata")]) ?? null)];
262
+ var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
263
+ var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
264
+ var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
265
+ var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
266
+ var __runInitializers = (array, flags, self, value) => {
267
+ for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
268
+ return value;
269
+ };
270
+ var __decorateElement = (array, flags, name, decorators, target, extra) => {
271
+ var fn, it, done, ctx, access, k = flags & 7, s = false, p = false;
272
+ var j = array.length + 1, key = __decoratorStrings[k + 5];
273
+ var initializers = array[j - 1] = [], extraInitializers = array[j] || (array[j] = []);
274
+ var desc = (target = target.prototype, __getOwnPropDesc({ get [name]() {
275
+ return __privateGet(this, extra);
276
+ }, set [name](x) {
277
+ return __privateSet(this, extra, x);
278
+ } }, name));
279
+ for (var i = decorators.length - 1; i >= 0; i--) {
280
+ ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
281
+ {
282
+ ctx.static = s, ctx.private = p, access = ctx.access = { has: (x) => name in x };
283
+ access.get = (x) => x[name];
284
+ access.set = (x, y) => x[name] = y;
285
+ }
286
+ it = (0, decorators[i])({ get: desc.get, set: desc.set }, ctx), done._ = 1;
287
+ if (it === void 0) __expectFn(it) && (desc[key] = it);
288
+ else if (typeof it !== "object" || it === null) __typeError("Object expected");
289
+ else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
290
+ }
291
+ return desc && __defProp(target, name, desc), target;
292
+ };
293
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
294
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
295
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), member.get(obj));
296
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
297
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
298
+ var _icon_dec, _selectedKey_dec, _defaultExpandAll_dec, _showLine_dec, _multiple_dec, _checkable_dec, _a, _init, _checkable, _multiple, _showLine, _defaultExpandAll, _selectedKey, _icon;
299
+ class Tree extends (_a = AeicoComponent, _checkable_dec = [prop({ type: Boolean })], _multiple_dec = [prop({ type: Boolean })], _showLine_dec = [prop({ type: Boolean })], _defaultExpandAll_dec = [prop({ type: Boolean })], _selectedKey_dec = [prop({ type: String })], _icon_dec = [prop({ type: String })], _a) {
300
+ constructor() {
301
+ super(...arguments);
302
+ __privateAdd(this, _checkable, __runInitializers(_init, 8, this, false)), __runInitializers(_init, 11, this);
303
+ __privateAdd(this, _multiple, __runInitializers(_init, 12, this, false)), __runInitializers(_init, 15, this);
304
+ __privateAdd(this, _showLine, __runInitializers(_init, 16, this, false)), __runInitializers(_init, 19, this);
305
+ __privateAdd(this, _defaultExpandAll, __runInitializers(_init, 20, this, false)), __runInitializers(_init, 23, this);
306
+ __privateAdd(this, _selectedKey, __runInitializers(_init, 24, this)), __runInitializers(_init, 27, this);
307
+ __privateAdd(this, _icon, __runInitializers(_init, 28, this)), __runInitializers(_init, 31, this);
308
+ __publicField(this, "selectedKeys", []);
309
+ __publicField(this, "checkedKeys", []);
310
+ __publicField(this, "expandedKeys", []);
311
+ __publicField(this, "_handleItemToggleExpand", (e) => {
312
+ const node = e.target;
313
+ const newExpanded = !node.expanded;
314
+ node.expanded = newExpanded;
315
+ const key = node.key ?? "";
316
+ if (newExpanded) {
317
+ if (!this.expandedKeys.includes(key)) {
318
+ this.expandedKeys = [...this.expandedKeys, key];
319
+ }
320
+ } else {
321
+ this.expandedKeys = this.expandedKeys.filter((k) => k !== key);
322
+ }
323
+ this.emit("expand", {
324
+ detail: {
325
+ key,
326
+ expanded: newExpanded,
327
+ expandedKeys: [...this.expandedKeys]
328
+ }
329
+ });
330
+ });
331
+ __publicField(this, "_handleItemSelect", (e) => {
332
+ const { key } = e.detail;
333
+ if (this.multiple) {
334
+ const alreadySelected = this.selectedKeys.includes(key);
335
+ if (alreadySelected) {
336
+ this.selectedKeys = this.selectedKeys.filter((k) => k !== key);
337
+ } else {
338
+ this.selectedKeys = [...this.selectedKeys, key];
339
+ }
340
+ this.selectedKey = this.selectedKeys[this.selectedKeys.length - 1];
341
+ this._getAllItems().forEach((item) => {
342
+ item.selected = this.selectedKeys.includes(item.key ?? "");
343
+ });
344
+ this.emit("select", {
345
+ detail: {
346
+ key,
347
+ selected: !alreadySelected,
348
+ selectedKeys: [...this.selectedKeys]
349
+ }
350
+ });
351
+ } else {
352
+ const alreadySelected = this.selectedKey === key;
353
+ this._getAllItems().forEach((item) => {
354
+ item.selected = !alreadySelected && item.key === key;
355
+ });
356
+ this.selectedKey = alreadySelected ? void 0 : key;
357
+ this.selectedKeys = this.selectedKey ? [this.selectedKey] : [];
358
+ this.emit("select", {
359
+ detail: {
360
+ key,
361
+ selected: !alreadySelected,
362
+ selectedKeys: [...this.selectedKeys]
363
+ }
364
+ });
365
+ }
366
+ });
367
+ __publicField(this, "_handleItemCheck", (e) => {
368
+ const { key, checked } = e.detail;
369
+ const sourceNode = e.target;
370
+ this._setCheckedRecursive(sourceNode, checked);
371
+ this._syncAncestors(sourceNode);
372
+ this.checkedKeys = this._computeCheckedKeys();
373
+ this.emit("check", {
374
+ detail: { key, checked, checkedKeys: [...this.checkedKeys] }
375
+ });
376
+ });
377
+ }
378
+ connectedCallback() {
379
+ super.connectedCallback();
380
+ this.listen("_tree-item-toggle-expand", this._handleItemToggleExpand);
381
+ this.listen("_tree-item-select", this._handleItemSelect);
382
+ this.listen("_tree-item-check", this._handleItemCheck);
383
+ }
384
+ _getAllItems() {
385
+ return Array.from(this.querySelectorAll("ae-tree-item"));
386
+ }
387
+ _getDirectChildren(node) {
388
+ return Array.from(node.querySelectorAll(":scope > ae-tree-item"));
389
+ }
390
+ _computeCheckedKeys() {
391
+ const keys = [];
392
+ for (const item of this._getAllItems()) {
393
+ if (item.checked && !item.indeterminate) {
394
+ keys.push(item.key ?? "");
395
+ }
396
+ }
397
+ return keys.filter(Boolean);
398
+ }
399
+ _setCheckedRecursive(node, checked) {
400
+ if (node.disabled) return;
401
+ node.checked = checked;
402
+ node.indeterminate = false;
403
+ for (const child of this._getDirectChildren(node)) {
404
+ this._setCheckedRecursive(child, checked);
405
+ }
406
+ }
407
+ _syncAncestors(sourceNode) {
408
+ let el = sourceNode.parentElement;
409
+ while (el) {
410
+ const tag = el.tagName.toLowerCase();
411
+ if (tag === "ae-tree-item") {
412
+ const parent = el;
413
+ const children = this._getDirectChildren(parent).filter((c) => !c.disabled);
414
+ if (children.length === 0) break;
415
+ const checkedCount = children.filter((c) => c.checked && !c.indeterminate).length;
416
+ const indeterminateCount = children.filter((c) => c.indeterminate).length;
417
+ if (checkedCount === children.length) {
418
+ parent.checked = true;
419
+ parent.indeterminate = false;
420
+ } else if (checkedCount > 0 || indeterminateCount > 0) {
421
+ parent.checked = false;
422
+ parent.indeterminate = true;
423
+ } else {
424
+ parent.checked = false;
425
+ parent.indeterminate = false;
426
+ }
427
+ } else if (tag === "ae-tree") {
428
+ break;
429
+ }
430
+ el = el.parentElement;
431
+ }
432
+ }
433
+ render() {
434
+ return html(({ div, slot }) => {
435
+ div(
436
+ {
437
+ className: "tree",
438
+ role: "tree",
439
+ "aria-multiselectable": this.multiple ? "true" : "false"
440
+ },
441
+ () => {
442
+ slot();
443
+ }
444
+ );
445
+ });
446
+ }
447
+ }
448
+ _init = __decoratorStart(_a);
449
+ _checkable = /* @__PURE__ */ new WeakMap();
450
+ _multiple = /* @__PURE__ */ new WeakMap();
451
+ _showLine = /* @__PURE__ */ new WeakMap();
452
+ _defaultExpandAll = /* @__PURE__ */ new WeakMap();
453
+ _selectedKey = /* @__PURE__ */ new WeakMap();
454
+ _icon = /* @__PURE__ */ new WeakMap();
455
+ __decorateElement(_init, 4, "checkable", _checkable_dec, Tree, _checkable);
456
+ __decorateElement(_init, 4, "multiple", _multiple_dec, Tree, _multiple);
457
+ __decorateElement(_init, 4, "showLine", _showLine_dec, Tree, _showLine);
458
+ __decorateElement(_init, 4, "defaultExpandAll", _defaultExpandAll_dec, Tree, _defaultExpandAll);
459
+ __decorateElement(_init, 4, "selectedKey", _selectedKey_dec, Tree, _selectedKey);
460
+ __decorateElement(_init, 4, "icon", _icon_dec, Tree, _icon);
461
+ __decoratorMetadata(_init, Tree);
462
+ __publicField(Tree, "tagName", "tree");
463
+ __publicField(Tree, "styles", [variables, style$1]);
464
+ Tree.register();
465
+ export {
466
+ Tree as T,
467
+ TreeItem as a
468
+ };
469
+ //# sourceMappingURL=tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.js","sources":["../../src/tree/tree-item.ts","../../src/tree/tree.ts"],"sourcesContent":["import AeicoComponent from '../aeico-component';\nimport type { InferProps } from 'aeico';\nimport { html, prop } from 'aeico';\nimport style from '../styles/components/tree-item.css?inline';\nimport variables from '../styles/variables.css?inline';\nimport type { ParentTreeLike } from './defines';\nimport { SVG_NS } from '../utils';\nimport '../icon';\n\nlet _autoKeyCounter = 0;\n\n/**\n * Tree item — used as a direct child of `<ae-tree>` or nested inside another\n * `<ae-tree-item>` to create a multi-level tree.\n *\n * - **Parent item**: nest `<ae-tree-item>` children inside; an expand toggle is shown.\n * - **Leaf item**: no `<ae-tree-item>` children; no expand toggle is shown.\n *\n * @prop {string} key - Unique identifier for this item.\n * @prop {string} icon - Icon name (uses `<ae-icon>`). Optional.\n * @prop {boolean} disabled - Disables interaction.\n * @prop {boolean} expanded - Whether children are visible.\n * @prop {boolean} selected - Whether this item is visually selected.\n * @prop {boolean} checked - Checkbox state (checkable mode).\n * @prop {boolean} indeterminate - Checkbox partial state (checkable mode, JS-only).\n *\n * @slot default - Child `<ae-tree-item>` elements.\n * @slot label - Custom label content (falls back to the `label` attribute text).\n */\nclass TreeItem extends AeicoComponent {\n static tagName = 'tree-item';\n\n protected static styles = [variables, style];\n\n @prop({ type: String })\n accessor key: string | undefined;\n\n @prop({ type: String })\n accessor icon: string | undefined;\n\n /** Stable auto-generated key used when `key` prop is not set. */\n private readonly _autoKey = `ae-tree-item-${_autoKeyCounter++}`;\n\n private get _effectiveKey(): string {\n return this.key ?? this._autoKey;\n }\n\n @prop({ type: Boolean })\n accessor disabled: boolean = false;\n\n @prop({ type: Boolean })\n accessor expanded: boolean = false;\n\n @prop({ type: Boolean })\n accessor selected: boolean = false;\n\n @prop({ type: Boolean })\n accessor checked: boolean = false;\n\n @prop({ type: Boolean })\n accessor indeterminate: boolean = false;\n\n private _checkboxEl: HTMLInputElement | null = null;\n\n connectedCallback() {\n super.connectedCallback();\n\n // Auto-assign slot so users don't need to write slot=\"sub\" manually\n if (\n this.parentElement?.tagName.toLowerCase() === 'ae-tree-item' &&\n !this.hasAttribute('slot')\n ) {\n this.setAttribute('slot', 'sub');\n }\n\n let depth = 0;\n let el: Element | null = this.parentElement;\n while (el) {\n const tag = el.tagName.toLowerCase();\n if (tag === 'ae-tree-item') {\n depth++;\n } else if (tag === 'ae-tree') {\n break;\n }\n el = el.parentElement;\n }\n this.style.setProperty('--depth', String(depth));\n\n if (this._parentTree?.showLine) {\n this.setAttribute('showline', '');\n }\n }\n\n protected onMounted(): void {\n if (this._parentTree?.defaultExpandAll && this._hasChildren) {\n this.expanded = true;\n }\n }\n\n private get _parentTree(): ParentTreeLike | null {\n return this.closest<ParentTreeLike>('ae-tree');\n }\n\n private get _isCheckable(): boolean {\n return this._parentTree?.checkable ?? false;\n }\n\n private get _hasChildren(): boolean {\n return !!this.querySelector(':scope > ae-tree-item[slot=\"sub\"]');\n }\n\n private _handleExpandClick = (e: Event): void => {\n e.stopPropagation();\n if (this.disabled) return;\n this.dispatchEvent(\n new CustomEvent('_tree-item-toggle-expand', {\n bubbles: true,\n composed: true,\n detail: { key: this._effectiveKey },\n }),\n );\n };\n\n private _handleLabelClick = (): void => {\n if (this.disabled) return;\n this.dispatchEvent(\n new CustomEvent('_tree-item-select', {\n bubbles: true,\n composed: true,\n detail: { key: this._effectiveKey },\n }),\n );\n };\n\n private _handleCheckChange = (e: Event): void => {\n if (this.disabled) return;\n const input = e.target as HTMLInputElement;\n this.dispatchEvent(\n new CustomEvent('_tree-item-check', {\n bubbles: true,\n composed: true,\n detail: { key: this._effectiveKey, checked: input.checked },\n }),\n );\n };\n\n private _handleKeydown = (e: KeyboardEvent): void => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n if ((e.target as HTMLElement).classList.contains('tree-item-label')) {\n this._handleLabelClick();\n }\n }\n if (e.key === 'ArrowRight' && this._hasChildren && !this.expanded) {\n this._handleExpandClick(e);\n }\n if (e.key === 'ArrowLeft' && this.expanded) {\n this._handleExpandClick(e);\n }\n };\n\n protected onUpdated(): void {\n // indeterminate/checked cannot be set correctly via HTML attribute — must set via JS property\n if (this._checkboxEl) {\n this._checkboxEl.checked = this.checked;\n this._checkboxEl.indeterminate = this.indeterminate;\n }\n }\n\n protected render() {\n const hasChildren = this._hasChildren;\n const isCheckable = this._isCheckable;\n const expandIcon = this.icon ?? this._parentTree?.icon;\n\n return html(({ div, button, span, input, slot, svg, path, aeIcon }) => {\n div(\n {\n className: 'tree-item-content',\n role: 'treeitem',\n 'aria-expanded': hasChildren ? String(this.expanded) : undefined,\n 'aria-selected': String(this.selected),\n 'aria-disabled': this.disabled ? 'true' : undefined,\n },\n () => {\n if (hasChildren) {\n button(\n {\n type: 'button',\n className: 'expand-btn',\n tabIndex: -1,\n 'aria-hidden': 'true',\n '@click': this._handleExpandClick,\n },\n () => {\n if (expandIcon) {\n aeIcon({ className: 'expand-icon', name: expandIcon });\n } else {\n svg(\n {\n className: 'expand-icon',\n viewBox: '0 0 10 10',\n 'aria-hidden': 'true',\n xmlns: SVG_NS,\n },\n () => {\n path({ d: 'M2 1l6 4-6 4V1z' });\n },\n );\n }\n },\n );\n } else {\n span({ className: 'expand-placeholder', 'aria-hidden': 'true' });\n }\n\n if (isCheckable) {\n this._checkboxEl = input({\n type: 'checkbox',\n className: 'tree-item-checkbox',\n checked: this.checked,\n disabled: this.disabled,\n tabIndex: -1,\n '@change': this._handleCheckChange,\n });\n }\n\n button(\n {\n type: 'button',\n className: 'tree-item-label',\n disabled: this.disabled,\n '@click': this._handleLabelClick,\n '@keydown': this._handleKeydown,\n },\n () => {\n slot();\n },\n );\n },\n );\n\n div({ className: 'tree-item-children', role: 'group' }, () => {\n slot({ name: 'sub' });\n });\n });\n }\n}\n\nTreeItem.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-tree-item': TreeItem;\n }\n}\n\nexport default TreeItem;\nexport type TreeItemProps = InferProps<typeof TreeItem>;\n","import AeicoComponent from '../aeico-component';\nimport type { InferProps } from 'aeico';\nimport { html, prop } from 'aeico';\nimport style from '../styles/components/tree.css?inline';\nimport variables from '../styles/variables.css?inline';\nimport type { TreeSelectDetail, TreeExpandDetail, TreeCheckDetail } from './defines';\nimport './tree-item';\nimport type TreeItem from './tree-item';\n\n/**\n * Tree component. Renders a hierarchical tree of `<ae-tree-item>` elements.\n *\n * @prop {boolean} checkable - Enable checkbox selection mode with parent-child sync.\n * @prop {boolean} multiple - Allow multi-select (click to toggle). Ignored when checkable.\n * @prop {boolean} showLine - Show dashed connecting lines between items.\n * @prop {boolean} defaultExpandAll - Expand all items on initial connect.\n * @prop {string} selectedKey - Currently selected key (single-select convenience prop).\n *\n * @property {string[]} selectedKeys - Currently selected keys (multi-select).\n * @property {string[]} checkedKeys - Currently checked keys (checkable mode).\n * @property {string[]} expandedKeys - Currently expanded keys.\n *\n * @event {CustomEvent<TreeSelectDetail>} select - Fires when an item is selected/deselected.\n * @event {CustomEvent<TreeExpandDetail>} expand - Fires when an item is expanded/collapsed.\n * @event {CustomEvent<TreeCheckDetail>} check - Fires when an item checkbox changes.\n *\n * @example\n * ```html\n * <ae-tree>\n * <ae-tree-item key=\"1\" label=\"Parent\">\n * <ae-tree-item key=\"1-1\" label=\"Child A\"></ae-tree-item>\n * <ae-tree-item key=\"1-2\" label=\"Child B\"></ae-tree-item>\n * </ae-tree-item>\n * </ae-tree>\n * ```\n */\nclass Tree extends AeicoComponent {\n static tagName = 'tree';\n\n protected static styles = [variables, style];\n\n @prop({ type: Boolean })\n accessor checkable: boolean = false;\n\n @prop({ type: Boolean })\n accessor multiple: boolean = false;\n\n @prop({ type: Boolean })\n accessor showLine: boolean = false;\n\n @prop({ type: Boolean })\n accessor defaultExpandAll: boolean = false;\n\n @prop({ type: String })\n accessor selectedKey: string | undefined;\n\n /** Icon name used for the expand/collapse toggle on all items (overridable per item). */\n @prop({ type: String })\n accessor icon: string | undefined;\n\n /** Currently selected keys (multi-select). Set programmatically. */\n selectedKeys: string[] = [];\n\n /** Currently checked keys (checkable mode). Set programmatically. */\n checkedKeys: string[] = [];\n\n /** Currently expanded keys. Set programmatically. */\n expandedKeys: string[] = [];\n\n connectedCallback() {\n super.connectedCallback();\n this.listen('_tree-item-toggle-expand', this._handleItemToggleExpand as EventListener);\n this.listen('_tree-item-select', this._handleItemSelect as EventListener);\n this.listen('_tree-item-check', this._handleItemCheck as EventListener);\n }\n\n private _getAllItems(): TreeItem[] {\n return Array.from(this.querySelectorAll<TreeItem>('ae-tree-item'));\n }\n\n private _getDirectChildren(node: Element): TreeItem[] {\n return Array.from(node.querySelectorAll<TreeItem>(':scope > ae-tree-item'));\n }\n\n private _computeCheckedKeys(): string[] {\n const keys: string[] = [];\n for (const item of this._getAllItems()) {\n if (item.checked && !item.indeterminate) {\n keys.push(item.key ?? '');\n }\n }\n return keys.filter(Boolean);\n }\n\n private _handleItemToggleExpand = (e: CustomEvent<{ key: string }>): void => {\n const node = e.target as TreeItem;\n const newExpanded = !node.expanded;\n node.expanded = newExpanded;\n\n const key = node.key ?? '';\n if (newExpanded) {\n if (!this.expandedKeys.includes(key)) {\n this.expandedKeys = [...this.expandedKeys, key];\n }\n } else {\n this.expandedKeys = this.expandedKeys.filter((k) => k !== key);\n }\n\n this.emit('expand', {\n detail: {\n key,\n expanded: newExpanded,\n expandedKeys: [...this.expandedKeys],\n } satisfies TreeExpandDetail,\n });\n };\n\n private _handleItemSelect = (e: CustomEvent<{ key: string }>): void => {\n const { key } = e.detail;\n\n if (this.multiple) {\n // Toggle selection\n const alreadySelected = this.selectedKeys.includes(key);\n if (alreadySelected) {\n this.selectedKeys = this.selectedKeys.filter((k) => k !== key);\n } else {\n this.selectedKeys = [...this.selectedKeys, key];\n }\n this.selectedKey = this.selectedKeys[this.selectedKeys.length - 1];\n\n // Sync visual state\n this._getAllItems().forEach((item) => {\n item.selected = this.selectedKeys.includes(item.key ?? '');\n });\n\n this.emit('select', {\n detail: {\n key,\n selected: !alreadySelected,\n selectedKeys: [...this.selectedKeys],\n } satisfies TreeSelectDetail,\n });\n } else {\n // Single select — deselect all, select target\n const alreadySelected = this.selectedKey === key;\n this._getAllItems().forEach((item) => {\n item.selected = !alreadySelected && item.key === key;\n });\n this.selectedKey = alreadySelected ? undefined : key;\n this.selectedKeys = this.selectedKey ? [this.selectedKey] : [];\n\n this.emit('select', {\n detail: {\n key,\n selected: !alreadySelected,\n selectedKeys: [...this.selectedKeys],\n } satisfies TreeSelectDetail,\n });\n }\n };\n\n private _handleItemCheck = (e: CustomEvent<{ key: string; checked: boolean }>): void => {\n const { key, checked } = e.detail;\n const sourceNode = e.target as TreeItem;\n\n this._setCheckedRecursive(sourceNode, checked);\n this._syncAncestors(sourceNode);\n this.checkedKeys = this._computeCheckedKeys();\n\n this.emit('check', {\n detail: { key, checked, checkedKeys: [...this.checkedKeys] } satisfies TreeCheckDetail,\n });\n };\n\n private _setCheckedRecursive(node: TreeItem, checked: boolean): void {\n if (node.disabled) return;\n node.checked = checked;\n node.indeterminate = false;\n for (const child of this._getDirectChildren(node)) {\n this._setCheckedRecursive(child, checked);\n }\n }\n\n private _syncAncestors(sourceNode: TreeItem): void {\n let el: Element | null = sourceNode.parentElement;\n while (el) {\n const tag = el.tagName.toLowerCase();\n if (tag === 'ae-tree-item') {\n const parent = el as TreeItem;\n const children = this._getDirectChildren(parent).filter((c) => !c.disabled);\n if (children.length === 0) break;\n const checkedCount = children.filter((c) => c.checked && !c.indeterminate).length;\n const indeterminateCount = children.filter((c) => c.indeterminate).length;\n\n if (checkedCount === children.length) {\n parent.checked = true;\n parent.indeterminate = false;\n } else if (checkedCount > 0 || indeterminateCount > 0) {\n parent.checked = false;\n parent.indeterminate = true;\n } else {\n parent.checked = false;\n parent.indeterminate = false;\n }\n } else if (tag === 'ae-tree') {\n break;\n }\n el = el.parentElement;\n }\n }\n\n protected render() {\n return html(({ div, slot }) => {\n div(\n {\n className: 'tree',\n role: 'tree',\n 'aria-multiselectable': this.multiple ? 'true' : 'false',\n },\n () => {\n slot();\n },\n );\n });\n }\n}\n\nTree.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-tree': Tree;\n }\n}\n\nexport default Tree;\nexport type TreeProps = InferProps<typeof Tree>;\n"],"names":["_icon_dec","_a","_init","_icon","__privateAdd","__runInitializers","__publicField","__decoratorStart","__decorateElement","__decoratorMetadata","style"],"mappings":"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"}