@statistikzh/leu 0.28.1 → 0.28.3

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 (351) hide show
  1. package/dist/{Accordion-CwkI7sfx.js → Accordion-EwJ1WHFd.js} +1 -1
  2. package/dist/Accordion.js +2 -2
  3. package/dist/{Button-DcuvEVkC.d.ts → Button-BywuwtT2.d.ts} +0 -1
  4. package/dist/{Button-D1aYnunQ.js → Button-q4GeKj_3.js} +3 -4
  5. package/dist/Button.d.ts +1 -1
  6. package/dist/Button.js +4 -4
  7. package/dist/{ButtonGroup-CqThYjzX.js → ButtonGroup-BeU3Prei.js} +2 -2
  8. package/dist/ButtonGroup.js +5 -5
  9. package/dist/{ChartWrapper-BjVT4x-H.js → ChartWrapper-Bdb0_n2z.js} +2 -2
  10. package/dist/ChartWrapper.js +3 -3
  11. package/dist/{Checkbox-HxYqp2w4.js → Checkbox-BC0gAuaH.js} +2 -2
  12. package/dist/Checkbox.js +3 -3
  13. package/dist/{CheckboxGroup-DYws2rwt.js → CheckboxGroup-CiOgcwmo.js} +2 -2
  14. package/dist/CheckboxGroup.js +4 -4
  15. package/dist/{Chip-gKxD6IaZ.js → Chip-CYlPzmTG.js} +1 -1
  16. package/dist/Chip.js +2 -2
  17. package/dist/{ChipGroup-ZvBzX_wd.js → ChipGroup-3IMW_Mp7.js} +1 -1
  18. package/dist/ChipGroup.js +3 -3
  19. package/dist/ChipLink.js +2 -2
  20. package/dist/ChipRemovable.js +3 -3
  21. package/dist/ChipSelectable.js +2 -2
  22. package/dist/{Dialog-BYpzTprV.js → Dialog-DCl5qSXY.js} +3 -4
  23. package/dist/Dialog.js +3 -3
  24. package/dist/{Dropdown-C4CgE4E-.js → Dropdown-COmpmOev.js} +5 -5
  25. package/dist/Dropdown.d.ts +1 -1
  26. package/dist/Dropdown.js +8 -8
  27. package/dist/{FileInput-nsnSQCaU.js → FileInput-DXjoqKB4.js} +4 -4
  28. package/dist/FileInput.d.ts +1 -1
  29. package/dist/FileInput.js +6 -6
  30. package/dist/{Icon-D8HTPEFH.js → Icon-Bmk7lLWY.js} +1 -1
  31. package/dist/Icon.js +2 -2
  32. package/dist/{Input-OrILqlax.js → Input-B9FwAPKO.js} +2 -2
  33. package/dist/Input.js +3 -3
  34. package/dist/{LeuElement-C_lcHzQI.js → LeuElement-CQJQi8TB.js} +1 -1
  35. package/dist/{Menu-CFLCnI34.js → Menu-bWCAn0rT.js} +2 -2
  36. package/dist/Menu.js +4 -4
  37. package/dist/{MenuItem-ICjLCGim.js → MenuItem-CzCFZi8o.js} +2 -2
  38. package/dist/MenuItem.js +3 -3
  39. package/dist/{Message-Dw5D_0i1.js → Message-DMaM9ukF.js} +2 -2
  40. package/dist/Message.js +3 -3
  41. package/dist/{Pagination-D1tP5FrM.js → Pagination-870u3UgQ.js} +4 -4
  42. package/dist/{Pagination-9eZ8WMvR.d.ts → Pagination-B-mTHZiw.d.ts} +1 -1
  43. package/dist/Pagination.d.ts +1 -1
  44. package/dist/Pagination.js +6 -6
  45. package/dist/{Placeholder-CnGzCZ5-.js → Placeholder-DvvzGB1p.js} +1 -1
  46. package/dist/Placeholder.js +2 -2
  47. package/dist/{Popup-BiN_tZDN.js → Popup-BpG_7twr.js} +1 -1
  48. package/dist/Popup.js +2 -2
  49. package/dist/{ProgressBar-BfJo_KyU.js → ProgressBar-BkskTLWK.js} +1 -1
  50. package/dist/ProgressBar.js +2 -2
  51. package/dist/{Radio-CV7vuQUj.js → Radio-BS7UUhR3.js} +1 -1
  52. package/dist/Radio.js +2 -2
  53. package/dist/{RadioGroup-C3XWSScc.js → RadioGroup-Cpo9kAjB.js} +2 -2
  54. package/dist/RadioGroup.js +3 -3
  55. package/dist/{Range-C8RVrIM9.js → Range-Dh0p5UWA.js} +1 -1
  56. package/dist/Range.js +2 -2
  57. package/dist/{ScrollTop-B_TJ_k4m.js → ScrollTop-CtPidICZ.js} +3 -3
  58. package/dist/ScrollTop.d.ts +1 -1
  59. package/dist/ScrollTop.js +5 -5
  60. package/dist/{Select-CbPTrL3G.js → Select-W1KqDOgx.js} +7 -7
  61. package/dist/Select.d.ts +1 -1
  62. package/dist/Select.js +9 -9
  63. package/dist/{Spinner-ChKJQJTN.js → Spinner-CmAYIFws.js} +1 -1
  64. package/dist/Spinner.js +2 -2
  65. package/dist/{Tab-BJbzY1xd.js → Tab-7Cww5fSx.js} +1 -1
  66. package/dist/Tab.js +2 -2
  67. package/dist/{TabGroup-BIaCHrKR.js → TabGroup-tURfCrlw.js} +3 -3
  68. package/dist/TabGroup.js +4 -4
  69. package/dist/{TabPanel-CTyw410b.js → TabPanel-DIZcmcMV.js} +1 -1
  70. package/dist/TabPanel.js +2 -2
  71. package/dist/{Table-D3QmePJd.js → Table-BVYjYXP9.js} +3 -3
  72. package/dist/Table.d.ts +1 -1
  73. package/dist/Table.js +7 -7
  74. package/dist/{Tag-nUnWtHYy.js → Tag-x0KmEDEa.js} +1 -1
  75. package/dist/Tag.js +2 -2
  76. package/dist/{VisuallyHidden-DF2q9pTa.js → VisuallyHidden-CXRfGsaZ.js} +1 -1
  77. package/dist/VisuallyHidden.js +2 -2
  78. package/dist/custom-elements.json +6445 -0
  79. package/dist/index.d.ts +2 -2
  80. package/dist/index.js +30 -30
  81. package/dist/leu-accordion.js +2 -2
  82. package/dist/leu-button-group.js +5 -5
  83. package/dist/leu-button.d.ts +1 -1
  84. package/dist/leu-button.js +4 -4
  85. package/dist/leu-chart-wrapper.js +3 -3
  86. package/dist/leu-checkbox-group.js +4 -4
  87. package/dist/leu-checkbox.js +3 -3
  88. package/dist/leu-chip-group.js +3 -3
  89. package/dist/leu-chip-link.js +2 -2
  90. package/dist/leu-chip-removable.js +3 -3
  91. package/dist/leu-chip-selectable.js +2 -2
  92. package/dist/leu-dialog.js +3 -3
  93. package/dist/leu-dropdown.js +8 -8
  94. package/dist/leu-file-input.js +6 -6
  95. package/dist/leu-icon.js +2 -2
  96. package/dist/leu-input.js +3 -3
  97. package/dist/leu-menu-item.js +3 -3
  98. package/dist/leu-menu.js +4 -4
  99. package/dist/leu-message.js +3 -3
  100. package/dist/leu-pagination.d.ts +1 -1
  101. package/dist/leu-pagination.js +6 -6
  102. package/dist/leu-placeholder.js +2 -2
  103. package/dist/leu-popup.js +2 -2
  104. package/dist/leu-progress-bar.js +2 -2
  105. package/dist/leu-radio-group.js +3 -3
  106. package/dist/leu-radio.js +2 -2
  107. package/dist/leu-range.js +2 -2
  108. package/dist/leu-scroll-top.js +5 -5
  109. package/dist/leu-select.js +9 -9
  110. package/dist/leu-spinner.js +2 -2
  111. package/dist/leu-tab-group.js +4 -4
  112. package/dist/leu-tab-panel.js +2 -2
  113. package/dist/leu-tab.js +2 -2
  114. package/dist/leu-table.js +7 -7
  115. package/dist/leu-tag.js +2 -2
  116. package/dist/leu-visually-hidden.js +2 -2
  117. package/dist/vscode.html-custom-data.json +11 -11
  118. package/dist/vue/index.d.ts +20 -20
  119. package/dist/web-types.json +28 -28
  120. package/package.json +4 -1
  121. package/.editorconfig +0 -29
  122. package/.github/workflows/ci.yml +0 -81
  123. package/.github/workflows/deploy-github-pages.yaml +0 -34
  124. package/.github/workflows/publish.yml +0 -28
  125. package/.github/workflows/release-please.yml +0 -19
  126. package/.husky/commit-msg +0 -1
  127. package/.husky/pre-commit +0 -1
  128. package/.nvmrc +0 -1
  129. package/.prettierignore +0 -2
  130. package/.release-please-manifest.json +0 -3
  131. package/.storybook/main.ts +0 -34
  132. package/.storybook/manager-head.html +0 -1
  133. package/.storybook/manager.ts +0 -6
  134. package/.storybook/preview.ts +0 -96
  135. package/.storybook/static/fonts/Inter-Black.woff2 +0 -0
  136. package/.storybook/static/fonts/Inter-Regular.woff2 +0 -0
  137. package/.storybook/static/fonts.css +0 -11
  138. package/.storybook/static/global.css +0 -5
  139. package/.storybook/static/logo.svg +0 -19
  140. package/.storybook/theme.ts +0 -8
  141. package/AGENTS.md +0 -162
  142. package/CHANGELOG.md +0 -601
  143. package/CODE_OF_CONDUCT.md +0 -128
  144. package/CONTRIBUTING.md +0 -42
  145. package/commitlint.config.cjs +0 -1
  146. package/custom-elements-manifest.config.js +0 -46
  147. package/eslint.config.mjs +0 -79
  148. package/postcss.config.cjs +0 -16
  149. package/release-please-config.json +0 -9
  150. package/scripts/generate-component/generate.js +0 -167
  151. package/scripts/generate-component/templates/[Name].ts +0 -31
  152. package/scripts/generate-component/templates/[name].css +0 -6
  153. package/scripts/generate-component/templates/[namespace]-[name].ts +0 -11
  154. package/scripts/generate-component/templates/stories/[name].stories.ts +0 -26
  155. package/scripts/generate-component/templates/test/[name].test.ts +0 -23
  156. package/scripts/postcss-leu-font-styles.cjs +0 -154
  157. package/src/components/accordion/Accordion.ts +0 -108
  158. package/src/components/accordion/accordion.css +0 -150
  159. package/src/components/accordion/leu-accordion.ts +0 -11
  160. package/src/components/accordion/stories/accordion.stories.ts +0 -62
  161. package/src/components/accordion/test/accordion.test.ts +0 -118
  162. package/src/components/button/Button.ts +0 -286
  163. package/src/components/button/button.css +0 -317
  164. package/src/components/button/leu-button.ts +0 -11
  165. package/src/components/button/stories/button.stories.ts +0 -366
  166. package/src/components/button/test/button.test.ts +0 -417
  167. package/src/components/button-group/ButtonGroup.ts +0 -97
  168. package/src/components/button-group/button-group.css +0 -5
  169. package/src/components/button-group/leu-button-group.ts +0 -11
  170. package/src/components/button-group/stories/button-group.stories.ts +0 -54
  171. package/src/components/button-group/test/button-group.test.ts +0 -105
  172. package/src/components/chart-wrapper/ChartWrapper.ts +0 -78
  173. package/src/components/chart-wrapper/chart-wrapper.css +0 -87
  174. package/src/components/chart-wrapper/leu-chart-wrapper.ts +0 -11
  175. package/src/components/chart-wrapper/stories/chart-wrapper.stories.ts +0 -58
  176. package/src/components/chart-wrapper/test/chart-wrapper.test.ts +0 -77
  177. package/src/components/checkbox/Checkbox.ts +0 -129
  178. package/src/components/checkbox/CheckboxGroup.ts +0 -57
  179. package/src/components/checkbox/checkbox-group.css +0 -29
  180. package/src/components/checkbox/checkbox.css +0 -81
  181. package/src/components/checkbox/leu-checkbox-group.ts +0 -11
  182. package/src/components/checkbox/leu-checkbox.ts +0 -11
  183. package/src/components/checkbox/stories/checkbox-group.stories.ts +0 -59
  184. package/src/components/checkbox/stories/checkbox.stories.ts +0 -72
  185. package/src/components/checkbox/test/checkbox-group.test.ts +0 -109
  186. package/src/components/checkbox/test/checkbox.test.ts +0 -247
  187. package/src/components/chip/Chip.ts +0 -19
  188. package/src/components/chip/ChipGroup.ts +0 -122
  189. package/src/components/chip/ChipLink.ts +0 -24
  190. package/src/components/chip/ChipRemovable.ts +0 -45
  191. package/src/components/chip/ChipSelectable.ts +0 -80
  192. package/src/components/chip/chip-group.css +0 -15
  193. package/src/components/chip/chip.css +0 -139
  194. package/src/components/chip/exports.ts +0 -4
  195. package/src/components/chip/leu-chip-group.ts +0 -11
  196. package/src/components/chip/leu-chip-link.ts +0 -11
  197. package/src/components/chip/leu-chip-removable.ts +0 -11
  198. package/src/components/chip/leu-chip-selectable.ts +0 -11
  199. package/src/components/chip/stories/chip-group.stories.ts +0 -159
  200. package/src/components/chip/stories/chip-link.stories.ts +0 -45
  201. package/src/components/chip/stories/chip-removable.stories.ts +0 -42
  202. package/src/components/chip/stories/chip-selectable.stories.ts +0 -54
  203. package/src/components/chip/test/chip-group.test.ts +0 -171
  204. package/src/components/chip/test/chip-link.test.ts +0 -54
  205. package/src/components/chip/test/chip-removable.test.ts +0 -105
  206. package/src/components/chip/test/chip-selectable.test.ts +0 -101
  207. package/src/components/chip/test/chip.test.ts +0 -22
  208. package/src/components/dialog/Dialog.ts +0 -86
  209. package/src/components/dialog/dialog.css +0 -157
  210. package/src/components/dialog/leu-dialog.ts +0 -11
  211. package/src/components/dialog/stories/dialog.stories.ts +0 -142
  212. package/src/components/dialog/test/dialog.test.ts +0 -85
  213. package/src/components/dropdown/Dropdown.ts +0 -152
  214. package/src/components/dropdown/dropdown.css +0 -16
  215. package/src/components/dropdown/leu-dropdown.ts +0 -11
  216. package/src/components/dropdown/stories/dropdown.stories.ts +0 -58
  217. package/src/components/dropdown/test/dropdown.test.ts +0 -59
  218. package/src/components/file-input/FileInput.ts +0 -324
  219. package/src/components/file-input/file-input.css +0 -118
  220. package/src/components/file-input/leu-file-input.ts +0 -11
  221. package/src/components/file-input/stories/file-input.stories.ts +0 -45
  222. package/src/components/file-input/test/file-input.test.ts +0 -62
  223. package/src/components/icon/Icon.ts +0 -47
  224. package/src/components/icon/icon.css +0 -10
  225. package/src/components/icon/leu-icon.ts +0 -11
  226. package/src/components/icon/paths.ts +0 -219
  227. package/src/components/icon/stories/icon.stories.ts +0 -79
  228. package/src/components/icon/test/icon.test.ts +0 -50
  229. package/src/components/input/Input.ts +0 -469
  230. package/src/components/input/input.css +0 -238
  231. package/src/components/input/leu-input.ts +0 -11
  232. package/src/components/input/stories/input.stories.ts +0 -204
  233. package/src/components/input/test/input.test.ts +0 -603
  234. package/src/components/menu/Menu.ts +0 -149
  235. package/src/components/menu/MenuItem.ts +0 -168
  236. package/src/components/menu/leu-menu-item.ts +0 -11
  237. package/src/components/menu/leu-menu.ts +0 -11
  238. package/src/components/menu/menu-item.css +0 -77
  239. package/src/components/menu/menu.css +0 -19
  240. package/src/components/menu/stories/menu-item.stories.ts +0 -81
  241. package/src/components/menu/stories/menu.stories.ts +0 -54
  242. package/src/components/menu/test/menu-item.test.ts +0 -210
  243. package/src/components/menu/test/menu.test.ts +0 -125
  244. package/src/components/message/Message.ts +0 -118
  245. package/src/components/message/leu-message.ts +0 -11
  246. package/src/components/message/message.css +0 -163
  247. package/src/components/message/stories/message.mdx +0 -76
  248. package/src/components/message/stories/message.stories.ts +0 -149
  249. package/src/components/message/test/message.test.ts +0 -96
  250. package/src/components/pagination/Pagination.ts +0 -192
  251. package/src/components/pagination/leu-pagination.ts +0 -11
  252. package/src/components/pagination/pagination.css +0 -54
  253. package/src/components/pagination/stories/pagination.stories.ts +0 -115
  254. package/src/components/pagination/test/pagination.test.ts +0 -210
  255. package/src/components/placeholder/Placeholder.ts +0 -33
  256. package/src/components/placeholder/leu-placeholder.ts +0 -11
  257. package/src/components/placeholder/placeholder.css +0 -59
  258. package/src/components/placeholder/stories/placeholder.stories.ts +0 -34
  259. package/src/components/placeholder/test/placeholder.test.ts +0 -31
  260. package/src/components/popup/Popup.ts +0 -264
  261. package/src/components/popup/leu-popup.ts +0 -11
  262. package/src/components/popup/popup.css +0 -24
  263. package/src/components/popup/stories/popup.stories.ts +0 -117
  264. package/src/components/popup/test/popup.test.ts +0 -90
  265. package/src/components/progress-bar/ProgressBar.ts +0 -52
  266. package/src/components/progress-bar/leu-progress-bar.ts +0 -11
  267. package/src/components/progress-bar/progress-bar.css +0 -97
  268. package/src/components/progress-bar/stories/progress-bar.stories.ts +0 -39
  269. package/src/components/progress-bar/test/progress-bar.test.ts +0 -61
  270. package/src/components/radio/Radio.ts +0 -59
  271. package/src/components/radio/RadioGroup.ts +0 -181
  272. package/src/components/radio/leu-radio-group.ts +0 -11
  273. package/src/components/radio/leu-radio.ts +0 -11
  274. package/src/components/radio/radio-group.css +0 -29
  275. package/src/components/radio/radio.css +0 -76
  276. package/src/components/radio/stories/radio-group.stories.ts +0 -54
  277. package/src/components/radio/stories/radio.stories.ts +0 -55
  278. package/src/components/radio/test/radio-group.test.ts +0 -83
  279. package/src/components/radio/test/radio.test.ts +0 -119
  280. package/src/components/range/Range.ts +0 -400
  281. package/src/components/range/leu-range.ts +0 -11
  282. package/src/components/range/range.css +0 -227
  283. package/src/components/range/stories/range.stories.ts +0 -185
  284. package/src/components/range/test/range.test.ts +0 -228
  285. package/src/components/scroll-top/ScrollTop.ts +0 -91
  286. package/src/components/scroll-top/leu-scroll-top.ts +0 -11
  287. package/src/components/scroll-top/scroll-top.css +0 -50
  288. package/src/components/scroll-top/stories/scroll-top.stories.ts +0 -217
  289. package/src/components/scroll-top/test/scroll-top.test.ts +0 -22
  290. package/src/components/select/Select.ts +0 -570
  291. package/src/components/select/leu-select.ts +0 -11
  292. package/src/components/select/select.css +0 -222
  293. package/src/components/select/stories/select.stories.ts +0 -173
  294. package/src/components/select/test/fixtures.ts +0 -162
  295. package/src/components/select/test/select.test.ts +0 -937
  296. package/src/components/spinner/Spinner.ts +0 -31
  297. package/src/components/spinner/leu-spinner.ts +0 -11
  298. package/src/components/spinner/spinner.css +0 -20
  299. package/src/components/spinner/stories/spinner.stories.ts +0 -29
  300. package/src/components/spinner/test/spinner.test.ts +0 -30
  301. package/src/components/tab/Tab.ts +0 -72
  302. package/src/components/tab/TabGroup.ts +0 -267
  303. package/src/components/tab/TabPanel.ts +0 -59
  304. package/src/components/tab/leu-tab-group.ts +0 -11
  305. package/src/components/tab/leu-tab-panel.ts +0 -11
  306. package/src/components/tab/leu-tab.ts +0 -11
  307. package/src/components/tab/stories/tab.stories.ts +0 -97
  308. package/src/components/tab/tab-group.css +0 -63
  309. package/src/components/tab/tab-panel.css +0 -10
  310. package/src/components/tab/tab.css +0 -54
  311. package/src/components/tab/test/tab-group.test.ts +0 -426
  312. package/src/components/tab/test/tab-panel.test.ts +0 -102
  313. package/src/components/tab/test/tab.test.ts +0 -139
  314. package/src/components/table/Table.ts +0 -253
  315. package/src/components/table/leu-table.ts +0 -11
  316. package/src/components/table/stories/table.stories.ts +0 -131
  317. package/src/components/table/table.css +0 -112
  318. package/src/components/table/test/table.test.ts +0 -37
  319. package/src/components/tag/Tag.ts +0 -28
  320. package/src/components/tag/leu-tag.ts +0 -11
  321. package/src/components/tag/stories/tag.stories.ts +0 -107
  322. package/src/components/tag/tag.css +0 -42
  323. package/src/components/tag/test/tag.test.ts +0 -28
  324. package/src/components/visually-hidden/VisuallyHidden.ts +0 -16
  325. package/src/components/visually-hidden/leu-visually-hidden.ts +0 -11
  326. package/src/components/visually-hidden/stories/visually-hidden.stories.ts +0 -22
  327. package/src/components/visually-hidden/test/visually-hidden.test.ts +0 -34
  328. package/src/components/visually-hidden/visually-hidden.css +0 -10
  329. package/src/docs/contributing.mdx +0 -154
  330. package/src/docs/installation.mdx +0 -35
  331. package/src/docs/theme.mdx +0 -400
  332. package/src/docs/usage.mdx +0 -73
  333. package/src/global.d.ts +0 -11
  334. package/src/index.ts +0 -29
  335. package/src/lib/LeuElement.ts +0 -43
  336. package/src/lib/a11y.ts +0 -26
  337. package/src/lib/hasSlotController.ts +0 -74
  338. package/src/lib/mixins/FormAssociatedMixin.ts +0 -115
  339. package/src/lib/styleMap.ts +0 -139
  340. package/src/lib/utils.ts +0 -45
  341. package/src/styles/common-styles.css +0 -14
  342. package/src/styles/custom-media.css +0 -6
  343. package/src/styles/font-definitions.json +0 -210
  344. package/src/styles/style.stories.ts +0 -64
  345. package/src/styles/theme.css +0 -90
  346. package/stat_zh.png +0 -0
  347. package/stylelint.config.mjs +0 -23
  348. package/tsconfig.build.json +0 -24
  349. package/tsconfig.json +0 -14
  350. package/tsdown.config.ts +0 -35
  351. package/web-test-runner.config.mjs +0 -102
