@statistikzh/leu 0.4.0 → 0.5.1

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 (220) hide show
  1. package/.storybook/preview.js +1 -2
  2. package/CHANGELOG.md +32 -0
  3. package/custom-elements-manifest.config.js +46 -0
  4. package/dist/Accordion.d.ts +31 -0
  5. package/dist/Accordion.d.ts.map +1 -0
  6. package/dist/Accordion.js +257 -0
  7. package/dist/Breadcrumb.d.ts +69 -0
  8. package/dist/Breadcrumb.d.ts.map +1 -0
  9. package/dist/Breadcrumb.js +392 -0
  10. package/dist/Button-5326c982.d.ts +84 -0
  11. package/dist/Button-5326c982.d.ts.map +1 -0
  12. package/dist/Button-5326c982.js +555 -0
  13. package/dist/Button.d.ts +2 -0
  14. package/dist/Button.d.ts.map +1 -0
  15. package/dist/Button.js +6 -420
  16. package/dist/ButtonGroup.d.ts +24 -0
  17. package/dist/ButtonGroup.d.ts.map +1 -0
  18. package/dist/ButtonGroup.js +70 -39
  19. package/dist/Checkbox.d.ts +13 -0
  20. package/dist/Checkbox.d.ts.map +1 -0
  21. package/dist/Checkbox.js +2 -2
  22. package/dist/CheckboxGroup.d.ts +13 -0
  23. package/dist/CheckboxGroup.d.ts.map +1 -0
  24. package/dist/CheckboxGroup.js +3 -3
  25. package/dist/Chip.d.ts +5 -0
  26. package/dist/Chip.d.ts.map +1 -0
  27. package/dist/{Chip-dac7337d.js → Chip.js} +16 -5
  28. package/dist/ChipGroup.d.ts +28 -0
  29. package/dist/ChipGroup.d.ts.map +1 -0
  30. package/dist/ChipGroup.js +62 -5
  31. package/dist/ChipLink.d.ts +15 -0
  32. package/dist/ChipLink.d.ts.map +1 -0
  33. package/dist/ChipLink.js +1 -1
  34. package/dist/ChipRemovable.d.ts +13 -0
  35. package/dist/ChipRemovable.d.ts.map +1 -0
  36. package/dist/ChipRemovable.js +2 -2
  37. package/dist/ChipSelectable.d.ts +22 -0
  38. package/dist/ChipSelectable.d.ts.map +1 -0
  39. package/dist/ChipSelectable.js +5 -5
  40. package/dist/Dropdown.d.ts +15 -0
  41. package/dist/Dropdown.d.ts.map +1 -0
  42. package/dist/Dropdown.js +30 -7
  43. package/dist/Input.d.ts +154 -0
  44. package/dist/Input.d.ts.map +1 -0
  45. package/dist/Input.js +13 -7
  46. package/dist/Menu.d.ts +8 -0
  47. package/dist/Menu.d.ts.map +1 -0
  48. package/dist/MenuItem.d.ts +21 -0
  49. package/dist/MenuItem.d.ts.map +1 -0
  50. package/dist/MenuItem.js +3 -3
  51. package/dist/Pagination.d.ts +27 -0
  52. package/dist/Pagination.d.ts.map +1 -0
  53. package/dist/Pagination.js +93 -61
  54. package/dist/Popup.d.ts +18 -0
  55. package/dist/Popup.d.ts.map +1 -0
  56. package/dist/{leu-popup-4bf6f1f4.js → Popup.js} +4 -5
  57. package/dist/Radio.d.ts +12 -0
  58. package/dist/Radio.d.ts.map +1 -0
  59. package/dist/Radio.js +2 -2
  60. package/dist/RadioGroup.d.ts +20 -0
  61. package/dist/RadioGroup.d.ts.map +1 -0
  62. package/dist/RadioGroup.js +3 -3
  63. package/dist/ScrollTop.d.ts +19 -0
  64. package/dist/ScrollTop.d.ts.map +1 -0
  65. package/dist/ScrollTop.js +122 -0
  66. package/dist/Select.d.ts +98 -0
  67. package/dist/Select.d.ts.map +1 -0
  68. package/dist/Select.js +27 -82
  69. package/dist/Table.d.ts +48 -0
  70. package/dist/Table.d.ts.map +1 -0
  71. package/dist/Table.js +7 -4
  72. package/dist/VisuallyHidden.d.ts +8 -0
  73. package/dist/VisuallyHidden.d.ts.map +1 -0
  74. package/dist/VisuallyHidden.js +28 -0
  75. package/dist/_rollupPluginBabelHelpers-20f659f4.d.ts +3 -0
  76. package/dist/_rollupPluginBabelHelpers-20f659f4.d.ts.map +1 -0
  77. package/dist/defineElement-40372b4b.d.ts +9 -0
  78. package/dist/defineElement-40372b4b.d.ts.map +1 -0
  79. package/dist/{defineElement-47d4f665.js → defineElement-40372b4b.js} +1 -1
  80. package/dist/icon-03e86700.d.ts +11 -0
  81. package/dist/icon-03e86700.d.ts.map +1 -0
  82. package/dist/index.d.ts +21 -0
  83. package/dist/index.d.ts.map +1 -0
  84. package/dist/index.js +14 -8
  85. package/dist/leu-accordion.d.ts +3 -0
  86. package/dist/leu-accordion.d.ts.map +1 -0
  87. package/dist/leu-accordion.js +9 -0
  88. package/dist/leu-breadcrumb.d.ts +3 -0
  89. package/dist/leu-breadcrumb.d.ts.map +1 -0
  90. package/dist/leu-breadcrumb.js +23 -0
  91. package/dist/leu-button-group.d.ts +3 -0
  92. package/dist/leu-button-group.d.ts.map +1 -0
  93. package/dist/leu-button-group.js +1 -5
  94. package/dist/leu-button.d.ts +3 -0
  95. package/dist/leu-button.d.ts.map +1 -0
  96. package/dist/leu-button.js +3 -2
  97. package/dist/leu-checkbox-group.d.ts +3 -0
  98. package/dist/leu-checkbox-group.d.ts.map +1 -0
  99. package/dist/leu-checkbox-group.js +1 -1
  100. package/dist/leu-checkbox.d.ts +3 -0
  101. package/dist/leu-checkbox.d.ts.map +1 -0
  102. package/dist/leu-checkbox.js +1 -1
  103. package/dist/leu-chip-group.d.ts +3 -0
  104. package/dist/leu-chip-group.d.ts.map +1 -0
  105. package/dist/leu-chip-group.js +2 -1
  106. package/dist/leu-chip-link.d.ts +3 -0
  107. package/dist/leu-chip-link.d.ts.map +1 -0
  108. package/dist/leu-chip-link.js +2 -2
  109. package/dist/leu-chip-removable.d.ts +3 -0
  110. package/dist/leu-chip-removable.d.ts.map +1 -0
  111. package/dist/leu-chip-removable.js +2 -2
  112. package/dist/leu-chip-selectable.d.ts +3 -0
  113. package/dist/leu-chip-selectable.d.ts.map +1 -0
  114. package/dist/leu-chip-selectable.js +2 -2
  115. package/dist/leu-dropdown.d.ts +3 -0
  116. package/dist/leu-dropdown.d.ts.map +1 -0
  117. package/dist/leu-dropdown.js +5 -4
  118. package/dist/leu-input.d.ts +3 -0
  119. package/dist/leu-input.d.ts.map +1 -0
  120. package/dist/leu-input.js +1 -1
  121. package/dist/leu-menu-item.d.ts +3 -0
  122. package/dist/leu-menu-item.d.ts.map +1 -0
  123. package/dist/leu-menu-item.js +1 -1
  124. package/dist/leu-menu.d.ts +3 -0
  125. package/dist/leu-menu.d.ts.map +1 -0
  126. package/dist/leu-menu.js +1 -1
  127. package/dist/leu-pagination.d.ts +3 -0
  128. package/dist/leu-pagination.d.ts.map +1 -0
  129. package/dist/leu-pagination.js +5 -2
  130. package/dist/leu-popup.d.ts +3 -0
  131. package/dist/leu-popup.d.ts.map +1 -0
  132. package/dist/leu-popup.js +9 -0
  133. package/dist/leu-radio-group.d.ts +3 -0
  134. package/dist/leu-radio-group.d.ts.map +1 -0
  135. package/dist/leu-radio-group.js +1 -1
  136. package/dist/leu-radio.d.ts +3 -0
  137. package/dist/leu-radio.d.ts.map +1 -0
  138. package/dist/leu-radio.js +1 -1
  139. package/dist/leu-scroll-top.d.ts +3 -0
  140. package/dist/leu-scroll-top.d.ts.map +1 -0
  141. package/dist/leu-scroll-top.js +14 -0
  142. package/dist/leu-select.d.ts +3 -0
  143. package/dist/leu-select.d.ts.map +1 -0
  144. package/dist/leu-select.js +4 -3
  145. package/dist/leu-table.d.ts +3 -0
  146. package/dist/leu-table.d.ts.map +1 -0
  147. package/dist/leu-table.js +5 -2
  148. package/dist/leu-visually-hidden.d.ts +3 -0
  149. package/dist/leu-visually-hidden.d.ts.map +1 -0
  150. package/dist/leu-visually-hidden.js +8 -0
  151. package/dist/theme.css +386 -2
  152. package/dist/utils-65469421.d.ts +16 -0
  153. package/dist/utils-65469421.d.ts.map +1 -0
  154. package/dist/utils-65469421.js +35 -0
  155. package/dist/vscode.html-custom-data.json +579 -0
  156. package/dist/vue/index.d.ts +678 -0
  157. package/dist/web-types.json +1076 -0
  158. package/index.js +3 -0
  159. package/package.json +30 -12
  160. package/postcss.config.cjs +2 -0
  161. package/rollup.config.js +21 -40
  162. package/scripts/generate-component/templates/[name].css +2 -2
  163. package/scripts/postcss-leu-font-styles.cjs +160 -0
  164. package/src/components/accordion/accordion.css +2 -2
  165. package/src/components/accordion/stories/accordion.stories.js +2 -1
  166. package/src/components/accordion/test/accordion.test.js +4 -2
  167. package/src/components/breadcrumb/Breadcrumb.js +2 -1
  168. package/src/components/breadcrumb/breadcrumb.css +2 -13
  169. package/src/components/button/Button.js +69 -8
  170. package/src/components/button/button.css +23 -2
  171. package/src/components/button/stories/button.stories.js +43 -90
  172. package/src/components/button/test/button.test.js +90 -19
  173. package/src/components/button-group/ButtonGroup.js +76 -34
  174. package/src/components/button-group/stories/button-group.stories.js +13 -6
  175. package/src/components/button-group/test/button-group.test.js +38 -31
  176. package/src/components/checkbox/checkbox-group.css +2 -2
  177. package/src/components/checkbox/checkbox.css +1 -1
  178. package/src/components/chip/ChipGroup.js +42 -2
  179. package/src/components/chip/ChipRemovable.js +1 -1
  180. package/src/components/chip/ChipSelectable.js +4 -4
  181. package/src/components/chip/chip-group.css +12 -2
  182. package/src/components/chip/chip.css +14 -3
  183. package/src/components/chip/stories/chip-group.stories.js +100 -46
  184. package/src/components/chip/test/chip-removable.test.js +3 -3
  185. package/src/components/dropdown/Dropdown.js +24 -3
  186. package/src/components/dropdown/dropdown.css +4 -0
  187. package/src/components/input/Input.js +7 -4
  188. package/src/components/input/input.css +2 -2
  189. package/src/components/input/stories/input.stories.js +13 -0
  190. package/src/components/input/test/input.test.js +1 -0
  191. package/src/components/menu/menu-item.css +3 -3
  192. package/src/components/pagination/Pagination.js +91 -60
  193. package/src/components/pagination/pagination.css +6 -1
  194. package/src/components/pagination/stories/pagination.stories.js +15 -2
  195. package/src/components/pagination/test/pagination.test.js +15 -15
  196. package/src/components/popup/popup.css +2 -2
  197. package/src/components/popup/stories/popup.stories.js +1 -1
  198. package/src/components/radio/radio-group.css +2 -2
  199. package/src/components/radio/radio.css +1 -1
  200. package/src/components/scroll-top/ScrollTop.js +87 -0
  201. package/src/components/scroll-top/leu-scroll-top.js +6 -0
  202. package/src/components/scroll-top/scroll-top.css +34 -0
  203. package/src/components/scroll-top/stories/scroll-top.stories.js +217 -0
  204. package/src/components/scroll-top/test/scroll-top.test.js +22 -0
  205. package/src/components/select/Select.js +24 -6
  206. package/src/components/select/select.css +2 -2
  207. package/src/components/table/table.css +2 -2
  208. package/src/components/visually-hidden/VisuallyHidden.js +13 -0
  209. package/src/components/visually-hidden/leu-visually-hidden.js +6 -0
  210. package/src/components/visually-hidden/stories/visually-hidden.stories.js +22 -0
  211. package/src/components/visually-hidden/test/visually-hidden.test.js +36 -0
  212. package/src/components/visually-hidden/visually-hidden.css +10 -0
  213. package/src/lib/defineElement.js +1 -1
  214. package/src/lib/hasSlotController.js +5 -3
  215. package/src/lib/utils.js +21 -3
  216. package/src/styles/custom-properties.css +6 -2
  217. package/src/styles/font-definitions.json +202 -0
  218. package/stylelint.config.mjs +2 -0
  219. package/tsconfig.build.json +21 -0
  220. package/tsconfig.json +16 -0
