aeico-components 0.1.5 → 0.1.6

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 (284) 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 +4 -4
  8. package/dist/chunks/alert.cjs.map +1 -1
  9. package/dist/chunks/alert.js +5 -5
  10. package/dist/chunks/alert.js.map +1 -1
  11. package/dist/chunks/badge.cjs +1 -1
  12. package/dist/chunks/badge.cjs.map +1 -1
  13. package/dist/chunks/badge.js +2 -2
  14. package/dist/chunks/badge.js.map +1 -1
  15. package/dist/chunks/breadcrumb-item.cjs +2 -2
  16. package/dist/chunks/breadcrumb-item.cjs.map +1 -1
  17. package/dist/chunks/breadcrumb-item.js +3 -3
  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 +1 -1
  24. package/dist/chunks/button.cjs.map +1 -1
  25. package/dist/chunks/button.js +2 -2
  26. package/dist/chunks/button.js.map +1 -1
  27. package/dist/chunks/card.cjs +1 -1
  28. package/dist/chunks/card.cjs.map +1 -1
  29. package/dist/chunks/card.js +2 -2
  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/copy-button.cjs +168 -0
  36. package/dist/chunks/copy-button.cjs.map +1 -0
  37. package/dist/chunks/copy-button.js +169 -0
  38. package/dist/chunks/copy-button.js.map +1 -0
  39. package/dist/chunks/detail.cjs +7 -4
  40. package/dist/chunks/detail.cjs.map +1 -1
  41. package/dist/chunks/detail.js +8 -5
  42. package/dist/chunks/detail.js.map +1 -1
  43. package/dist/chunks/dialog.cjs +1 -1
  44. package/dist/chunks/dialog.cjs.map +1 -1
  45. package/dist/chunks/dialog.js +2 -2
  46. package/dist/chunks/dialog.js.map +1 -1
  47. package/dist/chunks/divider.cjs +1 -1
  48. package/dist/chunks/divider.cjs.map +1 -1
  49. package/dist/chunks/divider.js +2 -2
  50. package/dist/chunks/divider.js.map +1 -1
  51. package/dist/chunks/drawer.cjs +180 -0
  52. package/dist/chunks/drawer.cjs.map +1 -0
  53. package/dist/chunks/drawer.js +181 -0
  54. package/dist/chunks/drawer.js.map +1 -0
  55. package/dist/chunks/dropdown-button.cjs +2 -2
  56. package/dist/chunks/dropdown-button.cjs.map +1 -1
  57. package/dist/chunks/dropdown-button.js +3 -3
  58. package/dist/chunks/dropdown-button.js.map +1 -1
  59. package/dist/chunks/icon.cjs +31 -1
  60. package/dist/chunks/icon.cjs.map +1 -1
  61. package/dist/chunks/icon.js +32 -2
  62. package/dist/chunks/icon.js.map +1 -1
  63. package/dist/chunks/menu.cjs +396 -0
  64. package/dist/chunks/menu.cjs.map +1 -0
  65. package/dist/chunks/menu.js +397 -0
  66. package/dist/chunks/menu.js.map +1 -0
  67. package/dist/chunks/navbar.cjs +1 -1
  68. package/dist/chunks/navbar.cjs.map +1 -1
  69. package/dist/chunks/navbar.js +2 -2
  70. package/dist/chunks/navbar.js.map +1 -1
  71. package/dist/chunks/pagination.cjs +475 -0
  72. package/dist/chunks/pagination.cjs.map +1 -0
  73. package/dist/chunks/pagination.js +476 -0
  74. package/dist/chunks/pagination.js.map +1 -0
  75. package/dist/chunks/progress-bar.cjs +101 -0
  76. package/dist/chunks/progress-bar.cjs.map +1 -0
  77. package/dist/chunks/progress-bar.js +102 -0
  78. package/dist/chunks/progress-bar.js.map +1 -0
  79. package/dist/chunks/radio.cjs +11 -7
  80. package/dist/chunks/radio.cjs.map +1 -1
  81. package/dist/chunks/radio.js +11 -7
  82. package/dist/chunks/radio.js.map +1 -1
  83. package/dist/chunks/select.cjs +97 -66
  84. package/dist/chunks/select.cjs.map +1 -1
  85. package/dist/chunks/select.js +97 -66
  86. package/dist/chunks/select.js.map +1 -1
  87. package/dist/chunks/slider.cjs +9 -46
  88. package/dist/chunks/slider.cjs.map +1 -1
  89. package/dist/chunks/slider.js +9 -46
  90. package/dist/chunks/slider.js.map +1 -1
  91. package/dist/chunks/spinner.cjs +102 -0
  92. package/dist/chunks/spinner.cjs.map +1 -0
  93. package/dist/chunks/spinner.js +103 -0
  94. package/dist/chunks/spinner.js.map +1 -0
  95. package/dist/chunks/switch.cjs +110 -16
  96. package/dist/chunks/switch.cjs.map +1 -1
  97. package/dist/chunks/switch.js +111 -17
  98. package/dist/chunks/switch.js.map +1 -1
  99. package/dist/chunks/tab-panel.cjs +3 -3
  100. package/dist/chunks/tab-panel.cjs.map +1 -1
  101. package/dist/chunks/tab-panel.js +4 -4
  102. package/dist/chunks/tab-panel.js.map +1 -1
  103. package/dist/chunks/tag.cjs +1 -1
  104. package/dist/chunks/tag.cjs.map +1 -1
  105. package/dist/chunks/tag.js +2 -2
  106. package/dist/chunks/tag.js.map +1 -1
  107. package/dist/chunks/text-input.cjs +11 -16
  108. package/dist/chunks/text-input.cjs.map +1 -1
  109. package/dist/chunks/text-input.js +11 -16
  110. package/dist/chunks/text-input.js.map +1 -1
  111. package/dist/chunks/textarea.cjs +137 -0
  112. package/dist/chunks/textarea.cjs.map +1 -0
  113. package/dist/chunks/textarea.js +138 -0
  114. package/dist/chunks/textarea.js.map +1 -0
  115. package/dist/chunks/tooltip.cjs +293 -0
  116. package/dist/chunks/tooltip.cjs.map +1 -0
  117. package/dist/chunks/tooltip.js +294 -0
  118. package/dist/chunks/tooltip.js.map +1 -0
  119. package/dist/chunks/tree.cjs +468 -0
  120. package/dist/chunks/tree.cjs.map +1 -0
  121. package/dist/chunks/tree.js +469 -0
  122. package/dist/chunks/tree.js.map +1 -0
  123. package/dist/chunks/variables.cjs +2 -2
  124. package/dist/chunks/variables.js +2 -2
  125. package/dist/copy-button.cjs +6 -0
  126. package/dist/copy-button.cjs.map +1 -0
  127. package/dist/copy-button.js +6 -0
  128. package/dist/copy-button.js.map +1 -0
  129. package/dist/drawer.cjs +6 -0
  130. package/dist/drawer.cjs.map +1 -0
  131. package/dist/drawer.js +6 -0
  132. package/dist/drawer.js.map +1 -0
  133. package/dist/index.cjs +175 -88
  134. package/dist/index.cjs.map +1 -1
  135. package/dist/index.js +186 -99
  136. package/dist/index.js.map +1 -1
  137. package/dist/menu.cjs +6 -0
  138. package/dist/menu.cjs.map +1 -0
  139. package/dist/menu.js +6 -0
  140. package/dist/menu.js.map +1 -0
  141. package/dist/pagination.cjs +6 -0
  142. package/dist/pagination.cjs.map +1 -0
  143. package/dist/pagination.js +6 -0
  144. package/dist/pagination.js.map +1 -0
  145. package/dist/progress-bar.cjs +6 -0
  146. package/dist/progress-bar.cjs.map +1 -0
  147. package/dist/progress-bar.js +6 -0
  148. package/dist/progress-bar.js.map +1 -0
  149. package/dist/select.cjs +1 -1
  150. package/dist/select.cjs.map +1 -1
  151. package/dist/select.js +2 -2
  152. package/dist/select.js.map +1 -1
  153. package/dist/spinner.cjs +6 -0
  154. package/dist/spinner.cjs.map +1 -0
  155. package/dist/spinner.js +6 -0
  156. package/dist/spinner.js.map +1 -0
  157. package/dist/textarea.cjs +5 -0
  158. package/dist/textarea.cjs.map +1 -0
  159. package/dist/textarea.js +5 -0
  160. package/dist/textarea.js.map +1 -0
  161. package/dist/tooltip.cjs +6 -0
  162. package/dist/tooltip.cjs.map +1 -0
  163. package/dist/tooltip.js +6 -0
  164. package/dist/tooltip.js.map +1 -0
  165. package/dist/tree.cjs +6 -0
  166. package/dist/tree.cjs.map +1 -0
  167. package/dist/tree.js +6 -0
  168. package/dist/tree.js.map +1 -0
  169. package/dist/types/aeico-field.d.ts +52 -0
  170. package/dist/types/alert/alert.d.ts +1 -0
  171. package/dist/types/copy-button/copy-button.d.ts +32 -0
  172. package/dist/types/copy-button/defines.d.ts +1 -0
  173. package/dist/types/copy-button/index.d.ts +3 -0
  174. package/dist/types/detail/defines.d.ts +1 -0
  175. package/dist/types/detail/detail.d.ts +3 -1
  176. package/dist/types/detail/index.d.ts +1 -1
  177. package/dist/types/detail-group/detail-group.d.ts +39 -0
  178. package/dist/types/detail-group/index.d.ts +2 -0
  179. package/dist/types/drawer/defines.d.ts +1 -0
  180. package/dist/types/drawer/drawer.d.ts +31 -0
  181. package/dist/types/drawer/index.d.ts +3 -0
  182. package/dist/types/icon/built-in-icons.d.ts +1 -0
  183. package/dist/types/icon/icon.d.ts +1 -0
  184. package/dist/types/icon/registry.d.ts +8 -0
  185. package/dist/types/index.d.ts +17 -0
  186. package/dist/types/menu/defines.d.ts +15 -0
  187. package/dist/types/menu/index.d.ts +5 -0
  188. package/dist/types/menu/menu-item.d.ts +63 -0
  189. package/dist/types/menu/menu.d.ts +34 -0
  190. package/dist/types/number-input/index.d.ts +2 -0
  191. package/dist/types/number-input/number-input.d.ts +35 -0
  192. package/dist/types/pagination/defines.d.ts +2 -0
  193. package/dist/types/pagination/index.d.ts +3 -0
  194. package/dist/types/pagination/pagination.d.ts +77 -0
  195. package/dist/types/select/select.d.ts +2 -2
  196. package/dist/types/spinner/defines.d.ts +3 -0
  197. package/dist/types/spinner/index.d.ts +3 -0
  198. package/dist/types/spinner/spinner.d.ts +35 -0
  199. package/dist/types/switch/defines.d.ts +1 -0
  200. package/dist/types/switch/switch.d.ts +8 -4
  201. package/dist/types/text-input/text-input.d.ts +0 -4
  202. package/dist/types/textarea/index.d.ts +1 -0
  203. package/dist/types/textarea/textarea.d.ts +26 -0
  204. package/dist/types/tooltip/defines.d.ts +2 -0
  205. package/dist/types/tooltip/index.d.ts +4 -0
  206. package/dist/types/tooltip/tooltip.d.ts +48 -0
  207. package/dist/types/tree/defines.d.ts +23 -0
  208. package/dist/types/tree/index.d.ts +5 -0
  209. package/dist/types/tree/tree-item.d.ts +54 -0
  210. package/dist/types/tree/tree.d.ts +64 -0
  211. package/package.json +5 -5
  212. package/src/aeico-field.ts +142 -7
  213. package/src/alert/alert.ts +3 -2
  214. package/src/checkbox/checkbox.ts +17 -2
  215. package/src/copy-button/copy-button.ts +146 -0
  216. package/src/copy-button/defines.ts +5 -0
  217. package/src/copy-button/index.ts +3 -0
  218. package/src/detail/defines.ts +1 -0
  219. package/src/detail/detail.ts +5 -1
  220. package/src/detail/index.ts +1 -1
  221. package/src/detail-group/detail-group.ts +104 -0
  222. package/src/detail-group/index.ts +2 -0
  223. package/src/drawer/defines.ts +1 -0
  224. package/src/drawer/drawer.ts +157 -0
  225. package/src/drawer/index.ts +3 -0
  226. package/src/icon/built-in-icons.ts +21 -0
  227. package/src/icon/icon.ts +1 -0
  228. package/src/icon/registry.ts +22 -0
  229. package/src/index.ts +30 -0
  230. package/src/menu/defines.ts +17 -0
  231. package/src/menu/index.ts +5 -0
  232. package/src/menu/menu-item.ts +315 -0
  233. package/src/menu/menu.ts +81 -0
  234. package/src/number-input/index.ts +2 -0
  235. package/src/number-input/number-input.ts +137 -0
  236. package/src/pagination/defines.ts +2 -0
  237. package/src/pagination/index.ts +3 -0
  238. package/src/pagination/pagination.ts +310 -0
  239. package/src/radio-group/radio-group.ts +11 -4
  240. package/src/select/select.ts +111 -70
  241. package/src/slider/slider.ts +9 -2
  242. package/src/spinner/defines.ts +12 -0
  243. package/src/spinner/index.ts +3 -0
  244. package/src/spinner/spinner.ts +81 -0
  245. package/src/styles/components/action-button.css +37 -0
  246. package/src/styles/components/checkbox.css +4 -26
  247. package/src/styles/components/copy-button.css +119 -0
  248. package/src/styles/components/detail-group.css +10 -0
  249. package/src/styles/components/detail.css +10 -1
  250. package/src/styles/components/drawer.css +161 -0
  251. package/src/styles/components/field-label.css +120 -0
  252. package/src/styles/components/menu-item.css +168 -0
  253. package/src/styles/components/menu.css +17 -0
  254. package/src/styles/components/number-input.css +167 -0
  255. package/src/styles/components/pagination.css +205 -0
  256. package/src/styles/components/radio-group.css +0 -23
  257. package/src/styles/components/select.css +12 -39
  258. package/src/styles/components/slider.css +0 -42
  259. package/src/styles/components/spinner.css +80 -0
  260. package/src/styles/components/switch.css +68 -19
  261. package/src/styles/components/tab-panel.css +1 -1
  262. package/src/styles/components/tabs.css +1 -0
  263. package/src/styles/components/text-input.css +7 -45
  264. package/src/styles/components/textarea.css +75 -0
  265. package/src/styles/components/tooltip.css +103 -0
  266. package/src/styles/components/tree-item.css +152 -0
  267. package/src/styles/components/tree.css +10 -0
  268. package/src/styles/layout.css +457 -25
  269. package/src/switch/defines.ts +1 -0
  270. package/src/switch/switch.ts +61 -12
  271. package/src/text-input/text-input.ts +10 -15
  272. package/src/textarea/index.ts +1 -0
  273. package/src/textarea/textarea.ts +107 -0
  274. package/src/tooltip/defines.ts +11 -0
  275. package/src/tooltip/index.ts +4 -0
  276. package/src/tooltip/tooltip.ts +183 -0
  277. package/src/tree/defines.ts +26 -0
  278. package/src/tree/index.ts +5 -0
  279. package/src/tree/tree-item.ts +258 -0
  280. package/src/tree/tree.ts +237 -0
  281. package/dist/chunks/aeico-field.cjs +0 -179
  282. package/dist/chunks/aeico-field.cjs.map +0 -1
  283. package/dist/chunks/aeico-field.js +0 -180
  284. package/dist/chunks/aeico-field.js.map +0 -1
