@spectrum-web-components/number-field 0.4.2-devmode.0 → 0.5.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 +8 -8
- package/sp-number-field.js +1 -2
- package/sp-number-field.js.map +1 -1
- package/src/NumberField.js +6 -466
- package/src/NumberField.js.map +1 -1
- package/src/index.js +1 -1
- package/src/index.js.map +1 -1
- package/src/number-field.css.js +2 -4
- package/src/number-field.css.js.map +1 -1
- package/src/spectrum-number-field.css.js +2 -4
- package/src/spectrum-number-field.css.js.map +1 -1
- package/stories/number-field.stories.js +45 -311
- package/stories/number-field.stories.js.map +1 -1
- package/test/benchmark/basic-test.js +1 -4
- package/test/benchmark/basic-test.js.map +1 -1
- package/test/helpers.js +3 -52
- package/test/helpers.js.map +1 -1
- package/test/inputs.test.js +31 -374
- package/test/inputs.test.js.map +1 -1
- package/test/number-field.test-vrt.js +1 -3
- package/test/number-field.test-vrt.js.map +1 -1
- package/test/number-field.test.js +4 -1143
- package/test/number-field.test.js.map +1 -1
|
@@ -1,1145 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
-
currency,
|
|
6
|
-
decimals,
|
|
7
|
-
Default,
|
|
8
|
-
indeterminate,
|
|
9
|
-
percents,
|
|
10
|
-
pixels,
|
|
11
|
-
units
|
|
12
|
-
} from "../stories/number-field.stories.js";
|
|
13
|
-
import "@spectrum-web-components/number-field/sp-number-field.js";
|
|
14
|
-
import {
|
|
15
|
-
FRAMES_PER_CHANGE,
|
|
16
|
-
indeterminatePlaceholder
|
|
17
|
-
} from "@spectrum-web-components/number-field";
|
|
18
|
-
import { sendKeys, setUserAgent } from "@web/test-runner-commands";
|
|
19
|
-
import { spy } from "sinon";
|
|
20
|
-
import {
|
|
21
|
-
clickBySelector,
|
|
22
|
-
createLanguageContext,
|
|
23
|
-
getElFrom
|
|
24
|
-
} from "./helpers.js";
|
|
25
|
-
import { sendMouse } from "../../../test/plugins/browser.js";
|
|
26
|
-
import { testForLitDevWarnings } from "../../../test/testing-helpers.js";
|
|
27
|
-
describe("NumberField", () => {
|
|
28
|
-
before(async () => {
|
|
29
|
-
if (polyfillCheck.shouldPolyfill()) {
|
|
30
|
-
await import("@formatjs/intl-numberformat/polyfill.js");
|
|
31
|
-
}
|
|
32
|
-
if (Intl.NumberFormat.polyfilled) {
|
|
33
|
-
await import("@formatjs/intl-numberformat/locale-data/en.js");
|
|
34
|
-
await import("@formatjs/intl-numberformat/locale-data/fr.js");
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
testForLitDevWarnings(async () => await getElFrom(Default({})));
|
|
38
|
-
it("loads default number-field accessibly", async () => {
|
|
39
|
-
const el = await getElFrom(Default({}));
|
|
40
|
-
await elementUpdated(el);
|
|
41
|
-
await expect(el).to.be.accessible();
|
|
42
|
-
});
|
|
43
|
-
describe("receives input", () => {
|
|
44
|
-
it("without language context", async () => {
|
|
45
|
-
const el = await getElFrom(Default({ value: 1337 }));
|
|
46
|
-
expect(el.formattedValue).to.equal("1,337");
|
|
47
|
-
expect(el.valueAsString).to.equal("1337");
|
|
48
|
-
expect(el.value).to.equal(1337);
|
|
49
|
-
el.focus();
|
|
50
|
-
await sendKeys({ type: "7331" });
|
|
51
|
-
await elementUpdated(el);
|
|
52
|
-
await sendKeys({ press: "Enter" });
|
|
53
|
-
await elementUpdated(el);
|
|
54
|
-
expect(el.formattedValue).to.equal("13,377,331");
|
|
55
|
-
expect(el.valueAsString).to.equal("13377331");
|
|
56
|
-
expect(el.value).to.equal(13377331);
|
|
57
|
-
});
|
|
58
|
-
it("with language context", async () => {
|
|
59
|
-
const languageContext = createLanguageContext("fr");
|
|
60
|
-
const el = await getElFrom(html`
|
|
61
|
-
<div @sp-language-context=${languageContext}>
|
|
62
|
-
${Default({ value: 1337 })}
|
|
1
|
+
import{html as E}from"@spectrum-web-components/base";import{elementUpdated as t,expect as e,nextFrame as h,oneEvent as m}from"@open-wc/testing";import U from"@formatjs/intl-numberformat/should-polyfill.js";import{currency as D,decimals as k,Default as w,indeterminate as b,percents as C,pixels as N,units as x}from"../stories/number-field.stories.js";import"@spectrum-web-components/number-field/sp-number-field.js";import{FRAMES_PER_CHANGE as S,indeterminatePlaceholder as y}from"@spectrum-web-components/number-field";import{sendKeys as l,setUserAgent as V}from"@web/test-runner-commands";import{spy as g}from"sinon";import{clickBySelector as r,createLanguageContext as W,getElFrom as n}from"./helpers.js";import{sendMouse as d}from"../../../test/plugins/browser.js";import{testForLitDevWarnings as M}from"../../../test/testing-helpers.js";describe("NumberField",()=>{before(async()=>{U.shouldPolyfill()&&await import("@formatjs/intl-numberformat/polyfill.js"),Intl.NumberFormat.polyfilled&&(await import("@formatjs/intl-numberformat/locale-data/en.js"),await import("@formatjs/intl-numberformat/locale-data/fr.js"))}),M(async()=>await n(w({}))),it("loads default number-field accessibly",async()=>{const a=await n(w({}));await t(a),await e(a).to.be.accessible()}),describe("receives input",()=>{it("without language context",async()=>{const a=await n(w({value:1337}));e(a.formattedValue).to.equal("1,337"),e(a.valueAsString).to.equal("1337"),e(a.value).to.equal(1337),a.focus(),await l({type:"7331"}),await t(a),await l({press:"Enter"}),await t(a),e(a.formattedValue).to.equal("13,377,331"),e(a.valueAsString).to.equal("13377331"),e(a.value).to.equal(13377331)}),it("with language context",async()=>{const a=W("fr"),u=await n(E`
|
|
2
|
+
<div @sp-language-context=${a}>
|
|
3
|
+
${w({value:1337})}
|
|
63
4
|
</div>
|
|
64
|
-
`);
|
|
65
|
-
expect(el.formattedValue).to.equal("1\u202F337");
|
|
66
|
-
expect(el.valueAsString).to.equal("1337");
|
|
67
|
-
expect(el.value).to.equal(1337);
|
|
68
|
-
el.focus();
|
|
69
|
-
await sendKeys({ type: "7331" });
|
|
70
|
-
await elementUpdated(el);
|
|
71
|
-
await sendKeys({ press: "Enter" });
|
|
72
|
-
await elementUpdated(el);
|
|
73
|
-
expect(el.formattedValue).to.equal("13\u202F377\u202F331");
|
|
74
|
-
expect(el.valueAsString).to.equal("13377331");
|
|
75
|
-
expect(el.value).to.equal(13377331);
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
describe("Step", () => {
|
|
79
|
-
it("can be 0", async () => {
|
|
80
|
-
const el = await getElFrom(Default({
|
|
81
|
-
step: 0,
|
|
82
|
-
min: 0,
|
|
83
|
-
max: 10,
|
|
84
|
-
value: 5
|
|
85
|
-
}));
|
|
86
|
-
expect(el.value).to.equal(5);
|
|
87
|
-
expect(el.formattedValue).to.equal("5");
|
|
88
|
-
expect(el.valueAsString).to.equal("5");
|
|
89
|
-
});
|
|
90
|
-
});
|
|
91
|
-
describe("Increments", () => {
|
|
92
|
-
let el;
|
|
93
|
-
beforeEach(async () => {
|
|
94
|
-
el = await getElFrom(Default({}));
|
|
95
|
-
expect(el.value).to.be.NaN;
|
|
96
|
-
expect(el.formattedValue).to.equal("");
|
|
97
|
-
expect(el.valueAsString).to.equal("NaN");
|
|
98
|
-
});
|
|
99
|
-
it('via pointer, only "left" button', async () => {
|
|
100
|
-
await clickBySelector(el, ".stepUp", { button: "middle" });
|
|
101
|
-
expect(el.formattedValue).to.equal("");
|
|
102
|
-
expect(el.valueAsString).to.equal("NaN");
|
|
103
|
-
expect(el.value).to.be.NaN;
|
|
104
|
-
});
|
|
105
|
-
it("via pointer", async () => {
|
|
106
|
-
await clickBySelector(el, ".stepUp");
|
|
107
|
-
expect(el.formattedValue).to.equal("0");
|
|
108
|
-
expect(el.valueAsString).to.equal("0");
|
|
109
|
-
expect(el.value).to.equal(0);
|
|
110
|
-
await clickBySelector(el, ".stepUp");
|
|
111
|
-
expect(el.formattedValue).to.equal("1");
|
|
112
|
-
expect(el.valueAsString).to.equal("1");
|
|
113
|
-
expect(el.value).to.equal(1);
|
|
114
|
-
});
|
|
115
|
-
it("via arrow up", async () => {
|
|
116
|
-
el.focus();
|
|
117
|
-
await elementUpdated(el);
|
|
118
|
-
await sendKeys({ press: "ArrowUp" });
|
|
119
|
-
await elementUpdated(el);
|
|
120
|
-
expect(el.formattedValue).to.equal("0");
|
|
121
|
-
expect(el.valueAsString).to.equal("0");
|
|
122
|
-
expect(el.value).to.equal(0);
|
|
123
|
-
await sendKeys({ press: "ArrowUp" });
|
|
124
|
-
await elementUpdated(el);
|
|
125
|
-
expect(el.formattedValue).to.equal("1");
|
|
126
|
-
expect(el.valueAsString).to.equal("1");
|
|
127
|
-
expect(el.value).to.equal(1);
|
|
128
|
-
});
|
|
129
|
-
it("via arrow up (shift modified)", async () => {
|
|
130
|
-
el.focus();
|
|
131
|
-
await elementUpdated(el);
|
|
132
|
-
await sendKeys({ press: "ArrowUp" });
|
|
133
|
-
await elementUpdated(el);
|
|
134
|
-
expect(el.formattedValue).to.equal("0");
|
|
135
|
-
expect(el.valueAsString).to.equal("0");
|
|
136
|
-
expect(el.value).to.equal(0);
|
|
137
|
-
await sendKeys({ press: "Shift+ArrowUp" });
|
|
138
|
-
await elementUpdated(el);
|
|
139
|
-
expect(el.formattedValue).to.equal("10");
|
|
140
|
-
expect(el.valueAsString).to.equal("10");
|
|
141
|
-
expect(el.value).to.equal(10);
|
|
142
|
-
});
|
|
143
|
-
it("via arrow up (custom shift modified value)", async () => {
|
|
144
|
-
el.focus();
|
|
145
|
-
el.stepModifier = 5;
|
|
146
|
-
el.step = 3;
|
|
147
|
-
await elementUpdated(el);
|
|
148
|
-
await sendKeys({ press: "ArrowUp" });
|
|
149
|
-
await elementUpdated(el);
|
|
150
|
-
expect(el.formattedValue).to.equal("0");
|
|
151
|
-
expect(el.valueAsString).to.equal("0");
|
|
152
|
-
expect(el.value).to.equal(0);
|
|
153
|
-
await sendKeys({ press: "Shift+ArrowUp" });
|
|
154
|
-
await elementUpdated(el);
|
|
155
|
-
expect(el.formattedValue).to.equal("15");
|
|
156
|
-
expect(el.valueAsString).to.equal("15");
|
|
157
|
-
expect(el.value).to.equal(15);
|
|
158
|
-
});
|
|
159
|
-
it("via scroll", async () => {
|
|
160
|
-
el.focus();
|
|
161
|
-
await elementUpdated(el);
|
|
162
|
-
expect(el.focused).to.be.true;
|
|
163
|
-
el.dispatchEvent(new WheelEvent("wheel", { deltaY: 1 }));
|
|
164
|
-
await elementUpdated(el);
|
|
165
|
-
expect(el.formattedValue).to.equal("0");
|
|
166
|
-
expect(el.valueAsString).to.equal("0");
|
|
167
|
-
expect(el.value).to.equal(0);
|
|
168
|
-
el.dispatchEvent(new WheelEvent("wheel", { deltaY: 100 }));
|
|
169
|
-
await elementUpdated(el);
|
|
170
|
-
expect(el.formattedValue).to.equal("1");
|
|
171
|
-
expect(el.valueAsString).to.equal("1");
|
|
172
|
-
expect(el.value).to.equal(1);
|
|
173
|
-
});
|
|
174
|
-
it("via scroll (shift modified)", async () => {
|
|
175
|
-
el.focus();
|
|
176
|
-
await elementUpdated(el);
|
|
177
|
-
expect(el.focused).to.be.true;
|
|
178
|
-
el.dispatchEvent(new WheelEvent("wheel", {
|
|
179
|
-
deltaX: 1,
|
|
180
|
-
shiftKey: true
|
|
181
|
-
}));
|
|
182
|
-
await elementUpdated(el);
|
|
183
|
-
expect(el.formattedValue).to.equal("0");
|
|
184
|
-
expect(el.valueAsString).to.equal("0");
|
|
185
|
-
expect(el.value).to.equal(0);
|
|
186
|
-
el.dispatchEvent(new WheelEvent("wheel", {
|
|
187
|
-
deltaX: 100,
|
|
188
|
-
shiftKey: true
|
|
189
|
-
}));
|
|
190
|
-
await elementUpdated(el);
|
|
191
|
-
expect(el.formattedValue).to.equal("10");
|
|
192
|
-
expect(el.valueAsString).to.equal("10");
|
|
193
|
-
expect(el.value).to.equal(10);
|
|
194
|
-
});
|
|
195
|
-
});
|
|
196
|
-
describe("Decrements", () => {
|
|
197
|
-
let el;
|
|
198
|
-
beforeEach(async () => {
|
|
199
|
-
el = await getElFrom(Default({}));
|
|
200
|
-
expect(el.value).to.be.NaN;
|
|
201
|
-
expect(el.formattedValue).to.equal("");
|
|
202
|
-
expect(el.valueAsString).to.equal("NaN");
|
|
203
|
-
});
|
|
204
|
-
it('via pointer, only "left" button', async () => {
|
|
205
|
-
await clickBySelector(el, ".stepDown", { button: "middle" });
|
|
206
|
-
expect(el.formattedValue).to.equal("");
|
|
207
|
-
expect(el.valueAsString).to.equal("NaN");
|
|
208
|
-
expect(el.value).to.be.NaN;
|
|
209
|
-
});
|
|
210
|
-
it("via pointer", async () => {
|
|
211
|
-
await clickBySelector(el, ".stepDown");
|
|
212
|
-
expect(el.formattedValue).to.equal("0");
|
|
213
|
-
expect(el.valueAsString).to.equal("0");
|
|
214
|
-
expect(el.value).to.equal(0);
|
|
215
|
-
await clickBySelector(el, ".stepDown");
|
|
216
|
-
expect(el.formattedValue).to.equal("-1");
|
|
217
|
-
expect(el.valueAsString).to.equal("-1");
|
|
218
|
-
expect(el.value).to.equal(-1);
|
|
219
|
-
});
|
|
220
|
-
it("via arrow down", async () => {
|
|
221
|
-
el.focus();
|
|
222
|
-
await elementUpdated(el);
|
|
223
|
-
await sendKeys({ press: "ArrowDown" });
|
|
224
|
-
await elementUpdated(el);
|
|
225
|
-
expect(el.formattedValue).to.equal("0");
|
|
226
|
-
expect(el.valueAsString).to.equal("0");
|
|
227
|
-
expect(el.value).to.equal(0);
|
|
228
|
-
await sendKeys({ press: "ArrowDown" });
|
|
229
|
-
await elementUpdated(el);
|
|
230
|
-
expect(el.formattedValue).to.equal("-1");
|
|
231
|
-
expect(el.valueAsString).to.equal("-1");
|
|
232
|
-
expect(el.value).to.equal(-1);
|
|
233
|
-
});
|
|
234
|
-
it("via arrow down (shift modified)", async () => {
|
|
235
|
-
el.focus();
|
|
236
|
-
await elementUpdated(el);
|
|
237
|
-
await sendKeys({ press: "ArrowDown" });
|
|
238
|
-
await elementUpdated(el);
|
|
239
|
-
expect(el.formattedValue).to.equal("0");
|
|
240
|
-
expect(el.valueAsString).to.equal("0");
|
|
241
|
-
expect(el.value).to.equal(0);
|
|
242
|
-
await sendKeys({ press: "Shift+ArrowDown" });
|
|
243
|
-
await elementUpdated(el);
|
|
244
|
-
expect(el.formattedValue).to.equal("-10");
|
|
245
|
-
expect(el.valueAsString).to.equal("-10");
|
|
246
|
-
expect(el.value).to.equal(-10);
|
|
247
|
-
});
|
|
248
|
-
it("via arrow up (custom shift modified value)", async () => {
|
|
249
|
-
el.focus();
|
|
250
|
-
el.stepModifier = 5;
|
|
251
|
-
el.step = 3;
|
|
252
|
-
await elementUpdated(el);
|
|
253
|
-
await sendKeys({ press: "ArrowDown" });
|
|
254
|
-
await elementUpdated(el);
|
|
255
|
-
expect(el.formattedValue).to.equal("0");
|
|
256
|
-
expect(el.valueAsString).to.equal("0");
|
|
257
|
-
expect(el.value).to.equal(0);
|
|
258
|
-
await sendKeys({ press: "Shift+ArrowDown" });
|
|
259
|
-
await elementUpdated(el);
|
|
260
|
-
expect(el.formattedValue).to.equal("-15");
|
|
261
|
-
expect(el.valueAsString).to.equal("-15");
|
|
262
|
-
expect(el.value).to.equal(-15);
|
|
263
|
-
});
|
|
264
|
-
it("via scroll", async () => {
|
|
265
|
-
el.focus();
|
|
266
|
-
await elementUpdated(el);
|
|
267
|
-
expect(el.focused).to.be.true;
|
|
268
|
-
el.dispatchEvent(new WheelEvent("wheel", { deltaY: -1 }));
|
|
269
|
-
await elementUpdated(el);
|
|
270
|
-
expect(el.formattedValue).to.equal("0");
|
|
271
|
-
expect(el.valueAsString).to.equal("0");
|
|
272
|
-
expect(el.value).to.equal(0);
|
|
273
|
-
el.dispatchEvent(new WheelEvent("wheel", { deltaY: -100 }));
|
|
274
|
-
await elementUpdated(el);
|
|
275
|
-
expect(el.formattedValue).to.equal("-1");
|
|
276
|
-
expect(el.valueAsString).to.equal("-1");
|
|
277
|
-
expect(el.value).to.equal(-1);
|
|
278
|
-
});
|
|
279
|
-
it("via scroll (shift modified)", async () => {
|
|
280
|
-
el.focus();
|
|
281
|
-
await elementUpdated(el);
|
|
282
|
-
expect(el.focused).to.be.true;
|
|
283
|
-
el.dispatchEvent(new WheelEvent("wheel", {
|
|
284
|
-
deltaX: -1,
|
|
285
|
-
shiftKey: true
|
|
286
|
-
}));
|
|
287
|
-
await elementUpdated(el);
|
|
288
|
-
expect(el.formattedValue).to.equal("0");
|
|
289
|
-
expect(el.valueAsString).to.equal("0");
|
|
290
|
-
expect(el.value).to.equal(0);
|
|
291
|
-
el.dispatchEvent(new WheelEvent("wheel", {
|
|
292
|
-
deltaX: -100,
|
|
293
|
-
shiftKey: true
|
|
294
|
-
}));
|
|
295
|
-
await elementUpdated(el);
|
|
296
|
-
expect(el.formattedValue).to.equal("-10");
|
|
297
|
-
expect(el.valueAsString).to.equal("-10");
|
|
298
|
-
expect(el.value).to.equal(-10);
|
|
299
|
-
});
|
|
300
|
-
});
|
|
301
|
-
describe("dispatched events", () => {
|
|
302
|
-
const inputSpy = spy();
|
|
303
|
-
const changeSpy = spy();
|
|
304
|
-
let el;
|
|
305
|
-
beforeEach(async () => {
|
|
306
|
-
inputSpy.resetHistory();
|
|
307
|
-
changeSpy.resetHistory();
|
|
308
|
-
el = await getElFrom(Default({ value: 50 }));
|
|
309
|
-
el.addEventListener("input", (event) => {
|
|
310
|
-
var _a;
|
|
311
|
-
inputSpy((_a = event.target) == null ? void 0 : _a.value);
|
|
312
|
-
});
|
|
313
|
-
el.addEventListener("change", (event) => {
|
|
314
|
-
var _a;
|
|
315
|
-
changeSpy((_a = event.target) == null ? void 0 : _a.value);
|
|
316
|
-
});
|
|
317
|
-
});
|
|
318
|
-
it("has a useful `value`", async () => {
|
|
319
|
-
el.focus();
|
|
320
|
-
await sendKeys({ type: "7" });
|
|
321
|
-
await sendKeys({ press: "Enter" });
|
|
322
|
-
expect(inputSpy.calledWith(507), "input").to.be.true;
|
|
323
|
-
expect(changeSpy.calledWith(507), "change").to.be.true;
|
|
324
|
-
await sendKeys({ type: ",00" });
|
|
325
|
-
await sendKeys({ press: "Enter" });
|
|
326
|
-
expect(inputSpy.calledWith(5070), "input").to.be.true;
|
|
327
|
-
expect(inputSpy.calledWith(50700), "input").to.be.true;
|
|
328
|
-
expect(changeSpy.calledWith(50700), "change").to.be.true;
|
|
329
|
-
});
|
|
330
|
-
it("has a useful `value` - percent", async () => {
|
|
331
|
-
el.formatOptions = { style: "percent" };
|
|
332
|
-
el.value = 0.45;
|
|
333
|
-
expect(el.value).to.equal(0.45);
|
|
334
|
-
el.focus();
|
|
335
|
-
await sendKeys({ type: "7" });
|
|
336
|
-
expect(inputSpy.calledWith(4.57), "first input").to.be.true;
|
|
337
|
-
await sendKeys({ press: "Backspace" });
|
|
338
|
-
await sendKeys({ press: "Backspace" });
|
|
339
|
-
await sendKeys({ press: "Backspace" });
|
|
340
|
-
await sendKeys({ press: "Enter" });
|
|
341
|
-
expect(el.value).to.equal(0.04);
|
|
342
|
-
expect(inputSpy.calledWith(0.45), "second input").to.be.true;
|
|
343
|
-
expect(inputSpy.calledWith(0.04), "third input").to.be.true;
|
|
344
|
-
expect(changeSpy.calledWith(0.04), "change").to.be.true;
|
|
345
|
-
});
|
|
346
|
-
it("has a useful `value` - currency", async () => {
|
|
347
|
-
el.formatOptions = {
|
|
348
|
-
style: "currency",
|
|
349
|
-
currency: "EUR",
|
|
350
|
-
currencyDisplay: "code",
|
|
351
|
-
currencySign: "accounting"
|
|
352
|
-
};
|
|
353
|
-
await elementUpdated(el);
|
|
354
|
-
el.value = 45;
|
|
355
|
-
expect(el.value).to.equal(45);
|
|
356
|
-
el.focus();
|
|
357
|
-
await sendKeys({ type: "7" });
|
|
358
|
-
expect(el.value).to.equal(45.007);
|
|
359
|
-
expect(inputSpy.calledWith(el.value), "first input").to.be.true;
|
|
360
|
-
await sendKeys({ press: "ArrowLeft" });
|
|
361
|
-
await sendKeys({ press: "ArrowLeft" });
|
|
362
|
-
await sendKeys({ press: "ArrowLeft" });
|
|
363
|
-
await sendKeys({ press: "ArrowLeft" });
|
|
364
|
-
await sendKeys({ press: "ArrowLeft" });
|
|
365
|
-
await sendKeys({ press: "ArrowLeft" });
|
|
366
|
-
await sendKeys({ press: "ArrowLeft" });
|
|
367
|
-
await sendKeys({ press: "ArrowLeft" });
|
|
368
|
-
await sendKeys({ press: "ArrowLeft" });
|
|
369
|
-
await sendKeys({ press: "ArrowLeft" });
|
|
370
|
-
await sendKeys({ type: "1" });
|
|
371
|
-
await sendKeys({ press: "Enter" });
|
|
372
|
-
expect(el.value).to.equal(145.007);
|
|
373
|
-
expect(inputSpy.calledWith(145.007), "second input").to.be.true;
|
|
374
|
-
expect(changeSpy.calledWith(145.007), "change").to.be.true;
|
|
375
|
-
});
|
|
376
|
-
it("one input/one change for each Arrow*", async () => {
|
|
377
|
-
el.focus();
|
|
378
|
-
await sendKeys({ press: "ArrowUp" });
|
|
379
|
-
expect(inputSpy.callCount).to.equal(1);
|
|
380
|
-
expect(changeSpy.callCount).to.equal(1);
|
|
381
|
-
expect(el.value).to.equal(51);
|
|
382
|
-
await sendKeys({ press: "ArrowDown" });
|
|
383
|
-
expect(inputSpy.callCount).to.equal(2);
|
|
384
|
-
expect(changeSpy.callCount).to.equal(2);
|
|
385
|
-
expect(el.value).to.equal(50);
|
|
386
|
-
});
|
|
387
|
-
it("one input/one change for each click", async () => {
|
|
388
|
-
await clickBySelector(el, ".stepUp");
|
|
389
|
-
expect(inputSpy.callCount).to.equal(1);
|
|
390
|
-
expect(changeSpy.callCount).to.equal(1);
|
|
391
|
-
expect(el.value).to.equal(51);
|
|
392
|
-
await clickBySelector(el, ".stepDown");
|
|
393
|
-
expect(inputSpy.callCount).to.equal(2);
|
|
394
|
-
expect(changeSpy.callCount).to.equal(2);
|
|
395
|
-
expect(el.value).to.equal(50);
|
|
396
|
-
});
|
|
397
|
-
it("click with modifier key", async () => {
|
|
398
|
-
let target = el.shadowRoot.querySelector(".stepUp");
|
|
399
|
-
const stepUpRect = target.getBoundingClientRect();
|
|
400
|
-
const options = {
|
|
401
|
-
bubbles: true,
|
|
402
|
-
composed: true,
|
|
403
|
-
shiftKey: true,
|
|
404
|
-
clientX: stepUpRect.x + 1,
|
|
405
|
-
clientY: stepUpRect.y + 1
|
|
406
|
-
};
|
|
407
|
-
el.buttons.setPointerCapture = () => {
|
|
408
|
-
return;
|
|
409
|
-
};
|
|
410
|
-
el.buttons.releasePointerCapture = () => {
|
|
411
|
-
return;
|
|
412
|
-
};
|
|
413
|
-
let input = oneEvent(el, "input");
|
|
414
|
-
target.dispatchEvent(new PointerEvent("pointerdown", options));
|
|
415
|
-
await input;
|
|
416
|
-
target.dispatchEvent(new PointerEvent("pointerup", options));
|
|
417
|
-
expect(inputSpy.callCount).to.equal(1);
|
|
418
|
-
expect(changeSpy.callCount).to.equal(1);
|
|
419
|
-
expect(el.value).to.equal(60);
|
|
420
|
-
target = el.shadowRoot.querySelector(".stepDown");
|
|
421
|
-
const stepDownRect = target.getBoundingClientRect();
|
|
422
|
-
options.clientX = stepDownRect.x + 1;
|
|
423
|
-
options.clientY = stepDownRect.y + 1;
|
|
424
|
-
input = oneEvent(el, "input");
|
|
425
|
-
target.dispatchEvent(new PointerEvent("pointerdown", options));
|
|
426
|
-
await input;
|
|
427
|
-
target.dispatchEvent(new PointerEvent("pointerup", options));
|
|
428
|
-
expect(inputSpy.callCount).to.equal(2);
|
|
429
|
-
expect(changeSpy.callCount).to.equal(2);
|
|
430
|
-
expect(el.value).to.equal(50);
|
|
431
|
-
});
|
|
432
|
-
it("many input, but one change", async () => {
|
|
433
|
-
const buttonUp = el.shadowRoot.querySelector(".stepUp");
|
|
434
|
-
const buttonUpRect = buttonUp.getBoundingClientRect();
|
|
435
|
-
const buttonUpPosition = [
|
|
436
|
-
buttonUpRect.x + buttonUpRect.width / 2,
|
|
437
|
-
buttonUpRect.y + buttonUpRect.height / 2
|
|
438
|
-
];
|
|
439
|
-
const buttonDown = el.shadowRoot.querySelector(".stepDown");
|
|
440
|
-
const buttonDownRect = buttonDown.getBoundingClientRect();
|
|
441
|
-
const buttonDownPosition = [
|
|
442
|
-
buttonDownRect.x + buttonDownRect.width / 2,
|
|
443
|
-
buttonDownRect.y + buttonDownRect.height / 2
|
|
444
|
-
];
|
|
445
|
-
sendMouse({
|
|
446
|
-
steps: [
|
|
447
|
-
{
|
|
448
|
-
type: "move",
|
|
449
|
-
position: buttonUpPosition
|
|
450
|
-
},
|
|
451
|
-
{
|
|
452
|
-
type: "down"
|
|
453
|
-
}
|
|
454
|
-
]
|
|
455
|
-
});
|
|
456
|
-
await oneEvent(el, "input");
|
|
457
|
-
expect(el.value).to.equal(51);
|
|
458
|
-
expect(inputSpy.callCount).to.equal(1);
|
|
459
|
-
expect(changeSpy.callCount).to.equal(0);
|
|
460
|
-
await oneEvent(el, "input");
|
|
461
|
-
expect(el.value).to.equal(52);
|
|
462
|
-
expect(inputSpy.callCount).to.equal(2);
|
|
463
|
-
expect(changeSpy.callCount).to.equal(0);
|
|
464
|
-
sendMouse({
|
|
465
|
-
steps: [
|
|
466
|
-
{
|
|
467
|
-
type: "move",
|
|
468
|
-
position: buttonDownPosition
|
|
469
|
-
}
|
|
470
|
-
]
|
|
471
|
-
});
|
|
472
|
-
let framesToWait = FRAMES_PER_CHANGE * 2;
|
|
473
|
-
while (framesToWait) {
|
|
474
|
-
framesToWait -= 1;
|
|
475
|
-
await nextFrame();
|
|
476
|
-
}
|
|
477
|
-
expect(inputSpy.callCount).to.equal(4);
|
|
478
|
-
expect(changeSpy.callCount).to.equal(0);
|
|
479
|
-
await sendMouse({
|
|
480
|
-
steps: [
|
|
481
|
-
{
|
|
482
|
-
type: "up"
|
|
483
|
-
}
|
|
484
|
-
]
|
|
485
|
-
});
|
|
486
|
-
expect(inputSpy.callCount).to.equal(4);
|
|
487
|
-
expect(changeSpy.callCount).to.equal(1);
|
|
488
|
-
});
|
|
489
|
-
});
|
|
490
|
-
it("accepts pointer interactions with the stepper UI", async () => {
|
|
491
|
-
const inputSpy = spy();
|
|
492
|
-
const el = await getElFrom(Default({ value: 50 }));
|
|
493
|
-
el.addEventListener("input", () => inputSpy());
|
|
494
|
-
expect(el.formattedValue).to.equal("50");
|
|
495
|
-
expect(el.valueAsString).to.equal("50");
|
|
496
|
-
expect(el.value).to.equal(50);
|
|
497
|
-
const buttonUp = el.shadowRoot.querySelector(".stepUp");
|
|
498
|
-
const buttonUpRect = buttonUp.getBoundingClientRect();
|
|
499
|
-
const buttonUpPosition = [
|
|
500
|
-
buttonUpRect.x + buttonUpRect.width / 2,
|
|
501
|
-
buttonUpRect.y + buttonUpRect.height / 2
|
|
502
|
-
];
|
|
503
|
-
const buttonDown = el.shadowRoot.querySelector(".stepDown");
|
|
504
|
-
const buttonDownRect = buttonDown.getBoundingClientRect();
|
|
505
|
-
const buttonDownPosition = [
|
|
506
|
-
buttonDownRect.x + buttonDownRect.width / 2,
|
|
507
|
-
buttonDownRect.y + buttonDownRect.height / 2
|
|
508
|
-
];
|
|
509
|
-
const outsidePosition = [
|
|
510
|
-
buttonDownRect.x + buttonDownRect.width + 5,
|
|
511
|
-
buttonDownRect.y + buttonDownRect.height + 5
|
|
512
|
-
];
|
|
513
|
-
await sendMouse({
|
|
514
|
-
steps: [
|
|
515
|
-
{
|
|
516
|
-
type: "move",
|
|
517
|
-
position: buttonUpPosition
|
|
518
|
-
},
|
|
519
|
-
{
|
|
520
|
-
type: "down"
|
|
521
|
-
}
|
|
522
|
-
]
|
|
523
|
-
});
|
|
524
|
-
await oneEvent(el, "input");
|
|
525
|
-
let value = 50 + inputSpy.callCount;
|
|
526
|
-
expect(el.formattedValue).to.equal(String(value));
|
|
527
|
-
expect(el.valueAsString).to.equal(String(value));
|
|
528
|
-
expect(el.value).to.equal(value);
|
|
529
|
-
inputSpy.resetHistory();
|
|
530
|
-
await sendMouse({
|
|
531
|
-
steps: [
|
|
532
|
-
{
|
|
533
|
-
type: "move",
|
|
534
|
-
position: buttonDownPosition
|
|
535
|
-
}
|
|
536
|
-
]
|
|
537
|
-
});
|
|
538
|
-
value = value - inputSpy.callCount;
|
|
539
|
-
expect(el.formattedValue).to.equal(String(value));
|
|
540
|
-
expect(el.valueAsString).to.equal(String(value));
|
|
541
|
-
expect(el.value).to.equal(value);
|
|
542
|
-
inputSpy.resetHistory();
|
|
543
|
-
await sendMouse({
|
|
544
|
-
steps: [
|
|
545
|
-
{
|
|
546
|
-
type: "move",
|
|
547
|
-
position: outsidePosition
|
|
548
|
-
}
|
|
549
|
-
]
|
|
550
|
-
});
|
|
551
|
-
value = value - inputSpy.callCount;
|
|
552
|
-
expect(el.formattedValue).to.equal(String(value));
|
|
553
|
-
expect(el.valueAsString).to.equal(String(value));
|
|
554
|
-
expect(el.value).to.equal(value);
|
|
555
|
-
inputSpy.resetHistory();
|
|
556
|
-
await oneEvent(el, "input");
|
|
557
|
-
value = value - inputSpy.callCount;
|
|
558
|
-
expect(el.formattedValue).to.equal(String(value));
|
|
559
|
-
expect(el.valueAsString).to.equal(String(value));
|
|
560
|
-
expect(el.value).to.equal(value);
|
|
561
|
-
inputSpy.resetHistory();
|
|
562
|
-
await sendMouse({
|
|
563
|
-
steps: [
|
|
564
|
-
{
|
|
565
|
-
type: "up"
|
|
566
|
-
}
|
|
567
|
-
]
|
|
568
|
-
});
|
|
569
|
-
let framesToWait = FRAMES_PER_CHANGE;
|
|
570
|
-
while (framesToWait) {
|
|
571
|
-
framesToWait -= 1;
|
|
572
|
-
await nextFrame();
|
|
573
|
-
}
|
|
574
|
-
await elementUpdated(el);
|
|
575
|
-
value = value - inputSpy.callCount;
|
|
576
|
-
expect(el.formattedValue).to.equal(String(value));
|
|
577
|
-
expect(el.valueAsString).to.equal(String(value));
|
|
578
|
-
expect(el.value).to.equal(value);
|
|
579
|
-
});
|
|
580
|
-
it("surfaces `valueAsNumber`", async () => {
|
|
581
|
-
const el = await getElFrom(Default({}));
|
|
582
|
-
el.value = 1e3;
|
|
583
|
-
await elementUpdated(el);
|
|
584
|
-
expect(el.formattedValue).to.equal("1,000");
|
|
585
|
-
expect(el.valueAsString).to.equal("1000");
|
|
586
|
-
expect(el.value).to.equal(1e3);
|
|
587
|
-
el.valueAsString = "2222";
|
|
588
|
-
await elementUpdated(el);
|
|
589
|
-
expect(el.formattedValue).to.equal("2,222");
|
|
590
|
-
expect(el.valueAsString).to.equal("2222");
|
|
591
|
-
expect(el.value).to.equal(2222);
|
|
592
|
-
});
|
|
593
|
-
describe("manages `value` with `formatOptions`", () => {
|
|
594
|
-
it("manages decimals", async () => {
|
|
595
|
-
const el = await getElFrom(decimals({ value: 1.333333 }));
|
|
596
|
-
expect(el.value).to.equal(1.33);
|
|
597
|
-
expect(el.formattedValue).to.equal("+1.33");
|
|
598
|
-
expect(el.valueAsString).to.equal("1.33");
|
|
599
|
-
});
|
|
600
|
-
it("manages precents", async () => {
|
|
601
|
-
const el = await getElFrom(percents({ value: 0.45 }));
|
|
602
|
-
expect(el.formattedValue).to.equal("45%");
|
|
603
|
-
expect(el.valueAsString).to.equal("0.45");
|
|
604
|
-
expect(el.value).to.equal(0.45);
|
|
605
|
-
await clickBySelector(el, ".stepDown");
|
|
606
|
-
await elementUpdated(el);
|
|
607
|
-
expect(el.formattedValue).to.equal("44%");
|
|
608
|
-
expect(el.valueAsString).to.equal("0.44");
|
|
609
|
-
expect(el.value).to.equal(0.44);
|
|
610
|
-
await clickBySelector(el, ".stepUp");
|
|
611
|
-
await elementUpdated(el);
|
|
612
|
-
expect(el.formattedValue).to.equal("45%");
|
|
613
|
-
expect(el.valueAsString).to.equal("0.45");
|
|
614
|
-
expect(el.value).to.equal(0.45);
|
|
615
|
-
el.focus();
|
|
616
|
-
el.value = 0;
|
|
617
|
-
await sendKeys({ type: "54" });
|
|
618
|
-
await sendKeys({ press: "Enter" });
|
|
619
|
-
expect(el.formattedValue).to.equal("54%");
|
|
620
|
-
expect(el.valueAsString).to.equal("0.54");
|
|
621
|
-
expect(el.value).to.equal(0.54);
|
|
622
|
-
await elementUpdated(el);
|
|
623
|
-
expect(el.formattedValue).to.equal("54%");
|
|
624
|
-
expect(el.valueAsString).to.equal("0.54");
|
|
625
|
-
expect(el.value).to.equal(0.54);
|
|
626
|
-
});
|
|
627
|
-
it("manages currency", async () => {
|
|
628
|
-
const el = await getElFrom(currency({ value: 234.21 }));
|
|
629
|
-
expect(el.formattedValue).to.equal("EUR\xA0234.21");
|
|
630
|
-
expect(el.valueAsString).to.equal("234.21");
|
|
631
|
-
expect(el.value).to.equal(234.21);
|
|
632
|
-
});
|
|
633
|
-
it("manages units", async () => {
|
|
634
|
-
const el = await getElFrom(units({ value: 17 }));
|
|
635
|
-
expect(el.formattedValue).to.equal("17 inches");
|
|
636
|
-
expect(el.valueAsString).to.equal("17");
|
|
637
|
-
expect(el.value).to.equal(17);
|
|
638
|
-
});
|
|
639
|
-
it("manages units not supported by the browser", async () => {
|
|
640
|
-
const el = await getElFrom(pixels({ value: 17 }));
|
|
641
|
-
expect(el.formattedValue).to.equal("17px");
|
|
642
|
-
expect(el.valueAsString).to.equal("17");
|
|
643
|
-
expect(el.value).to.equal(17);
|
|
644
|
-
});
|
|
645
|
-
});
|
|
646
|
-
describe("max", () => {
|
|
647
|
-
let el;
|
|
648
|
-
let lastInputValue = 0;
|
|
649
|
-
let lastChangeValue = 0;
|
|
650
|
-
beforeEach(async () => {
|
|
651
|
-
el = await getElFrom(Default({
|
|
652
|
-
max: 10,
|
|
653
|
-
value: 10,
|
|
654
|
-
onInput: (value) => lastInputValue = value,
|
|
655
|
-
onChange: (value) => lastChangeValue = value
|
|
656
|
-
}));
|
|
657
|
-
expect(el.formattedValue).to.equal("10");
|
|
658
|
-
expect(el.valueAsString).to.equal("10");
|
|
659
|
-
expect(el.value).to.equal(10);
|
|
660
|
-
});
|
|
661
|
-
it("constrains input", async () => {
|
|
662
|
-
el.focus();
|
|
663
|
-
await sendKeys({ type: "15" });
|
|
664
|
-
await sendKeys({ press: "Enter" });
|
|
665
|
-
await elementUpdated(el);
|
|
666
|
-
expect(lastInputValue, "last input value").to.equal(10);
|
|
667
|
-
expect(lastChangeValue, "last change value").to.equal(10);
|
|
668
|
-
expect(el.formattedValue).to.equal("10");
|
|
669
|
-
expect(el.valueAsString).to.equal("10");
|
|
670
|
-
expect(el.value).to.equal(10);
|
|
671
|
-
});
|
|
672
|
-
it("constrains `value`", async () => {
|
|
673
|
-
el.value = 20;
|
|
674
|
-
await elementUpdated(el);
|
|
675
|
-
expect(el.formattedValue).to.equal("10");
|
|
676
|
-
expect(el.valueAsString).to.equal("10");
|
|
677
|
-
expect(el.value).to.equal(10);
|
|
678
|
-
});
|
|
679
|
-
it("validates on commit", async () => {
|
|
680
|
-
el.focus();
|
|
681
|
-
await sendKeys({ type: "15" });
|
|
682
|
-
await sendKeys({ press: "Enter" });
|
|
683
|
-
await elementUpdated(el);
|
|
684
|
-
expect(el.formattedValue).to.equal("10");
|
|
685
|
-
expect(el.valueAsString).to.equal("10");
|
|
686
|
-
expect(el.value).to.equal(10);
|
|
687
|
-
});
|
|
688
|
-
it("disabled `stepUp` button", async () => {
|
|
689
|
-
await clickBySelector(el, ".stepUp");
|
|
690
|
-
expect(el.formattedValue).to.equal("10");
|
|
691
|
-
expect(el.valueAsString).to.equal("10");
|
|
692
|
-
expect(el.value).to.equal(10);
|
|
693
|
-
});
|
|
694
|
-
it("validates late", async () => {
|
|
695
|
-
el.max = 5;
|
|
696
|
-
await elementUpdated(el);
|
|
697
|
-
expect(el.formattedValue).to.equal("5");
|
|
698
|
-
expect(el.valueAsString).to.equal("5");
|
|
699
|
-
expect(el.value).to.equal(5);
|
|
700
|
-
});
|
|
701
|
-
});
|
|
702
|
-
describe("min", () => {
|
|
703
|
-
let el;
|
|
704
|
-
let lastInputValue = 0;
|
|
705
|
-
let lastChangeValue = 0;
|
|
706
|
-
beforeEach(async () => {
|
|
707
|
-
el = await getElFrom(Default({
|
|
708
|
-
min: 10,
|
|
709
|
-
value: 10,
|
|
710
|
-
onInput: (value) => lastInputValue = value,
|
|
711
|
-
onChange: (value) => lastChangeValue = value
|
|
712
|
-
}));
|
|
713
|
-
expect(el.formattedValue).to.equal("10");
|
|
714
|
-
expect(el.valueAsString).to.equal("10");
|
|
715
|
-
expect(el.value).to.equal(10);
|
|
716
|
-
});
|
|
717
|
-
it("constrains input", async () => {
|
|
718
|
-
el.focus();
|
|
719
|
-
await sendKeys({ press: "Backspace" });
|
|
720
|
-
await sendKeys({ press: "Backspace" });
|
|
721
|
-
await sendKeys({ type: "5" });
|
|
722
|
-
await sendKeys({ press: "Enter" });
|
|
723
|
-
await elementUpdated(el);
|
|
724
|
-
expect(lastInputValue, "last input value").to.equal(10);
|
|
725
|
-
expect(lastChangeValue, "last change value").to.equal(10);
|
|
726
|
-
expect(el.formattedValue).to.equal("10");
|
|
727
|
-
expect(el.valueAsString).to.equal("10");
|
|
728
|
-
expect(el.value).to.equal(10);
|
|
729
|
-
});
|
|
730
|
-
xit("manages `inputMode` in iPhone", async () => {
|
|
731
|
-
await setUserAgent("Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148");
|
|
732
|
-
el.min = 0;
|
|
733
|
-
await elementUpdated(el);
|
|
734
|
-
expect(el.focusElement.inputMode).to.equal("numeric");
|
|
735
|
-
el.min = -10;
|
|
736
|
-
await elementUpdated(el);
|
|
737
|
-
expect(el.focusElement.inputMode).to.equal("text");
|
|
738
|
-
el.formatOptions = {
|
|
739
|
-
minimumFractionDigits: 1,
|
|
740
|
-
maximumFractionDigits: 2
|
|
741
|
-
};
|
|
742
|
-
el.min = 0;
|
|
743
|
-
await elementUpdated(el);
|
|
744
|
-
expect(el.focusElement.inputMode).to.equal("decimal");
|
|
745
|
-
});
|
|
746
|
-
xit("manages `inputMode` in Android", async () => {
|
|
747
|
-
await setUserAgent("Mozilla/5.0 (Linux; Android 10; SM-A205U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.210 Mobile Safari/537.36");
|
|
748
|
-
el.min = 0;
|
|
749
|
-
await elementUpdated(el);
|
|
750
|
-
expect(el.focusElement.inputMode).to.equal("numeric");
|
|
751
|
-
el.min = -10;
|
|
752
|
-
await elementUpdated(el);
|
|
753
|
-
expect(el.focusElement.inputMode).to.equal("numeric");
|
|
754
|
-
el.formatOptions = {
|
|
755
|
-
minimumFractionDigits: 1,
|
|
756
|
-
maximumFractionDigits: 2
|
|
757
|
-
};
|
|
758
|
-
el.min = 0;
|
|
759
|
-
await elementUpdated(el);
|
|
760
|
-
expect(el.focusElement.inputMode).to.equal("decimal");
|
|
761
|
-
});
|
|
762
|
-
it("constrains `value`", async () => {
|
|
763
|
-
el.value = 0;
|
|
764
|
-
await elementUpdated(el);
|
|
765
|
-
expect(el.formattedValue).to.equal("10");
|
|
766
|
-
expect(el.valueAsString).to.equal("10");
|
|
767
|
-
expect(el.value).to.equal(10);
|
|
768
|
-
});
|
|
769
|
-
it("validates on commit", async () => {
|
|
770
|
-
el.focus();
|
|
771
|
-
await sendKeys({ press: "0" });
|
|
772
|
-
await sendKeys({ press: "Enter" });
|
|
773
|
-
await elementUpdated(el);
|
|
774
|
-
expect(el.formattedValue).to.equal("100");
|
|
775
|
-
expect(el.valueAsString).to.equal("100");
|
|
776
|
-
expect(el.value).to.equal(100);
|
|
777
|
-
});
|
|
778
|
-
it("disabled `stepDown` button", async () => {
|
|
779
|
-
await clickBySelector(el, ".stepDown");
|
|
780
|
-
expect(el.formattedValue).to.equal("10");
|
|
781
|
-
expect(el.valueAsString).to.equal("10");
|
|
782
|
-
expect(el.value).to.equal(10);
|
|
783
|
-
});
|
|
784
|
-
it("validates late", async () => {
|
|
785
|
-
el.min = 15;
|
|
786
|
-
await elementUpdated(el);
|
|
787
|
-
expect(el.formattedValue).to.equal("15");
|
|
788
|
-
expect(el.valueAsString).to.equal("15");
|
|
789
|
-
expect(el.value).to.equal(15);
|
|
790
|
-
});
|
|
791
|
-
});
|
|
792
|
-
describe("step", () => {
|
|
793
|
-
let el;
|
|
794
|
-
beforeEach(async () => {
|
|
795
|
-
el = await getElFrom(Default({ value: 10, step: 5 }));
|
|
796
|
-
expect(el.formattedValue).to.equal("10");
|
|
797
|
-
expect(el.valueAsString).to.equal("10");
|
|
798
|
-
expect(el.value).to.equal(10);
|
|
799
|
-
});
|
|
800
|
-
it("via arrow up", async () => {
|
|
801
|
-
el.focus();
|
|
802
|
-
await elementUpdated(el);
|
|
803
|
-
await sendKeys({ press: "ArrowUp" });
|
|
804
|
-
await elementUpdated(el);
|
|
805
|
-
expect(el.formattedValue).to.equal("15");
|
|
806
|
-
expect(el.valueAsString).to.equal("15");
|
|
807
|
-
expect(el.value).to.equal(15);
|
|
808
|
-
});
|
|
809
|
-
it("via arrow down", async () => {
|
|
810
|
-
el.focus();
|
|
811
|
-
await elementUpdated(el);
|
|
812
|
-
await sendKeys({ press: "ArrowDown" });
|
|
813
|
-
await elementUpdated(el);
|
|
814
|
-
expect(el.formattedValue).to.equal("5");
|
|
815
|
-
expect(el.valueAsString).to.equal("5");
|
|
816
|
-
expect(el.value).to.equal(5);
|
|
817
|
-
});
|
|
818
|
-
it("step up via pointer", async () => {
|
|
819
|
-
await clickBySelector(el, ".stepUp");
|
|
820
|
-
expect(el.formattedValue).to.equal("15");
|
|
821
|
-
expect(el.valueAsString).to.equal("15");
|
|
822
|
-
expect(el.value).to.equal(15);
|
|
823
|
-
});
|
|
824
|
-
it("step down via pointer", async () => {
|
|
825
|
-
await clickBySelector(el, ".stepDown");
|
|
826
|
-
expect(el.formattedValue).to.equal("5");
|
|
827
|
-
expect(el.valueAsString).to.equal("5");
|
|
828
|
-
expect(el.value).to.equal(5);
|
|
829
|
-
});
|
|
830
|
-
});
|
|
831
|
-
describe("step + constraints", () => {
|
|
832
|
-
let el;
|
|
833
|
-
beforeEach(async () => {
|
|
834
|
-
el = await getElFrom(Default({ step: 5 }));
|
|
835
|
-
expect(el.formattedValue).to.equal("");
|
|
836
|
-
expect(el.valueAsString).to.equal("NaN");
|
|
837
|
-
expect(el.value).to.be.NaN;
|
|
838
|
-
});
|
|
839
|
-
it("steps", async () => {
|
|
840
|
-
el.focus();
|
|
841
|
-
await elementUpdated(el);
|
|
842
|
-
await sendKeys({ press: "ArrowUp" });
|
|
843
|
-
await elementUpdated(el);
|
|
844
|
-
expect(el.formattedValue).to.equal("0");
|
|
845
|
-
expect(el.valueAsString).to.equal("0");
|
|
846
|
-
expect(el.value).to.equal(0);
|
|
847
|
-
await sendKeys({ press: "ArrowUp" });
|
|
848
|
-
await elementUpdated(el);
|
|
849
|
-
expect(el.formattedValue).to.equal("5");
|
|
850
|
-
expect(el.valueAsString).to.equal("5");
|
|
851
|
-
expect(el.value).to.equal(5);
|
|
852
|
-
await sendKeys({ press: "ArrowUp" });
|
|
853
|
-
await elementUpdated(el);
|
|
854
|
-
expect(el.formattedValue).to.equal("10");
|
|
855
|
-
expect(el.valueAsString).to.equal("10");
|
|
856
|
-
expect(el.value).to.equal(10);
|
|
857
|
-
});
|
|
858
|
-
it("steps from min", async () => {
|
|
859
|
-
el.min = 5;
|
|
860
|
-
await elementUpdated(el);
|
|
861
|
-
el.focus();
|
|
862
|
-
await elementUpdated(el);
|
|
863
|
-
await sendKeys({ press: "ArrowUp" });
|
|
864
|
-
await elementUpdated(el);
|
|
865
|
-
expect(el.formattedValue).to.equal("5");
|
|
866
|
-
expect(el.valueAsString).to.equal("5");
|
|
867
|
-
expect(el.value).to.equal(5);
|
|
868
|
-
await sendKeys({ press: "ArrowUp" });
|
|
869
|
-
await elementUpdated(el);
|
|
870
|
-
expect(el.formattedValue).to.equal("10");
|
|
871
|
-
expect(el.valueAsString).to.equal("10");
|
|
872
|
-
expect(el.value).to.equal(10);
|
|
873
|
-
await sendKeys({ press: "ArrowUp" });
|
|
874
|
-
await elementUpdated(el);
|
|
875
|
-
expect(el.formattedValue).to.equal("15");
|
|
876
|
-
expect(el.valueAsString).to.equal("15");
|
|
877
|
-
expect(el.value).to.equal(15);
|
|
878
|
-
});
|
|
879
|
-
it("steps from mismatched min", async () => {
|
|
880
|
-
el.min = 2;
|
|
881
|
-
await elementUpdated(el);
|
|
882
|
-
el.focus();
|
|
883
|
-
await elementUpdated(el);
|
|
884
|
-
await sendKeys({ press: "ArrowUp" });
|
|
885
|
-
await elementUpdated(el);
|
|
886
|
-
expect(el.formattedValue).to.equal("2");
|
|
887
|
-
expect(el.valueAsString).to.equal("2");
|
|
888
|
-
expect(el.value).to.equal(2);
|
|
889
|
-
await sendKeys({ press: "ArrowUp" });
|
|
890
|
-
await elementUpdated(el);
|
|
891
|
-
expect(el.formattedValue).to.equal("7");
|
|
892
|
-
expect(el.valueAsString).to.equal("7");
|
|
893
|
-
expect(el.value).to.equal(7);
|
|
894
|
-
await sendKeys({ press: "ArrowUp" });
|
|
895
|
-
await elementUpdated(el);
|
|
896
|
-
expect(el.formattedValue).to.equal("12");
|
|
897
|
-
expect(el.valueAsString).to.equal("12");
|
|
898
|
-
expect(el.value).to.equal(12);
|
|
899
|
-
});
|
|
900
|
-
it("steps to mismatched max", async () => {
|
|
901
|
-
el.min = 2;
|
|
902
|
-
el.max = 10;
|
|
903
|
-
await elementUpdated(el);
|
|
904
|
-
el.focus();
|
|
905
|
-
await elementUpdated(el);
|
|
906
|
-
await sendKeys({ press: "ArrowUp" });
|
|
907
|
-
await elementUpdated(el);
|
|
908
|
-
expect(el.formattedValue).to.equal("2");
|
|
909
|
-
expect(el.valueAsString).to.equal("2");
|
|
910
|
-
expect(el.value).to.equal(2);
|
|
911
|
-
await sendKeys({ press: "ArrowUp" });
|
|
912
|
-
await elementUpdated(el);
|
|
913
|
-
expect(el.formattedValue).to.equal("7");
|
|
914
|
-
expect(el.valueAsString).to.equal("7");
|
|
915
|
-
expect(el.value).to.equal(7);
|
|
916
|
-
await sendKeys({ press: "ArrowUp" });
|
|
917
|
-
await elementUpdated(el);
|
|
918
|
-
expect(el.formattedValue).to.equal("7");
|
|
919
|
-
expect(el.valueAsString).to.equal("7");
|
|
920
|
-
expect(el.value).to.equal(7);
|
|
921
|
-
});
|
|
922
|
-
it("validates max + step", async () => {
|
|
923
|
-
el.value = 2;
|
|
924
|
-
el.min = 2;
|
|
925
|
-
el.max = 10;
|
|
926
|
-
await elementUpdated(el);
|
|
927
|
-
expect(el.formattedValue).to.equal("2");
|
|
928
|
-
expect(el.valueAsString).to.equal("2");
|
|
929
|
-
expect(el.value).to.equal(2);
|
|
930
|
-
el.value = 11;
|
|
931
|
-
await elementUpdated(el);
|
|
932
|
-
expect(el.formattedValue).to.equal("7");
|
|
933
|
-
expect(el.valueAsString).to.equal("7");
|
|
934
|
-
expect(el.value).to.equal(7);
|
|
935
|
-
el.value = 27;
|
|
936
|
-
await elementUpdated(el);
|
|
937
|
-
expect(el.formattedValue).to.equal("7");
|
|
938
|
-
expect(el.valueAsString).to.equal("7");
|
|
939
|
-
expect(el.value).to.equal(7);
|
|
940
|
-
});
|
|
941
|
-
});
|
|
942
|
-
describe("indeterminate", () => {
|
|
943
|
-
let el;
|
|
944
|
-
beforeEach(async () => {
|
|
945
|
-
el = await getElFrom(indeterminate(indeterminate.args));
|
|
946
|
-
expect(el.formattedValue).to.equal("100");
|
|
947
|
-
expect(el.valueAsString).to.equal("100");
|
|
948
|
-
expect(el.value).to.equal(100);
|
|
949
|
-
expect(el.displayValue).to.equal(indeterminatePlaceholder);
|
|
950
|
-
});
|
|
951
|
-
it('remove "-" on focus', async () => {
|
|
952
|
-
el.focus();
|
|
953
|
-
await elementUpdated(el);
|
|
954
|
-
expect(el.formattedValue).to.equal("100");
|
|
955
|
-
expect(el.valueAsString).to.equal("100");
|
|
956
|
-
expect(el.value).to.equal(100);
|
|
957
|
-
expect(el.displayValue).to.equal("");
|
|
958
|
-
el.blur();
|
|
959
|
-
await elementUpdated(el);
|
|
960
|
-
expect(el.formattedValue).to.equal("100");
|
|
961
|
-
expect(el.valueAsString).to.equal("100");
|
|
962
|
-
expect(el.value).to.equal(100);
|
|
963
|
-
expect(el.displayValue).to.equal(indeterminatePlaceholder);
|
|
964
|
-
});
|
|
965
|
-
it('return to "-" after suplied value is removed', async () => {
|
|
966
|
-
el.focus();
|
|
967
|
-
await elementUpdated(el);
|
|
968
|
-
expect(el.formattedValue).to.equal("100");
|
|
969
|
-
expect(el.valueAsString).to.equal("100");
|
|
970
|
-
expect(el.value).to.equal(100);
|
|
971
|
-
expect(el.displayValue).to.equal("");
|
|
972
|
-
await sendKeys({ type: "50" });
|
|
973
|
-
await elementUpdated(el);
|
|
974
|
-
expect(el.formattedValue).to.equal("50");
|
|
975
|
-
expect(el.valueAsString).to.equal("50");
|
|
976
|
-
expect(el.value).to.equal(50);
|
|
977
|
-
expect(el.displayValue).to.equal("50");
|
|
978
|
-
await sendKeys({ press: "Backspace" });
|
|
979
|
-
await sendKeys({ press: "Backspace" });
|
|
980
|
-
await elementUpdated(el);
|
|
981
|
-
expect(el.formattedValue).to.equal("100");
|
|
982
|
-
expect(el.valueAsString).to.equal("100");
|
|
983
|
-
expect(el.value).to.equal(100);
|
|
984
|
-
expect(el.displayValue).to.equal("");
|
|
985
|
-
el.blur();
|
|
986
|
-
await elementUpdated(el);
|
|
987
|
-
expect(el.formattedValue).to.equal("100");
|
|
988
|
-
expect(el.valueAsString).to.equal("100");
|
|
989
|
-
expect(el.value).to.equal(100);
|
|
990
|
-
expect(el.displayValue).to.equal(indeterminatePlaceholder);
|
|
991
|
-
});
|
|
992
|
-
it('starts from `value` on "ArrowUp" keypresses', async () => {
|
|
993
|
-
el.focus();
|
|
994
|
-
await elementUpdated(el);
|
|
995
|
-
await sendKeys({ press: "ArrowUp" });
|
|
996
|
-
await elementUpdated(el);
|
|
997
|
-
expect(el.formattedValue).to.equal("101");
|
|
998
|
-
expect(el.valueAsString).to.equal("101");
|
|
999
|
-
expect(el.value).to.equal(101);
|
|
1000
|
-
expect(el.displayValue).to.equal("101");
|
|
1001
|
-
el.blur();
|
|
1002
|
-
await elementUpdated(el);
|
|
1003
|
-
expect(el.formattedValue).to.equal("101");
|
|
1004
|
-
expect(el.valueAsString).to.equal("101");
|
|
1005
|
-
expect(el.value).to.equal(101);
|
|
1006
|
-
expect(el.displayValue).to.equal("101");
|
|
1007
|
-
});
|
|
1008
|
-
it("starts from `value` on click `.stepUp`", async () => {
|
|
1009
|
-
el.focus();
|
|
1010
|
-
await elementUpdated(el);
|
|
1011
|
-
await clickBySelector(el, ".stepUp");
|
|
1012
|
-
await elementUpdated(el);
|
|
1013
|
-
expect(el.formattedValue).to.equal("101");
|
|
1014
|
-
expect(el.valueAsString).to.equal("101");
|
|
1015
|
-
expect(el.value).to.equal(101);
|
|
1016
|
-
expect(el.displayValue).to.equal("101");
|
|
1017
|
-
el.blur();
|
|
1018
|
-
await elementUpdated(el);
|
|
1019
|
-
expect(el.formattedValue).to.equal("101");
|
|
1020
|
-
expect(el.valueAsString).to.equal("101");
|
|
1021
|
-
expect(el.value).to.equal(101);
|
|
1022
|
-
expect(el.displayValue).to.equal("101");
|
|
1023
|
-
});
|
|
1024
|
-
it('starts from `value` on "ArrowDown" keypresses', async () => {
|
|
1025
|
-
el.focus();
|
|
1026
|
-
await elementUpdated(el);
|
|
1027
|
-
await sendKeys({ press: "ArrowDown" });
|
|
1028
|
-
await elementUpdated(el);
|
|
1029
|
-
expect(el.formattedValue).to.equal("99");
|
|
1030
|
-
expect(el.valueAsString).to.equal("99");
|
|
1031
|
-
expect(el.value).to.equal(99);
|
|
1032
|
-
expect(el.displayValue).to.equal("99");
|
|
1033
|
-
el.blur();
|
|
1034
|
-
await elementUpdated(el);
|
|
1035
|
-
expect(el.formattedValue).to.equal("99");
|
|
1036
|
-
expect(el.valueAsString).to.equal("99");
|
|
1037
|
-
expect(el.value).to.equal(99);
|
|
1038
|
-
expect(el.displayValue).to.equal("99");
|
|
1039
|
-
});
|
|
1040
|
-
it("starts from `value` on click `.stepDown`", async () => {
|
|
1041
|
-
el.focus();
|
|
1042
|
-
await elementUpdated(el);
|
|
1043
|
-
await clickBySelector(el, ".stepDown");
|
|
1044
|
-
await elementUpdated(el);
|
|
1045
|
-
expect(el.formattedValue).to.equal("99");
|
|
1046
|
-
expect(el.valueAsString).to.equal("99");
|
|
1047
|
-
expect(el.value).to.equal(99);
|
|
1048
|
-
expect(el.displayValue).to.equal("99");
|
|
1049
|
-
el.blur();
|
|
1050
|
-
await elementUpdated(el);
|
|
1051
|
-
expect(el.formattedValue).to.equal("99");
|
|
1052
|
-
expect(el.valueAsString).to.equal("99");
|
|
1053
|
-
expect(el.value).to.equal(99);
|
|
1054
|
-
expect(el.displayValue).to.equal("99");
|
|
1055
|
-
});
|
|
1056
|
-
});
|
|
1057
|
-
it("removes the stepper UI with [hide-stepper]", async () => {
|
|
1058
|
-
const el = await getElFrom(Default({ hideStepper: true }));
|
|
1059
|
-
const stepUp = el.shadowRoot.querySelector(".stepUp");
|
|
1060
|
-
const stepDown = el.shadowRoot.querySelector(".stepDown");
|
|
1061
|
-
expect(stepUp).to.be.null;
|
|
1062
|
-
expect(stepDown).to.be.null;
|
|
1063
|
-
});
|
|
1064
|
-
describe("Disabled", () => {
|
|
1065
|
-
let el;
|
|
1066
|
-
beforeEach(async () => {
|
|
1067
|
-
el = await getElFrom(Default({ disabled: true, value: 1337 }));
|
|
1068
|
-
expect(el.formattedValue).to.equal("1,337");
|
|
1069
|
-
expect(el.valueAsString).to.equal("1337");
|
|
1070
|
-
expect(el.value).to.equal(1337);
|
|
1071
|
-
el.focus();
|
|
1072
|
-
await elementUpdated(el);
|
|
1073
|
-
});
|
|
1074
|
-
afterEach(async () => {
|
|
1075
|
-
await elementUpdated(el);
|
|
1076
|
-
expect(el.formattedValue).to.equal("1,337");
|
|
1077
|
-
expect(el.valueAsString).to.equal("1337");
|
|
1078
|
-
expect(el.value).to.equal(1337);
|
|
1079
|
-
});
|
|
1080
|
-
it("presents as `disabled`", async () => {
|
|
1081
|
-
await sendKeys({ type: "12345" });
|
|
1082
|
-
await elementUpdated(el);
|
|
1083
|
-
await sendKeys({ press: "Enter" });
|
|
1084
|
-
});
|
|
1085
|
-
it("prevents increment via keyboard", async () => {
|
|
1086
|
-
await sendKeys({ press: "ArrowUp" });
|
|
1087
|
-
});
|
|
1088
|
-
it("prevents decrement via keyboard", async () => {
|
|
1089
|
-
await sendKeys({ press: "ArrowDown" });
|
|
1090
|
-
});
|
|
1091
|
-
it("prevents increment via scroll", async () => {
|
|
1092
|
-
el.dispatchEvent(new WheelEvent("wheel", { deltaY: 1 }));
|
|
1093
|
-
});
|
|
1094
|
-
it("prevents decrement via scroll", async () => {
|
|
1095
|
-
el.dispatchEvent(new WheelEvent("wheel", { deltaY: -1 }));
|
|
1096
|
-
});
|
|
1097
|
-
it("prevents increment via stepper button", async () => {
|
|
1098
|
-
await clickBySelector(el, ".stepUp");
|
|
1099
|
-
});
|
|
1100
|
-
it("prevents decrement via stepper button", async () => {
|
|
1101
|
-
await clickBySelector(el, ".stepDown");
|
|
1102
|
-
});
|
|
1103
|
-
});
|
|
1104
|
-
describe("Readonly", () => {
|
|
1105
|
-
let el;
|
|
1106
|
-
beforeEach(async () => {
|
|
1107
|
-
el = await getElFrom(Default({ readonly: true, value: 1337 }));
|
|
1108
|
-
expect(el.formattedValue).to.equal("1,337");
|
|
1109
|
-
expect(el.valueAsString).to.equal("1337");
|
|
1110
|
-
expect(el.value).to.equal(1337);
|
|
1111
|
-
el.focus();
|
|
1112
|
-
await elementUpdated(el);
|
|
1113
|
-
});
|
|
1114
|
-
afterEach(async () => {
|
|
1115
|
-
await elementUpdated(el);
|
|
1116
|
-
expect(el.formattedValue).to.equal("1,337");
|
|
1117
|
-
expect(el.valueAsString).to.equal("1337");
|
|
1118
|
-
expect(el.value).to.equal(1337);
|
|
1119
|
-
});
|
|
1120
|
-
it("presents as `readonly`", async () => {
|
|
1121
|
-
await sendKeys({ type: "12345" });
|
|
1122
|
-
await elementUpdated(el);
|
|
1123
|
-
await sendKeys({ press: "Enter" });
|
|
1124
|
-
});
|
|
1125
|
-
it("prevents increment via keyboard", async () => {
|
|
1126
|
-
await sendKeys({ press: "ArrowUp" });
|
|
1127
|
-
});
|
|
1128
|
-
it("prevents decrement via keyboard", async () => {
|
|
1129
|
-
await sendKeys({ press: "ArrowDown" });
|
|
1130
|
-
});
|
|
1131
|
-
it("prevents increment via scroll", async () => {
|
|
1132
|
-
el.dispatchEvent(new WheelEvent("wheel", { deltaY: 1 }));
|
|
1133
|
-
});
|
|
1134
|
-
it("prevents decrement via scroll", async () => {
|
|
1135
|
-
el.dispatchEvent(new WheelEvent("wheel", { deltaY: -1 }));
|
|
1136
|
-
});
|
|
1137
|
-
it("prevents increment via stepper button", async () => {
|
|
1138
|
-
await clickBySelector(el, ".stepUp");
|
|
1139
|
-
});
|
|
1140
|
-
it("prevents decrement via stepper button", async () => {
|
|
1141
|
-
await clickBySelector(el, ".stepDown");
|
|
1142
|
-
});
|
|
1143
|
-
});
|
|
1144
|
-
});
|
|
5
|
+
`);e(u.formattedValue).to.equal("1\u202F337"),e(u.valueAsString).to.equal("1337"),e(u.value).to.equal(1337),u.focus(),await l({type:"7331"}),await t(u),await l({press:"Enter"}),await t(u),e(u.formattedValue).to.equal("13\u202F377\u202F331"),e(u.valueAsString).to.equal("13377331"),e(u.value).to.equal(13377331)})}),describe("Step",()=>{it("can be 0",async()=>{const a=await n(w({step:0,min:0,max:10,value:5}));e(a.value).to.equal(5),e(a.formattedValue).to.equal("5"),e(a.valueAsString).to.equal("5")})}),describe("Increments",()=>{let a;beforeEach(async()=>{a=await n(w({})),e(a.value).to.be.NaN,e(a.formattedValue).to.equal(""),e(a.valueAsString).to.equal("NaN")}),it('via pointer, only "left" button',async()=>{await r(a,".stepUp",{button:"middle"}),e(a.formattedValue).to.equal(""),e(a.valueAsString).to.equal("NaN"),e(a.value).to.be.NaN}),it("via pointer",async()=>{await r(a,".stepUp"),e(a.formattedValue).to.equal("0"),e(a.valueAsString).to.equal("0"),e(a.value).to.equal(0),await r(a,".stepUp"),e(a.formattedValue).to.equal("1"),e(a.valueAsString).to.equal("1"),e(a.value).to.equal(1)}),it("via arrow up",async()=>{a.focus(),await t(a),await l({press:"ArrowUp"}),await t(a),e(a.formattedValue).to.equal("0"),e(a.valueAsString).to.equal("0"),e(a.value).to.equal(0),await l({press:"ArrowUp"}),await t(a),e(a.formattedValue).to.equal("1"),e(a.valueAsString).to.equal("1"),e(a.value).to.equal(1)}),it("via arrow up (shift modified)",async()=>{a.focus(),await t(a),await l({press:"ArrowUp"}),await t(a),e(a.formattedValue).to.equal("0"),e(a.valueAsString).to.equal("0"),e(a.value).to.equal(0),await l({press:"Shift+ArrowUp"}),await t(a),e(a.formattedValue).to.equal("10"),e(a.valueAsString).to.equal("10"),e(a.value).to.equal(10)}),it("via arrow up (custom shift modified value)",async()=>{a.focus(),a.stepModifier=5,a.step=3,await t(a),await l({press:"ArrowUp"}),await t(a),e(a.formattedValue).to.equal("0"),e(a.valueAsString).to.equal("0"),e(a.value).to.equal(0),await l({press:"Shift+ArrowUp"}),await t(a),e(a.formattedValue).to.equal("15"),e(a.valueAsString).to.equal("15"),e(a.value).to.equal(15)}),it("via scroll",async()=>{a.focus(),await t(a),e(a.focused).to.be.true,a.dispatchEvent(new WheelEvent("wheel",{deltaY:1})),await t(a),e(a.formattedValue).to.equal("0"),e(a.valueAsString).to.equal("0"),e(a.value).to.equal(0),a.dispatchEvent(new WheelEvent("wheel",{deltaY:100})),await t(a),e(a.formattedValue).to.equal("1"),e(a.valueAsString).to.equal("1"),e(a.value).to.equal(1)}),it("via scroll (shift modified)",async()=>{a.focus(),await t(a),e(a.focused).to.be.true,a.dispatchEvent(new WheelEvent("wheel",{deltaX:1,shiftKey:!0})),await t(a),e(a.formattedValue).to.equal("0"),e(a.valueAsString).to.equal("0"),e(a.value).to.equal(0),a.dispatchEvent(new WheelEvent("wheel",{deltaX:100,shiftKey:!0})),await t(a),e(a.formattedValue).to.equal("10"),e(a.valueAsString).to.equal("10"),e(a.value).to.equal(10)})}),describe("Decrements",()=>{let a;beforeEach(async()=>{a=await n(w({})),e(a.value).to.be.NaN,e(a.formattedValue).to.equal(""),e(a.valueAsString).to.equal("NaN")}),it('via pointer, only "left" button',async()=>{await r(a,".stepDown",{button:"middle"}),e(a.formattedValue).to.equal(""),e(a.valueAsString).to.equal("NaN"),e(a.value).to.be.NaN}),it("via pointer",async()=>{await r(a,".stepDown"),e(a.formattedValue).to.equal("0"),e(a.valueAsString).to.equal("0"),e(a.value).to.equal(0),await r(a,".stepDown"),e(a.formattedValue).to.equal("-1"),e(a.valueAsString).to.equal("-1"),e(a.value).to.equal(-1)}),it("via arrow down",async()=>{a.focus(),await t(a),await l({press:"ArrowDown"}),await t(a),e(a.formattedValue).to.equal("0"),e(a.valueAsString).to.equal("0"),e(a.value).to.equal(0),await l({press:"ArrowDown"}),await t(a),e(a.formattedValue).to.equal("-1"),e(a.valueAsString).to.equal("-1"),e(a.value).to.equal(-1)}),it("via arrow down (shift modified)",async()=>{a.focus(),await t(a),await l({press:"ArrowDown"}),await t(a),e(a.formattedValue).to.equal("0"),e(a.valueAsString).to.equal("0"),e(a.value).to.equal(0),await l({press:"Shift+ArrowDown"}),await t(a),e(a.formattedValue).to.equal("-10"),e(a.valueAsString).to.equal("-10"),e(a.value).to.equal(-10)}),it("via arrow up (custom shift modified value)",async()=>{a.focus(),a.stepModifier=5,a.step=3,await t(a),await l({press:"ArrowDown"}),await t(a),e(a.formattedValue).to.equal("0"),e(a.valueAsString).to.equal("0"),e(a.value).to.equal(0),await l({press:"Shift+ArrowDown"}),await t(a),e(a.formattedValue).to.equal("-15"),e(a.valueAsString).to.equal("-15"),e(a.value).to.equal(-15)}),it("via scroll",async()=>{a.focus(),await t(a),e(a.focused).to.be.true,a.dispatchEvent(new WheelEvent("wheel",{deltaY:-1})),await t(a),e(a.formattedValue).to.equal("0"),e(a.valueAsString).to.equal("0"),e(a.value).to.equal(0),a.dispatchEvent(new WheelEvent("wheel",{deltaY:-100})),await t(a),e(a.formattedValue).to.equal("-1"),e(a.valueAsString).to.equal("-1"),e(a.value).to.equal(-1)}),it("via scroll (shift modified)",async()=>{a.focus(),await t(a),e(a.focused).to.be.true,a.dispatchEvent(new WheelEvent("wheel",{deltaX:-1,shiftKey:!0})),await t(a),e(a.formattedValue).to.equal("0"),e(a.valueAsString).to.equal("0"),e(a.value).to.equal(0),a.dispatchEvent(new WheelEvent("wheel",{deltaX:-100,shiftKey:!0})),await t(a),e(a.formattedValue).to.equal("-10"),e(a.valueAsString).to.equal("-10"),e(a.value).to.equal(-10)})}),describe("dispatched events",()=>{const a=g(),u=g();let o;beforeEach(async()=>{a.resetHistory(),u.resetHistory(),o=await n(w({value:50})),o.addEventListener("input",s=>{var c;a((c=s.target)==null?void 0:c.value)}),o.addEventListener("change",s=>{var c;u((c=s.target)==null?void 0:c.value)})}),it("has a useful `value`",async()=>{o.focus(),await l({type:"7"}),await l({press:"Enter"}),e(a.calledWith(507),"input").to.be.true,e(u.calledWith(507),"change").to.be.true,await l({type:",00"}),await l({press:"Enter"}),e(a.calledWith(5070),"input").to.be.true,e(a.calledWith(50700),"input").to.be.true,e(u.calledWith(50700),"change").to.be.true}),it("has a useful `value` - percent",async()=>{o.formatOptions={style:"percent"},o.value=.45,e(o.value).to.equal(.45),o.focus(),await l({type:"7"}),e(a.calledWith(4.57),"first input").to.be.true,await l({press:"Backspace"}),await l({press:"Backspace"}),await l({press:"Backspace"}),await l({press:"Enter"}),e(o.value).to.equal(.04),e(a.calledWith(.45),"second input").to.be.true,e(a.calledWith(.04),"third input").to.be.true,e(u.calledWith(.04),"change").to.be.true}),it("has a useful `value` - currency",async()=>{o.formatOptions={style:"currency",currency:"EUR",currencyDisplay:"code",currencySign:"accounting"},await t(o),o.value=45,e(o.value).to.equal(45),o.focus(),await l({type:"7"}),e(o.value).to.equal(45.007),e(a.calledWith(o.value),"first input").to.be.true,await l({press:"ArrowLeft"}),await l({press:"ArrowLeft"}),await l({press:"ArrowLeft"}),await l({press:"ArrowLeft"}),await l({press:"ArrowLeft"}),await l({press:"ArrowLeft"}),await l({press:"ArrowLeft"}),await l({press:"ArrowLeft"}),await l({press:"ArrowLeft"}),await l({press:"ArrowLeft"}),await l({type:"1"}),await l({press:"Enter"}),e(o.value).to.equal(145.007),e(a.calledWith(145.007),"second input").to.be.true,e(u.calledWith(145.007),"change").to.be.true}),it("one input/one change for each Arrow*",async()=>{o.focus(),await l({press:"ArrowUp"}),e(a.callCount).to.equal(1),e(u.callCount).to.equal(1),e(o.value).to.equal(51),await l({press:"ArrowDown"}),e(a.callCount).to.equal(2),e(u.callCount).to.equal(2),e(o.value).to.equal(50)}),it("one input/one change for each click",async()=>{await r(o,".stepUp"),e(a.callCount).to.equal(1),e(u.callCount).to.equal(1),e(o.value).to.equal(51),await r(o,".stepDown"),e(a.callCount).to.equal(2),e(u.callCount).to.equal(2),e(o.value).to.equal(50)}),it("click with modifier key",async()=>{let s=o.shadowRoot.querySelector(".stepUp");const c=s.getBoundingClientRect(),q={bubbles:!0,composed:!0,shiftKey:!0,clientX:c.x+1,clientY:c.y+1};o.buttons.setPointerCapture=()=>{},o.buttons.releasePointerCapture=()=>{};let p=m(o,"input");s.dispatchEvent(new PointerEvent("pointerdown",q)),await p,s.dispatchEvent(new PointerEvent("pointerup",q)),e(a.callCount).to.equal(1),e(u.callCount).to.equal(1),e(o.value).to.equal(60),s=o.shadowRoot.querySelector(".stepDown");const v=s.getBoundingClientRect();q.clientX=v.x+1,q.clientY=v.y+1,p=m(o,"input"),s.dispatchEvent(new PointerEvent("pointerdown",q)),await p,s.dispatchEvent(new PointerEvent("pointerup",q)),e(a.callCount).to.equal(2),e(u.callCount).to.equal(2),e(o.value).to.equal(50)}),it("many input, but one change",async()=>{const c=o.shadowRoot.querySelector(".stepUp").getBoundingClientRect(),q=[c.x+c.width/2,c.y+c.height/2],v=o.shadowRoot.querySelector(".stepDown").getBoundingClientRect(),f=[v.x+v.width/2,v.y+v.height/2];d({steps:[{type:"move",position:q},{type:"down"}]}),await m(o,"input"),e(o.value).to.equal(51),e(a.callCount).to.equal(1),e(u.callCount).to.equal(0),await m(o,"input"),e(o.value).to.equal(52),e(a.callCount).to.equal(2),e(u.callCount).to.equal(0),d({steps:[{type:"move",position:f}]});let i=S*2;for(;i;)i-=1,await h();e(a.callCount).to.equal(4),e(u.callCount).to.equal(0),await d({steps:[{type:"up"}]}),e(a.callCount).to.equal(4),e(u.callCount).to.equal(1)})}),it("accepts pointer interactions with the stepper UI",async()=>{const a=g(),u=await n(w({value:50}));u.addEventListener("input",()=>a()),e(u.formattedValue).to.equal("50"),e(u.valueAsString).to.equal("50"),e(u.value).to.equal(50);const s=u.shadowRoot.querySelector(".stepUp").getBoundingClientRect(),c=[s.x+s.width/2,s.y+s.height/2],p=u.shadowRoot.querySelector(".stepDown").getBoundingClientRect(),v=[p.x+p.width/2,p.y+p.height/2],f=[p.x+p.width+5,p.y+p.height+5];await d({steps:[{type:"move",position:c},{type:"down"}]}),await m(u,"input");let i=50+a.callCount;e(u.formattedValue).to.equal(String(i)),e(u.valueAsString).to.equal(String(i)),e(u.value).to.equal(i),a.resetHistory(),await d({steps:[{type:"move",position:v}]}),i=i-a.callCount,e(u.formattedValue).to.equal(String(i)),e(u.valueAsString).to.equal(String(i)),e(u.value).to.equal(i),a.resetHistory(),await d({steps:[{type:"move",position:f}]}),i=i-a.callCount,e(u.formattedValue).to.equal(String(i)),e(u.valueAsString).to.equal(String(i)),e(u.value).to.equal(i),a.resetHistory(),await m(u,"input"),i=i-a.callCount,e(u.formattedValue).to.equal(String(i)),e(u.valueAsString).to.equal(String(i)),e(u.value).to.equal(i),a.resetHistory(),await d({steps:[{type:"up"}]});let A=S;for(;A;)A-=1,await h();await t(u),i=i-a.callCount,e(u.formattedValue).to.equal(String(i)),e(u.valueAsString).to.equal(String(i)),e(u.value).to.equal(i)}),it("surfaces `valueAsNumber`",async()=>{const a=await n(w({}));a.value=1e3,await t(a),e(a.formattedValue).to.equal("1,000"),e(a.valueAsString).to.equal("1000"),e(a.value).to.equal(1e3),a.valueAsString="2222",await t(a),e(a.formattedValue).to.equal("2,222"),e(a.valueAsString).to.equal("2222"),e(a.value).to.equal(2222)}),describe("manages `value` with `formatOptions`",()=>{it("manages decimals",async()=>{const a=await n(k({value:1.333333}));e(a.value).to.equal(1.33),e(a.formattedValue).to.equal("+1.33"),e(a.valueAsString).to.equal("1.33")}),it("manages precents",async()=>{const a=await n(C({value:.45}));e(a.formattedValue).to.equal("45%"),e(a.valueAsString).to.equal("0.45"),e(a.value).to.equal(.45),await r(a,".stepDown"),await t(a),e(a.formattedValue).to.equal("44%"),e(a.valueAsString).to.equal("0.44"),e(a.value).to.equal(.44),await r(a,".stepUp"),await t(a),e(a.formattedValue).to.equal("45%"),e(a.valueAsString).to.equal("0.45"),e(a.value).to.equal(.45),a.focus(),a.value=0,await l({type:"54"}),await l({press:"Enter"}),e(a.formattedValue).to.equal("54%"),e(a.valueAsString).to.equal("0.54"),e(a.value).to.equal(.54),await t(a),e(a.formattedValue).to.equal("54%"),e(a.valueAsString).to.equal("0.54"),e(a.value).to.equal(.54)}),it("manages currency",async()=>{const a=await n(D({value:234.21}));e(a.formattedValue).to.equal("EUR\xA0234.21"),e(a.valueAsString).to.equal("234.21"),e(a.value).to.equal(234.21)}),it("manages units",async()=>{const a=await n(x({value:17}));e(a.formattedValue).to.equal("17 inches"),e(a.valueAsString).to.equal("17"),e(a.value).to.equal(17)}),it("manages units not supported by the browser",async()=>{const a=await n(N({value:17}));e(a.formattedValue).to.equal("17px"),e(a.valueAsString).to.equal("17"),e(a.value).to.equal(17)})}),describe("max",()=>{let a,u=0,o=0;beforeEach(async()=>{a=await n(w({max:10,value:10,onInput:s=>u=s,onChange:s=>o=s})),e(a.formattedValue).to.equal("10"),e(a.valueAsString).to.equal("10"),e(a.value).to.equal(10)}),it("constrains input",async()=>{a.focus(),await l({type:"15"}),await l({press:"Enter"}),await t(a),e(u,"last input value").to.equal(10),e(o,"last change value").to.equal(10),e(a.formattedValue).to.equal("10"),e(a.valueAsString).to.equal("10"),e(a.value).to.equal(10)}),it("constrains `value`",async()=>{a.value=20,await t(a),e(a.formattedValue).to.equal("10"),e(a.valueAsString).to.equal("10"),e(a.value).to.equal(10)}),it("validates on commit",async()=>{a.focus(),await l({type:"15"}),await l({press:"Enter"}),await t(a),e(a.formattedValue).to.equal("10"),e(a.valueAsString).to.equal("10"),e(a.value).to.equal(10)}),it("disabled `stepUp` button",async()=>{await r(a,".stepUp"),e(a.formattedValue).to.equal("10"),e(a.valueAsString).to.equal("10"),e(a.value).to.equal(10)}),it("validates late",async()=>{a.max=5,await t(a),e(a.formattedValue).to.equal("5"),e(a.valueAsString).to.equal("5"),e(a.value).to.equal(5)})}),describe("min",()=>{let a,u=0,o=0;beforeEach(async()=>{a=await n(w({min:10,value:10,onInput:s=>u=s,onChange:s=>o=s})),e(a.formattedValue).to.equal("10"),e(a.valueAsString).to.equal("10"),e(a.value).to.equal(10)}),it("constrains input",async()=>{a.focus(),await l({press:"Backspace"}),await l({press:"Backspace"}),await l({type:"5"}),await l({press:"Enter"}),await t(a),e(u,"last input value").to.equal(10),e(o,"last change value").to.equal(10),e(a.formattedValue).to.equal("10"),e(a.valueAsString).to.equal("10"),e(a.value).to.equal(10)}),xit("manages `inputMode` in iPhone",async()=>{await V("Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148"),a.min=0,await t(a),e(a.focusElement.inputMode).to.equal("numeric"),a.min=-10,await t(a),e(a.focusElement.inputMode).to.equal("text"),a.formatOptions={minimumFractionDigits:1,maximumFractionDigits:2},a.min=0,await t(a),e(a.focusElement.inputMode).to.equal("decimal")}),xit("manages `inputMode` in Android",async()=>{await V("Mozilla/5.0 (Linux; Android 10; SM-A205U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.210 Mobile Safari/537.36"),a.min=0,await t(a),e(a.focusElement.inputMode).to.equal("numeric"),a.min=-10,await t(a),e(a.focusElement.inputMode).to.equal("numeric"),a.formatOptions={minimumFractionDigits:1,maximumFractionDigits:2},a.min=0,await t(a),e(a.focusElement.inputMode).to.equal("decimal")}),it("constrains `value`",async()=>{a.value=0,await t(a),e(a.formattedValue).to.equal("10"),e(a.valueAsString).to.equal("10"),e(a.value).to.equal(10)}),it("validates on commit",async()=>{a.focus(),await l({press:"0"}),await l({press:"Enter"}),await t(a),e(a.formattedValue).to.equal("100"),e(a.valueAsString).to.equal("100"),e(a.value).to.equal(100)}),it("disabled `stepDown` button",async()=>{await r(a,".stepDown"),e(a.formattedValue).to.equal("10"),e(a.valueAsString).to.equal("10"),e(a.value).to.equal(10)}),it("validates late",async()=>{a.min=15,await t(a),e(a.formattedValue).to.equal("15"),e(a.valueAsString).to.equal("15"),e(a.value).to.equal(15)})}),describe("step",()=>{let a;beforeEach(async()=>{a=await n(w({value:10,step:5})),e(a.formattedValue).to.equal("10"),e(a.valueAsString).to.equal("10"),e(a.value).to.equal(10)}),it("via arrow up",async()=>{a.focus(),await t(a),await l({press:"ArrowUp"}),await t(a),e(a.formattedValue).to.equal("15"),e(a.valueAsString).to.equal("15"),e(a.value).to.equal(15)}),it("via arrow down",async()=>{a.focus(),await t(a),await l({press:"ArrowDown"}),await t(a),e(a.formattedValue).to.equal("5"),e(a.valueAsString).to.equal("5"),e(a.value).to.equal(5)}),it("step up via pointer",async()=>{await r(a,".stepUp"),e(a.formattedValue).to.equal("15"),e(a.valueAsString).to.equal("15"),e(a.value).to.equal(15)}),it("step down via pointer",async()=>{await r(a,".stepDown"),e(a.formattedValue).to.equal("5"),e(a.valueAsString).to.equal("5"),e(a.value).to.equal(5)})}),describe("step + constraints",()=>{let a;beforeEach(async()=>{a=await n(w({step:5})),e(a.formattedValue).to.equal(""),e(a.valueAsString).to.equal("NaN"),e(a.value).to.be.NaN}),it("steps",async()=>{a.focus(),await t(a),await l({press:"ArrowUp"}),await t(a),e(a.formattedValue).to.equal("0"),e(a.valueAsString).to.equal("0"),e(a.value).to.equal(0),await l({press:"ArrowUp"}),await t(a),e(a.formattedValue).to.equal("5"),e(a.valueAsString).to.equal("5"),e(a.value).to.equal(5),await l({press:"ArrowUp"}),await t(a),e(a.formattedValue).to.equal("10"),e(a.valueAsString).to.equal("10"),e(a.value).to.equal(10)}),it("steps from min",async()=>{a.min=5,await t(a),a.focus(),await t(a),await l({press:"ArrowUp"}),await t(a),e(a.formattedValue).to.equal("5"),e(a.valueAsString).to.equal("5"),e(a.value).to.equal(5),await l({press:"ArrowUp"}),await t(a),e(a.formattedValue).to.equal("10"),e(a.valueAsString).to.equal("10"),e(a.value).to.equal(10),await l({press:"ArrowUp"}),await t(a),e(a.formattedValue).to.equal("15"),e(a.valueAsString).to.equal("15"),e(a.value).to.equal(15)}),it("steps from mismatched min",async()=>{a.min=2,await t(a),a.focus(),await t(a),await l({press:"ArrowUp"}),await t(a),e(a.formattedValue).to.equal("2"),e(a.valueAsString).to.equal("2"),e(a.value).to.equal(2),await l({press:"ArrowUp"}),await t(a),e(a.formattedValue).to.equal("7"),e(a.valueAsString).to.equal("7"),e(a.value).to.equal(7),await l({press:"ArrowUp"}),await t(a),e(a.formattedValue).to.equal("12"),e(a.valueAsString).to.equal("12"),e(a.value).to.equal(12)}),it("steps to mismatched max",async()=>{a.min=2,a.max=10,await t(a),a.focus(),await t(a),await l({press:"ArrowUp"}),await t(a),e(a.formattedValue).to.equal("2"),e(a.valueAsString).to.equal("2"),e(a.value).to.equal(2),await l({press:"ArrowUp"}),await t(a),e(a.formattedValue).to.equal("7"),e(a.valueAsString).to.equal("7"),e(a.value).to.equal(7),await l({press:"ArrowUp"}),await t(a),e(a.formattedValue).to.equal("7"),e(a.valueAsString).to.equal("7"),e(a.value).to.equal(7)}),it("validates max + step",async()=>{a.value=2,a.min=2,a.max=10,await t(a),e(a.formattedValue).to.equal("2"),e(a.valueAsString).to.equal("2"),e(a.value).to.equal(2),a.value=11,await t(a),e(a.formattedValue).to.equal("7"),e(a.valueAsString).to.equal("7"),e(a.value).to.equal(7),a.value=27,await t(a),e(a.formattedValue).to.equal("7"),e(a.valueAsString).to.equal("7"),e(a.value).to.equal(7)})}),describe("indeterminate",()=>{let a;beforeEach(async()=>{a=await n(b(b.args)),e(a.formattedValue).to.equal("100"),e(a.valueAsString).to.equal("100"),e(a.value).to.equal(100),e(a.displayValue).to.equal(y)}),it('remove "-" on focus',async()=>{a.focus(),await t(a),e(a.formattedValue).to.equal("100"),e(a.valueAsString).to.equal("100"),e(a.value).to.equal(100),e(a.displayValue).to.equal(""),a.blur(),await t(a),e(a.formattedValue).to.equal("100"),e(a.valueAsString).to.equal("100"),e(a.value).to.equal(100),e(a.displayValue).to.equal(y)}),it('return to "-" after suplied value is removed',async()=>{a.focus(),await t(a),e(a.formattedValue).to.equal("100"),e(a.valueAsString).to.equal("100"),e(a.value).to.equal(100),e(a.displayValue).to.equal(""),await l({type:"50"}),await t(a),e(a.formattedValue).to.equal("50"),e(a.valueAsString).to.equal("50"),e(a.value).to.equal(50),e(a.displayValue).to.equal("50"),await l({press:"Backspace"}),await l({press:"Backspace"}),await t(a),e(a.formattedValue).to.equal("100"),e(a.valueAsString).to.equal("100"),e(a.value).to.equal(100),e(a.displayValue).to.equal(""),a.blur(),await t(a),e(a.formattedValue).to.equal("100"),e(a.valueAsString).to.equal("100"),e(a.value).to.equal(100),e(a.displayValue).to.equal(y)}),it('starts from `value` on "ArrowUp" keypresses',async()=>{a.focus(),await t(a),await l({press:"ArrowUp"}),await t(a),e(a.formattedValue).to.equal("101"),e(a.valueAsString).to.equal("101"),e(a.value).to.equal(101),e(a.displayValue).to.equal("101"),a.blur(),await t(a),e(a.formattedValue).to.equal("101"),e(a.valueAsString).to.equal("101"),e(a.value).to.equal(101),e(a.displayValue).to.equal("101")}),it("starts from `value` on click `.stepUp`",async()=>{a.focus(),await t(a),await r(a,".stepUp"),await t(a),e(a.formattedValue).to.equal("101"),e(a.valueAsString).to.equal("101"),e(a.value).to.equal(101),e(a.displayValue).to.equal("101"),a.blur(),await t(a),e(a.formattedValue).to.equal("101"),e(a.valueAsString).to.equal("101"),e(a.value).to.equal(101),e(a.displayValue).to.equal("101")}),it('starts from `value` on "ArrowDown" keypresses',async()=>{a.focus(),await t(a),await l({press:"ArrowDown"}),await t(a),e(a.formattedValue).to.equal("99"),e(a.valueAsString).to.equal("99"),e(a.value).to.equal(99),e(a.displayValue).to.equal("99"),a.blur(),await t(a),e(a.formattedValue).to.equal("99"),e(a.valueAsString).to.equal("99"),e(a.value).to.equal(99),e(a.displayValue).to.equal("99")}),it("starts from `value` on click `.stepDown`",async()=>{a.focus(),await t(a),await r(a,".stepDown"),await t(a),e(a.formattedValue).to.equal("99"),e(a.valueAsString).to.equal("99"),e(a.value).to.equal(99),e(a.displayValue).to.equal("99"),a.blur(),await t(a),e(a.formattedValue).to.equal("99"),e(a.valueAsString).to.equal("99"),e(a.value).to.equal(99),e(a.displayValue).to.equal("99")})}),it("removes the stepper UI with [hide-stepper]",async()=>{const a=await n(w({hideStepper:!0})),u=a.shadowRoot.querySelector(".stepUp"),o=a.shadowRoot.querySelector(".stepDown");e(u).to.be.null,e(o).to.be.null}),describe("Disabled",()=>{let a;beforeEach(async()=>{a=await n(w({disabled:!0,value:1337})),e(a.formattedValue).to.equal("1,337"),e(a.valueAsString).to.equal("1337"),e(a.value).to.equal(1337),a.focus(),await t(a)}),afterEach(async()=>{await t(a),e(a.formattedValue).to.equal("1,337"),e(a.valueAsString).to.equal("1337"),e(a.value).to.equal(1337)}),it("presents as `disabled`",async()=>{await l({type:"12345"}),await t(a),await l({press:"Enter"})}),it("prevents increment via keyboard",async()=>{await l({press:"ArrowUp"})}),it("prevents decrement via keyboard",async()=>{await l({press:"ArrowDown"})}),it("prevents increment via scroll",async()=>{a.dispatchEvent(new WheelEvent("wheel",{deltaY:1}))}),it("prevents decrement via scroll",async()=>{a.dispatchEvent(new WheelEvent("wheel",{deltaY:-1}))}),it("prevents increment via stepper button",async()=>{await r(a,".stepUp")}),it("prevents decrement via stepper button",async()=>{await r(a,".stepDown")})}),describe("Readonly",()=>{let a;beforeEach(async()=>{a=await n(w({readonly:!0,value:1337})),e(a.formattedValue).to.equal("1,337"),e(a.valueAsString).to.equal("1337"),e(a.value).to.equal(1337),a.focus(),await t(a)}),afterEach(async()=>{await t(a),e(a.formattedValue).to.equal("1,337"),e(a.valueAsString).to.equal("1337"),e(a.value).to.equal(1337)}),it("presents as `readonly`",async()=>{await l({type:"12345"}),await t(a),await l({press:"Enter"})}),it("prevents increment via keyboard",async()=>{await l({press:"ArrowUp"})}),it("prevents decrement via keyboard",async()=>{await l({press:"ArrowDown"})}),it("prevents increment via scroll",async()=>{a.dispatchEvent(new WheelEvent("wheel",{deltaY:1}))}),it("prevents decrement via scroll",async()=>{a.dispatchEvent(new WheelEvent("wheel",{deltaY:-1}))}),it("prevents increment via stepper button",async()=>{await r(a,".stepUp")}),it("prevents decrement via stepper button",async()=>{await r(a,".stepDown")})})});
|
|
1145
6
|
//# sourceMappingURL=number-field.test.js.map
|