@spectrum-web-components/picker 0.30.0 → 0.30.1-overlay.31

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/test/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  import {
3
+ aTimeout,
3
4
  elementUpdated,
4
5
  expect,
5
6
  fixture,
@@ -15,7 +16,6 @@ import {
15
16
  arrowLeftEvent,
16
17
  arrowRightEvent,
17
18
  arrowUpEvent,
18
- escapeEvent,
19
19
  testForLitDevWarnings,
20
20
  tEvent
21
21
  } from "../../../test/testing-helpers.js";
@@ -27,18 +27,19 @@ import {
27
27
  import { iconsOnly } from "../stories/picker.stories.js";
28
28
  import { sendMouse } from "../../../test/plugins/browser.js";
29
29
  import { ignoreResizeObserverLoopError } from "../../../test/testing-helpers.js";
30
- import { isWebKit } from "@spectrum-web-components/shared/src/platform.js";
30
+ import "@spectrum-web-components/theme/sp-theme.js";
31
+ import "@spectrum-web-components/theme/src/themes.js";
31
32
  ignoreResizeObserverLoopError(before, after);
32
- const isMenuActiveElement = function() {
33
+ const isMenuActiveElement = function(el) {
33
34
  var _a;
34
- return ((_a = document.activeElement) == null ? void 0 : _a.localName) === "sp-menu";
35
+ return ((_a = el.shadowRoot.activeElement) == null ? void 0 : _a.localName) === "sp-menu";
35
36
  };
36
37
  export function runPickerTests() {
37
38
  let el;
38
39
  const pickerFixture = async () => {
39
40
  const test = await fixture(
40
41
  html`
41
- <div>
42
+ <sp-theme scale="medium" color="light">
42
43
  <sp-field-label for="picker">
43
44
  Where do you live?
44
45
  </sp-field-label>
@@ -56,7 +57,7 @@ export function runPickerTests() {
56
57
  <sp-menu-item>Save Selection</sp-menu-item>
57
58
  <sp-menu-item disabled>Make Work Path</sp-menu-item>
58
59
  </sp-picker>
59
- </div>
60
+ </sp-theme>
60
61
  `
61
62
  );
62
63
  return test.querySelector("sp-picker");
@@ -66,13 +67,6 @@ export function runPickerTests() {
66
67
  el = await pickerFixture();
67
68
  await elementUpdated(el);
68
69
  });
69
- afterEach(async () => {
70
- if (el.open) {
71
- const closed = oneEvent(el, "sp-closed");
72
- el.open = false;
73
- await closed;
74
- }
75
- });
76
70
  it("loads accessibly", async () => {
77
71
  await expect(el).to.be.accessible();
78
72
  });
@@ -81,7 +75,7 @@ export function runPickerTests() {
81
75
  el.open = true;
82
76
  await opened;
83
77
  expect(el.open).to.be.true;
84
- const accessibleCloseButton = document.querySelector(
78
+ const accessibleCloseButton = el.shadowRoot.querySelector(
85
79
  ".visually-hidden button"
86
80
  );
87
81
  const closed = oneEvent(el, "sp-closed");
@@ -90,10 +84,13 @@ export function runPickerTests() {
90
84
  expect(el.open).to.be.false;
91
85
  });
92
86
  it("accepts new selected item content", async () => {
87
+ await nextFrame();
88
+ await nextFrame();
93
89
  const option2 = el.querySelector('[value="option-2"');
94
90
  el.value = "option-2";
95
91
  await elementUpdated(option2);
96
92
  await elementUpdated(el);
93
+ await aTimeout(150);
97
94
  expect(el.value).to.equal("option-2");
98
95
  expect((el.button.textContent || "").trim()).to.equal(
99
96
  "Select Inverse"
@@ -114,9 +111,11 @@ export function runPickerTests() {
114
111
  expect((el.button.textContent || "").trim()).to.equal(newLabel2);
115
112
  });
116
113
  it("accepts new selected item content when open", async () => {
114
+ await nextFrame();
117
115
  const option2 = el.querySelector('[value="option-2"');
118
116
  el.value = "option-2";
119
117
  await elementUpdated(el);
118
+ await aTimeout(150);
120
119
  expect(el.value).to.equal("option-2");
121
120
  expect((el.button.textContent || "").trim()).to.equal(
122
121
  "Select Inverse"
@@ -137,8 +136,10 @@ export function runPickerTests() {
137
136
  );
138
137
  });
139
138
  it("unsets value when children removed", async () => {
139
+ await nextFrame();
140
140
  el.value = "option-2";
141
141
  await elementUpdated(el);
142
+ await aTimeout(150);
142
143
  expect(el.value).to.equal("option-2");
143
144
  expect((el.button.textContent || "").trim()).to.equal(
144
145
  "Select Inverse"
@@ -152,8 +153,14 @@ export function runPickerTests() {
152
153
  });
153
154
  await Promise.all(removals);
154
155
  await elementUpdated(el);
155
- expect(el.value).to.equal("");
156
+ await nextFrame();
157
+ await aTimeout(150);
158
+ expect(el.optionsMenu.childItems.length).to.equal(0);
159
+ if ("showPopover" in document.createElement("div")) {
160
+ return;
161
+ }
156
162
  expect((el.button.textContent || "").trim()).to.equal("");
163
+ expect(el.value).to.equal("");
157
164
  });
158
165
  it("accepts a new item and value at the same time", async () => {
159
166
  el.value = "option-2";
@@ -176,7 +183,7 @@ export function runPickerTests() {
176
183
  item.value = "option-new";
177
184
  item.textContent = "New Option";
178
185
  el.append(item);
179
- await elementUpdated(item);
186
+ await nextFrame();
180
187
  await elementUpdated(el);
181
188
  let opened = oneEvent(el, "sp-opened");
182
189
  el.open = true;
@@ -194,6 +201,7 @@ export function runPickerTests() {
194
201
  expect(el.value, "second time").to.equal("option-new");
195
202
  });
196
203
  it('manages its "name" value in the accessibility tree', async () => {
204
+ await nextFrame();
197
205
  let snapshot = await a11ySnapshot({});
198
206
  expect(
199
207
  findAccessibilityNode(
@@ -204,6 +212,8 @@ export function runPickerTests() {
204
212
  ).to.not.be.null;
205
213
  el.value = "option-2";
206
214
  await elementUpdated(el);
215
+ await nextFrame();
216
+ await nextFrame();
207
217
  snapshot = await a11ySnapshot({});
208
218
  expect(
209
219
  findAccessibilityNode(
@@ -240,6 +250,7 @@ export function runPickerTests() {
240
250
  await expect(el).to.be.accessible();
241
251
  });
242
252
  it("opens with visible focus on a menu item on `DownArrow`", async () => {
253
+ var _a, _b;
243
254
  const firstItem = el.querySelector("sp-menu-item");
244
255
  await elementUpdated(el);
245
256
  expect(firstItem.focused, "should not visually focused").to.be.false;
@@ -258,12 +269,24 @@ export function runPickerTests() {
258
269
  });
259
270
  await closed;
260
271
  expect(el.open).to.be.false;
261
- await waitUntil(() => !firstItem.focused, "not visually focused");
272
+ expect(
273
+ document.activeElement === el,
274
+ `focused ${(_a = document.activeElement) == null ? void 0 : _a.localName} instead of back on Picker`
275
+ ).to.be.true;
276
+ expect(
277
+ el.shadowRoot.activeElement === el.button,
278
+ `focused ${(_b = el.shadowRoot.activeElement) == null ? void 0 : _b.localName} instead of back on button`
279
+ ).to.be.true;
280
+ await waitUntil(
281
+ () => !firstItem.focused,
282
+ "finally, not visually focused"
283
+ );
262
284
  });
263
- it("opens without visible focus on a menu item on click", async () => {
285
+ it("opens, on click, without visible focus on a menu item", async () => {
286
+ await nextFrame();
287
+ await nextFrame();
264
288
  const firstItem = el.querySelector("sp-menu-item");
265
- await elementUpdated(el);
266
- const boundingRect = el.getBoundingClientRect();
289
+ const boundingRect = el.button.getBoundingClientRect();
267
290
  expect(firstItem.focused, "not visually focused").to.be.false;
268
291
  const opened = oneEvent(el, "sp-opened");
269
292
  sendMouse({
@@ -278,7 +301,6 @@ export function runPickerTests() {
278
301
  ]
279
302
  });
280
303
  await opened;
281
- await elementUpdated(el);
282
304
  expect(el.open).to.be.true;
283
305
  expect(firstItem.focused, "still not visually focused").to.be.false;
284
306
  });
@@ -297,11 +319,15 @@ export function runPickerTests() {
297
319
  document.body.append(other);
298
320
  await elementUpdated(el);
299
321
  expect(el.open).to.be.false;
322
+ const opened = oneEvent(el, "sp-opened");
300
323
  el.click();
324
+ await opened;
301
325
  await elementUpdated(el);
302
326
  expect(el.open).to.be.true;
327
+ const closed = oneEvent(el, "sp-closed");
303
328
  other.click();
304
- await waitUntil(() => !el.open, "closed");
329
+ closed;
330
+ await elementUpdated(el);
305
331
  other.remove();
306
332
  });
307
333
  it("selects", async () => {
@@ -313,7 +339,6 @@ export function runPickerTests() {
313
339
  const opened = oneEvent(el, "sp-opened");
314
340
  button.click();
315
341
  await opened;
316
- await elementUpdated(el);
317
342
  expect(el.open).to.be.true;
318
343
  expect((_a = el.selectedItem) == null ? void 0 : _a.itemText).to.be.undefined;
319
344
  expect(el.value).to.equal("");
@@ -333,31 +358,27 @@ export function runPickerTests() {
333
358
  "sp-menu-item:nth-of-type(2)"
334
359
  );
335
360
  const button = el.button;
336
- const opened = oneEvent(el, "sp-opened");
361
+ let opened = oneEvent(el, "sp-opened");
337
362
  button.click();
338
363
  await opened;
339
- await nextFrame();
340
364
  expect(el.open).to.be.true;
341
365
  expect((_a = el.selectedItem) == null ? void 0 : _a.itemText).to.be.undefined;
342
366
  expect(el.value).to.equal("");
343
- const closed = oneEvent(el, "sp-closed");
367
+ let closed = oneEvent(el, "sp-closed");
344
368
  secondItem.click();
345
369
  await closed;
346
- await nextFrame();
347
370
  expect(el.open).to.be.false;
348
371
  expect((_b = el.selectedItem) == null ? void 0 : _b.itemText).to.equal("Select Inverse");
349
372
  expect(el.value).to.equal("option-2");
350
- const opened2 = oneEvent(el, "sp-opened");
373
+ opened = oneEvent(el, "sp-opened");
351
374
  button.click();
352
- await opened2;
353
- await nextFrame();
375
+ await opened;
354
376
  expect(el.open).to.be.true;
355
377
  expect((_c = el.selectedItem) == null ? void 0 : _c.itemText).to.equal("Select Inverse");
356
378
  expect(el.value).to.equal("option-2");
357
- const closed2 = oneEvent(el, "sp-closed");
379
+ closed = oneEvent(el, "sp-closed");
358
380
  firstItem.click();
359
- await closed2;
360
- await nextFrame();
381
+ await closed;
361
382
  expect(el.open).to.be.false;
362
383
  expect((_d = el.selectedItem) == null ? void 0 : _d.itemText).to.equal("Deselect");
363
384
  expect(el.value).to.equal("Deselect");
@@ -365,7 +386,6 @@ export function runPickerTests() {
365
386
  it("dispatches bubbling and composed events", async () => {
366
387
  const changeSpy = spy();
367
388
  const parent = el.parentElement;
368
- parent.attachShadow({ mode: "open" });
369
389
  parent.shadowRoot.append(el);
370
390
  const secondItem = el.querySelector(
371
391
  "sp-menu-item:nth-of-type(2)"
@@ -375,11 +395,9 @@ export function runPickerTests() {
375
395
  const opened = oneEvent(el, "sp-opened");
376
396
  el.open = true;
377
397
  await opened;
378
- await elementUpdated(el);
379
398
  const closed = oneEvent(el, "sp-closed");
380
399
  secondItem.click();
381
400
  await closed;
382
- await elementUpdated(el);
383
401
  expect(el.value).to.equal(secondItem.value);
384
402
  expect(changeSpy.calledOnce).to.be.true;
385
403
  });
@@ -390,10 +408,9 @@ export function runPickerTests() {
390
408
  "sp-menu-item:nth-of-type(2)"
391
409
  );
392
410
  const button = el.button;
393
- let opened = oneEvent(el, "sp-opened");
411
+ const opened = oneEvent(el, "sp-opened");
394
412
  button.click();
395
413
  await opened;
396
- await elementUpdated(el);
397
414
  expect(el.open).to.be.true;
398
415
  expect((_a = el.selectedItem) == null ? void 0 : _a.itemText).to.be.undefined;
399
416
  expect(el.value).to.equal("");
@@ -402,14 +419,12 @@ export function runPickerTests() {
402
419
  event.preventDefault();
403
420
  preventChangeSpy();
404
421
  });
405
- const closed = oneEvent(el, "sp-closed");
406
- opened = oneEvent(el, "sp-opened");
407
422
  secondItem.click();
408
- await closed;
409
- await opened;
410
- await elementUpdated(el);
423
+ await nextFrame();
424
+ await nextFrame();
411
425
  expect(preventChangeSpy.calledOnce).to.be.true;
412
426
  expect(secondItem.selected, "selection prevented").to.be.false;
427
+ expect(el.open).to.be.true;
413
428
  });
414
429
  it("can throw focus after `change`", async () => {
415
430
  var _a;
@@ -452,20 +467,17 @@ export function runPickerTests() {
452
467
  button.dispatchEvent(tEvent());
453
468
  await elementUpdated(el);
454
469
  expect(el.open, "still closed").to.be.false;
470
+ const opened = oneEvent(el, "sp-opened");
455
471
  button.dispatchEvent(arrowUpEvent());
456
472
  await elementUpdated(el);
457
473
  expect(el.open, "open by ArrowUp").to.be.true;
458
- await waitUntil(
459
- () => document.querySelector("active-overlay") !== null,
460
- "an active-overlay has been inserted on the page"
461
- );
462
- button.dispatchEvent(escapeEvent());
463
- await elementUpdated(el);
464
- await waitUntil(() => el.open === false, "closed by Escape");
465
- await waitUntil(
466
- () => document.querySelector("active-overlay") === null,
467
- "an active-overlay has been inserted on the page"
468
- );
474
+ await opened;
475
+ const closed = oneEvent(el, "sp-closed");
476
+ sendKeys({
477
+ press: "Escape"
478
+ });
479
+ await closed;
480
+ expect(el.open).to.be.false;
469
481
  });
470
482
  it("opens on ArrowDown", async () => {
471
483
  var _a, _b;
@@ -479,19 +491,18 @@ export function runPickerTests() {
479
491
  const opened = oneEvent(el, "sp-opened");
480
492
  button.dispatchEvent(arrowDownEvent());
481
493
  await opened;
482
- await elementUpdated(el);
483
494
  expect(el.open, "open by ArrowDown").to.be.true;
484
495
  expect((_a = el.selectedItem) == null ? void 0 : _a.itemText).to.be.undefined;
485
496
  expect(el.value).to.equal("");
486
497
  const closed = oneEvent(el, "sp-closed");
487
498
  firstItem.click();
488
499
  await closed;
489
- await elementUpdated(el);
490
500
  expect(el.open).to.be.false;
491
501
  expect((_b = el.selectedItem) == null ? void 0 : _b.itemText).to.equal("Deselect");
492
502
  expect(el.value).to.equal("Deselect");
493
503
  });
494
504
  it("quick selects on ArrowLeft/Right", async () => {
505
+ await nextFrame();
495
506
  const selectionSpy = spy();
496
507
  el.addEventListener("change", (event) => {
497
508
  const { value } = event.target;
@@ -519,6 +530,7 @@ export function runPickerTests() {
519
530
  expect(selectionSpy.calledWith("Make Work Path")).to.be.false;
520
531
  });
521
532
  it("quick selects first item on ArrowRight when no value", async () => {
533
+ await nextFrame();
522
534
  const selectionSpy = spy();
523
535
  el.addEventListener("change", (event) => {
524
536
  const { value } = event.target;
@@ -536,6 +548,10 @@ export function runPickerTests() {
536
548
  });
537
549
  it("refocuses on list when open", async () => {
538
550
  const firstItem = el.querySelector("sp-menu-item");
551
+ const thirdItem = el.querySelector(
552
+ "sp-menu-item:nth-of-type(3)"
553
+ );
554
+ const button = el.button;
539
555
  const input = document.createElement("input");
540
556
  el.insertAdjacentElement("afterend", input);
541
557
  el.focus();
@@ -543,44 +559,41 @@ export function runPickerTests() {
543
559
  expect(document.activeElement === input).to.be.true;
544
560
  await sendKeys({ press: "Shift+Tab" });
545
561
  expect(document.activeElement === el).to.be.true;
546
- await sendKeys({ press: "Enter" });
547
562
  const opened = oneEvent(el, "sp-opened");
548
- el.open = true;
563
+ sendKeys({ press: "Enter" });
549
564
  await opened;
550
565
  await elementUpdated(el);
551
566
  await waitUntil(
552
567
  () => firstItem.focused,
553
568
  "The first items should have become focused visually."
554
569
  );
555
- el.blur();
556
- await elementUpdated(el);
557
- expect(el.open).to.be.true;
570
+ await sendKeys({ press: "ArrowDown" });
571
+ await sendKeys({ press: "ArrowDown" });
572
+ expect(thirdItem.focused).to.be.true;
573
+ button.focus();
574
+ expect(isMenuActiveElement(el)).to.be.false;
558
575
  el.focus();
559
576
  await elementUpdated(el);
560
577
  await waitUntil(
561
- () => isMenuActiveElement(),
578
+ () => isMenuActiveElement(el),
562
579
  "first item refocused"
563
580
  );
564
- expect(el.open).to.be.true;
565
- expect(isMenuActiveElement()).to.be.true;
566
- await sendKeys({ press: "ArrowDown" });
567
- await sendKeys({ press: "ArrowUp" });
568
- expect(firstItem.focused).to.be.true;
581
+ expect(isMenuActiveElement(el)).to.be.true;
582
+ expect(thirdItem.focused).to.be.true;
569
583
  });
570
- it("does not allow tabing to close", async () => {
584
+ it("allows tabing to close", async () => {
585
+ const input = document.createElement("input");
586
+ el.insertAdjacentElement("afterend", input);
587
+ const opened = oneEvent(el, "sp-opened");
571
588
  el.open = true;
572
- await elementUpdated(el);
589
+ await opened;
590
+ await nextFrame();
573
591
  expect(el.open).to.be.true;
574
592
  el.focus();
575
- await elementUpdated(el);
576
- await waitUntil(
577
- () => isMenuActiveElement(),
578
- "first item refocused"
579
- );
580
- expect(el.open).to.be.true;
581
- expect(isMenuActiveElement()).to.be.true;
582
- await sendKeys({ press: "Tab" });
583
- expect(el.open, "stays open").to.be.true;
593
+ const closed = oneEvent(el, "sp-closed");
594
+ sendKeys({ press: "Tab" });
595
+ await closed;
596
+ expect(el.open, "closes").to.be.false;
584
597
  });
585
598
  describe("tab order", () => {
586
599
  let input1;
@@ -635,51 +648,7 @@ export function runPickerTests() {
635
648
  input1
636
649
  );
637
650
  });
638
- it('traps tab in the menu as a `type="modal"` overlay forward', async () => {
639
- el.focus();
640
- await nextFrame();
641
- expect(document.activeElement, "focuses el").to.equal(el);
642
- const opened = oneEvent(el, "sp-opened");
643
- sendKeys({ press: "ArrowDown" });
644
- await opened;
645
- expect(el.open, "opened").to.be.true;
646
- await waitUntil(
647
- () => isMenuActiveElement(),
648
- "first item focused"
649
- );
650
- const activeElement = document.activeElement;
651
- if (!isWebKit()) {
652
- const blured = oneEvent(activeElement, "blur");
653
- sendKeys({ press: "Tab" });
654
- await blured;
655
- expect(el.open, "picker still open").to.be.true;
656
- expect(document.activeElement === input1).to.be.false;
657
- expect(document.activeElement === input2).to.be.false;
658
- }
659
- });
660
- it('traps tab in the menu as a `type="modal"` overlay backwards', async () => {
661
- el.focus();
662
- await nextFrame();
663
- expect(document.activeElement, "focuses el").to.equal(el);
664
- const opened = oneEvent(el, "sp-opened");
665
- await sendKeys({ press: "ArrowDown" });
666
- await opened;
667
- expect(el.open, "opened").to.be.true;
668
- await waitUntil(
669
- () => isMenuActiveElement(),
670
- "first item focused"
671
- );
672
- const activeElement = document.activeElement;
673
- if (!isWebKit()) {
674
- const blured = oneEvent(activeElement, "blur");
675
- sendKeys({ press: "Shift+Tab" });
676
- await blured;
677
- expect(el.open, "picker still open").to.be.true;
678
- expect(document.activeElement === input1).to.be.false;
679
- expect(document.activeElement === input2).to.be.false;
680
- }
681
- });
682
- it("can close and immediate tab to the next tab stop", async () => {
651
+ it("can close and immediately tab to the next tab stop", async () => {
683
652
  el.focus();
684
653
  await nextFrame();
685
654
  expect(document.activeElement, "focuses el").to.equal(el);
@@ -688,7 +657,7 @@ export function runPickerTests() {
688
657
  await opened;
689
658
  expect(el.open, "opened").to.be.true;
690
659
  await waitUntil(
691
- () => isMenuActiveElement(),
660
+ () => isMenuActiveElement(el),
692
661
  "first item focused"
693
662
  );
694
663
  const closed = oneEvent(el, "sp-closed");
@@ -705,13 +674,13 @@ export function runPickerTests() {
705
674
  it("can close and immediate shift+tab to the previous tab stop", async () => {
706
675
  el.focus();
707
676
  await nextFrame();
708
- expect(document.activeElement, "focuses el").to.equal(el);
677
+ expect(document.activeElement === el, "focuses el").to.be.true;
709
678
  const opened = oneEvent(el, "sp-opened");
710
679
  await sendKeys({ press: "ArrowUp" });
711
680
  await opened;
712
681
  expect(el.open, "opened").to.be.true;
713
682
  await waitUntil(
714
- () => isMenuActiveElement(),
683
+ () => isMenuActiveElement(el),
715
684
  "first item focused"
716
685
  );
717
686
  const closed = oneEvent(el, "sp-closed");
@@ -720,7 +689,7 @@ export function runPickerTests() {
720
689
  expect(el.open).to.be.false;
721
690
  expect(document.activeElement === el).to.be.true;
722
691
  const focused = oneEvent(input1, "focus");
723
- await sendKeys({ press: "Shift+Tab" });
692
+ sendKeys({ press: "Shift+Tab" });
724
693
  await focused;
725
694
  expect(el.open).to.be.false;
726
695
  expect(document.activeElement === input1).to.be.true;
@@ -735,8 +704,7 @@ export function runPickerTests() {
735
704
  expect(el.open).to.be.false;
736
705
  });
737
706
  it("scrolls selected into view on open", async () => {
738
- await el.generatePopover();
739
- el.popoverEl.style.height = "40px";
707
+ el.shadowRoot.querySelector("sp-popover").style.height = "40px";
740
708
  const firstItem = el.querySelector(
741
709
  "sp-menu-item:first-child"
742
710
  );
@@ -746,11 +714,15 @@ export function runPickerTests() {
746
714
  lastItem.disabled = false;
747
715
  el.value = lastItem.value;
748
716
  await elementUpdated(el);
717
+ const opened = oneEvent(el, "sp-opened");
749
718
  el.open = true;
750
- await elementUpdated(el);
751
- await waitUntil(() => isMenuActiveElement(), "first item focused");
719
+ await opened;
720
+ await waitUntil(
721
+ () => isMenuActiveElement(el),
722
+ "first item focused"
723
+ );
752
724
  const getParentOffset = (el2) => {
753
- const parentScroll = el2.parentElement.scrollTop;
725
+ const parentScroll = el2.assignedSlot.parentElement.scrollTop;
754
726
  const parentOffset = el2.offsetTop - parentScroll;
755
727
  return parentOffset;
756
728
  };
@@ -759,7 +731,9 @@ export function runPickerTests() {
759
731
  lastItem.dispatchEvent(
760
732
  new FocusEvent("focusin", { bubbles: true })
761
733
  );
762
- lastItem.dispatchEvent(arrowDownEvent());
734
+ await sendKeys({
735
+ press: "ArrowDown"
736
+ });
763
737
  await elementUpdated(el);
764
738
  await nextFrame();
765
739
  expect(getParentOffset(lastItem)).to.be.greaterThan(40);
@@ -797,6 +771,8 @@ export function runPickerTests() {
797
771
  beforeEach(async () => {
798
772
  el = await groupedFixture();
799
773
  await elementUpdated(el);
774
+ await nextFrame();
775
+ await nextFrame();
800
776
  });
801
777
  it("selects the item with a matching value in a group", async () => {
802
778
  const item = el.querySelector("#should-be-selected");
@@ -834,6 +810,7 @@ export function runPickerTests() {
834
810
  beforeEach(async () => {
835
811
  el = await pickerFixture2();
836
812
  await elementUpdated(el);
813
+ await nextFrame();
837
814
  });
838
815
  afterEach(async () => {
839
816
  if (el.open) {
@@ -919,6 +896,7 @@ export function runPickerTests() {
919
896
  beforeEach(async () => {
920
897
  el = await pickerFixture2();
921
898
  await elementUpdated(el);
899
+ await nextFrame();
922
900
  });
923
901
  afterEach(async () => {
924
902
  if (el.open) {
@@ -935,7 +913,6 @@ export function runPickerTests() {
935
913
  const opened = oneEvent(el, "sp-opened");
936
914
  el.button.click();
937
915
  await opened;
938
- await elementUpdated(el);
939
916
  expect(el.open).to.be.true;
940
917
  expect((_a = el.selectedItem) == null ? void 0 : _a.itemText).to.be.undefined;
941
918
  expect(el.value).to.equal("");
@@ -955,6 +932,7 @@ export function runPickerTests() {
955
932
  `);
956
933
  const el2 = test.querySelector("sp-picker");
957
934
  await elementUpdated(el2);
935
+ await nextFrame();
958
936
  let snapshot = await a11ySnapshot({});
959
937
  expect(
960
938
  findAccessibilityNode(
@@ -965,6 +943,9 @@ export function runPickerTests() {
965
943
  ).to.not.be.null;
966
944
  el2.value = "2";
967
945
  await elementUpdated(el2);
946
+ await nextFrame();
947
+ await nextFrame();
948
+ expect(el2.value).to.equal("2");
968
949
  snapshot = await a11ySnapshot({});
969
950
  expect(
970
951
  findAccessibilityNode(
@@ -977,6 +958,8 @@ export function runPickerTests() {
977
958
  it("toggles between pickers", async () => {
978
959
  const el2 = await pickerFixture();
979
960
  const el1 = await pickerFixture();
961
+ el1.parentElement.style.float = "left";
962
+ el2.parentElement.style.float = "left";
980
963
  el1.id = "away";
981
964
  el2.id = "other";
982
965
  await Promise.all([elementUpdated(el1), elementUpdated(el2)]);
@@ -997,8 +980,8 @@ export function runPickerTests() {
997
980
  closed = oneEvent(el2, "sp-closed");
998
981
  el1.click();
999
982
  await Promise.all([open, closed]);
1000
- expect(el1.open).to.be.true;
1001
983
  expect(el2.open).to.be.false;
984
+ expect(el1.open).to.be.true;
1002
985
  closed = oneEvent(el1, "sp-closed");
1003
986
  sendKeys({
1004
987
  press: "Escape"
@@ -1007,7 +990,7 @@ export function runPickerTests() {
1007
990
  expect(el1.open).to.be.false;
1008
991
  });
1009
992
  it("displays selected item text by default", async () => {
1010
- var _a, _b, _c, _d;
993
+ var _a, _b, _c, _d, _e;
1011
994
  const el2 = await fixture(
1012
995
  html`
1013
996
  <sp-picker
@@ -1024,6 +1007,7 @@ export function runPickerTests() {
1024
1007
  </sp-picker>
1025
1008
  `
1026
1009
  );
1010
+ await nextFrame();
1027
1011
  await elementUpdated(el2);
1028
1012
  await waitUntil(
1029
1013
  () => {
@@ -1049,11 +1033,14 @@ export function runPickerTests() {
1049
1033
  const opened = oneEvent(el2, "sp-opened");
1050
1034
  sendKeys({ press: "Enter" });
1051
1035
  await opened;
1052
- await elementUpdated(el2.optionsMenu);
1053
1036
  expect(
1054
- el2.optionsMenu === document.activeElement,
1037
+ el2 === document.activeElement,
1055
1038
  `activeElement is ${(_d = document.activeElement) == null ? void 0 : _d.localName}`
1056
1039
  ).to.be.true;
1040
+ expect(
1041
+ el2.optionsMenu === el2.shadowRoot.activeElement,
1042
+ `activeElement is ${(_e = el2.shadowRoot.activeElement) == null ? void 0 : _e.localName}`
1043
+ ).to.be.true;
1057
1044
  expect(firstItem.focused, 'firstItem NOT "focused"').to.be.false;
1058
1045
  expect(secondItem.focused, 'secondItem "focused"').to.be.true;
1059
1046
  expect(el2.optionsMenu.getAttribute("aria-activedescendant")).to.equal(
@@ -1140,15 +1127,11 @@ export function runPickerTests() {
1140
1127
  await elementUpdated(el2);
1141
1128
  expect(openedSpy.calledOnce).to.be.true;
1142
1129
  expect(closedSpy.calledOnce).to.be.false;
1143
- const openedEvent = openedSpy.args[0][0];
1144
- expect(openedEvent.detail.interaction).to.equal("modal");
1145
1130
  const closed = oneEvent(el2, "sp-closed");
1146
1131
  el2.open = false;
1147
1132
  await closed;
1148
1133
  await elementUpdated(el2);
1149
1134
  expect(closedSpy.calledOnce).to.be.true;
1150
- const closedEvent = closedSpy.args[0][0];
1151
- expect(closedEvent.detail.interaction).to.equal("modal");
1152
1135
  });
1153
1136
  }
1154
1137
  //# sourceMappingURL=index.js.map