@@ -0,0 +1,217 @@
1
+ import { html } from "lit"
2
+ import "../leu-scroll-top.js"
3
+
4
+ export default {
5
+ title: "ScrollTop",
6
+ component: "leu-scroll-top",
7
+ }
8
+
9
+ function Template() {
10
+ return html`
11
+ <p>
12
+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
13
+ eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
14
+ voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet
15
+ clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit
16
+ amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
17
+ nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed
18
+ diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.
19
+ Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor
20
+ sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed
21
+ diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam
22
+ erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea
23
+ rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum
24
+ dolor sit amet.
25
+ </p>
26
+ <p>
27
+ Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse
28
+ molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero
29
+ eros et accumsan et iusto odio dignissim qui blandit praesent luptatum
30
+ zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum
31
+ dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh
32
+ euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
33
+ </p>
34
+ <p>
35
+ Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper
36
+ suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel
37
+ eum iriure dolor in hendrerit in vulputate velit esse molestie consequat,
38
+ vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et
39
+ iusto odio dignissim qui blandit praesent luptatum zzril delenit augue
40
+ duis dolore te feugait nulla facilisi.
41
+ </p>
42
+ <p>
43
+ Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet
44
+ doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit
45
+ amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod
46
+ tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad
47
+ minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis
48
+ nisl ut aliquip ex ea commodo consequat.
49
+ </p>
50
+ <p>
51
+ Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse
52
+ molestie consequat, vel illum dolore eu feugiat nulla facilisis.
53
+ </p>
54
+ <p>
55
+ At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd
56
+ gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem
57
+ ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod
58
+ tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
59
+ voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet
60
+ clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit
61
+ amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam
62
+ aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed
63
+ tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna
64
+ no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor
65
+ sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed
66
+ diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam
67
+ erat.
68
+ </p>
69
+ <p>
70
+ Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut
71
+ labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et
72
+ accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no
73
+ sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
74
+ amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt
75
+ ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et
76
+ accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no
77
+ sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
78
+ amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt
79
+ ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et
80
+ accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no
81
+ sea takimata sanctus.
82
+ </p>
83
+ <p>
84
+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
85
+ eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
86
+ voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet
87
+ clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit
88
+ amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
89
+ nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed
90
+ diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.
91
+ Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor
92
+ sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed
93
+ diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam
94
+ erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea
95
+ rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum
96
+ dolor sit amet.
97
+ </p>
98
+ <p>
99
+ Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse
100
+ molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero
101
+ eros et accumsan et iusto odio dignissim qui blandit praesent luptatum
102
+ zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum
103
+ dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh
104
+ euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
105
+ </p>
106
+ <p>
107
+ Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper
108
+ suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel
109
+ eum iriure dolor in hendrerit in vulputate velit esse molestie consequat,
110
+ vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et
111
+ iusto odio dignissim qui blandit praesent luptatum zzril delenit augue
112
+ duis dolore te feugait nulla facilisi.
113
+ </p>
114
+ <p>
115
+ Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet
116
+ doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit
117
+ amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod
118
+ tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad
119
+ minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis
120
+ nisl ut aliquip ex ea commodo consequat.
121
+ </p>
122
+ <p>
123
+ Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse
124
+ molestie consequat, vel illum dolore eu feugiat nulla facilisis.
125
+ </p>
126
+ <p>
127
+ At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd
128
+ gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem
129
+ ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod
130
+ tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
131
+ voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet
132
+ clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit
133
+ amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam
134
+ aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed
135
+ tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna
136
+ no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor
137
+ sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed
138
+ diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam
139
+ erat.
140
+ </p>
141
+ <p>
142
+ Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut
143
+ labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et
144
+ accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no
145
+ sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
146
+ amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt
147
+ ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et
148
+ accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no
149
+ sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
150
+ amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt
151
+ ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et
152
+ accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no
153
+ sea takimata sanctus.
154
+ </p>
155
+ <p>
156
+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
157
+ eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
158
+ voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet
159
+ clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit
160
+ amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
161
+ nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed
162
+ diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.
163
+ Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor
164
+ sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed
165
+ diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam
166
+ erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea
167
+ rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum
168
+ dolor sit amet.
169
+ </p>
170
+ <p>
171
+ Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse
172
+ molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero
173
+ eros et accumsan et iusto odio dignissim qui blandit praesent luptatum
174
+ zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum
175
+ dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh
176
+ euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
177
+ </p>
178
+ <p>
179
+ Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper
180
+ suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel
181
+ eum iriure dolor in hendrerit in vulputate velit esse molestie consequat,
182
+ vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et
183
+ iusto odio dignissim qui blandit praesent luptatum zzril delenit augue
184
+ duis dolore te feugait nulla facilisi.
185
+ </p>
186
+ <p>
187
+ Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet
188
+ doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit
189
+ amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod
190
+ tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad
191
+ minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis
192
+ nisl ut aliquip ex ea commodo consequat.
193
+ </p>
194
+ <p>
195
+ Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse
196
+ molestie consequat, vel illum dolore eu feugiat nulla facilisis.
197
+ </p>
198
+ <p>
199
+ At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd
200
+ gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem
201
+ ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod
202
+ tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
203
+ voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet
204
+ clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit
205
+ amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam
206
+ aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed
207
+ tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna
208
+ no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor
209
+ sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed
210
+ diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam
211
+ erat.
212
+ </p>
213
+ <leu-scroll-top />
214
+ `
215
+ }
216
+
217
+ export const Regular = Template.bind({})
@@ -0,0 +1,22 @@
1
+ import { html } from "lit"
2
+ import { fixture, expect } from "@open-wc/testing"
3
+
4
+ import "../leu-scroll-top.js"
5
+
6
+ async function defaultFixture() {
7
+ return fixture(html` <leu-scroll-top /> `)
8
+ }
9
+
10
+ describe("LeuScrollTop", () => {
11
+ it("is a defined element", async () => {
12
+ const el = await customElements.get("leu-scroll-top")
13
+
14
+ await expect(el).not.to.be.undefined
15
+ })
16
+
17
+ it("passes the a11y audit", async () => {
18
+ const el = await defaultFixture()
19
+
20
+ await expect(el).shadowDom.to.be.accessible()
21
+ })
22
+ })
@@ -13,6 +13,7 @@ import "../menu/leu-menu-item.js"
13
13
  import "../input/leu-input.js"
