aeico-components 0.1.7 → 0.1.9

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 (350) hide show
  1. package/README.md +0 -0
  2. package/dist/alert.cjs +637 -4
  3. package/dist/alert.cjs.map +7 -1
  4. package/dist/alert.js +575 -3
  5. package/dist/alert.js.map +7 -1
  6. package/dist/badge.cjs +573 -4
  7. package/dist/badge.cjs.map +7 -1
  8. package/dist/badge.js +510 -3
  9. package/dist/badge.js.map +7 -1
  10. package/dist/breadcrumb.cjs +709 -5
  11. package/dist/breadcrumb.cjs.map +7 -1
  12. package/dist/breadcrumb.js +644 -4
  13. package/dist/breadcrumb.js.map +7 -1
  14. package/dist/button-group.cjs +546 -4
  15. package/dist/button-group.cjs.map +7 -1
  16. package/dist/button-group.js +489 -3
  17. package/dist/button-group.js.map +7 -1
  18. package/dist/button.cjs +834 -4
  19. package/dist/button.cjs.map +7 -1
  20. package/dist/button.js +771 -3
  21. package/dist/button.js.map +7 -1
  22. package/dist/card.cjs +574 -4
  23. package/dist/card.cjs.map +7 -1
  24. package/dist/card.js +516 -3
  25. package/dist/card.js.map +7 -1
  26. package/dist/checkbox.cjs +867 -4
  27. package/dist/checkbox.cjs.map +7 -1
  28. package/dist/checkbox.js +794 -3
  29. package/dist/checkbox.js.map +7 -1
  30. package/dist/copy-button.cjs +1046 -4
  31. package/dist/copy-button.cjs.map +7 -1
  32. package/dist/copy-button.js +969 -3
  33. package/dist/copy-button.js.map +7 -1
  34. package/dist/detail-group.cjs +531 -4
  35. package/dist/detail-group.cjs.map +7 -1
  36. package/dist/detail-group.js +474 -3
  37. package/dist/detail-group.js.map +7 -1
  38. package/dist/detail.cjs +627 -4
  39. package/dist/detail.cjs.map +7 -1
  40. package/dist/detail.js +569 -3
  41. package/dist/detail.js.map +7 -1
  42. package/dist/dialog.cjs +738 -4
  43. package/dist/dialog.cjs.map +7 -1
  44. package/dist/dialog.js +665 -3
  45. package/dist/dialog.js.map +7 -1
  46. package/dist/divider.cjs +558 -4
  47. package/dist/divider.cjs.map +7 -1
  48. package/dist/divider.js +502 -3
  49. package/dist/divider.js.map +7 -1
  50. package/dist/drawer.cjs +818 -4
  51. package/dist/drawer.cjs.map +7 -1
  52. package/dist/drawer.js +749 -3
  53. package/dist/drawer.js.map +7 -1
  54. package/dist/dropdown.cjs +1396 -5
  55. package/dist/dropdown.cjs.map +7 -1
  56. package/dist/dropdown.js +1316 -4
  57. package/dist/dropdown.js.map +7 -1
  58. package/dist/icon-button.cjs +999 -4
  59. package/dist/icon-button.cjs.map +7 -1
  60. package/dist/icon-button.js +930 -3
  61. package/dist/icon-button.js.map +7 -1
  62. package/dist/icon.cjs +613 -4
  63. package/dist/icon.cjs.map +7 -1
  64. package/dist/icon.js +547 -3
  65. package/dist/icon.js.map +7 -1
  66. package/dist/index.cjs +6532 -74
  67. package/dist/index.cjs.map +7 -1
  68. package/dist/index.js +6183 -73
  69. package/dist/index.js.map +7 -1
  70. package/dist/menu.cjs +841 -4
  71. package/dist/menu.cjs.map +7 -1
  72. package/dist/menu.js +785 -3
  73. package/dist/menu.js.map +7 -1
  74. package/dist/navbar.cjs +622 -4
  75. package/dist/navbar.cjs.map +7 -1
  76. package/dist/navbar.js +564 -3
  77. package/dist/navbar.js.map +7 -1
  78. package/dist/number-input.cjs +885 -4
  79. package/dist/number-input.cjs.map +7 -1
  80. package/dist/number-input.js +817 -3
  81. package/dist/number-input.js.map +7 -1
  82. package/dist/pagination.cjs +1099 -4
  83. package/dist/pagination.cjs.map +7 -1
  84. package/dist/pagination.js +1029 -3
  85. package/dist/pagination.js.map +7 -1
  86. package/dist/progress-bar.cjs +581 -4
  87. package/dist/progress-bar.cjs.map +7 -1
  88. package/dist/progress-bar.js +525 -3
  89. package/dist/progress-bar.js.map +7 -1
  90. package/dist/radio-group.cjs +973 -5
  91. package/dist/radio-group.cjs.map +7 -1
  92. package/dist/radio-group.js +899 -4
  93. package/dist/radio-group.js.map +7 -1
  94. package/dist/select.cjs +1242 -45
  95. package/dist/select.cjs.map +7 -1
  96. package/dist/select.js +1159 -44
  97. package/dist/select.js.map +7 -1
  98. package/dist/slider.cjs +1420 -4
  99. package/dist/slider.cjs.map +7 -1
  100. package/dist/slider.js +1351 -3
  101. package/dist/slider.js.map +7 -1
  102. package/dist/spinner.cjs +587 -4
  103. package/dist/spinner.cjs.map +7 -1
  104. package/dist/spinner.js +528 -3
  105. package/dist/spinner.js.map +7 -1
  106. package/dist/styles/layout.cjs +1 -0
  107. package/dist/styles/layout.js +1 -0
  108. package/dist/styles/radius.cjs +1 -0
  109. package/dist/styles/radius.js +1 -0
  110. package/dist/styles/variables.cjs +1 -0
  111. package/dist/styles/variables.js +1 -0
  112. package/dist/switch.cjs +1092 -4
  113. package/dist/switch.cjs.map +7 -1
  114. package/dist/switch.js +1013 -3
  115. package/dist/switch.js.map +7 -1
  116. package/dist/tabs.cjs +660 -6
  117. package/dist/tabs.cjs.map +7 -1
  118. package/dist/tabs.js +591 -5
  119. package/dist/tabs.js.map +7 -1
  120. package/dist/tag.cjs +591 -3
  121. package/dist/tag.cjs.map +7 -1
  122. package/dist/tag.js +532 -2
  123. package/dist/tag.js.map +7 -1
  124. package/dist/text-input.cjs +829 -4
  125. package/dist/text-input.cjs.map +7 -1
  126. package/dist/text-input.js +761 -3
  127. package/dist/text-input.js.map +7 -1
  128. package/dist/textarea.cjs +914 -3
  129. package/dist/textarea.cjs.map +7 -1
  130. package/dist/textarea.js +854 -2
  131. package/dist/textarea.js.map +7 -1
  132. package/dist/tooltip.cjs +764 -4
  133. package/dist/tooltip.cjs.map +7 -1
  134. package/dist/tooltip.js +711 -3
  135. package/dist/tooltip.js.map +7 -1
  136. package/dist/tree.cjs +1059 -4
  137. package/dist/tree.cjs.map +7 -1
  138. package/dist/tree.js +985 -3
  139. package/dist/tree.js.map +7 -1
  140. package/dist/types/dialog/dialog.d.ts +1 -0
  141. package/dist/types/drawer/drawer.d.ts +2 -0
  142. package/dist/types/icon/defines.d.ts +2 -0
  143. package/dist/types/menu/defines.d.ts +1 -0
  144. package/dist/types/menu/menu-item.d.ts +1 -0
  145. package/dist/types/menu/menu.d.ts +1 -0
  146. package/dist/types/styles/layout.d.ts +2 -0
  147. package/dist/types/styles/radius.d.ts +2 -0
  148. package/dist/types/styles/variables.d.ts +2 -0
  149. package/package.json +31 -7
  150. package/src/alert/alert.ts +3 -3
  151. package/src/badge/badge.ts +4 -4
  152. package/src/breadcrumb/breadcrumb-item.ts +2 -2
  153. package/src/breadcrumb/breadcrumb.ts +3 -3
  154. package/src/button/button.ts +4 -4
  155. package/src/button-group/button-group.ts +8 -9
  156. package/src/card/card.ts +3 -3
  157. package/src/checkbox/checkbox.ts +6 -6
  158. package/src/copy-button/copy-button.ts +4 -4
  159. package/src/detail/detail.ts +3 -3
  160. package/src/detail-group/detail-group.ts +2 -2
  161. package/src/dialog/dialog.ts +15 -14
  162. package/src/divider/divider.ts +3 -3
  163. package/src/drawer/drawer.ts +28 -11
  164. package/src/dropdown/dropdown-item.ts +2 -2
  165. package/src/dropdown/dropdown.ts +2 -2
  166. package/src/icon/defines.ts +2 -0
  167. package/src/icon/icon.ts +4 -4
  168. package/src/menu/defines.ts +1 -0
  169. package/src/menu/menu-item.ts +14 -4
  170. package/src/menu/menu.ts +5 -2
  171. package/src/navbar/navbar.ts +3 -3
  172. package/src/number-input/number-input.ts +5 -5
  173. package/src/pagination/pagination.ts +3 -3
  174. package/src/progress-bar/progress-bar.ts +3 -3
  175. package/src/radio-group/radio-group.ts +12 -8
  176. package/src/select/select-option.ts +2 -2
  177. package/src/select/select.ts +5 -5
  178. package/src/slider/slider.ts +6 -6
  179. package/src/spinner/spinner.ts +4 -4
  180. package/src/styles/components/button-group.css +2 -0
  181. package/src/styles/components/card.css +42 -18
  182. package/src/styles/components/checkbox.css +16 -5
  183. package/src/styles/components/dialog.css +1 -1
  184. package/src/styles/components/drawer.css +50 -9
  185. package/src/styles/components/field-label.css +1 -1
  186. package/src/styles/components/menu-item.css +6 -0
  187. package/src/styles/components/navbar.css +7 -28
  188. package/src/styles/components/radio-group.css +19 -0
  189. package/src/styles/components/slider.css +30 -5
  190. package/src/styles/components/switch.css +16 -2
  191. package/src/styles/layout.css +5 -2
  192. package/src/styles/radius.css +15 -0
  193. package/src/switch/switch.ts +6 -6
  194. package/src/tabs/tab-panel.ts +1 -1
  195. package/src/tabs/tab.ts +1 -1
  196. package/src/tabs/tabs.ts +2 -2
  197. package/src/tag/tag.ts +4 -4
  198. package/src/text-input/text-input.ts +5 -5
  199. package/src/textarea/textarea.ts +5 -5
  200. package/src/tooltip/tooltip.ts +2 -2
  201. package/src/tree/tree-item.ts +2 -2
  202. package/src/tree/tree.ts +2 -2
  203. package/dist/chunks/action-button.cjs +0 -296
  204. package/dist/chunks/action-button.cjs.map +0 -1
  205. package/dist/chunks/action-button.js +0 -297
  206. package/dist/chunks/action-button.js.map +0 -1
  207. package/dist/chunks/aeico-component.cjs +0 -17
  208. package/dist/chunks/aeico-component.cjs.map +0 -1
  209. package/dist/chunks/aeico-component.js +0 -18
  210. package/dist/chunks/aeico-component.js.map +0 -1
  211. package/dist/chunks/alert.cjs +0 -164
  212. package/dist/chunks/alert.cjs.map +0 -1
  213. package/dist/chunks/alert.js +0 -165
  214. package/dist/chunks/alert.js.map +0 -1
  215. package/dist/chunks/badge.cjs +0 -85
  216. package/dist/chunks/badge.cjs.map +0 -1
  217. package/dist/chunks/badge.js +0 -86
  218. package/dist/chunks/badge.js.map +0 -1
  219. package/dist/chunks/breadcrumb-item.cjs +0 -261
  220. package/dist/chunks/breadcrumb-item.cjs.map +0 -1
  221. package/dist/chunks/breadcrumb-item.js +0 -262
  222. package/dist/chunks/breadcrumb-item.js.map +0 -1
  223. package/dist/chunks/button-group.cjs +0 -79
  224. package/dist/chunks/button-group.cjs.map +0 -1
  225. package/dist/chunks/button-group.js +0 -80
  226. package/dist/chunks/button-group.js.map +0 -1
  227. package/dist/chunks/button.cjs +0 -337
  228. package/dist/chunks/button.cjs.map +0 -1
  229. package/dist/chunks/button.js +0 -338
  230. package/dist/chunks/button.js.map +0 -1
  231. package/dist/chunks/card.cjs +0 -93
  232. package/dist/chunks/card.cjs.map +0 -1
  233. package/dist/chunks/card.js +0 -94
  234. package/dist/chunks/card.js.map +0 -1
  235. package/dist/chunks/checkbox.cjs +0 -86
  236. package/dist/chunks/checkbox.cjs.map +0 -1
  237. package/dist/chunks/checkbox.js +0 -87
  238. package/dist/chunks/checkbox.js.map +0 -1
  239. package/dist/chunks/color.cjs +0 -4
  240. package/dist/chunks/color.cjs.map +0 -1
  241. package/dist/chunks/color.js +0 -5
  242. package/dist/chunks/color.js.map +0 -1
  243. package/dist/chunks/copy-button.cjs +0 -171
  244. package/dist/chunks/copy-button.cjs.map +0 -1
  245. package/dist/chunks/copy-button.js +0 -172
  246. package/dist/chunks/copy-button.js.map +0 -1
  247. package/dist/chunks/detail-group.cjs +0 -65
  248. package/dist/chunks/detail-group.cjs.map +0 -1
  249. package/dist/chunks/detail-group.js +0 -66
  250. package/dist/chunks/detail-group.js.map +0 -1
  251. package/dist/chunks/detail.cjs +0 -146
  252. package/dist/chunks/detail.cjs.map +0 -1
  253. package/dist/chunks/detail.js +0 -147
  254. package/dist/chunks/detail.js.map +0 -1
  255. package/dist/chunks/dialog.cjs +0 -117
  256. package/dist/chunks/dialog.cjs.map +0 -1
  257. package/dist/chunks/dialog.js +0 -118
  258. package/dist/chunks/dialog.js.map +0 -1
  259. package/dist/chunks/divider.cjs +0 -80
  260. package/dist/chunks/divider.cjs.map +0 -1
  261. package/dist/chunks/divider.js +0 -81
  262. package/dist/chunks/divider.js.map +0 -1
  263. package/dist/chunks/drawer.cjs +0 -180
  264. package/dist/chunks/drawer.cjs.map +0 -1
  265. package/dist/chunks/drawer.js +0 -181
  266. package/dist/chunks/drawer.js.map +0 -1
  267. package/dist/chunks/dropdown-button.cjs +0 -533
  268. package/dist/chunks/dropdown-button.cjs.map +0 -1
  269. package/dist/chunks/dropdown-button.js +0 -534
  270. package/dist/chunks/dropdown-button.js.map +0 -1
  271. package/dist/chunks/icon-button.cjs +0 -35
  272. package/dist/chunks/icon-button.cjs.map +0 -1
  273. package/dist/chunks/icon-button.js +0 -36
  274. package/dist/chunks/icon-button.js.map +0 -1
  275. package/dist/chunks/icon.cjs +0 -124
  276. package/dist/chunks/icon.cjs.map +0 -1
  277. package/dist/chunks/icon.js +0 -125
  278. package/dist/chunks/icon.js.map +0 -1
  279. package/dist/chunks/menu.cjs +0 -396
  280. package/dist/chunks/menu.cjs.map +0 -1
  281. package/dist/chunks/menu.js +0 -397
  282. package/dist/chunks/menu.js.map +0 -1
  283. package/dist/chunks/navbar.cjs +0 -142
  284. package/dist/chunks/navbar.cjs.map +0 -1
  285. package/dist/chunks/navbar.js +0 -143
  286. package/dist/chunks/navbar.js.map +0 -1
  287. package/dist/chunks/number-input.cjs +0 -110
  288. package/dist/chunks/number-input.cjs.map +0 -1
  289. package/dist/chunks/number-input.js +0 -111
  290. package/dist/chunks/number-input.js.map +0 -1
  291. package/dist/chunks/pagination.cjs +0 -475
  292. package/dist/chunks/pagination.cjs.map +0 -1
  293. package/dist/chunks/pagination.js +0 -476
  294. package/dist/chunks/pagination.js.map +0 -1
  295. package/dist/chunks/progress-bar.cjs +0 -101
  296. package/dist/chunks/progress-bar.cjs.map +0 -1
  297. package/dist/chunks/progress-bar.js +0 -102
  298. package/dist/chunks/progress-bar.js.map +0 -1
  299. package/dist/chunks/radio.cjs +0 -185
  300. package/dist/chunks/radio.cjs.map +0 -1
  301. package/dist/chunks/radio.js +0 -186
  302. package/dist/chunks/radio.js.map +0 -1
  303. package/dist/chunks/select.cjs +0 -381
  304. package/dist/chunks/select.cjs.map +0 -1
  305. package/dist/chunks/select.js +0 -382
  306. package/dist/chunks/select.js.map +0 -1
  307. package/dist/chunks/size.cjs +0 -4
  308. package/dist/chunks/size.cjs.map +0 -1
  309. package/dist/chunks/size.js +0 -5
  310. package/dist/chunks/size.js.map +0 -1
  311. package/dist/chunks/slider.cjs +0 -608
  312. package/dist/chunks/slider.cjs.map +0 -1
  313. package/dist/chunks/slider.js +0 -609
  314. package/dist/chunks/slider.js.map +0 -1
  315. package/dist/chunks/spinner.cjs +0 -102
  316. package/dist/chunks/spinner.cjs.map +0 -1
  317. package/dist/chunks/spinner.js +0 -103
  318. package/dist/chunks/spinner.js.map +0 -1
  319. package/dist/chunks/switch.cjs +0 -167
  320. package/dist/chunks/switch.cjs.map +0 -1
  321. package/dist/chunks/switch.js +0 -168
  322. package/dist/chunks/switch.js.map +0 -1
  323. package/dist/chunks/tab-panel.cjs +0 -174
  324. package/dist/chunks/tab-panel.cjs.map +0 -1
  325. package/dist/chunks/tab-panel.js +0 -175
  326. package/dist/chunks/tab-panel.js.map +0 -1
  327. package/dist/chunks/tag.cjs +0 -108
  328. package/dist/chunks/tag.cjs.map +0 -1
  329. package/dist/chunks/tag.js +0 -109
  330. package/dist/chunks/tag.js.map +0 -1
  331. package/dist/chunks/text-input.cjs +0 -54
  332. package/dist/chunks/text-input.cjs.map +0 -1
  333. package/dist/chunks/text-input.js +0 -55
  334. package/dist/chunks/text-input.js.map +0 -1
  335. package/dist/chunks/textarea.cjs +0 -137
  336. package/dist/chunks/textarea.cjs.map +0 -1
  337. package/dist/chunks/textarea.js +0 -138
  338. package/dist/chunks/textarea.js.map +0 -1
  339. package/dist/chunks/tooltip.cjs +0 -292
  340. package/dist/chunks/tooltip.cjs.map +0 -1
  341. package/dist/chunks/tooltip.js +0 -293
  342. package/dist/chunks/tooltip.js.map +0 -1
  343. package/dist/chunks/tree.cjs +0 -468
  344. package/dist/chunks/tree.cjs.map +0 -1
  345. package/dist/chunks/tree.js +0 -469
  346. package/dist/chunks/tree.js.map +0 -1
  347. package/dist/chunks/variables.cjs +0 -396
  348. package/dist/chunks/variables.cjs.map +0 -1
  349. package/dist/chunks/variables.js +0 -397
  350. package/dist/chunks/variables.js.map +0 -1
