@statistikzh/leu 0.28.1 → 0.28.2

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 (348) hide show
  1. package/dist/{Accordion-CwkI7sfx.js → Accordion-CaDTUDJG.js} +1 -1
  2. package/dist/Accordion.js +2 -2
  3. package/dist/{Button-D1aYnunQ.js → Button-BF3_6xgs.js} +3 -3
  4. package/dist/Button.js +4 -4
  5. package/dist/{ButtonGroup-CqThYjzX.js → ButtonGroup-grJiWGHI.js} +2 -2
  6. package/dist/ButtonGroup.js +5 -5
  7. package/dist/{ChartWrapper-BjVT4x-H.js → ChartWrapper-CeolXijF.js} +2 -2
  8. package/dist/ChartWrapper.js +3 -3
  9. package/dist/{Checkbox-HxYqp2w4.js → Checkbox-DGUZ1XtB.js} +2 -2
  10. package/dist/Checkbox.js +3 -3
  11. package/dist/{CheckboxGroup-DYws2rwt.js → CheckboxGroup-CGdyk_RP.js} +2 -2
  12. package/dist/CheckboxGroup.js +4 -4
  13. package/dist/{Chip-gKxD6IaZ.js → Chip-BpKH3_Nk.js} +1 -1
  14. package/dist/Chip.js +2 -2
  15. package/dist/{ChipGroup-ZvBzX_wd.js → ChipGroup-dSAMpfy1.js} +1 -1
  16. package/dist/ChipGroup.js +3 -3
  17. package/dist/ChipLink.js +2 -2
  18. package/dist/ChipRemovable.js +3 -3
  19. package/dist/ChipSelectable.js +2 -2
  20. package/dist/{Dialog-BYpzTprV.js → Dialog-CC674l80.js} +2 -2
  21. package/dist/Dialog.js +3 -3
  22. package/dist/{Dropdown-C4CgE4E-.js → Dropdown-B9YTM5N_.js} +5 -5
  23. package/dist/Dropdown.d.ts +2 -2
  24. package/dist/Dropdown.js +8 -8
  25. package/dist/{FileInput-nsnSQCaU.js → FileInput-D4kyWFkL.js} +4 -4
  26. package/dist/FileInput.js +6 -6
  27. package/dist/{Icon-D8HTPEFH.js → Icon-DOcb_NlX.js} +1 -1
  28. package/dist/Icon.js +2 -2
  29. package/dist/{Input-OrILqlax.js → Input-6Xu1N2sA.js} +2 -2
  30. package/dist/Input.js +3 -3
  31. package/dist/{LeuElement-C_lcHzQI.js → LeuElement-C3HedxlQ.js} +1 -1
  32. package/dist/{Menu-CFLCnI34.js → Menu-CJtyuUvP.js} +2 -2
  33. package/dist/{Menu-Z2b7dsB5.d.ts → Menu-txbYINTW.d.ts} +1 -1
  34. package/dist/Menu.d.ts +1 -1
  35. package/dist/Menu.js +4 -4
  36. package/dist/{MenuItem-LY4TRIho.d.ts → MenuItem-9TTOrL0Z.d.ts} +1 -1
  37. package/dist/{MenuItem-ICjLCGim.js → MenuItem-ClSE3auh.js} +2 -2
  38. package/dist/MenuItem.d.ts +1 -1
  39. package/dist/MenuItem.js +3 -3
  40. package/dist/{Message-Dw5D_0i1.js → Message-C55ydBaU.js} +2 -2
  41. package/dist/Message.js +3 -3
  42. package/dist/{Pagination-D1tP5FrM.js → Pagination-BVwKLcd5.js} +4 -4
  43. package/dist/Pagination.js +6 -6
  44. package/dist/{Placeholder-CnGzCZ5-.js → Placeholder-DFNppiVf.js} +1 -1
  45. package/dist/Placeholder.js +2 -2
  46. package/dist/{Popup-BiN_tZDN.js → Popup-D91ZiFWh.js} +1 -1
  47. package/dist/Popup.js +2 -2
  48. package/dist/{ProgressBar-BfJo_KyU.js → ProgressBar-DQGO2we8.js} +1 -1
  49. package/dist/ProgressBar.js +2 -2
  50. package/dist/{Radio-CV7vuQUj.js → Radio-BetZNoUQ.js} +1 -1
  51. package/dist/Radio.js +2 -2
  52. package/dist/{RadioGroup-C3XWSScc.js → RadioGroup-DzW5z_SD.js} +2 -2
  53. package/dist/RadioGroup.js +3 -3
  54. package/dist/{Range-C8RVrIM9.js → Range-9ijUzrty.js} +1 -1
  55. package/dist/Range.js +2 -2
  56. package/dist/{ScrollTop-B_TJ_k4m.js → ScrollTop-uDL4K_C6.js} +3 -3
  57. package/dist/ScrollTop.js +5 -5
  58. package/dist/{Select-CbPTrL3G.js → Select-ClGNTYfp.js} +7 -7
  59. package/dist/Select.d.ts +2 -2
  60. package/dist/Select.js +9 -9
  61. package/dist/{Spinner-ChKJQJTN.js → Spinner-B7ikVfUZ.js} +1 -1
  62. package/dist/Spinner.js +2 -2
  63. package/dist/{Tab-BJbzY1xd.js → Tab-CSHR71IX.js} +1 -1
  64. package/dist/Tab.js +2 -2
  65. package/dist/{TabGroup-BIaCHrKR.js → TabGroup-D7YbKXm8.js} +3 -3
  66. package/dist/TabGroup.js +4 -4
  67. package/dist/{TabPanel-CTyw410b.js → TabPanel-D_RHF3lv.js} +1 -1
  68. package/dist/TabPanel.js +2 -2
  69. package/dist/{Table-D3QmePJd.js → Table-CdosaNFb.js} +3 -3
  70. package/dist/Table.js +7 -7
  71. package/dist/{Tag-nUnWtHYy.js → Tag-BQBgkkAs.js} +1 -1
  72. package/dist/Tag.js +2 -2
  73. package/dist/{VisuallyHidden-DF2q9pTa.js → VisuallyHidden-CEBTA6hv.js} +1 -1
  74. package/dist/VisuallyHidden.js +2 -2
  75. package/dist/custom-elements.json +6445 -0
  76. package/dist/index.d.ts +2 -2
  77. package/dist/index.js +30 -30
  78. package/dist/leu-accordion.js +2 -2
  79. package/dist/leu-button-group.js +5 -5
  80. package/dist/leu-button.js +4 -4
  81. package/dist/leu-chart-wrapper.js +3 -3
  82. package/dist/leu-checkbox-group.js +4 -4
  83. package/dist/leu-checkbox.js +3 -3
  84. package/dist/leu-chip-group.js +3 -3
  85. package/dist/leu-chip-link.js +2 -2
  86. package/dist/leu-chip-removable.js +3 -3
  87. package/dist/leu-chip-selectable.js +2 -2
  88. package/dist/leu-dialog.js +3 -3
  89. package/dist/leu-dropdown.js +8 -8
  90. package/dist/leu-file-input.js +6 -6
  91. package/dist/leu-icon.js +2 -2
  92. package/dist/leu-input.js +3 -3
  93. package/dist/leu-menu-item.d.ts +1 -1
  94. package/dist/leu-menu-item.js +3 -3
  95. package/dist/leu-menu.d.ts +1 -1
  96. package/dist/leu-menu.js +4 -4
  97. package/dist/leu-message.js +3 -3
  98. package/dist/leu-pagination.js +6 -6
  99. package/dist/leu-placeholder.js +2 -2
  100. package/dist/leu-popup.js +2 -2
  101. package/dist/leu-progress-bar.js +2 -2
  102. package/dist/leu-radio-group.js +3 -3
  103. package/dist/leu-radio.js +2 -2
  104. package/dist/leu-range.js +2 -2
  105. package/dist/leu-scroll-top.js +5 -5
  106. package/dist/leu-select.js +9 -9
  107. package/dist/leu-spinner.js +2 -2
  108. package/dist/leu-tab-group.js +4 -4
  109. package/dist/leu-tab-panel.js +2 -2
  110. package/dist/leu-tab.js +2 -2
  111. package/dist/leu-table.js +7 -7
  112. package/dist/leu-tag.js +2 -2
  113. package/dist/leu-visually-hidden.js +2 -2
  114. package/dist/vscode.html-custom-data.json +11 -11
  115. package/dist/vue/index.d.ts +20 -20
  116. package/dist/web-types.json +28 -28
  117. package/package.json +4 -1
  118. package/.editorconfig +0 -29
  119. package/.github/workflows/ci.yml +0 -81
  120. package/.github/workflows/deploy-github-pages.yaml +0 -34
  121. package/.github/workflows/publish.yml +0 -28
  122. package/.github/workflows/release-please.yml +0 -19
  123. package/.husky/commit-msg +0 -1
  124. package/.husky/pre-commit +0 -1
  125. package/.nvmrc +0 -1
  126. package/.prettierignore +0 -2
  127. package/.release-please-manifest.json +0 -3
  128. package/.storybook/main.ts +0 -34
  129. package/.storybook/manager-head.html +0 -1
  130. package/.storybook/manager.ts +0 -6
  131. package/.storybook/preview.ts +0 -96
  132. package/.storybook/static/fonts/Inter-Black.woff2 +0 -0
  133. package/.storybook/static/fonts/Inter-Regular.woff2 +0 -0
  134. package/.storybook/static/fonts.css +0 -11
  135. package/.storybook/static/global.css +0 -5
  136. package/.storybook/static/logo.svg +0 -19
  137. package/.storybook/theme.ts +0 -8
  138. package/AGENTS.md +0 -162
  139. package/CHANGELOG.md +0 -601
  140. package/CODE_OF_CONDUCT.md +0 -128
  141. package/CONTRIBUTING.md +0 -42
  142. package/commitlint.config.cjs +0 -1
  143. package/custom-elements-manifest.config.js +0 -46
  144. package/eslint.config.mjs +0 -79
  145. package/postcss.config.cjs +0 -16
  146. package/release-please-config.json +0 -9
  147. package/scripts/generate-component/generate.js +0 -167
  148. package/scripts/generate-component/templates/[Name].ts +0 -31
  149. package/scripts/generate-component/templates/[name].css +0 -6
  150. package/scripts/generate-component/templates/[namespace]-[name].ts +0 -11
  151. package/scripts/generate-component/templates/stories/[name].stories.ts +0 -26
  152. package/scripts/generate-component/templates/test/[name].test.ts +0 -23
  153. package/scripts/postcss-leu-font-styles.cjs +0 -154
  154. package/src/components/accordion/Accordion.ts +0 -108
  155. package/src/components/accordion/accordion.css +0 -150
  156. package/src/components/accordion/leu-accordion.ts +0 -11
  157. package/src/components/accordion/stories/accordion.stories.ts +0 -62
  158. package/src/components/accordion/test/accordion.test.ts +0 -118
  159. package/src/components/button/Button.ts +0 -286
  160. package/src/components/button/button.css +0 -317
  161. package/src/components/button/leu-button.ts +0 -11
  162. package/src/components/button/stories/button.stories.ts +0 -366
  163. package/src/components/button/test/button.test.ts +0 -417
  164. package/src/components/button-group/ButtonGroup.ts +0 -97
  165. package/src/components/button-group/button-group.css +0 -5
  166. package/src/components/button-group/leu-button-group.ts +0 -11
  167. package/src/components/button-group/stories/button-group.stories.ts +0 -54
  168. package/src/components/button-group/test/button-group.test.ts +0 -105
  169. package/src/components/chart-wrapper/ChartWrapper.ts +0 -78
  170. package/src/components/chart-wrapper/chart-wrapper.css +0 -87
  171. package/src/components/chart-wrapper/leu-chart-wrapper.ts +0 -11
  172. package/src/components/chart-wrapper/stories/chart-wrapper.stories.ts +0 -58
  173. package/src/components/chart-wrapper/test/chart-wrapper.test.ts +0 -77
  174. package/src/components/checkbox/Checkbox.ts +0 -129
  175. package/src/components/checkbox/CheckboxGroup.ts +0 -57
  176. package/src/components/checkbox/checkbox-group.css +0 -29
  177. package/src/components/checkbox/checkbox.css +0 -81
  178. package/src/components/checkbox/leu-checkbox-group.ts +0 -11
  179. package/src/components/checkbox/leu-checkbox.ts +0 -11
  180. package/src/components/checkbox/stories/checkbox-group.stories.ts +0 -59
  181. package/src/components/checkbox/stories/checkbox.stories.ts +0 -72
  182. package/src/components/checkbox/test/checkbox-group.test.ts +0 -109
  183. package/src/components/checkbox/test/checkbox.test.ts +0 -247
  184. package/src/components/chip/Chip.ts +0 -19
  185. package/src/components/chip/ChipGroup.ts +0 -122
  186. package/src/components/chip/ChipLink.ts +0 -24
  187. package/src/components/chip/ChipRemovable.ts +0 -45
  188. package/src/components/chip/ChipSelectable.ts +0 -80
  189. package/src/components/chip/chip-group.css +0 -15
  190. package/src/components/chip/chip.css +0 -139
  191. package/src/components/chip/exports.ts +0 -4
  192. package/src/components/chip/leu-chip-group.ts +0 -11
  193. package/src/components/chip/leu-chip-link.ts +0 -11
  194. package/src/components/chip/leu-chip-removable.ts +0 -11
  195. package/src/components/chip/leu-chip-selectable.ts +0 -11
  196. package/src/components/chip/stories/chip-group.stories.ts +0 -159
  197. package/src/components/chip/stories/chip-link.stories.ts +0 -45
  198. package/src/components/chip/stories/chip-removable.stories.ts +0 -42
  199. package/src/components/chip/stories/chip-selectable.stories.ts +0 -54
  200. package/src/components/chip/test/chip-group.test.ts +0 -171
  201. package/src/components/chip/test/chip-link.test.ts +0 -54
  202. package/src/components/chip/test/chip-removable.test.ts +0 -105
  203. package/src/components/chip/test/chip-selectable.test.ts +0 -101
  204. package/src/components/chip/test/chip.test.ts +0 -22
  205. package/src/components/dialog/Dialog.ts +0 -86
  206. package/src/components/dialog/dialog.css +0 -157
  207. package/src/components/dialog/leu-dialog.ts +0 -11
  208. package/src/components/dialog/stories/dialog.stories.ts +0 -142
  209. package/src/components/dialog/test/dialog.test.ts +0 -85
  210. package/src/components/dropdown/Dropdown.ts +0 -152
  211. package/src/components/dropdown/dropdown.css +0 -16
  212. package/src/components/dropdown/leu-dropdown.ts +0 -11
  213. package/src/components/dropdown/stories/dropdown.stories.ts +0 -58
  214. package/src/components/dropdown/test/dropdown.test.ts +0 -59
  215. package/src/components/file-input/FileInput.ts +0 -324
  216. package/src/components/file-input/file-input.css +0 -118
  217. package/src/components/file-input/leu-file-input.ts +0 -11
  218. package/src/components/file-input/stories/file-input.stories.ts +0 -45
  219. package/src/components/file-input/test/file-input.test.ts +0 -62
  220. package/src/components/icon/Icon.ts +0 -47
  221. package/src/components/icon/icon.css +0 -10
  222. package/src/components/icon/leu-icon.ts +0 -11
  223. package/src/components/icon/paths.ts +0 -219
  224. package/src/components/icon/stories/icon.stories.ts +0 -79
  225. package/src/components/icon/test/icon.test.ts +0 -50
  226. package/src/components/input/Input.ts +0 -469
  227. package/src/components/input/input.css +0 -238
  228. package/src/components/input/leu-input.ts +0 -11
  229. package/src/components/input/stories/input.stories.ts +0 -204
  230. package/src/components/input/test/input.test.ts +0 -603
  231. package/src/components/menu/Menu.ts +0 -149
  232. package/src/components/menu/MenuItem.ts +0 -168
  233. package/src/components/menu/leu-menu-item.ts +0 -11
  234. package/src/components/menu/leu-menu.ts +0 -11
  235. package/src/components/menu/menu-item.css +0 -77
  236. package/src/components/menu/menu.css +0 -19
  237. package/src/components/menu/stories/menu-item.stories.ts +0 -81
  238. package/src/components/menu/stories/menu.stories.ts +0 -54
  239. package/src/components/menu/test/menu-item.test.ts +0 -210
  240. package/src/components/menu/test/menu.test.ts +0 -125
  241. package/src/components/message/Message.ts +0 -118
  242. package/src/components/message/leu-message.ts +0 -11
  243. package/src/components/message/message.css +0 -163
  244. package/src/components/message/stories/message.mdx +0 -76
  245. package/src/components/message/stories/message.stories.ts +0 -149
  246. package/src/components/message/test/message.test.ts +0 -96
  247. package/src/components/pagination/Pagination.ts +0 -192
  248. package/src/components/pagination/leu-pagination.ts +0 -11
  249. package/src/components/pagination/pagination.css +0 -54
  250. package/src/components/pagination/stories/pagination.stories.ts +0 -115
  251. package/src/components/pagination/test/pagination.test.ts +0 -210
  252. package/src/components/placeholder/Placeholder.ts +0 -33
  253. package/src/components/placeholder/leu-placeholder.ts +0 -11
  254. package/src/components/placeholder/placeholder.css +0 -59
  255. package/src/components/placeholder/stories/placeholder.stories.ts +0 -34
  256. package/src/components/placeholder/test/placeholder.test.ts +0 -31
  257. package/src/components/popup/Popup.ts +0 -264
  258. package/src/components/popup/leu-popup.ts +0 -11
  259. package/src/components/popup/popup.css +0 -24
  260. package/src/components/popup/stories/popup.stories.ts +0 -117
  261. package/src/components/popup/test/popup.test.ts +0 -90
  262. package/src/components/progress-bar/ProgressBar.ts +0 -52
  263. package/src/components/progress-bar/leu-progress-bar.ts +0 -11
  264. package/src/components/progress-bar/progress-bar.css +0 -97
  265. package/src/components/progress-bar/stories/progress-bar.stories.ts +0 -39
  266. package/src/components/progress-bar/test/progress-bar.test.ts +0 -61
  267. package/src/components/radio/Radio.ts +0 -59
  268. package/src/components/radio/RadioGroup.ts +0 -181
  269. package/src/components/radio/leu-radio-group.ts +0 -11
  270. package/src/components/radio/leu-radio.ts +0 -11
  271. package/src/components/radio/radio-group.css +0 -29
  272. package/src/components/radio/radio.css +0 -76
  273. package/src/components/radio/stories/radio-group.stories.ts +0 -54
  274. package/src/components/radio/stories/radio.stories.ts +0 -55
  275. package/src/components/radio/test/radio-group.test.ts +0 -83
  276. package/src/components/radio/test/radio.test.ts +0 -119
  277. package/src/components/range/Range.ts +0 -400
  278. package/src/components/range/leu-range.ts +0 -11
  279. package/src/components/range/range.css +0 -227
  280. package/src/components/range/stories/range.stories.ts +0 -185
  281. package/src/components/range/test/range.test.ts +0 -228
  282. package/src/components/scroll-top/ScrollTop.ts +0 -91
  283. package/src/components/scroll-top/leu-scroll-top.ts +0 -11
  284. package/src/components/scroll-top/scroll-top.css +0 -50
  285. package/src/components/scroll-top/stories/scroll-top.stories.ts +0 -217
  286. package/src/components/scroll-top/test/scroll-top.test.ts +0 -22
  287. package/src/components/select/Select.ts +0 -570
  288. package/src/components/select/leu-select.ts +0 -11
  289. package/src/components/select/select.css +0 -222
  290. package/src/components/select/stories/select.stories.ts +0 -173
  291. package/src/components/select/test/fixtures.ts +0 -162
  292. package/src/components/select/test/select.test.ts +0 -937
  293. package/src/components/spinner/Spinner.ts +0 -31
  294. package/src/components/spinner/leu-spinner.ts +0 -11
  295. package/src/components/spinner/spinner.css +0 -20
  296. package/src/components/spinner/stories/spinner.stories.ts +0 -29
  297. package/src/components/spinner/test/spinner.test.ts +0 -30
  298. package/src/components/tab/Tab.ts +0 -72
  299. package/src/components/tab/TabGroup.ts +0 -267
  300. package/src/components/tab/TabPanel.ts +0 -59
  301. package/src/components/tab/leu-tab-group.ts +0 -11
  302. package/src/components/tab/leu-tab-panel.ts +0 -11
  303. package/src/components/tab/leu-tab.ts +0 -11
  304. package/src/components/tab/stories/tab.stories.ts +0 -97
  305. package/src/components/tab/tab-group.css +0 -63
  306. package/src/components/tab/tab-panel.css +0 -10
  307. package/src/components/tab/tab.css +0 -54
  308. package/src/components/tab/test/tab-group.test.ts +0 -426
  309. package/src/components/tab/test/tab-panel.test.ts +0 -102
  310. package/src/components/tab/test/tab.test.ts +0 -139
  311. package/src/components/table/Table.ts +0 -253
  312. package/src/components/table/leu-table.ts +0 -11
  313. package/src/components/table/stories/table.stories.ts +0 -131
  314. package/src/components/table/table.css +0 -112
  315. package/src/components/table/test/table.test.ts +0 -37
  316. package/src/components/tag/Tag.ts +0 -28
  317. package/src/components/tag/leu-tag.ts +0 -11
  318. package/src/components/tag/stories/tag.stories.ts +0 -107
  319. package/src/components/tag/tag.css +0 -42
  320. package/src/components/tag/test/tag.test.ts +0 -28
  321. package/src/components/visually-hidden/VisuallyHidden.ts +0 -16
  322. package/src/components/visually-hidden/leu-visually-hidden.ts +0 -11
  323. package/src/components/visually-hidden/stories/visually-hidden.stories.ts +0 -22
  324. package/src/components/visually-hidden/test/visually-hidden.test.ts +0 -34
  325. package/src/components/visually-hidden/visually-hidden.css +0 -10
  326. package/src/docs/contributing.mdx +0 -154
  327. package/src/docs/installation.mdx +0 -35
  328. package/src/docs/theme.mdx +0 -400
  329. package/src/docs/usage.mdx +0 -73
  330. package/src/global.d.ts +0 -11
  331. package/src/index.ts +0 -29
  332. package/src/lib/LeuElement.ts +0 -43
  333. package/src/lib/a11y.ts +0 -26
  334. package/src/lib/hasSlotController.ts +0 -74
  335. package/src/lib/mixins/FormAssociatedMixin.ts +0 -115
  336. package/src/lib/styleMap.ts +0 -139
  337. package/src/lib/utils.ts +0 -45
  338. package/src/styles/common-styles.css +0 -14
  339. package/src/styles/custom-media.css +0 -6
  340. package/src/styles/font-definitions.json +0 -210
  341. package/src/styles/style.stories.ts +0 -64
  342. package/src/styles/theme.css +0 -90
  343. package/stat_zh.png +0 -0
  344. package/stylelint.config.mjs +0 -23
  345. package/tsconfig.build.json +0 -24
  346. package/tsconfig.json +0 -14
  347. package/tsdown.config.ts +0 -35
  348. package/web-test-runner.config.mjs +0 -102