14
14
  import "../popup/leu-popup.js"
15
15
 
16
+ // @ts-ignore
16
17
  import styles from "./select.css"
17
18
 
18
19
  /**
@@ -25,8 +26,7 @@ export class LeuSelect extends LitElement {
25
26
 
26
27
  static get properties() {
27
28
  return {
28
- open: { type: Boolean, attribute: "open" },
29
-
29
+ open: { type: Boolean, reflect: true },
30
30
  label: { type: String, reflect: true },
31
31
  options: { type: Array },
32
32
  value: { type: Array },
@@ -53,9 +53,14 @@ export class LeuSelect extends LitElement {
53
53
  constructor() {
54
54
  super()
55
55
  this.open = false
56
+ this.disabled = false
57
+ this.open = false
58
+ this.multiple = false
56
59
  this.clearable = false
60
+ this.filterable = false
57
61
  this.value = []
58
62
  this.options = []
63
+ this.label = ""
59
64
 
60
65
  /** @internal */
61
66
  this._arrowIcon = Icon("angleDropDown")
@@ -69,8 +74,17 @@ export class LeuSelect extends LitElement {
69
74
  /** @internal */
70
75
  this.deferedChangeEvent = false
71
76
 
77
+ /**
78
+ * @type {import("lit/directives/ref").Ref<import("../menu/Menu").LeuMenu>}
79
+ */
72
80
  this.menuRef = createRef()
81
+ /**
82
+ * @type {import("lit/directives/ref").Ref<import("../input/Input").LeuInput>}
83
+ */
73
84
  this.optionFilterRef = createRef()
85
+ /**
86
+ * @type {import("lit/directives/ref").Ref<HTMLButtonElement>}
87
+ */
74
88
  this.toggleButtonRef = createRef()
75
89
  }
