@statistikzh/leu 0.24.1 → 0.25.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 (536) hide show
  1. package/.github/workflows/publish.yml +1 -8
  2. package/.release-please-manifest.json +1 -1
  3. package/.storybook/main.ts +18 -53
  4. package/.storybook/manager.ts +1 -4
  5. package/.storybook/preview.ts +23 -16
  6. package/.storybook/theme.ts +1 -1
  7. package/CHANGELOG.md +21 -0
  8. package/dist/Accordion-CDNyrB8d.js +241 -0
  9. package/dist/Accordion.d.ts +44 -44
  10. package/dist/Accordion.js +2 -249
  11. package/dist/Button-DSGPIcjm.d.ts +93 -0
  12. package/dist/Button-EdS9xr2J.js +524 -0
  13. package/dist/Button.d.ts +2 -85
  14. package/dist/Button.js +4 -504
  15. package/dist/ButtonGroup-BQqf8o_d.js +88 -0
  16. package/dist/ButtonGroup.d.ts +19 -19
  17. package/dist/ButtonGroup.js +5 -101
  18. package/dist/ChartWrapper-LiNHTNRw.js +158 -0
  19. package/dist/ChartWrapper.d.ts +26 -26
  20. package/dist/ChartWrapper.js +3 -163
  21. package/dist/Checkbox-BtDWmPab.js +198 -0
  22. package/dist/Checkbox.d.ts +35 -27
  23. package/dist/Checkbox.js +4 -157
  24. package/dist/CheckboxGroup-C8MbwW9u.js +81 -0
  25. package/dist/CheckboxGroup.d.ts +18 -18
  26. package/dist/CheckboxGroup.js +5 -82
  27. package/dist/Chip-Ch09jjYi.js +171 -0
  28. package/dist/Chip-DLKM9P7v.d.ts +18 -0
  29. package/dist/Chip.d.ts +2 -18
  30. package/dist/Chip.js +2 -166
  31. package/dist/ChipGroup-PvqVW-tm.js +125 -0
  32. package/dist/ChipGroup-Ta8Ht4jc.d.ts +42 -0
  33. package/dist/ChipGroup.d.ts +2 -43
  34. package/dist/ChipGroup.js +3 -132
  35. package/dist/ChipLink-BAxyQO2M.d.ts +17 -0
  36. package/dist/ChipLink.d.ts +2 -18
  37. package/dist/ChipLink.js +28 -28
  38. package/dist/ChipRemovable-DBjwt0CH.d.ts +25 -0
  39. package/dist/ChipRemovable.d.ts +2 -26
  40. package/dist/ChipRemovable.js +42 -43
  41. package/dist/ChipSelectable-CMJNcE4U.d.ts +32 -0
  42. package/dist/ChipSelectable.d.ts +2 -33
  43. package/dist/ChipSelectable.js +63 -72
  44. package/dist/Dialog-CV1JTkCn.js +241 -0
  45. package/dist/Dialog.d.ts +28 -28
  46. package/dist/Dialog.js +3 -240
  47. package/dist/Dropdown-DpFdFbA1.js +155 -0
  48. package/dist/Dropdown.d.ts +39 -41
  49. package/dist/Dropdown.js +8 -157
  50. package/dist/FileInput-5apX17JT.js +344 -0
  51. package/dist/FileInput.d.ts +56 -57
  52. package/dist/FileInput.js +6 -383
  53. package/dist/FormAssociatedMixin-BbFlza53.js +58 -0
  54. package/dist/FormAssociatedMixin-Cc74LjbC.d.ts +22 -0
  55. package/dist/Icon-DhAvH0XM.js +186 -0
  56. package/dist/Icon-Op80LrrO.d.ts +151 -0
  57. package/dist/Icon.d.ts +2 -4
  58. package/dist/Icon.js +2 -188
  59. package/dist/Input-CnEz-2dK.js +610 -0
  60. package/dist/Input-D2THgo7c.d.ts +169 -0
  61. package/dist/Input.d.ts +2 -166
  62. package/dist/Input.js +4 -626
  63. package/dist/LeuElement-B7NJzWwP.js +46 -0
  64. package/dist/LeuElement-pJFU18Xm.d.ts +11 -0
  65. package/dist/Menu-CQdx1ef3.d.ts +43 -0
  66. package/dist/Menu-DpiheIPk.js +136 -0
  67. package/dist/Menu.d.ts +2 -44
  68. package/dist/Menu.js +4 -157
  69. package/dist/MenuItem-CZTqGg5R.js +219 -0
  70. package/dist/MenuItem-QcgnRk_7.d.ts +63 -0
  71. package/dist/MenuItem.d.ts +2 -64
  72. package/dist/MenuItem.js +3 -227
  73. package/dist/Message-J4Kj7yHE.js +252 -0
  74. package/dist/Message.d.ts +53 -53
  75. package/dist/Message.js +3 -267
  76. package/dist/Pagination-Be8TcBoC.d.ts +76 -0
  77. package/dist/Pagination-CWqgusWZ.js +226 -0
  78. package/dist/Pagination.d.ts +2 -76
  79. package/dist/Pagination.js +6 -240
  80. package/dist/Placeholder-DMN6sMbp.js +95 -0
  81. package/dist/Placeholder.d.ts +15 -15
  82. package/dist/Placeholder.js +2 -89
  83. package/dist/Popup-Btgm2a3D.d.ts +61 -0
  84. package/dist/Popup-JQjuj26v.js +195 -0
  85. package/dist/Popup.d.ts +2 -62
  86. package/dist/Popup.js +2 -233
  87. package/dist/ProgressBar-CzN3fqiH.js +167 -0
  88. package/dist/ProgressBar.d.ts +21 -21
  89. package/dist/ProgressBar.js +2 -165
  90. package/dist/Radio-CX8aCsff.js +160 -0
  91. package/dist/Radio.d.ts +22 -22
  92. package/dist/Radio.js +2 -151
  93. package/dist/RadioGroup-CgEWQnC4.js +171 -0
  94. package/dist/RadioGroup.d.ts +35 -35
  95. package/dist/RadioGroup.js +3 -182
  96. package/dist/Range-DoW_ZdKm.js +496 -0
  97. package/dist/Range.d.ts +112 -112
  98. package/dist/Range.js +2 -586
  99. package/dist/ScrollTop-DxChetWq.js +130 -0
  100. package/dist/ScrollTop.d.ts +21 -21
  101. package/dist/ScrollTop.js +5 -118
  102. package/dist/Select-BCx79gOH.js +618 -0
  103. package/dist/Select.d.ts +130 -132
  104. package/dist/Select.js +9 -675
  105. package/dist/Spinner-CMo_o6Fy.d.ts +14 -0
  106. package/dist/Spinner-DJR4gv3Y.js +56 -0
  107. package/dist/Spinner.d.ts +2 -14
  108. package/dist/Spinner.js +2 -52
  109. package/dist/Table-DZz1ic3j.js +392 -0
  110. package/dist/Table.d.ts +61 -63
  111. package/dist/Table.js +7 -427
  112. package/dist/Tag-DsZS_8pl.js +76 -0
  113. package/dist/Tag.d.ts +8 -8
  114. package/dist/Tag.js +2 -74
  115. package/dist/VisuallyHidden-BkllVjlz.js +29 -0
  116. package/dist/VisuallyHidden-OeQvhxYn.d.ts +13 -0
  117. package/dist/VisuallyHidden.d.ts +2 -13
  118. package/dist/VisuallyHidden.js +2 -25
  119. package/dist/decorate-DwpAc4D0.js +9 -0
  120. package/dist/hasSlotController-BLtZurRh.d.ts +19 -0
  121. package/dist/hasSlotController-DjdfnOQp.js +38 -0
  122. package/dist/index.d.ts +33 -30
  123. package/dist/index.js +35 -45
  124. package/dist/leu-accordion.d.ts +7 -10
  125. package/dist/leu-accordion.js +4 -8
  126. package/dist/leu-button-group.d.ts +7 -10
  127. package/dist/leu-button-group.js +7 -12
  128. package/dist/leu-button.d.ts +7 -11
  129. package/dist/leu-button.js +6 -11
  130. package/dist/leu-chart-wrapper.d.ts +7 -12
  131. package/dist/leu-chart-wrapper.js +5 -9
  132. package/dist/leu-checkbox-group.d.ts +7 -10
  133. package/dist/leu-checkbox-group.js +7 -10
  134. package/dist/leu-checkbox.d.ts +7 -11
  135. package/dist/leu-checkbox.js +6 -8
  136. package/dist/leu-chip-group.d.ts +7 -12
  137. package/dist/leu-chip-group.js +5 -10
  138. package/dist/leu-chip-link.d.ts +7 -11
  139. package/dist/leu-chip-link.js +5 -8
  140. package/dist/leu-chip-removable.d.ts +7 -12
  141. package/dist/leu-chip-removable.js +6 -9
  142. package/dist/leu-chip-selectable.d.ts +7 -11
  143. package/dist/leu-chip-selectable.js +5 -8
  144. package/dist/leu-dialog.d.ts +7 -13
  145. package/dist/leu-dialog.js +5 -11
  146. package/dist/leu-dropdown.d.ts +7 -18
  147. package/dist/leu-dropdown.js +10 -17
  148. package/dist/leu-file-input.d.ts +7 -13
  149. package/dist/leu-file-input.js +8 -13
  150. package/dist/leu-icon.d.ts +7 -10
  151. package/dist/leu-icon.js +4 -7
  152. package/dist/leu-input.d.ts +7 -12
  153. package/dist/leu-input.js +6 -12
  154. package/dist/leu-menu-item.d.ts +7 -11
  155. package/dist/leu-menu-item.js +5 -9
  156. package/dist/leu-menu.d.ts +7 -12
  157. package/dist/leu-menu.js +6 -10
  158. package/dist/leu-message.d.ts +7 -11
  159. package/dist/leu-message.js +5 -10
  160. package/dist/leu-pagination.d.ts +7 -13
  161. package/dist/leu-pagination.js +8 -14
  162. package/dist/leu-placeholder.d.ts +7 -10
  163. package/dist/leu-placeholder.js +4 -5
  164. package/dist/leu-popup.d.ts +7 -11
  165. package/dist/leu-popup.js +4 -8
  166. package/dist/leu-progress-bar.d.ts +7 -10
  167. package/dist/leu-progress-bar.js +4 -8
  168. package/dist/leu-radio-group.d.ts +7 -10
  169. package/dist/leu-radio-group.js +5 -9
  170. package/dist/leu-radio.d.ts +7 -10
  171. package/dist/leu-radio.js +4 -7
  172. package/dist/leu-range.d.ts +7 -10
  173. package/dist/leu-range.js +4 -9
  174. package/dist/leu-scroll-top.d.ts +7 -12
  175. package/dist/leu-scroll-top.js +7 -13
  176. package/dist/leu-select.d.ts +7 -19
  177. package/dist/leu-select.js +11 -19
  178. package/dist/leu-spinner.d.ts +7 -10
  179. package/dist/leu-spinner.js +4 -5
  180. package/dist/leu-table.d.ts +7 -14
  181. package/dist/leu-table.js +9 -17
  182. package/dist/leu-tag.d.ts +7 -10
  183. package/dist/leu-tag.js +4 -7
  184. package/dist/leu-visually-hidden.d.ts +7 -10
  185. package/dist/leu-visually-hidden.js +4 -5
  186. package/dist/theme.css +1 -0
  187. package/dist/utils-hfk5Nwy8.js +28 -0
  188. package/dist/vscode.html-custom-data.json +43 -49
  189. package/dist/vue/index.d.ts +54 -60
  190. package/dist/web-types.json +89 -105
  191. package/eslint.config.mjs +79 -0
  192. package/package.json +45 -62
  193. package/scripts/generate-component/templates/stories/[name].stories.ts +1 -1
  194. package/src/components/accordion/Accordion.ts +1 -1
  195. package/src/components/button/Button.ts +62 -3
  196. package/src/components/button/test/button.test.ts +185 -7
  197. package/src/components/button-group/ButtonGroup.ts +1 -6
  198. package/src/components/button-group/stories/button-group.stories.ts +1 -1
  199. package/src/components/chart-wrapper/ChartWrapper.ts +1 -1
  200. package/src/components/chart-wrapper/stories/chart-wrapper.stories.ts +1 -1
  201. package/src/components/checkbox/Checkbox.ts +76 -12
  202. package/src/components/checkbox/CheckboxGroup.ts +1 -1
  203. package/src/components/checkbox/checkbox.css +4 -0
  204. package/src/components/checkbox/stories/checkbox.stories.ts +26 -3
  205. package/src/components/checkbox/test/checkbox.test.ts +147 -3
  206. package/src/components/chip/Chip.ts +1 -1
  207. package/src/components/chip/ChipGroup.ts +2 -2
  208. package/src/components/chip/stories/chip-removable.stories.ts +1 -1
  209. package/src/components/chip/test/chip-removable.test.ts +2 -2
  210. package/src/components/dialog/Dialog.ts +1 -1
  211. package/src/components/dialog/stories/dialog.stories.ts +0 -2
  212. package/src/components/dropdown/Dropdown.ts +1 -1
  213. package/src/components/dropdown/stories/dropdown.stories.ts +1 -1
  214. package/src/components/file-input/FileInput.ts +18 -20
  215. package/src/components/file-input/stories/file-input.stories.ts +2 -2
  216. package/src/components/file-input/test/file-input.test.ts +14 -1
  217. package/src/components/icon/Icon.ts +1 -1
  218. package/src/components/input/Input.ts +18 -7
  219. package/src/components/input/stories/input.stories.ts +24 -21
  220. package/src/components/menu/Menu.ts +4 -4
  221. package/src/components/menu/MenuItem.ts +1 -1
  222. package/src/components/menu/stories/menu-item.stories.ts +0 -2
  223. package/src/components/message/Message.ts +1 -1
  224. package/src/components/message/stories/message.stories.ts +2 -2
  225. package/src/components/pagination/Pagination.ts +1 -1
  226. package/src/components/pagination/stories/pagination.stories.ts +3 -3
  227. package/src/components/pagination/test/pagination.test.ts +1 -1
  228. package/src/components/placeholder/Placeholder.ts +1 -1
  229. package/src/components/placeholder/stories/placeholder.stories.ts +1 -1
  230. package/src/components/popup/Popup.ts +1 -1
  231. package/src/components/progress-bar/ProgressBar.ts +1 -1
  232. package/src/components/progress-bar/stories/progress-bar.stories.ts +1 -1
  233. package/src/components/radio/Radio.ts +1 -1
  234. package/src/components/radio/RadioGroup.ts +5 -5
  235. package/src/components/range/Range.ts +1 -1
  236. package/src/components/range/stories/range.stories.ts +2 -2
  237. package/src/components/scroll-top/ScrollTop.ts +1 -1
  238. package/src/components/scroll-top/scroll-top.css +20 -4
  239. package/src/components/select/Select.ts +2 -5
  240. package/src/components/spinner/Spinner.ts +1 -1
  241. package/src/components/table/Table.ts +1 -1
  242. package/src/components/tag/Tag.ts +1 -1
  243. package/src/components/tag/stories/tag.stories.ts +1 -1
  244. package/src/components/visually-hidden/VisuallyHidden.ts +1 -1
  245. package/src/docs/contributing.mdx +1 -1
  246. package/src/docs/installation.mdx +1 -1
  247. package/src/docs/theme.mdx +1 -1
  248. package/src/docs/usage.mdx +1 -1
  249. package/src/global.d.ts +1 -1
  250. package/src/lib/LeuElement.ts +1 -1
  251. package/src/lib/mixins/FormAssociatedMixin.ts +115 -0
  252. package/src/lib/styleMap.ts +1 -1
  253. package/src/styles/theme.css +1 -0
  254. package/tsdown.config.ts +35 -0
  255. package/web-test-runner.config.mjs +20 -2
  256. package/.eslintrc.json +0 -57
  257. package/dist/Icon.d-itcQ94ym.d.ts +0 -151
  258. package/dist/LeuElement-jrR2M5pZ.js +0 -42
  259. package/dist/LeuElement.d-BevHqLUu.d.ts +0 -10
  260. package/dist/_tslib-CNEFicEt.js +0 -30
  261. package/dist/components/accordion/Accordion.d.ts +0 -49
  262. package/dist/components/accordion/Accordion.d.ts.map +0 -1
  263. package/dist/components/accordion/leu-accordion.d.ts +0 -8
  264. package/dist/components/accordion/leu-accordion.d.ts.map +0 -1
  265. package/dist/components/accordion/stories/accordion.stories.d.ts +0 -26
  266. package/dist/components/accordion/stories/accordion.stories.d.ts.map +0 -1
  267. package/dist/components/accordion/test/accordion.test.d.ts +0 -2
  268. package/dist/components/accordion/test/accordion.test.d.ts.map +0 -1
  269. package/dist/components/button/Button.d.ts +0 -81
  270. package/dist/components/button/Button.d.ts.map +0 -1
  271. package/dist/components/button/leu-button.d.ts +0 -8
  272. package/dist/components/button/leu-button.d.ts.map +0 -1
  273. package/dist/components/button/stories/button.stories.d.ts +0 -19
  274. package/dist/components/button/stories/button.stories.d.ts.map +0 -1
  275. package/dist/components/button/test/button.test.d.ts +0 -3
  276. package/dist/components/button/test/button.test.d.ts.map +0 -1
  277. package/dist/components/button-group/ButtonGroup.d.ts +0 -25
  278. package/dist/components/button-group/ButtonGroup.d.ts.map +0 -1
  279. package/dist/components/button-group/leu-button-group.d.ts +0 -8
  280. package/dist/components/button-group/leu-button-group.d.ts.map +0 -1
  281. package/dist/components/button-group/stories/button-group.stories.d.ts +0 -15
  282. package/dist/components/button-group/stories/button-group.stories.d.ts.map +0 -1
  283. package/dist/components/button-group/test/button-group.test.d.ts +0 -3
  284. package/dist/components/button-group/test/button-group.test.d.ts.map +0 -1
  285. package/dist/components/chart-wrapper/ChartWrapper.d.ts +0 -34
  286. package/dist/components/chart-wrapper/ChartWrapper.d.ts.map +0 -1
  287. package/dist/components/chart-wrapper/leu-chart-wrapper.d.ts +0 -8
  288. package/dist/components/chart-wrapper/leu-chart-wrapper.d.ts.map +0 -1
  289. package/dist/components/chart-wrapper/stories/chart-wrapper.stories.d.ts +0 -47
  290. package/dist/components/chart-wrapper/stories/chart-wrapper.stories.d.ts.map +0 -1
  291. package/dist/components/chart-wrapper/test/chart-wrapper.test.d.ts +0 -2
  292. package/dist/components/chart-wrapper/test/chart-wrapper.test.d.ts.map +0 -1
  293. package/dist/components/checkbox/Checkbox.d.ts +0 -28
  294. package/dist/components/checkbox/Checkbox.d.ts.map +0 -1
  295. package/dist/components/checkbox/CheckboxGroup.d.ts +0 -22
  296. package/dist/components/checkbox/CheckboxGroup.d.ts.map +0 -1
  297. package/dist/components/checkbox/leu-checkbox-group.d.ts +0 -8
  298. package/dist/components/checkbox/leu-checkbox-group.d.ts.map +0 -1
  299. package/dist/components/checkbox/leu-checkbox.d.ts +0 -8
  300. package/dist/components/checkbox/leu-checkbox.d.ts.map +0 -1
  301. package/dist/components/checkbox/stories/checkbox-group.stories.d.ts +0 -29
  302. package/dist/components/checkbox/stories/checkbox-group.stories.d.ts.map +0 -1
  303. package/dist/components/checkbox/stories/checkbox.stories.d.ts +0 -22
  304. package/dist/components/checkbox/stories/checkbox.stories.d.ts.map +0 -1
  305. package/dist/components/checkbox/test/checkbox-group.test.d.ts +0 -3
  306. package/dist/components/checkbox/test/checkbox-group.test.d.ts.map +0 -1
  307. package/dist/components/checkbox/test/checkbox.test.d.ts +0 -2
  308. package/dist/components/checkbox/test/checkbox.test.d.ts.map +0 -1
  309. package/dist/components/chip/Chip.d.ts +0 -15
  310. package/dist/components/chip/Chip.d.ts.map +0 -1
  311. package/dist/components/chip/ChipGroup.d.ts +0 -38
  312. package/dist/components/chip/ChipGroup.d.ts.map +0 -1
  313. package/dist/components/chip/ChipLink.d.ts +0 -13
  314. package/dist/components/chip/ChipLink.d.ts.map +0 -1
  315. package/dist/components/chip/ChipRemovable.d.ts +0 -21
  316. package/dist/components/chip/ChipRemovable.d.ts.map +0 -1
  317. package/dist/components/chip/ChipSelectable.d.ts +0 -28
  318. package/dist/components/chip/ChipSelectable.d.ts.map +0 -1
  319. package/dist/components/chip/exports.d.ts +0 -5
  320. package/dist/components/chip/exports.d.ts.map +0 -1
  321. package/dist/components/chip/leu-chip-group.d.ts +0 -8
  322. package/dist/components/chip/leu-chip-group.d.ts.map +0 -1
  323. package/dist/components/chip/leu-chip-link.d.ts +0 -8
  324. package/dist/components/chip/leu-chip-link.d.ts.map +0 -1
  325. package/dist/components/chip/leu-chip-removable.d.ts +0 -8
  326. package/dist/components/chip/leu-chip-removable.d.ts.map +0 -1
  327. package/dist/components/chip/leu-chip-selectable.d.ts +0 -8
  328. package/dist/components/chip/leu-chip-selectable.d.ts.map +0 -1
  329. package/dist/components/chip/stories/chip-group.stories.d.ts +0 -40
  330. package/dist/components/chip/stories/chip-group.stories.d.ts.map +0 -1
  331. package/dist/components/chip/stories/chip-link.stories.d.ts +0 -27
  332. package/dist/components/chip/stories/chip-link.stories.d.ts.map +0 -1
  333. package/dist/components/chip/stories/chip-removable.stories.d.ts +0 -21
  334. package/dist/components/chip/stories/chip-removable.stories.d.ts.map +0 -1
  335. package/dist/components/chip/stories/chip-selectable.stories.d.ts +0 -35
  336. package/dist/components/chip/stories/chip-selectable.stories.d.ts.map +0 -1
  337. package/dist/components/chip/test/chip-group.test.d.ts +0 -4
  338. package/dist/components/chip/test/chip-group.test.d.ts.map +0 -1
  339. package/dist/components/chip/test/chip-link.test.d.ts +0 -2
  340. package/dist/components/chip/test/chip-link.test.d.ts.map +0 -1
  341. package/dist/components/chip/test/chip-removable.test.d.ts +0 -2
  342. package/dist/components/chip/test/chip-removable.test.d.ts.map +0 -1
  343. package/dist/components/chip/test/chip-selectable.test.d.ts +0 -2
  344. package/dist/components/chip/test/chip-selectable.test.d.ts.map +0 -1
  345. package/dist/components/chip/test/chip.test.d.ts +0 -2
  346. package/dist/components/chip/test/chip.test.d.ts.map +0 -1
  347. package/dist/components/dialog/Dialog.d.ts +0 -29
  348. package/dist/components/dialog/Dialog.d.ts.map +0 -1
  349. package/dist/components/dialog/leu-dialog.d.ts +0 -8
  350. package/dist/components/dialog/leu-dialog.d.ts.map +0 -1
  351. package/dist/components/dialog/stories/dialog.stories.d.ts +0 -19
  352. package/dist/components/dialog/stories/dialog.stories.d.ts.map +0 -1
  353. package/dist/components/dialog/test/dialog.test.d.ts +0 -2
  354. package/dist/components/dialog/test/dialog.test.d.ts.map +0 -1
  355. package/dist/components/dropdown/Dropdown.d.ts +0 -40
  356. package/dist/components/dropdown/Dropdown.d.ts.map +0 -1
  357. package/dist/components/dropdown/leu-dropdown.d.ts +0 -8
  358. package/dist/components/dropdown/leu-dropdown.d.ts.map +0 -1
  359. package/dist/components/dropdown/stories/dropdown.stories.d.ts +0 -25
  360. package/dist/components/dropdown/stories/dropdown.stories.d.ts.map +0 -1
  361. package/dist/components/dropdown/test/dropdown.test.d.ts +0 -2
  362. package/dist/components/dropdown/test/dropdown.test.d.ts.map +0 -1
  363. package/dist/components/file-input/FileInput.d.ts +0 -62
  364. package/dist/components/file-input/FileInput.d.ts.map +0 -1
  365. package/dist/components/file-input/leu-file-input.d.ts +0 -8
  366. package/dist/components/file-input/leu-file-input.d.ts.map +0 -1
  367. package/dist/components/file-input/stories/file-input.stories.d.ts +0 -34
  368. package/dist/components/file-input/stories/file-input.stories.d.ts.map +0 -1
  369. package/dist/components/file-input/test/file-input.test.d.ts +0 -2
  370. package/dist/components/file-input/test/file-input.test.d.ts.map +0 -1
  371. package/dist/components/icon/Icon.d.ts +0 -20
  372. package/dist/components/icon/Icon.d.ts.map +0 -1
  373. package/dist/components/icon/leu-icon.d.ts +0 -8
  374. package/dist/components/icon/leu-icon.d.ts.map +0 -1
  375. package/dist/components/icon/paths.d.ts +0 -127
  376. package/dist/components/icon/paths.d.ts.map +0 -1
  377. package/dist/components/icon/stories/icon.stories.d.ts +0 -32
  378. package/dist/components/icon/stories/icon.stories.d.ts.map +0 -1
  379. package/dist/components/icon/test/icon.test.d.ts +0 -2
  380. package/dist/components/icon/test/icon.test.d.ts.map +0 -1
  381. package/dist/components/input/Input.d.ts +0 -163
  382. package/dist/components/input/Input.d.ts.map +0 -1
  383. package/dist/components/input/leu-input.d.ts +0 -8
  384. package/dist/components/input/leu-input.d.ts.map +0 -1
  385. package/dist/components/input/stories/input.stories.d.ts +0 -35
  386. package/dist/components/input/stories/input.stories.d.ts.map +0 -1
  387. package/dist/components/input/test/input.test.d.ts +0 -2
  388. package/dist/components/input/test/input.test.d.ts.map +0 -1
  389. package/dist/components/menu/Menu.d.ts +0 -39
  390. package/dist/components/menu/Menu.d.ts.map +0 -1
  391. package/dist/components/menu/MenuItem.d.ts +0 -61
  392. package/dist/components/menu/MenuItem.d.ts.map +0 -1
  393. package/dist/components/menu/leu-menu-item.d.ts +0 -8
  394. package/dist/components/menu/leu-menu-item.d.ts.map +0 -1
  395. package/dist/components/menu/leu-menu.d.ts +0 -8
  396. package/dist/components/menu/leu-menu.d.ts.map +0 -1
  397. package/dist/components/menu/stories/menu-item.stories.d.ts +0 -24
  398. package/dist/components/menu/stories/menu-item.stories.d.ts.map +0 -1
  399. package/dist/components/menu/stories/menu.stories.d.ts +0 -26
  400. package/dist/components/menu/stories/menu.stories.d.ts.map +0 -1
  401. package/dist/components/menu/test/menu-item.test.d.ts +0 -3
  402. package/dist/components/menu/test/menu-item.test.d.ts.map +0 -1
  403. package/dist/components/menu/test/menu.test.d.ts +0 -4
  404. package/dist/components/menu/test/menu.test.d.ts.map +0 -1
  405. package/dist/components/message/Message.d.ts +0 -59
  406. package/dist/components/message/Message.d.ts.map +0 -1
  407. package/dist/components/message/leu-message.d.ts +0 -8
  408. package/dist/components/message/leu-message.d.ts.map +0 -1
  409. package/dist/components/message/stories/message.stories.d.ts +0 -179
  410. package/dist/components/message/stories/message.stories.d.ts.map +0 -1
  411. package/dist/components/message/test/message.test.d.ts +0 -2
  412. package/dist/components/message/test/message.test.d.ts.map +0 -1
  413. package/dist/components/pagination/Pagination.d.ts +0 -72
  414. package/dist/components/pagination/Pagination.d.ts.map +0 -1
  415. package/dist/components/pagination/leu-pagination.d.ts +0 -8
  416. package/dist/components/pagination/leu-pagination.d.ts.map +0 -1
  417. package/dist/components/pagination/stories/pagination.stories.d.ts +0 -25
  418. package/dist/components/pagination/stories/pagination.stories.d.ts.map +0 -1
  419. package/dist/components/pagination/test/pagination.test.d.ts +0 -2
  420. package/dist/components/pagination/test/pagination.test.d.ts.map +0 -1
  421. package/dist/components/placeholder/Placeholder.d.ts +0 -23
  422. package/dist/components/placeholder/Placeholder.d.ts.map +0 -1
  423. package/dist/components/placeholder/leu-placeholder.d.ts +0 -8
  424. package/dist/components/placeholder/leu-placeholder.d.ts.map +0 -1
  425. package/dist/components/placeholder/stories/placeholder.stories.d.ts +0 -27
  426. package/dist/components/placeholder/stories/placeholder.stories.d.ts.map +0 -1
  427. package/dist/components/placeholder/test/placeholder.test.d.ts +0 -2
  428. package/dist/components/placeholder/test/placeholder.test.d.ts.map +0 -1
  429. package/dist/components/popup/Popup.d.ts +0 -57
  430. package/dist/components/popup/Popup.d.ts.map +0 -1
  431. package/dist/components/popup/leu-popup.d.ts +0 -8
  432. package/dist/components/popup/leu-popup.d.ts.map +0 -1
  433. package/dist/components/popup/stories/popup.stories.d.ts +0 -28
  434. package/dist/components/popup/stories/popup.stories.d.ts.map +0 -1
  435. package/dist/components/popup/test/popup.test.d.ts +0 -2
  436. package/dist/components/popup/test/popup.test.d.ts.map +0 -1
  437. package/dist/components/progress-bar/ProgressBar.d.ts +0 -25
  438. package/dist/components/progress-bar/ProgressBar.d.ts.map +0 -1
  439. package/dist/components/progress-bar/leu-progress-bar.d.ts +0 -8
  440. package/dist/components/progress-bar/leu-progress-bar.d.ts.map +0 -1
  441. package/dist/components/progress-bar/stories/progress-bar.stories.d.ts +0 -48
  442. package/dist/components/progress-bar/stories/progress-bar.stories.d.ts.map +0 -1
  443. package/dist/components/progress-bar/test/progress-bar.test.d.ts +0 -2
  444. package/dist/components/progress-bar/test/progress-bar.test.d.ts.map +0 -1
  445. package/dist/components/radio/Radio.d.ts +0 -24
  446. package/dist/components/radio/Radio.d.ts.map +0 -1
  447. package/dist/components/radio/RadioGroup.d.ts +0 -39
  448. package/dist/components/radio/RadioGroup.d.ts.map +0 -1
  449. package/dist/components/radio/leu-radio-group.d.ts +0 -8
  450. package/dist/components/radio/leu-radio-group.d.ts.map +0 -1
  451. package/dist/components/radio/leu-radio.d.ts +0 -8
  452. package/dist/components/radio/leu-radio.d.ts.map +0 -1
  453. package/dist/components/radio/stories/radio-group.stories.d.ts +0 -29
  454. package/dist/components/radio/stories/radio-group.stories.d.ts.map +0 -1
  455. package/dist/components/radio/stories/radio.stories.d.ts +0 -22
  456. package/dist/components/radio/stories/radio.stories.d.ts.map +0 -1
  457. package/dist/components/radio/test/radio-group.test.d.ts +0 -3
  458. package/dist/components/radio/test/radio-group.test.d.ts.map +0 -1
  459. package/dist/components/radio/test/radio.test.d.ts +0 -2
  460. package/dist/components/radio/test/radio.test.d.ts.map +0 -1
  461. package/dist/components/range/Range.d.ts +0 -116
  462. package/dist/components/range/Range.d.ts.map +0 -1
  463. package/dist/components/range/leu-range.d.ts +0 -8
  464. package/dist/components/range/leu-range.d.ts.map +0 -1
  465. package/dist/components/range/stories/range.stories.d.ts +0 -231
  466. package/dist/components/range/stories/range.stories.d.ts.map +0 -1
  467. package/dist/components/range/test/range.test.d.ts +0 -2
  468. package/dist/components/range/test/range.test.d.ts.map +0 -1
  469. package/dist/components/scroll-top/ScrollTop.d.ts +0 -23
  470. package/dist/components/scroll-top/ScrollTop.d.ts.map +0 -1
  471. package/dist/components/scroll-top/leu-scroll-top.d.ts +0 -8
  472. package/dist/components/scroll-top/leu-scroll-top.d.ts.map +0 -1
  473. package/dist/components/scroll-top/stories/scroll-top.stories.d.ts +0 -8
  474. package/dist/components/scroll-top/stories/scroll-top.stories.d.ts.map +0 -1
  475. package/dist/components/scroll-top/test/scroll-top.test.d.ts +0 -2
  476. package/dist/components/scroll-top/test/scroll-top.test.d.ts.map +0 -1
  477. package/dist/components/select/Select.d.ts +0 -145
  478. package/dist/components/select/Select.d.ts.map +0 -1
  479. package/dist/components/select/leu-select.d.ts +0 -8
  480. package/dist/components/select/leu-select.d.ts.map +0 -1
  481. package/dist/components/select/stories/select.stories.d.ts +0 -23
  482. package/dist/components/select/stories/select.stories.d.ts.map +0 -1
  483. package/dist/components/select/test/fixtures.d.ts +0 -2
  484. package/dist/components/select/test/fixtures.d.ts.map +0 -1
  485. package/dist/components/select/test/select.test.d.ts +0 -3
  486. package/dist/components/select/test/select.test.d.ts.map +0 -1
  487. package/dist/components/spinner/Spinner.d.ts +0 -10
  488. package/dist/components/spinner/Spinner.d.ts.map +0 -1
  489. package/dist/components/spinner/leu-spinner.d.ts +0 -8
  490. package/dist/components/spinner/leu-spinner.d.ts.map +0 -1
  491. package/dist/components/spinner/stories/spinner.stories.d.ts +0 -16
  492. package/dist/components/spinner/stories/spinner.stories.d.ts.map +0 -1
  493. package/dist/components/spinner/test/spinner.test.d.ts +0 -2
  494. package/dist/components/spinner/test/spinner.test.d.ts.map +0 -1
  495. package/dist/components/table/Table.d.ts +0 -65
  496. package/dist/components/table/Table.d.ts.map +0 -1
  497. package/dist/components/table/leu-table.d.ts +0 -8
  498. package/dist/components/table/leu-table.d.ts.map +0 -1
  499. package/dist/components/table/stories/table.stories.d.ts +0 -15
  500. package/dist/components/table/stories/table.stories.d.ts.map +0 -1
  501. package/dist/components/table/test/table.test.d.ts +0 -2
  502. package/dist/components/table/test/table.test.d.ts.map +0 -1
  503. package/dist/components/tag/Tag.d.ts +0 -13
  504. package/dist/components/tag/Tag.d.ts.map +0 -1
  505. package/dist/components/tag/leu-tag.d.ts +0 -8
  506. package/dist/components/tag/leu-tag.d.ts.map +0 -1
  507. package/dist/components/tag/stories/tag.stories.d.ts +0 -136
  508. package/dist/components/tag/stories/tag.stories.d.ts.map +0 -1
  509. package/dist/components/tag/test/tag.test.d.ts +0 -2
  510. package/dist/components/tag/test/tag.test.d.ts.map +0 -1
  511. package/dist/components/visually-hidden/VisuallyHidden.d.ts +0 -9
  512. package/dist/components/visually-hidden/VisuallyHidden.d.ts.map +0 -1
  513. package/dist/components/visually-hidden/leu-visually-hidden.d.ts +0 -8
  514. package/dist/components/visually-hidden/leu-visually-hidden.d.ts.map +0 -1
  515. package/dist/components/visually-hidden/stories/visually-hidden.stories.d.ts +0 -13
  516. package/dist/components/visually-hidden/stories/visually-hidden.stories.d.ts.map +0 -1
  517. package/dist/components/visually-hidden/test/visually-hidden.test.d.ts +0 -2
  518. package/dist/components/visually-hidden/test/visually-hidden.test.d.ts.map +0 -1
  519. package/dist/hasSlotController-Bm2tipvG.js +0 -53
  520. package/dist/hasSlotController.d-emXwVXWF.d.ts +0 -23
  521. package/dist/index.d.ts.map +0 -1
  522. package/dist/lib/LeuElement.d.ts +0 -8
  523. package/dist/lib/LeuElement.d.ts.map +0 -1
  524. package/dist/lib/a11y.d.ts +0 -11
  525. package/dist/lib/a11y.d.ts.map +0 -1
  526. package/dist/lib/hasSlotController.d.ts +0 -20
  527. package/dist/lib/hasSlotController.d.ts.map +0 -1
  528. package/dist/lib/styleMap.d.ts +0 -61
  529. package/dist/lib/styleMap.d.ts.map +0 -1
  530. package/dist/lib/utils.d.ts +0 -23
  531. package/dist/lib/utils.d.ts.map +0 -1
  532. package/dist/styles/style.stories.d.ts +0 -6
  533. package/dist/styles/style.stories.d.ts.map +0 -1
  534. package/dist/utils-DBGsNSJW.js +0 -33
  535. package/rollup.config.js +0 -94
  536. package/web-dev-server.config.mjs +0 -30