@@ -1,66 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- import { v as variables } from "./variables.js";
5
- import { A as AeicoComponent } from "./aeico-component.js";
6
- import { html } from "aeico";
7
- const detailGroupStyle = ":host {\n display: block;\n}\n\n/* Raise hovered/focused item so its border shows above neighbours */\n::slotted(ae-detail:hover),\n::slotted(ae-detail:focus-within) {\n position: relative;\n z-index: 1;\n}\n";
8
- class DetailGroup extends AeicoComponent {
9
- constructor() {
10
- super(...arguments);
11
- __publicField(this, "slotEl", null);
12
- __publicField(this, "DETAIL_RADIUS", 6);
13
- __publicField(this, "_handleOpen", (event) => {
14
- if (this.multiple) return;
15
- const opened = event.target;
16
- this._getDetails().forEach((detail) => {
17
- if (detail !== opened) detail.close();
18
- });
19
- });
20
- }
21
- connectedCallback() {
22
- super.connectedCallback();
23
- this.listen("open", this._handleOpen);
24
- }
25
- _getDetails() {
26
- if (!this.slotEl) return [];
27
- return this.slotEl.assignedElements({ flatten: true }).filter(
28
- (el) => el.tagName.toLowerCase() === "ae-detail"
29
- );
30
- }
31
- _syncChildren() {
32
- const details = this._getDetails();
33
- const r = this.DETAIL_RADIUS;
34
- details.forEach((detail, i) => {
35
- const isFirst = i === 0;
36
- const isLast = i === details.length - 1;
37
- detail.style.marginTop = isFirst ? "" : "-1px";
38
- detail.style.setProperty("--detail-r-tl", isFirst ? `${r}px` : "0");
39
- detail.style.setProperty("--detail-r-tr", isFirst ? `${r}px` : "0");
40
- detail.style.setProperty("--detail-r-br", isLast ? `${r}px` : "0");
41
- detail.style.setProperty("--detail-r-bl", isLast ? `${r}px` : "0");
42
- if (this.variant !== void 0) detail.variant = this.variant;
43
- if (this.color !== void 0) detail.color = this.color;
44
- });
45
- }
46
- render() {
47
- return html(({ slot }) => {
48
- this.slotEl = slot({
49
- "@slotchange": () => this._syncChildren()
50
- });
51
- this._syncChildren();
52
- });
53
- }
54
- }
55
- __publicField(DetailGroup, "tagName", "detail-group");
56
- __publicField(DetailGroup, "props", {
57
- multiple: { type: Boolean },
58
- variant: { type: String },
59
- color: { type: String }
60
- });
61
- __publicField(DetailGroup, "styles", [variables, detailGroupStyle]);
62
- DetailGroup.register();
63
- export {
64
- DetailGroup as D
65
- };
66
- //# sourceMappingURL=detail-group.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"detail-group.js","sources":["../../src/detail-group/detail-group.ts"],"sourcesContent":["import type { InferProps, Props } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport detailGroupStyle from '../styles/components/detail-group.css?inline';\nimport AeicoComponent from '../aeico-component';\nimport { html } from 'aeico';\nimport type Detail from '../detail/detail';\nimport type { DetailColor, DetailVariant } from '../detail/defines';\n\n/**\n * DetailGroup component — wraps multiple `ae-detail` elements into an\n * accordion-style group. By default only one item can be open at a time;\n * set `multiple` to allow several items open simultaneously.\n *\n * @example\n * ```html\n * <ae-detail-group>\n * <ae-detail summary=\"Section 1\">Content 1</ae-detail>\n * <ae-detail summary=\"Section 2\">Content 2</ae-detail>\n * <ae-detail summary=\"Section 3\">Content 3</ae-detail>\n * </ae-detail-group>\n * ```\n */\nclass DetailGroup extends AeicoComponent {\n static tagName = 'detail-group';\n\n static props: Props = {\n multiple: { type: Boolean },\n variant: { type: String },\n color: { type: String },\n };\n\n protected static styles = [styleVariables, detailGroupStyle];\n\n declare multiple?: boolean;\n declare variant?: DetailVariant;\n declare color?: DetailColor;\n\n private slotEl: HTMLSlotElement | null = null;\n\n private readonly DETAIL_RADIUS = 6;\n\n connectedCallback() {\n super.connectedCallback();\n this.listen('open', this._handleOpen);\n }\n\n private _getDetails(): Detail[] {\n if (!this.slotEl) return [];\n return (this.slotEl.assignedElements({ flatten: true }) as Detail[]).filter(\n (el) => el.tagName.toLowerCase() === 'ae-detail',\n );\n }\n\n private _syncChildren(): void {\n const details = this._getDetails();\n const r = this.DETAIL_RADIUS;\n\n details.forEach((detail, i) => {\n const isFirst = i === 0;\n const isLast = i === details.length - 1;\n\n // Collapse borders between adjacent items\n detail.style.marginTop = isFirst ? '' : '-1px';\n\n // Adjust per-corner radius so only the outer edges of the group keep it\n detail.style.setProperty('--detail-r-tl', isFirst ? `${r}px` : '0');\n detail.style.setProperty('--detail-r-tr', isFirst ? `${r}px` : '0');\n detail.style.setProperty('--detail-r-br', isLast ? `${r}px` : '0');\n detail.style.setProperty('--detail-r-bl', isLast ? `${r}px` : '0');\n\n // Propagate variant / color only when explicitly set on the group\n if (this.variant !== undefined) detail.variant = this.variant;\n if (this.color !== undefined) detail.color = this.color;\n });\n }\n\n private _handleOpen = (event: Event): void => {\n if (this.multiple) return;\n const opened = event.target as Element;\n this._getDetails().forEach((detail) => {\n if (detail !== opened) detail.close();\n });\n };\n\n protected render() {\n return html(({ slot }) => {\n this.slotEl = slot({\n '@slotchange': () => this._syncChildren(),\n });\n this._syncChildren();\n });\n }\n}\n\nDetailGroup.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-detail-group': DetailGroup;\n }\n}\n\nexport default DetailGroup;\nexport type DetailGroupProps = InferProps<typeof DetailGroup>;\n"],"names":["styleVariables"],"mappings":";;;;;;;AAsBA,MAAM,oBAAoB,eAAe;AAAA,EAAzC;AAAA;AAeU,kCAAiC;AAExB,yCAAgB;AAqCzB,uCAAc,CAAC,UAAuB;AAC5C,UAAI,KAAK,SAAU;AACnB,YAAM,SAAS,MAAM;AACrB,WAAK,YAAA,EAAc,QAAQ,CAAC,WAAW;AACrC,YAAI,WAAW,OAAQ,QAAO,MAAA;AAAA,MAChC,CAAC;AAAA,IACH;AAAA;AAAA,EAzCA,oBAAoB;AAClB,UAAM,kBAAA;AACN,SAAK,OAAO,QAAQ,KAAK,WAAW;AAAA,EACtC;AAAA,EAEQ,cAAwB;AAC9B,QAAI,CAAC,KAAK,OAAQ,QAAO,CAAA;AACzB,WAAQ,KAAK,OAAO,iBAAiB,EAAE,SAAS,KAAA,CAAM,EAAe;AAAA,MACnE,CAAC,OAAO,GAAG,QAAQ,kBAAkB;AAAA,IAAA;AAAA,EAEzC;AAAA,EAEQ,gBAAsB;AAC5B,UAAM,UAAU,KAAK,YAAA;AACrB,UAAM,IAAI,KAAK;AAEf,YAAQ,QAAQ,CAAC,QAAQ,MAAM;AAC7B,YAAM,UAAU,MAAM;AACtB,YAAM,SAAS,MAAM,QAAQ,SAAS;AAGtC,aAAO,MAAM,YAAY,UAAU,KAAK;AAGxC,aAAO,MAAM,YAAY,iBAAiB,UAAU,GAAG,CAAC,OAAO,GAAG;AAClE,aAAO,MAAM,YAAY,iBAAiB,UAAU,GAAG,CAAC,OAAO,GAAG;AAClE,aAAO,MAAM,YAAY,iBAAiB,SAAS,GAAG,CAAC,OAAO,GAAG;AACjE,aAAO,MAAM,YAAY,iBAAiB,SAAS,GAAG,CAAC,OAAO,GAAG;AAGjE,UAAI,KAAK,YAAY,OAAW,QAAO,UAAU,KAAK;AACtD,UAAI,KAAK,UAAU,OAAW,QAAO,QAAQ,KAAK;AAAA,IACpD,CAAC;AAAA,EACH;AAAA,EAUU,SAAS;AACjB,WAAO,KAAK,CAAC,EAAE,WAAW;AACxB,WAAK,SAAS,KAAK;AAAA,QACjB,eAAe,MAAM,KAAK,cAAA;AAAA,MAAc,CACzC;AACD,WAAK,cAAA;AAAA,IACP,CAAC;AAAA,EACH;AACF;AArEE,cADI,aACG,WAAU;AAEjB,cAHI,aAGG,SAAe;AAAA,EACpB,UAAU,EAAE,MAAM,QAAA;AAAA,EAClB,SAAS,EAAE,MAAM,OAAA;AAAA,EACjB,OAAO,EAAE,MAAM,OAAA;AAAO;AAGxB,cATI,aASa,UAAS,CAACA,WAAgB,gBAAgB;AA+D7D,YAAY,SAAA;"}
@@ -1,146 +0,0 @@
1
- "use strict";
2
- const variables = require("./variables.cjs");
3
- const color = require("./color.cjs");
4
- const aeicoComponent = require("./aeico-component.cjs");
5
- const aeico = require("aeico");
6
- const detailStyle = ':host {\n display: block;\n\n --detail-radius: 6px;\n}\n\n.detail {\n border: 1px solid var(--ae-color-solid);\n border-radius:\n var(--detail-r-tl, var(--detail-radius))\n var(--detail-r-tr, var(--detail-radius))\n var(--detail-r-br, var(--detail-radius))\n var(--detail-r-bl, var(--detail-radius));\n color: var(--ae-color-on-solid);\n background: var(--ae-color-solid);\n overflow: hidden;\n}\n\n/* variant overrides */\n:host([variant="subtle"]) .detail {\n border-color: transparent;\n background: var(--ae-color-bg-subtle);\n color: var(--ae-color-text-subtle);\n}\n\n:host([variant="subtle"]) .summary { background: var(--ae-color-bg-subtle); }\n\n:host([variant="faint"]) .detail {\n border-color: var(--ae-color-border-subtle);\n background: var(--ae-color-bg-subtle);\n color: var(--ae-color-text-subtle);\n}\n\n:host([variant="faint"]) .summary { background: var(--ae-color-bg-subtle); }\n\n:host([variant="text"]) .detail {\n border-color: transparent;\n background: transparent;\n color: var(--ae-color-text-main);\n}\n\n:host([variant="text"]) .summary {\n background: transparent;\n}\n\n:host([variant="text"]) .label {\n color: var(--ae-color-accent);\n}\n\n:host([variant="filled"]) .detail {\n border-color: var(--ae-color-solid);\n background: var(--ae-color-solid);\n color: var(--ae-color-on-solid);\n}\n\n:host([variant="filled"]) .summary {\n background: color-mix(in srgb, var(--ae-color-solid), black 10%);\n}\n\n:host([variant="outlined"]) .detail {\n border-color: var(--ae-color-border);\n background: transparent;\n color: var(--ae-color-text-subtle);\n}\n\n:host([variant="outlined"]) .summary { background: transparent; }\n\n.summary {\n display: flex;\n align-items: center;\n gap: 6px;\n width: 100%;\n padding: 10px 14px;\n background: color-mix(in srgb, var(--ae-color-solid), black 10%);\n color: inherit;\n font-size: inherit;\n font-family: inherit;\n font-weight: 500;\n border: none;\n cursor: pointer;\n text-align: left;\n outline-offset: -2px;\n user-select: none;\n}\n\n.summary:hover {\n filter: brightness(0.93);\n}\n\n.summary:focus-visible {\n outline: 2px solid var(--ae-color-border);\n}\n\nslot[name="summary"] {\n display: flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n}\n\n.label {\n flex: 1;\n}\n\nslot[name="expand"],\nslot[name="collapse"] {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n}\n\n:host([icon-placement="start"]) slot[name="expand"],\n:host([icon-placement="start"]) slot[name="collapse"] {\n order: -1;\n}\n\nslot[name="collapse"] {\n display: none;\n}\n\n:host([open]) slot[name="expand"] {\n display: none;\n}\n\n:host([open]) slot[name="collapse"] {\n display: inline-flex;\n}\n\n.content-outer {\n display: grid;\n grid-template-rows: 0fr;\n transition: grid-template-rows 0.25s ease;\n}\n\n:host([open]) .content-outer {\n grid-template-rows: 1fr;\n}\n\n.content {\n overflow: hidden;\n padding: 0 14px;\n transition: padding 0.25s ease;\n}\n\n:host([open]) .content {\n padding: 12px 14px;\n}\n\n';
7
- var __create = Object.create;
8
- var __defProp = Object.defineProperty;
9
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
10
- var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
11
- var __typeError = (msg) => {
12
- throw TypeError(msg);
13
- };
14
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
15
- var __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol("metadata")]) ?? null)];
16
- var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
17
- var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
18
- var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
19
- var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
20
- var __runInitializers = (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 = (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[k + 5];
27
- var initializers = array[j - 1] = [], extraInitializers = array[j] || (array[j] = []);
28
- var desc = (target = target.prototype, __getOwnPropDesc({ get [name]() {
29
- return __privateGet(this, extra);
30
- }, set [name](x) {
31
- return __privateSet(this, extra, x);
32
- } }, name));
33
- for (var i = decorators.length - 1; i >= 0; i--) {
34
- ctx = __decoratorContext(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(it) && (desc[key] = it);
42
- else if (typeof it !== "object" || it === null) __typeError("Object expected");
43
- else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
44
- }
45
- return desc && __defProp(target, name, desc), target;
46
- };
47
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
48
- var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
49
- var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), member.get(obj));
50
- 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);
51
- var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
52
- var _iconPlacement_dec, _disabled_dec, _color_dec, _variant_dec, _summary_dec, _a, _init, _summary, _variant, _color, _disabled, _iconPlacement;
53
- class Detail extends (_a = aeicoComponent.AeicoComponent, _summary_dec = [aeico.prop({ type: String })], _variant_dec = [aeico.prop({ type: String })], _color_dec = [aeico.prop({ type: String })], _disabled_dec = [aeico.prop({ type: Boolean })], _iconPlacement_dec = [aeico.prop({ type: String })], _a) {
54
- constructor() {
55
- super(...arguments);
56
- __privateAdd(this, _summary, __runInitializers(_init, 8, this, "")), __runInitializers(_init, 11, this);
57
- __privateAdd(this, _variant, __runInitializers(_init, 12, this, "filled")), __runInitializers(_init, 15, this);
58
- __privateAdd(this, _color, __runInitializers(_init, 16, this, "default")), __runInitializers(_init, 19, this);
59
- __privateAdd(this, _disabled, __runInitializers(_init, 20, this, false)), __runInitializers(_init, 23, this);
60
- __privateAdd(this, _iconPlacement, __runInitializers(_init, 24, this, "end")), __runInitializers(_init, 27, this);
61
- __publicField(this, "_open", false);
62
- __publicField(this, "_handleSummaryClick", () => {
63
- this.toggle();
64
- });
65
- }
66
- /** Opens the detail panel. */
67
- open() {
68
- if (this.disabled || this._open) return;
69
- this._open = true;
70
- this.toggleAttribute("open", true);
71
- this.update();
72
- this.emit("open");
73
- }
74
- /** Closes the detail panel. */
75
- close() {
76
- if (!this._open) return;
77
- this._open = false;
78
- this.toggleAttribute("open", false);
79
- this.update();
80
- this.emit("close");
81
- }
82
- /** Toggles the detail panel open/closed. */
83
- toggle() {
84
- if (this._open) {
85
- this.close();
86
- } else {
87
- this.open();
88
- }
89
- }
90
- /** Returns whether the detail panel is currently open. */
91
- isOpen() {
92
- return this._open;
93
- }
94
- render() {
95
- return aeico.html(({ div, button, span, slot }) => {
96
- div({ className: "detail", part: "detail" }, () => {
97
- button(
98
- {
99
- className: "summary",
100
- part: "summary",
101
- type: "button",
102
- "aria-expanded": String(this._open),
103
- disabled: this.disabled || void 0,
104
- "@click": this._handleSummaryClick
105
- },
106
- () => {
107
- slot({ name: "summary" }, () => {
108
- span({ className: "label", textContent: this.summary });
109
- });
110
- slot({ name: "expand" });
111
- slot({ name: "collapse" });
112
- }
113
- );
114
- div({ className: "content-outer" }, () => {
115
- div(
116
- {
117
- className: "content",
118
- part: "content",
119
- role: "region"
120
- },
121
- () => {
122
- slot();
123
- }
124
- );
125
- });
126
- });
127
- });
128
- }
129
- }
130
- _init = __decoratorStart(_a);
131
- _summary = /* @__PURE__ */ new WeakMap();
132
- _variant = /* @__PURE__ */ new WeakMap();
133
- _color = /* @__PURE__ */ new WeakMap();
134
- _disabled = /* @__PURE__ */ new WeakMap();
135
- _iconPlacement = /* @__PURE__ */ new WeakMap();
136
- __decorateElement(_init, 4, "summary", _summary_dec, Detail, _summary);
137
- __decorateElement(_init, 4, "variant", _variant_dec, Detail, _variant);
138
- __decorateElement(_init, 4, "color", _color_dec, Detail, _color);
139
- __decorateElement(_init, 4, "disabled", _disabled_dec, Detail, _disabled);
140
- __decorateElement(_init, 4, "iconPlacement", _iconPlacement_dec, Detail, _iconPlacement);
141
- __decoratorMetadata(_init, Detail);
142
- __publicField(Detail, "tagName", "detail");
143
- __publicField(Detail, "styles", [variables.variables, color.colorCSS, detailStyle]);
144
- Detail.register();
145
- exports.Detail = Detail;
146
- //# sourceMappingURL=detail.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"detail.cjs","sources":["../../src/detail/detail.ts"],"sourcesContent":["import type { InferProps } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport detailStyle from '../styles/components/detail.css?inline';\nimport AeicoComponent from '../aeico-component';\nimport { html } from 'aeico';\nimport { prop } from 'aeico';\nimport type { DetailColor, DetailVariant, DetailIconPlacement } from './defines';\n\n/**\n * Detail component that can be used to show/hide additional content.\n *\n * @example\n * ```html\n * <ae-detail summary=\"Click Me\">\n * <ae-icon name=\"plus\" slot=\"expand\"></ae-icon>\n * <ae-icon name=\"minus\" slot=\"collapse\"></ae-icon>\n * Detail.....\n * </ae-detail>\n */\nclass Detail extends AeicoComponent {\n static tagName = 'detail';\n\n protected static styles = [styleVariables, colorCSS, detailStyle];\n\n @prop({ type: String })\n accessor summary: string = '';\n\n @prop({ type: String })\n accessor variant: DetailVariant = 'filled';\n\n @prop({ type: String })\n accessor color: DetailColor = 'default';\n\n @prop({ type: Boolean })\n accessor disabled: boolean = false;\n\n @prop({ type: String })\n accessor iconPlacement: DetailIconPlacement = 'end';\n\n private _open: boolean = false;\n\n /** Opens the detail panel. */\n open(): void {\n if (this.disabled || this._open) return;\n this._open = true;\n this.toggleAttribute('open', true);\n this.update();\n this.emit('open');\n }\n\n /** Closes the detail panel. */\n close(): void {\n if (!this._open) return;\n this._open = false;\n this.toggleAttribute('open', false);\n this.update();\n this.emit('close');\n }\n\n /** Toggles the detail panel open/closed. */\n toggle(): void {\n if (this._open) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /** Returns whether the detail panel is currently open. */\n isOpen(): boolean {\n return this._open;\n }\n\n private _handleSummaryClick = (): void => {\n this.toggle();\n };\n\n protected render() {\n return html(({ div, button, span, slot }) => {\n div({ className: 'detail', part: 'detail' }, () => {\n button(\n {\n className: 'summary',\n part: 'summary',\n type: 'button',\n 'aria-expanded': String(this._open),\n disabled: this.disabled || undefined,\n '@click': this._handleSummaryClick,\n },\n () => {\n slot({ name: 'summary' }, () => {\n span({ className: 'label', textContent: this.summary });\n });\n slot({ name: 'expand' });\n slot({ name: 'collapse' });\n },\n );\n div({ className: 'content-outer' }, () => {\n div(\n {\n className: 'content',\n part: 'content',\n role: 'region',\n },\n () => {\n slot();\n },\n );\n });\n });\n });\n }\n}\n\nDetail.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-detail': Detail;\n }\n}\n\nexport default Detail;\nexport type DetailProps = InferProps<typeof Detail>;\nexport type { DetailIconPlacement };\n"],"names":["AeicoComponent","prop","html","styleVariables","colorCSS"],"mappings":"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"}
@@ -1,147 +0,0 @@
1
- import { v as variables } from "./variables.js";
2
- import { c as colorCSS } from "./color.js";
3
- import { A as AeicoComponent } from "./aeico-component.js";
4
- import { prop, html } from "aeico";
5
- const detailStyle = ':host {\n display: block;\n\n --detail-radius: 6px;\n}\n\n.detail {\n border: 1px solid var(--ae-color-solid);\n border-radius:\n var(--detail-r-tl, var(--detail-radius))\n var(--detail-r-tr, var(--detail-radius))\n var(--detail-r-br, var(--detail-radius))\n var(--detail-r-bl, var(--detail-radius));\n color: var(--ae-color-on-solid);\n background: var(--ae-color-solid);\n overflow: hidden;\n}\n\n/* variant overrides */\n:host([variant="subtle"]) .detail {\n border-color: transparent;\n background: var(--ae-color-bg-subtle);\n color: var(--ae-color-text-subtle);\n}\n\n:host([variant="subtle"]) .summary { background: var(--ae-color-bg-subtle); }\n\n:host([variant="faint"]) .detail {\n border-color: var(--ae-color-border-subtle);\n background: var(--ae-color-bg-subtle);\n color: var(--ae-color-text-subtle);\n}\n\n:host([variant="faint"]) .summary { background: var(--ae-color-bg-subtle); }\n\n:host([variant="text"]) .detail {\n border-color: transparent;\n background: transparent;\n color: var(--ae-color-text-main);\n}\n\n:host([variant="text"]) .summary {\n background: transparent;\n}\n\n:host([variant="text"]) .label {\n color: var(--ae-color-accent);\n}\n\n:host([variant="filled"]) .detail {\n border-color: var(--ae-color-solid);\n background: var(--ae-color-solid);\n color: var(--ae-color-on-solid);\n}\n\n:host([variant="filled"]) .summary {\n background: color-mix(in srgb, var(--ae-color-solid), black 10%);\n}\n\n:host([variant="outlined"]) .detail {\n border-color: var(--ae-color-border);\n background: transparent;\n color: var(--ae-color-text-subtle);\n}\n\n:host([variant="outlined"]) .summary { background: transparent; }\n\n.summary {\n display: flex;\n align-items: center;\n gap: 6px;\n width: 100%;\n padding: 10px 14px;\n background: color-mix(in srgb, var(--ae-color-solid), black 10%);\n color: inherit;\n font-size: inherit;\n font-family: inherit;\n font-weight: 500;\n border: none;\n cursor: pointer;\n text-align: left;\n outline-offset: -2px;\n user-select: none;\n}\n\n.summary:hover {\n filter: brightness(0.93);\n}\n\n.summary:focus-visible {\n outline: 2px solid var(--ae-color-border);\n}\n\nslot[name="summary"] {\n display: flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n}\n\n.label {\n flex: 1;\n}\n\nslot[name="expand"],\nslot[name="collapse"] {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n}\n\n:host([icon-placement="start"]) slot[name="expand"],\n:host([icon-placement="start"]) slot[name="collapse"] {\n order: -1;\n}\n\nslot[name="collapse"] {\n display: none;\n}\n\n:host([open]) slot[name="expand"] {\n display: none;\n}\n\n:host([open]) slot[name="collapse"] {\n display: inline-flex;\n}\n\n.content-outer {\n display: grid;\n grid-template-rows: 0fr;\n transition: grid-template-rows 0.25s ease;\n}\n\n:host([open]) .content-outer {\n grid-template-rows: 1fr;\n}\n\n.content {\n overflow: hidden;\n padding: 0 14px;\n transition: padding 0.25s ease;\n}\n\n:host([open]) .content {\n padding: 12px 14px;\n}\n\n';
6
- var __create = Object.create;
7
- var __defProp = Object.defineProperty;
8
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
9
- var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
10
- var __typeError = (msg) => {
11
- throw TypeError(msg);
12
- };
13
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
14
- var __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol("metadata")]) ?? null)];
15
- var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
16
- var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
17
- var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
18
- var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
19
- var __runInitializers = (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 = (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[k + 5];
26
- var initializers = array[j - 1] = [], extraInitializers = array[j] || (array[j] = []);
27
- var desc = (target = target.prototype, __getOwnPropDesc({ get [name]() {
28
- return __privateGet(this, extra);
29
- }, set [name](x) {
30
- return __privateSet(this, extra, x);
31
- } }, name));
32
- for (var i = decorators.length - 1; i >= 0; i--) {
33
- ctx = __decoratorContext(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(it) && (desc[key] = it);
41
- else if (typeof it !== "object" || it === null) __typeError("Object expected");
42
- else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
43
- }
44
- return desc && __defProp(target, name, desc), target;
45
- };
46
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
47
- var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
48
- var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), member.get(obj));
49
- 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);
50
- var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
51
- var _iconPlacement_dec, _disabled_dec, _color_dec, _variant_dec, _summary_dec, _a, _init, _summary, _variant, _color, _disabled, _iconPlacement;
52
- class Detail extends (_a = AeicoComponent, _summary_dec = [prop({ type: String })], _variant_dec = [prop({ type: String })], _color_dec = [prop({ type: String })], _disabled_dec = [prop({ type: Boolean })], _iconPlacement_dec = [prop({ type: String })], _a) {
53
- constructor() {
54
- super(...arguments);
55
- __privateAdd(this, _summary, __runInitializers(_init, 8, this, "")), __runInitializers(_init, 11, this);
56
- __privateAdd(this, _variant, __runInitializers(_init, 12, this, "filled")), __runInitializers(_init, 15, this);
57
- __privateAdd(this, _color, __runInitializers(_init, 16, this, "default")), __runInitializers(_init, 19, this);
58
- __privateAdd(this, _disabled, __runInitializers(_init, 20, this, false)), __runInitializers(_init, 23, this);
59
- __privateAdd(this, _iconPlacement, __runInitializers(_init, 24, this, "end")), __runInitializers(_init, 27, this);
60
- __publicField(this, "_open", false);
61
- __publicField(this, "_handleSummaryClick", () => {
62
- this.toggle();
63
- });
64
- }
65
- /** Opens the detail panel. */
66
- open() {
67
- if (this.disabled || this._open) return;
68
- this._open = true;
69
- this.toggleAttribute("open", true);
70
- this.update();
71
- this.emit("open");
72
- }
73
- /** Closes the detail panel. */
74
- close() {
75
- if (!this._open) return;
76
- this._open = false;
77
- this.toggleAttribute("open", false);
78
- this.update();
79
- this.emit("close");
80
- }
81
- /** Toggles the detail panel open/closed. */
82
- toggle() {
83
- if (this._open) {
84
- this.close();
85
- } else {
86
- this.open();
87
- }
88
- }
89
- /** Returns whether the detail panel is currently open. */
90
- isOpen() {
91
- return this._open;
92
- }
93
- render() {
94
- return html(({ div, button, span, slot }) => {
95
- div({ className: "detail", part: "detail" }, () => {
96
- button(
97
- {
98
- className: "summary",
99
- part: "summary",
100
- type: "button",
101
- "aria-expanded": String(this._open),
102
- disabled: this.disabled || void 0,
103
- "@click": this._handleSummaryClick
104
- },
105
- () => {
106
- slot({ name: "summary" }, () => {
107
- span({ className: "label", textContent: this.summary });
108
- });
109
- slot({ name: "expand" });
110
- slot({ name: "collapse" });
111
- }
112
- );
113
- div({ className: "content-outer" }, () => {
114
- div(
115
- {
116
- className: "content",
117
- part: "content",
118
- role: "region"
119
- },
120
- () => {
121
- slot();
122
- }
123
- );
124
- });
125
- });
126
- });
127
- }
128
- }
129
- _init = __decoratorStart(_a);
130
- _summary = /* @__PURE__ */ new WeakMap();
131
- _variant = /* @__PURE__ */ new WeakMap();
132
- _color = /* @__PURE__ */ new WeakMap();
133
- _disabled = /* @__PURE__ */ new WeakMap();
134
- _iconPlacement = /* @__PURE__ */ new WeakMap();
135
- __decorateElement(_init, 4, "summary", _summary_dec, Detail, _summary);
136
- __decorateElement(_init, 4, "variant", _variant_dec, Detail, _variant);
137
- __decorateElement(_init, 4, "color", _color_dec, Detail, _color);
138
- __decorateElement(_init, 4, "disabled", _disabled_dec, Detail, _disabled);
139
- __decorateElement(_init, 4, "iconPlacement", _iconPlacement_dec, Detail, _iconPlacement);
140
- __decoratorMetadata(_init, Detail);
141
- __publicField(Detail, "tagName", "detail");
142
- __publicField(Detail, "styles", [variables, colorCSS, detailStyle]);
143
- Detail.register();
144
- export {
145
- Detail as D
146
- };
147
- //# sourceMappingURL=detail.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"detail.js","sources":["../../src/detail/detail.ts"],"sourcesContent":["import type { InferProps } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport detailStyle from '../styles/components/detail.css?inline';\nimport AeicoComponent from '../aeico-component';\nimport { html } from 'aeico';\nimport { prop } from 'aeico';\nimport type { DetailColor, DetailVariant, DetailIconPlacement } from './defines';\n\n/**\n * Detail component that can be used to show/hide additional content.\n *\n * @example\n * ```html\n * <ae-detail summary=\"Click Me\">\n * <ae-icon name=\"plus\" slot=\"expand\"></ae-icon>\n * <ae-icon name=\"minus\" slot=\"collapse\"></ae-icon>\n * Detail.....\n * </ae-detail>\n */\nclass Detail extends AeicoComponent {\n static tagName = 'detail';\n\n protected static styles = [styleVariables, colorCSS, detailStyle];\n\n @prop({ type: String })\n accessor summary: string = '';\n\n @prop({ type: String })\n accessor variant: DetailVariant = 'filled';\n\n @prop({ type: String })\n accessor color: DetailColor = 'default';\n\n @prop({ type: Boolean })\n accessor disabled: boolean = false;\n\n @prop({ type: String })\n accessor iconPlacement: DetailIconPlacement = 'end';\n\n private _open: boolean = false;\n\n /** Opens the detail panel. */\n open(): void {\n if (this.disabled || this._open) return;\n this._open = true;\n this.toggleAttribute('open', true);\n this.update();\n this.emit('open');\n }\n\n /** Closes the detail panel. */\n close(): void {\n if (!this._open) return;\n this._open = false;\n this.toggleAttribute('open', false);\n this.update();\n this.emit('close');\n }\n\n /** Toggles the detail panel open/closed. */\n toggle(): void {\n if (this._open) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /** Returns whether the detail panel is currently open. */\n isOpen(): boolean {\n return this._open;\n }\n\n private _handleSummaryClick = (): void => {\n this.toggle();\n };\n\n protected render() {\n return html(({ div, button, span, slot }) => {\n div({ className: 'detail', part: 'detail' }, () => {\n button(\n {\n className: 'summary',\n part: 'summary',\n type: 'button',\n 'aria-expanded': String(this._open),\n disabled: this.disabled || undefined,\n '@click': this._handleSummaryClick,\n },\n () => {\n slot({ name: 'summary' }, () => {\n span({ className: 'label', textContent: this.summary });\n });\n slot({ name: 'expand' });\n slot({ name: 'collapse' });\n },\n );\n div({ className: 'content-outer' }, () => {\n div(\n {\n className: 'content',\n part: 'content',\n role: 'region',\n },\n () => {\n slot();\n },\n );\n });\n });\n });\n }\n}\n\nDetail.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-detail': Detail;\n }\n}\n\nexport default Detail;\nexport type DetailProps = InferProps<typeof Detail>;\nexport type { DetailIconPlacement };\n"],"names":["styleVariables"],"mappings":"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"}
@@ -1,117 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
- const variables = require("./variables.cjs");
6
- const aeicoComponent = require("./aeico-component.cjs");
7
- const aeico = require("aeico");
8
- const style = ":host {\n display: contents;\n}\n\ndialog {\n display: none;\n flex-direction: column;\n border: none;\n border-radius: var(--ae-border-radius, var(--ae-border-radius));\n padding: 0;\n max-width: min(90vw, 600px);\n max-height: 90vh;\n background: var(--ae-surface-overlay);\n color: var(--ae-color-text-main);\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);\n overflow: hidden;\n}\n\ndialog[open] {\n display: flex;\n animation: dialog-slide-in 0.2s ease;\n}\n\ndialog::backdrop {\n background: var(--color-overlay);\n animation: dialog-backdrop-in 0.2s ease;\n}\n\n@keyframes dialog-backdrop-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n@keyframes dialog-slide-in {\n from {\n opacity: 0;\n transform: scale(0.96) translateY(-8px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n\nheader {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 16px 20px;\n border-bottom: 1px solid var(--ae-border-subtle);\n flex-shrink: 0;\n}\n\n.label {\n flex: 1;\n font-size: var(--ae-size-m, 1rem);\n font-weight: 500;\n margin: 0;\n color: var(--ae-color-text-main);\n}\n\n.close-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 28px;\n height: 28px;\n padding: 0;\n border: none;\n border-radius: var(--ae-border-radius, var(--ae-radius-sm));\n background: transparent;\n color: var(--ae-color-text-muted);\n font-size: 18px;\n line-height: 1;\n cursor: pointer;\n transition: background 0.15s, color 0.15s;\n}\n\n.close-btn:hover {\n background: var(--ae-border-subtle);\n color: var(--ae-color-text-main);\n}\n\n.body {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n}\n\nfooter {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 8px;\n padding: 12px 20px;\n border-top: 1px solid var(--ae-border-subtle);\n flex-shrink: 0;\n}\n\n::slotted([data-align-left]) {\n margin-right: auto;\n}\n";
9
- class Dialog extends aeicoComponent.AeicoComponent {
10
- constructor() {
11
- super(...arguments);
12
- __publicField(this, "_dialogEl", null);
13
- __publicField(this, "_hasFooter", false);
14
- __publicField(this, "_handleDialogClick", (e) => {
15
- const mouseEvent = e;
16
- const path = mouseEvent.composedPath();
17
- for (const el of path) {
18
- if (el instanceof Element && el.hasAttribute("data-close")) {
19
- this.close();
20
- return;
21
- }
22
- if (el === this._dialogEl) break;
23
- }
24
- if (this.modal !== false && this.closeOnOverlayClick !== false) {
25
- if (mouseEvent.target === this._dialogEl) {
26
- const rect = this._dialogEl.getBoundingClientRect();
27
- const outside = mouseEvent.clientX < rect.left || mouseEvent.clientX > rect.right || mouseEvent.clientY < rect.top || mouseEvent.clientY > rect.bottom;
28
- if (outside) {
29
- this.close();
30
- }
31
- }
32
- }
33
- });
34
- __publicField(this, "_handleNativeClose", () => {
35
- this.emit("close", { detail: { target: this } });
36
- });
37
- __publicField(this, "_handleFooterSlotChange", (e) => {
38
- const slotEl = e.target;
39
- const hasContent = slotEl.assignedElements().length > 0;
40
- if (hasContent !== this._hasFooter) {
41
- this._hasFooter = hasContent;
42
- this.update();
43
- }
44
- });
45
- }
46
- render() {
47
- return aeico.html(({ dialog, div, header, footer, span, button, slot }) => {
48
- this._dialogEl = dialog(
49
- {
50
- "@click": this._handleDialogClick,
51
- "@close": this._handleNativeClose,
52
- style: {
53
- width: this.width || "",
54
- height: this.height || ""
55
- }
56
- },
57
- () => {
58
- if (this.header !== false) {
59
- header({}, () => {
60
- slot({ name: "header" }, () => {
61
- span({ className: "label", textContent: this.label || "" });
62
- });
63
- if (this.closable !== false) {
64
- button({
65
- className: "close-btn",
66
- textContent: "×",
67
- "@click": () => this.close()
68
- });
69
- }
70
- });
71
- }
72
- div({ className: "body" }, () => {
73
- slot();
74
- });
75
- footer(
76
- {
77
- style: { display: this._hasFooter ? "" : "none" }
78
- },
79
- () => {
80
- slot({ name: "footer", "@slotchange": this._handleFooterSlotChange });
81
- }
82
- );
83
- }
84
- );
85
- });
86
- }
87
- open() {
88
- if (!this._dialogEl) return;
89
- if (this.modal !== false) {
90
- this._dialogEl.showModal();
91
- } else {
92
- this._dialogEl.show();
93
- }
94
- this.emit("open", { detail: { target: this } });
95
- }
96
- close() {
97
- var _a;
98
- (_a = this._dialogEl) == null ? void 0 : _a.close();
99
- }
100
- isOpen() {
101
- var _a;
102
- return ((_a = this._dialogEl) == null ? void 0 : _a.open) ?? false;
103
- }
104
- }
105
- __publicField(Dialog, "props", {
106
- label: { type: String },
107
- width: { type: String },
108
- height: { type: String },
109
- modal: { type: Boolean },
110
- closable: { type: Boolean },
111
- header: { type: Boolean },
112
- closeOnOverlayClick: { type: Boolean }
113
- });
114
- __publicField(Dialog, "styles", [variables.variables, style]);
115
- Dialog.register();
116
- exports.Dialog = Dialog;
117
- //# sourceMappingURL=dialog.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dialog.cjs","sources":["../../src/dialog/dialog.ts"],"sourcesContent":["import type { InferProps, Props } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport style from '../styles/components/dialog.css?inline';\nimport AeicoComponent from '../aeico-component';\nimport { html } from 'aeico';\n\nclass Dialog extends AeicoComponent {\n static props: Props = {\n label: { type: String },\n width: { type: String },\n height: { type: String },\n modal: { type: Boolean },\n closable: { type: Boolean },\n header: { type: Boolean },\n closeOnOverlayClick: { type: Boolean },\n };\n\n declare label?: string;\n declare width?: string;\n declare height?: string;\n declare modal?: boolean;\n declare closable?: boolean;\n declare header?: boolean;\n declare closeOnOverlayClick?: boolean;\n\n protected static styles = [styleVariables, style];\n\n private _dialogEl: HTMLDialogElement | null = null;\n private _hasFooter = false;\n\n protected render() {\n return html(({ dialog, div, header, footer, span, button, slot }) => {\n this._dialogEl = dialog(\n {\n '@click': this._handleDialogClick,\n '@close': this._handleNativeClose,\n style: {\n width: this.width || '',\n height: this.height || '',\n },\n },\n () => {\n // Header\n if (this.header !== false) {\n header({}, () => {\n slot({ name: 'header' }, () => {\n span({ className: 'label', textContent: this.label || '' });\n });\n if (this.closable !== false) {\n button({\n className: 'close-btn',\n textContent: '×',\n '@click': () => this.close(),\n });\n }\n });\n }\n\n // Body\n div({ className: 'body' }, () => {\n slot();\n });\n\n // Footer — always rendered to capture slotchange, hidden when empty\n footer(\n {\n style: { display: this._hasFooter ? '' : 'none' },\n },\n () => {\n slot({ name: 'footer', '@slotchange': this._handleFooterSlotChange });\n },\n );\n },\n );\n });\n }\n\n private _handleDialogClick = (e: Event) => {\n const mouseEvent = e as MouseEvent;\n const path = mouseEvent.composedPath();\n\n // data-close: any slotted element with [data-close] closes the dialog\n for (const el of path) {\n if (el instanceof Element && el.hasAttribute('data-close')) {\n this.close();\n return;\n }\n if (el === this._dialogEl) break;\n }\n\n // Backdrop click (modal mode only)\n if (this.modal !== false && this.closeOnOverlayClick !== false) {\n if (mouseEvent.target === this._dialogEl) {\n const rect = this._dialogEl!.getBoundingClientRect();\n const outside =\n mouseEvent.clientX < rect.left ||\n mouseEvent.clientX > rect.right ||\n mouseEvent.clientY < rect.top ||\n mouseEvent.clientY > rect.bottom;\n if (outside) {\n this.close();\n }\n }\n }\n };\n\n private _handleNativeClose = () => {\n this.emit('close', { detail: { target: this } });\n };\n\n private _handleFooterSlotChange = (e: Event) => {\n const slotEl = e.target as HTMLSlotElement;\n const hasContent = slotEl.assignedElements().length > 0;\n if (hasContent !== this._hasFooter) {\n this._hasFooter = hasContent;\n this.update();\n }\n };\n\n open() {\n if (!this._dialogEl) return;\n if (this.modal !== false) {\n this._dialogEl.showModal();\n } else {\n this._dialogEl.show();\n }\n this.emit('open', { detail: { target: this } });\n }\n\n close() {\n this._dialogEl?.close();\n // emit('close') is handled by _handleNativeClose via the native 'close' event\n }\n\n isOpen(): boolean {\n return this._dialogEl?.open ?? false;\n }\n}\n\nDialog.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-dialog': Dialog;\n }\n}\n\nexport default Dialog;\nexport type DialogProps = InferProps<typeof Dialog>;\n"],"names":["AeicoComponent","html","styleVariables"],"mappings":"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"}