@spectrum-web-components/slider 0.14.0-devmode.0 → 0.14.0
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/package.json +7 -7
- package/sp-slider-handle.js +1 -2
- package/sp-slider-handle.js.map +1 -1
- package/sp-slider.js +1 -3
- package/sp-slider.js.map +1 -1
- package/src/HandleController.js +16 -421
- package/src/HandleController.js.map +1 -1
- package/src/Slider.js +23 -306
- package/src/Slider.js.map +1 -1
- package/src/SliderHandle.js +1 -183
- package/src/SliderHandle.js.map +1 -1
- package/src/index.js +1 -3
- package/src/index.js.map +1 -1
- package/src/slider.css.js +2 -4
- package/src/slider.css.js.map +1 -1
- package/src/spectrum-slider.css.js +2 -4
- package/src/spectrum-slider.css.js.map +1 -1
- package/stories/slider.stories.js +111 -408
- package/stories/slider.stories.js.map +1 -1
- package/sync/sp-slider.js +1 -2
- package/sync/sp-slider.js.map +1 -1
- package/test/benchmark/test-basic.js +1 -4
- package/test/benchmark/test-basic.js.map +1 -1
- package/test/slider-editable-sync.test.js +1 -136
- package/test/slider-editable-sync.test.js.map +1 -1
- package/test/slider-editable.test.js +1 -155
- package/test/slider-editable.test.js.map +1 -1
- package/test/slider-handle-upgrade.test.js +2 -11
- package/test/slider-handle-upgrade.test.js.map +1 -1
- package/test/slider.test-vrt.js +1 -3
- package/test/slider.test-vrt.js.map +1 -1
- package/test/slider.test.js +43 -772
- package/test/slider.test.js.map +1 -1
package/test/slider.test.js
CHANGED
|
@@ -1,32 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
import "@spectrum-web-components/slider/sp-slider-handle.js";
|
|
3
|
-
import { tick } from "../stories/slider.stories.js";
|
|
4
|
-
import {
|
|
5
|
-
elementUpdated,
|
|
6
|
-
expect,
|
|
7
|
-
fixture,
|
|
8
|
-
html,
|
|
9
|
-
nextFrame,
|
|
10
|
-
oneEvent,
|
|
11
|
-
waitUntil
|
|
12
|
-
} from "@open-wc/testing";
|
|
13
|
-
import { sendKeys } from "@web/test-runner-commands";
|
|
14
|
-
import { sendMouse } from "../../../test/plugins/browser.js";
|
|
15
|
-
import { stub } from "sinon";
|
|
16
|
-
import { testForLitDevWarnings } from "../../../test/testing-helpers.js";
|
|
17
|
-
describe("Slider", () => {
|
|
18
|
-
testForLitDevWarnings(async () => await fixture(html`
|
|
1
|
+
import"@spectrum-web-components/slider/sp-slider.js";import"@spectrum-web-components/slider/sp-slider-handle.js";import{tick as w}from"../stories/slider.stories.js";import{elementUpdated as l,expect as a,fixture as s,html as o,nextFrame as p,oneEvent as m,waitUntil as g}from"@open-wc/testing";import{sendKeys as h}from"@web/test-runner-commands";import{sendMouse as u}from"../../../test/plugins/browser.js";import{stub as v}from"sinon";import{testForLitDevWarnings as b}from"../../../test/testing-helpers.js";describe("Slider",()=>{b(async()=>await s(o`
|
|
19
2
|
<sp-slider label="Slider"></sp-slider>
|
|
20
|
-
`))
|
|
21
|
-
it("loads", async () => {
|
|
22
|
-
const el = await fixture(html`
|
|
3
|
+
`)),it("loads",async()=>{const e=await s(o`
|
|
23
4
|
<sp-slider label="Slider"></sp-slider>
|
|
24
|
-
`);
|
|
25
|
-
await elementUpdated(el);
|
|
26
|
-
await expect(el).to.be.accessible();
|
|
27
|
-
});
|
|
28
|
-
it('loads - [variant="tick"]', async () => {
|
|
29
|
-
const el = await fixture(html`
|
|
5
|
+
`);await l(e),await a(e).to.be.accessible()}),it('loads - [variant="tick"]',async()=>{const e=await s(o`
|
|
30
6
|
<sp-slider
|
|
31
7
|
label="Ticked Slider"
|
|
32
8
|
min="-100"
|
|
@@ -35,645 +11,80 @@ describe("Slider", () => {
|
|
|
35
11
|
tick-labels
|
|
36
12
|
variant="tick"
|
|
37
13
|
></sp-slider>
|
|
38
|
-
`);
|
|
39
|
-
await elementUpdated(el);
|
|
40
|
-
await expect(el).to.be.accessible();
|
|
41
|
-
});
|
|
42
|
-
it('loads - [variant="tick"] irregularly', async () => {
|
|
43
|
-
const el = await fixture(html`
|
|
14
|
+
`);await l(e),await a(e).to.be.accessible()}),it('loads - [variant="tick"] irregularly',async()=>{const e=await s(o`
|
|
44
15
|
<sp-slider label="Slider"></sp-slider>
|
|
45
|
-
`);
|
|
46
|
-
await elementUpdated(el);
|
|
47
|
-
await expect(el).to.be.accessible();
|
|
48
|
-
});
|
|
49
|
-
it("receives value from the outside", async () => {
|
|
50
|
-
const el = await fixture(html`
|
|
16
|
+
`);await l(e),await a(e).to.be.accessible()}),it("receives value from the outside",async()=>{const e=await s(o`
|
|
51
17
|
<sp-slider max="20"></sp-slider>
|
|
52
|
-
`);
|
|
53
|
-
await elementUpdated(el);
|
|
54
|
-
expect(el.value).to.equal(10);
|
|
55
|
-
el.value = 10;
|
|
56
|
-
await elementUpdated(el);
|
|
57
|
-
expect(el.value).to.equal(10);
|
|
58
|
-
el.value = 50;
|
|
59
|
-
await elementUpdated(el);
|
|
60
|
-
expect(el.value).to.equal(20);
|
|
61
|
-
});
|
|
62
|
-
it("accepts keyboard events", async () => {
|
|
63
|
-
const el = await fixture(tick({
|
|
64
|
-
variant: "tick",
|
|
65
|
-
tickStep: 5
|
|
66
|
-
}));
|
|
67
|
-
await elementUpdated(el);
|
|
68
|
-
expect(el.value).to.equal(10);
|
|
69
|
-
expect(el.highlight).to.be.false;
|
|
70
|
-
el.focus();
|
|
71
|
-
await sendKeys({
|
|
72
|
-
press: "ArrowDown"
|
|
73
|
-
});
|
|
74
|
-
await elementUpdated(el);
|
|
75
|
-
expect(el.value).to.equal(9);
|
|
76
|
-
expect(el.highlight).to.be.true;
|
|
77
|
-
await sendKeys({
|
|
78
|
-
press: "ArrowUp"
|
|
79
|
-
});
|
|
80
|
-
await elementUpdated(el);
|
|
81
|
-
expect(el.value).to.equal(10);
|
|
82
|
-
expect(el.highlight).to.be.true;
|
|
83
|
-
});
|
|
84
|
-
it("accepts pointer events", async () => {
|
|
85
|
-
let pointerId = -1;
|
|
86
|
-
const el = await fixture(html`
|
|
18
|
+
`);await l(e),a(e.value).to.equal(10),e.value=10,await l(e),a(e.value).to.equal(10),e.value=50,await l(e),a(e.value).to.equal(20)}),it("accepts keyboard events",async()=>{const e=await s(w({variant:"tick",tickStep:5}));await l(e),a(e.value).to.equal(10),a(e.highlight).to.be.false,e.focus(),await h({press:"ArrowDown"}),await l(e),a(e.value).to.equal(9),a(e.highlight).to.be.true,await h({press:"ArrowUp"}),await l(e),a(e.value).to.equal(10),a(e.highlight).to.be.true}),it("accepts pointer events",async()=>{let e=-1;const t=await s(o`
|
|
87
19
|
<sp-slider></sp-slider>
|
|
88
|
-
`);
|
|
89
|
-
await elementUpdated(el);
|
|
90
|
-
expect(el.dragging).to.be.false;
|
|
91
|
-
expect(el.highlight).to.be.false;
|
|
92
|
-
expect(pointerId).to.equal(-1);
|
|
93
|
-
const handle = el.shadowRoot.querySelector(".handle");
|
|
94
|
-
el.track.setPointerCapture = (id) => pointerId = id;
|
|
95
|
-
el.track.releasePointerCapture = (id) => pointerId = id;
|
|
96
|
-
handle.dispatchEvent(new PointerEvent("pointerdown", {
|
|
97
|
-
button: 1,
|
|
98
|
-
pointerId: 1,
|
|
99
|
-
cancelable: true,
|
|
100
|
-
bubbles: true,
|
|
101
|
-
composed: true
|
|
102
|
-
}));
|
|
103
|
-
await elementUpdated(el);
|
|
104
|
-
expect(el.dragging).to.be.false;
|
|
105
|
-
expect(pointerId, "1").to.equal(-1);
|
|
106
|
-
handle.dispatchEvent(new PointerEvent("pointerdown", {
|
|
107
|
-
button: 0,
|
|
108
|
-
pointerId: 1,
|
|
109
|
-
cancelable: true,
|
|
110
|
-
bubbles: true,
|
|
111
|
-
composed: true
|
|
112
|
-
}));
|
|
113
|
-
await elementUpdated(el);
|
|
114
|
-
expect(el.dragging, "it is dragging 1").to.be.true;
|
|
115
|
-
expect(pointerId, "2").to.equal(1);
|
|
116
|
-
handle.dispatchEvent(new PointerEvent("pointerup", {
|
|
117
|
-
pointerId: 2,
|
|
118
|
-
cancelable: true,
|
|
119
|
-
bubbles: true,
|
|
120
|
-
composed: true
|
|
121
|
-
}));
|
|
122
|
-
await elementUpdated(el);
|
|
123
|
-
expect(el.dragging).to.be.false;
|
|
124
|
-
expect(el.highlight).to.be.false;
|
|
125
|
-
expect(pointerId, "3").to.equal(2);
|
|
126
|
-
handle.dispatchEvent(new PointerEvent("pointerdown", {
|
|
127
|
-
button: 0,
|
|
128
|
-
pointerId: 1,
|
|
129
|
-
cancelable: true,
|
|
130
|
-
bubbles: true,
|
|
131
|
-
composed: true
|
|
132
|
-
}));
|
|
133
|
-
await elementUpdated(el);
|
|
134
|
-
expect(el.dragging, "it is dragging 2").to.be.true;
|
|
135
|
-
expect(pointerId, "4").to.equal(1);
|
|
136
|
-
handle.dispatchEvent(new PointerEvent("pointercancel", {
|
|
137
|
-
pointerId: 3,
|
|
138
|
-
cancelable: true,
|
|
139
|
-
bubbles: true,
|
|
140
|
-
composed: true
|
|
141
|
-
}));
|
|
142
|
-
await elementUpdated(el);
|
|
143
|
-
expect(el.dragging).to.be.false;
|
|
144
|
-
expect(pointerId, "5").to.equal(3);
|
|
145
|
-
});
|
|
146
|
-
it("will `trackPointerDown` on `#controls`", async () => {
|
|
147
|
-
let pointerId = -1;
|
|
148
|
-
const el = await fixture(html`
|
|
20
|
+
`);await l(t),a(t.dragging).to.be.false,a(t.highlight).to.be.false,a(e).to.equal(-1);const i=t.shadowRoot.querySelector(".handle");t.track.setPointerCapture=n=>e=n,t.track.releasePointerCapture=n=>e=n,i.dispatchEvent(new PointerEvent("pointerdown",{button:1,pointerId:1,cancelable:!0,bubbles:!0,composed:!0})),await l(t),a(t.dragging).to.be.false,a(e,"1").to.equal(-1),i.dispatchEvent(new PointerEvent("pointerdown",{button:0,pointerId:1,cancelable:!0,bubbles:!0,composed:!0})),await l(t),a(t.dragging,"it is dragging 1").to.be.true,a(e,"2").to.equal(1),i.dispatchEvent(new PointerEvent("pointerup",{pointerId:2,cancelable:!0,bubbles:!0,composed:!0})),await l(t),a(t.dragging).to.be.false,a(t.highlight).to.be.false,a(e,"3").to.equal(2),i.dispatchEvent(new PointerEvent("pointerdown",{button:0,pointerId:1,cancelable:!0,bubbles:!0,composed:!0})),await l(t),a(t.dragging,"it is dragging 2").to.be.true,a(e,"4").to.equal(1),i.dispatchEvent(new PointerEvent("pointercancel",{pointerId:3,cancelable:!0,bubbles:!0,composed:!0})),await l(t),a(t.dragging).to.be.false,a(e,"5").to.equal(3)}),it("will `trackPointerDown` on `#controls`",async()=>{let e=-1;const t=await s(o`
|
|
149
21
|
<sp-slider style="width: 500px" max="70"></sp-slider>
|
|
150
|
-
`);
|
|
151
|
-
await elementUpdated(el);
|
|
152
|
-
expect(el.value).to.equal(10);
|
|
153
|
-
const controls = el.shadowRoot.querySelector("#controls");
|
|
154
|
-
const handle = el.shadowRoot.querySelector(".handle");
|
|
155
|
-
el.track.setPointerCapture = (id) => pointerId = id;
|
|
156
|
-
el.track.releasePointerCapture = (id) => pointerId = id;
|
|
157
|
-
controls.dispatchEvent(new PointerEvent("pointerdown", {
|
|
158
|
-
button: 1,
|
|
159
|
-
clientX: 9,
|
|
160
|
-
pointerId: 4,
|
|
161
|
-
bubbles: true,
|
|
162
|
-
cancelable: true
|
|
163
|
-
}));
|
|
164
|
-
await elementUpdated(el);
|
|
165
|
-
expect(pointerId).to.equal(-1);
|
|
166
|
-
expect(el.value).to.equal(10);
|
|
167
|
-
expect(el.dragging, "handle is not yet being dragged").to.be.false;
|
|
168
|
-
controls.dispatchEvent(new PointerEvent("pointerdown", {
|
|
169
|
-
button: 0,
|
|
170
|
-
clientX: 9,
|
|
171
|
-
pointerId: 4,
|
|
172
|
-
bubbles: true,
|
|
173
|
-
cancelable: true
|
|
174
|
-
}));
|
|
175
|
-
await elementUpdated(el);
|
|
176
|
-
expect(pointerId).to.equal(4);
|
|
177
|
-
expect(el.value).to.equal(0);
|
|
178
|
-
expect(el.dragging, "handle is being dragged").to.be.true;
|
|
179
|
-
handle.dispatchEvent(new PointerEvent("pointermove", {
|
|
180
|
-
button: 0,
|
|
181
|
-
clientX: 508,
|
|
182
|
-
pointerId: 4,
|
|
183
|
-
bubbles: true,
|
|
184
|
-
cancelable: true
|
|
185
|
-
}));
|
|
186
|
-
await elementUpdated(el);
|
|
187
|
-
expect(el.dragging, "handle is still being dragged").to.be.true;
|
|
188
|
-
expect(pointerId).to.equal(4);
|
|
189
|
-
expect(el.value).to.equal(70);
|
|
190
|
-
handle.dispatchEvent(new PointerEvent("pointerup", {
|
|
191
|
-
button: 0,
|
|
192
|
-
clientX: 9,
|
|
193
|
-
pointerId: 4,
|
|
194
|
-
bubbles: true,
|
|
195
|
-
cancelable: true
|
|
196
|
-
}));
|
|
197
|
-
await elementUpdated(el);
|
|
198
|
-
expect(pointerId).to.equal(4);
|
|
199
|
-
expect(el.value).to.equal(70);
|
|
200
|
-
expect(el.dragging, "handle is no longer being dragged").to.be.false;
|
|
201
|
-
});
|
|
202
|
-
it("can be disabled", async () => {
|
|
203
|
-
let pointerId = -1;
|
|
204
|
-
const el = await fixture(html`
|
|
22
|
+
`);await l(t),a(t.value).to.equal(10);const i=t.shadowRoot.querySelector("#controls"),n=t.shadowRoot.querySelector(".handle");t.track.setPointerCapture=r=>e=r,t.track.releasePointerCapture=r=>e=r,i.dispatchEvent(new PointerEvent("pointerdown",{button:1,clientX:9,pointerId:4,bubbles:!0,cancelable:!0})),await l(t),a(e).to.equal(-1),a(t.value).to.equal(10),a(t.dragging,"handle is not yet being dragged").to.be.false,i.dispatchEvent(new PointerEvent("pointerdown",{button:0,clientX:9,pointerId:4,bubbles:!0,cancelable:!0})),await l(t),a(e).to.equal(4),a(t.value).to.equal(0),a(t.dragging,"handle is being dragged").to.be.true,n.dispatchEvent(new PointerEvent("pointermove",{button:0,clientX:508,pointerId:4,bubbles:!0,cancelable:!0})),await l(t),a(t.dragging,"handle is still being dragged").to.be.true,a(e).to.equal(4),a(t.value).to.equal(70),n.dispatchEvent(new PointerEvent("pointerup",{button:0,clientX:9,pointerId:4,bubbles:!0,cancelable:!0})),await l(t),a(e).to.equal(4),a(t.value).to.equal(70),a(t.dragging,"handle is no longer being dragged").to.be.false}),it("can be disabled",async()=>{let e=-1;const t=await s(o`
|
|
205
23
|
<sp-slider disabled></sp-slider>
|
|
206
|
-
`);
|
|
207
|
-
await elementUpdated(el);
|
|
208
|
-
expect(el.dragging).to.be.false;
|
|
209
|
-
expect(pointerId).to.equal(-1);
|
|
210
|
-
expect(el.value).to.equal(10);
|
|
211
|
-
const handle = el.shadowRoot.querySelector(".handle");
|
|
212
|
-
handle.setPointerCapture = (id) => pointerId = id;
|
|
213
|
-
handle.dispatchEvent(new PointerEvent("pointerdown", {
|
|
214
|
-
button: 0,
|
|
215
|
-
pointerId: 1,
|
|
216
|
-
cancelable: true
|
|
217
|
-
}));
|
|
218
|
-
await elementUpdated(el);
|
|
219
|
-
expect(el.dragging).to.be.false;
|
|
220
|
-
expect(pointerId).to.equal(-1);
|
|
221
|
-
const controls = el.shadowRoot.querySelector("#controls");
|
|
222
|
-
controls.dispatchEvent(new PointerEvent("pointerdown", {
|
|
223
|
-
button: 0,
|
|
224
|
-
clientX: 50,
|
|
225
|
-
pointerId: 1,
|
|
226
|
-
cancelable: true
|
|
227
|
-
}));
|
|
228
|
-
await elementUpdated(el);
|
|
229
|
-
expect(pointerId).to.equal(-1);
|
|
230
|
-
expect(el.value).to.equal(10);
|
|
231
|
-
});
|
|
232
|
-
it("accepts pointermove events", async () => {
|
|
233
|
-
const el = await fixture(html`
|
|
24
|
+
`);await l(t),a(t.dragging).to.be.false,a(e).to.equal(-1),a(t.value).to.equal(10);const i=t.shadowRoot.querySelector(".handle");i.setPointerCapture=r=>e=r,i.dispatchEvent(new PointerEvent("pointerdown",{button:0,pointerId:1,cancelable:!0})),await l(t),a(t.dragging).to.be.false,a(e).to.equal(-1),t.shadowRoot.querySelector("#controls").dispatchEvent(new PointerEvent("pointerdown",{button:0,clientX:50,pointerId:1,cancelable:!0})),await l(t),a(e).to.equal(-1),a(t.value).to.equal(10)}),it("accepts pointermove events",async()=>{const e=await s(o`
|
|
234
25
|
<sp-slider></sp-slider>
|
|
235
|
-
`);
|
|
236
|
-
await elementUpdated(el);
|
|
237
|
-
expect(el.value).to.equal(10);
|
|
238
|
-
const handle = el.shadowRoot.querySelector(".handle");
|
|
239
|
-
await sendMouse({
|
|
240
|
-
steps: [
|
|
241
|
-
{
|
|
242
|
-
type: "move",
|
|
243
|
-
position: [9, 30]
|
|
244
|
-
},
|
|
245
|
-
{
|
|
246
|
-
type: "down"
|
|
247
|
-
}
|
|
248
|
-
]
|
|
249
|
-
});
|
|
250
|
-
await elementUpdated(el);
|
|
251
|
-
expect(el.dragging, "is dragging").to.be.true;
|
|
252
|
-
expect(el.highlight, "not highlighted").to.be.false;
|
|
253
|
-
handle.dispatchEvent(new PointerEvent("pointermove", {
|
|
254
|
-
clientX: 0,
|
|
255
|
-
cancelable: true,
|
|
256
|
-
bubbles: true,
|
|
257
|
-
composed: true
|
|
258
|
-
}));
|
|
259
|
-
await elementUpdated(el);
|
|
260
|
-
expect(el.value).to.equal(0);
|
|
261
|
-
});
|
|
262
|
-
it("manages RTL when min != 0", async () => {
|
|
263
|
-
const el = await fixture(html`
|
|
26
|
+
`);await l(e),a(e.value).to.equal(10);const t=e.shadowRoot.querySelector(".handle");await u({steps:[{type:"move",position:[9,30]},{type:"down"}]}),await l(e),a(e.dragging,"is dragging").to.be.true,a(e.highlight,"not highlighted").to.be.false,t.dispatchEvent(new PointerEvent("pointermove",{clientX:0,cancelable:!0,bubbles:!0,composed:!0})),await l(e),a(e.value).to.equal(0)}),it("manages RTL when min != 0",async()=>{const e=await s(o`
|
|
264
27
|
<sp-slider min="1" max="11" dir="rtl"></sp-slider>
|
|
265
|
-
`);
|
|
266
|
-
await elementUpdated(el);
|
|
267
|
-
expect(el.value).to.equal(10);
|
|
268
|
-
const handle = el.shadowRoot.querySelector(".handle");
|
|
269
|
-
await sendMouse({
|
|
270
|
-
steps: [
|
|
271
|
-
{
|
|
272
|
-
type: "move",
|
|
273
|
-
position: [9, 30]
|
|
274
|
-
},
|
|
275
|
-
{
|
|
276
|
-
type: "down"
|
|
277
|
-
}
|
|
278
|
-
]
|
|
279
|
-
});
|
|
280
|
-
await elementUpdated(el);
|
|
281
|
-
expect(el.dragging, "is dragging").to.be.true;
|
|
282
|
-
expect(el.highlight, "not highlighted").to.be.false;
|
|
283
|
-
handle.dispatchEvent(new PointerEvent("pointermove", {
|
|
284
|
-
clientX: 0,
|
|
285
|
-
cancelable: true,
|
|
286
|
-
bubbles: true,
|
|
287
|
-
composed: true
|
|
288
|
-
}));
|
|
289
|
-
await elementUpdated(el);
|
|
290
|
-
expect(el.value).to.equal(11);
|
|
291
|
-
});
|
|
292
|
-
it("goes [disabled] while dragging", async () => {
|
|
293
|
-
const el = await fixture(html`
|
|
28
|
+
`);await l(e),a(e.value).to.equal(10);const t=e.shadowRoot.querySelector(".handle");await u({steps:[{type:"move",position:[9,30]},{type:"down"}]}),await l(e),a(e.dragging,"is dragging").to.be.true,a(e.highlight,"not highlighted").to.be.false,t.dispatchEvent(new PointerEvent("pointermove",{clientX:0,cancelable:!0,bubbles:!0,composed:!0})),await l(e),a(e.value).to.equal(11)}),it("goes [disabled] while dragging",async()=>{const e=await s(o`
|
|
294
29
|
<sp-slider></sp-slider>
|
|
295
|
-
`);
|
|
296
|
-
await elementUpdated(el);
|
|
297
|
-
expect(el.value).to.equal(10);
|
|
298
|
-
const handle = el.shadowRoot.querySelector(".handle");
|
|
299
|
-
const handleBoundingRect = handle.getBoundingClientRect();
|
|
300
|
-
await sendMouse({
|
|
301
|
-
steps: [
|
|
302
|
-
{
|
|
303
|
-
type: "move",
|
|
304
|
-
position: [
|
|
305
|
-
handleBoundingRect.x + handleBoundingRect.width / 2,
|
|
306
|
-
handleBoundingRect.y + handleBoundingRect.height / 2
|
|
307
|
-
]
|
|
308
|
-
},
|
|
309
|
-
{
|
|
310
|
-
type: "down"
|
|
311
|
-
}
|
|
312
|
-
]
|
|
313
|
-
});
|
|
314
|
-
await elementUpdated(el);
|
|
315
|
-
expect(el.dragging, "is dragging").to.be.true;
|
|
316
|
-
expect(el.highlight, "not highlighted").to.be.false;
|
|
317
|
-
expect(el.value).to.equal(10);
|
|
318
|
-
const inputEvent = oneEvent(el, "input");
|
|
319
|
-
await sendMouse({
|
|
320
|
-
steps: [
|
|
321
|
-
{
|
|
322
|
-
type: "move",
|
|
323
|
-
position: [
|
|
324
|
-
handleBoundingRect.x + handleBoundingRect.width / 2 + 100,
|
|
325
|
-
handleBoundingRect.y + handleBoundingRect.height / 2
|
|
326
|
-
]
|
|
327
|
-
}
|
|
328
|
-
]
|
|
329
|
-
});
|
|
330
|
-
await inputEvent;
|
|
331
|
-
expect(el.value).to.equal(13);
|
|
332
|
-
el.disabled = true;
|
|
333
|
-
await elementUpdated(el);
|
|
334
|
-
expect(el.dragging, "is dragging").to.be.false;
|
|
335
|
-
expect(el.highlight, "not highlighted").to.be.false;
|
|
336
|
-
await sendMouse({
|
|
337
|
-
steps: [
|
|
338
|
-
{
|
|
339
|
-
type: "move",
|
|
340
|
-
position: [
|
|
341
|
-
0,
|
|
342
|
-
handleBoundingRect.top + handleBoundingRect.height / 2
|
|
343
|
-
]
|
|
344
|
-
}
|
|
345
|
-
]
|
|
346
|
-
});
|
|
347
|
-
expect(el.value).to.equal(13);
|
|
348
|
-
});
|
|
349
|
-
it("accepts pointermove events in separate interactions", async () => {
|
|
350
|
-
let pointerId = -1;
|
|
351
|
-
const el = await fixture(html`
|
|
30
|
+
`);await l(e),a(e.value).to.equal(10);const i=e.shadowRoot.querySelector(".handle").getBoundingClientRect();await u({steps:[{type:"move",position:[i.x+i.width/2,i.y+i.height/2]},{type:"down"}]}),await l(e),a(e.dragging,"is dragging").to.be.true,a(e.highlight,"not highlighted").to.be.false,a(e.value).to.equal(10);const n=m(e,"input");await u({steps:[{type:"move",position:[i.x+i.width/2+100,i.y+i.height/2]}]}),await n,a(e.value).to.equal(13),e.disabled=!0,await l(e),a(e.dragging,"is dragging").to.be.false,a(e.highlight,"not highlighted").to.be.false,await u({steps:[{type:"move",position:[0,i.top+i.height/2]}]}),a(e.value).to.equal(13)}),it("accepts pointermove events in separate interactions",async()=>{let e=-1;const t=await s(o`
|
|
352
31
|
<sp-slider style="width: 100px"></sp-slider>
|
|
353
|
-
`);
|
|
354
|
-
await elementUpdated(el);
|
|
355
|
-
expect(el.value, "initial").to.equal(10);
|
|
356
|
-
const handle = el.shadowRoot.querySelector(".handle");
|
|
357
|
-
el.track.setPointerCapture = (id) => pointerId = id;
|
|
358
|
-
el.track.releasePointerCapture = (id) => pointerId = id;
|
|
359
|
-
handle.dispatchEvent(new PointerEvent("pointerdown", {
|
|
360
|
-
clientX: 58,
|
|
361
|
-
cancelable: true,
|
|
362
|
-
button: 0,
|
|
363
|
-
pointerId: 100,
|
|
364
|
-
composed: true,
|
|
365
|
-
bubbles: true
|
|
366
|
-
}));
|
|
367
|
-
await elementUpdated(el);
|
|
368
|
-
handle.dispatchEvent(new PointerEvent("pointermove", {
|
|
369
|
-
clientX: 58,
|
|
370
|
-
cancelable: true,
|
|
371
|
-
composed: true,
|
|
372
|
-
bubbles: true
|
|
373
|
-
}));
|
|
374
|
-
await elementUpdated(el);
|
|
375
|
-
expect(el.value, "first pointerdown").to.equal(50);
|
|
376
|
-
expect(el.dragging, "is dragging").to.be.true;
|
|
377
|
-
expect(el.classList.contains("handle-highlight"), "not highlighted").to.be.false;
|
|
378
|
-
expect(pointerId).to.equal(100);
|
|
379
|
-
handle.dispatchEvent(new PointerEvent("pointermove", {
|
|
380
|
-
clientX: 0,
|
|
381
|
-
cancelable: true,
|
|
382
|
-
composed: true,
|
|
383
|
-
bubbles: true
|
|
384
|
-
}));
|
|
385
|
-
await elementUpdated(el);
|
|
386
|
-
expect(el.value, "first pointermove").to.equal(0);
|
|
387
|
-
handle.dispatchEvent(new PointerEvent("pointerup", {
|
|
388
|
-
clientX: 0,
|
|
389
|
-
cancelable: true,
|
|
390
|
-
composed: true,
|
|
391
|
-
bubbles: true
|
|
392
|
-
}));
|
|
393
|
-
await elementUpdated(el);
|
|
394
|
-
expect(el.value, "first pointerup").to.equal(0);
|
|
395
|
-
expect(el.dragging, "is dragging").to.be.false;
|
|
396
|
-
handle.dispatchEvent(new PointerEvent("pointerdown", {
|
|
397
|
-
clientX: 58,
|
|
398
|
-
cancelable: true,
|
|
399
|
-
button: 0,
|
|
400
|
-
composed: true,
|
|
401
|
-
bubbles: true
|
|
402
|
-
}));
|
|
403
|
-
await elementUpdated(el);
|
|
404
|
-
handle.dispatchEvent(new PointerEvent("pointermove", {
|
|
405
|
-
clientX: 58,
|
|
406
|
-
cancelable: true,
|
|
407
|
-
composed: true,
|
|
408
|
-
bubbles: true
|
|
409
|
-
}));
|
|
410
|
-
await elementUpdated(el);
|
|
411
|
-
expect(el.value, "second pointerdown").to.equal(50);
|
|
412
|
-
expect(el.dragging, "is dragging").to.be.true;
|
|
413
|
-
expect(el.classList.contains("handle-highlight"), "not highlighted").to.be.false;
|
|
414
|
-
handle.dispatchEvent(new PointerEvent("pointermove", {
|
|
415
|
-
clientX: 0,
|
|
416
|
-
cancelable: true,
|
|
417
|
-
composed: true,
|
|
418
|
-
bubbles: true
|
|
419
|
-
}));
|
|
420
|
-
await elementUpdated(el);
|
|
421
|
-
expect(el.value, "second pointermove").to.equal(0);
|
|
422
|
-
handle.dispatchEvent(new PointerEvent("pointerup", {
|
|
423
|
-
clientX: 0,
|
|
424
|
-
cancelable: true,
|
|
425
|
-
composed: true,
|
|
426
|
-
bubbles: true
|
|
427
|
-
}));
|
|
428
|
-
await elementUpdated(el);
|
|
429
|
-
expect(el.value, "second pointerup").to.equal(0);
|
|
430
|
-
expect(el.dragging, "is dragging").to.be.false;
|
|
431
|
-
});
|
|
432
|
-
it("accepts pointermove events - [step=0]", async () => {
|
|
433
|
-
const el = await fixture(html`
|
|
32
|
+
`);await l(t),a(t.value,"initial").to.equal(10);const i=t.shadowRoot.querySelector(".handle");t.track.setPointerCapture=n=>e=n,t.track.releasePointerCapture=n=>e=n,i.dispatchEvent(new PointerEvent("pointerdown",{clientX:58,cancelable:!0,button:0,pointerId:100,composed:!0,bubbles:!0})),await l(t),i.dispatchEvent(new PointerEvent("pointermove",{clientX:58,cancelable:!0,composed:!0,bubbles:!0})),await l(t),a(t.value,"first pointerdown").to.equal(50),a(t.dragging,"is dragging").to.be.true,a(t.classList.contains("handle-highlight"),"not highlighted").to.be.false,a(e).to.equal(100),i.dispatchEvent(new PointerEvent("pointermove",{clientX:0,cancelable:!0,composed:!0,bubbles:!0})),await l(t),a(t.value,"first pointermove").to.equal(0),i.dispatchEvent(new PointerEvent("pointerup",{clientX:0,cancelable:!0,composed:!0,bubbles:!0})),await l(t),a(t.value,"first pointerup").to.equal(0),a(t.dragging,"is dragging").to.be.false,i.dispatchEvent(new PointerEvent("pointerdown",{clientX:58,cancelable:!0,button:0,composed:!0,bubbles:!0})),await l(t),i.dispatchEvent(new PointerEvent("pointermove",{clientX:58,cancelable:!0,composed:!0,bubbles:!0})),await l(t),a(t.value,"second pointerdown").to.equal(50),a(t.dragging,"is dragging").to.be.true,a(t.classList.contains("handle-highlight"),"not highlighted").to.be.false,i.dispatchEvent(new PointerEvent("pointermove",{clientX:0,cancelable:!0,composed:!0,bubbles:!0})),await l(t),a(t.value,"second pointermove").to.equal(0),i.dispatchEvent(new PointerEvent("pointerup",{clientX:0,cancelable:!0,composed:!0,bubbles:!0})),await l(t),a(t.value,"second pointerup").to.equal(0),a(t.dragging,"is dragging").to.be.false}),it("accepts pointermove events - [step=0]",async()=>{const e=await s(o`
|
|
434
33
|
<sp-slider step="0" max="20" style="width: 500px; float: left;">
|
|
435
34
|
Step = 0
|
|
436
35
|
</sp-slider>
|
|
437
|
-
`);
|
|
438
|
-
await elementUpdated(el);
|
|
439
|
-
await nextFrame();
|
|
440
|
-
await nextFrame();
|
|
441
|
-
expect(el.value).to.equal(10);
|
|
442
|
-
const handle = el.shadowRoot.querySelector(".handle");
|
|
443
|
-
const handleBoundingRect = handle.getBoundingClientRect();
|
|
444
|
-
const position = [
|
|
445
|
-
handleBoundingRect.x + handleBoundingRect.width / 2,
|
|
446
|
-
handleBoundingRect.y + handleBoundingRect.height / 2
|
|
447
|
-
];
|
|
448
|
-
await sendMouse({
|
|
449
|
-
steps: [
|
|
450
|
-
{
|
|
451
|
-
type: "move",
|
|
452
|
-
position
|
|
453
|
-
},
|
|
454
|
-
{
|
|
455
|
-
type: "down"
|
|
456
|
-
}
|
|
457
|
-
]
|
|
458
|
-
});
|
|
459
|
-
await nextFrame();
|
|
460
|
-
expect(el.highlight, "with no highlight").to.be.false;
|
|
461
|
-
expect(el.dragging, "dragging").to.be.true;
|
|
462
|
-
let inputEvent = oneEvent(el, "input");
|
|
463
|
-
await sendMouse({
|
|
464
|
-
steps: [
|
|
465
|
-
{
|
|
466
|
-
type: "move",
|
|
467
|
-
position: [
|
|
468
|
-
200,
|
|
469
|
-
handleBoundingRect.y + handleBoundingRect.height + 100
|
|
470
|
-
]
|
|
471
|
-
}
|
|
472
|
-
]
|
|
473
|
-
});
|
|
474
|
-
await inputEvent;
|
|
475
|
-
expect(el.value).to.equal(8);
|
|
476
|
-
inputEvent = oneEvent(el, "input");
|
|
477
|
-
await sendMouse({
|
|
478
|
-
steps: [
|
|
479
|
-
{
|
|
480
|
-
type: "move",
|
|
481
|
-
position: [125, position[1]]
|
|
482
|
-
}
|
|
483
|
-
]
|
|
484
|
-
});
|
|
485
|
-
await inputEvent;
|
|
486
|
-
expect(el.value).to.equal(5);
|
|
487
|
-
});
|
|
488
|
-
it("will not pointermove unless `pointerdown`", async () => {
|
|
489
|
-
const el = await fixture(html`
|
|
36
|
+
`);await l(e),await p(),await p(),a(e.value).to.equal(10);const i=e.shadowRoot.querySelector(".handle").getBoundingClientRect(),n=[i.x+i.width/2,i.y+i.height/2];await u({steps:[{type:"move",position:n},{type:"down"}]}),await p(),a(e.highlight,"with no highlight").to.be.false,a(e.dragging,"dragging").to.be.true;let r=m(e,"input");await u({steps:[{type:"move",position:[200,i.y+i.height+100]}]}),await r,a(e.value).to.equal(8),r=m(e,"input"),await u({steps:[{type:"move",position:[125,n[1]]}]}),await r,a(e.value).to.equal(5)}),it("will not pointermove unless `pointerdown`",async()=>{const e=await s(o`
|
|
490
37
|
<sp-slider></sp-slider>
|
|
491
|
-
`);
|
|
492
|
-
await elementUpdated(el);
|
|
493
|
-
expect(el.value).to.equal(10);
|
|
494
|
-
expect(el.dragging).to.be.false;
|
|
495
|
-
const handle = el.shadowRoot.querySelector(".handle");
|
|
496
|
-
handle.dispatchEvent(new PointerEvent("pointermove", {
|
|
497
|
-
clientX: 0,
|
|
498
|
-
cancelable: true
|
|
499
|
-
}));
|
|
500
|
-
await nextFrame();
|
|
501
|
-
expect(el.value).to.equal(10);
|
|
502
|
-
});
|
|
503
|
-
it("responds to input events on the <input/> element", async () => {
|
|
504
|
-
const el = await fixture(html`
|
|
38
|
+
`);await l(e),a(e.value).to.equal(10),a(e.dragging).to.be.false,e.shadowRoot.querySelector(".handle").dispatchEvent(new PointerEvent("pointermove",{clientX:0,cancelable:!0})),await p(),a(e.value).to.equal(10)}),it("responds to input events on the <input/> element",async()=>{const e=await s(o`
|
|
505
39
|
<sp-slider></sp-slider>
|
|
506
|
-
`);
|
|
507
|
-
await elementUpdated(el);
|
|
508
|
-
expect(el.value).to.equal(10);
|
|
509
|
-
const input = el.shadowRoot.querySelector(".input");
|
|
510
|
-
input.value = "0";
|
|
511
|
-
input.dispatchEvent(new Event("change"));
|
|
512
|
-
expect(el.value).to.equal(0);
|
|
513
|
-
});
|
|
514
|
-
it("accepts variants", async () => {
|
|
515
|
-
const el = await fixture(html`
|
|
40
|
+
`);await l(e),a(e.value).to.equal(10);const t=e.shadowRoot.querySelector(".input");t.value="0",t.dispatchEvent(new Event("change")),a(e.value).to.equal(0)}),it("accepts variants",async()=>{const e=await s(o`
|
|
516
41
|
<sp-slider variant="tick"></sp-slider>
|
|
517
|
-
`);
|
|
518
|
-
await elementUpdated(el);
|
|
519
|
-
expect(el.variant).to.equal("tick");
|
|
520
|
-
expect(el.getAttribute("variant")).to.equal("tick");
|
|
521
|
-
el.variant = "ramp";
|
|
522
|
-
await elementUpdated(el);
|
|
523
|
-
expect(el.variant).to.equal("ramp");
|
|
524
|
-
expect(el.getAttribute("variant")).to.equal("ramp");
|
|
525
|
-
el.setAttribute("variant", "filled");
|
|
526
|
-
await elementUpdated(el);
|
|
527
|
-
expect(el.variant).to.equal("filled");
|
|
528
|
-
expect(el.getAttribute("variant")).to.equal("filled");
|
|
529
|
-
el.removeAttribute("variant");
|
|
530
|
-
await elementUpdated(el);
|
|
531
|
-
expect(el.variant).to.equal("");
|
|
532
|
-
expect(el.hasAttribute("variant")).to.be.false;
|
|
533
|
-
});
|
|
534
|
-
it("validates variants", async () => {
|
|
535
|
-
const el = await fixture(html`
|
|
42
|
+
`);await l(e),a(e.variant).to.equal("tick"),a(e.getAttribute("variant")).to.equal("tick"),e.variant="ramp",await l(e),a(e.variant).to.equal("ramp"),a(e.getAttribute("variant")).to.equal("ramp"),e.setAttribute("variant","filled"),await l(e),a(e.variant).to.equal("filled"),a(e.getAttribute("variant")).to.equal("filled"),e.removeAttribute("variant"),await l(e),a(e.variant).to.equal(""),a(e.hasAttribute("variant")).to.be.false}),it("validates variants",async()=>{const e=await s(o`
|
|
536
43
|
<sp-slider variant="other"></sp-slider>
|
|
537
|
-
`);
|
|
538
|
-
await elementUpdated(el);
|
|
539
|
-
expect(el.variant).to.equal("");
|
|
540
|
-
expect(el.hasAttribute("variant")).to.be.false;
|
|
541
|
-
el.variant = "tick";
|
|
542
|
-
await elementUpdated(el);
|
|
543
|
-
expect(el.variant).to.equal("tick");
|
|
544
|
-
expect(el.getAttribute("variant")).to.equal("tick");
|
|
545
|
-
el.variant = "tick";
|
|
546
|
-
await elementUpdated(el);
|
|
547
|
-
expect(el.variant).to.equal("tick");
|
|
548
|
-
expect(el.getAttribute("variant")).to.equal("tick");
|
|
549
|
-
});
|
|
550
|
-
it("has a `focusElement`", async () => {
|
|
551
|
-
const el = await fixture(html`
|
|
44
|
+
`);await l(e),a(e.variant).to.equal(""),a(e.hasAttribute("variant")).to.be.false,e.variant="tick",await l(e),a(e.variant).to.equal("tick"),a(e.getAttribute("variant")).to.equal("tick"),e.variant="tick",await l(e),a(e.variant).to.equal("tick"),a(e.getAttribute("variant")).to.equal("tick")}),it("has a `focusElement`",async()=>{const e=await s(o`
|
|
552
45
|
<sp-slider></sp-slider>
|
|
553
|
-
`);
|
|
554
|
-
await elementUpdated(el);
|
|
555
|
-
const input = el.focusElement;
|
|
556
|
-
expect(input).to.not.be.undefined;
|
|
557
|
-
expect(input.type).to.equal("range");
|
|
558
|
-
});
|
|
559
|
-
it("displays result of getAriaValueText", async () => {
|
|
560
|
-
const el = await fixture(html`
|
|
46
|
+
`);await l(e);const t=e.focusElement;a(t).to.not.be.undefined,a(t.type).to.equal("range")}),it("displays result of getAriaValueText",async()=>{const e=await s(o`
|
|
561
47
|
<sp-slider
|
|
562
48
|
value="50"
|
|
563
49
|
min="0"
|
|
564
50
|
max="100"
|
|
565
|
-
.getAriaHandleText=${
|
|
51
|
+
.getAriaHandleText=${i=>`${i}%`}
|
|
566
52
|
></sp-slider>
|
|
567
|
-
`);
|
|
568
|
-
await elementUpdated(el);
|
|
569
|
-
const input = el.focusElement;
|
|
570
|
-
expect(input.getAttribute("aria-valuetext")).to.equal("50%");
|
|
571
|
-
el.value = 100;
|
|
572
|
-
await elementUpdated(el);
|
|
573
|
-
expect(input.getAttribute("aria-valuetext")).to.equal("100%");
|
|
574
|
-
});
|
|
575
|
-
it("displays Intl.formatNumber results", async () => {
|
|
576
|
-
const el = await fixture(html`
|
|
53
|
+
`);await l(e);const t=e.focusElement;a(t.getAttribute("aria-valuetext")).to.equal("50%"),e.value=100,await l(e),a(t.getAttribute("aria-valuetext")).to.equal("100%")}),it("displays Intl.formatNumber results",async()=>{const e=await s(o`
|
|
577
54
|
<sp-slider
|
|
578
55
|
value=".5"
|
|
579
56
|
min="0"
|
|
580
57
|
max="1"
|
|
581
|
-
.formatOptions=${{
|
|
58
|
+
.formatOptions=${{style:"percent"}}
|
|
582
59
|
></sp-slider>
|
|
583
|
-
`);
|
|
584
|
-
await elementUpdated(el);
|
|
585
|
-
const input = el.focusElement;
|
|
586
|
-
expect(input.getAttribute("aria-valuetext")).to.equal("50%");
|
|
587
|
-
el.value = 100;
|
|
588
|
-
await elementUpdated(el);
|
|
589
|
-
expect(input.getAttribute("aria-valuetext")).to.equal("100%");
|
|
590
|
-
});
|
|
591
|
-
it("obeys language property", async () => {
|
|
592
|
-
let lang = "de";
|
|
593
|
-
const langResolvers = [];
|
|
594
|
-
const createLangResolver = (event) => {
|
|
595
|
-
langResolvers.push(event.detail.callback);
|
|
596
|
-
resolveLanguage();
|
|
597
|
-
};
|
|
598
|
-
const resolveLanguage = () => {
|
|
599
|
-
langResolvers.forEach((resolver) => resolver(lang));
|
|
600
|
-
};
|
|
601
|
-
let el = await fixture(html`
|
|
60
|
+
`);await l(e);const t=e.focusElement;a(t.getAttribute("aria-valuetext")).to.equal("50%"),e.value=100,await l(e),a(t.getAttribute("aria-valuetext")).to.equal("100%")}),it("obeys language property",async()=>{let e="de";const t=[],i=c=>{t.push(c.detail.callback),n()},n=()=>{t.forEach(c=>c(e))};let r=await s(o`
|
|
602
61
|
<sp-slider
|
|
603
62
|
value="2.44"
|
|
604
63
|
min="0"
|
|
605
64
|
max="10"
|
|
606
65
|
step="0.01"
|
|
607
|
-
@sp-language-context=${
|
|
608
|
-
.formatOptions=${{
|
|
66
|
+
@sp-language-context=${i}
|
|
67
|
+
.formatOptions=${{maximumFractionDigits:2}}
|
|
609
68
|
></sp-slider>
|
|
610
|
-
`);
|
|
611
|
-
await elementUpdated(el);
|
|
612
|
-
let input = el.focusElement;
|
|
613
|
-
expect(input.getAttribute("aria-valuetext"), "First German number").to.equal("2,44");
|
|
614
|
-
lang = "en";
|
|
615
|
-
resolveLanguage();
|
|
616
|
-
await elementUpdated(el);
|
|
617
|
-
expect(input.getAttribute("aria-valuetext"), "First English number").to.equal("2.44");
|
|
618
|
-
lang = "de";
|
|
619
|
-
resolveLanguage();
|
|
620
|
-
el = await fixture(html`
|
|
69
|
+
`);await l(r);let d=r.focusElement;a(d.getAttribute("aria-valuetext"),"First German number").to.equal("2,44"),e="en",n(),await l(r),a(d.getAttribute("aria-valuetext"),"First English number").to.equal("2.44"),e="de",n(),r=await s(o`
|
|
621
70
|
<sp-slider
|
|
622
71
|
min="0"
|
|
623
72
|
max="10"
|
|
624
|
-
@sp-language-context=${
|
|
73
|
+
@sp-language-context=${i}
|
|
625
74
|
>
|
|
626
75
|
<sp-slider-handle
|
|
627
76
|
slot="handle"
|
|
628
77
|
step="0.01"
|
|
629
78
|
value="2.44"
|
|
630
|
-
.formatOptions=${{
|
|
631
|
-
@sp-language-context=${
|
|
79
|
+
.formatOptions=${{maximumFractionDigits:2}}
|
|
80
|
+
@sp-language-context=${i}
|
|
632
81
|
></sp-slider-handle>
|
|
633
82
|
</sp-slider>
|
|
634
|
-
`)
|
|
635
|
-
await elementUpdated(el);
|
|
636
|
-
input = el.focusElement;
|
|
637
|
-
expect(input.getAttribute("aria-valuetext"), "Second German number").to.equal("2,44");
|
|
638
|
-
lang = "en";
|
|
639
|
-
resolveLanguage();
|
|
640
|
-
await elementUpdated(el);
|
|
641
|
-
expect(input.getAttribute("aria-valuetext"), "Second English number").to.equal("2.44");
|
|
642
|
-
});
|
|
643
|
-
it("uses fallback ariaValueText", async () => {
|
|
644
|
-
const el = await fixture(html`
|
|
83
|
+
`),await l(r),d=r.focusElement,a(d.getAttribute("aria-valuetext"),"Second German number").to.equal("2,44"),e="en",n(),await l(r),a(d.getAttribute("aria-valuetext"),"Second English number").to.equal("2.44")}),it("uses fallback ariaValueText",async()=>{const e=await s(o`
|
|
645
84
|
<sp-slider value="50" min="0" max="100"></sp-slider>
|
|
646
|
-
`);
|
|
647
|
-
await elementUpdated(el);
|
|
648
|
-
el.getAriaValueText = false;
|
|
649
|
-
const input = el.focusElement;
|
|
650
|
-
await elementUpdated(el);
|
|
651
|
-
expect(input.getAttribute("aria-valuetext")).to.equal("50");
|
|
652
|
-
});
|
|
653
|
-
it("accepts min/max/value in the same timing", async () => {
|
|
654
|
-
const el = await fixture(html`
|
|
85
|
+
`);await l(e),e.getAriaValueText=!1;const t=e.focusElement;await l(e),a(t.getAttribute("aria-valuetext")).to.equal("50")}),it("accepts min/max/value in the same timing",async()=>{const e=await s(o`
|
|
655
86
|
<sp-slider></sp-slider>
|
|
656
|
-
`);
|
|
657
|
-
await elementUpdated(el);
|
|
658
|
-
expect(el.value).to.equal(10);
|
|
659
|
-
el.min = 0;
|
|
660
|
-
el.max = 200;
|
|
661
|
-
el.value = 200;
|
|
662
|
-
await elementUpdated(el);
|
|
663
|
-
expect(el.value).to.equal(200);
|
|
664
|
-
el.value = 500;
|
|
665
|
-
el.min = 0;
|
|
666
|
-
el.max = 500;
|
|
667
|
-
await elementUpdated(el);
|
|
668
|
-
expect(el.value).to.equal(500);
|
|
669
|
-
el.value = -100;
|
|
670
|
-
el.min = -100;
|
|
671
|
-
el.max = 500;
|
|
672
|
-
await elementUpdated(el);
|
|
673
|
-
expect(el.value).to.equal(-100);
|
|
674
|
-
});
|
|
675
|
-
it("returns values for handles", async () => {
|
|
676
|
-
let el = await fixture(html`
|
|
87
|
+
`);await l(e),a(e.value).to.equal(10),e.min=0,e.max=200,e.value=200,await l(e),a(e.value).to.equal(200),e.value=500,e.min=0,e.max=500,await l(e),a(e.value).to.equal(500),e.value=-100,e.min=-100,e.max=500,await l(e),a(e.value).to.equal(-100)}),it("returns values for handles",async()=>{let e=await s(o`
|
|
677
88
|
<sp-slider>
|
|
678
89
|
<sp-slider-handle
|
|
679
90
|
slot="handle"
|
|
@@ -694,29 +105,16 @@ describe("Slider", () => {
|
|
|
694
105
|
max="100"
|
|
695
106
|
></sp-slider-handle>
|
|
696
107
|
</sp-slider>
|
|
697
|
-
`);
|
|
698
|
-
await elementUpdated(el);
|
|
699
|
-
expect(el.values).to.deep.equal({ a: 10, b: 20, c: 30 });
|
|
700
|
-
const middleHandle = el.querySelector("#middle-handle");
|
|
701
|
-
middleHandle.value = 22;
|
|
702
|
-
await elementUpdated(el);
|
|
703
|
-
expect(el.values).to.deep.equal({ a: 10, b: 22, c: 30 });
|
|
704
|
-
el = await fixture(html`
|
|
108
|
+
`);await l(e),a(e.values).to.deep.equal({a:10,b:20,c:30});const t=e.querySelector("#middle-handle");t.value=22,await l(e),a(e.values).to.deep.equal({a:10,b:22,c:30}),e=await s(o`
|
|
705
109
|
<sp-slider value="10" min="0" max="100"></sp-slider>
|
|
706
|
-
`)
|
|
707
|
-
expect(el.values).to.deep.equal({ value: 10 });
|
|
708
|
-
el = await fixture(html`
|
|
110
|
+
`),a(e.values).to.deep.equal({value:10}),e=await s(o`
|
|
709
111
|
<sp-slider min="0" max="100">
|
|
710
112
|
<sp-slider-handle
|
|
711
113
|
slot="handle"
|
|
712
114
|
value="10"
|
|
713
115
|
></sp-slider-handle>
|
|
714
116
|
</sp-slider>
|
|
715
|
-
`)
|
|
716
|
-
expect(el.values).to.deep.equal({ handle1: 10 });
|
|
717
|
-
});
|
|
718
|
-
it("clamps values for multi-handle slider", async () => {
|
|
719
|
-
const el = await fixture(html`
|
|
117
|
+
`),a(e.values).to.deep.equal({handle1:10})}),it("clamps values for multi-handle slider",async()=>{const e=await s(o`
|
|
720
118
|
<sp-slider min="0" max="100">
|
|
721
119
|
<sp-slider-handle
|
|
722
120
|
id="first-handle"
|
|
@@ -741,31 +139,7 @@ describe("Slider", () => {
|
|
|
741
139
|
value="30"
|
|
742
140
|
></sp-slider-handle>
|
|
743
141
|
</sp-slider>
|
|
744
|
-
`);
|
|
745
|
-
await elementUpdated(el);
|
|
746
|
-
expect(el.values).to.deep.equal({ a: 10, b: 20, c: 30 });
|
|
747
|
-
const firstHandle = el.querySelector("#first-handle");
|
|
748
|
-
const middleHandle = el.querySelector("#middle-handle");
|
|
749
|
-
const lastHandle = el.querySelector("#last-handle");
|
|
750
|
-
firstHandle.value = 25;
|
|
751
|
-
await elementUpdated(el);
|
|
752
|
-
expect(el.values).to.deep.equal({ a: 20, b: 20, c: 30 });
|
|
753
|
-
firstHandle.value = 10;
|
|
754
|
-
await elementUpdated(el);
|
|
755
|
-
middleHandle.value = 5;
|
|
756
|
-
await elementUpdated(el);
|
|
757
|
-
expect(el.values).to.deep.equal({ a: 10, b: 10, c: 30 });
|
|
758
|
-
lastHandle.value = 11;
|
|
759
|
-
await elementUpdated(el);
|
|
760
|
-
expect(el.values).to.deep.equal({ a: 10, b: 10, c: 11 });
|
|
761
|
-
lastHandle.value = 7;
|
|
762
|
-
await elementUpdated(el);
|
|
763
|
-
expect(el.values).to.deep.equal({ a: 10, b: 10, c: 10 });
|
|
764
|
-
});
|
|
765
|
-
it('warns in Dev Mode when `min="previous"` is leveraged on first handle', async () => {
|
|
766
|
-
const consoleWarnStub = stub(console, "warn");
|
|
767
|
-
window.__swc.issuedWarnings = /* @__PURE__ */ new Set();
|
|
768
|
-
const el = await fixture(html`
|
|
142
|
+
`);await l(e),a(e.values).to.deep.equal({a:10,b:20,c:30});const t=e.querySelector("#first-handle"),i=e.querySelector("#middle-handle"),n=e.querySelector("#last-handle");t.value=25,await l(e),a(e.values).to.deep.equal({a:20,b:20,c:30}),t.value=10,await l(e),i.value=5,await l(e),a(e.values).to.deep.equal({a:10,b:10,c:30}),n.value=11,await l(e),a(e.values).to.deep.equal({a:10,b:10,c:11}),n.value=7,await l(e),a(e.values).to.deep.equal({a:10,b:10,c:10})}),it('warns in Dev Mode when `min="previous"` is leveraged on first handle',async()=>{const e=v(console,"warn");window.__swc.issuedWarnings=new Set;const t=await s(o`
|
|
769
143
|
<sp-slider min="0" max="100">
|
|
770
144
|
<sp-slider-handle
|
|
771
145
|
id="first-handle"
|
|
@@ -791,24 +165,7 @@ describe("Slider", () => {
|
|
|
791
165
|
value="30"
|
|
792
166
|
></sp-slider-handle>
|
|
793
167
|
</sp-slider>
|
|
794
|
-
`);
|
|
795
|
-
await elementUpdated(el);
|
|
796
|
-
expect(consoleWarnStub.called).to.be.true;
|
|
797
|
-
const spyCall = consoleWarnStub.getCall(0);
|
|
798
|
-
expect(spyCall.args.at(0).includes("previous"), 'confirm "previous" in message').to.be.true;
|
|
799
|
-
expect(spyCall.args.at(-1), "confirm `data` shape").to.deep.equal({
|
|
800
|
-
data: {
|
|
801
|
-
localName: "sp-slider",
|
|
802
|
-
type: "api",
|
|
803
|
-
level: "default"
|
|
804
|
-
}
|
|
805
|
-
});
|
|
806
|
-
consoleWarnStub.restore();
|
|
807
|
-
});
|
|
808
|
-
it('warns in Dev Mode when `max="next"` is leveraged on last handle', async () => {
|
|
809
|
-
const consoleWarnStub = stub(console, "warn");
|
|
810
|
-
window.__swc.issuedWarnings = /* @__PURE__ */ new Set();
|
|
811
|
-
const el = await fixture(html`
|
|
168
|
+
`);await l(t),a(e.called).to.be.true;const i=e.getCall(0);a(i.args.at(0).includes("previous"),'confirm "previous" in message').to.be.true,a(i.args.at(-1),"confirm `data` shape").to.deep.equal({data:{localName:"sp-slider",type:"api",level:"default"}}),e.restore()}),it('warns in Dev Mode when `max="next"` is leveraged on last handle',async()=>{const e=v(console,"warn");window.__swc.issuedWarnings=new Set;const t=await s(o`
|
|
812
169
|
<sp-slider min="0" max="100">
|
|
813
170
|
<sp-slider-handle
|
|
814
171
|
id="first-handle"
|
|
@@ -834,43 +191,14 @@ describe("Slider", () => {
|
|
|
834
191
|
value="30"
|
|
835
192
|
></sp-slider-handle>
|
|
836
193
|
</sp-slider>
|
|
837
|
-
`);
|
|
838
|
-
await elementUpdated(el);
|
|
839
|
-
expect(consoleWarnStub.called).to.be.true;
|
|
840
|
-
const spyCall = consoleWarnStub.getCall(0);
|
|
841
|
-
expect(spyCall.args.at(0).includes("next"), 'confirm "next" in message').to.be.true;
|
|
842
|
-
expect(spyCall.args.at(-1), "confirm `data` shape").to.deep.equal({
|
|
843
|
-
data: {
|
|
844
|
-
localName: "sp-slider",
|
|
845
|
-
type: "api",
|
|
846
|
-
level: "default"
|
|
847
|
-
}
|
|
848
|
-
});
|
|
849
|
-
consoleWarnStub.restore();
|
|
850
|
-
});
|
|
851
|
-
it("builds both handles from a <template>", async () => {
|
|
852
|
-
var _a;
|
|
853
|
-
const template = document.createElement("template");
|
|
854
|
-
template.innerHTML = `
|
|
194
|
+
`);await l(t),a(e.called).to.be.true;const i=e.getCall(0);a(i.args.at(0).includes("next"),'confirm "next" in message').to.be.true,a(i.args.at(-1),"confirm `data` shape").to.deep.equal({data:{localName:"sp-slider",type:"api",level:"default"}}),e.restore()}),it("builds both handles from a <template>",async()=>{var n;const e=document.createElement("template");e.innerHTML=`
|
|
855
195
|
<sp-slider variant="range" step="1" id="price" name="price" label="Max Price" min="35425" max="86610">
|
|
856
196
|
<sp-slider-handle slot="handle" name="min" label="Minimum" max="next" value="35425"></sp-slider-handle>
|
|
857
197
|
<sp-slider-handle slot="handle" name="max" label="Maximum" min="previous" value="86610"></sp-slider-handle>
|
|
858
198
|
</sp-slider>
|
|
859
|
-
`;
|
|
860
|
-
const el = await fixture(html`
|
|
199
|
+
`;const t=await s(o`
|
|
861
200
|
<div></div>
|
|
862
|
-
`);
|
|
863
|
-
el.appendChild(template.content.cloneNode(true));
|
|
864
|
-
await waitUntil(() => {
|
|
865
|
-
var _a2;
|
|
866
|
-
return ((_a2 = el.querySelector("sp-slider")) == null ? void 0 : _a2.shadowRoot) != null;
|
|
867
|
-
});
|
|
868
|
-
await nextFrame();
|
|
869
|
-
const createdHandles = ((_a = el.querySelector("sp-slider")) == null ? void 0 : _a.shadowRoot.querySelectorAll(".handle")) || [];
|
|
870
|
-
expect(createdHandles).to.have.lengthOf(2);
|
|
871
|
-
});
|
|
872
|
-
it("enforces next/previous max/min", async () => {
|
|
873
|
-
let el = await fixture(html`
|
|
201
|
+
`);t.appendChild(e.content.cloneNode(!0)),await g(()=>{var r;return((r=t.querySelector("sp-slider"))==null?void 0:r.shadowRoot)!=null}),await p();const i=((n=t.querySelector("sp-slider"))==null?void 0:n.shadowRoot.querySelectorAll(".handle"))||[];a(i).to.have.lengthOf(2)}),it("enforces next/previous max/min",async()=>{let e=await s(o`
|
|
874
202
|
<sp-slider min="0" max="100">
|
|
875
203
|
<sp-slider-handle
|
|
876
204
|
id="first-handle"
|
|
@@ -895,31 +223,7 @@ describe("Slider", () => {
|
|
|
895
223
|
value="30"
|
|
896
224
|
></sp-slider-handle>
|
|
897
225
|
</sp-slider>
|
|
898
|
-
`);
|
|
899
|
-
await elementUpdated(el);
|
|
900
|
-
expect(el.values).to.deep.equal({ a: 10, b: 20, c: 30 });
|
|
901
|
-
let firstHandle = el.querySelector("#first-handle");
|
|
902
|
-
let lastHandle = el.querySelector("#last-handle");
|
|
903
|
-
let firstInput = el.shadowRoot.querySelector('.handle[name="a"] > input');
|
|
904
|
-
let middleInput = el.shadowRoot.querySelector('.handle[name="b"] > input');
|
|
905
|
-
let lastInput = el.shadowRoot.querySelector('.handle[name="c"] > input');
|
|
906
|
-
expect(firstInput.min).to.equal("0");
|
|
907
|
-
expect(firstInput.max).to.equal("20");
|
|
908
|
-
expect(middleInput.min).to.equal("10");
|
|
909
|
-
expect(middleInput.max).to.equal("30");
|
|
910
|
-
expect(lastInput.min).to.equal("20");
|
|
911
|
-
expect(lastInput.max).to.equal("100");
|
|
912
|
-
firstHandle.value = 15;
|
|
913
|
-
lastHandle.value = 85;
|
|
914
|
-
await elementUpdated(el);
|
|
915
|
-
await elementUpdated(el);
|
|
916
|
-
expect(firstInput.min).to.equal("0");
|
|
917
|
-
expect(firstInput.max).to.equal("20");
|
|
918
|
-
expect(middleInput.min).to.equal("15");
|
|
919
|
-
expect(middleInput.max).to.equal("85");
|
|
920
|
-
expect(lastInput.min).to.equal("20");
|
|
921
|
-
expect(lastInput.max).to.equal("100");
|
|
922
|
-
el = await fixture(html`
|
|
226
|
+
`);await l(e),a(e.values).to.deep.equal({a:10,b:20,c:30});let t=e.querySelector("#first-handle"),i=e.querySelector("#last-handle"),n=e.shadowRoot.querySelector('.handle[name="a"] > input'),r=e.shadowRoot.querySelector('.handle[name="b"] > input'),d=e.shadowRoot.querySelector('.handle[name="c"] > input');a(n.min).to.equal("0"),a(n.max).to.equal("20"),a(r.min).to.equal("10"),a(r.max).to.equal("30"),a(d.min).to.equal("20"),a(d.max).to.equal("100"),t.value=15,i.value=85,await l(e),await l(e),a(n.min).to.equal("0"),a(n.max).to.equal("20"),a(r.min).to.equal("15"),a(r.max).to.equal("85"),a(d.min).to.equal("20"),a(d.max).to.equal("100"),e=await s(o`
|
|
923
227
|
<sp-slider>
|
|
924
228
|
<sp-slider-handle
|
|
925
229
|
id="first-handle"
|
|
@@ -946,29 +250,7 @@ describe("Slider", () => {
|
|
|
946
250
|
value="30"
|
|
947
251
|
></sp-slider-handle>
|
|
948
252
|
</sp-slider>
|
|
949
|
-
`)
|
|
950
|
-
firstInput = el.shadowRoot.querySelector('.handle[name="a"] > input');
|
|
951
|
-
middleInput = el.shadowRoot.querySelector('.handle[name="b"] > input');
|
|
952
|
-
lastInput = el.shadowRoot.querySelector('.handle[name="c"] > input');
|
|
953
|
-
expect(firstInput.min).to.equal("0");
|
|
954
|
-
expect(firstInput.max).to.equal("20");
|
|
955
|
-
expect(middleInput.min).to.equal("10");
|
|
956
|
-
expect(middleInput.max).to.equal("30");
|
|
957
|
-
expect(lastInput.min).to.equal("20");
|
|
958
|
-
expect(lastInput.max).to.equal("100");
|
|
959
|
-
firstHandle = el.querySelector("#first-handle");
|
|
960
|
-
lastHandle = el.querySelector("#last-handle");
|
|
961
|
-
firstHandle.min = 5;
|
|
962
|
-
lastHandle.max = 95;
|
|
963
|
-
await elementUpdated(el);
|
|
964
|
-
await elementUpdated(el);
|
|
965
|
-
expect(firstInput.min).to.equal("5");
|
|
966
|
-
expect(firstInput.max).to.equal("20");
|
|
967
|
-
expect(lastInput.min).to.equal("20");
|
|
968
|
-
expect(lastInput.max).to.equal("95");
|
|
969
|
-
});
|
|
970
|
-
it("sends keyboard events to active handle", async () => {
|
|
971
|
-
const el = await fixture(html`
|
|
253
|
+
`),n=e.shadowRoot.querySelector('.handle[name="a"] > input'),r=e.shadowRoot.querySelector('.handle[name="b"] > input'),d=e.shadowRoot.querySelector('.handle[name="c"] > input'),a(n.min).to.equal("0"),a(n.max).to.equal("20"),a(r.min).to.equal("10"),a(r.max).to.equal("30"),a(d.min).to.equal("20"),a(d.max).to.equal("100"),t=e.querySelector("#first-handle"),i=e.querySelector("#last-handle"),t.min=5,i.max=95,await l(e),await l(e),a(n.min).to.equal("5"),a(n.max).to.equal("20"),a(d.min).to.equal("20"),a(d.max).to.equal("95")}),it("sends keyboard events to active handle",async()=>{const e=await s(o`
|
|
972
254
|
<sp-slider step="1" min="0" max="100">
|
|
973
255
|
<sp-slider-handle
|
|
974
256
|
id="first-handle"
|
|
@@ -993,16 +275,5 @@ describe("Slider", () => {
|
|
|
993
275
|
value="30"
|
|
994
276
|
></sp-slider-handle>
|
|
995
277
|
</sp-slider>
|
|
996
|
-
`);
|
|
997
|
-
await elementUpdated(el);
|
|
998
|
-
expect(el.values).to.deep.equal({ a: 10, b: 20, c: 30 });
|
|
999
|
-
const lastHandle = el.querySelector("#last-handle");
|
|
1000
|
-
lastHandle.focus();
|
|
1001
|
-
await sendKeys({
|
|
1002
|
-
press: "ArrowDown"
|
|
1003
|
-
});
|
|
1004
|
-
await elementUpdated(el);
|
|
1005
|
-
expect(el.values).to.deep.equal({ a: 10, b: 20, c: 29 });
|
|
1006
|
-
});
|
|
1007
|
-
});
|
|
278
|
+
`);await l(e),a(e.values).to.deep.equal({a:10,b:20,c:30}),e.querySelector("#last-handle").focus(),await h({press:"ArrowDown"}),await l(e),a(e.values).to.deep.equal({a:10,b:20,c:29})})});
|
|
1008
279
|
//# sourceMappingURL=slider.test.js.map
|