@statistikzh/leu 0.14.3 → 0.15.0

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 (563) hide show
  1. package/.eslintrc.json +23 -4
  2. package/.github/workflows/release-please.yml +0 -1
  3. package/.prettierignore +1 -1
  4. package/.release-please-manifest.json +3 -0
  5. package/.storybook/{main.js → main.ts} +18 -2
  6. package/.storybook/{theme.js → theme.ts} +1 -0
  7. package/CHANGELOG.md +15 -0
  8. package/custom-elements-manifest.config.js +2 -2
  9. package/dist/Accordion.d.ts +32 -11
  10. package/dist/Accordion.js +68 -68
  11. package/dist/Button.d.ts +71 -32
  12. package/dist/Button.js +157 -155
  13. package/dist/ButtonGroup.d.ts +19 -14
  14. package/dist/ButtonGroup.js +77 -74
  15. package/dist/ChartWrapper.d.ts +38 -0
  16. package/dist/ChartWrapper.js +153 -0
  17. package/dist/Checkbox.d.ts +25 -7
  18. package/dist/Checkbox.js +41 -45
  19. package/dist/CheckboxGroup.d.ts +21 -9
  20. package/dist/CheckboxGroup.js +38 -35
  21. package/dist/Chip.d.ts +23 -4
  22. package/dist/Chip.js +13 -17
  23. package/dist/ChipGroup.d.ts +43 -17
  24. package/dist/ChipGroup.js +87 -113
  25. package/dist/ChipLink.d.ts +28 -10
  26. package/dist/ChipLink.js +17 -24
  27. package/dist/ChipRemovable.d.ts +25 -6
  28. package/dist/ChipRemovable.js +32 -36
  29. package/dist/ChipSelectable.d.ts +41 -23
  30. package/dist/ChipSelectable.js +55 -69
  31. package/dist/Dialog.d.ts +39 -11
  32. package/dist/Dialog.js +48 -55
  33. package/dist/Dropdown.d.ts +44 -9
  34. package/dist/Dropdown.js +91 -96
  35. package/dist/Icon.d.ts +16 -9
  36. package/dist/Icon.js +117 -122
  37. package/dist/Input.d.ts +122 -34
  38. package/dist/Input.js +262 -342
  39. package/dist/LeuElement-BhAmogDy.js +42 -0
  40. package/dist/LeuElement.d-BevHqLUu.d.ts +10 -0
  41. package/dist/Menu.d.ts +29 -10
  42. package/dist/Menu.js +111 -110
  43. package/dist/MenuItem.d.ts +69 -19
  44. package/dist/MenuItem.js +93 -109
  45. package/dist/Pagination.d.ts +59 -17
  46. package/dist/Pagination.js +124 -114
  47. package/dist/Placeholder.d.ts +27 -0
  48. package/dist/Placeholder.js +90 -0
  49. package/dist/Popup.d.ts +55 -21
  50. package/dist/Popup.js +149 -178
  51. package/dist/Radio.d.ts +21 -7
  52. package/dist/Radio.js +38 -42
  53. package/dist/RadioGroup.d.ts +39 -16
  54. package/dist/RadioGroup.js +136 -128
  55. package/dist/Range.d.ts +62 -23
  56. package/dist/Range.js +154 -180
  57. package/dist/ScrollTop.d.ts +24 -14
  58. package/dist/ScrollTop.js +73 -75
  59. package/dist/Select.d.ts +48 -38
  60. package/dist/Select.js +311 -336
  61. package/dist/Spinner.d.ts +9 -4
  62. package/dist/Spinner.js +5 -5
  63. package/dist/Table.d.ts +60 -31
  64. package/dist/Table.js +162 -179
  65. package/dist/VisuallyHidden.d.ts +9 -4
  66. package/dist/VisuallyHidden.js +5 -5
  67. package/dist/_tslib-CNEFicEt.js +30 -0
  68. package/dist/components/accordion/Accordion.d.ts +49 -0
  69. package/dist/components/accordion/Accordion.d.ts.map +1 -0
  70. package/dist/components/accordion/leu-accordion.d.ts +8 -0
  71. package/dist/components/accordion/leu-accordion.d.ts.map +1 -0
  72. package/dist/components/accordion/stories/accordion.stories.d.ts +26 -0
  73. package/dist/components/accordion/stories/accordion.stories.d.ts.map +1 -0
  74. package/dist/components/accordion/test/accordion.test.d.ts +2 -0
  75. package/dist/components/accordion/test/accordion.test.d.ts.map +1 -0
  76. package/dist/components/button/Button.d.ts +81 -0
  77. package/dist/components/button/Button.d.ts.map +1 -0
  78. package/dist/components/button/leu-button.d.ts +8 -0
  79. package/dist/components/button/leu-button.d.ts.map +1 -0
  80. package/dist/components/button/stories/button.stories.d.ts +19 -0
  81. package/dist/components/button/stories/button.stories.d.ts.map +1 -0
  82. package/dist/components/button/test/button.test.d.ts +3 -0
  83. package/dist/components/button/test/button.test.d.ts.map +1 -0
  84. package/dist/components/button-group/ButtonGroup.d.ts +25 -0
  85. package/dist/components/button-group/ButtonGroup.d.ts.map +1 -0
  86. package/dist/components/button-group/leu-button-group.d.ts +8 -0
  87. package/dist/components/button-group/leu-button-group.d.ts.map +1 -0
  88. package/dist/components/button-group/stories/button-group.stories.d.ts +15 -0
  89. package/dist/components/button-group/stories/button-group.stories.d.ts.map +1 -0
  90. package/dist/components/button-group/test/button-group.test.d.ts +3 -0
  91. package/dist/components/button-group/test/button-group.test.d.ts.map +1 -0
  92. package/dist/components/checkbox/Checkbox.d.ts +28 -0
  93. package/dist/components/checkbox/Checkbox.d.ts.map +1 -0
  94. package/dist/components/checkbox/CheckboxGroup.d.ts +22 -0
  95. package/dist/components/checkbox/CheckboxGroup.d.ts.map +1 -0
  96. package/dist/components/checkbox/leu-checkbox-group.d.ts +8 -0
  97. package/dist/components/checkbox/leu-checkbox-group.d.ts.map +1 -0
  98. package/dist/components/checkbox/leu-checkbox.d.ts +8 -0
  99. package/dist/components/checkbox/leu-checkbox.d.ts.map +1 -0
  100. package/dist/components/checkbox/stories/checkbox-group.stories.d.ts +29 -0
  101. package/dist/components/checkbox/stories/checkbox-group.stories.d.ts.map +1 -0
  102. package/dist/components/checkbox/stories/checkbox.stories.d.ts +22 -0
  103. package/dist/components/checkbox/stories/checkbox.stories.d.ts.map +1 -0
  104. package/dist/components/checkbox/test/checkbox-group.test.d.ts +3 -0
  105. package/dist/components/checkbox/test/checkbox-group.test.d.ts.map +1 -0
  106. package/dist/components/checkbox/test/checkbox.test.d.ts +2 -0
  107. package/dist/components/checkbox/test/checkbox.test.d.ts.map +1 -0
  108. package/dist/components/chip/Chip.d.ts +21 -0
  109. package/dist/components/chip/Chip.d.ts.map +1 -0
  110. package/dist/components/chip/ChipGroup.d.ts +58 -0
  111. package/dist/components/chip/ChipGroup.d.ts.map +1 -0
  112. package/dist/components/chip/ChipLink.d.ts +29 -0
  113. package/dist/components/chip/ChipLink.d.ts.map +1 -0
  114. package/dist/components/chip/ChipRemovable.d.ts +32 -0
  115. package/dist/components/chip/ChipRemovable.d.ts.map +1 -0
  116. package/dist/components/chip/ChipSelectable.d.ts +51 -0
  117. package/dist/components/chip/ChipSelectable.d.ts.map +1 -0
  118. package/dist/components/chip/exports.d.ts +5 -0
  119. package/dist/components/chip/exports.d.ts.map +1 -0
  120. package/dist/components/chip/leu-chip-group.d.ts +8 -0
  121. package/dist/components/chip/leu-chip-group.d.ts.map +1 -0
  122. package/dist/components/chip/leu-chip-link.d.ts +8 -0
  123. package/dist/components/chip/leu-chip-link.d.ts.map +1 -0
  124. package/dist/components/chip/leu-chip-removable.d.ts +8 -0
  125. package/dist/components/chip/leu-chip-removable.d.ts.map +1 -0
  126. package/dist/components/chip/leu-chip-selectable.d.ts +8 -0
  127. package/dist/components/chip/leu-chip-selectable.d.ts.map +1 -0
  128. package/dist/components/chip/stories/chip-group.stories.d.ts +40 -0
  129. package/dist/components/chip/stories/chip-group.stories.d.ts.map +1 -0
  130. package/dist/components/chip/stories/chip-link.stories.d.ts +27 -0
  131. package/dist/components/chip/stories/chip-link.stories.d.ts.map +1 -0
  132. package/dist/components/chip/stories/chip-removable.stories.d.ts +21 -0
  133. package/dist/components/chip/stories/chip-removable.stories.d.ts.map +1 -0
  134. package/dist/components/chip/stories/chip-selectable.stories.d.ts +35 -0
  135. package/dist/components/chip/stories/chip-selectable.stories.d.ts.map +1 -0
  136. package/dist/components/chip/test/chip-group.test.d.ts +4 -0
  137. package/dist/components/chip/test/chip-group.test.d.ts.map +1 -0
  138. package/dist/components/chip/test/chip-link.test.d.ts +2 -0
  139. package/dist/components/chip/test/chip-link.test.d.ts.map +1 -0
  140. package/dist/components/chip/test/chip-removable.test.d.ts +2 -0
  141. package/dist/components/chip/test/chip-removable.test.d.ts.map +1 -0
  142. package/dist/components/chip/test/chip-selectable.test.d.ts +2 -0
  143. package/dist/components/chip/test/chip-selectable.test.d.ts.map +1 -0
  144. package/dist/components/chip/test/chip.test.d.ts +2 -0
  145. package/dist/components/chip/test/chip.test.d.ts.map +1 -0
  146. package/dist/components/dialog/Dialog.d.ts +41 -0
  147. package/dist/components/dialog/Dialog.d.ts.map +1 -0
  148. package/dist/components/dialog/leu-dialog.d.ts +8 -0
  149. package/dist/components/dialog/leu-dialog.d.ts.map +1 -0
  150. package/dist/components/dialog/stories/dialog.stories.d.ts +19 -0
  151. package/dist/components/dialog/stories/dialog.stories.d.ts.map +1 -0
  152. package/dist/components/dialog/test/dialog.test.d.ts +2 -0
  153. package/dist/components/dialog/test/dialog.test.d.ts.map +1 -0
  154. package/dist/components/dropdown/Dropdown.d.ts +49 -0
  155. package/dist/components/dropdown/Dropdown.d.ts.map +1 -0
  156. package/dist/components/dropdown/leu-dropdown.d.ts +8 -0
  157. package/dist/components/dropdown/leu-dropdown.d.ts.map +1 -0
  158. package/dist/components/dropdown/stories/dropdown.stories.d.ts +25 -0
  159. package/dist/components/dropdown/stories/dropdown.stories.d.ts.map +1 -0
  160. package/dist/components/dropdown/test/dropdown.test.d.ts +2 -0
  161. package/dist/components/dropdown/test/dropdown.test.d.ts.map +1 -0
  162. package/dist/components/icon/Icon.d.ts +23 -0
  163. package/dist/components/icon/Icon.d.ts.map +1 -0
  164. package/dist/components/icon/leu-icon.d.ts +8 -0
  165. package/dist/components/icon/leu-icon.d.ts.map +1 -0
  166. package/dist/components/icon/paths.d.ts +101 -0
  167. package/dist/components/icon/paths.d.ts.map +1 -0
  168. package/dist/components/icon/stories/icon.stories.d.ts +32 -0
  169. package/dist/components/icon/stories/icon.stories.d.ts.map +1 -0
  170. package/dist/components/icon/test/icon.test.d.ts +2 -0
  171. package/dist/components/icon/test/icon.test.d.ts.map +1 -0
  172. package/dist/components/input/Input.d.ts +239 -0
  173. package/dist/components/input/Input.d.ts.map +1 -0
  174. package/dist/components/input/leu-input.d.ts +8 -0
  175. package/dist/components/input/leu-input.d.ts.map +1 -0
  176. package/dist/components/input/stories/input.stories.d.ts +35 -0
  177. package/dist/components/input/stories/input.stories.d.ts.map +1 -0
  178. package/dist/components/input/test/input.test.d.ts +2 -0
  179. package/dist/components/input/test/input.test.d.ts.map +1 -0
  180. package/dist/components/menu/Menu.d.ts +44 -0
  181. package/dist/components/menu/Menu.d.ts.map +1 -0
  182. package/dist/components/menu/MenuItem.d.ts +88 -0
  183. package/dist/components/menu/MenuItem.d.ts.map +1 -0
  184. package/dist/components/menu/leu-menu-item.d.ts +8 -0
  185. package/dist/components/menu/leu-menu-item.d.ts.map +1 -0
  186. package/dist/components/menu/leu-menu.d.ts +8 -0
  187. package/dist/components/menu/leu-menu.d.ts.map +1 -0
  188. package/dist/components/menu/stories/menu-item.stories.d.ts +24 -0
  189. package/dist/components/menu/stories/menu-item.stories.d.ts.map +1 -0
  190. package/dist/components/menu/stories/menu.stories.d.ts +26 -0
  191. package/dist/components/menu/stories/menu.stories.d.ts.map +1 -0
  192. package/dist/components/menu/test/menu-item.test.d.ts +3 -0
  193. package/dist/components/menu/test/menu-item.test.d.ts.map +1 -0
  194. package/dist/components/menu/test/menu.test.d.ts +4 -0
  195. package/dist/components/menu/test/menu.test.d.ts.map +1 -0
  196. package/dist/components/pagination/Pagination.d.ts +72 -0
  197. package/dist/components/pagination/Pagination.d.ts.map +1 -0
  198. package/dist/components/pagination/leu-pagination.d.ts +8 -0
  199. package/dist/components/pagination/leu-pagination.d.ts.map +1 -0
  200. package/dist/components/pagination/stories/pagination.stories.d.ts +25 -0
  201. package/dist/components/pagination/stories/pagination.stories.d.ts.map +1 -0
  202. package/dist/components/pagination/test/pagination.test.d.ts +2 -0
  203. package/dist/components/pagination/test/pagination.test.d.ts.map +1 -0
  204. package/dist/components/placeholder/Placeholder.d.ts +23 -0
  205. package/dist/components/placeholder/Placeholder.d.ts.map +1 -0
  206. package/dist/components/placeholder/leu-placeholder.d.ts +3 -0
  207. package/dist/components/placeholder/leu-placeholder.d.ts.map +1 -0
  208. package/dist/components/placeholder/stories/placeholder.stories.d.ts +27 -0
  209. package/dist/components/placeholder/stories/placeholder.stories.d.ts.map +1 -0
  210. package/dist/components/placeholder/test/placeholder.test.d.ts +2 -0
  211. package/dist/components/placeholder/test/placeholder.test.d.ts.map +1 -0
  212. package/dist/components/popup/Popup.d.ts +66 -0
  213. package/dist/components/popup/Popup.d.ts.map +1 -0
  214. package/dist/components/popup/leu-popup.d.ts +8 -0
  215. package/dist/components/popup/leu-popup.d.ts.map +1 -0
  216. package/dist/components/popup/stories/popup.stories.d.ts +17 -0
  217. package/dist/components/popup/stories/popup.stories.d.ts.map +1 -0
  218. package/dist/components/popup/test/popup.test.d.ts +2 -0
  219. package/dist/components/popup/test/popup.test.d.ts.map +1 -0
  220. package/dist/components/radio/Radio.d.ts +24 -0
  221. package/dist/components/radio/Radio.d.ts.map +1 -0
  222. package/dist/components/radio/RadioGroup.d.ts +39 -0
  223. package/dist/components/radio/RadioGroup.d.ts.map +1 -0
  224. package/dist/components/radio/leu-radio-group.d.ts +8 -0
  225. package/dist/components/radio/leu-radio-group.d.ts.map +1 -0
  226. package/dist/components/radio/leu-radio.d.ts +8 -0
  227. package/dist/components/radio/leu-radio.d.ts.map +1 -0
  228. package/dist/components/radio/stories/radio-group.stories.d.ts +29 -0
  229. package/dist/components/radio/stories/radio-group.stories.d.ts.map +1 -0
  230. package/dist/components/radio/stories/radio.stories.d.ts +22 -0
  231. package/dist/components/radio/stories/radio.stories.d.ts.map +1 -0
  232. package/dist/components/radio/test/radio-group.test.d.ts +3 -0
  233. package/dist/components/radio/test/radio-group.test.d.ts.map +1 -0
  234. package/dist/components/radio/test/radio.test.d.ts +2 -0
  235. package/dist/components/radio/test/radio.test.d.ts.map +1 -0
  236. package/dist/components/range/Range.d.ts +95 -0
  237. package/dist/components/range/Range.d.ts.map +1 -0
  238. package/dist/components/range/leu-range.d.ts +8 -0
  239. package/dist/components/range/leu-range.d.ts.map +1 -0
  240. package/dist/components/range/stories/range-slider.stories.d.ts +26 -0
  241. package/dist/components/range/stories/range-slider.stories.d.ts.map +1 -0
  242. package/dist/components/range/test/range.test.d.ts +2 -0
  243. package/dist/components/range/test/range.test.d.ts.map +1 -0
  244. package/dist/components/scroll-top/ScrollTop.d.ts +25 -0
  245. package/dist/components/scroll-top/ScrollTop.d.ts.map +1 -0
  246. package/dist/components/scroll-top/leu-scroll-top.d.ts +8 -0
  247. package/dist/components/scroll-top/leu-scroll-top.d.ts.map +1 -0
  248. package/dist/components/scroll-top/stories/scroll-top.stories.d.ts +8 -0
  249. package/dist/components/scroll-top/stories/scroll-top.stories.d.ts.map +1 -0
  250. package/dist/components/scroll-top/test/scroll-top.test.d.ts +2 -0
  251. package/dist/components/scroll-top/test/scroll-top.test.d.ts.map +1 -0
  252. package/dist/components/select/Select.d.ts +145 -0
  253. package/dist/components/select/Select.d.ts.map +1 -0
  254. package/dist/components/select/leu-select.d.ts +8 -0
  255. package/dist/components/select/leu-select.d.ts.map +1 -0
  256. package/dist/components/select/stories/select.stories.d.ts +23 -0
  257. package/dist/components/select/stories/select.stories.d.ts.map +1 -0
  258. package/dist/components/select/test/fixtures.d.ts +2 -0
  259. package/dist/components/select/test/fixtures.d.ts.map +1 -0
  260. package/dist/components/select/test/select.test.d.ts +3 -0
  261. package/dist/components/select/test/select.test.d.ts.map +1 -0
  262. package/dist/components/spinner/Spinner.d.ts +10 -0
  263. package/dist/components/spinner/Spinner.d.ts.map +1 -0
  264. package/dist/components/spinner/leu-spinner.d.ts +8 -0
  265. package/dist/components/spinner/leu-spinner.d.ts.map +1 -0
  266. package/dist/components/spinner/stories/spinner.stories.d.ts +16 -0
  267. package/dist/components/spinner/stories/spinner.stories.d.ts.map +1 -0
  268. package/dist/components/spinner/test/spinner.test.d.ts +2 -0
  269. package/dist/components/spinner/test/spinner.test.d.ts.map +1 -0
  270. package/dist/components/table/Table.d.ts +65 -0
  271. package/dist/components/table/Table.d.ts.map +1 -0
  272. package/dist/components/table/leu-table.d.ts +8 -0
  273. package/dist/components/table/leu-table.d.ts.map +1 -0
  274. package/dist/components/table/stories/table.stories.d.ts +15 -0
  275. package/dist/components/table/stories/table.stories.d.ts.map +1 -0
  276. package/dist/components/table/test/table.test.d.ts +2 -0
  277. package/dist/components/table/test/table.test.d.ts.map +1 -0
  278. package/dist/components/visualization/ChartWrapper.d.ts +34 -0
  279. package/dist/components/visualization/ChartWrapper.d.ts.map +1 -0
  280. package/dist/components/visualization/leu-chart-wrapper.d.ts +3 -0
  281. package/dist/components/visualization/leu-chart-wrapper.d.ts.map +1 -0
  282. package/dist/components/visualization/stories/chart-wrapper.stories.d.ts +28 -0
  283. package/dist/components/visualization/stories/chart-wrapper.stories.d.ts.map +1 -0
  284. package/dist/components/visualization/test/chart-wrapper.test.d.ts +2 -0
  285. package/dist/components/visualization/test/chart-wrapper.test.d.ts.map +1 -0
  286. package/dist/components/visually-hidden/VisuallyHidden.d.ts +9 -0
  287. package/dist/components/visually-hidden/VisuallyHidden.d.ts.map +1 -0
  288. package/dist/components/visually-hidden/leu-visually-hidden.d.ts +8 -0
  289. package/dist/components/visually-hidden/leu-visually-hidden.d.ts.map +1 -0
  290. package/dist/components/visually-hidden/stories/visually-hidden.stories.d.ts +13 -0
  291. package/dist/components/visually-hidden/stories/visually-hidden.stories.d.ts.map +1 -0
  292. package/dist/components/visually-hidden/test/visually-hidden.test.d.ts +2 -0
  293. package/dist/components/visually-hidden/test/visually-hidden.test.d.ts.map +1 -0
  294. package/dist/hasSlotController-Bm2tipvG.js +53 -0
  295. package/dist/hasSlotController.d-emXwVXWF.d.ts +23 -0
  296. package/dist/index.d.ts +17 -20
  297. package/dist/index.d.ts.map +1 -1
  298. package/dist/index.js +5 -3
  299. package/dist/leu-accordion.d.ts +12 -2
  300. package/dist/leu-accordion.js +3 -1
  301. package/dist/leu-button-group.d.ts +12 -2
  302. package/dist/leu-button-group.js +8 -1
  303. package/dist/leu-button.d.ts +13 -2
  304. package/dist/leu-button.js +4 -2
  305. package/dist/leu-chart-wrapper.d.ts +6 -0
  306. package/dist/leu-chart-wrapper.js +11 -0
  307. package/dist/leu-checkbox-group.d.ts +12 -2
  308. package/dist/leu-checkbox-group.js +5 -1
  309. package/dist/leu-checkbox.d.ts +13 -2
  310. package/dist/leu-checkbox.js +3 -1
  311. package/dist/leu-chip-group.d.ts +12 -2
  312. package/dist/leu-chip-group.js +2 -2
  313. package/dist/leu-chip-link.d.ts +13 -2
  314. package/dist/leu-chip-link.js +1 -1
  315. package/dist/leu-chip-removable.d.ts +14 -2
  316. package/dist/leu-chip-removable.js +1 -1
  317. package/dist/leu-chip-selectable.d.ts +13 -2
  318. package/dist/leu-chip-selectable.js +1 -1
  319. package/dist/leu-dialog.d.ts +14 -2
  320. package/dist/leu-dialog.js +2 -2
  321. package/dist/leu-dropdown.d.ts +18 -2
  322. package/dist/leu-dropdown.js +4 -2
  323. package/dist/leu-icon.d.ts +12 -2
  324. package/dist/leu-icon.js +1 -1
  325. package/dist/leu-input.d.ts +13 -2
  326. package/dist/leu-input.js +1 -1
  327. package/dist/leu-menu-item.d.ts +13 -2
  328. package/dist/leu-menu-item.js +1 -1
  329. package/dist/leu-menu.d.ts +14 -2
  330. package/dist/leu-menu.js +1 -1
  331. package/dist/leu-pagination.d.ts +15 -2
  332. package/dist/leu-pagination.js +4 -2
  333. package/dist/leu-placeholder.d.ts +4 -0
  334. package/dist/leu-placeholder.js +7 -0
  335. package/dist/leu-popup.d.ts +12 -2
  336. package/dist/leu-popup.js +1 -1
  337. package/dist/leu-radio-group.d.ts +12 -2
  338. package/dist/leu-radio-group.js +4 -1
  339. package/dist/leu-radio.d.ts +12 -2
  340. package/dist/leu-radio.js +3 -1
  341. package/dist/leu-range.d.ts +12 -2
  342. package/dist/leu-range.js +1 -1
  343. package/dist/leu-scroll-top.d.ts +14 -2
  344. package/dist/leu-scroll-top.js +4 -2
  345. package/dist/leu-select.d.ts +19 -2
  346. package/dist/leu-select.js +4 -2
  347. package/dist/leu-spinner.d.ts +12 -2
  348. package/dist/leu-spinner.js +1 -1
  349. package/dist/leu-table.d.ts +16 -2
  350. package/dist/leu-table.js +4 -2
  351. package/dist/leu-visually-hidden.d.ts +12 -2
  352. package/dist/leu-visually-hidden.js +1 -1
  353. package/dist/lib/LeuElement.d.ts +8 -0
  354. package/dist/lib/LeuElement.d.ts.map +1 -0
  355. package/dist/lib/a11y.d.ts +11 -0
  356. package/dist/lib/a11y.d.ts.map +1 -0
  357. package/dist/lib/hasSlotController.d.ts +20 -0
  358. package/dist/lib/hasSlotController.d.ts.map +1 -0
  359. package/dist/lib/utils.d.ts +16 -0
  360. package/dist/lib/utils.d.ts.map +1 -0
  361. package/dist/styles/style.stories.d.ts +6 -0
  362. package/dist/styles/style.stories.d.ts.map +1 -0
  363. package/dist/vscode.html-custom-data.json +93 -23
  364. package/dist/vue/index.d.ts +79 -41
  365. package/dist/web-types.json +211 -70
  366. package/package.json +18 -11
  367. package/release-please-config.json +8 -0
  368. package/rollup.config.js +55 -25
  369. package/scripts/generate-component/generate.js +1 -1
  370. package/scripts/generate-component/templates/{[Name].js → [Name].ts} +3 -3
  371. package/scripts/generate-component/templates/stories/[name].stories.ts +26 -0
  372. package/src/components/accordion/{Accordion.js → Accordion.ts} +26 -21
  373. package/src/components/accordion/{leu-accordion.js → leu-accordion.ts} +6 -0
  374. package/src/components/accordion/stories/{accordion.stories.js → accordion.stories.ts} +10 -8
  375. package/src/components/button/{Button.js → Button.ts} +95 -80
  376. package/src/components/button/{leu-button.js → leu-button.ts} +6 -0
  377. package/src/components/button/stories/{button.stories.js → button.stories.ts} +5 -6
  378. package/src/components/button-group/{ButtonGroup.js → ButtonGroup.ts} +19 -18
  379. package/src/components/button-group/{leu-button-group.js → leu-button-group.ts} +6 -0
  380. package/src/components/checkbox/{Checkbox.js → Checkbox.ts} +13 -16
  381. package/src/components/checkbox/{CheckboxGroup.js → CheckboxGroup.ts} +20 -17
  382. package/src/components/checkbox/{leu-checkbox-group.js → leu-checkbox-group.ts} +6 -0
  383. package/src/components/checkbox/{leu-checkbox.js → leu-checkbox.ts} +6 -0
  384. package/src/components/chip/{Chip.js → Chip.ts} +0 -1
  385. package/src/components/chip/{ChipGroup.js → ChipGroup.ts} +0 -1
  386. package/src/components/chip/{leu-chip-group.js → leu-chip-group.ts} +6 -0
  387. package/src/components/chip/{leu-chip-link.js → leu-chip-link.ts} +6 -0
  388. package/src/components/chip/{leu-chip-removable.js → leu-chip-removable.ts} +6 -0
  389. package/src/components/chip/{leu-chip-selectable.js → leu-chip-selectable.ts} +6 -0
  390. package/src/components/dialog/{Dialog.js → Dialog.ts} +0 -1
  391. package/src/components/dialog/{leu-dialog.js → leu-dialog.ts} +6 -0
  392. package/src/components/dropdown/{Dropdown.js → Dropdown.ts} +0 -1
  393. package/src/components/dropdown/{leu-dropdown.js → leu-dropdown.ts} +6 -0
  394. package/src/components/icon/{Icon.js → Icon.ts} +0 -1
  395. package/src/components/icon/{leu-icon.js → leu-icon.ts} +6 -0
  396. package/src/components/icon/stories/{icon.stories.js → icon.stories.ts} +27 -0
  397. package/src/components/input/{Input.js → Input.ts} +0 -1
  398. package/src/components/input/{leu-input.js → leu-input.ts} +6 -0
  399. package/src/components/menu/{Menu.js → Menu.ts} +0 -1
  400. package/src/components/menu/{MenuItem.js → MenuItem.ts} +0 -1
  401. package/src/components/menu/{leu-menu-item.js → leu-menu-item.ts} +6 -0
  402. package/src/components/menu/{leu-menu.js → leu-menu.ts} +6 -0
  403. package/src/components/pagination/{Pagination.js → Pagination.ts} +45 -33
  404. package/src/components/pagination/{leu-pagination.js → leu-pagination.ts} +6 -0
  405. package/src/components/pagination/stories/{pagination.stories.js → pagination.stories.ts} +28 -17
  406. package/src/components/placeholder/Placeholder.ts +33 -0
  407. package/src/components/placeholder/leu-placeholder.ts +5 -0
  408. package/src/components/placeholder/placeholder.css +59 -0
  409. package/src/components/placeholder/stories/placeholder.stories.ts +34 -0
  410. package/src/components/placeholder/test/placeholder.test.ts +31 -0
  411. package/src/components/popup/{Popup.js → Popup.ts} +0 -1
  412. package/src/components/popup/{leu-popup.js → leu-popup.ts} +6 -0
  413. package/src/components/radio/{Radio.js → Radio.ts} +13 -16
  414. package/src/components/radio/{RadioGroup.js → RadioGroup.ts} +42 -29
  415. package/src/components/radio/{leu-radio-group.js → leu-radio-group.ts} +6 -0
  416. package/src/components/radio/{leu-radio.js → leu-radio.ts} +6 -0
  417. package/src/components/range/{leu-range.js → leu-range.ts} +6 -0
  418. package/src/components/scroll-top/{ScrollTop.js → ScrollTop.ts} +0 -1
  419. package/src/components/scroll-top/{leu-scroll-top.js → leu-scroll-top.ts} +6 -0
  420. package/src/components/select/{Select.js → Select.ts} +0 -1
  421. package/src/components/select/{leu-select.js → leu-select.ts} +6 -0
  422. package/src/components/select/test/{fixtures.js → fixtures.ts} +1 -1
  423. package/src/components/spinner/{leu-spinner.js → leu-spinner.ts} +6 -0
  424. package/src/components/table/{Table.js → Table.ts} +0 -1
  425. package/src/components/table/{leu-table.js → leu-table.ts} +6 -0
  426. package/src/components/visualization/ChartWrapper.ts +75 -0
  427. package/src/components/visualization/chart-wrapper.css +78 -0
  428. package/src/components/visualization/leu-chart-wrapper.ts +5 -0
  429. package/src/components/visualization/stories/chart-wrapper.stories.ts +52 -0
  430. package/src/components/visualization/test/chart-wrapper.test.ts +74 -0
  431. package/src/components/visually-hidden/{VisuallyHidden.js → VisuallyHidden.ts} +0 -1
  432. package/src/components/visually-hidden/{leu-visually-hidden.js → leu-visually-hidden.ts} +6 -0
  433. package/src/docs/theme.mdx +14 -10
  434. package/src/global.d.ts +11 -0
  435. package/src/index.ts +17 -0
  436. package/src/lib/{LeuElement.js → LeuElement.ts} +15 -6
  437. package/src/lib/{a11y.js → a11y.ts} +4 -4
  438. package/src/lib/{hasSlotController.js → hasSlotController.ts} +12 -25
  439. package/stylelint.config.mjs +1 -1
  440. package/tsconfig.build.json +6 -4
  441. package/tsconfig.json +7 -10
  442. package/web-dev-server.config.mjs +11 -1
  443. package/web-test-runner.config.mjs +11 -2
  444. package/babel.config.json +0 -3
  445. package/dist/Accordion.d.ts.map +0 -1
  446. package/dist/Button.d.ts.map +0 -1
  447. package/dist/ButtonGroup.d.ts.map +0 -1
  448. package/dist/Checkbox.d.ts.map +0 -1
  449. package/dist/CheckboxGroup.d.ts.map +0 -1
  450. package/dist/Chip.d.ts.map +0 -1
  451. package/dist/ChipGroup.d.ts.map +0 -1
  452. package/dist/ChipLink.d.ts.map +0 -1
  453. package/dist/ChipRemovable.d.ts.map +0 -1
  454. package/dist/ChipSelectable.d.ts.map +0 -1
  455. package/dist/Dialog.d.ts.map +0 -1
  456. package/dist/Dropdown.d.ts.map +0 -1
  457. package/dist/Icon.d.ts.map +0 -1
  458. package/dist/Input.d.ts.map +0 -1
  459. package/dist/LeuElement-Dd6zm9XF.d.ts +0 -7
  460. package/dist/LeuElement-Dd6zm9XF.d.ts.map +0 -1
  461. package/dist/LeuElement-Dd6zm9XF.js +0 -70
  462. package/dist/Menu.d.ts.map +0 -1
  463. package/dist/MenuItem.d.ts.map +0 -1
  464. package/dist/Pagination.d.ts.map +0 -1
  465. package/dist/Popup.d.ts.map +0 -1
  466. package/dist/Radio.d.ts.map +0 -1
  467. package/dist/RadioGroup.d.ts.map +0 -1
  468. package/dist/Range.d.ts.map +0 -1
  469. package/dist/ScrollTop.d.ts.map +0 -1
  470. package/dist/Select.d.ts.map +0 -1
  471. package/dist/Spinner.d.ts.map +0 -1
  472. package/dist/Table.d.ts.map +0 -1
  473. package/dist/VisuallyHidden.d.ts.map +0 -1
  474. package/dist/hasSlotController-dQsSUUpb.d.ts +0 -38
  475. package/dist/hasSlotController-dQsSUUpb.d.ts.map +0 -1
  476. package/dist/hasSlotController-dQsSUUpb.js +0 -75
  477. package/dist/leu-accordion.d.ts.map +0 -1
  478. package/dist/leu-button-group.d.ts.map +0 -1
  479. package/dist/leu-button.d.ts.map +0 -1
  480. package/dist/leu-checkbox-group.d.ts.map +0 -1
  481. package/dist/leu-checkbox.d.ts.map +0 -1
  482. package/dist/leu-chip-group.d.ts.map +0 -1
  483. package/dist/leu-chip-link.d.ts.map +0 -1
  484. package/dist/leu-chip-removable.d.ts.map +0 -1
  485. package/dist/leu-chip-selectable.d.ts.map +0 -1
  486. package/dist/leu-dialog.d.ts.map +0 -1
  487. package/dist/leu-dropdown.d.ts.map +0 -1
  488. package/dist/leu-icon.d.ts.map +0 -1
  489. package/dist/leu-input.d.ts.map +0 -1
  490. package/dist/leu-menu-item.d.ts.map +0 -1
  491. package/dist/leu-menu.d.ts.map +0 -1
  492. package/dist/leu-pagination.d.ts.map +0 -1
  493. package/dist/leu-popup.d.ts.map +0 -1
  494. package/dist/leu-radio-group.d.ts.map +0 -1
  495. package/dist/leu-radio.d.ts.map +0 -1
  496. package/dist/leu-range.d.ts.map +0 -1
  497. package/dist/leu-scroll-top.d.ts.map +0 -1
  498. package/dist/leu-select.d.ts.map +0 -1
  499. package/dist/leu-spinner.d.ts.map +0 -1
  500. package/dist/leu-table.d.ts.map +0 -1
  501. package/dist/leu-visually-hidden.d.ts.map +0 -1
  502. package/index.js +0 -17
  503. package/scripts/generate-component/templates/stories/[name].stories.js +0 -13
  504. /package/.storybook/{manager.js → manager.ts} +0 -0
  505. /package/.storybook/{preview.js → preview.ts} +0 -0
  506. /package/scripts/generate-component/templates/{[namespace]-[name].js → [namespace]-[name].ts} +0 -0
  507. /package/scripts/generate-component/templates/test/{[name].test.js → [name].test.ts} +0 -0
  508. /package/src/components/accordion/test/{accordion.test.js → accordion.test.ts} +0 -0
  509. /package/src/components/button/test/{button.test.js → button.test.ts} +0 -0
  510. /package/src/components/button-group/stories/{button-group.stories.js → button-group.stories.ts} +0 -0
  511. /package/src/components/button-group/test/{button-group.test.js → button-group.test.ts} +0 -0
  512. /package/src/components/checkbox/stories/{checkbox-group.stories.js → checkbox-group.stories.ts} +0 -0
  513. /package/src/components/checkbox/stories/{checkbox.stories.js → checkbox.stories.ts} +0 -0
  514. /package/src/components/checkbox/test/{checkbox-group.test.js → checkbox-group.test.ts} +0 -0
  515. /package/src/components/checkbox/test/{checkbox.test.js → checkbox.test.ts} +0 -0
  516. /package/src/components/chip/{ChipLink.js → ChipLink.ts} +0 -0
  517. /package/src/components/chip/{ChipRemovable.js → ChipRemovable.ts} +0 -0
  518. /package/src/components/chip/{ChipSelectable.js → ChipSelectable.ts} +0 -0
  519. /package/src/components/chip/{exports.js → exports.ts} +0 -0
  520. /package/src/components/chip/stories/{chip-group.stories.js → chip-group.stories.ts} +0 -0
  521. /package/src/components/chip/stories/{chip-link.stories.js → chip-link.stories.ts} +0 -0
  522. /package/src/components/chip/stories/{chip-removable.stories.js → chip-removable.stories.ts} +0 -0
  523. /package/src/components/chip/stories/{chip-selectable.stories.js → chip-selectable.stories.ts} +0 -0
  524. /package/src/components/chip/test/{chip-group.test.js → chip-group.test.ts} +0 -0
  525. /package/src/components/chip/test/{chip-link.test.js → chip-link.test.ts} +0 -0
  526. /package/src/components/chip/test/{chip-removable.test.js → chip-removable.test.ts} +0 -0
  527. /package/src/components/chip/test/{chip-selectable.test.js → chip-selectable.test.ts} +0 -0
  528. /package/src/components/chip/test/{chip.test.js → chip.test.ts} +0 -0
  529. /package/src/components/dialog/stories/{dialog.stories.js → dialog.stories.ts} +0 -0
  530. /package/src/components/dialog/test/{dialog.test.js → dialog.test.ts} +0 -0
  531. /package/src/components/dropdown/stories/{dropdown.stories.js → dropdown.stories.ts} +0 -0
  532. /package/src/components/dropdown/test/{dropdown.test.js → dropdown.test.ts} +0 -0
  533. /package/src/components/icon/{paths.js → paths.ts} +0 -0
  534. /package/src/components/icon/test/{icon.test.js → icon.test.ts} +0 -0
  535. /package/src/components/input/stories/{input.stories.js → input.stories.ts} +0 -0
  536. /package/src/components/input/test/{input.test.js → input.test.ts} +0 -0
  537. /package/src/components/menu/stories/{menu-item.stories.js → menu-item.stories.ts} +0 -0
  538. /package/src/components/menu/stories/{menu.stories.js → menu.stories.ts} +0 -0
  539. /package/src/components/menu/test/{menu-item.test.js → menu-item.test.ts} +0 -0
  540. /package/src/components/menu/test/{menu.test.js → menu.test.ts} +0 -0
  541. /package/src/components/pagination/test/{pagination.test.js → pagination.test.ts} +0 -0
  542. /package/src/components/popup/stories/{popup.stories.js → popup.stories.ts} +0 -0
  543. /package/src/components/popup/test/{popup.test.js → popup.test.ts} +0 -0
  544. /package/src/components/radio/stories/{radio-group.stories.js → radio-group.stories.ts} +0 -0
  545. /package/src/components/radio/stories/{radio.stories.js → radio.stories.ts} +0 -0
  546. /package/src/components/radio/test/{radio-group.test.js → radio-group.test.ts} +0 -0
  547. /package/src/components/radio/test/{radio.test.js → radio.test.ts} +0 -0
  548. /package/src/components/range/{Range.js → Range.ts} +0 -0
  549. /package/src/components/range/stories/{range-slider.stories.js → range-slider.stories.ts} +0 -0
  550. /package/src/components/range/test/{range-test.js → range.test.ts} +0 -0
  551. /package/src/components/scroll-top/stories/{scroll-top.stories.js → scroll-top.stories.ts} +0 -0
  552. /package/src/components/scroll-top/test/{scroll-top.test.js → scroll-top.test.ts} +0 -0
  553. /package/src/components/select/stories/{select.stories.js → select.stories.ts} +0 -0
  554. /package/src/components/select/test/{select.test.js → select.test.ts} +0 -0
  555. /package/src/components/spinner/{Spinner.js → Spinner.ts} +0 -0
  556. /package/src/components/spinner/stories/{spinner.stories.js → spinner.stories.ts} +0 -0
  557. /package/src/components/spinner/test/{spinner.test.js → spinner.test.ts} +0 -0
  558. /package/src/components/table/stories/{table.stories.js → table.stories.ts} +0 -0
  559. /package/src/components/table/test/{table.test.js → table.test.ts} +0 -0
  560. /package/src/components/visually-hidden/stories/{visually-hidden.stories.js → visually-hidden.stories.ts} +0 -0
  561. /package/src/components/visually-hidden/test/{visually-hidden.test.js → visually-hidden.test.ts} +0 -0
  562. /package/src/lib/{utils.js → utils.ts} +0 -0
  563. /package/src/styles/{style.stories.js → style.stories.ts} +0 -0