@@ -1,149 +0,0 @@
1
- import { Meta, StoryObj } from "@storybook/web-components-vite"
2
- import { html, TemplateResult } from "lit"
3
- import { action } from "storybook/actions"
4
-
5
- import "../leu-message.js"
6
- import "../../button/leu-button.js"
7
- import { LeuMessage } from "../Message.js"
8
-
9
- type StoryArgs = LeuMessage
10
- type Story = StoryObj<StoryArgs>
11
-
12
- export default {
13
- title: "Components/Message",
14
- component: "leu-message",
15
- parameters: {
16
- design: {
17
- type: "figma",
18
- url: "https://www.figma.com/design/d6Pv21UVUbnBs3AdcZijHmbN/KTZH-Design-System?node-id=316-4172&p=f&t=RVDlqNcmiHHiwE5P-11",
19
- },
20
- },
21
- argTypes: {
22
- type: {
23
- control: "select",
24
- options: ["error", "success", "info", "warning"],
25
- },
26
- size: {
27
- control: "select",
28
- options: ["regular", "large"],
29
- },
30
- "--leu-message-accent-color": {
31
- control: {
32
- type: "color",
33
- presetColors: [
34
- "#0076bd",
35
- "#00407c",
36
- "#00797b",
37
- "#1a7f1f",
38
- "#b01657",
39
- "#d40053",
40
- "#7f3da7",
41
- "#666666",
42
- ],
43
- },
44
- },
45
- },
46
- args: {
47
- type: "success",
48
- size: "regular",
49
- removable: true,
50
- onRemove: action("leu:remove"),
51
- },
52
- } satisfies Meta<StoryArgs>
53
-
54
- const baseRender =
55
- (messageContent: (args: StoryArgs) => TemplateResult) => (args: StoryArgs) =>
56
- html` <leu-message
57
- style="--leu-message-accent-color: ${args["--leu-message-accent-color"] ??
58
- "unset"};"
59
- type=${args.type}
60
- size=${args.size}
61
- ?removable=${args.removable}
62
- ?popup=${args.popup}
63
- @leu:remove=${args.onRemove}
64
- >
65
- ${messageContent(args)}
66
- </leu-message>`
67
-
68
- const Template: Story = {
69
- render: baseRender(
70
- (args) =>
71
- html`<strong>Nachricht Titel</strong><br />
72
- Beschreibungstext einer Nachricht
73
- <leu-button
74
- slot="cta"
75
- variant="secondary"
76
- size="small"
77
- ?inverted=${args.type === "error" || args.type === "success"}
78
- >
79
- Rückgängig
80
- </leu-button>`,
81
- ),
82
- }
83
-
84
- export const Success = {
85
- ...Template,
86
- args: {
87
- type: "success",
88
- size: "large",
89
- },
90
- }
91
-
92
- export const Error = {
93
- ...Template,
94
- args: {
95
- type: "error",
96
- size: "large",
97
- },
98
- }
99
-
100
- export const Warning = {
101
- ...Template,
102
- args: {
103
- type: "warning",
104
- size: "large",
105
- },
106
- }
107
-
108
- export const Info = {
109
- ...Template,
110
- render: baseRender(
111
- () =>
112
- html`<strong>Nachricht Titel</strong><br />
113
- Beschreibungstext einer Nachricht`,
114
- ),
115
- args: {
116
- type: "info",
117
- size: "large",
118
- },
119
- }
120
-
121
- export const CustomColor = {
122
- ...Template,
123
- render: baseRender(
124
- () =>
125
- html`<strong>Entscheid wurde auf den 21.12.2024 verschoben</strong><br />
126
- Aufgrund ausstehender Abklärungen wurde der Termin verschoben.`,
127
- ),
128
- args: {
129
- type: "info",
130
- size: "large",
131
- "--message-accent-color": "#00797b",
132
- },
133
- }
134
-
135
- export const Small = {
136
- ...Template,
137
- render: baseRender(() => html`Nachricht ohne Titel`),
138
- args: {
139
- type: "success",
140
- },
141
- }
142
-
143
- export const Popup = {
144
- ...Small,
145
- args: {
146
- ...Small.args,
147
- popup: true,
148
- },
149
- }
@@ -1,96 +0,0 @@
1
- import { html } from "lit"
2
- import { fixture, expect, oneEvent } from "@open-wc/testing"
3
-
4
- import "../leu-message.js"
5
- import { LeuMessage } from "../Message.js"
6
- import { LeuIcon } from "../../icon/Icon.js"
7
-
8
- async function defaultFixture({ removable = false } = {}): Promise<LeuMessage> {
9
- return fixture(
10
- html`<leu-message ?removable=${removable}>
11
- <strong>Entscheid wurde auf den 21.12.2024 verschoben</strong><br />
12
- Aufgrund ausstehender Abklärungen wurde der Termin verschoben.
13
- </leu-message>`,
14
- )
15
- }
16
-
17
- describe("LeuMessage", () => {
18
- it("is a defined element", async () => {
19
- const el = customElements.get("leu-message")
20
-
21
- expect(el).not.to.be.undefined
22
- })
23
-
24
- it("passes the a11y audit", async () => {
25
- const el = await defaultFixture()
26
-
27
- await expect(el).shadowDom.to.be.accessible()
28
- })
29
-
30
- it("renders the message content", async () => {
31
- const el = await defaultFixture()
32
-
33
- expect(el).to.contain.text("Entscheid wurde auf den 21.12.2024 verschoben")
34
-
35
- expect(el).to.contain.text(
36
- "Aufgrund ausstehender Abklärungen wurde der Termin verschoben.",
37
- )
38
- })
39
-
40
- it("renders the remove button according to its 'removable' property", async () => {
41
- const el = await defaultFixture({ removable: true })
42
-
43
- let removeButton = el.shadowRoot?.querySelector(".message__remove")
44
-
45
- expect(removeButton).to.exist
46
-
47
- el.removable = false
48
- await el.updateComplete
49
-
50
- removeButton = el.shadowRoot?.querySelector(".message__remove")
51
-
52
- expect(removeButton).to.not.exist
53
- })
54
-
55
- it("dispatches 'leu:remove' event when remove button is clicked", async () => {
56
- const el = await defaultFixture({ removable: true })
57
-
58
- const button = el.shadowRoot?.querySelector(
59
- ".message__remove",
60
- ) as HTMLButtonElement
61
-
62
- setTimeout(() => button.click())
63
-
64
- const event = await oneEvent(el, "leu:remove", false)
65
-
66
- expect(event).to.exist
67
- })
68
-
69
- it("renders the correct icon based on the type", async () => {
70
- const el = await defaultFixture()
71
-
72
- const icon = el.shadowRoot?.querySelector(".message__icon") as LeuIcon
73
-
74
- expect(icon).to.exist
75
-
76
- el.type = "success"
77
- await el.updateComplete
78
-
79
- expect(icon.name).to.equal("confirm")
80
-
81
- el.type = "error"
82
- await el.updateComplete
83
-
84
- expect(icon.name).to.equal("caution")
85
-
86
- el.type = "info"
87
- await el.updateComplete
88
-
89
- expect(icon.name).to.equal("getInformation")
90
-
91
- el.type = "warning"
92
- await el.updateComplete
93
-
94
- expect(icon.name).to.equal("caution")
95
- })
96
- })
@@ -1,192 +0,0 @@
1
- import { html } from "lit"
2
- import { live } from "lit/directives/live.js"
3
- import { property, state } from "lit/decorators.js"
4
-
5
- import { LeuElement } from "../../lib/LeuElement.js"
6
- import { LeuButton } from "../button/Button.js"
7
- import { LeuVisuallyHidden } from "../visually-hidden/VisuallyHidden.js"
8
- import { LeuIcon } from "../icon/Icon.js"
9
-
10
- import styles from "./pagination.css?inline"
11
-
12
- const MIN_PAGE = 1
13
-
14
- /**
15
- * @tagname leu-pagination
16
- */
17
- export class LeuPagination extends LeuElement {
18
- static dependencies = {
19
- "leu-button": LeuButton,
20
- "leu-icon": LeuIcon,
21
- "leu-visually-hidden": LeuVisuallyHidden,
22
- }
23
-
24
- static styles = [LeuElement.styles, styles]
25
-
26
- /**
27
- * @internal
28
- */
29
- static shadowRootOptions = {
30
- ...LeuElement.shadowRootOptions,
31
- delegatesFocus: true,
32
- }
33
-
34
- @property({ type: Number, reflect: true })
35
- defaultPage?: number
36
-
37
- /**
38
- * Number of items per page.
39
- */
40
- @property({ type: Number, reflect: true })
41
- itemsPerPage: number = 1
42
-
43
- /**
44
- * Total number of items to paginate.
45
- */
46
- @property({ type: Number, reflect: true })
47
- numOfItems: number = 1
48
-
49
- /**
50
- * Internal page state that contains an
51
- * already clamped page number. Should only
52
- * be accessed through the `page` getter and
53
- * setter.
54
- * @internal
55
- */
56
- @state()
57
- private _page: number = 1
58
-
59
- attributeChangedCallback(name, oldVal, newVal) {
60
- super.attributeChangedCallback(name, oldVal, newVal)
61
-
62
- if (name === "defaultpage" && newVal !== oldVal) {
63
- this.page = parseInt(newVal, 10)
64
- }
65
- }
66
-
67
- /**
68
- * The current page number. This is a 1-based index.
69
- * When setting this value, it will be clamped
70
- * to the range of valid pages.
71
- */
72
- get page() {
73
- return this._page
74
- }
75
-
76
- set page(page) {
77
- this._page = this._clampPage(page)
78
- }
79
-
80
- /**
81
- * The index of the first item on the current page.
82
- */
83
- get startIndex() {
84
- return (this.page - 1) * this.itemsPerPage
85
- }
86
-
87
- /**
88
- * The index of the last item on the current page.
89
- * This is exclusive, meaning it is one past the last item.
90
- *
91
- * @todo This value should be inclusive, meaning it should be the index of the last item on the page.
92
- */
93
- get endIndex() {
94
- return Math.min(this.startIndex + this.itemsPerPage, this.numOfItems)
95
- }
96
-
97
- get _maxPage() {
98
- return Math.ceil(this.numOfItems / this.itemsPerPage)
99
- }
100
-
101
- private _isFirstPage() {
102
- return this.page === MIN_PAGE
103
- }
104
-
105
- private _isLastPage() {
106
- return this.page === this._maxPage
107
- }
108
-
109
- private _clampPage(page: number) {
110
- return Math.min(Math.max(page, MIN_PAGE), this._maxPage)
111
- }
112
-
113
- private _updatePage(page) {
114
- const prevPage = this.page
115
- this.page = this._clampPage(page)
116
-
117
- if (this.page !== prevPage) {
118
- this.dispatchEvent(
119
- new CustomEvent("leu:pagechange", {
120
- detail: {
121
- startIndex: this.startIndex,
122
- endIndex: this.endIndex,
123
- page: this.page,
124
- },
125
- bubbles: false,
126
- }),
127
- )
128
- }
129
- }
130
-
131
- private _handleChange(event: Event & { target: HTMLInputElement }) {
132
- this._updatePage(parseInt(event.target.value, 10) || 0)
133
- }
134
-
135
- private _handleInput(event: InputEvent & { target: HTMLInputElement }) {
136
- if (event.target.value !== "") {
137
- event.preventDefault()
138
- this._handleChange(event)
139
- }
140
- }
141
-
142
- private _handleKeyDown(event: KeyboardEvent & { target: HTMLInputElement }) {
143
- if (event.key === "ArrowUp") {
144
- event.preventDefault()
145
- this._updatePage(this.page + 1)
146
- }
147
- if (event.key === "ArrowDown") {
148
- event.preventDefault()
149
- this._updatePage(this.page - 1)
150
- }
151
- }
152
-
153
- render() {
154
- return html`
155
- <leu-visually-hidden>
156
- <label for="page-input">Aktuelle Seite</label>
157
- </leu-visually-hidden>
158
- <input
159
- id="page-input"
160
- class="input"
161
- min=${MIN_PAGE}
162
- max=${this._maxPage}
163
- .value=${live(this.page.toString())}
164
- @input=${this._handleInput}
165
- @change=${this._handleChange}
166
- @keydown=${this._handleKeyDown}
167
- type="number"
168
- />
169
- <div class="label">von ${this._maxPage}</div>
170
- <div class="button-group">
171
- <leu-button
172
- variant="secondary"
173
- label="Vorherige Seite"
174
- @click=${() => {
175
- this._updatePage(this.page - 1)
176
- }}
177
- ?disabled=${this._isFirstPage()}
178
- ><leu-icon name="angleLeft"></leu-icon
179
- ></leu-button>
180
- <leu-button
181
- variant="secondary"
182
- label="Nächste Seite"
183
- @click=${() => {
184
- this._updatePage(this.page + 1)
185
- }}
186
- ?disabled=${this._isLastPage()}
187
- ><leu-icon name="angleRight"></leu-icon
188
- ></leu-button>
189
- </div>
190
- `
191
- }
192
- }
@@ -1,11 +0,0 @@
1
- import { LeuPagination } from "./Pagination.js"
2
-
3
- export { LeuPagination }
4
-
5
- LeuPagination.define("leu-pagination")
6
-
7
- declare global {
8
- interface HTMLElementTagNameMap {
9
- "leu-pagination": LeuPagination
10
- }
11
- }
@@ -1,54 +0,0 @@
1
- :host {
2
- margin-top: 16px;
3
- display: flex;
4
- justify-content: flex-end;
5
- font-family: var(--leu-font-family-regular);
6
- }
7
-
8
- .input {
9
- width: 50px;
10
- padding: 0;
11
- border: 2px solid var(--leu-color-black-40);
12
- border-radius: 2px;
13
- color: var(--leu-color-black-transp-60);
14
- text-align: center;
15
- font-size: 16px;
16
- font-style: normal;
17
- font-weight: 400;
18
- line-height: 24px;
19
- outline-offset: 2px;
20
- }
21
-
22
- /* no arrows: Chrome, Safari, Edge, Opera */
23
- .input::-webkit-outer-spin-button,
24
- .input::-webkit-inner-spin-button {
25
- appearance: none;
26
- margin: 0;
27
- }
28
-
29
- /* no arrows: Firefox */
30
- .input[type="number"] {
31
- appearance: textfield;
32
- }
33
-
34
- .input:focus,
35
- .input:hover {
36
- border-color: var(--leu-color-func-cyan);
37
- outline: none;
38
- }
39
-
40
- .input:focus-visible {
41
- outline: 2px solid var(--leu-color-func-cyan);
42
- }
43
-
44
- .label {
45
- margin: 0 16px;
46
- line-height: 50px;
47
- color: var(--leu-color-black-transp-60);
48
- white-space: nowrap;
49
- }
50
-
51
- .button-group {
52
- display: flex;
53
- gap: 0.25rem;
54
- }
@@ -1,115 +0,0 @@
1
- import { html } from "lit"
2
- import { ifDefined } from "lit/directives/if-defined.js"
3
-
4
- // https://stackoverflow.com/questions/72566428/storybook-angular-how-to-dynamically-update-args-from-the-template
5
- import { UPDATE_STORY_ARGS } from "storybook/internal/core-events"
6
- import { action, HandlerFunction } from "storybook/actions"
7
- import { Meta, StoryObj } from "@storybook/web-components-vite"
8
-
9
- import "../leu-pagination.js"
10
- import { LeuPagination } from "../Pagination.js"
11
-
12
- interface ExtraArgs {
13
- onPageChange: HandlerFunction
14
- }
15
-
16
- type StoryArgs = LeuPagination & ExtraArgs
17
- type Story = StoryObj<StoryArgs>
18
-
19
- function updateStorybookArgss(id, args) {
20
- const channel = window.__STORYBOOK_ADDONS_CHANNEL__
21
- channel.emit(UPDATE_STORY_ARGS, {
22
- storyId: id,
23
- updatedArgs: args,
24
- })
25
- }
26
-
27
- const items = [
28
- { id: 1, label: "Ananas", value: 7 },
29
- { id: 2, label: "Apfel", value: 12 },
30
- { id: 3, label: "Aprikose", value: 3 },
31
- { id: 4, label: "Banare", value: 11 },
32
- { id: 5, label: "Birne", value: 10 },
33
- { id: 6, label: "Brombeere", value: 5 },
34
- { id: 7, label: "Cranberries", value: 3 },
35
- { id: 8, label: "Datteln", value: 2 },
36
- { id: 9, label: "Erdbeere", value: 0 },
37
- { id: 10, label: "Feige", value: 11 },
38
- { id: 11, label: "Granatapfel", value: 14 },
39
- { id: 12, label: "Grapefruit", value: 7 },
40
- { id: 13, label: "Heidelbeere", value: 12 },
41
- { id: 14, label: "Himbeere", value: 3 },
42
- { id: 15, label: "Johannisbeere", value: 11 },
43
- { id: 16, label: "Kirsche", value: 10 },
44
- { id: 17, label: "Kiwi", value: 5 },
45
- { id: 18, label: "Limette", value: 3 },
46
- { id: 19, label: "Litschi", value: 2 },
47
- { id: 20, label: "Mandarine", value: 0 },
48
- { id: 21, label: "Mango", value: 11 },
49
- { id: 22, label: "Melone", value: 14 },
50
- { id: 23, label: "Mirabelle", value: 14 },
51
- { id: 24, label: "Nashi", value: 12 },
52
- { id: 25, label: "Orange", value: 3 },
53
- { id: 26, label: "Papaya", value: 6 },
54
- { id: 27, label: "Pfirsich", value: 5 },
55
- { id: 28, label: "Pflaume", value: 17 },
56
- { id: 29, label: "Physalis", value: 1 },
57
- { id: 30, label: "Preiselbeere", value: 19 },
58
- { id: 31, label: "Pomelo", value: 12 },
59
- { id: 32, label: "Quitte", value: 0 },
60
- { id: 33, label: "Rhabarber", value: 1 },
61
- { id: 34, label: "Sanddorn", value: 2 },
62
- { id: 35, label: "Stachelbeere", value: 19 },
63
- { id: 36, label: "Ugli", value: 9 },
64
- { id: 37, label: "Weintraube", value: 11 },
65
- { id: 38, label: "Zitrone", value: 4 },
66
- { id: 39, label: "Zwetschge", value: 20 },
67
- ]
68
-
69
- export default {
70
- title: "Components/Pagination",
71
- component: "leu-pagination",
72
- args: {
73
- onPageChange: action("leu:pagechange"),
74
- },
75
- parameters: {
76
- design: {
77
- type: "figma",
78
- url: "https://www.figma.com/file/d6Pv21UVUbnBs3AdcZijHmbN/KTZH-Design-System?type=design&node-id=17341-82468&mode=design&t=lzVrtq8lxYVJU5TB-11",
79
- },
80
- },
81
- } satisfies Meta<StoryArgs>
82
-
83
- const Template: Story = {
84
- render: (
85
- { startIndex, endIndex, onPageChange, itemsPerPage, defaultPage },
86
- { id },
87
- ) => html`
88
- ${items
89
- .slice(startIndex, endIndex)
90
- .map((item) => html`<div>${item.label}</div>`)}
91
- <leu-pagination
92
- numOfItems=${items.length}
93
- itemsPerPage=${ifDefined(itemsPerPage)}
94
- defaultPage=${ifDefined(defaultPage)}
95
- @leu:pagechange=${(e) => {
96
- onPageChange(e)
97
- updateStorybookArgss(id, {
98
- startIndex: e.detail.startIndex,
99
- endIndex: e.detail.endIndex,
100
- })
101
- }}
102
- >
103
- </leu-pagination>
104
- `,
105
- }
106
-
107
- export const Regular: Story = {
108
- ...Template,
109
- args: {
110
- startIndex: 0,
111
- endIndex: 5,
112
- itemsPerPage: 5,
113
- // defaultPage: 2,
114
- },
115
- }