@@ -1,78 +0,0 @@
1
- import { html, nothing } from "lit"
2
- import { property } from "lit/decorators.js"
3
-
4
- import { LeuElement } from "../../lib/LeuElement.js"
5
-
6
- import styles from "./chart-wrapper.css?inline"
7
- import { HasSlotController } from "../../lib/hasSlotController.js"
8
- import { LeuSpinner } from "../spinner/Spinner.js"
9
-
10
- /**
11
- * A wrapper element for charts.
12
- * @tagname leu-chart-wrapper
13
- * @slot title - The title of the chart. Use a heading tag (h2-4) depending on your context.
14
- * @slot description - A description of the chart. Content is wrapped in a `<p>` tag by the component.
15
- * @slot chart - The actual chart
16
- * @slot caption - A caption for the chart, e.g. a source or explanation of the data.
17
- * @slot download - A download button or dropdown to export the chart in different formats.
18
- */
19
- export class LeuChartWrapper extends LeuElement {
20
- static styles = [LeuElement.styles, styles]
21
-
22
- static shadowRootOptions = {
23
- ...LeuElement.shadowRootOptions,
24
- delegatesFocus: true,
25
- }
26
-
27
- static dependencies = {
28
- "leu-spinner": LeuSpinner,
29
- }
30
-
31
- /**
32
- * Whether the chart is currently loading or not.
33
- * When set to `true`, a spinner will be shown in the chart container.
34
- */
35
- @property({ type: Boolean, reflect: true })
36
- pending: boolean = false
37
-
38
- hasSlotController = new HasSlotController(this, [
39
- "description",
40
- "caption",
41
- "download",
42
- ])
43
-
44
- render() {
45
- const hasDescription = this.hasSlotController.test("description")
46
- const hasCaption = this.hasSlotController.test("caption")
47
- const hasDownload = this.hasSlotController.test("download")
48
-
49
- return html`
50
- <figure class="chart-wrapper">
51
- <slot name="title" class="chart-wrapper__title"></slot>
52
- ${hasDescription
53
- ? html`<slot
54
- name="description"
55
- class="chart-wrapper__description"
56
- ></slot>`
57
- : nothing}
58
- <div class="chart-wrapper__container">
59
- <slot name="chart" class="chart-wrapper__chart"></slot>
60
- ${this.pending
61
- ? html`<div class="chart-wrapper__spinner-container">
62
- <leu-spinner class="chart-wrapper__spinner"></leu-spinner>
63
- </div>`
64
- : nothing}
65
- </div>
66
- ${hasCaption
67
- ? html`<figcaption>
68
- <slot name="caption" class="chart-wrapper__caption"></slot>
69
- </figcaption>`
70
- : nothing}
71
- <hr class="chart-wrapper__ruler" />
72
- ${hasDownload
73
- ? html`<slot name="download" class="chart-wrapper__download"></slot>`
74
- : nothing}
75
- </figure>
76
- `
77
- }
78
- }
@@ -1,87 +0,0 @@
1
- @import url("../../styles/custom-media.css");
2
-
3
- .chart-wrapper {
4
- display: block;
5
- width: 100%;
6
- margin: 0;
7
- }
8
-
9
- .chart-wrapper__title::slotted(h2) {
10
- color: var(--leu-color-black-100);
11
- font: var(--leu-t-curve-large-black-font);
12
- margin: 0 0 0.75rem;
13
-
14
- @media (--viewport-medium) {
15
- margin: 0 0 1.25rem;
16
- }
17
-
18
- @media (--viewport-xlarge) {
19
- margin: 0 0 1.5rem;
20
- }
21
- }
22
-
23
- .chart-wrapper__title::slotted(h3) {
24
- color: var(--leu-color-black-100);
25
- font: var(--leu-t-curve-medium-black-font);
26
- margin: 0 0 0.5rem;
27
- }
28
-
29
- .chart-wrapper__title::slotted(h4) {
30
- color: var(--leu-color-black-100);
31
- font: var(--leu-t-curve-regular-black-font);
32
- margin: 0 0 0.5rem;
33
- }
34
-
35
- .chart-wrapper__description,
36
- .chart-wrapper__chart {
37
- display: block;
38
- margin-bottom: 0.75rem;
39
-
40
- @media (--viewport-medium) {
41
- margin-bottom: 1.25rem;
42
- }
43
-
44
- @media (--viewport-xlarge) {
45
- margin-bottom: 1.5rem;
46
- }
47
- }
48
-
49
- .chart-wrapper__description {
50
- font: var(--leu-t-curve-small-regular-font);
51
- color: var(--leu-color-black-60);
52
- }
53
-
54
- .chart-wrapper__caption {
55
- font: var(--leu-t-curve-tiny-regular-font);
56
- color: var(--leu-color-black-60);
57
- }
58
-
59
- .chart-wrapper__ruler {
60
- display: block;
61
- border: none;
62
- border-top: 1px solid var(--leu-color-black-transp-20);
63
- margin: 0.75rem 0;
64
-
65
- @media (--viewport-xlarge) {
66
- margin-block: 1rem;
67
- }
68
- }
69
-
70
- .chart-wrapper__download {
71
- display: block;
72
- margin-left: -0.5rem;
73
- }
74
-
75
- .chart-wrapper__container {
76
- position: relative;
77
- }
78
-
79
- .chart-wrapper__spinner-container {
80
- position: absolute;
81
- top: 0;
82
- left: 0;
83
- width: 100%;
84
- height: 100%;
85
- display: grid;
86
- place-content: center;
87
- }
@@ -1,11 +0,0 @@
1
- import { LeuChartWrapper } from "./ChartWrapper.js"
2
-
3
- export { LeuChartWrapper }
4
-
5
- LeuChartWrapper.define("leu-chart-wrapper")
6
-
7
- declare global {
8
- interface HTMLElementTagNameMap {
9
- "leu-chart-wrapper": LeuChartWrapper
10
- }
11
- }
@@ -1,58 +0,0 @@
1
- import { Meta, StoryObj } from "@storybook/web-components-vite"
2
- import { html } from "lit"
3
-
4
- import "../../dropdown/leu-dropdown.js"
5
- import "../leu-chart-wrapper.js"
6
- import { LeuChartWrapper } from "../ChartWrapper.js"
7
-
8
- type StoryArgs = LeuChartWrapper
9
- type Story = StoryObj<StoryArgs>
10
-
11
- export default {
12
- title: "Components/ChartWrapper",
13
- component: "leu-chart-wrapper",
14
- } satisfies Meta<StoryArgs>
15
-
16
- const Template: Story = {
17
- render: ({ pending }) =>
18
- html`<leu-chart-wrapper ?pending=${pending}>
19
- <h2 slot="title">Entwicklung der Leerwohnungsziffer seit 1984</h2>
20
- <span slot="description">Leerwohnungsziffer, in Prozent</span>
21
- <img
22
- style="display: block; width: 100%; height: auto;"
23
- slot="chart"
24
- src="https://placehold.co/1200x400"
25
- alt="A placeholder to indicate where a chart would appear"
26
- />
27
- <span slot="caption">Quelle: Statistisches Amt des Kantons Zürich</span>
28
- <leu-dropdown slot="download" label="Download">
29
- <leu-icon name="download" slot="icon"></leu-icon>
30
- <leu-menu>
31
- <leu-menu-item
32
- href="https://www.web.statistik.zh.ch/ogd/daten/ressourcen/KTZH_00001120_00002165.csv"
33
- >OGD Ressource</leu-menu-item
34
- >
35
- <leu-menu-item>Als CSV Tabelle</leu-menu-item>
36
- <leu-menu-item>Als XLS Tabelle</leu-menu-item>
37
- <hr />
38
- <leu-menu-item>Als PNG exportieren</leu-menu-item>
39
- <leu-menu-item>Als SVG exportieren</leu-menu-item>
40
- <leu-menu-item disabled>Als PDF exportieren</leu-menu-item>
41
- </leu-menu>
42
- </leu-dropdown>
43
- </leu-chart-wrapper>`,
44
- }
45
-
46
- export const Regular = {
47
- ...Template,
48
- args: {
49
- pending: false,
50
- },
51
- }
52
-
53
- export const Pending = {
54
- ...Template,
55
- args: {
56
- pending: true,
57
- },
58
- }
@@ -1,77 +0,0 @@
1
- import { html } from "lit"
2
- import { fixture, expect } from "@open-wc/testing"
3
-
4
- import "../leu-chart-wrapper.js"
5
-
6
- async function defaultFixture({ pending = false } = {}) {
7
- return fixture(
8
- html`<leu-chart-wrapper ?pending=${pending}>
9
- <h2 slot="title">Entwicklung der Leerwohnungsziffer seit 1984</h2>
10
- <span slot="description">Leerwohnungsziffer, in Prozent</span>
11
- <img
12
- style="display: block; width: 100%; height: auto;"
13
- slot="chart"
14
- src="https://placehold.co/1200x400"
15
- alt="A placeholder to indicate where a chart would appear"
16
- />
17
- <span slot="caption">Quelle: Statistisches Amt des Kantons Zürich</span>
18
- <leu-dropdown slot="download" label="Download">
19
- <leu-icon name="download" slot="icon"></leu-icon>
20
- <leu-menu>
21
- <leu-menu-item
22
- href="https://www.web.statistik.zh.ch/ogd/daten/ressourcen/KTZH_00001120_00002165.csv"
23
- >OGD Ressource</leu-menu-item
24
- >
25
- <leu-menu-item>Als CSV Tabelle</leu-menu-item>
26
- <leu-menu-item>Als XLS Tabelle</leu-menu-item>
27
- <hr />
28
- <leu-menu-item>Als PNG exportieren</leu-menu-item>
29
- <leu-menu-item>Als SVG exportieren</leu-menu-item>
30
- <leu-menu-item disabled>Als PDF exportieren</leu-menu-item>
31
- </leu-menu>
32
- </leu-dropdown>
33
- </leu-chart-wrapper>`,
34
- )
35
- }
36
-
37
- describe("LeuChartWrapper", () => {
38
- it("is a defined element", async () => {
39
- const el = await customElements.get("leu-chart-wrapper")
40
-
41
- await expect(el).not.to.be.undefined
42
- })
43
-
44
- it("passes the a11y audit", async () => {
45
- const el = await defaultFixture()
46
-
47
- await expect(el).shadowDom.to.be.accessible()
48
- })
49
-
50
- it("conditionally renders slots", async () => {
51
- let el = await defaultFixture()
52
-
53
- expect(el.shadowRoot.querySelector(".chart-wrapper__description")).to.exist
54
- expect(el.shadowRoot.querySelector(".chart-wrapper__caption")).to.exist
55
- expect(el.shadowRoot.querySelector(".chart-wrapper__download")).to.exist
56
-
57
- el = await fixture(html`<leu-chart-wrapper></leu-chart-wrapper>`)
58
-
59
- expect(el.shadowRoot.querySelector(".chart-wrapper__description")).not.to
60
- .exist
61
- expect(el.shadowRoot.querySelector(".chart-wrapper__caption")).not.to.exist
62
- expect(el.shadowRoot.querySelector(".chart-wrapper__download")).not.to.exist
63
-
64
- // Check that the title and chart slots are always present
65
- expect(el.shadowRoot.querySelector(".chart-wrapper__title")).to.exist
66
- expect(el.shadowRoot.querySelector(".chart-wrapper__chart")).to.exist
67
- })
68
-
69
- it("shows a spinner when pending is set", async () => {
70
- const el = await defaultFixture({ pending: true })
71
-
72
- expect(el.shadowRoot.querySelector(".chart-wrapper__spinner-container")).to
73
- .exist
74
- expect(el.shadowRoot.querySelector("leu-spinner.chart-wrapper__spinner")).to
75
- .exist
76
- })
77
- })
@@ -1,129 +0,0 @@
1
- import { html, PropertyValues } from "lit"
2
- import { property } from "lit/decorators.js"
3
-
4
- import { LeuElement } from "../../lib/LeuElement.js"
5
- import { FormAssociatedMixin } from "../../lib/mixins/FormAssociatedMixin.js"
6
- import { LeuIcon } from "../icon/Icon.js"
7
-
8
- import styles from "./checkbox.css?inline"
9
-
10
- /**
11
- * @tagname leu-checkbox
12
- */
13
- export class LeuCheckbox extends FormAssociatedMixin(LeuElement) {
14
- static dependencies = {
15
- "leu-icon": LeuIcon,
16
- }
17
-
18
- static styles = [LeuElement.styles, styles]
19
-
20
- /** @internal */
21
- static shadowRootOptions = {
22
- ...LeuElement.shadowRootOptions,
23
- delegatesFocus: true,
24
- }
25
-
26
- @property({ type: Boolean, reflect: true })
27
- required: boolean = false
28
-
29
- @property({ type: Boolean, reflect: true, attribute: "checked" })
30
- defaultChecked: boolean = false
31
-
32
- protected _checked: boolean
33
-
34
- @property({ type: Boolean, attribute: false })
35
- set checked(isChecked: boolean) {
36
- this._checked = isChecked
37
- }
38
-
39
- get checked(): boolean {
40
- if (typeof this._checked === "boolean") {
41
- return this._checked
42
- }
43
-
44
- return this.defaultChecked
45
- }
46
-
47
- @property({ type: String, reflect: true })
48
- value: string
49
-
50
- willUpdate(changedProperties: PropertyValues<this>): void {
51
- super.willUpdate(changedProperties)
52
- let checkedChanged = false
53
-
54
- // Match the bevavior of native checkboxes.
55
- // Changes to the defaultChecked property only hav an effect
56
- // if the user has not interacted with the checkbox yet.
57
- if (
58
- changedProperties.has("defaultChecked") &&
59
- !changedProperties.has("checked") &&
60
- !this.hasInteracted
61
- ) {
62
- this.checked = this.defaultChecked
63
- checkedChanged = true
64
- }
65
-
66
- if (
67
- checkedChanged ||
68
- changedProperties.has("checked") ||
69
- changedProperties.has("value") ||
70
- changedProperties.has("name") ||
71
- changedProperties.has("disabled")
72
- ) {
73
- this.setFormValue()
74
- }
75
- }
76
-
77
- private handleChange(event: Event & { target: HTMLInputElement }) {
78
- this.hasInteracted = true
79
- this.checked = event.target.checked
80
-
81
- const customEvent = new CustomEvent(event.type, event)
82
- this.dispatchEvent(customEvent)
83
- }
84
-
85
- private handleInput(event: InputEvent & { target: HTMLInputElement }) {
86
- this.hasInteracted = true
87
- this.checked = event.target.checked
88
- }
89
-
90
- public formResetCallback() {
91
- this.checked = this.defaultChecked
92
- super.formResetCallback()
93
- }
94
-
95
- setFormValue() {
96
- this.internals.setFormValue(
97
- this.checked && !this.disabled ? (this.value ?? "on") : null,
98
- )
99
-
100
- if (this.required && !this.checked) {
101
- // @todo i18n and/or custom validation message
102
- this.internals.setValidity(
103
- { valueMissing: true },
104
- "Bitte klicken Sie dieses Kästchen an, um fortfahren zu können.",
105
- )
106
- } else {
107
- this.internals.setValidity({})
108
- }
109
- }
110
-
111
- render() {
112
- return html`
113
- <input
114
- id="checkbox"
115
- class="checkbox"
116
- type="checkbox"
117
- name="${this.name}"
118
- @change=${this.handleChange}
119
- @input=${this.handleInput}
120
- .checked=${this.checked}
121
- ?disabled=${this.disabled}
122
- .value=${this.value}
123
- ?required=${this.required}
124
- />
125
- <label for="checkbox" class="label"><slot></slot></label>
126
- <leu-icon class="icon" name="check"></leu-icon>
127
- `
128
- }
129
- }
@@ -1,57 +0,0 @@
1
- import { html } from "lit"
2
- import { classMap } from "lit/directives/class-map.js"
3
- import { property } from "lit/decorators.js"
4
-
5
- import { LeuElement } from "../../lib/LeuElement.js"
6
-
7
- import styles from "./checkbox-group.css?inline"
8
- import { LeuCheckbox } from "./Checkbox.js"
9
-
10
- /**
11
- *
12
- * @slot - Place the checkboxes inside the default slot.
13
- * @tagname leu-checkbox-group
14
- */
15
- export class LeuCheckboxGroup extends LeuElement {
16
- static styles = [LeuElement.styles, styles]
17
-
18
- /**
19
- * Defines how the checkboxes should be aligned.
20
- */
21
- @property({ type: String, reflect: true })
22
- orientation: "horizontal" | "vertical" = "horizontal"
23
-
24
- /**
25
- * The label of the checkbox group
26
- */
27
- @property({ type: String, reflect: true })
28
- label?: string
29
-
30
- private items: LeuCheckbox[] = []
31
-
32
- get value() {
33
- return this.items.filter((i) => i.checked).map((i) => i.value)
34
- }
35
-
36
- private handleSlotChange() {
37
- this.items = Array.from(
38
- this.querySelectorAll(":scope > *:not([slot])"),
39
- ).filter((el) => el instanceof LeuCheckbox)
40
- }
41
-
42
- render() {
43
- const fieldsetClasses = {
44
- fieldset: "true",
45
- "fieldset--vertical": this.orientation === "vertical",
46
- }
47
-
48
- return html`
49
- <fieldset class=${classMap(fieldsetClasses)}>
50
- ${this.label
51
- ? html`<legend class="legend">${this.label}</legend>`
52
- : html``}
53
- <slot @slotchange=${this.handleSlotChange}></slot>
54
- </fieldset>
55
- `
56
- }
57
- }
@@ -1,29 +0,0 @@
1
- :host {
2
- --group-font-regular: var(--leu-font-family-regular);
3
- --group-font-black: var(--leu-font-family-black);
4
-
5
- font-family: var(--group-font-regular);
6
- }
7
-
8
- .fieldset {
9
- display: flex;
10
- align-items: flex-start;
11
- flex-wrap: wrap;
12
- gap: 0.5rem 1rem;
13
-
14
- border: none;
15
- padding: 0;
16
- }
17
-
18
- .fieldset--vertical {
19
- flex-direction: column;
20
- gap: 1rem;
21
- }
22
-
23
- .legend {
24
- font-family: var(--group-font-black);
25
- font-size: 1.125rem;
26
- line-height: 1.5;
27
-
28
- margin-bottom: 0.5rem;
29
- }
@@ -1,81 +0,0 @@
1
- :host {
2
- --checkbox-color: var(--leu-color-black-40);
3
- --checkbox-color-disabled: var(--leu-color-black-20);
4
- --checkbox-color-focus: var(--leu-color-func-cyan);
5
-
6
- --checkbox-label-color: var(--leu-color-black-100);
7
- --checkbox-label-color-disabled: var(--checkbox-color-disabled);
8
-
9
- --checkbox-tick-color: var(--leu-color-black-0);
10
-
11
- --checkbox-font-regular: var(--leu-font-family-regular);
12
-
13
- position: relative;
14
-
15
- display: inline-flex;
16
- align-items: flex-start;
17
- gap: 0.5rem;
18
-
19
- font-family: var(--checkbox-font-regular);
20
- }
21
-
22
- .checkbox {
23
- --_length: 1.5rem;
24
- appearance: none;
25
- cursor: pointer;
26
-
27
- width: var(--_length);
28
- height: var(--_length);
29
- margin: 0;
30
-
31
- border: 2px solid var(--checkbox-color);
32
- border-radius: 2px;
33
-
34
- flex: 1 0 var(--_length);
35
-
36
- display: grid;
37
- place-items: center;
38
- }
39
-
40
- .checkbox:checked {
41
- background-color: var(--checkbox-color);
42
- }
43
-
44
- .checkbox:is(:hover, :checked, :focus) {
45
- --checkbox-color: var(--checkbox-color-focus);
46
- }
47
-
48
- .checkbox:focus-visible {
49
- outline: 2px solid var(--checkbox-color-focus);
50
- outline-offset: 2px;
51
- }
52
-
53
- .checkbox:disabled {
54
- --checkbox-color: var(--checkbox-color-disabled);
55
- cursor: not-allowed;
56
- }
57
-
58
- .label {
59
- cursor: pointer;
60
- color: var(--checkbox-label-color);
61
- font-size: 1rem;
62
- line-height: 1.5;
63
- }
64
-
65
- .checkbox:disabled + .label {
66
- --checkbox-label-color: var(--checkbox-label-color-disabled);
67
- cursor: not-allowed;
68
- }
69
-
70
- .checkbox:required + .label::after {
71
- content: "*";
72
- }
73
-
74
- .icon {
75
- position: absolute;
76
- display: block;
77
- top: 0;
78
- left: 0;
79
- color: var(--checkbox-tick-color);
80
- pointer-events: none;
81
- }
@@ -1,11 +0,0 @@
1
- import { LeuCheckboxGroup } from "./CheckboxGroup.js"
2
-
3
- export { LeuCheckboxGroup }
4
-
5
- LeuCheckboxGroup.define("leu-checkbox-group")
6
-
7
- declare global {
8
- interface HTMLElementTagNameMap {
9
- "leu-checkbox-group": LeuCheckboxGroup
10
- }
11
- }
@@ -1,11 +0,0 @@
1
- import { LeuCheckbox } from "./Checkbox.js"
2
-
3
- export { LeuCheckbox }
4
-
5
- LeuCheckbox.define("leu-checkbox")
6
-
7
- declare global {
8
- interface HTMLElementTagNameMap {
9
- "leu-checkbox": LeuCheckbox
10
- }
11
- }
@@ -1,59 +0,0 @@
1
- import { html } from "lit"
2
- import "../leu-checkbox.js"
3
- import "../leu-checkbox-group.js"
4
- import { ifDefined } from "lit/directives/if-defined.js"
5
-
6
- export default {
7
- title: "Components/Checkbox/Group",
8
- component: "leu-checkbox-group",
9
- argTypes: {
10
- legend: { control: "text" },
11
- orientation: {
12
- options: ["vertical", "horizontal"],
13
- control: { type: "checkbox" },
14
- },
15
- },
16
- parameters: {
17
- design: {
18
- type: "figma",
19
- url: "https://www.figma.com/file/d6Pv21UVUbnBs3AdcZijHmbN/KTZH-Design-System?type=design&node-id=17340-81935&mode=design&t=lzVrtq8lxYVJU5TB-11",
20
- },
21
- },
22
- }
23
-
24
- function Template({ label, orientation }) {
25
- return html`
26
- <leu-checkbox-group
27
- orientation=${ifDefined(orientation)}
28
- label=${ifDefined(label)}
29
- >
30
- <leu-checkbox value="1" name="checkbox-button" disabled
31
- >Kurz</leu-checkbox
32
- >
33
- <leu-checkbox value="2" name="checkbox-button">Etwas Länger</leu-checkbox>
34
- <leu-checkbox value="3" name="checkbox-button" disabled
35
- >Deaktiviert dazwischen</leu-checkbox
36
- >
37
- <leu-checkbox value="4" name="checkbox-button"
38
- >Ein langes Label um sicher ein umbruch zu erzwingen</leu-checkbox
39
- >
40
- </leu-checkbox-group>
41
- `
42
- }
43
-
44
- export const Horizontal = Template.bind({})
45
- export const HorizontalLabel = Template.bind({})
46
- HorizontalLabel.args = {
47
- label: "Anrede",
48
- }
49
-
50
- export const Vertical = Template.bind({})
51
- Vertical.args = {
52
- orientation: "vertical",
53
- }
54
-
55
- export const VerticalLabel = Template.bind({})
56
- VerticalLabel.args = {
57
- orientation: "vertical",
58
- label: "Anrede",
59
- }