@spectrum-web-components/slider 0.12.13 → 0.12.15-devmode.7

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