@@ -0,0 +1,618 @@
1
+ import { t as LeuElement } from "./LeuElement-B7NJzWwP.js";
2
+ import { t as LeuIcon } from "./Icon-DhAvH0XM.js";
3
+ import { t as HasSlotController } from "./hasSlotController-DjdfnOQp.js";
4
+ import { t as LeuButton } from "./Button-EdS9xr2J.js";
5
+ import { t as LeuMenuItem } from "./MenuItem-CZTqGg5R.js";
6
+ import { t as LeuMenu } from "./Menu-DpiheIPk.js";
7
+ import { t as LeuPopup } from "./Popup-JQjuj26v.js";
8
+ import { t as LeuInput } from "./Input-CnEz-2dK.js";
9
+ import { css, html, nothing } from "lit";
10
+ import { classMap } from "lit/directives/class-map.js";
11
+ import { ifDefined } from "lit/directives/if-defined.js";
12
+ import { createRef, ref } from "lit/directives/ref.js";
13
+ //#region src/components/select/select.css?inline
14
+ var select_default = css`:host {
15
+ --select-color: var(--leu-color-black-100);
16
+ --select-color-disabled: var(--leu-color-black-20);
17
+ --select-color-invalid: var(--leu-color-func-red);
18
+ --select-color-focus: var(--leu-color-func-cyan);
19
+ --select-border-width: 2px;
20
+
21
+ --select-label-color: var(--leu-color-black-100);
22
+ --select-label-color-disabled: var(--select-color-disabled);
23
+ --select-label-color-empty: var(--leu-color-black-60);
24
+
25
+ --select-option-color: var(--leu-color-black-60);
26
+ --select-option-color-focus: var(--select-color);
27
+
28
+ --select-border-color: var(--leu-color-black-40);
29
+ --select-border-color-focus: var(--select-color-focus);
30
+ --select-border-color-disabled: var(--leu-color-black-20);
31
+ --select-border-color-invalid: var(--select-color-invalid);
32
+
33
+ --select-error-color: var(--leu-color-black-0);
34
+
35
+ --select-clear-color: var(--leu-color-black-60);
36
+
37
+ --select-font-regular: var(--leu-font-family-regular);
38
+ --select-font-black: var(--leu-font-family-black);
39
+
40
+ --select-apply-button-color: var(--leu-color-black-100);
41
+ --select-apply-button-color-focus: var(--leu-color-black-80);
42
+ --select-apply-button-font-color: var(--leu-color-black-0);
43
+
44
+ --select-box-shadow-short: var(--leu-box-shadow-short);
45
+ --select-box-shadow-regular: var(--leu-box-shadow-regular);
46
+
47
+ position: relative;
48
+ display: block;
49
+
50
+ font-family: var(--select-font-regular);
51
+ }
52
+
53
+ :host([disabled]) {
54
+ --select-color: var(--select-color-disabled);
55
+ --select-color-focus: var(--select-color-disabled);
56
+ --select-border-color: var(--select-border-color-disabled);
57
+ --select-label-color: var(--select-label-color-disabled);
58
+ --select-border-color-focus: var(--select-border-color-disabled);
59
+ --select-clear-color: var(--select-color-disabled);
60
+ }
61
+
62
+ .select-toggle {
63
+ min-height: 4.5rem;
64
+ display: block;
65
+ width: 100%;
66
+
67
+ -webkit-appearance: none;
68
+
69
+ -moz-appearance: none;
70
+
71
+ appearance: none;
72
+ border: var(--select-border-width) solid var(--select-border-color);
73
+ border-radius: 2px;
74
+ font-size: 1rem;
75
+ line-height: 1.5;
76
+ padding: 1.375rem 3rem 1.375rem 1rem;
77
+
78
+ background: var(--leu-color-black-0);
79
+ overflow: hidden;
80
+ text-overflow: ellipsis;
81
+ white-space: nowrap;
82
+
83
+ cursor: pointer;
84
+ text-align: left;
85
+ }
86
+
87
+ .select-toggle:hover,
88
+ .select-toggle:focus {
89
+ border-color: var(--select-border-color-focus);
90
+ }
91
+
92
+ .select-toggle.filled.labeled {
93
+ padding-bottom: 0.75rem;
94
+ padding-top: 2rem;
95
+ color: var(--select-color);
96
+ }
97
+
98
+ .select-toggle:focus-visible {
99
+ outline: var(--select-border-width) solid var(--select-border-color-focus);
100
+ outline-offset: 2px;
101
+ }
102
+
103
+ .label {
104
+ position: absolute;
105
+ top: 1.5rem;
106
+ transition: top 0.1s ease;
107
+ font-family: var(--select-font-regular);
108
+ }
109
+
110
+ .clear-button {
111
+ --_length: 1.5rem;
112
+
113
+ width: 1.5rem;
114
+
115
+ width: var(--_length);
116
+ height: 1.5rem;
117
+ height: var(--_length);
118
+ padding: 0;
119
+
120
+ position: absolute;
121
+ top: calc(50% - 1.5rem / 2);
122
+ top: calc(50% - var(--_length) / 2);
123
+ right: 2.6rem;
124
+
125
+ cursor: pointer;
126
+
127
+ background: none;
128
+ color: var(--select-clear-color);
129
+ border: none;
130
+
131
+ /* border-radius is only defined for a nice focus outline */
132
+ border-radius: 2px;
133
+ }
134
+
135
+ .clear-button:focus-visible {
136
+ outline: var(--select-border-width) solid var(--select-border-color-focus);
137
+ outline-offset: 2px;
138
+ }
139
+
140
+ .select-toggle[disabled],
141
+ .select-toggle[disabled] .clear-button {
142
+ cursor: inherit;
143
+ }
144
+
145
+ .select-toggle[disabled] .label {
146
+ color: var(--select-label-color);
147
+ }
148
+
149
+ .select-toggle.open .label,
150
+ .select-toggle.filled .label,
151
+ .select-toggle:focus .label {
152
+ color: var(--select-label-color);
153
+ font-family: var(--select-font-black);
154
+ font-size: 0.75rem;
155
+
156
+ top: 0.875rem;
157
+
158
+ transition: top 0.1s ease;
159
+ }
160
+
161
+ .arrow-icon {
162
+ --_length: 1.5rem;
163
+
164
+ width: 1.5rem;
165
+
166
+ width: var(--_length);
167
+ height: 1.5rem;
168
+ height: var(--_length);
169
+ padding: 0;
170
+
171
+ position: absolute;
172
+ top: calc(50% - 1.5rem / 2);
173
+ top: calc(50% - var(--_length) / 2);
174
+ right: 1rem;
175
+
176
+ transform: rotate(0deg);
177
+ transition: transform 0.25s ease;
178
+
179
+ color: var(--select-color);
180
+ }
181
+
182
+ .select-toggle.open .arrow-icon {
183
+ transform: rotate(180deg);
184
+ }
185
+
186
+ .select-menu-container {
187
+ position: static;
188
+ overflow: auto;
189
+
190
+ display: flex;
191
+ flex-direction: column;
192
+
193
+ width: 100%;
194
+ max-height: min(var(--auto-size-available-height), 24rem);
195
+
196
+ padding: 0;
197
+ margin: 0;
198
+
199
+ border: none;
200
+ border-radius: 1px;
201
+ background-color: white;
202
+ box-shadow: var(--select-box-shadow-regular), var(--select-box-shadow-short);
203
+ }
204
+
205
+ .menu {
206
+ display: block;
207
+ overflow: auto;
208
+ }
209
+
210
+ .before,
211
+ .after {
212
+ display: block;
213
+ margin: 0.75rem;
214
+ }
215
+
216
+ .select:not(.select--has-before) .before {
217
+ display: none;
218
+ }
219
+
220
+ .select:not(.select--has-after) .after {
221
+ display: none;
222
+ }
223
+
224
+ .apply-button-wrapper {
225
+ background-color: var(--leu-color-black-10);
226
+ padding: 0.75rem;
227
+ }
228
+
229
+ .apply-button {
230
+ display: block;
231
+ }
232
+
233
+ .select-search {
234
+ margin: 0.75rem;
235
+ }
236
+
237
+ .filter-message-empty {
238
+ background: var(--leu-color-black-0);
239
+ color: var(--leu-color-black-transp-60);
240
+
241
+ padding: 0.75rem;
242
+ margin: 0;
243
+ }
244
+ `;
245
+ //#endregion
246
+ //#region src/components/select/Select.ts
247
+ /**
248
+ * @tagname leu-select
249
+ * @slot before - Optional content the appears before the option list
250
+ * @slot after - Optional content the appears after the option list
251
+ * @property {string} name - Reflects to the name attribute of the hidden input field that would be used in a form
252
+ * @property {boolean} open - The expanded state of the popup
253
+ * @property {string} label - The label of the select
254
+ * @property {array} value - List of selected values. If they're set from outside the component, the select element tries to find all the options with the given values and selects them.
255
+ * @property {boolean} clearable - Show a clearable button to reset the value
256
+ * @property {boolean} disabled - If the select should be disabled
257
+ * @property {boolean} filterable - Show an input field to filter the options inside the popup
258
+ * @property {boolean} multiple - Allow multiple selections
259
+ * @attribute {string} value - The selected values separated by commas.
260
+ */
261
+ var LeuSelect = class extends LeuElement {
262
+ static {
263
+ this.dependencies = {
264
+ "leu-button": LeuButton,
265
+ "leu-menu": LeuMenu,
266
+ "leu-menu-item": LeuMenuItem,
267
+ "leu-icon": LeuIcon,
268
+ "leu-input": LeuInput,
269
+ "leu-popup": LeuPopup
270
+ };
271
+ }
272
+ static {
273
+ this.styles = [LeuElement.styles, select_default];
274
+ }
275
+ static get properties() {
276
+ return {
277
+ name: {
278
+ type: String,
279
+ reflect: true
280
+ },
281
+ open: {
282
+ type: Boolean,
283
+ reflect: true
284
+ },
285
+ label: {
286
+ type: String,
287
+ reflect: true
288
+ },
289
+ value: {
290
+ type: Array,
291
+ converter: { fromAttribute(value) {
292
+ if (value) return value.split(",").map((v) => v.trim());
293
+ return value;
294
+ } }
295
+ },
296
+ clearable: {
297
+ type: Boolean,
298
+ reflect: true
299
+ },
300
+ disabled: {
301
+ type: Boolean,
302
+ reflect: true
303
+ },
304
+ filterable: {
305
+ type: Boolean,
306
+ reflect: true
307
+ },
308
+ multiple: {
309
+ type: Boolean,
310
+ reflect: true
311
+ },
312
+ _optionFilter: { state: true },
313
+ _hasFilterResults: { state: true },
314
+ _displayValue: { state: true }
315
+ };
316
+ }
317
+ static getOptionLabel(option) {
318
+ if (typeof option === "object" && option !== null) return option.label;
319
+ return option;
320
+ }
321
+ constructor() {
322
+ super();
323
+ this.hasSlotController = new HasSlotController(this, ["before", "after"]);
324
+ this._handleDocumentClick = (event) => {
325
+ if (!event.composedPath().includes(this) && this.open) this._closeDropdown();
326
+ };
327
+ this._handleKeyDown = (event) => {
328
+ if (event.key === "Escape") this._closeDropdown();
329
+ };
330
+ this.open = false;
331
+ this.disabled = false;
332
+ this.open = false;
333
+ this.multiple = false;
334
+ this.clearable = false;
335
+ this.filterable = false;
336
+ this.value = [];
337
+ this.label = "";
338
+ this.name = "";
339
+ /** @internal */
340
+ this._optionFilter = "";
341
+ /** @internal */
342
+ this._hasFilterResults = true;
343
+ /** @internal */
344
+ this._deferedChangeEvent = false;
345
+ /** @internal */
346
+ this._displayValue = "";
347
+ /**
348
+ * @type {import("lit/directives/ref").Ref<import("../input/Input").LeuInput>}
349
+ */
350
+ this._optionFilterRef = createRef();
351
+ /**
352
+ * @type {import("lit/directives/ref").Ref<HTMLButtonElement>}
353
+ */
354
+ this._toggleButtonRef = createRef();
355
+ /**
356
+ * @type {import("lit/directives/ref").Ref<import("../menu/Menu").LeuMenu>}
357
+ */
358
+ this._menuRef = createRef();
359
+ }
360
+ connectedCallback() {
361
+ super.connectedCallback();
362
+ document.addEventListener("click", this._handleDocumentClick);
363
+ }
364
+ disconnectedCallback() {
365
+ super.disconnectedCallback();
366
+ document.removeEventListener("click", this._handleDocumentClick);
367
+ }
368
+ updated(changedProperties) {
369
+ if (changedProperties.has("open") && this.open) if (this.filterable) this._optionFilterRef.value.focus();
370
+ else this._menuRef.value.focusItem(0);
371
+ else if (changedProperties.has("open") && !this.open) this._toggleButtonRef.value?.focus();
372
+ if (changedProperties.has("value") || changedProperties.has("_optionFilter") || changedProperties.has("multiple")) this._updateMenuItems({
373
+ value: changedProperties.has("value"),
374
+ optionFilter: changedProperties.has("_optionFilter"),
375
+ multiple: changedProperties.has("multiple")
376
+ });
377
+ }
378
+ /**
379
+ * Apply the current state to the menu items.
380
+ * - Set the active property when the value property has changed.
381
+ * - Hide menu items that do not match the filter.
382
+ */
383
+ async _updateMenuItems(changed) {
384
+ /** @type {LeuMenu} */
385
+ const menu = this._menuRef.value;
386
+ await menu.updateComplete;
387
+ const menuItems = menu.getMenuItems();
388
+ let hasFilterResults = false;
389
+ if (changed.value && this.value.length === 0) this._displayValue = "";
390
+ menuItems.forEach((menuItem) => {
391
+ if (changed.multiple) menuItem.multipleSelection = this.multiple;
392
+ if (changed.optionFilter) {
393
+ menuItem.hidden = this._optionFilter !== "" && !menuItem.textContent.toLowerCase().includes(this._optionFilter.toLowerCase());
394
+ hasFilterResults = hasFilterResults || !menuItem.hidden;
395
+ }
396
+ if (changed.value) {
397
+ menuItem.active = this._isSelected(menuItem.getValue());
398
+ if (!this.multiple && menuItem.active) this._displayValue = menuItem.textContent;
399
+ }
400
+ });
401
+ if (changed.optionFilter) {
402
+ this._hasFilterResults = hasFilterResults;
403
+ menu.setCurrentItem(0);
404
+ }
405
+ }
406
+ /**
407
+ * Update all the menu items when the slot changes
408
+ * to make sure that the menu items are in sync
409
+ * with the state of the component.
410
+ * @internal
411
+ */
412
+ _handleItemSlotChange() {
413
+ this._updateMenuItems({
414
+ value: true,
415
+ optionFilter: true,
416
+ multiple: true
417
+ });
418
+ }
419
+ /**
420
+ * @internal
421
+ * @param {KeyboardEvent} event
422
+ */
423
+ async _handleToggleKeyDown(event) {
424
+ if ([
425
+ "ArrowDown",
426
+ "ArrowUp",
427
+ "Home",
428
+ "End"
429
+ ].includes(event.key)) {
430
+ event.preventDefault();
431
+ const menu = this._menuRef.value;
432
+ this.open = true;
433
+ await this.updateComplete;
434
+ if (event.key === "ArrowDown" || event.key === "Home") menu.focusItem(0);
435
+ else if (event.key === "ArrowUp" || event.key === "End") menu.focusItem(-1);
436
+ }
437
+ }
438
+ /**
439
+ * @internal
440
+ * @param {KeyboardEvent} event
441
+ */
442
+ _handleFilterInputKeyDown(event) {
443
+ if (event.key === "ArrowDown") this._menuRef.value.focusItem(0);
444
+ else if (event.key === "ArrowUp") this._menuRef.value.focusItem(-1);
445
+ }
446
+ /**
447
+ * Determines the value or label that should be displayed inside the toggle button.
448
+ * @returns {String | nothing}
449
+ */
450
+ _getDisplayValue() {
451
+ if (this.multiple) return this.value.length === 0 ? `` : `${this.value.length} gewählt`;
452
+ return this._displayValue ?? nothing;
453
+ }
454
+ _emitInputEvent() {
455
+ const inputevent = new CustomEvent("input", {
456
+ composed: true,
457
+ bubbles: true
458
+ });
459
+ this.dispatchEvent(inputevent);
460
+ }
461
+ _emitChangeEvent() {
462
+ const changeevent = new CustomEvent("change", {
463
+ composed: true,
464
+ bubbles: true
465
+ });
466
+ this.dispatchEvent(changeevent);
467
+ }
468
+ _clearValue(event) {
469
+ if (!this.disabled) {
470
+ event.stopPropagation();
471
+ this.value = [];
472
+ }
473
+ this._emitInputEvent();
474
+ this._emitChangeEvent();
475
+ }
476
+ _toggleDropdown() {
477
+ if (!this.disabled) this.open = !this.open;
478
+ }
479
+ _closeDropdown() {
480
+ this.open = false;
481
+ if (this._deferedChangeEvent) {
482
+ this._emitChangeEvent();
483
+ this._deferedChangeEvent = false;
484
+ }
485
+ }
486
+ _handleFilterInput(event) {
487
+ this._optionFilter = event.target.value;
488
+ }
489
+ /**
490
+ * Checks if the given value is selected.
491
+ * @param {String} menuItemValue
492
+ * @returns {Boolean}
493
+ */
494
+ _isSelected(menuItemValue) {
495
+ return this.value.includes(menuItemValue);
496
+ }
497
+ _handleMenuItemClick(event) {
498
+ if (!(event.target instanceof LeuMenuItem) || event.target.disabled) return;
499
+ /** @type {LeuMenuItem} */
500
+ const menuItem = event.target;
501
+ const value = menuItem.getValue();
502
+ const isSelected = this._isSelected(value);
503
+ if (this.multiple) {
504
+ this.value = isSelected ? this.value.filter((v) => v !== value) : this.value.concat(value);
505
+ this._deferedChangeEvent = true;
506
+ } else if (this.clearable || !isSelected) {
507
+ this.value = isSelected ? [] : [value];
508
+ this._displayValue = isSelected ? "" : menuItem.textContent;
509
+ }
510
+ this._emitInputEvent();
511
+ if (!this.multiple) this._closeDropdown();
512
+ }
513
+ _renderFilterInput() {
514
+ if (this.filterable) return html` <leu-input
515
+ class="select-search"
516
+ size="small"
517
+ @input=${this._handleFilterInput}
518
+ @keydown=${this._handleFilterInputKeyDown}
519
+ clearable
520
+ ref=${ref(this._optionFilterRef)}
521
+ label="Nach Stichwort filtern"
522
+ ></leu-input>`;
523
+ return nothing;
524
+ }
525
+ _renderApplyButton() {
526
+ if (this.multiple) return html`
527
+ <div class="apply-button-wrapper">
528
+ <leu-button
529
+ type="button"
530
+ class="apply-button"
531
+ @click=${this._closeDropdown}
532
+ fluid
533
+ >Anwenden</leu-button
534
+ >
535
+ </div>
536
+ `;
537
+ return nothing;
538
+ }
539
+ _renderToggleButton() {
540
+ const toggleClasses = {
541
+ "select-toggle": true,
542
+ open: this.open,
543
+ filled: this.value.length !== 0 && this.value !== null,
544
+ labeled: this.label !== ""
545
+ };
546
+ return html`<button
547
+ ${ref(this._toggleButtonRef)}
548
+ type="button"
549
+ class=${classMap(toggleClasses)}
550
+ @click=${this._toggleDropdown}
551
+ @keydown=${this._handleToggleKeyDown}
552
+ ?disabled=${this.disabled}
553
+ aria-controls="select-popup"
554
+ aria-expanded="${this.open}"
555
+ aria-labelledby="select-label"
556
+ role="combobox"
557
+ slot="anchor"
558
+ >
559
+ <span class="label" id="select-label">${this.label}</span>
560
+ <span class="value"> ${this._getDisplayValue()} </span>
561
+ <span class="arrow-icon">
562
+ <leu-icon name="angleDropDown"></leu-icon>
563
+ </span>
564
+ ${this.clearable && this.value.length !== 0 ? html`<button
565
+ type="button"
566
+ class="clear-button"
567
+ @click=${this._clearValue}
568
+ aria-label=${`${this.label} zurücksetzen`}
569
+ ?disabled=${this.disabled}
570
+ >
571
+ <leu-icon name="clear"></leu-icon>
572
+ </button>` : nothing}
573
+ </button>`;
574
+ }
575
+ render() {
576
+ return html`<div
577
+ class=${classMap({
578
+ select: true,
579
+ "select--has-before": this.hasSlotController.test("before"),
580
+ "select--has-after": this.hasSlotController.test("after")
581
+ })}
582
+ @keydown=${this._handleKeyDown}
583
+ >
584
+ <leu-popup
585
+ ?active=${this.open}
586
+ placement="bottom-start"
587
+ flip
588
+ matchSize="width"
589
+ autoSize="height"
590
+ autoSizePadding="8"
591
+ >
592
+ ${this._renderToggleButton()}
593
+ <div id="select-popup" class="select-menu-container">
594
+ <slot name="before" class="before"></slot>
595
+ ${this._renderFilterInput()}
596
+ <leu-menu
597
+ ref=${ref(this._menuRef)}
598
+ role="listbox"
599
+ aria-multiselectable=${ifDefined(this.multiple ? "true" : void 0)}
600
+ class="menu"
601
+ @click=${this._handleMenuItemClick}
602
+ aria-labelledby="select-label"
603
+ >
604
+ <slot @slotchange=${this._handleItemSlotChange}> </slot>
605
+ </leu-menu>
606
+ ${this._hasFilterResults || this._optionFilter === "" ? nothing : html` <p class="filter-message-empty" aria-live="polite">
607
+ Keine Resultate
608
+ </p>`}
609
+ ${this._renderApplyButton()}
610
+ <slot name="after" class="after"></slot>
611
+ </div>
612
+ </leu-popup>
613
+ </div>
614
+ <input type="hidden" name=${this.name} .value=${this.value.join(",")} />`;
615
+ }
616
+ };
617
+ //#endregion
618
+ export { LeuSelect as t };