@statistikzh/leu 0.28.0 → 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 (346) hide show
  1. package/dist/{Accordion-D9kLsiBW.js → Accordion-CaDTUDJG.js} +1 -1
  2. package/dist/Accordion.js +2 -2
  3. package/dist/{Button-DyNVOHCd.js → Button-BF3_6xgs.js} +3 -3
  4. package/dist/Button.js +4 -4
  5. package/dist/{ButtonGroup-MEh4vb5a.js → ButtonGroup-grJiWGHI.js} +2 -2
  6. package/dist/ButtonGroup.js +5 -5
  7. package/dist/{ChartWrapper-DAl91BIN.js → ChartWrapper-CeolXijF.js} +2 -2
  8. package/dist/ChartWrapper.js +3 -3
  9. package/dist/{Checkbox-CGGyUW9U.js → Checkbox-DGUZ1XtB.js} +2 -2
  10. package/dist/Checkbox.js +3 -3
  11. package/dist/{CheckboxGroup-DXt5iMdj.js → CheckboxGroup-CGdyk_RP.js} +2 -2
  12. package/dist/CheckboxGroup.js +4 -4
  13. package/dist/{Chip-BGs71WGH.js → Chip-BpKH3_Nk.js} +1 -1
  14. package/dist/Chip.js +2 -2
  15. package/dist/{ChipGroup-BcGyusP-.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-BzuyL1U3.js → Dialog-CC674l80.js} +2 -2
  21. package/dist/Dialog.js +3 -3
  22. package/dist/{Dropdown-plyBTM15.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-BT3Fe-0J.js → FileInput-D4kyWFkL.js} +8 -6
  26. package/dist/FileInput.d.ts +1 -1
  27. package/dist/FileInput.js +6 -6
  28. package/dist/{Icon-D83qesg5.js → Icon-DOcb_NlX.js} +1 -1
  29. package/dist/Icon.js +2 -2
  30. package/dist/{Input-D7zS50oz.js → Input-6Xu1N2sA.js} +2 -2
  31. package/dist/Input.js +3 -3
  32. package/dist/{LeuElement-DQI8cqZV.js → LeuElement-C3HedxlQ.js} +1 -1
  33. package/dist/{Menu-DRU1LiMM.js → Menu-CJtyuUvP.js} +2 -2
  34. package/dist/{Menu-Z2b7dsB5.d.ts → Menu-txbYINTW.d.ts} +1 -1
  35. package/dist/Menu.d.ts +1 -1
  36. package/dist/Menu.js +4 -4
  37. package/dist/{MenuItem-LY4TRIho.d.ts → MenuItem-9TTOrL0Z.d.ts} +1 -1
  38. package/dist/{MenuItem-DCttylRO.js → MenuItem-ClSE3auh.js} +2 -2
  39. package/dist/MenuItem.d.ts +1 -1
  40. package/dist/MenuItem.js +3 -3
  41. package/dist/{Message-0NxnKEqw.js → Message-C55ydBaU.js} +2 -2
  42. package/dist/Message.js +3 -3
  43. package/dist/{Pagination-CIy7YvWE.js → Pagination-BVwKLcd5.js} +4 -4
  44. package/dist/Pagination.js +6 -6
  45. package/dist/{Placeholder-Dol_X5Hp.js → Placeholder-DFNppiVf.js} +1 -1
  46. package/dist/Placeholder.js +2 -2
  47. package/dist/{Popup-nJrJHGSy.js → Popup-D91ZiFWh.js} +1 -1
  48. package/dist/Popup.js +2 -2
  49. package/dist/{ProgressBar-Dmq9veqU.js → ProgressBar-DQGO2we8.js} +1 -1
  50. package/dist/ProgressBar.js +2 -2
  51. package/dist/{Radio-W5ck_IJI.js → Radio-BetZNoUQ.js} +1 -1
  52. package/dist/Radio.js +2 -2
  53. package/dist/{RadioGroup-De5x2YCO.js → RadioGroup-DzW5z_SD.js} +2 -2
  54. package/dist/RadioGroup.js +3 -3
  55. package/dist/{Range-NCdfDkeD.js → Range-9ijUzrty.js} +1 -1
  56. package/dist/Range.js +2 -2
  57. package/dist/{ScrollTop-DwcNIKmN.js → ScrollTop-uDL4K_C6.js} +3 -3
  58. package/dist/ScrollTop.js +5 -5
  59. package/dist/{Select-Bpicra9q.js → Select-ClGNTYfp.js} +7 -7
  60. package/dist/Select.d.ts +2 -2
  61. package/dist/Select.js +9 -9
  62. package/dist/{Spinner-BBiVZxFH.js → Spinner-B7ikVfUZ.js} +1 -1
  63. package/dist/Spinner.js +2 -2
  64. package/dist/{Tab-Ce9nrDok.js → Tab-CSHR71IX.js} +1 -1
  65. package/dist/Tab.js +2 -2
  66. package/dist/{TabGroup-C-cd4Wcx.js → TabGroup-D7YbKXm8.js} +3 -3
  67. package/dist/TabGroup.js +4 -4
  68. package/dist/{TabPanel-BW1ydVBT.js → TabPanel-D_RHF3lv.js} +1 -1
  69. package/dist/TabPanel.js +2 -2
  70. package/dist/{Table-DiYqIzBu.js → Table-CdosaNFb.js} +3 -3
  71. package/dist/Table.js +7 -7
  72. package/dist/{Tag-Ct8Hhv7W.js → Tag-BQBgkkAs.js} +1 -1
  73. package/dist/Tag.js +2 -2
  74. package/dist/{VisuallyHidden-CpYXyuC7.js → VisuallyHidden-CEBTA6hv.js} +1 -1
  75. package/dist/VisuallyHidden.js +2 -2
  76. package/dist/custom-elements.json +6445 -0
  77. package/dist/index.d.ts +2 -2
  78. package/dist/index.js +30 -30
  79. package/dist/leu-accordion.js +2 -2
  80. package/dist/leu-button-group.js +5 -5
  81. package/dist/leu-button.js +4 -4
  82. package/dist/leu-chart-wrapper.js +3 -3
  83. package/dist/leu-checkbox-group.js +4 -4
  84. package/dist/leu-checkbox.js +3 -3
  85. package/dist/leu-chip-group.js +3 -3
  86. package/dist/leu-chip-link.js +2 -2
  87. package/dist/leu-chip-removable.js +3 -3
  88. package/dist/leu-chip-selectable.js +2 -2
  89. package/dist/leu-dialog.js +3 -3
  90. package/dist/leu-dropdown.js +8 -8
  91. package/dist/leu-file-input.js +6 -6
  92. package/dist/leu-icon.js +2 -2
  93. package/dist/leu-input.js +3 -3
  94. package/dist/leu-menu-item.d.ts +1 -1
  95. package/dist/leu-menu-item.js +3 -3
  96. package/dist/leu-menu.d.ts +1 -1
  97. package/dist/leu-menu.js +4 -4
  98. package/dist/leu-message.js +3 -3
  99. package/dist/leu-pagination.js +6 -6
  100. package/dist/leu-placeholder.js +2 -2
  101. package/dist/leu-popup.js +2 -2
  102. package/dist/leu-progress-bar.js +2 -2
  103. package/dist/leu-radio-group.js +3 -3
  104. package/dist/leu-radio.js +2 -2
  105. package/dist/leu-range.js +2 -2
  106. package/dist/leu-scroll-top.js +5 -5
  107. package/dist/leu-select.js +9 -9
  108. package/dist/leu-spinner.js +2 -2
  109. package/dist/leu-tab-group.js +4 -4
  110. package/dist/leu-tab-panel.js +2 -2
  111. package/dist/leu-tab.js +2 -2
  112. package/dist/leu-table.js +7 -7
  113. package/dist/leu-tag.js +2 -2
  114. package/dist/leu-visually-hidden.js +2 -2
  115. package/dist/web-types.json +1 -1
  116. package/package.json +9 -4
  117. package/.editorconfig +0 -29
  118. package/.github/workflows/ci.yml +0 -81
  119. package/.github/workflows/deploy-github-pages.yaml +0 -34
  120. package/.github/workflows/publish.yml +0 -30
  121. package/.github/workflows/release-please.yml +0 -19
  122. package/.husky/commit-msg +0 -1
  123. package/.husky/pre-commit +0 -1
  124. package/.nvmrc +0 -1
  125. package/.prettierignore +0 -2
  126. package/.release-please-manifest.json +0 -3
  127. package/.storybook/main.ts +0 -34
  128. package/.storybook/manager-head.html +0 -1
  129. package/.storybook/manager.ts +0 -6
  130. package/.storybook/preview.ts +0 -96
  131. package/.storybook/static/fonts/Inter-Black.woff2 +0 -0
  132. package/.storybook/static/fonts/Inter-Regular.woff2 +0 -0
  133. package/.storybook/static/fonts.css +0 -11
  134. package/.storybook/static/global.css +0 -5
  135. package/.storybook/static/logo.svg +0 -19
  136. package/.storybook/theme.ts +0 -8
  137. package/CHANGELOG.md +0 -594
  138. package/CODE_OF_CONDUCT.md +0 -128
  139. package/CONTRIBUTING.md +0 -42
  140. package/commitlint.config.cjs +0 -1
  141. package/custom-elements-manifest.config.js +0 -46
  142. package/eslint.config.mjs +0 -79
  143. package/postcss.config.cjs +0 -16
  144. package/release-please-config.json +0 -9
  145. package/scripts/generate-component/generate.js +0 -167
  146. package/scripts/generate-component/templates/[Name].ts +0 -31
  147. package/scripts/generate-component/templates/[name].css +0 -6
  148. package/scripts/generate-component/templates/[namespace]-[name].ts +0 -11
  149. package/scripts/generate-component/templates/stories/[name].stories.ts +0 -26
  150. package/scripts/generate-component/templates/test/[name].test.ts +0 -23
  151. package/scripts/postcss-leu-font-styles.cjs +0 -154
  152. package/src/components/accordion/Accordion.ts +0 -108
  153. package/src/components/accordion/accordion.css +0 -150
  154. package/src/components/accordion/leu-accordion.ts +0 -11
  155. package/src/components/accordion/stories/accordion.stories.ts +0 -62
  156. package/src/components/accordion/test/accordion.test.ts +0 -118
  157. package/src/components/button/Button.ts +0 -286
  158. package/src/components/button/button.css +0 -317
  159. package/src/components/button/leu-button.ts +0 -11
  160. package/src/components/button/stories/button.stories.ts +0 -366
  161. package/src/components/button/test/button.test.ts +0 -417
  162. package/src/components/button-group/ButtonGroup.ts +0 -97
  163. package/src/components/button-group/button-group.css +0 -5
  164. package/src/components/button-group/leu-button-group.ts +0 -11
  165. package/src/components/button-group/stories/button-group.stories.ts +0 -54
  166. package/src/components/button-group/test/button-group.test.ts +0 -105
  167. package/src/components/chart-wrapper/ChartWrapper.ts +0 -78
  168. package/src/components/chart-wrapper/chart-wrapper.css +0 -87
  169. package/src/components/chart-wrapper/leu-chart-wrapper.ts +0 -11
  170. package/src/components/chart-wrapper/stories/chart-wrapper.stories.ts +0 -58
  171. package/src/components/chart-wrapper/test/chart-wrapper.test.ts +0 -77
  172. package/src/components/checkbox/Checkbox.ts +0 -129
  173. package/src/components/checkbox/CheckboxGroup.ts +0 -57
  174. package/src/components/checkbox/checkbox-group.css +0 -29
  175. package/src/components/checkbox/checkbox.css +0 -81
  176. package/src/components/checkbox/leu-checkbox-group.ts +0 -11
  177. package/src/components/checkbox/leu-checkbox.ts +0 -11
  178. package/src/components/checkbox/stories/checkbox-group.stories.ts +0 -59
  179. package/src/components/checkbox/stories/checkbox.stories.ts +0 -72
  180. package/src/components/checkbox/test/checkbox-group.test.ts +0 -109
  181. package/src/components/checkbox/test/checkbox.test.ts +0 -247
  182. package/src/components/chip/Chip.ts +0 -19
  183. package/src/components/chip/ChipGroup.ts +0 -122
  184. package/src/components/chip/ChipLink.ts +0 -24
  185. package/src/components/chip/ChipRemovable.ts +0 -45
  186. package/src/components/chip/ChipSelectable.ts +0 -80
  187. package/src/components/chip/chip-group.css +0 -15
  188. package/src/components/chip/chip.css +0 -139
  189. package/src/components/chip/exports.ts +0 -4
  190. package/src/components/chip/leu-chip-group.ts +0 -11
  191. package/src/components/chip/leu-chip-link.ts +0 -11
  192. package/src/components/chip/leu-chip-removable.ts +0 -11
  193. package/src/components/chip/leu-chip-selectable.ts +0 -11
  194. package/src/components/chip/stories/chip-group.stories.ts +0 -159
  195. package/src/components/chip/stories/chip-link.stories.ts +0 -45
  196. package/src/components/chip/stories/chip-removable.stories.ts +0 -42
  197. package/src/components/chip/stories/chip-selectable.stories.ts +0 -54
  198. package/src/components/chip/test/chip-group.test.ts +0 -171
  199. package/src/components/chip/test/chip-link.test.ts +0 -54
  200. package/src/components/chip/test/chip-removable.test.ts +0 -105
  201. package/src/components/chip/test/chip-selectable.test.ts +0 -101
  202. package/src/components/chip/test/chip.test.ts +0 -22
  203. package/src/components/dialog/Dialog.ts +0 -86
  204. package/src/components/dialog/dialog.css +0 -157
  205. package/src/components/dialog/leu-dialog.ts +0 -11
  206. package/src/components/dialog/stories/dialog.stories.ts +0 -142
  207. package/src/components/dialog/test/dialog.test.ts +0 -85
  208. package/src/components/dropdown/Dropdown.ts +0 -152
  209. package/src/components/dropdown/dropdown.css +0 -16
  210. package/src/components/dropdown/leu-dropdown.ts +0 -11
  211. package/src/components/dropdown/stories/dropdown.stories.ts +0 -58
  212. package/src/components/dropdown/test/dropdown.test.ts +0 -59
  213. package/src/components/file-input/FileInput.ts +0 -322
  214. package/src/components/file-input/file-input.css +0 -118
  215. package/src/components/file-input/leu-file-input.ts +0 -11
  216. package/src/components/file-input/stories/file-input.stories.ts +0 -45
  217. package/src/components/file-input/test/file-input.test.ts +0 -38
  218. package/src/components/icon/Icon.ts +0 -47
  219. package/src/components/icon/icon.css +0 -10
  220. package/src/components/icon/leu-icon.ts +0 -11
  221. package/src/components/icon/paths.ts +0 -219
  222. package/src/components/icon/stories/icon.stories.ts +0 -79
  223. package/src/components/icon/test/icon.test.ts +0 -50
  224. package/src/components/input/Input.ts +0 -469
  225. package/src/components/input/input.css +0 -238
  226. package/src/components/input/leu-input.ts +0 -11
  227. package/src/components/input/stories/input.stories.ts +0 -204
  228. package/src/components/input/test/input.test.ts +0 -603
  229. package/src/components/menu/Menu.ts +0 -149
  230. package/src/components/menu/MenuItem.ts +0 -168
  231. package/src/components/menu/leu-menu-item.ts +0 -11
  232. package/src/components/menu/leu-menu.ts +0 -11
  233. package/src/components/menu/menu-item.css +0 -77
  234. package/src/components/menu/menu.css +0 -19
  235. package/src/components/menu/stories/menu-item.stories.ts +0 -81
  236. package/src/components/menu/stories/menu.stories.ts +0 -54
  237. package/src/components/menu/test/menu-item.test.ts +0 -210
  238. package/src/components/menu/test/menu.test.ts +0 -125
  239. package/src/components/message/Message.ts +0 -118
  240. package/src/components/message/leu-message.ts +0 -11
  241. package/src/components/message/message.css +0 -163
  242. package/src/components/message/stories/message.mdx +0 -76
  243. package/src/components/message/stories/message.stories.ts +0 -149
  244. package/src/components/message/test/message.test.ts +0 -96
  245. package/src/components/pagination/Pagination.ts +0 -192
  246. package/src/components/pagination/leu-pagination.ts +0 -11
  247. package/src/components/pagination/pagination.css +0 -54
  248. package/src/components/pagination/stories/pagination.stories.ts +0 -115
  249. package/src/components/pagination/test/pagination.test.ts +0 -210
  250. package/src/components/placeholder/Placeholder.ts +0 -33
  251. package/src/components/placeholder/leu-placeholder.ts +0 -11
  252. package/src/components/placeholder/placeholder.css +0 -59
  253. package/src/components/placeholder/stories/placeholder.stories.ts +0 -34
  254. package/src/components/placeholder/test/placeholder.test.ts +0 -31
  255. package/src/components/popup/Popup.ts +0 -264
  256. package/src/components/popup/leu-popup.ts +0 -11
  257. package/src/components/popup/popup.css +0 -24
  258. package/src/components/popup/stories/popup.stories.ts +0 -117
  259. package/src/components/popup/test/popup.test.ts +0 -90
  260. package/src/components/progress-bar/ProgressBar.ts +0 -52
  261. package/src/components/progress-bar/leu-progress-bar.ts +0 -11
  262. package/src/components/progress-bar/progress-bar.css +0 -97
  263. package/src/components/progress-bar/stories/progress-bar.stories.ts +0 -39
  264. package/src/components/progress-bar/test/progress-bar.test.ts +0 -61
  265. package/src/components/radio/Radio.ts +0 -59
  266. package/src/components/radio/RadioGroup.ts +0 -181
  267. package/src/components/radio/leu-radio-group.ts +0 -11
  268. package/src/components/radio/leu-radio.ts +0 -11
  269. package/src/components/radio/radio-group.css +0 -29
  270. package/src/components/radio/radio.css +0 -76
  271. package/src/components/radio/stories/radio-group.stories.ts +0 -54
  272. package/src/components/radio/stories/radio.stories.ts +0 -55
  273. package/src/components/radio/test/radio-group.test.ts +0 -83
  274. package/src/components/radio/test/radio.test.ts +0 -119
  275. package/src/components/range/Range.ts +0 -400
  276. package/src/components/range/leu-range.ts +0 -11
  277. package/src/components/range/range.css +0 -227
  278. package/src/components/range/stories/range.stories.ts +0 -185
  279. package/src/components/range/test/range.test.ts +0 -228
  280. package/src/components/scroll-top/ScrollTop.ts +0 -91
  281. package/src/components/scroll-top/leu-scroll-top.ts +0 -11
  282. package/src/components/scroll-top/scroll-top.css +0 -50
  283. package/src/components/scroll-top/stories/scroll-top.stories.ts +0 -217
  284. package/src/components/scroll-top/test/scroll-top.test.ts +0 -22
  285. package/src/components/select/Select.ts +0 -570
  286. package/src/components/select/leu-select.ts +0 -11
  287. package/src/components/select/select.css +0 -222
  288. package/src/components/select/stories/select.stories.ts +0 -173
  289. package/src/components/select/test/fixtures.ts +0 -162
  290. package/src/components/select/test/select.test.ts +0 -937
  291. package/src/components/spinner/Spinner.ts +0 -31
  292. package/src/components/spinner/leu-spinner.ts +0 -11
  293. package/src/components/spinner/spinner.css +0 -20
  294. package/src/components/spinner/stories/spinner.stories.ts +0 -29
  295. package/src/components/spinner/test/spinner.test.ts +0 -30
  296. package/src/components/tab/Tab.ts +0 -72
  297. package/src/components/tab/TabGroup.ts +0 -267
  298. package/src/components/tab/TabPanel.ts +0 -59
  299. package/src/components/tab/leu-tab-group.ts +0 -11
  300. package/src/components/tab/leu-tab-panel.ts +0 -11
  301. package/src/components/tab/leu-tab.ts +0 -11
  302. package/src/components/tab/stories/tab.stories.ts +0 -97
  303. package/src/components/tab/tab-group.css +0 -63
  304. package/src/components/tab/tab-panel.css +0 -10
  305. package/src/components/tab/tab.css +0 -54
  306. package/src/components/tab/test/tab-group.test.ts +0 -426
  307. package/src/components/tab/test/tab-panel.test.ts +0 -102
  308. package/src/components/tab/test/tab.test.ts +0 -139
  309. package/src/components/table/Table.ts +0 -253
  310. package/src/components/table/leu-table.ts +0 -11
  311. package/src/components/table/stories/table.stories.ts +0 -131
  312. package/src/components/table/table.css +0 -112
  313. package/src/components/table/test/table.test.ts +0 -37
  314. package/src/components/tag/Tag.ts +0 -28
  315. package/src/components/tag/leu-tag.ts +0 -11
  316. package/src/components/tag/stories/tag.stories.ts +0 -107
  317. package/src/components/tag/tag.css +0 -42
  318. package/src/components/tag/test/tag.test.ts +0 -28
  319. package/src/components/visually-hidden/VisuallyHidden.ts +0 -16
  320. package/src/components/visually-hidden/leu-visually-hidden.ts +0 -11
  321. package/src/components/visually-hidden/stories/visually-hidden.stories.ts +0 -22
  322. package/src/components/visually-hidden/test/visually-hidden.test.ts +0 -34
  323. package/src/components/visually-hidden/visually-hidden.css +0 -10
  324. package/src/docs/contributing.mdx +0 -154
  325. package/src/docs/installation.mdx +0 -35
  326. package/src/docs/theme.mdx +0 -400
  327. package/src/docs/usage.mdx +0 -73
  328. package/src/global.d.ts +0 -11
  329. package/src/index.ts +0 -29
  330. package/src/lib/LeuElement.ts +0 -43
  331. package/src/lib/a11y.ts +0 -26
  332. package/src/lib/hasSlotController.ts +0 -74
  333. package/src/lib/mixins/FormAssociatedMixin.ts +0 -115
  334. package/src/lib/styleMap.ts +0 -139
  335. package/src/lib/utils.ts +0 -45
  336. package/src/styles/common-styles.css +0 -14
  337. package/src/styles/custom-media.css +0 -6
  338. package/src/styles/font-definitions.json +0 -210
  339. package/src/styles/style.stories.ts +0 -64
  340. package/src/styles/theme.css +0 -90
  341. package/stat_zh.png +0 -0
  342. package/stylelint.config.mjs +0 -23
  343. package/tsconfig.build.json +0 -24
  344. package/tsconfig.json +0 -14
  345. package/tsdown.config.ts +0 -35
  346. 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
- }