@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,142 +0,0 @@
1
- import { html } from "lit"
2
- import "../leu-dialog.js"
3
- import "../../input/leu-input.js"
4
- import "../../button/leu-button.js"
5
-
6
- export default {
7
- title: "Components/Dialog",
8
- component: "leu-dialog",
9
- parameters: {
10
- design: {
11
- type: "figma",
12
- url: "https://www.figma.com/file/d6Pv21UVUbnBs3AdcZijHmbN/KTZH-Design-System?node-id=16052-88818&node-type=canvas&t=swv3JY6UIoCBUpXa-11",
13
- },
14
- },
15
- }
16
-
17
- function openDialog() {
18
- document.querySelector("leu-dialog").show()
19
- }
20
-
21
- function closeDialog() {
22
- document.querySelector("leu-dialog").close()
23
- }
24
-
25
- function OpenDialogButton() {
26
- return html` <leu-button @click=${() => openDialog()}>
27
- Open dialog
28
- </leu-button>`
29
- }
30
-
31
- function Template({ label, sublabel }) {
32
- return html`
33
- ${OpenDialogButton()}
34
-
35
- <leu-dialog label="${label}" sublabel="${sublabel}">
36
- <leu-input label="Eingabe"></leu-input>
37
- <br />
38
- Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
39
- eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
40
- voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet
41
- clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit
42
- amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
43
- nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed
44
- diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.
45
- Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor
46
- sit amet.
47
- </leu-dialog>
48
- `
49
- }
50
-
51
- export const Regular = Template.bind({})
52
- Regular.args = {
53
- label: "Property: label",
54
- rubric: "Property: sublabel",
55
- }
56
-
57
- function ActionButtonsTemplate({ label, sublabel }) {
58
- return html`
59
- ${OpenDialogButton()}
60
-
61
- <leu-dialog label="${label}" sublabel="${sublabel}">
62
- Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
63
- eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
64
- voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet
65
- clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit
66
- amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
67
- nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed
68
- diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.
69
- Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor
70
- sit amet.
71
- <slot slot="actionbar">
72
- <leu-button
73
- variant="secondary"
74
- @click=${() => {
75
- alert("Fenster wird geschlossen")
76
- closeDialog()
77
- }}
78
- >
79
- Abbrechen
80
- </leu-button>
81
- <leu-button
82
- @click=${() => {
83
- alert("Fenster wird offen gelassen")
84
- }}
85
- >
86
- Anwenden
87
- </leu-button>
88
- </slot>
89
- </leu-dialog>
90
- `
91
- }
92
-
93
- export const ActionButtons = ActionButtonsTemplate.bind({})
94
- ActionButtons.args = {
95
- label: "Property: label",
96
- sublabel: "Property: sublabel",
97
- }
98
-
99
- function SmallContentTemplate({ label, sublabel }) {
100
- return html`
101
- ${OpenDialogButton()}
102
-
103
- <leu-dialog label="${label}" sublabel="${sublabel}">
104
- <p>Ein kurzer Text</p>
105
- </leu-dialog>
106
- `
107
- }
108
-
109
- export const SmallContent = SmallContentTemplate.bind({})
110
- SmallContent.args = {
111
- label: "Dialog Titel",
112
- sublabel: "Property: sublabel",
113
- }
114
-
115
- function ScrollablePageTemplate({ label, sublabel }) {
116
- return html`
117
- <div style="height: 200vh">
118
- ${OpenDialogButton()}
119
-
120
- <leu-dialog label="${label}" sublabel="${sublabel}">
121
- <leu-input label="Eingabe"></leu-input>
122
- <br />
123
- Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
124
- eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
125
- voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet
126
- clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit
127
- amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
128
- nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,
129
- sed diam voluptua. At vero eos et accusam et justo duo dolores et ea
130
- rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem
131
- ipsum dolor sit amet.
132
- </leu-dialog>
133
- </div>
134
- <div style="height: 200vh">${OpenDialogButton()}</div>
135
- `
136
- }
137
-
138
- export const ScrollablePage = ScrollablePageTemplate.bind({})
139
- ScrollablePage.args = {
140
- label: "Dialog Titel",
141
- sublabel: "Property: sublabel",
142
- }
@@ -1,85 +0,0 @@
1
- import { html } from "lit"
2
- import { fixture, expect } from "@open-wc/testing"
3
-
4
- import "../leu-dialog.js"
5
-
6
- async function defaultFixture() {
7
- return fixture(
8
- html`<leu-dialog label="Title" sublabel="Category">
9
- This is the content of the dialog.
10
- </leu-dialog>`,
11
- )
12
- }
13
-
14
- describe("LeuDialog", () => {
15
- it("is a defined element", async () => {
16
- const el = await customElements.get("leu-dialog")
17
-
18
- expect(el).not.to.be.undefined
19
- })
20
-
21
- it("passes the a11y audit", async () => {
22
- const el = await defaultFixture()
23
-
24
- await expect(el).shadowDom.to.be.accessible()
25
- })
26
-
27
- it("passes the a11y audit when the modal is open", async () => {
28
- const el = await defaultFixture()
29
-
30
- el.show()
31
-
32
- await expect(el).shadowDom.to.be.accessible()
33
- })
34
-
35
- it("opens the dialog when calling show()", async () => {
36
- const el = await defaultFixture()
37
-
38
- el.show()
39
-
40
- const dialog = el.shadowRoot.querySelector("dialog")
41
-
42
- expect(dialog.open).to.be.true
43
- })
44
-
45
- it("closes the dialog when calling close()", async () => {
46
- const el = await defaultFixture()
47
-
48
- el.show()
49
- el.close()
50
-
51
- const dialog = el.shadowRoot.querySelector("dialog")
52
-
53
- expect(dialog.open).to.be.false
54
- })
55
-
56
- it("renders a label and a sublabel", async () => {
57
- const el = await defaultFixture()
58
-
59
- const label = el.shadowRoot.querySelector("h1")
60
- const sublabel = el.shadowRoot.querySelector(".subtitle")
61
-
62
- expect(label).to.have.text("Title")
63
- expect(sublabel).to.have.text("Category")
64
- })
65
-
66
- it("renders a close button", async () => {
67
- const el = await defaultFixture()
68
-
69
- const closeButton = el.shadowRoot.querySelector(".close-button")
70
-
71
- expect(closeButton).to.exist
72
- })
73
-
74
- it("closes the dialog when clicking the close button", async () => {
75
- const el = await defaultFixture()
76
- const dialog = el.shadowRoot.querySelector("dialog")
77
-
78
- el.show()
79
-
80
- const closeButton = el.shadowRoot.querySelector(".close-button")
81
- expect(dialog.open).to.be.true
82
- closeButton.click()
83
- expect(dialog.open).to.be.false
84
- })
85
- })
@@ -1,152 +0,0 @@
1
- import { html, nothing } from "lit"
2
- import { createRef, ref } from "lit/directives/ref.js"
3
- import { property } from "lit/decorators.js"
4
-
5
- import { LeuElement } from "../../lib/LeuElement.js"
6
- import { HasSlotController } from "../../lib/hasSlotController.js"
7
-
8
- import { LeuButton } from "../button/Button.js"
9
- import { LeuMenu } from "../menu/Menu.js"
10
- import { LeuMenuItem } from "../menu/MenuItem.js"
11
- import { LeuPopup } from "../popup/Popup.js"
12
-
13
- import styles from "./dropdown.css?inline"
14
-
15
- /**
16
- * @tagname leu-dropdown
17
- */
18
- export class LeuDropdown extends LeuElement {
19
- static dependencies = {
20
- "leu-button": LeuButton,
21
- "leu-menu": LeuMenu,
22
- "leu-menu-item": LeuMenuItem,
23
- "leu-popup": LeuPopup,
24
- }
25
-
26
- static styles = [LeuElement.styles, styles]
27
-
28
- @property({ type: String, reflect: true })
29
- label: string = ""
30
-
31
- @property({ type: Boolean, reflect: true })
32
- expanded: boolean = false
33
-
34
- @property({ type: Boolean, reflect: true })
35
- inverted: boolean = false
36
-
37
- protected hasSlotController = new HasSlotController(this, ["icon"])
38
-
39
- protected _toggleRef = createRef<HTMLButtonElement>()
40
-
41
- connectedCallback() {
42
- super.connectedCallback()
43
- this.addEventListener("keyup", this._keyUpHandler)
44
- document.addEventListener("click", this._documentClickHandler)
45
-
46
- const menu = this._getMenu()
47
-
48
- menu.addEventListener("keydown", this._keyDownMenuHandler)
49
- menu.addEventListener("click", this._menuItemClickHandler)
50
- }
51
-
52
- disconnectedCallback() {
53
- super.disconnectedCallback()
54
- this.removeEventListener("keyup", this._keyUpHandler)
55
- document.removeEventListener("click", this._documentClickHandler)
56
-
57
- const menu = this._getMenu()
58
-
59
- menu.removeEventListener("keydown", this._keyDownMenuHandler)
60
- menu.removeEventListener("click", this._menuItemClickHandler)
61
- }
62
-
63
- protected _documentClickHandler = (event: MouseEvent) => {
64
- if (!event.composedPath().includes(this)) {
65
- this.expanded = false
66
- }
67
- }
68
-
69
- protected _keyUpHandler = (event: KeyboardEvent) => {
70
- if (event.key === "Escape") {
71
- this.expanded = false
72
- }
73
- }
74
-
75
- protected async _keyDownToggleHandler(event: KeyboardEvent) {
76
- if (["ArrowDown", "ArrowUp", "Home", "End"].includes(event.key)) {
77
- event.preventDefault()
78
- const menu = this._getMenu()
79
-
80
- this.expanded = true
81
-
82
- await this.updateComplete
83
-
84
- if (event.key === "ArrowDown" || event.key === "Home") {
85
- menu.focusItem(0)
86
- } else if (event.key === "ArrowUp" || event.key === "End") {
87
- menu.focusItem(-1)
88
- }
89
- }
90
- }
91
-
92
- protected _menuItemClickHandler = (
93
- e: MouseEvent & { target: HTMLElement },
94
- ) => {
95
- if (e.target.tagName.toLowerCase() === "leu-menu-item") {
96
- this.expanded = false
97
- this._toggleRef.value.focus()
98
- }
99
- }
100
-
101
- /**
102
- * Close the dropdown when the user presses the Escape or the Tab key.
103
- * Navigating the menu with the arrow keys is handled by the menu itself.
104
- */
105
- protected _keyDownMenuHandler = (e: KeyboardEvent) => {
106
- if (e.key === "Escape" || e.key === "Tab") {
107
- e.preventDefault()
108
- this.expanded = false
109
- this._toggleRef.value.focus()
110
- }
111
- }
112
-
113
- protected _handleToggleClick() {
114
- this.expanded = !this.expanded
115
- }
116
-
117
- protected _getMenu() {
118
- return this.querySelector<LeuMenu>("leu-menu")
119
- }
120
-
121
- render() {
122
- const hasIcon = this.hasSlotController.test("icon")
123
- return html`
124
- <leu-popup
125
- ?active=${this.expanded}
126
- placement="bottom-start"
127
- shift
128
- shiftPadding="8"
129
- autoSize="width"
130
- autoSizePadding="8"
131
- >
132
- <leu-button
133
- ref=${ref(this._toggleRef)}
134
- class="button"
135
- slot="anchor"
136
- variant="ghost"
137
- expanded=${this.expanded ? "true" : "false"}
138
- ?active=${this.expanded}
139
- ?inverted=${this.inverted}
140
- @click=${this._handleToggleClick}
141
- @keydown=${this._keyDownToggleHandler}
142
- >
143
- ${hasIcon ? html`<slot name="icon" slot="before"></slot>` : nothing}
144
- ${this.label}</leu-button
145
- >
146
- <div id="content" class="content" ?hidden=${!this.expanded}>
147
- <slot></slot>
148
- </div>
149
- </leu-popup>
150
- `
151
- }
152
- }
@@ -1,16 +0,0 @@
1
- :host {
2
- position: relative;
3
- display: contents;
4
- }
5
-
6
- .content {
7
- overflow: hidden;
8
- box-shadow: var(--leu-box-shadow-short);
9
- border-radius: 2px;
10
-
11
- margin-top: 0.5rem;
12
- }
13
-
14
- .button {
15
- max-width: 100%;
16
- }
@@ -1,11 +0,0 @@
1
- import { LeuDropdown } from "./Dropdown.js"
2
-
3
- export { LeuDropdown }
4
-
5
- LeuDropdown.define("leu-dropdown")
6
-
7
- declare global {
8
- interface HTMLElementTagNameMap {
9
- "leu-dropdown": LeuDropdown
10
- }
11
- }
@@ -1,58 +0,0 @@
1
- import { html, nothing } from "lit"
2
- import "../leu-dropdown.js"
3
- import "../../icon/leu-icon.js"
4
-
5
- import { paths as iconPaths } from "../../icon/paths.js"
6
-
7
- /**
8
- * @type {import("@storybook/web-components-vite").Meta}
9
- */
10
- export default {
11
- title: "Components/Dropdown",
12
- component: "leu-dropdown",
13
- parameters: {
14
- design: {
15
- type: "figma",
16
- url: "https://www.figma.com/file/d6Pv21UVUbnBs3AdcZijHmbN/KTZH-Design-System?type=design&node-id=136815-217650&mode=design&t=lzVrtq8lxYVJU5TB-11",
17
- },
18
- },
19
- argTypes: {
20
- icon: {
21
- control: "select",
22
- options: Object.keys(iconPaths),
23
- },
24
- },
25
- }
26
-
27
- function Template({ label, expanded, icon, inverted }) {
28
- return html` <leu-dropdown
29
- label=${label}
30
- ?expanded=${expanded}
31
- ?inverted=${inverted}
32
- >
33
- ${icon ? html`<leu-icon name=${icon} slot="icon"></leu-icon>` : nothing}
34
- <leu-menu>
35
- <leu-menu-item
36
- href="https://www.web.statistik.zh.ch/ogd/daten/ressourcen/KTZH_00001120_00002165.csv"
37
- >OGD Ressource</leu-menu-item
38
- >
39
- <leu-menu-item>Als CSV Tabelle</leu-menu-item>
40
- <leu-menu-item>Als XLS Tabelle</leu-menu-item>
41
- <hr />
42
- <leu-menu-item>Als PNG exportieren</leu-menu-item>
43
- <leu-menu-item>Als SVG exportieren</leu-menu-item>
44
- <leu-menu-item disabled>Als PDF exportieren</leu-menu-item>
45
- </leu-menu>
46
- </leu-dropdown>`
47
- }
48
-
49
- export const Regular = Template.bind({})
50
- Regular.args = {
51
- label: "Download",
52
- icon: "download",
53
- }
54
-
55
- export const WithoutIcon = Template.bind({})
56
- WithoutIcon.args = {
57
- label: "Download",
58
- }
@@ -1,59 +0,0 @@
1
- import { html } from "lit"
2
- import { fixture, expect, elementUpdated } from "@open-wc/testing"
3
-
4
- import "../leu-dropdown.js"
5
-
6
- async function defaultFixture(args = { expanded: false, inverted: false }) {
7
- return fixture(
8
- html` <leu-dropdown
9
- label="Download"
10
- ?expanded=${args.expanded}
11
- ?inverted=${args.inverted}
12
- >
13
- <leu-menu>
14
- <leu-menu-item>Als CSV Tabelle</leu-menu-item>
15
- <leu-menu-item>Als XLS Tabelle</leu-menu-item>
16
- <hr />
17
- <leu-menu-item>Als PNG exportieren</leu-menu-item>
18
- <leu-menu-item>Als SVG exportieren</leu-menu-item>
19
- <leu-menu-item>Als PDF exportieren</leu-menu-item>
20
- </leu-menu>
21
- </leu-dropdown>`,
22
- )
23
- }
24
-
25
- describe("LeuDropdown", () => {
26
- it("is a defined element", async () => {
27
- const el = customElements.get("leu-dropdown")
28
-
29
- await expect(el).not.to.be.undefined
30
- })
31
-
32
- it("passes the a11y audit", async () => {
33
- const el = await defaultFixture()
34
-
35
- await expect(el).shadowDom.to.be.accessible()
36
- })
37
-
38
- it("closes the popup when the document is clicked outside the component", async () => {
39
- const el = await defaultFixture()
40
-
41
- const toggleButton = el.shadowRoot.querySelector("leu-button")
42
- toggleButton.click()
43
- await elementUpdated(el)
44
-
45
- expect(el.expanded).to.be.true
46
-
47
- document.body.click()
48
-
49
- expect(el.expanded).to.be.false
50
- })
51
-
52
- it("reflects the inverted property to the internal button", async () => {
53
- const el = await defaultFixture({ inverted: true })
54
- await elementUpdated(el)
55
-
56
- const toggleButton = el.shadowRoot.querySelector("leu-button")
57
- expect(toggleButton.inverted).to.be.true
58
- })
59
- })