@warp-ds/elements 2.5.0-next.1 → 2.5.0-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/dist/custom-elements.json +80 -2535
  2. package/dist/index.d.ts +51 -1279
  3. package/dist/packages/icon/icon.d.ts +0 -5
  4. package/dist/packages/icon/icon.js +24 -98
  5. package/dist/packages/icon/icon.js.map +7 -0
  6. package/dist/web-types.json +36 -683
  7. package/package.json +12 -60
  8. package/dist/packages/checkbox/checkbox.d.ts +0 -66
  9. package/dist/packages/checkbox/checkbox.js +0 -2591
  10. package/dist/packages/checkbox/checkbox.js.map +0 -7
  11. package/dist/packages/checkbox/checkbox.react.stories.d.ts +0 -12
  12. package/dist/packages/checkbox/checkbox.react.stories.js +0 -10
  13. package/dist/packages/checkbox/checkbox.stories.d.ts +0 -12
  14. package/dist/packages/checkbox/checkbox.stories.js +0 -26
  15. package/dist/packages/checkbox/react.d.ts +0 -5
  16. package/dist/packages/checkbox/react.js +0 -15
  17. package/dist/packages/checkbox/styles.d.ts +0 -0
  18. package/dist/packages/checkbox/styles.js +0 -0
  19. package/dist/packages/checkbox-group/checkbox-group.d.ts +0 -10
  20. package/dist/packages/checkbox-group/checkbox-group.js +0 -7
  21. package/dist/packages/checkbox-group/checkbox-group.js.map +0 -7
  22. package/dist/packages/checkbox-group/react.d.ts +0 -2
  23. package/dist/packages/checkbox-group/react.js +0 -11
  24. package/dist/packages/dead-toggle/dead-toggle.d.ts +0 -17
  25. package/dist/packages/dead-toggle/dead-toggle.js +0 -2547
  26. package/dist/packages/dead-toggle/dead-toggle.js.map +0 -7
  27. package/dist/packages/dead-toggle/dead-toggle.react.stories.d.ts +0 -15
  28. package/dist/packages/dead-toggle/dead-toggle.react.stories.js +0 -34
  29. package/dist/packages/dead-toggle/dead-toggle.stories.d.ts +0 -14
  30. package/dist/packages/dead-toggle/dead-toggle.stories.js +0 -45
  31. package/dist/packages/dead-toggle/dead-toggle.test.d.ts +0 -1
  32. package/dist/packages/dead-toggle/dead-toggle.test.js +0 -9
  33. package/dist/packages/dead-toggle/react.d.ts +0 -2
  34. package/dist/packages/dead-toggle/react.js +0 -11
  35. package/dist/packages/pagination/locales/da/messages.d.mts +0 -1
  36. package/dist/packages/pagination/locales/da/messages.mjs +0 -1
  37. package/dist/packages/pagination/locales/en/messages.d.mts +0 -1
  38. package/dist/packages/pagination/locales/en/messages.mjs +0 -1
  39. package/dist/packages/pagination/locales/fi/messages.d.mts +0 -1
  40. package/dist/packages/pagination/locales/fi/messages.mjs +0 -1
  41. package/dist/packages/pagination/locales/nb/messages.d.mts +0 -1
  42. package/dist/packages/pagination/locales/nb/messages.mjs +0 -1
  43. package/dist/packages/pagination/locales/sv/messages.d.mts +0 -1
  44. package/dist/packages/pagination/locales/sv/messages.mjs +0 -1
  45. package/dist/packages/pagination/pagination.d.ts +0 -32
  46. package/dist/packages/pagination/pagination.js +0 -2500
  47. package/dist/packages/pagination/pagination.js.map +0 -7
  48. package/dist/packages/pagination/pagination.react.stories.d.ts +0 -21
  49. package/dist/packages/pagination/pagination.react.stories.js +0 -45
  50. package/dist/packages/pagination/pagination.stories.d.ts +0 -14
  51. package/dist/packages/pagination/pagination.stories.js +0 -56
  52. package/dist/packages/pagination/pagination.test.d.ts +0 -1
  53. package/dist/packages/pagination/pagination.test.js +0 -76
  54. package/dist/packages/pagination/react.d.ts +0 -5
  55. package/dist/packages/pagination/react.js +0 -15
  56. package/dist/packages/pagination/styles.d.ts +0 -1
  57. package/dist/packages/pagination/styles.js +0 -2
  58. package/dist/packages/radio/base-element.d.ts +0 -46
  59. package/dist/packages/radio/base-element.js +0 -100
  60. package/dist/packages/radio/custom-error-validator.d.ts +0 -6
  61. package/dist/packages/radio/custom-error-validator.js +0 -22
  62. package/dist/packages/radio/form-associated-element.d.ts +0 -103
  63. package/dist/packages/radio/form-associated-element.js +0 -282
  64. package/dist/packages/radio/host-styles.d.ts +0 -1
  65. package/dist/packages/radio/host-styles.js +0 -12
  66. package/dist/packages/radio/invalid.d.ts +0 -8
  67. package/dist/packages/radio/invalid.js +0 -5
  68. package/dist/packages/radio/math.d.ts +0 -1
  69. package/dist/packages/radio/math.js +0 -4
  70. package/dist/packages/radio/radio-styles.d.ts +0 -0
  71. package/dist/packages/radio/radio-styles.js +0 -0
  72. package/dist/packages/radio/radio.d.ts +0 -38
  73. package/dist/packages/radio/radio.js +0 -2562
  74. package/dist/packages/radio/radio.js.map +0 -7
  75. package/dist/packages/radio/radio.react.stories.d.ts +0 -9
  76. package/dist/packages/radio/radio.react.stories.js +0 -10
  77. package/dist/packages/radio/radio.stories.d.ts +0 -15
  78. package/dist/packages/radio/radio.stories.js +0 -61
  79. package/dist/packages/radio/react.d.ts +0 -2
  80. package/dist/packages/radio/react.js +0 -11
  81. package/dist/packages/radio/required-validator.d.ts +0 -11
  82. package/dist/packages/radio/required-validator.js +0 -34
  83. package/dist/packages/radio/slot.d.ts +0 -20
  84. package/dist/packages/radio/slot.js +0 -71
  85. package/dist/packages/radio/watch.d.ts +0 -26
  86. package/dist/packages/radio/watch.js +0 -39
  87. package/dist/packages/radio-group/radio-group-styles.d.ts +0 -1
  88. package/dist/packages/radio-group/radio-group-styles.js +0 -59
  89. package/dist/packages/radio-group/radio-group.d.ts +0 -72
  90. package/dist/packages/radio-group/radio-group.js +0 -2648
  91. package/dist/packages/radio-group/radio-group.js.map +0 -7
  92. package/dist/packages/radio-group/react.d.ts +0 -7
  93. package/dist/packages/radio-group/react.js +0 -17
  94. package/dist/packages/slider/Slider.d.ts +0 -2
  95. package/dist/packages/slider/Slider.js +0 -8
  96. package/dist/packages/slider/index.d.ts +0 -2
  97. package/dist/packages/slider/index.js +0 -2
  98. package/dist/packages/slider/locales/da/messages.d.mts +0 -1
  99. package/dist/packages/slider/locales/da/messages.mjs +0 -1
  100. package/dist/packages/slider/locales/en/messages.d.mts +0 -1
  101. package/dist/packages/slider/locales/en/messages.mjs +0 -1
  102. package/dist/packages/slider/locales/fi/messages.d.mts +0 -1
  103. package/dist/packages/slider/locales/fi/messages.mjs +0 -1
  104. package/dist/packages/slider/locales/nb/messages.d.mts +0 -1
  105. package/dist/packages/slider/locales/nb/messages.mjs +0 -1
  106. package/dist/packages/slider/locales/sv/messages.d.mts +0 -1
  107. package/dist/packages/slider/locales/sv/messages.mjs +0 -1
  108. package/dist/packages/slider/react.d.ts +0 -3
  109. package/dist/packages/slider/react.js +0 -13
  110. package/dist/packages/slider/slider.d.ts +0 -55
  111. package/dist/packages/slider/slider.js +0 -2632
  112. package/dist/packages/slider/slider.js.map +0 -7
  113. package/dist/packages/slider/slider.react.stories.d.ts +0 -19
  114. package/dist/packages/slider/slider.react.stories.js +0 -140
  115. package/dist/packages/slider/slider.stories.d.ts +0 -22
  116. package/dist/packages/slider/slider.stories.js +0 -405
  117. package/dist/packages/slider/slider.test.d.ts +0 -5
  118. package/dist/packages/slider/slider.test.js +0 -112
  119. package/dist/packages/slider/styles/w-slider.styles.d.ts +0 -1
  120. package/dist/packages/slider/styles/w-slider.styles.js +0 -148
  121. package/dist/packages/slider/styles.d.ts +0 -1
  122. package/dist/packages/slider/styles.js +0 -2
  123. package/dist/packages/slider-thumb/SliderThumb.d.ts +0 -2
  124. package/dist/packages/slider-thumb/SliderThumb.js +0 -8
  125. package/dist/packages/slider-thumb/oddbird-css-anchor-positioning.d.ts +0 -2
  126. package/dist/packages/slider-thumb/oddbird-css-anchor-positioning.js +0 -3
  127. package/dist/packages/slider-thumb/react.d.ts +0 -6
  128. package/dist/packages/slider-thumb/react.js +0 -15
  129. package/dist/packages/slider-thumb/slider-thumb.d.ts +0 -63
  130. package/dist/packages/slider-thumb/slider-thumb.js +0 -2748
  131. package/dist/packages/slider-thumb/slider-thumb.js.map +0 -7
  132. package/dist/packages/slider-thumb/styles/w-slider-thumb.styles.d.ts +0 -1
  133. package/dist/packages/slider-thumb/styles/w-slider-thumb.styles.js +0 -175
  134. package/dist/packages/step/locales/da/messages.d.mts +0 -1
  135. package/dist/packages/step/locales/da/messages.mjs +0 -1
  136. package/dist/packages/step/locales/en/messages.d.mts +0 -1
  137. package/dist/packages/step/locales/en/messages.mjs +0 -1
  138. package/dist/packages/step/locales/fi/messages.d.mts +0 -1
  139. package/dist/packages/step/locales/fi/messages.mjs +0 -1
  140. package/dist/packages/step/locales/nb/messages.d.mts +0 -1
  141. package/dist/packages/step/locales/nb/messages.mjs +0 -1
  142. package/dist/packages/step/locales/sv/messages.d.mts +0 -1
  143. package/dist/packages/step/locales/sv/messages.mjs +0 -1
  144. package/dist/packages/step/react.d.ts +0 -2
  145. package/dist/packages/step/react.js +0 -11
  146. package/dist/packages/step/step.d.ts +0 -22
  147. package/dist/packages/step/step.js +0 -2461
  148. package/dist/packages/step/step.js.map +0 -7
  149. package/dist/packages/step-indicator/index.d.ts +0 -2
  150. package/dist/packages/step-indicator/index.js +0 -2
  151. package/dist/packages/step-indicator/react.d.ts +0 -3
  152. package/dist/packages/step-indicator/react.js +0 -13
  153. package/dist/packages/step-indicator/step-indicator.d.ts +0 -14
  154. package/dist/packages/step-indicator/step-indicator.js +0 -2445
  155. package/dist/packages/step-indicator/step-indicator.js.map +0 -7
  156. package/dist/packages/step-indicator/stepindicator.react.stories.d.ts +0 -15
  157. package/dist/packages/step-indicator/stepindicator.react.stories.js +0 -112
  158. package/dist/packages/step-indicator/stepindicator.stories.d.ts +0 -13
  159. package/dist/packages/step-indicator/stepindicator.stories.js +0 -173
  160. package/dist/packages/step-indicator/styles.d.ts +0 -1
  161. package/dist/packages/step-indicator/styles.js +0 -2
  162. package/dist/packages/textarea/locales/da/messages.d.mts +0 -1
  163. package/dist/packages/textarea/locales/da/messages.mjs +0 -1
  164. package/dist/packages/textarea/locales/en/messages.d.mts +0 -1
  165. package/dist/packages/textarea/locales/en/messages.mjs +0 -1
  166. package/dist/packages/textarea/locales/fi/messages.d.mts +0 -1
  167. package/dist/packages/textarea/locales/fi/messages.mjs +0 -1
  168. package/dist/packages/textarea/locales/nb/messages.d.mts +0 -1
  169. package/dist/packages/textarea/locales/nb/messages.mjs +0 -1
  170. package/dist/packages/textarea/locales/sv/messages.d.mts +0 -1
  171. package/dist/packages/textarea/locales/sv/messages.mjs +0 -1
  172. package/dist/packages/textarea/react.d.ts +0 -11
  173. package/dist/packages/textarea/react.js +0 -21
  174. package/dist/packages/textarea/styles.d.ts +0 -1
  175. package/dist/packages/textarea/styles.js +0 -2
  176. package/dist/packages/textarea/textarea.d.ts +0 -49
  177. package/dist/packages/textarea/textarea.js +0 -2475
  178. package/dist/packages/textarea/textarea.js.map +0 -7
  179. package/dist/packages/textarea/textarea.react.stories.d.ts +0 -33
  180. package/dist/packages/textarea/textarea.react.stories.js +0 -41
  181. package/dist/packages/textarea/textarea.stories.d.ts +0 -19
  182. package/dist/packages/textarea/textarea.stories.js +0 -85
  183. package/dist/packages/textarea/textarea.test.d.ts +0 -1
  184. package/dist/packages/textarea/textarea.test.js +0 -68
  185. package/dist/packages/toggle-styles.d.ts +0 -1
  186. package/dist/packages/toggle-styles.js +0 -108
