@spectrum-web-components/slider 1.0.2 → 1.0.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.
- package/LICENSE +201 -0
- package/package.json +9 -8
- package/stories/slider-sizes.stories.js +36 -0
- package/stories/slider-sizes.stories.js.map +7 -0
- package/stories/slider.stories.js +1109 -0
- package/stories/slider.stories.js.map +7 -0
- package/test/benchmark/test-basic.js +15 -0
- package/test/benchmark/test-basic.js.map +7 -0
- package/test/index.js +286 -0
- package/test/index.js.map +7 -0
- package/test/slider-editable-sync.test.js +5 -0
- package/test/slider-editable-sync.test.js.map +7 -0
- package/test/slider-editable.test.js +5 -0
- package/test/slider-editable.test.js.map +7 -0
- package/test/slider-handle-upgrade.test.js +28 -0
- package/test/slider-handle-upgrade.test.js.map +7 -0
- package/test/slider-memory.test.js +8 -0
- package/test/slider-memory.test.js.map +7 -0
- package/test/slider-sizes.test-vrt.js +5 -0
- package/test/slider-sizes.test-vrt.js.map +7 -0
- package/test/slider.test-vrt.js +5 -0
- package/test/slider.test-vrt.js.map +7 -0
- package/test/slider.test.js +1522 -0
- package/test/slider.test.js.map +7 -0
|
@@ -0,0 +1,1109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
import { html } from "@spectrum-web-components/base";
|
|
3
|
+
import "@spectrum-web-components/slider/sp-slider.js";
|
|
4
|
+
import "@spectrum-web-components/slider/sp-slider-handle.js";
|
|
5
|
+
import "@spectrum-web-components/popover/sp-popover.js";
|
|
6
|
+
import "@spectrum-web-components/dialog/sp-dialog.js";
|
|
7
|
+
import {
|
|
8
|
+
variants
|
|
9
|
+
} from "@spectrum-web-components/slider";
|
|
10
|
+
import { spreadProps } from "../../../test/lit-helpers.js";
|
|
11
|
+
export default {
|
|
12
|
+
component: "sp-slider",
|
|
13
|
+
title: "Slider",
|
|
14
|
+
argTypes: {
|
|
15
|
+
onInput: { action: "input" },
|
|
16
|
+
onChange: { action: "change" },
|
|
17
|
+
variant: {
|
|
18
|
+
name: "Variant",
|
|
19
|
+
description: "Determines the style of slider.",
|
|
20
|
+
table: {
|
|
21
|
+
type: { summary: "string" },
|
|
22
|
+
defaultValue: { summary: void 0 }
|
|
23
|
+
},
|
|
24
|
+
control: {
|
|
25
|
+
type: "inline-radio",
|
|
26
|
+
options: [void 0, ...variants]
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
tickStep: {
|
|
30
|
+
name: "Tick Step",
|
|
31
|
+
description: "Tick spacing on slider.",
|
|
32
|
+
table: {
|
|
33
|
+
type: { summary: "number" },
|
|
34
|
+
defaultValue: { summary: 0.1 }
|
|
35
|
+
},
|
|
36
|
+
control: {
|
|
37
|
+
type: "number"
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
labelVisibility: {
|
|
41
|
+
name: "Label Visibility",
|
|
42
|
+
description: "The labels visibily available in the UI",
|
|
43
|
+
table: {
|
|
44
|
+
type: { summary: '"text" | "value" | "none" | undefined' },
|
|
45
|
+
defaultValue: { summary: void 0 }
|
|
46
|
+
},
|
|
47
|
+
control: {
|
|
48
|
+
type: "text"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
args: {
|
|
53
|
+
variant: void 0,
|
|
54
|
+
tickStep: 0.1,
|
|
55
|
+
labelVisibility: void 0,
|
|
56
|
+
min: void 0,
|
|
57
|
+
max: void 0,
|
|
58
|
+
value: void 0,
|
|
59
|
+
step: void 0
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
const handleEvent = ({ onInput, onChange }) => (event) => {
|
|
63
|
+
const { value } = event.target;
|
|
64
|
+
if (onInput && event.type === "input") {
|
|
65
|
+
onInput(value.toString());
|
|
66
|
+
} else if (onChange && event.type === "change") {
|
|
67
|
+
onChange(value.toString());
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
const handleHandleEvent = ({ onInput, onChange }) => (event) => {
|
|
71
|
+
const target = event.target;
|
|
72
|
+
if (target.value != null) {
|
|
73
|
+
if (typeof target.value === "object") {
|
|
74
|
+
const value = JSON.stringify(target.value, null, 2);
|
|
75
|
+
if (onInput && event.type === "input") {
|
|
76
|
+
onInput(value);
|
|
77
|
+
} else if (onChange && event.type === "change") {
|
|
78
|
+
onChange(value);
|
|
79
|
+
}
|
|
80
|
+
} else {
|
|
81
|
+
const value = `${target.name}: ${target.value}`;
|
|
82
|
+
if (onInput && event.type === "input") {
|
|
83
|
+
onInput(value);
|
|
84
|
+
} else if (onChange && event.type === "change") {
|
|
85
|
+
onChange(value);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
export const Default = (args = {}) => {
|
|
91
|
+
return html`
|
|
92
|
+
<div style="width: 500px; margin-inline: 20px;">
|
|
93
|
+
<sp-slider
|
|
94
|
+
max="1"
|
|
95
|
+
min="0"
|
|
96
|
+
value=".5"
|
|
97
|
+
step="0.01"
|
|
98
|
+
@input=${handleEvent(args)}
|
|
99
|
+
@change=${handleEvent(args)}
|
|
100
|
+
.formatOptions=${{ style: "percent" }}
|
|
101
|
+
...=${spreadProps(args)}
|
|
102
|
+
>
|
|
103
|
+
Opacity
|
|
104
|
+
</sp-slider>
|
|
105
|
+
</div>
|
|
106
|
+
`;
|
|
107
|
+
};
|
|
108
|
+
export const Filled = (args = {}) => {
|
|
109
|
+
return html`
|
|
110
|
+
<div style="width: 500px; margin-inline: 20px;">
|
|
111
|
+
<sp-slider
|
|
112
|
+
max="1"
|
|
113
|
+
variant="filled"
|
|
114
|
+
min="0"
|
|
115
|
+
value=".7"
|
|
116
|
+
step="0.01"
|
|
117
|
+
@input=${handleEvent(args)}
|
|
118
|
+
@change=${handleEvent(args)}
|
|
119
|
+
.formatOptions=${{ style: "percent" }}
|
|
120
|
+
...=${spreadProps(args)}
|
|
121
|
+
>
|
|
122
|
+
Slider Label
|
|
123
|
+
</sp-slider>
|
|
124
|
+
</div>
|
|
125
|
+
`;
|
|
126
|
+
};
|
|
127
|
+
export const HasADefaultValue = (args = {}) => {
|
|
128
|
+
return html`
|
|
129
|
+
<div style="width: 500px; margin-inline: 20px;">
|
|
130
|
+
<sp-slider
|
|
131
|
+
max="1"
|
|
132
|
+
min="0"
|
|
133
|
+
value=".5"
|
|
134
|
+
step="0.01"
|
|
135
|
+
default-value="0.2"
|
|
136
|
+
@input=${handleEvent(args)}
|
|
137
|
+
@change=${handleEvent(args)}
|
|
138
|
+
.formatOptions=${{ style: "percent" }}
|
|
139
|
+
...=${spreadProps(args)}
|
|
140
|
+
>
|
|
141
|
+
double click or press escape key to reset
|
|
142
|
+
</sp-slider>
|
|
143
|
+
</div>
|
|
144
|
+
`;
|
|
145
|
+
};
|
|
146
|
+
export const FillStart = (args = {}) => {
|
|
147
|
+
return html`
|
|
148
|
+
<div style="width: 500px; margin-inline: 20px;">
|
|
149
|
+
<sp-slider
|
|
150
|
+
max="1"
|
|
151
|
+
fill-start
|
|
152
|
+
variant="filled"
|
|
153
|
+
min="0"
|
|
154
|
+
value=".7"
|
|
155
|
+
step="0.01"
|
|
156
|
+
@input=${handleEvent(args)}
|
|
157
|
+
@change=${handleEvent(args)}
|
|
158
|
+
.formatOptions=${{ style: "percent" }}
|
|
159
|
+
...=${spreadProps(args)}
|
|
160
|
+
>
|
|
161
|
+
Slider label
|
|
162
|
+
</sp-slider>
|
|
163
|
+
</div>
|
|
164
|
+
`;
|
|
165
|
+
};
|
|
166
|
+
export const FillStartWithValue = (args = {}) => {
|
|
167
|
+
return html`
|
|
168
|
+
<div style="width: 500px; margin-inline: 20px;">
|
|
169
|
+
<sp-slider
|
|
170
|
+
max="1"
|
|
171
|
+
min="0"
|
|
172
|
+
value=".7"
|
|
173
|
+
step="0.1"
|
|
174
|
+
fill-start="0.3"
|
|
175
|
+
variant="filled"
|
|
176
|
+
@input=${handleEvent(args)}
|
|
177
|
+
@change=${handleEvent(args)}
|
|
178
|
+
.formatOptions=${{ style: "percent" }}
|
|
179
|
+
...=${spreadProps(args)}
|
|
180
|
+
>
|
|
181
|
+
Value Greater than Fill Start
|
|
182
|
+
</sp-slider>
|
|
183
|
+
</div>
|
|
184
|
+
<div style="width: 500px; margin-inline: 20px;">
|
|
185
|
+
<sp-slider
|
|
186
|
+
max="20"
|
|
187
|
+
min="0"
|
|
188
|
+
value="5"
|
|
189
|
+
step="1"
|
|
190
|
+
fill-start="15"
|
|
191
|
+
@input=${handleEvent(args)}
|
|
192
|
+
@change=${handleEvent(args)}
|
|
193
|
+
.formatOptions=${{ style: "number" }}
|
|
194
|
+
...=${spreadProps(args)}
|
|
195
|
+
>
|
|
196
|
+
Value Less than Fill Start
|
|
197
|
+
</sp-slider>
|
|
198
|
+
</div>
|
|
199
|
+
`;
|
|
200
|
+
};
|
|
201
|
+
export const FillStartWithNegativeMinRange = (args = {}) => {
|
|
202
|
+
return html`
|
|
203
|
+
<div style="width: 500px; margin-inline: 20px;">
|
|
204
|
+
<sp-slider
|
|
205
|
+
max="150"
|
|
206
|
+
min="-50"
|
|
207
|
+
value="25"
|
|
208
|
+
step="1"
|
|
209
|
+
fill-start="0"
|
|
210
|
+
@input=${handleEvent(args)}
|
|
211
|
+
@change=${handleEvent(args)}
|
|
212
|
+
.formatOptions=${{ style: "number" }}
|
|
213
|
+
...=${spreadProps(args)}
|
|
214
|
+
>
|
|
215
|
+
Fill start with "0" and within range -50 to 150
|
|
216
|
+
</sp-slider>
|
|
217
|
+
</div>
|
|
218
|
+
<div style="width: 500px; margin-inline: 20px;">
|
|
219
|
+
<sp-slider
|
|
220
|
+
max="100"
|
|
221
|
+
min="-50"
|
|
222
|
+
value="-25"
|
|
223
|
+
step="1"
|
|
224
|
+
fill-start="0"
|
|
225
|
+
@input=${handleEvent(args)}
|
|
226
|
+
@change=${handleEvent(args)}
|
|
227
|
+
.formatOptions=${{ style: "number" }}
|
|
228
|
+
.normalization=${{
|
|
229
|
+
toNormalized: (value) => {
|
|
230
|
+
if (value === 0) return 0.5;
|
|
231
|
+
return value < 0 ? 0.5 - value / -50 * 0.5 : 0.5 + value / 100 * 0.5;
|
|
232
|
+
},
|
|
233
|
+
fromNormalized: (value) => {
|
|
234
|
+
if (value === 0.5) return 0;
|
|
235
|
+
return value < 0.5 ? (1 - value / 0.5) * -50 : (value - 0.5) / 0.5 * 100;
|
|
236
|
+
}
|
|
237
|
+
}}
|
|
238
|
+
...=${spreadProps(args)}
|
|
239
|
+
>
|
|
240
|
+
Fill start with "0" and normalization function within range -50
|
|
241
|
+
to 100
|
|
242
|
+
</sp-slider>
|
|
243
|
+
</div>
|
|
244
|
+
`;
|
|
245
|
+
};
|
|
246
|
+
export const autofocus = (args = {}) => {
|
|
247
|
+
return html`
|
|
248
|
+
<div style="width: 500px; margin-inline: 20px;">
|
|
249
|
+
<sp-slider
|
|
250
|
+
autofocus
|
|
251
|
+
max="1"
|
|
252
|
+
min="0"
|
|
253
|
+
value=".5"
|
|
254
|
+
step="0.01"
|
|
255
|
+
@input=${handleEvent(args)}
|
|
256
|
+
@change=${handleEvent(args)}
|
|
257
|
+
.formatOptions=${{ style: "percent" }}
|
|
258
|
+
...=${spreadProps(args)}
|
|
259
|
+
>
|
|
260
|
+
Opacity
|
|
261
|
+
</sp-slider>
|
|
262
|
+
</div>
|
|
263
|
+
`;
|
|
264
|
+
};
|
|
265
|
+
export const minimalDOM = () => {
|
|
266
|
+
return html`
|
|
267
|
+
<div style="width: 500px; margin: 12px 20px;">
|
|
268
|
+
<sp-slider>Opacity</sp-slider>
|
|
269
|
+
</div>
|
|
270
|
+
`;
|
|
271
|
+
};
|
|
272
|
+
export const noVisibleTextLabel = (args = {}) => {
|
|
273
|
+
return html`
|
|
274
|
+
<div style="width: 500px; margin: 12px 20px;">
|
|
275
|
+
<sp-slider
|
|
276
|
+
max="1"
|
|
277
|
+
min="0"
|
|
278
|
+
value=".5"
|
|
279
|
+
step="0.01"
|
|
280
|
+
@input=${handleEvent(args)}
|
|
281
|
+
@change=${handleEvent(args)}
|
|
282
|
+
.formatOptions=${{ style: "percent" }}
|
|
283
|
+
...=${spreadProps(args)}
|
|
284
|
+
>
|
|
285
|
+
Opacity
|
|
286
|
+
</sp-slider>
|
|
287
|
+
</div>
|
|
288
|
+
`;
|
|
289
|
+
};
|
|
290
|
+
noVisibleTextLabel.args = {
|
|
291
|
+
labelVisibility: "value"
|
|
292
|
+
};
|
|
293
|
+
export const noVisibleValueLabel = (args = {}) => {
|
|
294
|
+
return html`
|
|
295
|
+
<div style="width: 500px; margin: 12px 20px;">
|
|
296
|
+
<sp-slider
|
|
297
|
+
max="1"
|
|
298
|
+
min="0"
|
|
299
|
+
value="0"
|
|
300
|
+
step="0.01"
|
|
301
|
+
@input=${handleEvent(args)}
|
|
302
|
+
@change=${handleEvent(args)}
|
|
303
|
+
.formatOptions=${{ style: "percent" }}
|
|
304
|
+
...=${spreadProps(args)}
|
|
305
|
+
>
|
|
306
|
+
Opacity
|
|
307
|
+
</sp-slider>
|
|
308
|
+
</div>
|
|
309
|
+
`;
|
|
310
|
+
};
|
|
311
|
+
noVisibleValueLabel.args = {
|
|
312
|
+
labelVisibility: "text"
|
|
313
|
+
};
|
|
314
|
+
export const noVisibleLabels = (args = {}) => {
|
|
315
|
+
return html`
|
|
316
|
+
<div style="width: 500px; margin: 12px 20px;">
|
|
317
|
+
<sp-slider
|
|
318
|
+
max="1"
|
|
319
|
+
min="0"
|
|
320
|
+
value=".5"
|
|
321
|
+
step="0.01"
|
|
322
|
+
@input=${handleEvent(args)}
|
|
323
|
+
@change=${handleEvent(args)}
|
|
324
|
+
.formatOptions=${{ style: "percent" }}
|
|
325
|
+
...=${spreadProps(args)}
|
|
326
|
+
>
|
|
327
|
+
Opacity
|
|
328
|
+
</sp-slider>
|
|
329
|
+
</div>
|
|
330
|
+
`;
|
|
331
|
+
};
|
|
332
|
+
noVisibleLabels.args = {
|
|
333
|
+
labelVisibility: "none"
|
|
334
|
+
};
|
|
335
|
+
export const px = (args = {}) => {
|
|
336
|
+
return html`
|
|
337
|
+
<div style="width: 500px; margin: 12px 20px;">
|
|
338
|
+
<sp-slider
|
|
339
|
+
max="360"
|
|
340
|
+
min="0"
|
|
341
|
+
value="90"
|
|
342
|
+
step="1"
|
|
343
|
+
@input=${handleEvent(args)}
|
|
344
|
+
@change=${handleEvent(args)}
|
|
345
|
+
.formatOptions=${{
|
|
346
|
+
style: "unit",
|
|
347
|
+
unit: "px"
|
|
348
|
+
}}
|
|
349
|
+
...=${spreadProps(args)}
|
|
350
|
+
>
|
|
351
|
+
Angle
|
|
352
|
+
</sp-slider>
|
|
353
|
+
</div>
|
|
354
|
+
`;
|
|
355
|
+
};
|
|
356
|
+
class NumberFieldDefined extends HTMLElement {
|
|
357
|
+
constructor() {
|
|
358
|
+
super();
|
|
359
|
+
this.numberFieldLoaderPromise = Promise.resolve(false);
|
|
360
|
+
this.numberFieldLoaderPromise = new Promise((res) => {
|
|
361
|
+
customElements.whenDefined("sp-number-field").then(() => {
|
|
362
|
+
res(true);
|
|
363
|
+
});
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
get updateComplete() {
|
|
367
|
+
return this.numberFieldLoaderPromise;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
customElements.define("number-field-defined", NumberFieldDefined);
|
|
371
|
+
const editableDecorator = (story) => {
|
|
372
|
+
return html`
|
|
373
|
+
${story()}
|
|
374
|
+
<number-field-defined></number-field-defined>
|
|
375
|
+
`;
|
|
376
|
+
};
|
|
377
|
+
export const max20 = (args = {}) => {
|
|
378
|
+
return html`
|
|
379
|
+
<div style="width: 200px; margin: 12px 20px;">
|
|
380
|
+
<sp-slider
|
|
381
|
+
editable
|
|
382
|
+
max="20"
|
|
383
|
+
min="0"
|
|
384
|
+
value="5"
|
|
385
|
+
step="1"
|
|
386
|
+
@input=${handleEvent(args)}
|
|
387
|
+
@change=${handleEvent(args)}
|
|
388
|
+
...=${spreadProps(args)}
|
|
389
|
+
>
|
|
390
|
+
Max 20
|
|
391
|
+
</sp-slider>
|
|
392
|
+
</div>
|
|
393
|
+
`;
|
|
394
|
+
};
|
|
395
|
+
max20.swc_vrt = {
|
|
396
|
+
skip: true
|
|
397
|
+
};
|
|
398
|
+
export const editable = (args = {}) => {
|
|
399
|
+
return html`
|
|
400
|
+
<div style="width: 500px; margin: 12px 20px;">
|
|
401
|
+
<sp-slider
|
|
402
|
+
editable
|
|
403
|
+
max="360"
|
|
404
|
+
min="0"
|
|
405
|
+
value="90"
|
|
406
|
+
step="1"
|
|
407
|
+
@input=${handleEvent(args)}
|
|
408
|
+
@change=${handleEvent(args)}
|
|
409
|
+
.formatOptions=${{
|
|
410
|
+
style: "unit",
|
|
411
|
+
unit: "degree",
|
|
412
|
+
unitDisplay: "narrow"
|
|
413
|
+
}}
|
|
414
|
+
...=${spreadProps(args)}
|
|
415
|
+
>
|
|
416
|
+
Angle
|
|
417
|
+
</sp-slider>
|
|
418
|
+
</div>
|
|
419
|
+
`;
|
|
420
|
+
};
|
|
421
|
+
editable.decorators = [editableDecorator];
|
|
422
|
+
import "@spectrum-web-components/slider/sp-slider.js";
|
|
423
|
+
import "@spectrum-web-components/overlay/overlay-trigger.js";
|
|
424
|
+
import "@spectrum-web-components/button/sp-button.js";
|
|
425
|
+
import "@spectrum-web-components/tray/sp-tray.js";
|
|
426
|
+
export const Multiple = (args) => {
|
|
427
|
+
const updateSliderConfig = (min, max, value, step) => {
|
|
428
|
+
const slider = document.querySelector("sp-slider");
|
|
429
|
+
if (slider) {
|
|
430
|
+
slider.value = value;
|
|
431
|
+
slider.min = min;
|
|
432
|
+
slider.max = max;
|
|
433
|
+
slider.step = step;
|
|
434
|
+
}
|
|
435
|
+
};
|
|
436
|
+
return html`
|
|
437
|
+
<overlay-trigger type="modal">
|
|
438
|
+
<sp-button slot="trigger" variant="secondary">
|
|
439
|
+
Toggle menu
|
|
440
|
+
</sp-button>
|
|
441
|
+
<sp-tray slot="click-content">
|
|
442
|
+
<div style="padding: 8px; width: 100%">
|
|
443
|
+
<sp-slider
|
|
444
|
+
label="Slider Label"
|
|
445
|
+
min=${args.min}
|
|
446
|
+
max=${args.max}
|
|
447
|
+
value=${args.value}
|
|
448
|
+
step=${args.step}
|
|
449
|
+
variant="filled"
|
|
450
|
+
hide-stepper
|
|
451
|
+
editable
|
|
452
|
+
></sp-slider>
|
|
453
|
+
<div
|
|
454
|
+
style="display: grid; gap: 8px; padding: 8px; width: 50%; margin: auto;"
|
|
455
|
+
>
|
|
456
|
+
<sp-button
|
|
457
|
+
size="s"
|
|
458
|
+
@click=${() => updateSliderConfig(0.25, 4, 0.75, 0.01)}
|
|
459
|
+
>
|
|
460
|
+
Duration
|
|
461
|
+
</sp-button>
|
|
462
|
+
<sp-button
|
|
463
|
+
size="s"
|
|
464
|
+
@click=${() => updateSliderConfig(2, 100, 2, 1)}
|
|
465
|
+
>
|
|
466
|
+
Personality
|
|
467
|
+
</sp-button>
|
|
468
|
+
<sp-button
|
|
469
|
+
size="s"
|
|
470
|
+
@click=${() => updateSliderConfig(2, 25, 3, 1)}
|
|
471
|
+
>
|
|
472
|
+
Intensity
|
|
473
|
+
</sp-button>
|
|
474
|
+
</div>
|
|
475
|
+
</div>
|
|
476
|
+
</sp-tray>
|
|
477
|
+
</overlay-trigger>
|
|
478
|
+
`;
|
|
479
|
+
};
|
|
480
|
+
Multiple.args = {
|
|
481
|
+
min: 0.25,
|
|
482
|
+
max: 4,
|
|
483
|
+
value: 0.75,
|
|
484
|
+
step: 0.01
|
|
485
|
+
};
|
|
486
|
+
export const editableWithDefaultValue = (args = {}) => {
|
|
487
|
+
return html`
|
|
488
|
+
<div style="width: 500px; margin: 12px 20px;">
|
|
489
|
+
<sp-slider
|
|
490
|
+
editable
|
|
491
|
+
max="360"
|
|
492
|
+
min="0"
|
|
493
|
+
value="90"
|
|
494
|
+
step="1"
|
|
495
|
+
default-value="180"
|
|
496
|
+
@input=${handleEvent(args)}
|
|
497
|
+
@change=${handleEvent(args)}
|
|
498
|
+
.formatOptions=${{
|
|
499
|
+
style: "unit",
|
|
500
|
+
unit: "degree",
|
|
501
|
+
unitDisplay: "narrow"
|
|
502
|
+
}}
|
|
503
|
+
...=${spreadProps(args)}
|
|
504
|
+
>
|
|
505
|
+
Angle
|
|
506
|
+
</sp-slider>
|
|
507
|
+
</div>
|
|
508
|
+
`;
|
|
509
|
+
};
|
|
510
|
+
editableWithDefaultValue.swc_vrt = {
|
|
511
|
+
skip: true
|
|
512
|
+
};
|
|
513
|
+
export const editableWithFractionValue = (args = {}) => {
|
|
514
|
+
return html`
|
|
515
|
+
<div style="width: 500px; margin: 12px 20px;">
|
|
516
|
+
<sp-slider
|
|
517
|
+
editable
|
|
518
|
+
max="255"
|
|
519
|
+
min="0.1"
|
|
520
|
+
value="0.5"
|
|
521
|
+
step="0.01"
|
|
522
|
+
default-value="18"
|
|
523
|
+
@input=${handleEvent(args)}
|
|
524
|
+
@change=${handleEvent(args)}
|
|
525
|
+
...=${spreadProps(args)}
|
|
526
|
+
>
|
|
527
|
+
Angle
|
|
528
|
+
</sp-slider>
|
|
529
|
+
</div>
|
|
530
|
+
`;
|
|
531
|
+
};
|
|
532
|
+
editableWithFractionValue.swc_vrt = {
|
|
533
|
+
skip: true
|
|
534
|
+
};
|
|
535
|
+
export const editableDisabled = (args = {}) => {
|
|
536
|
+
return html`
|
|
537
|
+
<div style="width: 500px; margin: 12px 20px;">
|
|
538
|
+
<sp-slider
|
|
539
|
+
editable
|
|
540
|
+
disabled
|
|
541
|
+
max="360"
|
|
542
|
+
min="0"
|
|
543
|
+
value="90"
|
|
544
|
+
step="1"
|
|
545
|
+
@input=${handleEvent(args)}
|
|
546
|
+
@change=${handleEvent(args)}
|
|
547
|
+
.formatOptions=${{
|
|
548
|
+
style: "unit",
|
|
549
|
+
unit: "degree",
|
|
550
|
+
unitDisplay: "narrow"
|
|
551
|
+
}}
|
|
552
|
+
...=${spreadProps(args)}
|
|
553
|
+
>
|
|
554
|
+
Angle
|
|
555
|
+
</sp-slider>
|
|
556
|
+
</div>
|
|
557
|
+
`;
|
|
558
|
+
};
|
|
559
|
+
editable.decorators = [editableDecorator];
|
|
560
|
+
export const editableCustom = (args = {}) => {
|
|
561
|
+
return html`
|
|
562
|
+
<div
|
|
563
|
+
style="width: 500px; margin: 12px 20px; --mod-stepper-width: 150px;"
|
|
564
|
+
>
|
|
565
|
+
<sp-slider
|
|
566
|
+
editable
|
|
567
|
+
max="24"
|
|
568
|
+
min="0"
|
|
569
|
+
value="12.75"
|
|
570
|
+
step="0.25"
|
|
571
|
+
@input=${handleEvent(args)}
|
|
572
|
+
@change=${handleEvent(args)}
|
|
573
|
+
.formatOptions=${{ style: "unit", unit: "hour" }}
|
|
574
|
+
...=${spreadProps(args)}
|
|
575
|
+
>
|
|
576
|
+
Hours
|
|
577
|
+
</sp-slider>
|
|
578
|
+
</div>
|
|
579
|
+
`;
|
|
580
|
+
};
|
|
581
|
+
editableCustom.decorators = [editableDecorator];
|
|
582
|
+
export const editableWithoutVisibleLabels = (args = {}) => {
|
|
583
|
+
return html`
|
|
584
|
+
<div style="width: 500px; margin: 12px 20px;">
|
|
585
|
+
<sp-slider
|
|
586
|
+
editable
|
|
587
|
+
max="1"
|
|
588
|
+
min="0"
|
|
589
|
+
value=".5"
|
|
590
|
+
step="0.01"
|
|
591
|
+
@input=${handleEvent(args)}
|
|
592
|
+
@change=${handleEvent(args)}
|
|
593
|
+
.formatOptions=${{ style: "percent" }}
|
|
594
|
+
...=${spreadProps(args)}
|
|
595
|
+
>
|
|
596
|
+
Opacity
|
|
597
|
+
</sp-slider>
|
|
598
|
+
</div>
|
|
599
|
+
`;
|
|
600
|
+
};
|
|
601
|
+
editableWithoutVisibleLabels.args = {
|
|
602
|
+
labelVisibility: "none"
|
|
603
|
+
};
|
|
604
|
+
export const hideStepper = (args = {}) => {
|
|
605
|
+
return html`
|
|
606
|
+
<div style="width: 500px; margin: 12px 20px;">
|
|
607
|
+
<sp-slider
|
|
608
|
+
editable
|
|
609
|
+
hide-stepper
|
|
610
|
+
max="1"
|
|
611
|
+
min="0"
|
|
612
|
+
value=".5"
|
|
613
|
+
step="0.01"
|
|
614
|
+
@input=${handleEvent(args)}
|
|
615
|
+
@change=${handleEvent(args)}
|
|
616
|
+
.formatOptions=${{ style: "percent" }}
|
|
617
|
+
...=${spreadProps(args)}
|
|
618
|
+
>
|
|
619
|
+
Opacity
|
|
620
|
+
</sp-slider>
|
|
621
|
+
</div>
|
|
622
|
+
`;
|
|
623
|
+
};
|
|
624
|
+
hideStepper.decorators = [editableDecorator];
|
|
625
|
+
export const Gradient = (args = {}) => {
|
|
626
|
+
return html`
|
|
627
|
+
<style>
|
|
628
|
+
sp-slider {
|
|
629
|
+
--mod-slider-track-color: linear-gradient(
|
|
630
|
+
to right,
|
|
631
|
+
red,
|
|
632
|
+
green 100%
|
|
633
|
+
);
|
|
634
|
+
}
|
|
635
|
+
sp-slider[dir='rtl'] {
|
|
636
|
+
--mod-slider-track-color: linear-gradient(
|
|
637
|
+
to left,
|
|
638
|
+
red,
|
|
639
|
+
green 100%
|
|
640
|
+
);
|
|
641
|
+
}
|
|
642
|
+
</style>
|
|
643
|
+
<div
|
|
644
|
+
style="
|
|
645
|
+
width: 500px;
|
|
646
|
+
margin: 12px 20px;
|
|
647
|
+
"
|
|
648
|
+
>
|
|
649
|
+
<sp-slider
|
|
650
|
+
label="Opacity"
|
|
651
|
+
max="100"
|
|
652
|
+
min="0"
|
|
653
|
+
value="50"
|
|
654
|
+
id="opacity-slider"
|
|
655
|
+
@input=${handleEvent(args)}
|
|
656
|
+
@change=${handleEvent(args)}
|
|
657
|
+
...=${spreadProps(args)}
|
|
658
|
+
></sp-slider>
|
|
659
|
+
</div>
|
|
660
|
+
`;
|
|
661
|
+
};
|
|
662
|
+
Gradient.args = {
|
|
663
|
+
variant: void 0
|
|
664
|
+
};
|
|
665
|
+
export const tick = (args = {}) => {
|
|
666
|
+
return html`
|
|
667
|
+
<sp-slider
|
|
668
|
+
label="Slider Label"
|
|
669
|
+
variant="tick"
|
|
670
|
+
min="0"
|
|
671
|
+
max="92"
|
|
672
|
+
...=${spreadProps(args)}
|
|
673
|
+
></sp-slider>
|
|
674
|
+
<sp-slider
|
|
675
|
+
label="Slider Label"
|
|
676
|
+
variant="tick"
|
|
677
|
+
min="0"
|
|
678
|
+
max="92"
|
|
679
|
+
...=${spreadProps(args)}
|
|
680
|
+
></sp-slider>
|
|
681
|
+
`;
|
|
682
|
+
};
|
|
683
|
+
tick.args = {
|
|
684
|
+
variant: "tick",
|
|
685
|
+
tickStep: 5
|
|
686
|
+
};
|
|
687
|
+
export const tickLabels = (args = {}) => {
|
|
688
|
+
return html`
|
|
689
|
+
<sp-slider
|
|
690
|
+
label="Slider Label"
|
|
691
|
+
tick-labels
|
|
692
|
+
variant="tick"
|
|
693
|
+
min="50"
|
|
694
|
+
max="75"
|
|
695
|
+
...=${spreadProps(args)}
|
|
696
|
+
></sp-slider>
|
|
697
|
+
<sp-slider
|
|
698
|
+
label="Slider Label"
|
|
699
|
+
tick-labels
|
|
700
|
+
variant="tick"
|
|
701
|
+
min="50"
|
|
702
|
+
max="75"
|
|
703
|
+
...=${spreadProps(args)}
|
|
704
|
+
></sp-slider>
|
|
705
|
+
`;
|
|
706
|
+
};
|
|
707
|
+
tickLabels.args = {
|
|
708
|
+
variant: "tick",
|
|
709
|
+
tickStep: 5
|
|
710
|
+
};
|
|
711
|
+
export const Disabled = (args = {}) => {
|
|
712
|
+
return html`
|
|
713
|
+
<div style="width: 500px; margin: 12px 20px;">
|
|
714
|
+
<sp-slider
|
|
715
|
+
disabled
|
|
716
|
+
value="5"
|
|
717
|
+
step="0.5"
|
|
718
|
+
min="0"
|
|
719
|
+
max="20"
|
|
720
|
+
label="Intensity"
|
|
721
|
+
...=${spreadProps(args)}
|
|
722
|
+
></sp-slider>
|
|
723
|
+
</div>
|
|
724
|
+
`;
|
|
725
|
+
};
|
|
726
|
+
export const Quiet = (args = {}) => {
|
|
727
|
+
return html`
|
|
728
|
+
<div style="width: 500px; margin: 12px 20px;">
|
|
729
|
+
<sp-slider
|
|
730
|
+
editable
|
|
731
|
+
hide-stepper
|
|
732
|
+
quiet
|
|
733
|
+
value="5"
|
|
734
|
+
step="0.5"
|
|
735
|
+
min="0"
|
|
736
|
+
max="20"
|
|
737
|
+
label="Intensity"
|
|
738
|
+
...=${spreadProps(args)}
|
|
739
|
+
></sp-slider>
|
|
740
|
+
</div>
|
|
741
|
+
`;
|
|
742
|
+
};
|
|
743
|
+
export const inPopover = (args = {}) => {
|
|
744
|
+
return html`
|
|
745
|
+
<sp-popover open style="min-width: 0">
|
|
746
|
+
<sp-dialog no-divider>
|
|
747
|
+
<sp-slider
|
|
748
|
+
editable
|
|
749
|
+
hide-stepper
|
|
750
|
+
quiet
|
|
751
|
+
value="5"
|
|
752
|
+
step="0.5"
|
|
753
|
+
min="0"
|
|
754
|
+
max="20"
|
|
755
|
+
label="Intensity"
|
|
756
|
+
...=${spreadProps(args)}
|
|
757
|
+
></sp-slider>
|
|
758
|
+
</sp-dialog>
|
|
759
|
+
</sp-popover>
|
|
760
|
+
`;
|
|
761
|
+
};
|
|
762
|
+
export const Indeterminate = (args = {}) => {
|
|
763
|
+
return html`
|
|
764
|
+
<div style="width: 500px; margin: 12px 20px;">
|
|
765
|
+
<sp-slider
|
|
766
|
+
editable
|
|
767
|
+
indeterminate
|
|
768
|
+
value="5"
|
|
769
|
+
step="0.5"
|
|
770
|
+
min="0"
|
|
771
|
+
max="20"
|
|
772
|
+
label="Intensity"
|
|
773
|
+
@input=${handleEvent(args)}
|
|
774
|
+
@change=${handleEvent(args)}
|
|
775
|
+
...=${spreadProps(args)}
|
|
776
|
+
></sp-slider>
|
|
777
|
+
</div>
|
|
778
|
+
`;
|
|
779
|
+
};
|
|
780
|
+
export const ExplicitHandle = (args = {}) => {
|
|
781
|
+
return html`
|
|
782
|
+
<div style="width: 500px; margin: 12px 20px;">
|
|
783
|
+
<sp-slider
|
|
784
|
+
step="0.5"
|
|
785
|
+
min="0"
|
|
786
|
+
max="20"
|
|
787
|
+
@input=${handleHandleEvent(args)}
|
|
788
|
+
@change=${handleHandleEvent(args)}
|
|
789
|
+
...=${spreadProps(args)}
|
|
790
|
+
>
|
|
791
|
+
Intensity
|
|
792
|
+
<sp-slider-handle slot="handle" value="5"></sp-slider-handle>
|
|
793
|
+
</sp-slider>
|
|
794
|
+
</div>
|
|
795
|
+
`;
|
|
796
|
+
};
|
|
797
|
+
export const TwoHandles = (args = {}) => {
|
|
798
|
+
return html`
|
|
799
|
+
<div style="width: 500px; margin: 12px 20px;">
|
|
800
|
+
<sp-slider
|
|
801
|
+
value="5"
|
|
802
|
+
step="1"
|
|
803
|
+
min="0"
|
|
804
|
+
max="255"
|
|
805
|
+
@input=${handleHandleEvent(args)}
|
|
806
|
+
@change=${handleHandleEvent(args)}
|
|
807
|
+
...=${spreadProps(args)}
|
|
808
|
+
>
|
|
809
|
+
Output Levels
|
|
810
|
+
<sp-slider-handle
|
|
811
|
+
slot="handle"
|
|
812
|
+
name="min"
|
|
813
|
+
label="Minimum"
|
|
814
|
+
value="5"
|
|
815
|
+
></sp-slider-handle>
|
|
816
|
+
<sp-slider-handle
|
|
817
|
+
slot="handle"
|
|
818
|
+
name="max"
|
|
819
|
+
label="Maximum"
|
|
820
|
+
value="250"
|
|
821
|
+
></sp-slider-handle>
|
|
822
|
+
</sp-slider>
|
|
823
|
+
</div>
|
|
824
|
+
`;
|
|
825
|
+
};
|
|
826
|
+
TwoHandles.args = {
|
|
827
|
+
variant: "range",
|
|
828
|
+
tickStep: 10
|
|
829
|
+
};
|
|
830
|
+
export const TwoHandlesPt = (args = {}) => {
|
|
831
|
+
return html`
|
|
832
|
+
<div style="width: 500px; margin: 12px 20px;">
|
|
833
|
+
<sp-slider
|
|
834
|
+
value="5"
|
|
835
|
+
step="1"
|
|
836
|
+
min="0"
|
|
837
|
+
max="255"
|
|
838
|
+
@input=${handleHandleEvent(args)}
|
|
839
|
+
@change=${handleHandleEvent(args)}
|
|
840
|
+
.formatOptions=${{
|
|
841
|
+
style: "unit",
|
|
842
|
+
unit: "pt"
|
|
843
|
+
}}
|
|
844
|
+
...=${spreadProps(args)}
|
|
845
|
+
>
|
|
846
|
+
Output Levels
|
|
847
|
+
<sp-slider-handle
|
|
848
|
+
slot="handle"
|
|
849
|
+
name="min"
|
|
850
|
+
label="Minimum"
|
|
851
|
+
value="5"
|
|
852
|
+
></sp-slider-handle>
|
|
853
|
+
<sp-slider-handle
|
|
854
|
+
slot="handle"
|
|
855
|
+
name="max"
|
|
856
|
+
label="Maximum"
|
|
857
|
+
value="250"
|
|
858
|
+
></sp-slider-handle>
|
|
859
|
+
</sp-slider>
|
|
860
|
+
</div>
|
|
861
|
+
`;
|
|
862
|
+
};
|
|
863
|
+
TwoHandlesPt.args = {
|
|
864
|
+
variant: "range",
|
|
865
|
+
tickStep: 10
|
|
866
|
+
};
|
|
867
|
+
export const ThreeHandlesPc = (args = {}) => {
|
|
868
|
+
return html`
|
|
869
|
+
<div style="width: 500px; margin: 12px 20px;">
|
|
870
|
+
<sp-slider
|
|
871
|
+
value="5"
|
|
872
|
+
step="1"
|
|
873
|
+
min="0"
|
|
874
|
+
max="255"
|
|
875
|
+
@input=${handleHandleEvent(args)}
|
|
876
|
+
@change=${handleHandleEvent(args)}
|
|
877
|
+
.formatOptions=${{ style: "unit", unit: "pc" }}
|
|
878
|
+
...=${spreadProps(args)}
|
|
879
|
+
>
|
|
880
|
+
Output Levels
|
|
881
|
+
<sp-slider-handle
|
|
882
|
+
slot="handle"
|
|
883
|
+
value="5"
|
|
884
|
+
label="Low"
|
|
885
|
+
></sp-slider-handle>
|
|
886
|
+
<sp-slider-handle
|
|
887
|
+
slot="handle"
|
|
888
|
+
value="133"
|
|
889
|
+
label="Mid"
|
|
890
|
+
></sp-slider-handle>
|
|
891
|
+
<sp-slider-handle
|
|
892
|
+
slot="handle"
|
|
893
|
+
value="250"
|
|
894
|
+
label="High"
|
|
895
|
+
></sp-slider-handle>
|
|
896
|
+
</sp-slider>
|
|
897
|
+
</div>
|
|
898
|
+
`;
|
|
899
|
+
};
|
|
900
|
+
ThreeHandlesPc.args = {
|
|
901
|
+
variant: "range"
|
|
902
|
+
};
|
|
903
|
+
export const ThreeHandlesOrdered = (args = {}) => {
|
|
904
|
+
return html`
|
|
905
|
+
<div style="width: 500px; margin: 12px 20px;">
|
|
906
|
+
<sp-slider
|
|
907
|
+
step="1"
|
|
908
|
+
min="0"
|
|
909
|
+
max="255"
|
|
910
|
+
@input=${handleHandleEvent(args)}
|
|
911
|
+
@change=${handleHandleEvent(args)}
|
|
912
|
+
...=${spreadProps(args)}
|
|
913
|
+
>
|
|
914
|
+
Output Levels
|
|
915
|
+
<sp-slider-handle
|
|
916
|
+
slot="handle"
|
|
917
|
+
name="low"
|
|
918
|
+
label="Low"
|
|
919
|
+
value="5"
|
|
920
|
+
max="next"
|
|
921
|
+
></sp-slider-handle>
|
|
922
|
+
<sp-slider-handle
|
|
923
|
+
slot="handle"
|
|
924
|
+
name="mid"
|
|
925
|
+
label="Mid"
|
|
926
|
+
value="100"
|
|
927
|
+
min="previous"
|
|
928
|
+
max="next"
|
|
929
|
+
></sp-slider-handle>
|
|
930
|
+
<sp-slider-handle
|
|
931
|
+
slot="handle"
|
|
932
|
+
name="high"
|
|
933
|
+
label="High"
|
|
934
|
+
value="250"
|
|
935
|
+
min="previous"
|
|
936
|
+
></sp-slider-handle>
|
|
937
|
+
</sp-slider>
|
|
938
|
+
</div>
|
|
939
|
+
`;
|
|
940
|
+
};
|
|
941
|
+
ThreeHandlesOrdered.args = {
|
|
942
|
+
variant: "range",
|
|
943
|
+
tickStep: 10
|
|
944
|
+
};
|
|
945
|
+
export const ThreeHandlesComplex = (args = {}) => {
|
|
946
|
+
const values = {
|
|
947
|
+
black: 50,
|
|
948
|
+
gray: 4.98,
|
|
949
|
+
white: 225
|
|
950
|
+
};
|
|
951
|
+
const handleEvent2 = ({ onInput, onChange }) => (event) => {
|
|
952
|
+
const target = event.target;
|
|
953
|
+
if (target.value != null) {
|
|
954
|
+
if (typeof target.value === "object") {
|
|
955
|
+
const value = JSON.stringify(target.value, null, 2);
|
|
956
|
+
if (onInput && event.type === "input") {
|
|
957
|
+
onInput(value);
|
|
958
|
+
} else if (onChange && event.type === "change") {
|
|
959
|
+
onChange(value);
|
|
960
|
+
}
|
|
961
|
+
} else {
|
|
962
|
+
const value = `${target.name}: ${target.value}`;
|
|
963
|
+
if (onInput && event.type === "input") {
|
|
964
|
+
onInput(value);
|
|
965
|
+
} else if (onChange && event.type === "change") {
|
|
966
|
+
onChange(value);
|
|
967
|
+
}
|
|
968
|
+
}
|
|
969
|
+
values[target.name] = target.value;
|
|
970
|
+
}
|
|
971
|
+
};
|
|
972
|
+
const grayNormalization = {
|
|
973
|
+
toNormalized(value) {
|
|
974
|
+
const normalizedBlack = values.black / 255;
|
|
975
|
+
const normalizedWhite = values.white / 255;
|
|
976
|
+
const clamped = Math.max(Math.min(value, 1), 0);
|
|
977
|
+
return clamped * (normalizedWhite - normalizedBlack) + normalizedBlack;
|
|
978
|
+
},
|
|
979
|
+
fromNormalized(value) {
|
|
980
|
+
const normalizedBlack = values.black / 255;
|
|
981
|
+
const normalizedWhite = values.white / 255;
|
|
982
|
+
const clamped = Math.max(
|
|
983
|
+
Math.min(value, normalizedWhite),
|
|
984
|
+
normalizedBlack
|
|
985
|
+
);
|
|
986
|
+
return (clamped - normalizedBlack) / (normalizedWhite - normalizedBlack);
|
|
987
|
+
}
|
|
988
|
+
};
|
|
989
|
+
const blackNormalization = {
|
|
990
|
+
toNormalized(value) {
|
|
991
|
+
const clamped = Math.min(value, values.white);
|
|
992
|
+
return clamped / 255;
|
|
993
|
+
},
|
|
994
|
+
fromNormalized(value) {
|
|
995
|
+
const denormalized = value * 255;
|
|
996
|
+
return Math.min(denormalized, values.white);
|
|
997
|
+
}
|
|
998
|
+
};
|
|
999
|
+
const whiteNormalization = {
|
|
1000
|
+
toNormalized(value) {
|
|
1001
|
+
const clamped = Math.max(value, values.black);
|
|
1002
|
+
return clamped / 255;
|
|
1003
|
+
},
|
|
1004
|
+
fromNormalized(value) {
|
|
1005
|
+
const denormalized = value * 255;
|
|
1006
|
+
return Math.max(denormalized, values.black);
|
|
1007
|
+
}
|
|
1008
|
+
};
|
|
1009
|
+
const computeGray = (value) => {
|
|
1010
|
+
let result = 1;
|
|
1011
|
+
if (value > 0.5) {
|
|
1012
|
+
result = Math.max(2 * (1 - value), 0.01);
|
|
1013
|
+
} else if (value < 0.5) {
|
|
1014
|
+
result = ((1 - 2 * value) * (Math.sqrt(9.99) - 1) + 1) ** 2;
|
|
1015
|
+
}
|
|
1016
|
+
const formatOptions = {
|
|
1017
|
+
maximumFractionDigits: 2,
|
|
1018
|
+
minimumFractionDigits: 2
|
|
1019
|
+
};
|
|
1020
|
+
return new Intl.NumberFormat(navigator.language, formatOptions).format(
|
|
1021
|
+
result
|
|
1022
|
+
);
|
|
1023
|
+
};
|
|
1024
|
+
return html`
|
|
1025
|
+
<div style="width: 500px; margin: 12px 20px;">
|
|
1026
|
+
<sp-slider
|
|
1027
|
+
step="1"
|
|
1028
|
+
min="0"
|
|
1029
|
+
max="255"
|
|
1030
|
+
@input=${handleEvent2}
|
|
1031
|
+
@change=${handleEvent2}
|
|
1032
|
+
...=${spreadProps(args)}
|
|
1033
|
+
>
|
|
1034
|
+
Output Levels
|
|
1035
|
+
<sp-slider-handle
|
|
1036
|
+
slot="handle"
|
|
1037
|
+
name="black"
|
|
1038
|
+
label="Black"
|
|
1039
|
+
value=${values.black}
|
|
1040
|
+
.normalization=${blackNormalization}
|
|
1041
|
+
></sp-slider-handle>
|
|
1042
|
+
<sp-slider-handle
|
|
1043
|
+
slot="handle"
|
|
1044
|
+
name="gray"
|
|
1045
|
+
label="Gray"
|
|
1046
|
+
value="0.215"
|
|
1047
|
+
min="0"
|
|
1048
|
+
max="1"
|
|
1049
|
+
step="0.005"
|
|
1050
|
+
.normalization=${grayNormalization}
|
|
1051
|
+
.getAriaHandleText=${computeGray}
|
|
1052
|
+
></sp-slider-handle>
|
|
1053
|
+
<sp-slider-handle
|
|
1054
|
+
slot="handle"
|
|
1055
|
+
name="white"
|
|
1056
|
+
label="White"
|
|
1057
|
+
value=${values.white}
|
|
1058
|
+
.normalization=${whiteNormalization}
|
|
1059
|
+
></sp-slider-handle>
|
|
1060
|
+
</sp-slider>
|
|
1061
|
+
</div>
|
|
1062
|
+
`;
|
|
1063
|
+
};
|
|
1064
|
+
ThreeHandlesComplex.args = {
|
|
1065
|
+
variant: "range",
|
|
1066
|
+
tickStep: 10
|
|
1067
|
+
};
|
|
1068
|
+
export const focusTabDemo = (args = {}) => {
|
|
1069
|
+
const value = 50;
|
|
1070
|
+
const min = 0;
|
|
1071
|
+
const max = 100;
|
|
1072
|
+
const step = 1;
|
|
1073
|
+
return html`
|
|
1074
|
+
<div style="width: 500px; margin: 12px 20px 20px;">
|
|
1075
|
+
<sp-slider
|
|
1076
|
+
value="${value}"
|
|
1077
|
+
step="${step}"
|
|
1078
|
+
min="${min}"
|
|
1079
|
+
max="${max}"
|
|
1080
|
+
label="Opacity"
|
|
1081
|
+
id="opacity-slider-opacity"
|
|
1082
|
+
...=${spreadProps(args)}
|
|
1083
|
+
></sp-slider>
|
|
1084
|
+
</div>
|
|
1085
|
+
<div style="width: 500px; margin: 20px;">
|
|
1086
|
+
<sp-slider
|
|
1087
|
+
value="${value}"
|
|
1088
|
+
step="${step}"
|
|
1089
|
+
min="${min}"
|
|
1090
|
+
max="${max}"
|
|
1091
|
+
label="Lightness"
|
|
1092
|
+
id="opacity-slider-lightness"
|
|
1093
|
+
...=${spreadProps(args)}
|
|
1094
|
+
></sp-slider>
|
|
1095
|
+
</div>
|
|
1096
|
+
<div style="width: 500px; margin: 20px 20px 12px;">
|
|
1097
|
+
<sp-slider
|
|
1098
|
+
value="${value}"
|
|
1099
|
+
step="${step}"
|
|
1100
|
+
min="${min}"
|
|
1101
|
+
max="${max}"
|
|
1102
|
+
label="Saturation"
|
|
1103
|
+
id="opacity-slider-saturation"
|
|
1104
|
+
...=${spreadProps(args)}
|
|
1105
|
+
></sp-slider>
|
|
1106
|
+
</div>
|
|
1107
|
+
`;
|
|
1108
|
+
};
|
|
1109
|
+
//# sourceMappingURL=slider.stories.js.map
|