@@ -0,0 +1,468 @@
1
+ "use strict";
2
+ const aeicoComponent = require("./aeico-component.cjs");
3
+ const aeico = require("aeico");
4
+ const variables = require("./variables.cjs");
5
+ 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";
6
+ 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(--color-text-main, #343a40);\n --tree-item-color-disabled: var(--color-text-disabled, #bbb);\n --tree-item-bg-hover: var(--surface-raised, rgba(0, 0, 0, 0.04));\n --tree-item-bg-selected: var(--color-primary-bg-subtle, rgba(14, 99, 156, 0.08));\n --tree-item-color-selected: var(--color-primary, #0e639c);\n --tree-item-line-color: var(--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-radius-sm, 4px);\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-radius-sm, 4px);\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(--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(--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(--color-primary, #0e639c);\n outline-offset: -2px;\n border-radius: var(--ae-radius-sm, 4px);\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";
7
+ var __create$1 = Object.create;
8
+ var __defProp$1 = Object.defineProperty;
9
+ var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;
10
+ var __knownSymbol$1 = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
11
+ var __typeError$1 = (msg) => {
12
+ throw TypeError(msg);
13
+ };
14
+ var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
15
+ var __decoratorStart$1 = (base) => [, , , __create$1((base == null ? void 0 : base[__knownSymbol$1("metadata")]) ?? null)];
16
+ var __decoratorStrings$1 = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
17
+ var __expectFn$1 = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError$1("Function expected") : fn;
18
+ 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)) });
19
+ var __decoratorMetadata$1 = (array, target) => __defNormalProp$1(target, __knownSymbol$1("metadata"), array[3]);
20
+ var __runInitializers$1 = (array, flags, self, value) => {
21
+ 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);
22
+ return value;
23
+ };
24
+ var __decorateElement$1 = (array, flags, name, decorators, target, extra) => {
25
+ var fn, it, done, ctx, access, k = flags & 7, s = false, p = false;
26
+ var j = array.length + 1, key = __decoratorStrings$1[k + 5];
27
+ var initializers = array[j - 1] = [], extraInitializers = array[j] || (array[j] = []);
28
+ var desc = (target = target.prototype, __getOwnPropDesc$1({ get [name]() {
29
+ return __privateGet$1(this, extra);
30
+ }, set [name](x) {
31
+ return __privateSet$1(this, extra, x);
32
+ } }, name));
33
+ for (var i = decorators.length - 1; i >= 0; i--) {
34
+ ctx = __decoratorContext$1(k, name, done = {}, array[3], extraInitializers);
35
+ {
36
+ ctx.static = s, ctx.private = p, access = ctx.access = { has: (x) => name in x };
37
+ access.get = (x) => x[name];
38
+ access.set = (x, y) => x[name] = y;
39
+ }
40
+ it = (0, decorators[i])({ get: desc.get, set: desc.set }, ctx), done._ = 1;
41
+ if (it === void 0) __expectFn$1(it) && (desc[key] = it);
42
+ else if (typeof it !== "object" || it === null) __typeError$1("Object expected");
43
+ 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);
44
+ }
45
+ return desc && __defProp$1(target, name, desc), target;
46
+ };
47
+ var __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, typeof key !== "symbol" ? key + "" : key, value);
48
+ var __accessCheck$1 = (obj, member, msg) => member.has(obj) || __typeError$1("Cannot " + msg);
49
+ var __privateGet$1 = (obj, member, getter) => (__accessCheck$1(obj, member, "read from private field"), member.get(obj));
50
+ 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);
51
+ var __privateSet$1 = (obj, member, value, setter) => (__accessCheck$1(obj, member, "write to private field"), member.set(obj, value), value);
52
+ 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;
53
+ let _autoKeyCounter = 0;
54
+ class TreeItem extends (_a$1 = aeicoComponent.AeicoComponent, _key_dec = [aeico.prop({ type: String })], _icon_dec$1 = [aeico.prop({ type: String })], _disabled_dec = [aeico.prop({ type: Boolean })], _expanded_dec = [aeico.prop({ type: Boolean })], _selected_dec = [aeico.prop({ type: Boolean })], _checked_dec = [aeico.prop({ type: Boolean })], _indeterminate_dec = [aeico.prop({ type: Boolean })], _a$1) {
55
+ constructor() {
56
+ super(...arguments);
57
+ __privateAdd$1(this, _key, __runInitializers$1(_init$1, 8, this)), __runInitializers$1(_init$1, 11, this);
58
+ __privateAdd$1(this, _icon$1, __runInitializers$1(_init$1, 12, this)), __runInitializers$1(_init$1, 15, this);
59
+ __publicField$1(this, "_autoKey", `ae-tree-item-${_autoKeyCounter++}`);
60
+ __privateAdd$1(this, _disabled, __runInitializers$1(_init$1, 16, this, false)), __runInitializers$1(_init$1, 19, this);
61
+ __privateAdd$1(this, _expanded, __runInitializers$1(_init$1, 20, this, false)), __runInitializers$1(_init$1, 23, this);
62
+ __privateAdd$1(this, _selected, __runInitializers$1(_init$1, 24, this, false)), __runInitializers$1(_init$1, 27, this);
63
+ __privateAdd$1(this, _checked, __runInitializers$1(_init$1, 28, this, false)), __runInitializers$1(_init$1, 31, this);
64
+ __privateAdd$1(this, _indeterminate, __runInitializers$1(_init$1, 32, this, false)), __runInitializers$1(_init$1, 35, this);
65
+ __publicField$1(this, "_checkboxEl", null);
66
+ __publicField$1(this, "_handleExpandClick", (e) => {
67
+ e.stopPropagation();
68
+ if (this.disabled) return;
69
+ this.dispatchEvent(
70
+ new CustomEvent("_tree-item-toggle-expand", {
71
+ bubbles: true,
72
+ composed: true,
73
+ detail: { key: this._effectiveKey }
74
+ })
75
+ );
76
+ });
77
+ __publicField$1(this, "_handleLabelClick", () => {
78
+ if (this.disabled) return;
79
+ this.dispatchEvent(
80
+ new CustomEvent("_tree-item-select", {
81
+ bubbles: true,
82
+ composed: true,
83
+ detail: { key: this._effectiveKey }
84
+ })
85
+ );
86
+ });
87
+ __publicField$1(this, "_handleCheckChange", (e) => {
88
+ if (this.disabled) return;
89
+ const input = e.target;
90
+ this.dispatchEvent(
91
+ new CustomEvent("_tree-item-check", {
92
+ bubbles: true,
93
+ composed: true,
94
+ detail: { key: this._effectiveKey, checked: input.checked }
95
+ })
96
+ );
97
+ });
98
+ __publicField$1(this, "_handleKeydown", (e) => {
99
+ if (e.key === "Enter" || e.key === " ") {
100
+ e.preventDefault();
101
+ if (e.target.classList.contains("tree-item-label")) {
102
+ this._handleLabelClick();
103
+ }
104
+ }
105
+ if (e.key === "ArrowRight" && this._hasChildren && !this.expanded) {
106
+ this._handleExpandClick(e);
107
+ }
108
+ if (e.key === "ArrowLeft" && this.expanded) {
109
+ this._handleExpandClick(e);
110
+ }
111
+ });
112
+ }
113
+ get _effectiveKey() {
114
+ return this.key ?? this._autoKey;
115
+ }
116
+ connectedCallback() {
117
+ var _a2, _b;
118
+ super.connectedCallback();
119
+ if (((_a2 = this.parentElement) == null ? void 0 : _a2.tagName.toLowerCase()) === "ae-tree-item" && !this.hasAttribute("slot")) {
120
+ this.setAttribute("slot", "sub");
121
+ }
122
+ let depth = 0;
123
+ let el = this.parentElement;
124
+ while (el) {
125
+ const tag = el.tagName.toLowerCase();
126
+ if (tag === "ae-tree-item") {
127
+ depth++;
128
+ } else if (tag === "ae-tree") {
129
+ break;
130
+ }
131
+ el = el.parentElement;
132
+ }
133
+ this.style.setProperty("--depth", String(depth));
134
+ if ((_b = this._parentTree) == null ? void 0 : _b.showLine) {
135
+ this.setAttribute("showline", "");
136
+ }
137
+ }
138
+ onMounted() {
139
+ var _a2;
140
+ if (((_a2 = this._parentTree) == null ? void 0 : _a2.defaultExpandAll) && this._hasChildren) {
141
+ this.expanded = true;
142
+ }
143
+ }
144
+ get _parentTree() {
145
+ return this.closest("ae-tree");
146
+ }
147
+ get _isCheckable() {
148
+ var _a2;
149
+ return ((_a2 = this._parentTree) == null ? void 0 : _a2.checkable) ?? false;
150
+ }
151
+ get _hasChildren() {
152
+ return !!this.querySelector(':scope > ae-tree-item[slot="sub"]');
153
+ }
154
+ onUpdated() {
155
+ if (this._checkboxEl) {
156
+ this._checkboxEl.checked = this.checked;
157
+ this._checkboxEl.indeterminate = this.indeterminate;
158
+ }
159
+ }
160
+ render() {
161
+ var _a2;
162
+ const hasChildren = this._hasChildren;
163
+ const isCheckable = this._isCheckable;
164
+ const expandIcon = this.icon ?? ((_a2 = this._parentTree) == null ? void 0 : _a2.icon);
165
+ return aeico.html(({ div, button, span, input, slot, svg, path, aeIcon }) => {
166
+ div(
167
+ {
168
+ className: "tree-item-content",
169
+ role: "treeitem",
170
+ "aria-expanded": hasChildren ? String(this.expanded) : void 0,
171
+ "aria-selected": String(this.selected),
172
+ "aria-disabled": this.disabled ? "true" : void 0
173
+ },
174
+ () => {
175
+ if (hasChildren) {
176
+ button(
177
+ {
178
+ type: "button",
179
+ className: "expand-btn",
180
+ tabIndex: -1,
181
+ "aria-hidden": "true",
182
+ "@click": this._handleExpandClick
183
+ },
184
+ () => {
185
+ if (expandIcon) {
186
+ aeIcon({ className: "expand-icon", name: expandIcon });
187
+ } else {
188
+ svg(
189
+ {
190
+ className: "expand-icon",
191
+ viewBox: "0 0 10 10",
192
+ "aria-hidden": "true",
193
+ xmlns: aeicoComponent.SVG_NS
194
+ },
195
+ () => {
196
+ path({ d: "M2 1l6 4-6 4V1z" });
197
+ }
198
+ );
199
+ }
200
+ }
201
+ );
202
+ } else {
203
+ span({ className: "expand-placeholder", "aria-hidden": "true" });
204
+ }
205
+ if (isCheckable) {
206
+ this._checkboxEl = input({
207
+ type: "checkbox",
208
+ className: "tree-item-checkbox",
209
+ checked: this.checked,
210
+ disabled: this.disabled,
211
+ tabIndex: -1,
212
+ "@change": this._handleCheckChange
213
+ });
214
+ }
215
+ button(
216
+ {
217
+ type: "button",
218
+ className: "tree-item-label",
219
+ disabled: this.disabled,
220
+ "@click": this._handleLabelClick,
221
+ "@keydown": this._handleKeydown
222
+ },
223
+ () => {
224
+ slot();
225
+ }
226
+ );
227
+ }
228
+ );
229
+ div({ className: "tree-item-children", role: "group" }, () => {
230
+ slot({ name: "sub" });
231
+ });
232
+ });
233
+ }
234
+ }
235
+ _init$1 = __decoratorStart$1(_a$1);
236
+ _key = /* @__PURE__ */ new WeakMap();
237
+ _icon$1 = /* @__PURE__ */ new WeakMap();
238
+ _disabled = /* @__PURE__ */ new WeakMap();
239
+ _expanded = /* @__PURE__ */ new WeakMap();
240
+ _selected = /* @__PURE__ */ new WeakMap();
241
+ _checked = /* @__PURE__ */ new WeakMap();
242
+ _indeterminate = /* @__PURE__ */ new WeakMap();
243
+ __decorateElement$1(_init$1, 4, "key", _key_dec, TreeItem, _key);
244
+ __decorateElement$1(_init$1, 4, "icon", _icon_dec$1, TreeItem, _icon$1);
245
+ __decorateElement$1(_init$1, 4, "disabled", _disabled_dec, TreeItem, _disabled);
246
+ __decorateElement$1(_init$1, 4, "expanded", _expanded_dec, TreeItem, _expanded);
247
+ __decorateElement$1(_init$1, 4, "selected", _selected_dec, TreeItem, _selected);
248
+ __decorateElement$1(_init$1, 4, "checked", _checked_dec, TreeItem, _checked);
249
+ __decorateElement$1(_init$1, 4, "indeterminate", _indeterminate_dec, TreeItem, _indeterminate);
250
+ __decoratorMetadata$1(_init$1, TreeItem);
251
+ __publicField$1(TreeItem, "tagName", "tree-item");
252
+ __publicField$1(TreeItem, "styles", [variables.variables, style]);
253
+ TreeItem.register();
254
+ var __create = Object.create;
255
+ var __defProp = Object.defineProperty;
256
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
257
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
258
+ var __typeError = (msg) => {
259
+ throw TypeError(msg);
260
+ };
261
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
262
+ var __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol("metadata")]) ?? null)];
263
+ var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
264
+ var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
265
+ var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
266
+ var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
267
+ var __runInitializers = (array, flags, self, value) => {
268
+ 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);
269
+ return value;
270
+ };
271
+ var __decorateElement = (array, flags, name, decorators, target, extra) => {
272
+ var fn, it, done, ctx, access, k = flags & 7, s = false, p = false;
273
+ var j = array.length + 1, key = __decoratorStrings[k + 5];
274
+ var initializers = array[j - 1] = [], extraInitializers = array[j] || (array[j] = []);
275
+ var desc = (target = target.prototype, __getOwnPropDesc({ get [name]() {
276
+ return __privateGet(this, extra);
277
+ }, set [name](x) {
278
+ return __privateSet(this, extra, x);
279
+ } }, name));
280
+ for (var i = decorators.length - 1; i >= 0; i--) {
281
+ ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
282
+ {
283
+ ctx.static = s, ctx.private = p, access = ctx.access = { has: (x) => name in x };
284
+ access.get = (x) => x[name];
285
+ access.set = (x, y) => x[name] = y;
286
+ }
287
+ it = (0, decorators[i])({ get: desc.get, set: desc.set }, ctx), done._ = 1;
288
+ if (it === void 0) __expectFn(it) && (desc[key] = it);
289
+ else if (typeof it !== "object" || it === null) __typeError("Object expected");
290
+ else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
291
+ }
292
+ return desc && __defProp(target, name, desc), target;
293
+ };
294
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
295
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
296
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), member.get(obj));
297
+ 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);
298
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
299
+ var _icon_dec, _selectedKey_dec, _defaultExpandAll_dec, _showLine_dec, _multiple_dec, _checkable_dec, _a, _init, _checkable, _multiple, _showLine, _defaultExpandAll, _selectedKey, _icon;
300
+ class Tree extends (_a = aeicoComponent.AeicoComponent, _checkable_dec = [aeico.prop({ type: Boolean })], _multiple_dec = [aeico.prop({ type: Boolean })], _showLine_dec = [aeico.prop({ type: Boolean })], _defaultExpandAll_dec = [aeico.prop({ type: Boolean })], _selectedKey_dec = [aeico.prop({ type: String })], _icon_dec = [aeico.prop({ type: String })], _a) {
301
+ constructor() {
302
+ super(...arguments);
303
+ __privateAdd(this, _checkable, __runInitializers(_init, 8, this, false)), __runInitializers(_init, 11, this);
304
+ __privateAdd(this, _multiple, __runInitializers(_init, 12, this, false)), __runInitializers(_init, 15, this);
305
+ __privateAdd(this, _showLine, __runInitializers(_init, 16, this, false)), __runInitializers(_init, 19, this);
306
+ __privateAdd(this, _defaultExpandAll, __runInitializers(_init, 20, this, false)), __runInitializers(_init, 23, this);
307
+ __privateAdd(this, _selectedKey, __runInitializers(_init, 24, this)), __runInitializers(_init, 27, this);
308
+ __privateAdd(this, _icon, __runInitializers(_init, 28, this)), __runInitializers(_init, 31, this);
309
+ __publicField(this, "selectedKeys", []);
310
+ __publicField(this, "checkedKeys", []);
311
+ __publicField(this, "expandedKeys", []);
312
+ __publicField(this, "_handleItemToggleExpand", (e) => {
313
+ const node = e.target;
314
+ const newExpanded = !node.expanded;
315
+ node.expanded = newExpanded;
316
+ const key = node.key ?? "";
317
+ if (newExpanded) {
318
+ if (!this.expandedKeys.includes(key)) {
319
+ this.expandedKeys = [...this.expandedKeys, key];
320
+ }
321
+ } else {
322
+ this.expandedKeys = this.expandedKeys.filter((k) => k !== key);
323
+ }
324
+ this.emit("expand", {
325
+ detail: {
326
+ key,
327
+ expanded: newExpanded,
328
+ expandedKeys: [...this.expandedKeys]
329
+ }
330
+ });
331
+ });
332
+ __publicField(this, "_handleItemSelect", (e) => {
333
+ const { key } = e.detail;
334
+ if (this.multiple) {
335
+ const alreadySelected = this.selectedKeys.includes(key);
336
+ if (alreadySelected) {
337
+ this.selectedKeys = this.selectedKeys.filter((k) => k !== key);
338
+ } else {
339
+ this.selectedKeys = [...this.selectedKeys, key];
340
+ }
341
+ this.selectedKey = this.selectedKeys[this.selectedKeys.length - 1];
342
+ this._getAllItems().forEach((item) => {
343
+ item.selected = this.selectedKeys.includes(item.key ?? "");
344
+ });
345
+ this.emit("select", {
346
+ detail: {
347
+ key,
348
+ selected: !alreadySelected,
349
+ selectedKeys: [...this.selectedKeys]
350
+ }
351
+ });
352
+ } else {
353
+ const alreadySelected = this.selectedKey === key;
354
+ this._getAllItems().forEach((item) => {
355
+ item.selected = !alreadySelected && item.key === key;
356
+ });
357
+ this.selectedKey = alreadySelected ? void 0 : key;
358
+ this.selectedKeys = this.selectedKey ? [this.selectedKey] : [];
359
+ this.emit("select", {
360
+ detail: {
361
+ key,
362
+ selected: !alreadySelected,
363
+ selectedKeys: [...this.selectedKeys]
364
+ }
365
+ });
366
+ }
367
+ });
368
+ __publicField(this, "_handleItemCheck", (e) => {
369
+ const { key, checked } = e.detail;
370
+ const sourceNode = e.target;
371
+ this._setCheckedRecursive(sourceNode, checked);
372
+ this._syncAncestors(sourceNode);
373
+ this.checkedKeys = this._computeCheckedKeys();
374
+ this.emit("check", {
375
+ detail: { key, checked, checkedKeys: [...this.checkedKeys] }
376
+ });
377
+ });
378
+ }
379
+ connectedCallback() {
380
+ super.connectedCallback();
381
+ this.listen("_tree-item-toggle-expand", this._handleItemToggleExpand);
382
+ this.listen("_tree-item-select", this._handleItemSelect);
383
+ this.listen("_tree-item-check", this._handleItemCheck);
384
+ }
385
+ _getAllItems() {
386
+ return Array.from(this.querySelectorAll("ae-tree-item"));
387
+ }
388
+ _getDirectChildren(node) {
389
+ return Array.from(node.querySelectorAll(":scope > ae-tree-item"));
390
+ }
391
+ _computeCheckedKeys() {
392
+ const keys = [];
393
+ for (const item of this._getAllItems()) {
394
+ if (item.checked && !item.indeterminate) {
395
+ keys.push(item.key ?? "");
396
+ }
397
+ }
398
+ return keys.filter(Boolean);
399
+ }
400
+ _setCheckedRecursive(node, checked) {
401
+ if (node.disabled) return;
402
+ node.checked = checked;
403
+ node.indeterminate = false;
404
+ for (const child of this._getDirectChildren(node)) {
405
+ this._setCheckedRecursive(child, checked);
406
+ }
407
+ }
408
+ _syncAncestors(sourceNode) {
409
+ let el = sourceNode.parentElement;
410
+ while (el) {
411
+ const tag = el.tagName.toLowerCase();
412
+ if (tag === "ae-tree-item") {
413
+ const parent = el;
414
+ const children = this._getDirectChildren(parent).filter((c) => !c.disabled);
415
+ if (children.length === 0) break;
416
+ const checkedCount = children.filter((c) => c.checked && !c.indeterminate).length;
417
+ const indeterminateCount = children.filter((c) => c.indeterminate).length;
418
+ if (checkedCount === children.length) {
419
+ parent.checked = true;
420
+ parent.indeterminate = false;
421
+ } else if (checkedCount > 0 || indeterminateCount > 0) {
422
+ parent.checked = false;
423
+ parent.indeterminate = true;
424
+ } else {
425
+ parent.checked = false;
426
+ parent.indeterminate = false;
427
+ }
428
+ } else if (tag === "ae-tree") {
429
+ break;
430
+ }
431
+ el = el.parentElement;
432
+ }
433
+ }
434
+ render() {
435
+ return aeico.html(({ div, slot }) => {
436
+ div(
437
+ {
438
+ className: "tree",
439
+ role: "tree",
440
+ "aria-multiselectable": this.multiple ? "true" : "false"
441
+ },
442
+ () => {
443
+ slot();
444
+ }
445
+ );
446
+ });
447
+ }
448
+ }
449
+ _init = __decoratorStart(_a);
450
+ _checkable = /* @__PURE__ */ new WeakMap();
451
+ _multiple = /* @__PURE__ */ new WeakMap();
452
+ _showLine = /* @__PURE__ */ new WeakMap();
453
+ _defaultExpandAll = /* @__PURE__ */ new WeakMap();
454
+ _selectedKey = /* @__PURE__ */ new WeakMap();
455
+ _icon = /* @__PURE__ */ new WeakMap();
456
+ __decorateElement(_init, 4, "checkable", _checkable_dec, Tree, _checkable);
457
+ __decorateElement(_init, 4, "multiple", _multiple_dec, Tree, _multiple);
458
+ __decorateElement(_init, 4, "showLine", _showLine_dec, Tree, _showLine);
459
+ __decorateElement(_init, 4, "defaultExpandAll", _defaultExpandAll_dec, Tree, _defaultExpandAll);
460
+ __decorateElement(_init, 4, "selectedKey", _selectedKey_dec, Tree, _selectedKey);
461
+ __decorateElement(_init, 4, "icon", _icon_dec, Tree, _icon);
462
+ __decoratorMetadata(_init, Tree);
463
+ __publicField(Tree, "tagName", "tree");
464
+ __publicField(Tree, "styles", [variables.variables, style$1]);
465
+ Tree.register();
466
+ exports.Tree = Tree;
467
+ exports.TreeItem = TreeItem;
468
+ //# sourceMappingURL=tree.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.cjs","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","prop","__privateAdd","__runInitializers","__publicField","html","SVG_NS","__decoratorStart","__decorateElement","__decoratorMetadata","variables","style"],"mappings":"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"}