package/rollup.config.js CHANGED
@@ -3,8 +3,9 @@ import path from "path"
3
3
  import { fileURLToPath } from "url"
4
4
  import postcss from "rollup-plugin-postcss"
5
5
  import postcssLit from "rollup-plugin-postcss-lit"
6
- import { babel } from "@rollup/plugin-babel"
7
6
  import replace from "@rollup/plugin-replace"
7
+ import typescript from "rollup-plugin-typescript2"
8
+ import { dts } from "rollup-plugin-dts"
8
9
 
9
10
  export const plugins = [
10
11
  {
@@ -35,30 +36,59 @@ export const plugins = [
35
36
  /**
36
37
  * @type {import("rollup").RollupOptions}
37
38
  */
38
- export default {
39
- // Select all files in a direct subdirectory of src/components
40
- // that have a name starting with
41
- // - a capital letter
42
- // - or "leu-"
43
- input: {
44
- index: "index.js",
45
- ...Object.fromEntries(
46
- globSync("src/components/*/{[A-Z],leu-}*.js", { nocase: false }).map(
47
- (file) => [
48
- path.basename(file, path.extname(file)),
49
- fileURLToPath(new URL(file, import.meta.url)),
50
- ],
39
+ export default [
40
+ {
41
+ // Select all files in a direct subdirectory of src/components
42
+ // that have a name starting with
43
+ // - a capital letter
44
+ // - or "leu-"
45
+ input: {
46
+ index: "src/index.ts",
47
+ ...Object.fromEntries(
48
+ globSync("src/components/*/{[A-Z],leu-}*.ts", { nocase: false }).map(
49
+ (file) => [
50
+ path.basename(file, path.extname(file)),
51
+ fileURLToPath(new URL(file, import.meta.url)),
52
+ ],
53
+ ),
51
54
  ),
52
- ),
55
+ },
56
+ output: {
57
+ dir: "./dist/",
58
+ format: "esm",
59
+ entryFileNames: "[name].js",
60
+ },
61
+ plugins: [
62
+ typescript({
63
+ tsconfig: fileURLToPath(
64
+ new URL("./tsconfig.build.json", import.meta.url),
65
+ ),
66
+ tsconfigOverride: {
67
+ compilerOptions: {
68
+ declarationMap: false,
69
+ emitDeclarationOnly: false,
70
+ declaration: false,
71
+ },
72
+ },
73
+ }),
74
+ ...plugins.map((p) => p.plugin(...p.args)),
75
+ ],
76
+ external: [/^lit(\/.*\.js)?$/, "@floating-ui/dom"],
53
77
  },
54
- output: {
55
- dir: "./dist/",
56
- format: "esm",
57
- entryFileNames: "[name].js",
78
+ {
79
+ input: {
80
+ ...Object.fromEntries(
81
+ globSync("dist/components/*/{[A-Z],leu-}*.d.ts", { nocase: false }).map(
82
+ (file) => [
83
+ path.basename(file, ".d.ts"),
84
+ fileURLToPath(new URL(file, import.meta.url)),
85
+ ],
86
+ ),
87
+ ),
88
+ },
89
+ output: {
90
+ dir: "./dist/",
91
+ },
92
+ plugins: [dts()],
58
93
  },
59
- plugins: [
60
- babel({ babelHelpers: "bundled" }),
61
- ...plugins.map((p) => p.plugin(...p.args)),
62
- ],
63
- external: [/^lit(\/.*\.js)?$/, "@floating-ui/dom"],
64
- }
94
+ ]
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- /* eslint-disable no-use-before-define */
2
+ /* eslint-disable @typescript-eslint/no-use-before-define */
3
3
 
4
4
  import arg from "arg"
5
5
  import fs from "fs"
@@ -1,4 +1,5 @@
1
1
  import { html } from "lit"
2
+ import { property } from "lit/decorators.js"
2
3
 
3
4
  import { LeuElement } from "../../lib/LeuElement.js"
4
5
 
@@ -15,9 +16,8 @@ export class Leu[Name] extends LeuElement {
15
16
  delegatesFocus: true,
16
17
  }
17
18
 
18
- static properties = {
19
- value: { type: String },
20
- }
19
+ @property({ type: String })
20
+ value: string = ""
21
21
 
22
22
  constructor() {
23
23
  super()
@@ -0,0 +1,26 @@
1
+ import { Meta, StoryObj } from "@storybook/web-components"
2
+ import { html } from "lit"
3
+
4
+ import "../[namespace]-[name].js"
5
+ import {[Namespace][Name]} from "../[Name].js"
6
+
7
+ type StoryArgs = [Namespace][Name]
8
+ type Story = StoryObj<StoryArgs>
9
+
10
+ export default {
11
+ title: "Components/[Name]",
12
+ component: "[namespace]-[name]",
13
+ } satisfies Meta<StoryArgs>
14
+
15
+ const Template: Story = {
16
+ render: ({}) => {
17
+ return html` <[namespace]-[name]></[namespace]-[name]>`
18
+ }
19
+ }
20
+
21
+ export const Regular = {
22
+ ...Template,
23
+ args: {
24
+ // Add default args here
25
+ }
26
+ }
@@ -1,17 +1,14 @@
1
1
  import { nothing } from "lit"
2
2
  import { html, unsafeStatic } from "lit/static-html.js"
3
+ import { property } from "lit/decorators.js"
4
+
3
5
  import { LeuElement } from "../../lib/LeuElement.js"
4
6
 
5
- // @ts-ignore
6
7
  import styles from "./accordion.css"
7
8
 
8
9
  /**
9
10
  * @tagname leu-accordion
10
11
  * @slot content - The content of the accordion. No styles will be applied to the content.
11
- * @prop {number} headingLevel - The heading level of the accordion title. Must be between 1 and 6.
12
- * @prop {boolean} open - The expanded state of the accordion.
13
- * @prop {string} label - The label (title) of the accordion.
14
- * @prop {string} labelPrefix - The prefix of the accordion label. e.g. "01"
15
12
  * @attr {number} heading-level - The heading level of the accordion title. Must be between 1 and 6.
16
13
  * @attr {string} label-prefix - The prefix of the accordion label. e.g. "01"
17
14
  */
@@ -24,29 +21,37 @@ export class LeuAccordion extends LeuElement {
24
21
  delegatesFocus: true,
25
22
  }
26
23
 
27
- static properties = {
28
- headingLevel: { type: Number, attribute: "heading-level", reflect: true },
29
- open: { type: Boolean, reflect: true },
30
- label: { type: String, reflect: true },
31
- labelPrefix: { type: String, attribute: "label-prefix", reflect: true },
32
- }
24
+ /**
25
+ * The heading level of the accordion title. Must be between 1 and 6.
26
+ */
27
+ @property({ type: Number, attribute: "heading-level", reflect: true })
28
+ headingLevel = 2
33
29
 
34
- constructor() {
35
- super()
36
- this.headingLevel = 2
37
- this.open = false
38
- this.label = ""
39
- this.labelPrefix = ""
40
- }
30
+ /**
31
+ * The expanded state of the accordion.
32
+ */
33
+ @property({ type: Boolean, reflect: true })
34
+ open = false
35
+
36
+ /**
37
+ * The label (title) of the accordion
38
+ */
39
+ @property({ type: String, reflect: true })
40
+ label = ""
41
+
42
+ /**
43
+ * The prefix of the accordion label. e.g. "01"
44
+ */
45
+ @property({ type: String, attribute: "label-prefix", reflect: true })
46
+ labelPrefix = ""
41
47
 
42
48
  /**
43
49
  * Determines the heading tag of the accordion toggle.
44
50
  * The headingLevel shouldn't be used directly to render the heading tag
45
51
  * in order to avoid XSS issues.
46
- * @returns {string} The heading tag of the accordion toggle.
47
52
  * @internal
48
53
  */
49
- _getHeadingTag() {
54
+ private _getHeadingTag(): string {
50
55
  let level = 2
51
56
  if (this.headingLevel > 0 && this.headingLevel < 7) {
52
57
  level = Math.floor(this.headingLevel)
@@ -59,7 +64,7 @@ export class LeuAccordion extends LeuElement {
59
64
  * Toggles the accordion open state.
60
65
  * @internal
61
66
  */
62
- _handleToggleClick() {
67
+ private _handleToggleClick() {
63
68
  this.open = !this.open
64
69
  }
65
70
 
@@ -3,3 +3,9 @@ import { LeuAccordion } from "./Accordion.js"
3
3
  export { LeuAccordion }
4
4
 
5
5
  LeuAccordion.define("leu-accordion")
6
+
7
+ declare global {
8
+ interface HTMLElementTagNameMap {
9
+ "leu-accordion": LeuAccordion
10
+ }
11
+ }
@@ -26,14 +26,16 @@ export default {
26
26
  }
27
27
 
28
28
  function Template(args) {
29
- return html` <leu-accordion
30
- heading-level=${ifDefined(args["heading-level"])}
31
- label=${ifDefined(args.label)}
32
- label-prefix=${ifDefined(args["label-prefix"])}
33
- ?open=${args.open}
34
- >
35
- <div slot="content">${args.content}</div>
36
- </leu-accordion>`
29
+ return html`
30
+ <leu-accordion
31
+ heading-level=${ifDefined(args["heading-level"])}
32
+ label=${ifDefined(args.label)}
33
+ label-prefix=${ifDefined(args["label-prefix"])}
34
+ ?open=${args.open}
35
+ >
36
+ <div slot="content">${args.content}</div>
37
+ </leu-accordion>
38
+ `
37
39
  }
38
40
 
39
41
  export const Regular = Template.bind({})
@@ -1,40 +1,21 @@
1
1
  import { html, nothing } from "lit"
2
2
  import { classMap } from "lit/directives/class-map.js"
3
3
  import { ifDefined } from "lit/directives/if-defined.js"
4
+ import { property } from "lit/decorators.js"
4
5
 
5
6
  import { LeuIcon } from "../icon/Icon.js"
6
7
  import { LeuElement } from "../../lib/LeuElement.js"
7
8
  import { HasSlotController } from "../../lib/hasSlotController.js"
8
9
  import { ARIA_CHECKED_ROLES, ARIA_SELECTED_ROLES } from "../../lib/a11y.js"
9
10
 
10
- // @ts-ignore
11
11
  import styles from "./button.css"
12
12
 
13
- /*
14
- Design: https://www.figma.com/file/d6Pv21UVUbnBs3AdcZijHmbN/KTZH-Design-System?type=design&node-id=4-1444&mode=design&t=xu5Vii8jXKKCKDez-0
15
- Live Demo: zh.ch
16
- */
17
-
18
- const BUTTON_VARIANTS = ["primary", "secondary", "ghost"]
19
- Object.freeze(BUTTON_VARIANTS)
20
- export { BUTTON_VARIANTS }
21
-
22
- const BUTTON_SIZES = ["regular", "small"]
23
- Object.freeze(BUTTON_SIZES)
24
- export { BUTTON_SIZES }
25
-
26
- const BUTTON_TYPES = ["button", "submit", "reset"]
27
- Object.freeze(BUTTON_TYPES)
28
- export { BUTTON_TYPES }
29
-
30
- export const BUTTON_EXPANDED_OPTIONS = ["true", "false"]
31
- Object.freeze(BUTTON_EXPANDED_OPTIONS)
32
-
33
13
  /**
34
14
  * @tagname leu-button
35
15
  * @slot before - The icon to display before the label
36
16
  * @slot after - The icon to display after the label
37
17
  * @slot - The label of the button or the icon if no label is set
18
+ * @see https://www.figma.com/file/d6Pv21UVUbnBs3AdcZijHmbN/KTZH-Design-System?type=design&node-id=4-1444&mode=design&t=xu5Vii8jXKKCKDez-0
38
19
  */
39
20
  export class LeuButton extends LeuElement {
40
21
  static dependencies = {
@@ -43,72 +24,92 @@ export class LeuButton extends LeuElement {
43
24
 
44
25
  static styles = [LeuElement.styles, styles]
45
26
 
46
- /**
47
- * @internal
48
- */
49
27
  static shadowRootOptions = {
50
28
  ...LeuElement.shadowRootOptions,
51
29
  delegatesFocus: true,
52
30
  }
53
31
 
54
- /**
55
- * @internal
56
- */
57
- hasSlotController = new HasSlotController(this, [
32
+ private hasSlotController = new HasSlotController(this, [
58
33
  "before",
59
34
  "after",
60
35
  "[default]",
61
36
  ])
62
37
 
63
- static properties = {
64
- label: { type: String, reflect: true },
65
- size: { type: String, reflect: true },
66
- variant: { type: String, reflect: true },
67
- type: { type: String, reflect: true },
68
- componentRole: { type: String, reflect: true },
69
-
70
- disabled: { type: Boolean, reflect: true },
71
- round: { type: Boolean, reflect: true },
72
- active: { type: Boolean, reflect: true },
73
- inverted: { type: Boolean, reflect: true },
74
- expanded: { type: String, reflect: true },
75
- fluid: { type: Boolean, reflect: true },
76
- }
38
+ /**
39
+ * `aria-label` of the underlying button elements.
40
+ * Use it to provide a label when only an icon is visible.
41
+ */
42
+ @property({ type: String, reflect: true })
43
+ label: null | string = null
77
44
 
78
- constructor() {
79
- super()
80
- /** @type {string} */
81
- this.label = null
82
- /** @type {string} */
83
- this.size = "regular"
84
- /** @type {string} */
85
- this.variant = "primary"
86
- /** @type {"button" | "submit" | "reset"} */
87
- this.type = "button"
88
-
89
- /** @type {string} */
90
- this.componentRole = undefined
91
-
92
- /** @type {boolean} */
93
- this.disabled = false
94
- /** @type {boolean} - Only taken into account if no Label and an Icon is set */
95
- this.round = false
96
- /** @type {boolean} */
97
- this.active = false
98
- /** @type {boolean} - will be used on dark Background */
99
- this.inverted = false
100
-
101
- /** @type {boolean} - Alters the shape of the button to be full width of its parent container */
102
- this.fluid = false
103
-
104
- /**
105
- * Only taken into account if variant is "ghost"
106
- * @type {("true" | "false" | undefined)}
107
- */
108
- this.expanded = undefined
109
- }
45
+ /**
46
+ * The size of the button.
47
+ */
48
+ @property({ type: String, reflect: true })
49
+ size: "regular" | "small" = "regular"
50
+
51
+ /**
52
+ * The visual variant of the button.
53
+ */
54
+ @property({ type: String, reflect: true })
55
+ variant: "primary" | "secondary" | "ghost" = "primary"
56
+
57
+ /**
58
+ * The `type` of the underlying button element.
59
+ */
60
+ @property({ type: String, reflect: true })
61
+ type: "button" | "submit" | "reset" = "button"
62
+
63
+ /**
64
+ * The `role` of the underlying button element.
65
+ */
66
+ @property({ type: String, reflect: true })
67
+ componentRole?: string
68
+
69
+ /**
70
+ * Whether the button is disabled or not.
71
+ * @type {boolean}
72
+ */
73
+ @property({ type: Boolean, reflect: true })
74
+ disabled: boolean = false
75
+
76
+ /**
77
+ * Whether the button should be round.
78
+ * Can only be applied when the button contains an icon without a visible label.
79
+ * @type {boolean}
80
+ */
81
+ @property({ type: Boolean, reflect: true })
82
+ round: boolean = false
83
+
84
+ /**
85
+ * Whether the button is active or not.
86
+ * Depending on the `componentRole`, it applies `aria-checked` or `aria-selected` to the underlying button element.
87
+ */
88
+ @property({ type: Boolean, reflect: true })
89
+ active: boolean = false
90
+
91
+ /**
92
+ * Wheter the colors should be inverted. For use on dark backgrounds.
93
+ */
94
+ @property({ type: Boolean, reflect: true })
95
+ inverted: boolean = false
96
+
97
+ /**
98
+ * Whether the button is expanded or not.
99
+ * Only has an effect on the variant `ghost` to show an expanding icon.
100
+ * If the property is not set, the icon will not be shown.
101
+ * If it is set, the icon will either show an expanded or collapsed state.
102
+ */
103
+ @property({ type: String, reflect: true })
104
+ expanded?: "true" | "false"
105
+
106
+ /**
107
+ * Alters the shape of the button to be full width of its parent container
108
+ */
109
+ @property({ type: Boolean, reflect: true })
110
+ fluid: boolean = false
110
111
 
111
- renderExpandingIcon() {
112
+ private renderExpandingIcon() {
112
113
  if (typeof this.expanded !== "undefined" && this.variant === "ghost") {
113
114
  return html`<div class="icon-expanded">
114
115
  <leu-icon name="angleDropDown" size="24"></leu-icon>
@@ -118,16 +119,30 @@ export class LeuButton extends LeuElement {
118
119
  return nothing
119
120
  }
120
121
 
121
- getAriaAttributes() {
122
- const attributes = {
122
+ private getAriaAttributes() {
123
+ const attributes: {
124
+ role: string
125
+ label: string
126
+ checked?: "true" | "false"
127
+ selected?: "true" | "false"
128
+ } = {
123
129
  role: this.componentRole,
124
130
  label: this.label,
125
131
  }
126
132
 
133
+ // TODO: checked and selected roles are not mutually exclusive
127
134
  if (this.componentRole) {
128
- if (ARIA_CHECKED_ROLES.includes(this.componentRole)) {
135
+ if (
136
+ (ARIA_CHECKED_ROLES as ReadonlyArray<string>).includes(
137
+ this.componentRole,
138
+ )
139
+ ) {
129
140
  attributes.checked = this.active ? "true" : "false"
130
- } else if (ARIA_SELECTED_ROLES.includes(this.componentRole)) {
141
+ } else if (
142
+ (ARIA_SELECTED_ROLES as ReadonlyArray<string>).includes(
143
+ this.componentRole,
144
+ )
145
+ ) {
131
146
  attributes.selected = this.active ? "true" : "false"
132
147
  }
133
148
  }
@@ -135,7 +150,7 @@ export class LeuButton extends LeuElement {
135
150
  return attributes
136
151
  }
137
152
 
138
- hasTextContent() {
153
+ private hasTextContent() {
139
154
  return Array.from(this.childNodes).some(
140
155
  (node) =>
141
156
  node.nodeType === node.TEXT_NODE && node.textContent.trim() !== "",
@@ -3,3 +3,9 @@ import { LeuButton } from "./Button.js"
3
3
  export { LeuButton }
4
4
 
5
5
  LeuButton.define("leu-button")
6
+
7
+ declare global {
8
+ interface HTMLElementTagNameMap {
9
+ "leu-button": LeuButton
10
+ }
11
+ }
@@ -4,12 +4,11 @@ import { classMap } from "lit/directives/class-map.js"
4
4
  import "../leu-button.js"
5
5
  import "../../icon/leu-icon.js"
6
6
  import { paths as iconPaths } from "../../icon/paths.js"
7
- import {
8
- BUTTON_VARIANTS,
9
- BUTTON_TYPES,
10
- BUTTON_SIZES,
11
- BUTTON_EXPANDED_OPTIONS,
12
- } from "../Button.js"
7
+
8
+ const BUTTON_VARIANTS = ["primary", "secondary", "ghost"] as const
9
+ const BUTTON_SIZES = ["regular", "small"] as const
10
+ const BUTTON_TYPES = ["button", "submit", "reset"] as const
11
+ const BUTTON_EXPANDED_OPTIONS = ["true", "false"] as const
13
12
 
14
13
  function copyContent(e) {
15
14
  navigator.clipboard.writeText(e.target.outerHTML.replace(/<!--.*?-->/g, ""))
@@ -1,32 +1,32 @@
1
1
  import { html } from "lit"
2
+
2
3
  import { LeuElement } from "../../lib/LeuElement.js"
4
+ import { LeuButton } from "../button/Button.js"
3
5
 
4
- // @ts-ignore
5
6
  import styles from "./button-group.css"
6
7
 
7
8
  /**
9
+ * A radio input-like button group component.
10
+ * It allows only one button to be active at a time.
8
11
  * @tagname leu-button-group
9
12
  * @slot - Slot for the buttons
10
- * @prop {string} value - The value of the currenty selected (active) button
11
13
  * @fires input - When the value of the group changes by clicking a button
12
14
  */
13
15
  export class LeuButtonGroup extends LeuElement {
14
16
  static styles = [LeuElement.styles, styles]
15
17
 
16
- constructor() {
17
- super()
18
-
19
- this._items = []
20
- }
18
+ private _items: LeuButton[] = []
21
19
 
22
20
  /**
23
- * @param {import("../button/Button").LeuButton} button
24
- * @returns {string}
21
+ * Retrieves the value or the text content of a given LeuButton element.
25
22
  */
26
- static getButtonValue(button) {
27
- return button.getAttribute("value") ?? button.innerText.trim()
23
+ private static getButtonValue(button: LeuButton) {
24
+ return button.getAttribute("value") ?? button.textContent.trim()
28
25
  }
29
26
 
27
+ /**
28
+ * The value of the currently selected (active) button
29
+ */
30
30
  get value() {
31
31
  const activeButton = this._items.find((item) => item.active)
32
32
  return activeButton ? LeuButtonGroup.getButtonValue(activeButton) : null
@@ -40,7 +40,7 @@ export class LeuButtonGroup extends LeuElement {
40
40
  })
41
41
  }
42
42
 
43
- _handleSlotChange() {
43
+ private _handleSlotChange() {
44
44
  /**
45
45
  * Remove all event listeners that were added before.
46
46
  * Just because a slotchange event was fired, it doesn't mean that all of the
@@ -51,13 +51,15 @@ export class LeuButtonGroup extends LeuElement {
51
51
  })
52
52
 
53
53
  const slot = this.shadowRoot.querySelector("slot")
54
- this._items = slot.assignedElements({ flatten: true })
54
+ this._items = slot
55
+ .assignedElements({ flatten: true })
56
+ .filter((el) => el instanceof LeuButton)
55
57
 
56
58
  let foundActiveButtonBefore = false
57
59
 
58
60
  this._items.forEach((item) => {
59
61
  /* eslint-disable no-param-reassign */
60
- item.addEventListener("click", () => this._handleButtonClick(item))
62
+ item.addEventListener("click", this._handleButtonClick)
61
63
  item.componentRole = "menuitemradio"
62
64
 
63
65
  /**
@@ -74,10 +76,9 @@ export class LeuButtonGroup extends LeuElement {
74
76
  })
75
77
  }
76
78
 
77
- /**
78
- * @param {import("../button/Button").LeuButton} button
79
- */
80
- _handleButtonClick(button) {
79
+ private _handleButtonClick = (event: MouseEvent) => {
80
+ const button = event.currentTarget as LeuButton
81
+
81
82
  if (!button.active) {
82
83
  this.value = LeuButtonGroup.getButtonValue(button)
83
84
 
@@ -3,3 +3,9 @@ import { LeuButtonGroup } from "./ButtonGroup.js"
3
3
  export { LeuButtonGroup }
4
4
 
5
5
  LeuButtonGroup.define("leu-button-group")
6
+
7
+ declare global {
8
+ interface HTMLElementTagNameMap {
9
+ "leu-button-group": LeuButtonGroup
10
+ }
11
+ }