76
90
 
@@ -102,7 +116,11 @@ export class LeuSelect extends LitElement {
102
116
  * @param {MouseEvent} event
103
117
  */
104
118
  handleDocumentClick = (event) => {
105
- if (!this.contains(event.target) && this.open) {
119
+ if (
120
+ event.target instanceof Node &&
121
+ !this.contains(event.target) &&
122
+ this.open
123
+ ) {
106
124
  this.closeDropdown()
107
125
  }
108
126
  }
@@ -289,9 +307,9 @@ export class LeuSelect extends LitElement {
289
307
  type="button"
290
308
  class="apply-button"
291
309
  @click=${this.handleApplyClick}
292
- label="Anwenden"
293
310
  fluid
294
- ></leu-button>
311
+ >Anwenden</leu-button
312
+ >
295
313
  `
296
314
  }
297
315
 
@@ -320,7 +338,7 @@ export class LeuSelect extends LitElement {
320
338
  <span class="label" id="select-label">${this.label}</span>
321
339
  <span class="value"> ${this.getDisplayValue(this.value)} </span>
322
340
  <span class="arrow-icon"> ${this._arrowIcon} </span>
323
- ${this.clearable && this.value !== "" && this.value.length !== 0
341
+ ${this.clearable && this.value.length !== 0
324
342
  ? html`<button
325
343
  type="button"
326
344
  class="clear-button"
@@ -26,8 +26,8 @@
26
26
 
27
27
  --select-clear-color: var(--leu-color-black-60);
28
28
 
29
- --select-font-regular: var(--leu-font-regular);
30
- --select-font-black: var(--leu-font-black);
29
+ --select-font-regular: var(--leu-font-family-regular);
30
+ --select-font-black: var(--leu-font-family-black);
31
31
 
32
32
  --select-apply-button-color: var(--leu-color-black-100);
33
33
  --select-apply-button-color-focus: var(--leu-color-black-80);
@@ -28,7 +28,7 @@ table {
28
28
  border-spacing: 0;
29
29
  color: rgb(0 0 0 / 60%);
30
30
  font-size: 16px;
31
- font-family: var(--leu-font-regular);
31
+ font-family: var(--leu-font-family-regular);
32
32
  line-height: 1.5;
33
33
  }
34
34
 
@@ -41,7 +41,7 @@ th {
41
41
  text-align: left;
42
42
  font-size: 12px;
43
43
  font-weight: normal;
44
- font-family: var(--leu-font-black);
44
+ font-family: var(--leu-font-family-black);
45
45
  background: var(--table-even-row-bg);
46
46
  }
47
47
 
@@ -0,0 +1,13 @@
1
+ import { html, LitElement } from "lit"
2
+ import styles from "./visually-hidden.css"
3
+
4
+ /**
5
+ * @tagname leu-visually-hidden
6
+ */
7
+ export class LeuVisuallyHidden extends LitElement {
8
+ static styles = styles
9
+
10
+ render() {
11
+ return html`<slot></slot>`
12
+ }
13
+ }
@@ -0,0 +1,6 @@
1
+ import { defineElement } from "../../lib/defineElement.js"
2
+ import { LeuVisuallyHidden } from "./VisuallyHidden.js"
3
+
4
+ export { LeuVisuallyHidden }
5
+
6
+ defineElement("visually-hidden", LeuVisuallyHidden)
@@ -0,0 +1,22 @@
1
+ import { html } from "lit"
2
+ import "../leu-visually-hidden.js"
3
+
4
+ export default {
5
+ title: "VisuallyHidden",
6
+ component: "leu-visually-hidden",
7
+ argTypes: {
8
+ content: {
9
+ control: "text",
10
+ },
11
+ },
12
+ }
13
+
14
+ function Template({ content }) {
15
+ return html` <leu-visually-hidden>${content}</leu-visually-hidden>`
16
+ }
17
+
18
+ export const Regular = Template.bind({})
19
+ Regular.args = {
20
+ content:
21
+ "This is a text that isn't visible but still accessible for screenreaders.",
22
+ }
@@ -0,0 +1,36 @@
1
+ import { html } from "lit"
2
+ import { fixture, expect } from "@open-wc/testing"
3
+
4
+ import "../leu-visually-hidden.js"
5
+
6
+ async function defaultFixture() {
7
+ return fixture(
8
+ html`
9
+ <leu-visually-hidden>
10
+ This is a text that shouldn't be visible but still accessible.
11
+ </leu-visually-hidden>
12
+ `
13
+ )
14
+ }
15
+
16
+ describe("LeuVisuallyHidden", () => {
17
+ it("is a defined element", async () => {
18
+ const el = await customElements.get("leu-visually-hidden")
19
+
20
+ await 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).to.be.accessible()
27
+ })
28
+
29
+ it("renders the default slot content", async () => {
30
+ const el = await defaultFixture()
31
+
32
+ expect(el).dom.to.equal(
33
+ "<leu-visually-hidden>This is a text that shouldn't be visible but still accessible.</leu-visually-hidden>"
34
+ )
35
+ })
36
+ })
@@ -0,0 +1,10 @@
1
+ :host {
2
+ clip: rect(0 0 0 0);
3
+ border: 0;
4
+ height: 1px;
5
+ margin: -1px !important;
6
+ overflow: hidden;
7
+ padding: 0 !important;
8
+ position: absolute;
9
+ width: 1px;
10
+ }
@@ -2,7 +2,7 @@
2
2
  * Adds a definition for a custom element to the custom element
3
3
  * registry if it isn't defined before. Prefixes the name with `leu-`.
4
4
  * @param {string} name
5
- * @param {HTMLElement} constructor
5
+ * @param {CustomElementConstructor} constructor
6
6
  */
7
7
  export function defineElement(name, constructor) {
8
8
  if (!customElements.get(`leu-${name}`)) {
@@ -5,7 +5,8 @@
5
5
 
6
6
  /**
7
7
  * A reactive controller that determines when slots exist.
8
- * @implements { import("lit").ReactiveController }
8
+ * @typedef {import("lit").ReactiveController} ReactiveController
9
+ * @implements {ReactiveController}
9
10
  */
10
11
  export class HasSlotController {
11
12
  constructor(host, slotNames) {
@@ -76,8 +77,9 @@ export class HasSlotController {
76
77
  const slot = event.target
77
78
 
78
79
  if (
79
- (this.slotNames.includes("[default]") && !slot.name) ||
80
- (slot.name && this.slotNames.includes(slot.name))
80
+ slot instanceof HTMLSlotElement &&
81
+ ((this.slotNames.includes("[default]") && !slot.name) ||
82
+ (slot.name && this.slotNames.includes(slot.name)))
81
83
  ) {
82
84
  this.host.requestUpdate()
83
85
  }
package/src/lib/utils.js CHANGED
@@ -1,10 +1,10 @@
1
1
  /**
2
- * Wrap a Function to nsure that time-consuming tasks do not fire so often
2
+ * Return a debounced function that delays invoking func until after wait milliseconds have elapsed since the last time the debounced function was invoked.
3
3
  * @param {Function} func - Your function
4
4
  * @param {Number} timeout - Default is 500 ms
5
5
  * @returns {Function} - Your function wrapped in a timeout function
6
6
  */
7
- const debounce = function (func, timeout = 500) {
7
+ const debounce = function debounce(func, timeout = 500) {
8
8
  let timer = null
9
9
  return (...args) => {
10
10
  clearTimeout(timer)
@@ -14,4 +14,22 @@ const debounce = function (func, timeout = 500) {
14
14
  }
15
15
  }
16
16
 
17
- export { debounce }
17
+ /**
18
+ * Return a throttled function that only invokes func at most once per every wait milliseconds.
19
+ * @param {Function} func - Your function
20
+ * @param {Number} timeout - Default is 500 ms
21
+ * @returns {Function} - Your function wrapped in a timeout function
22
+ */
23
+ const throttle = function throttle(func, timeout = 500) {
24
+ let timer = null
25
+ return (...args) => {
26
+ if (timer === null) {
27
+ func(...args)
28
+ timer = setTimeout(() => {
29
+ timer = null
30
+ }, timeout)
31
+ }
32
+ }
33
+ }
34
+
35
+ export { debounce, throttle }
@@ -1,3 +1,5 @@
1
+ @import url("./custom-media.css");
2
+
1
3
  :root {
2
4
  --leu-color-black-100: #000;
3
5
  --leu-color-black-80: #333;
@@ -42,10 +44,12 @@
42
44
  --leu-color-func-red: #d93c1a;
43
45
  --leu-color-func-green: #1a7f1f;
44
46
 
45
- --leu-font-regular: HelveticaNowRegular, Helvetica, sans-serif; /* stylelint-disable-line value-keyword-case */
46
- --leu-font-black: HelveticaNowBlack, Arial Black, Helvetica, sans-serif; /* stylelint-disable-line value-keyword-case */
47
+ --leu-font-family-regular: HelveticaNowRegular, Helvetica, sans-serif; /* stylelint-disable-line value-keyword-case */
48
+ --leu-font-family-black: HelveticaNowBlack, Arial Black, Helvetica, sans-serif; /* stylelint-disable-line value-keyword-case */
47
49
 
48
50
  --leu-box-shadow-short: 0px 0px 2px var(--leu-color-black-transp-40);
49
51
  --leu-box-shadow-regular: 0px 0px 16px var(--leu-color-black-transp-20);
50
52
  --leu-box-shadow-long: 0px 0px 80px var(--leu-color-black-transp-20);
53
+
54
+ @leu-font-styles './font-definitions.json';
51
55
  }