@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,117 +0,0 @@
1
- import { html } from "lit"
2
- import { styleMap } from "lit/directives/style-map.js"
3
- import { ifDefined } from "lit/directives/if-defined.js"
4
- import "../leu-popup.js"
5
- import "../../button/leu-button.js"
6
-
7
- export default {
8
- title: "Components/Popup",
9
- component: "leu-popup",
10
- argTypes: {
11
- placement: {
12
- control: {
13
- type: "select",
14
- },
15
- options: [
16
- "top",
17
- "top-start",
18
- "top-end",
19
- "bottom",
20
- "bottom-start",
21
- "bottom-end",
22
- "left",
23
- "left-start",
24
- "left-end",
25
- "right",
26
- "right-start",
27
- "right-end",
28
- ],
29
- },
30
- },
31
- }
32
-
33
- const popupStyles = {
34
- background: "white",
35
- border: "1px solid var(--leu-color-black-40)",
36
- padding: "0.5rem",
37
- boxShadow: "var(--leu-box-shadow-regular)",
38
- }
39
-
40
- function Template(args = {}) {
41
- return html`<leu-popup
42
- ?active=${args.active}
43
- ?flip=${args.flip}
44
- ?shift=${args.shift}
45
- placement=${ifDefined(args.placement)}
46
- offset-main-axis=${ifDefined(args.offsetMainAxis)}
47
- offset-cross-axis=${ifDefined(args.offsetCrossAxis)}
48
- offset-alignment-axis=${ifDefined(args.offsetAlignmentAxis)}
49
- >
50
- <leu-button slot="anchor">Open popup</leu-button>
51
- <div style=${styleMap(popupStyles)}>Popup content</div>
52
- </leu-popup>`
53
- }
54
-
55
- export const Regular = Template.bind({})
56
- Regular.args = {
57
- active: true,
58
- placement: "bottom-start",
59
- flip: true,
60
- shift: true,
61
- offsetMainAxis: 0,
62
- offsetAlignmentAxis: 0,
63
- }
64
-
65
- export const VirtualElement = {
66
- render: (args = {}) => html`
67
- <leu-popup
68
- ?active=${args.active}
69
- ?flip=${args.flip}
70
- ?shift=${args.shift}
71
- placement=${ifDefined(args.placement)}
72
- offset-main-axis=${ifDefined(args.offsetMainAxis)}
73
- offset-cross-axis=${ifDefined(args.offsetCrossAxis)}
74
- offset-alignment-axis=${ifDefined(args.offsetAlignmentAxis)}
75
- >
76
- <div style=${styleMap(popupStyles)}>Popup content</div>
77
- </leu-popup>
78
- <script>
79
- const body = document.body
80
- const popup = document.querySelector("leu-popup")
81
- let clientX = 0
82
- let clientY = 0
83
-
84
- body.style.height = "100vh"
85
-
86
- popup.anchor = {
87
- getBoundingClientRect() {
88
- return {
89
- width: 0,
90
- height: 0,
91
- x: clientX,
92
- y: clientY,
93
- top: clientY,
94
- left: clientX,
95
- right: clientX,
96
- bottom: clientY,
97
- }
98
- },
99
- }
100
-
101
- body.addEventListener("mousemove", (event) => {
102
- clientX = event.clientX
103
- clientY = event.clientY
104
-
105
- popup.reposition()
106
- })
107
- </script>
108
- `,
109
- args: {
110
- active: true,
111
- placement: "bottom-start",
112
- flip: true,
113
- shift: true,
114
- offsetMainAxis: 8,
115
- offsetAlignmentAxis: 8,
116
- },
117
- }
@@ -1,90 +0,0 @@
1
- import { html } from "lit"
2
- import { fixture, expect } from "@open-wc/testing"
3
-
4
- import "../leu-popup.js"
5
- import { LeuPopup } from "../Popup.js"
6
-
7
- async function defaultFixture() {
8
- return fixture<LeuPopup>(html`
9
- <leu-popup
10
- ><div slot="anchor"></div>
11
- <p>Popup content</p></leu-popup
12
- >
13
- `)
14
- }
15
-
16
- describe("LeuPopup", () => {
17
- it("is a defined element", async () => {
18
- const el = customElements.get("leu-popup")
19
-
20
- expect(el).not.to.be.undefined
21
- })
22
-
23
- it("passes the a11y audit", async () => {
24
- const el = await defaultFixture()
25
-
26
- await expect(el).shadowDom.to.be.accessible()
27
- })
28
-
29
- it("moves content to the position of a virtual element", async () => {
30
- const popup = await fixture<LeuPopup>(
31
- html`<leu-popup ?active=${true} placement="bottom-start"
32
- ><div slot="anchor"></div>
33
- <div
34
- style="background: white; border: 1px solid black; padding: 0.5rem"
35
- >
36
- Popup content
37
- </div></leu-popup
38
- >
39
- <style>
40
- * {
41
- margin: 0;
42
- padding: 0;
43
- }
44
- </style> `,
45
- )
46
-
47
- popup.anchor = {
48
- getBoundingClientRect: () => new DOMRect(32, 125, 0, 0),
49
- }
50
-
51
- popup.reposition()
52
-
53
- await new Promise<void>((resolve) => {
54
- requestAnimationFrame(() => resolve())
55
- })
56
-
57
- const popupContent =
58
- popup.shadowRoot!.querySelector<HTMLDivElement>(".popup")
59
-
60
- expect(popupContent.style.left).to.equal("32px")
61
- expect(popupContent.style.top).to.equal("125px")
62
- })
63
-
64
- it("applies offset properties correctly", async () => {
65
- const popup = await fixture<LeuPopup>(
66
- html`<leu-popup
67
- ?active=${true}
68
- placement="bottom-start"
69
- offset-main-axis="12"
70
- offset-cross-axis="9"
71
- >
72
- <div
73
- slot="anchor"
74
- style="width: 16px; height: 16px; position: absolute; top: 0; left: 0;"
75
- ></div>
76
- <div style="background: white; padding: 0.5rem">Popup content</div>
77
- </leu-popup>`,
78
- )
79
-
80
- await new Promise<void>((resolve) => {
81
- requestAnimationFrame(() => resolve())
82
- })
83
-
84
- const popupContent =
85
- popup.shadowRoot!.querySelector<HTMLDivElement>(".popup")
86
-
87
- expect(popupContent.style.left).to.equal("9px") // offset-cross-axis
88
- expect(popupContent.style.top).to.equal("28px") // offset-main-axis + anchor height
89
- })
90
- })
@@ -1,52 +0,0 @@
1
- import { html, nothing } from "lit"
2
- import { ifDefined } from "lit/directives/if-defined.js"
3
- import { property } from "lit/decorators.js"
4
-
5
- import { LeuElement } from "../../lib/LeuElement.js"
6
-
7
- import styles from "./progress-bar.css?inline"
8
-
9
- /**
10
- * An indicator showing the completion progress of a task
11
- *
12
- * @tagname leu-progress-bar
13
- */
14
- export class LeuProgressBar extends LeuElement {
15
- static styles = [LeuElement.styles, styles]
16
-
17
- static shadowRootOptions = {
18
- ...LeuElement.shadowRootOptions,
19
- delegatesFocus: true,
20
- }
21
-
22
- /** Progress as a percentage from 0 to 100 */
23
- @property({ type: Number, reflect: true })
24
- value: number = 0
25
-
26
- /** Label that is displayed below the progress bar */
27
- @property({ type: String, reflect: true })
28
- label: string = ""
29
-
30
- /** Whether the progress bar is in indeterminate state. */
31
- @property({ type: Boolean, reflect: true })
32
- indeterminate: boolean = false
33
-
34
- render() {
35
- return html`
36
- <progress
37
- class="progress"
38
- max=${ifDefined(!this.indeterminate ? 100 : undefined)}
39
- value=${ifDefined(!this.indeterminate ? this.value : undefined)}
40
- id="progress"
41
- ></progress>
42
- <div class="info">
43
- ${this.label
44
- ? html`<label class="label" for="progress">${this.label}</label>`
45
- : html`<div class="label label--placeholder"></div>`}
46
- ${this.indeterminate
47
- ? nothing
48
- : html`<span class="value">${Math.round(this.value)}&#8239;%</span>`}
49
- </div>
50
- `
51
- }
52
- }
@@ -1,11 +0,0 @@
1
- import { LeuProgressBar } from "./ProgressBar.js"
2
-
3
- export { LeuProgressBar }
4
-
5
- LeuProgressBar.define("leu-progress-bar")
6
-
7
- declare global {
8
- interface HTMLElementTagNameMap {
9
- "leu-progress-bar": LeuProgressBar
10
- }
11
- }
@@ -1,97 +0,0 @@
1
- /* :host {
2
- --progress-bar-font-regular: var(--leu-font-family-regular);
3
- --progress-bar-font-black: var(--leu-font-family-black);
4
-
5
- font-family: var(--progress-bar-font-regular);
6
- } */
7
-
8
- .progress {
9
- --_height: 0.5rem;
10
- --_border-radius: 0.25rem;
11
- --_progress-color: var(--leu-color-func-cyan);
12
- --_indeterminate-animation: indeterminate 2s ease infinite;
13
- --_indeterminate-width: 25%;
14
-
15
- appearance: none;
16
- display: block;
17
- width: 100%;
18
- height: var(--_height);
19
-
20
- background-color: var(--leu-color-black-transp-10);
21
- border: none;
22
- border-radius: var(--_border-radius);
23
- margin-bottom: 0.5rem;
24
- }
25
-
26
- .progress::-webkit-progress-bar {
27
- background: transparent;
28
- border-radius: var(--_border-radius);
29
- }
30
-
31
- /* Progress bar */
32
- .progress::-moz-progress-bar {
33
- background-color: var(--_progress-color);
34
- border-radius: var(--_border-radius);
35
- }
36
-
37
- .progress::-webkit-progress-value {
38
- background-color: var(--_progress-color);
39
- border-radius: var(--_border-radius);
40
- }
41
-
42
- /* Indeterminate state */
43
- .progress:indeterminate::-moz-progress-bar {
44
- width: var(--_indeterminate-width);
45
- animation: var(--_indeterminate-animation);
46
- }
47
-
48
- /* Safari */
49
- .progress:indeterminate::-webkit-progress-value {
50
- display: block;
51
- width: var(--_indeterminate-width);
52
- animation: var(--_indeterminate-animation);
53
- }
54
-
55
- /* Chrome */
56
- .progress:indeterminate::before {
57
- content: "";
58
- display: block;
59
- width: var(--_indeterminate-width);
60
- height: var(--_height);
61
- background-color: var(--_progress-color);
62
- border-radius: var(--_border-radius);
63
- animation: var(--_indeterminate-animation);
64
- }
65
-
66
- @keyframes indeterminate {
67
- 0% {
68
- margin-left: 0%;
69
- }
70
-
71
- 50% {
72
- margin-left: 75%;
73
- }
74
-
75
- 100% {
76
- margin-left: 0%;
77
- }
78
- }
79
-
80
- /* Info section (text label and value) */
81
- .info {
82
- display: flex;
83
- justify-content: space-between;
84
- align-items: center;
85
- flex-wrap: wrap;
86
- gap: 0.25rem;
87
- }
88
-
89
- .label,
90
- .value {
91
- font: var(--leu-t-tiny-regular-font);
92
- color: var(--leu-color-black-60);
93
- }
94
-
95
- .value {
96
- /* margin-left: auto; */
97
- }
@@ -1,39 +0,0 @@
1
- import { Meta, StoryObj } from "@storybook/web-components-vite"
2
- import { html } from "lit"
3
- import { ifDefined } from "lit/directives/if-defined.js"
4
-
5
- import "../leu-progress-bar.js"
6
- import { LeuProgressBar } from "../ProgressBar.js"
7
-
8
- type StoryArgs = LeuProgressBar
9
- type Story = StoryObj<StoryArgs>
10
-
11
- export default {
12
- title: "Components/ProgressBar",
13
- component: "leu-progress-bar",
14
- } satisfies Meta<StoryArgs>
15
-
16
- const Template: Story = {
17
- render: ({ label, value, indeterminate }) =>
18
- html` <leu-progress-bar
19
- .label="${ifDefined(label)}"
20
- .value="${ifDefined(value)}"
21
- ?indeterminate=${indeterminate}
22
- ></leu-progress-bar>`,
23
- }
24
-
25
- export const Regular = {
26
- ...Template,
27
- args: {
28
- value: 50,
29
- label: "Datei hochladen",
30
- },
31
- }
32
-
33
- export const Indeterminate = {
34
- ...Template,
35
- args: {
36
- indeterminate: true,
37
- label: "Datei hochladen",
38
- },
39
- }
@@ -1,61 +0,0 @@
1
- import { html } from "lit"
2
- import { fixture, expect } from "@open-wc/testing"
3
- import { ifDefined } from "lit/directives/if-defined.js"
4
-
5
- import "../leu-progress-bar.js"
6
- import { type LeuProgressBar } from "../ProgressBar.js"
7
-
8
- async function defaultFixture({
9
- value,
10
- label,
11
- indeterminate,
12
- }: { value?: number; label?: string; indeterminate?: boolean } = {}) {
13
- return fixture<LeuProgressBar>(
14
- html`<leu-progress-bar
15
- value=${ifDefined(value)}
16
- label=${ifDefined(label)}
17
- ?indeterminate=${indeterminate}
18
- ></leu-progress-bar>`,
19
- )
20
- }
21
-
22
- describe("LeuProgressBar", () => {
23
- it("is a defined element", async () => {
24
- const el = customElements.get("leu-progress-bar")
25
-
26
- expect(el).not.to.be.undefined
27
- })
28
-
29
- it("passes the a11y audit", async () => {
30
- const el = await defaultFixture({ value: 65, label: "Datei hochladen" })
31
-
32
- await expect(el).shadowDom.to.be.accessible()
33
- })
34
-
35
- it("renders the text labels and applies the value", async () => {
36
- const el = await defaultFixture({ value: 65, label: "Datei hochladen" })
37
-
38
- const label = el.shadowRoot?.querySelector(".label")
39
- const value = el.shadowRoot?.querySelector(".value")
40
- const progress = el.shadowRoot?.querySelector("progress")
41
-
42
- expect(label?.textContent).to.equal("Datei hochladen")
43
- expect(value?.textContent).to.equal("65 %")
44
- expect(progress?.value).to.equal(65)
45
- })
46
-
47
- it("applies the indeterminate state", async () => {
48
- const el = await defaultFixture({
49
- value: 65,
50
- label: "Datei hochladen",
51
- indeterminate: true,
52
- })
53
-
54
- const value = el.shadowRoot?.querySelector(".value")
55
- const progress = el.shadowRoot?.querySelector("progress")
56
-
57
- expect(value).to.not.exist
58
- expect(progress).to.not.have.attribute("value")
59
- expect(progress).to.not.have.attribute("max")
60
- })
61
- })
@@ -1,59 +0,0 @@
1
- import { html } from "lit"
2
- import { property } from "lit/decorators.js"
3
-
4
- import { LeuElement } from "../../lib/LeuElement.js"
5
-
6
- import styles from "./radio.css?inline"
7
-
8
- /**
9
- * @tagname leu-radio
10
- */
11
- export class LeuRadio extends LeuElement {
12
- static styles = [LeuElement.styles, styles]
13
-
14
- /** @internal */
15
- static shadowRootOptions = {
16
- ...LeuElement.shadowRootOptions,
17
- delegatesFocus: true,
18
- }
19
-
20
- @property({ type: Boolean, reflect: true })
21
- checked: boolean = false
22
-
23
- @property({ type: Boolean, reflect: true })
24
- disabled: boolean = false
25
-
26
- @property({ type: String, reflect: true })
27
- value: string = ""
28
-
29
- @property({ type: String, reflect: true })
30
- name: string = ""
31
-
32
- private handleChange(event: Event & { target: HTMLInputElement }) {
33
- this.checked = event.target.checked
34
-
35
- const customEvent = new CustomEvent(event.type, event)
36
- this.dispatchEvent(customEvent)
37
- }
38
-
39
- private handleInput(event: InputEvent & { target: HTMLInputElement }) {
40
- this.checked = event.target.checked
41
- }
42
-
43
- render() {
44
- return html`
45
- <input
46
- id=${`radio-${this.name}`}
47
- class="radio"
48
- type="radio"
49
- name="${this.name}"
50
- @change=${this.handleChange}
51
- @input=${this.handleInput}
52
- .checked=${this.checked}
53
- ?disabled=${this.disabled}
54
- .value=${this.value ?? ""}
55
- />
56
- <label for=${`radio-${this.name}`} class="label"><slot></slot></label>
57
- `
58
- }
59
- }