@@ -1,405 +0,0 @@
1
- import { getStorybookHelpers } from '@wc-toolkit/storybook-helpers';
2
- import { html } from 'lit';
3
- import '../affix/affix.js';
4
- import '../attention/attention.js';
5
- import '../textfield/textfield.js';
6
- import './slider.js';
7
- import '../slider-thumb/slider-thumb.js';
8
- const { events: sliderEvents, args: sliderArgs, argTypes: sliderArgTypes, } = getStorybookHelpers('w-slider');
9
- const meta = {
10
- title: 'Forms/Slider and Range Slider',
11
- args: sliderArgs,
12
- argTypes: sliderArgTypes,
13
- parameters: {
14
- actions: {
15
- handles: sliderEvents,
16
- },
17
- },
18
- };
19
- export default meta;
20
- export const Single = {
21
- render() {
22
- return html `
23
- <w-slider label="Single" min="0" max="100">
24
- <w-slider-thumb name="value"></w-slider-thumb>
25
- </w-slider>
26
- `;
27
- },
28
- };
29
- export const Range = {
30
- render() {
31
- return html `
32
- <w-slider label="Range" min="0" max="100" step="25">
33
- <w-slider-thumb
34
- slot="from"
35
- aria-label="From value"
36
- name="from"
37
- ></w-slider-thumb>
38
- <w-slider-thumb
39
- slot="to"
40
- aria-label="To value"
41
- name="to"
42
- ></w-slider-thumb>
43
- </w-slider>
44
- `;
45
- },
46
- };
47
- // Take a suffix attribute on `<w-slider>` I think, have `<w-slider-thumb>` get from that.
48
- export const SuffixSquareMeters = {
49
- args: {
50
- locale: 'nb',
51
- suffix: 'm²',
52
- },
53
- render({ locale, suffix }) {
54
- return html `
55
- <w-slider
56
- label="Apartment size"
57
- min="0"
58
- max="250"
59
- suffix="${suffix}"
60
- data-testid="sqm"
61
- >
62
- <w-slider-thumb
63
- slot="from"
64
- aria-label="From size"
65
- name="from"
66
- ></w-slider-thumb>
67
- <w-slider-thumb
68
- slot="to"
69
- aria-label="To size"
70
- name="to"
71
- ></w-slider-thumb>
72
- </w-slider>
73
- <script type="module">
74
- const sqmSlider = document.querySelector('w-slider[data-testid="sqm"]');
75
- sqmSlider.formatter = window.getNumberFormatter("${locale}").format;
76
- </script>
77
- `;
78
- },
79
- };
80
- export const SuffixCurrency = {
81
- args: {
82
- locale: 'nb',
83
- suffix: 'kr',
84
- },
85
- render({ locale, suffix }) {
86
- return html `
87
- <w-slider
88
- label="Price"
89
- min="0"
90
- max="250000"
91
- suffix="${suffix}"
92
- data-testid="currency"
93
- >
94
- <w-slider-thumb
95
- slot="from"
96
- aria-label="From price"
97
- name="from"
98
- ></w-slider-thumb>
99
- <w-slider-thumb
100
- slot="to"
101
- aria-label="To price"
102
- name="to"
103
- ></w-slider-thumb>
104
- </w-slider>
105
- <script type="module">
106
- const currencySlider = document.querySelector(
107
- 'w-slider[data-testid="currency"]'
108
- );
109
- currencySlider.formatter = window.getNumberFormatter(
110
- "${locale}"
111
- ).format;
112
- </script>
113
- `;
114
- },
115
- };
116
- export const SuffixKilometers = {
117
- args: {
118
- locale: 'nb',
119
- suffix: 'km',
120
- },
121
- render({ locale, suffix }) {
122
- return html `
123
- <w-slider
124
- label="Distance"
125
- min="0"
126
- max="250000"
127
- suffix="${suffix}"
128
- data-testid="km"
129
- >
130
- <w-slider-thumb
131
- slot="from"
132
- aria-label="From distance"
133
- name="from"
134
- ></w-slider-thumb>
135
- <w-slider-thumb
136
- slot="to"
137
- aria-label="To distance"
138
- name="to"
139
- ></w-slider-thumb>
140
- </w-slider>
141
- <script type="module">
142
- const kmSlider = document.querySelector('w-slider[data-testid="km"]');
143
- kmSlider.formatter = window.getNumberFormatter("${locale}").format;
144
- </script>
145
- `;
146
- },
147
- };
148
- export const Marks = {
149
- args: {
150
- locale: 'nb',
151
- step: '5',
152
- markers: '5',
153
- },
154
- render({ markers, step }) {
155
- return html `
156
- <w-slider
157
- label="Single"
158
- min="0"
159
- max="100"
160
- step="${step}"
161
- markers="${markers}"
162
- >
163
- <w-slider-thumb name="value"></w-slider-thumb>
164
- </w-slider>
165
- `;
166
- },
167
- };
168
- export const Step = {
169
- args: {
170
- step: 5,
171
- },
172
- render({ step }) {
173
- return html `
174
- <w-slider label="Single" step="${step}" min="0" max="100">
175
- <w-slider-thumb name="value"></w-slider-thumb>
176
- </w-slider>
177
- `;
178
- },
179
- };
180
- export const OverUnder = {
181
- args: {},
182
- render() {
183
- return html `
184
- <form id="overunder" style="margin-bottom: 16px" lang="nb">
185
- <w-slider
186
- label="Produksjonsår"
187
- min="1950"
188
- max="2025"
189
- data-testid="overunder"
190
- allow-values-outside-range
191
- >
192
- <w-slider-thumb
193
- slot="from"
194
- aria-label="Fra år"
195
- aria-description="1950 inkluderer kjøretøy produsert fram til 1950"
196
- name="from"
197
- ></w-slider-thumb>
198
- <w-slider-thumb
199
- slot="to"
200
- aria-label="Til år"
201
- aria-description="2025 inkluderer kjøretøy produsert etter 2025"
202
- name="to"
203
- ></w-slider-thumb>
204
- </w-slider>
205
- </form>
206
- <p>
207
- Drag the slider to show the value below. See the Code tab for how to
208
- format the labels.
209
- </p>
210
- <output>
211
- <dl>
212
- <dt>From:</dt>
213
- <dd id="overunder-from"></dd>
214
- <dt>To:</dt>
215
- <dd id="overunder-to"></dd>
216
- </dl>
217
- </output>
218
- <script>
219
- /** Here is how you can show labels to indicate min and max values are "up to and including" and "this value and above". */
220
- const overunderSlider = document.querySelector(
221
- 'w-slider[data-testid="overunder"]'
222
- );
223
- overunderSlider.formatter = function (value, type) {
224
- if (value === "" && type === "from") {
225
- return "Før 1950";
226
- }
227
- if (value === "" && type === "to") {
228
- return "Etter 2025";
229
- }
230
- return value;
231
- };
232
-
233
- /** Code to show the form values in output */
234
- document.forms["overunder"].addEventListener("input", function () {
235
- const formData = new FormData(this);
236
- const from = formData.get("from");
237
- const to = formData.get("to");
238
- document.getElementById("overunder-from").innerText = from;
239
- document.getElementById("overunder-to").innerText = to;
240
- });
241
- </script>
242
- `;
243
- },
244
- };
245
- export const SingleError = {
246
- args: {
247
- locale: 'nb',
248
- },
249
- render() {
250
- return html `
251
- <w-slider label="Single" min="0" max="100">
252
- <p slot="description">Try typing a value over 100</p>
253
- <w-slider-thumb></w-slider-thumb>
254
- </w-slider>
255
- `;
256
- },
257
- };
258
- export const RangeError = {
259
- args: {},
260
- render() {
261
- return html `
262
- <form id="rangeerror" style="margin-bottom: 16px">
263
- <w-slider label="Production year" min="1950" max="2025" over under>
264
- <p slot="description">
265
- Try typing a from value higher than a to value
266
- </p>
267
- <w-slider-thumb slot="from" name="from"></w-slider-thumb>
268
- <w-slider-thumb slot="to" name="to"></w-slider-thumb>
269
- </w-slider>
270
- </form>
271
- <p>
272
- Drag the slider to show the value below. See the Code tab for how to
273
- format the labels.
274
- </p>
275
- <output>
276
- <dl>
277
- <dt>From:</dt>
278
- <dd id="rangeerror-from"></dd>
279
- <dt>To:</dt>
280
- <dd id="rangeerror-to"></dd>
281
- </dl>
282
- </output>
283
- <script>
284
- /** Code to show the form values in output */
285
- document.forms["rangeerror"].addEventListener("input", function () {
286
- const formData = new FormData(this);
287
- const from = formData.get("from");
288
- const to = formData.get("to");
289
- document.getElementById("rangeerror-from").innerText = from;
290
- document.getElementById("rangeerror-to").innerText = to;
291
- });
292
- </script>
293
- `;
294
- },
295
- };
296
- export const TestCase = {
297
- args: {},
298
- render() {
299
- return html `
300
- <form id="overunder" style="margin-bottom: 16px" lang="nb">
301
- <w-slider
302
- label="Bredde"
303
- suffix="cm"
304
- min="200"
305
- max="350"
306
- data-testid="overunder"
307
- allow-values-outside-range
308
- step="50"
309
- >
310
- <w-slider-thumb
311
- slot="from"
312
- aria-label="Fra år"
313
- aria-description="1950 inkluderer kjøretøy produsert fram til 1950"
314
- name="from"
315
- value=""
316
- ></w-slider-thumb>
317
- <w-slider-thumb
318
- slot="to"
319
- aria-label="Til år"
320
- aria-description="2025 inkluderer kjøretøy produsert etter 2025"
321
- name="to"
322
- value=""
323
- ></w-slider-thumb>
324
- </w-slider>
325
- </form>
326
- <p>
327
- Drag the slider to show the value below. See the Code tab for how to
328
- format the labels.
329
- </p>
330
- <output>
331
- <dl>
332
- <dt>From:</dt>
333
- <dd id="overunder-from"></dd>
334
- <dt>To:</dt>
335
- <dd id="overunder-to"></dd>
336
- </dl>
337
- </output>
338
- <script>
339
- /** Here is how you can show labels to indicate min and max values are "up to and including" and "this value and above". */
340
- const overunderSlider = document.querySelector(
341
- 'w-slider[data-testid="overunder"]'
342
- );
343
- overunderSlider.formatter = function (value, type) {
344
- if (value === "" && type === "from") {
345
- return "Under 200";
346
- }
347
- if (value === "" && type === "to") {
348
- return "Over 350";
349
- }
350
- return value;
351
- };
352
-
353
- /** Code to show the form values in output */
354
- document.forms["overunder"].addEventListener("input", function () {
355
- const formData = new FormData(this);
356
- const from = formData.get("from");
357
- const to = formData.get("to");
358
- document.getElementById("overunder-from").innerText = from;
359
- document.getElementById("overunder-to").innerText = to;
360
- });
361
- </script>
362
- `;
363
- },
364
- };
365
- export const CustomError = {
366
- args: {
367
- locale: 'nb',
368
- },
369
- render() {
370
- return html `
371
- <w-slider
372
- label="Production year"
373
- min="1950"
374
- max="2025"
375
- over
376
- under
377
- error="I'm an external error telling you something is wrong"
378
- invalid
379
- >
380
- <w-slider-thumb slot="from" name="from"></w-slider-thumb>
381
- <w-slider-thumb slot="to" name="to"></w-slider-thumb>
382
- </w-slider>
383
- `;
384
- },
385
- };
386
- export const Description = {
387
- args: {
388
- locale: 'nb',
389
- },
390
- render() {
391
- return html `
392
- <w-slider
393
- label="Production year"
394
- min="1950"
395
- max="2025"
396
- over
397
- under
398
- help-text="Production year of the car"
399
- >
400
- <w-slider-thumb slot="from" name="from"></w-slider-thumb>
401
- <w-slider-thumb slot="to" name="to"></w-slider-thumb>
402
- </w-slider>
403
- `;
404
- },
405
- };
@@ -1,5 +0,0 @@
1
- import '../attention/attention.js';
2
- import '../affix/affix.js';
3
- import '../textfield/textfield.js';
4
- import './slider.js';
5
- import '../slider-thumb/slider-thumb.js';
@@ -1,112 +0,0 @@
1
- import { userEvent } from '@vitest/browser/context';
2
- import { html } from 'lit';
3
- import { expect, test } from 'vitest';
4
- import { render } from 'vitest-browser-lit';
5
- import '../attention/attention.js';
6
- import '../affix/affix.js';
7
- import '../textfield/textfield.js';
8
- import './slider.js';
9
- import '../slider-thumb/slider-thumb.js';
10
- test('single slider starts with a default value equal to max', async () => {
11
- const component = html `
12
- <form data-testid="form">
13
- <w-slider label="Single" min="0" max="100">
14
- <w-slider-thumb name="value"></w-slider-thumb>
15
- </w-slider>
16
- </form>
17
- `;
18
- const page = render(component);
19
- await expect.element(page.getByLabelText('Single').first()).toHaveValue('100');
20
- });
21
- test('range slider starts with a default from value equal to min, and to value equal to max', async () => {
22
- const component = html `
23
- <form data-testid="form">
24
- <w-slider label="Range" min="0" max="100">
25
- <w-slider-thumb aria-label="From" name="rangefrom" slot="from"></w-slider-thumb>
26
- <w-slider-thumb aria-label="To" name="rangeto" slot="to"></w-slider-thumb>
27
- </w-slider>
28
- </form>
29
- `;
30
- const page = render(component);
31
- await expect.element(page.getByLabelText('From').first()).toHaveValue('0');
32
- await expect.element(page.getByLabelText('To').first()).toHaveValue('100');
33
- });
34
- test('can set slider value via the range input', async () => {
35
- const component = html `
36
- <form data-testid="form">
37
- <w-slider label="Single" min="0" max="100">
38
- <w-slider-thumb name="value"></w-slider-thumb>
39
- </w-slider>
40
- </form>
41
- `;
42
- const page = render(component);
43
- await userEvent.type(page.getByLabelText('Single').first(), '{ArrowLeft}{ArrowLeft}{ArrowLeft}');
44
- await expect.element(page.getByLabelText('Single').first()).toHaveValue('97');
45
- await expect.element(page.getByRole('spinbutton')).toHaveValue(97); // keeps value in sync between inputs
46
- const formData = new FormData(page.getByTestId('form').element());
47
- expect(formData.get('value')).toBe('97');
48
- });
49
- test('can set slider value via the number input', async () => {
50
- const component = html `
51
- <form data-testid="form">
52
- <w-slider label="Single" min="0" max="100">
53
- <w-slider-thumb name="value"></w-slider-thumb>
54
- </w-slider>
55
- </form>
56
- `;
57
- const page = render(component);
58
- await page.getByRole('spinbutton').fill('50');
59
- await expect.element(page.getByRole('spinbutton')).toHaveValue(50);
60
- await expect.element(page.getByLabelText('Single').first()).toHaveValue('50'); // keeps value in sync between inputs
61
- const formData = new FormData(page.getByTestId('form').element());
62
- expect(formData.get('value')).toBe('50');
63
- });
64
- test('deleting from number input works as expected', async () => {
65
- const component = html `
66
- <form data-testid="form">
67
- <w-slider label="Production year" min="1950" max="2025" over under>
68
- <p slot="description">Try typing a from value higher than a to value</p>
69
- <w-slider-thumb slot="from" name="from"></w-slider-thumb>
70
- <w-slider-thumb slot="to" name="to"></w-slider-thumb>
71
- </w-slider>
72
- </form>
73
- `;
74
- const page = render(component);
75
- await expect.element(page.getByRole('spinbutton').last()).toHaveValue(2025);
76
- await userEvent.type(page.getByRole('spinbutton').last(), '{Backspace}');
77
- await expect.element(page.getByRole('spinbutton').last()).toHaveValue(202);
78
- await userEvent.type(page.getByRole('spinbutton').last(), '{Backspace}');
79
- await expect.element(page.getByRole('spinbutton').last()).toHaveValue(20);
80
- await userEvent.type(page.getByRole('spinbutton').last(), '{Backspace}');
81
- await expect.element(page.getByRole('spinbutton').last()).toHaveValue(2);
82
- await userEvent.type(page.getByRole('spinbutton').last(), '{Backspace}');
83
- await expect.element(page.getByRole('spinbutton').last()).not.toHaveValue();
84
- });
85
- test('can reset slider by resetting surrounding form', async () => {
86
- render(html `
87
- <form>
88
- <w-slider label="Slider from 0 - 10" min="0" max="10">
89
- <p slot="description">If you want to slide between 0 and 10, this slider has you covered.</p>
90
- <w-slider-thumb name="zero-ten" value="3"></w-slider-thumb>
91
- </w-slider>
92
- </form>
93
- `);
94
- const form = document.querySelector('form');
95
- const wSlider = document.querySelector('w-slider');
96
- const wSliderThumb = wSlider.querySelector('w-slider-thumb');
97
- // sanity
98
- expect(form).not.toBeNull();
99
- expect(wSlider).not.toBeNull();
100
- expect(wSliderThumb).not.toBeNull();
101
- expect(wSliderThumb.value).toBe('3');
102
- expect(Object.fromEntries(new FormData(form).entries())['zero-ten']).toBe('3');
103
- wSliderThumb.value = '5';
104
- await wSliderThumb.updateComplete;
105
- expect(wSliderThumb.value).toBe('5');
106
- expect(Object.fromEntries(new FormData(form).entries())['zero-ten']).toBe('5');
107
- // Reset the form
108
- form.reset();
109
- await wSliderThumb.updateComplete;
110
- expect(wSliderThumb.value).toBe('3');
111
- expect(Object.fromEntries(new FormData(form).entries())['zero-ten']).toBe('3');
112
- });
@@ -1 +0,0 @@
1
- export declare const wSliderStyles: import("lit").CSSResult;
@@ -1,148 +0,0 @@
1
- import { css } from 'lit';
2
- export const wSliderStyles = css `
3
- .w-slider {
4
- position: relative;
5
- border: none;
6
- padding: 0;
7
- margin: 0;
8
- display: grid;
9
- width: 100%;
10
- grid-template-areas:
11
- "label"
12
- "description"
13
- "slider"
14
- "error";
15
- grid-template-columns: 1fr;
16
-
17
- --w-slider-track-background: var(--w-s-color-background-disabled-subtle);
18
- --w-slider-track-active-background: var(--w-s-color-background-primary);
19
- --w-slider-track-height: 4px;
20
- --w-slider-track-active-height: 6px;
21
- --w-slider-thumb-background: var(--w-s-color-background-primary);
22
- --w-slider-thumb-background-hover: var(
23
- --w-s-color-background-primary-hover
24
- );
25
- --w-slider-thumb-size: 28px;
26
- --w-slider-thumb-offset: calc(var(--w-slider-thumb-size) / 2);
27
- --w-slider-marker-color: var(--w-s-color-border);
28
-
29
-
30
- /* Vertical position of range and markers */
31
- --_range-top: calc(
32
- var(--w-slider-thumb-size) / 2 +
33
- calc(
34
- var(--w-slider-track-active-height) - calc(
35
- var(--w-slider-track-height) / 2
36
- ) + 1px
37
- )
38
- );
39
- }
40
-
41
- .w-slider__label {
42
- grid-area: label;
43
- font-size: var(--w-font-size-s);
44
- line-height: var(--w-line-height-s);
45
- font-weight: bold;
46
- padding-bottom: 8px;
47
- color: var(--w-s-color-text);
48
- }
49
-
50
- .w-slider__description {
51
- grid-area: description;
52
- }
53
-
54
- .w-slider__range {
55
- align-self: center;
56
- background: var(--w-slider-track-background);
57
- border-radius: 4px;
58
- height: var(--w-slider-track-active-height);
59
- position: absolute;
60
- /* For range sliders to avoid overlapping the slider thumbs we transform them to
61
- be visually to the left and right of their respective input[type="range"]. This
62
- padding is here so the active-range element is the same width as the input fields. */
63
- padding-inline-start: var(--active-range-inline-start-padding, 0);
64
- padding-inline-end: var(--active-range-inline-end-padding, 0);
65
- top: var(--_range-top);
66
- left: 0;
67
- right: 0;
68
- grid-area: slider;
69
- }
70
-
71
- .w-slider__active-range {
72
- box-sizing: content-box;
73
- background: var(--w-slider-track-active-background);
74
- height: var(--w-slider-track-active-height);
75
-
76
- border-start-start-radius: var(--active-range-border-radius, 0);
77
- border-end-start-radius: var(--active-range-border-radius, 0);
78
-
79
- /* takes over-under into the calculation if set, as this makes the ranges longer in reality */
80
- --max-with-offset: calc(var(--max) + var(--over-under-offset, 0));
81
-
82
- /* calculate the offset for the "from" thumb in percentage to move the range visualisation from the left edge, using max() to avoid going off screen */
83
- --offset-percentage: calc(calc(var(--from) - var(--min)) / calc(var(--max-with-offset) - var(--min)) * 100);
84
- margin-left: calc(max(var(--offset-percentage) * 1%, 0px) - 1px);
85
-
86
- /* calculate the width of the selected range in percentage, clamped between min/max */
87
- --value-range: calc(var(--max-with-offset) - var(--min));
88
- --range-span-percentage: calc(calc(min(var(--to), var(--max-with-offset)) - max(var(--min), var(--from))) / var(--value-range) * 100 );
89
- width: calc(var(--range-span-percentage) * 1% + 1px);
90
-
91
-
92
- z-index: 1;
93
- }
94
-
95
- .w-slider__markers {
96
- --_marker-height: 7px;
97
- --_marker-width: 1px;
98
-
99
- align-self: center;
100
-
101
- /* Creates a linear gradient with --_marker-width wide markers
102
- followed by enough transparent that we can repeat the gradient
103
- along the X axis and have markers visible where we want them. */
104
- background: linear-gradient(
105
- to right,
106
- var(--w-slider-marker-color) var(--_marker-width),
107
- rgba(0, 0, 0, 0) 1px calc(100% - 1px),
108
- var(--w-slider-marker-color) 100%
109
- )
110
- repeat-x;
111
- --_step-width-as-percent: calc(var(--markers) / var(--_value-range) * 100);
112
- background-size: calc(var(--_step-width-as-percent) * 1%)
113
- var(--_marker-height);
114
-
115
- background-position: bottom 0 left 8px right 8px;
116
- position: absolute;
117
- top: calc(var(--_range-top) + 2px);
118
- left: 1px;
119
- right: 1px;
120
- grid-area: slider;
121
- height: var(--_marker-height);
122
- margin-inline: var(--w-slider-thumb-offset);
123
- }
124
-
125
- .w-slider__error {
126
- grid-area: error;
127
- padding-top: 8px;
128
- font-size: var(--w-font-size-xs);
129
- line-height: var(--w-line-height-xs);
130
- color: var(--w-s-color-text-negative);
131
- }
132
-
133
- .w-slider__help-text {
134
- grid-area: error;
135
- padding-top: 8px;
136
- font-size: var(--w-font-size-xs);
137
- line-height: var(--w-line-height-xs);
138
- }
139
-
140
- slot::slotted(w-slider-thumb) {
141
- position: static;
142
- top: 0;
143
- left: 0;
144
- right: 0;
145
- bottom: 0;
146
- grid-area: slider;
147
- }
148
- `;
@@ -1 +0,0 @@
1
- export declare const styles: import("lit").CSSResult;
@@ -1,2 +0,0 @@
1
- import { css } from 'lit';
2
- export const styles = css `*,:before,:after{--w-rotate:0;--w-rotate-x:0;--w-rotate-y:0;--w-rotate-z:0;--w-scale-x:1;--w-scale-y:1;--w-scale-z:1;--w-skew-x:0;--w-skew-y:0;--w-translate-x:0;--w-translate-y:0;--w-translate-z:0}.hidden{display:none}.absolute{position:absolute}.relative{position:relative}.static{position:static}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}`;
@@ -1,2 +0,0 @@
1
- import { WarpSliderThumb } from './slider-thumb.js';
2
- export declare const SliderThumb: import("@lit/react").ReactWebComponent<WarpSliderThumb, {}>;
@@ -1,8 +0,0 @@
1
- import { createComponent } from '@lit/react';
2
- import React from 'react';
3
- import { WarpSliderThumb } from './slider-thumb.js';
4
- export const SliderThumb = createComponent({
5
- tagName: 'w-slider-thumb',
6
- elementClass: WarpSliderThumb,
7
- react: React,
8
- });