@spectrum-web-components/overlay 0.19.3 → 0.19.4-overlay.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/package.json +50 -25
  2. package/sp-overlay.d.ts +6 -0
  3. package/sp-overlay.dev.js +4 -0
  4. package/{active-overlay.js.map → sp-overlay.dev.js.map} +4 -4
  5. package/sp-overlay.js +2 -0
  6. package/sp-overlay.js.map +7 -0
  7. package/src/Overlay.d.ts +22 -0
  8. package/src/Overlay.dev.js +63 -0
  9. package/src/Overlay.dev.js.map +7 -0
  10. package/src/Overlay.js +2 -0
  11. package/src/Overlay.js.map +7 -0
  12. package/src/OverlayBase.d.ts +93 -0
  13. package/src/OverlayBase.dev.js +564 -0
  14. package/src/OverlayBase.dev.js.map +7 -0
  15. package/src/OverlayBase.js +18 -0
  16. package/src/OverlayBase.js.map +7 -0
  17. package/src/OverlayDialog.d.ts +8 -0
  18. package/src/OverlayDialog.dev.js +43 -0
  19. package/src/OverlayDialog.dev.js.map +7 -0
  20. package/src/OverlayDialog.js +2 -0
  21. package/src/OverlayDialog.js.map +7 -0
  22. package/src/OverlayNoPopover.d.ts +8 -0
  23. package/src/OverlayNoPopover.dev.js +62 -0
  24. package/src/OverlayNoPopover.dev.js.map +7 -0
  25. package/src/OverlayNoPopover.js +2 -0
  26. package/src/OverlayNoPopover.js.map +7 -0
  27. package/src/OverlayPopover.d.ts +8 -0
  28. package/src/OverlayPopover.dev.js +81 -0
  29. package/src/OverlayPopover.dev.js.map +7 -0
  30. package/src/OverlayPopover.js +2 -0
  31. package/src/OverlayPopover.js.map +7 -0
  32. package/src/OverlayStack.d.ts +24 -0
  33. package/src/OverlayStack.dev.js +113 -0
  34. package/src/OverlayStack.dev.js.map +7 -0
  35. package/src/OverlayStack.js +2 -0
  36. package/src/OverlayStack.js.map +7 -0
  37. package/src/OverlayTrigger.d.ts +18 -31
  38. package/src/OverlayTrigger.dev.js +138 -246
  39. package/src/OverlayTrigger.dev.js.map +3 -3
  40. package/src/OverlayTrigger.js +54 -22
  41. package/src/OverlayTrigger.js.map +3 -3
  42. package/src/PlacementController.d.ts +35 -0
  43. package/src/PlacementController.dev.js +172 -0
  44. package/src/PlacementController.dev.js.map +7 -0
  45. package/src/PlacementController.js +2 -0
  46. package/src/PlacementController.js.map +7 -0
  47. package/src/VirtualTrigger.dev.js +0 -2
  48. package/src/VirtualTrigger.dev.js.map +2 -2
  49. package/src/VirtualTrigger.js +1 -1
  50. package/src/VirtualTrigger.js.map +3 -3
  51. package/src/fullSizePlugin.d.ts +12 -0
  52. package/src/fullSizePlugin.dev.js +39 -0
  53. package/src/fullSizePlugin.dev.js.map +7 -0
  54. package/src/fullSizePlugin.js +2 -0
  55. package/src/fullSizePlugin.js.map +7 -0
  56. package/src/index.d.ts +1 -3
  57. package/src/index.dev.js +1 -3
  58. package/src/index.dev.js.map +2 -2
  59. package/src/index.js +1 -1
  60. package/src/index.js.map +2 -2
  61. package/src/overlay-base.css.dev.js +9 -0
  62. package/src/overlay-base.css.dev.js.map +7 -0
  63. package/src/overlay-base.css.js +6 -0
  64. package/src/overlay-base.css.js.map +7 -0
  65. package/src/overlay-trigger.css.dev.js +1 -1
  66. package/src/overlay-trigger.css.dev.js.map +1 -1
  67. package/src/overlay-trigger.css.js +1 -1
  68. package/src/overlay-trigger.css.js.map +1 -1
  69. package/src/overlay-types.d.ts +2 -2
  70. package/src/overlay-types.dev.js +1 -0
  71. package/src/overlay-types.dev.js.map +3 -3
  72. package/src/overlay-types.js +1 -1
  73. package/src/overlay-types.js.map +3 -3
  74. package/src/placement.d.ts +21 -0
  75. package/src/placement.dev.js +111 -0
  76. package/src/placement.dev.js.map +7 -0
  77. package/src/placement.js +2 -0
  78. package/src/placement.js.map +7 -0
  79. package/src/topLayerOverTransforms.d.ts +22 -0
  80. package/src/topLayerOverTransforms.dev.js +161 -0
  81. package/src/topLayerOverTransforms.dev.js.map +7 -0
  82. package/src/topLayerOverTransforms.js +2 -0
  83. package/src/topLayerOverTransforms.js.map +7 -0
  84. package/stories/overlay-element.stories.js +229 -0
  85. package/stories/overlay-element.stories.js.map +7 -0
  86. package/stories/overlay-story-components.js +1 -6
  87. package/stories/overlay-story-components.js.map +2 -2
  88. package/stories/overlay.stories.js +641 -682
  89. package/stories/overlay.stories.js.map +2 -2
  90. package/sync/overlay-trigger.d.ts +4 -0
  91. package/sync/overlay-trigger.dev.js +1 -4
  92. package/sync/overlay-trigger.dev.js.map +2 -2
  93. package/sync/overlay-trigger.js +1 -1
  94. package/sync/overlay-trigger.js.map +3 -3
  95. package/test/benchmark/basic-test.js +1 -1
  96. package/test/benchmark/basic-test.js.map +1 -1
  97. package/test/index.js +3 -9
  98. package/test/index.js.map +2 -2
  99. package/test/overlay-element.test-vrt.js +5 -0
  100. package/{active-overlay.dev.js.map → test/overlay-element.test-vrt.js.map} +3 -3
  101. package/test/overlay-element.test.js +759 -0
  102. package/test/overlay-element.test.js.map +7 -0
  103. package/test/overlay-lifecycle.test.js +34 -74
  104. package/test/overlay-lifecycle.test.js.map +2 -2
  105. package/test/overlay-trigger-click.test.js +3 -2
  106. package/test/overlay-trigger-click.test.js.map +2 -2
  107. package/test/overlay-trigger-extended.test.js +1 -6
  108. package/test/overlay-trigger-extended.test.js.map +2 -2
  109. package/test/overlay-trigger-hover-click.test.js +1 -1
  110. package/test/overlay-trigger-hover-click.test.js.map +2 -2
  111. package/test/overlay-trigger-hover.test.js +2 -2
  112. package/test/overlay-trigger-hover.test.js.map +2 -2
  113. package/test/overlay-trigger-longpress.test.js +1 -377
  114. package/test/overlay-trigger-longpress.test.js.map +2 -2
  115. package/test/overlay-trigger-sync.test.js +1 -3
  116. package/test/overlay-trigger-sync.test.js.map +2 -2
  117. package/test/overlay-trigger.test.js +1 -3
  118. package/test/overlay-trigger.test.js.map +2 -2
  119. package/test/overlay-update.test.js +4 -4
  120. package/test/overlay-update.test.js.map +2 -2
  121. package/test/overlay.test.js +100 -154
  122. package/test/overlay.test.js.map +2 -2
  123. package/active-overlay.d.ts +0 -6
  124. package/active-overlay.dev.js +0 -4
  125. package/active-overlay.js +0 -2
  126. package/custom-elements.json +0 -1212
  127. package/src/ActiveOverlay.d.ts +0 -84
  128. package/src/ActiveOverlay.dev.js +0 -517
  129. package/src/ActiveOverlay.dev.js.map +0 -7
  130. package/src/ActiveOverlay.js +0 -16
  131. package/src/ActiveOverlay.js.map +0 -7
  132. package/src/active-overlay.css.dev.js +0 -13
  133. package/src/active-overlay.css.dev.js.map +0 -7
  134. package/src/active-overlay.css.js +0 -10
  135. package/src/active-overlay.css.js.map +0 -7
  136. package/src/loader.d.ts +0 -2
  137. package/src/loader.dev.js +0 -21
  138. package/src/loader.dev.js.map +0 -7
  139. package/src/loader.js +0 -2
  140. package/src/loader.js.map +0 -7
  141. package/src/overlay-stack.d.ts +0 -50
  142. package/src/overlay-stack.dev.js +0 -514
  143. package/src/overlay-stack.dev.js.map +0 -7
  144. package/src/overlay-stack.js +0 -33
  145. package/src/overlay-stack.js.map +0 -7
  146. package/src/overlay-utils.d.ts +0 -3
  147. package/src/overlay-utils.dev.js +0 -31
  148. package/src/overlay-utils.dev.js.map +0 -7
  149. package/src/overlay-utils.js +0 -2
  150. package/src/overlay-utils.js.map +0 -7
  151. package/src/overlay.d.ts +0 -59
  152. package/src/overlay.dev.js +0 -127
  153. package/src/overlay.dev.js.map +0 -7
  154. package/src/overlay.js +0 -2
  155. package/src/overlay.js.map +0 -7
  156. /package/src/{active-overlay.css.d.ts → overlay-base.css.d.ts} +0 -0
@@ -1,20 +1,22 @@
1
1
  "use strict";
2
2
  import "@spectrum-web-components/button/sp-button.js";
3
3
  import "@spectrum-web-components/dialog/sp-dialog.js";
4
+ import "@spectrum-web-components/overlay/sp-overlay.js";
5
+ import "@spectrum-web-components/overlay/overlay-trigger.js";
6
+ import "@spectrum-web-components/tooltip/sp-tooltip.js";
4
7
  import "@spectrum-web-components/popover/sp-popover.js";
5
8
  import { setViewport } from "@web/test-runner-commands";
6
9
  import {
7
10
  Overlay
8
11
  } from "@spectrum-web-components/overlay";
9
- import { isVisible } from "../../../test/testing-helpers.js";
10
12
  import {
13
+ aTimeout,
11
14
  elementUpdated,
12
15
  expect,
13
16
  fixture,
14
17
  html,
15
18
  nextFrame,
16
- oneEvent,
17
- waitUntil
19
+ oneEvent
18
20
  } from "@open-wc/testing";
19
21
  import { sendKeys } from "@web/test-runner-commands";
20
22
  import {
@@ -22,6 +24,26 @@ import {
22
24
  virtualElement
23
25
  } from "../stories/overlay.stories";
24
26
  import { sendMouse } from "../../../test/plugins/browser.js";
27
+ import { spy } from "sinon";
28
+ async function isInteractive(el) {
29
+ const clickSpy = spy();
30
+ el.addEventListener("click", () => {
31
+ clickSpy();
32
+ });
33
+ const clientRect = el.getBoundingClientRect();
34
+ await sendMouse({
35
+ steps: [
36
+ {
37
+ type: "click",
38
+ position: [
39
+ clientRect.left + clientRect.width / 2,
40
+ clientRect.top + clientRect.height / 2
41
+ ]
42
+ }
43
+ ]
44
+ });
45
+ return clickSpy.callCount === 1;
46
+ }
25
47
  describe("Overlays", () => {
26
48
  let testDiv;
27
49
  let openOverlays = [];
@@ -48,18 +70,13 @@ describe("Overlays", () => {
48
70
  display: none;
49
71
  }
50
72
  </style>
51
- <sp-button
52
- id="first-button"
53
- variant="primary"
54
- slot="trigger"
55
- >
73
+ <sp-button id="first-button" variant="primary">
56
74
  Show Popover
57
75
  </sp-button>
58
76
  <div id="overlay-content">
59
77
  <sp-popover
60
78
  id="outer-popover"
61
79
  dialog
62
- slot="click-content"
63
80
  direction="bottom"
64
81
  tip
65
82
  open
@@ -68,12 +85,12 @@ describe("Overlays", () => {
68
85
  A popover message
69
86
  </div>
70
87
  </sp-popover>
71
- <div id="hover-1" class="hover-content">
88
+ <sp-tooltip id="hover-1" class="hover-content">
72
89
  Hover message
73
- </div>
74
- <div id="hover-2" class="hover-content">
90
+ </sp-tooltip>
91
+ <sp-tooltip id="hover-2" class="hover-content">
75
92
  Other hover message
76
- </div>
93
+ </sp-tooltip>
77
94
  </div>
78
95
  </div>
79
96
  `
@@ -101,21 +118,19 @@ describe("Overlays", () => {
101
118
  ].map((direction) => {
102
119
  const placement = direction;
103
120
  it(`opens a popover - ${placement}`, async () => {
121
+ const clickSpy = spy();
104
122
  const button = testDiv.querySelector(
105
123
  "#first-button"
106
124
  );
107
125
  const outerPopover = testDiv.querySelector(
108
126
  "#outer-popover"
109
127
  );
110
- expect(outerPopover.parentElement).to.exist;
111
- if (outerPopover.parentElement) {
112
- expect(outerPopover.parentElement.id).to.equal(
113
- "overlay-content"
114
- );
115
- }
116
- expect(isVisible(outerPopover)).to.be.false;
128
+ outerPopover.addEventListener("click", () => {
129
+ clickSpy();
130
+ });
131
+ expect(await isInteractive(outerPopover)).to.be.false;
117
132
  expect(button).to.exist;
118
- const opened = oneEvent(button, "sp-opened");
133
+ const opened = oneEvent(outerPopover, "sp-opened");
119
134
  openOverlays.push(
120
135
  await Overlay.open(button, "click", outerPopover, {
121
136
  delayed: false,
@@ -124,25 +139,16 @@ describe("Overlays", () => {
124
139
  })
125
140
  );
126
141
  await opened;
127
- expect(outerPopover.parentElement).to.exist;
128
- if (outerPopover.parentElement) {
129
- expect(outerPopover.parentElement.id).not.to.equal(
130
- "overlay-content"
131
- );
132
- }
133
- expect(isVisible(outerPopover)).to.be.true;
142
+ await aTimeout(150);
143
+ expect(await isInteractive(outerPopover)).to.be.true;
134
144
  });
135
145
  });
136
146
  it(`updates a popover`, async () => {
137
147
  const button = testDiv.querySelector("#first-button");
138
148
  const outerPopover = testDiv.querySelector("#outer-popover");
139
- expect(outerPopover.parentElement).to.exist;
140
- if (outerPopover.parentElement) {
141
- expect(outerPopover.parentElement.id).to.equal("overlay-content");
142
- }
143
- expect(isVisible(outerPopover)).to.be.false;
149
+ expect(await isInteractive(outerPopover)).to.be.false;
144
150
  expect(button).to.exist;
145
- const opened = oneEvent(button, "sp-opened");
151
+ const opened = oneEvent(outerPopover, "sp-opened");
146
152
  openOverlays.push(
147
153
  await Overlay.open(button, "click", outerPopover, {
148
154
  delayed: false,
@@ -150,20 +156,16 @@ describe("Overlays", () => {
150
156
  })
151
157
  );
152
158
  await opened;
153
- expect(isVisible(outerPopover)).to.be.true;
159
+ expect(await isInteractive(outerPopover)).to.be.true;
154
160
  Overlay.update();
155
- expect(isVisible(outerPopover)).to.be.true;
161
+ expect(await isInteractive(outerPopover)).to.be.true;
156
162
  });
157
163
  it(`opens a popover w/ delay`, async () => {
158
164
  const button = testDiv.querySelector("#first-button");
159
165
  const outerPopover = testDiv.querySelector("#outer-popover");
160
- expect(outerPopover.parentElement).to.exist;
161
- if (outerPopover.parentElement) {
162
- expect(outerPopover.parentElement.id).to.equal("overlay-content");
163
- }
164
- expect(isVisible(outerPopover)).to.be.false;
166
+ expect(await isInteractive(outerPopover)).to.be.false;
165
167
  expect(button).to.exist;
166
- const opened = oneEvent(button, "sp-opened");
168
+ const opened = oneEvent(outerPopover, "sp-opened");
167
169
  openOverlays.push(
168
170
  await Overlay.open(button, "click", outerPopover, {
169
171
  delayed: true,
@@ -171,13 +173,7 @@ describe("Overlays", () => {
171
173
  })
172
174
  );
173
175
  await opened;
174
- expect(outerPopover.parentElement).to.exist;
175
- if (outerPopover.parentElement) {
176
- expect(outerPopover.parentElement.id).not.to.equal(
177
- "overlay-content"
178
- );
179
- }
180
- expect(isVisible(outerPopover)).to.be.true;
176
+ expect(await isInteractive(outerPopover)).to.be.true;
181
177
  });
182
178
  it("opens hover overlay", async () => {
183
179
  const button = testDiv.querySelector("#first-button");
@@ -185,9 +181,9 @@ describe("Overlays", () => {
185
181
  const clickOverlay = testDiv.querySelector(
186
182
  "#outer-popover"
187
183
  );
188
- expect(isVisible(hoverOverlay)).to.be.false;
189
- expect(isVisible(clickOverlay)).to.be.false;
190
- let opened = oneEvent(button, "sp-opened");
184
+ expect(await isInteractive(hoverOverlay)).to.be.false;
185
+ expect(await isInteractive(clickOverlay)).to.be.false;
186
+ let opened = oneEvent(hoverOverlay, "sp-opened");
191
187
  openOverlays.push(
192
188
  await Overlay.open(button, "hover", hoverOverlay, {
193
189
  delayed: false,
@@ -196,14 +192,9 @@ describe("Overlays", () => {
196
192
  })
197
193
  );
198
194
  await opened;
199
- expect(hoverOverlay.parentElement).to.exist;
200
- if (hoverOverlay.parentElement) {
201
- expect(hoverOverlay.parentElement.id).not.to.equal(
202
- "overlay-content"
203
- );
204
- }
205
- expect(isVisible(hoverOverlay)).to.be.true;
206
- opened = oneEvent(button, "sp-opened");
195
+ await aTimeout(150);
196
+ expect(await isInteractive(hoverOverlay)).to.be.true;
197
+ opened = oneEvent(clickOverlay, "sp-opened");
207
198
  openOverlays.push(
208
199
  await Overlay.open(button, "click", clickOverlay, {
209
200
  delayed: false,
@@ -212,11 +203,9 @@ describe("Overlays", () => {
212
203
  })
213
204
  );
214
205
  await opened;
215
- if (hoverOverlay.parentElement) {
216
- expect(hoverOverlay.parentElement.id).to.equal("overlay-content");
217
- }
218
- expect(isVisible(hoverOverlay)).to.be.false;
219
- expect(isVisible(clickOverlay)).to.be.true;
206
+ await aTimeout(150);
207
+ expect(await isInteractive(clickOverlay)).to.be.true;
208
+ expect(await isInteractive(hoverOverlay)).to.be.false;
220
209
  });
221
210
  it("opens custom overlay", async () => {
222
211
  const button = testDiv.querySelector("#first-button");
@@ -226,9 +215,9 @@ describe("Overlays", () => {
226
215
  );
227
216
  expect(button).to.exist;
228
217
  expect(customOverlay).to.exist;
229
- expect(isVisible(customOverlay)).to.be.false;
230
- expect(isVisible(clickOverlay)).to.be.false;
231
- let opened = oneEvent(button, "sp-opened");
218
+ expect(await isInteractive(customOverlay)).to.be.false;
219
+ expect(await isInteractive(clickOverlay)).to.be.false;
220
+ let opened = oneEvent(customOverlay, "sp-opened");
232
221
  openOverlays.push(
233
222
  await Overlay.open(button, "custom", customOverlay, {
234
223
  delayed: false,
@@ -237,14 +226,9 @@ describe("Overlays", () => {
237
226
  })
238
227
  );
239
228
  await opened;
240
- expect(customOverlay.parentElement).to.exist;
241
- if (customOverlay.parentElement) {
242
- expect(customOverlay.parentElement.id).not.to.equal(
243
- "overlay-content"
244
- );
245
- }
246
- expect(isVisible(customOverlay)).to.be.true;
247
- opened = oneEvent(button, "sp-opened");
229
+ await aTimeout(150);
230
+ expect(await isInteractive(customOverlay)).to.be.true;
231
+ opened = oneEvent(clickOverlay, "sp-opened");
248
232
  openOverlays.push(
249
233
  await Overlay.open(button, "click", clickOverlay, {
250
234
  delayed: false,
@@ -253,38 +237,44 @@ describe("Overlays", () => {
253
237
  })
254
238
  );
255
239
  await opened;
256
- expect(isVisible(customOverlay)).to.be.true;
257
- expect(isVisible(clickOverlay)).to.be.true;
240
+ await aTimeout(150);
241
+ expect(await isInteractive(clickOverlay), "click content open").to.be.true;
258
242
  });
259
243
  it("closes via events", async () => {
260
- const el = await fixture(html`
261
- <div id="root">
262
- <sp-dialog dismissable></sp-dialog>
244
+ const test = await fixture(html`
245
+ <div>
246
+ <sp-popover id="root">
247
+ <sp-dialog dismissable>
248
+ Some Content for the Dialog.
249
+ </sp-dialog>
250
+ </sp-popover>
263
251
  </div>
264
252
  `);
253
+ const el = test.querySelector("sp-popover");
265
254
  const dialog = el.querySelector("sp-dialog");
266
255
  const opened = oneEvent(el, "sp-opened");
267
256
  openOverlays.push(
268
- await Overlay.open(el, "click", dialog, {
257
+ await Overlay.open(test, "click", el, {
269
258
  delayed: false,
270
259
  placement: "bottom",
271
260
  offset: 10
272
261
  })
273
262
  );
274
263
  await opened;
264
+ await aTimeout(150);
265
+ expect(await isInteractive(el)).to.be.true;
266
+ const closed = oneEvent(el, "sp-closed");
275
267
  dialog.close();
276
- await waitUntil(
277
- () => !!dialog.parentElement && dialog.parentElement.tagName !== "ACTIVE-OVERLAY",
278
- "content is returned"
279
- );
268
+ await closed;
269
+ expect(await isInteractive(el)).to.be.false;
280
270
  });
281
- it("closes an inline overlay when tabbing past the content", async () => {
271
+ it.skip("closes an inline overlay when tabbing past the content", async () => {
282
272
  const el = await fixture(html`
283
273
  <div>
284
274
  <sp-button class="trigger">Trigger</sp-button>
285
- <div class="content">
275
+ <sp-popover class="content">
286
276
  <input />
287
- </div>
277
+ </sp-popover>
288
278
  <input value="After" id="after" />
289
279
  </div>
290
280
  `);
@@ -292,13 +282,15 @@ describe("Overlays", () => {
292
282
  const content = el.querySelector(".content");
293
283
  const input = el.querySelector("input");
294
284
  const after = el.querySelector("#after");
295
- openOverlays.push(await Overlay.open(trigger, "inline", content, {}));
296
- trigger.focus();
297
- await sendKeys({
298
- press: "Tab"
299
- });
285
+ const opened = oneEvent(content, "sp-opened");
286
+ openOverlays.push(
287
+ await Overlay.open(trigger, "inline", content, {
288
+ receivesFocus: "auto"
289
+ })
290
+ );
291
+ await opened;
292
+ expect(await isInteractive(content)).to.be.true;
300
293
  expect(document.activeElement).to.equal(input);
301
- expect(input.closest("active-overlay") !== null);
302
294
  await sendKeys({
303
295
  press: "Shift+Tab"
304
296
  });
@@ -310,10 +302,10 @@ describe("Overlays", () => {
310
302
  await sendKeys({
311
303
  press: "Tab"
312
304
  });
305
+ const closed = oneEvent(content, "sp-closed");
313
306
  expect(document.activeElement).to.equal(after);
314
- await waitUntil(
315
- () => document.querySelector("active-overlay") === null
316
- );
307
+ await closed;
308
+ expect(await isInteractive(content)).to.be.false;
317
309
  });
318
310
  it("closes an inline overlay when tabbing before the trigger", async () => {
319
311
  const el = await fixture(html`
@@ -338,7 +330,6 @@ describe("Overlays", () => {
338
330
  press: "Tab"
339
331
  });
340
332
  expect(document.activeElement).to.equal(input);
341
- expect(input.closest("active-overlay") !== null);
342
333
  await sendKeys({
343
334
  press: "Shift+Tab"
344
335
  });
@@ -347,9 +338,6 @@ describe("Overlays", () => {
347
338
  press: "Shift+Tab"
348
339
  });
349
340
  expect(document.activeElement).to.equal(before);
350
- await waitUntil(
351
- () => document.querySelector("active-overlay") === null
352
- );
353
341
  });
354
342
  it("opens detached content", async () => {
355
343
  const textContent = "This is a detached element that has been overlaid";
@@ -358,34 +346,26 @@ describe("Overlays", () => {
358
346
  <button>Trigger</button>
359
347
  `
360
348
  );
361
- const content = document.createElement("div");
349
+ const content = document.createElement("sp-popover");
362
350
  content.textContent = textContent;
363
- const opened = oneEvent(el, "sp-opened");
351
+ const opened = oneEvent(content, "sp-opened");
364
352
  const closeOverlay = await Overlay.open(el, "click", content, {
365
353
  placement: "bottom"
366
354
  });
367
355
  await opened;
368
- let activeOverlay = document.querySelector("active-overlay");
369
- if (activeOverlay) {
370
- expect(activeOverlay.textContent).to.equal(textContent);
371
- } else {
372
- expect(activeOverlay).to.not.be.null;
373
- }
374
- const closed = oneEvent(el, "sp-closed");
356
+ await aTimeout(150);
357
+ expect(await isInteractive(content)).to.be.true;
358
+ const closed = oneEvent(content, "sp-closed");
375
359
  closeOverlay();
376
360
  await closed;
377
- activeOverlay = document.querySelector("active-overlay");
378
- expect(activeOverlay).to.be.null;
361
+ expect(await isInteractive(content)).to.be.false;
379
362
  content.remove();
380
363
  });
381
364
  });
382
- describe('Overlay - type="modal"', () => {
365
+ describe.skip('Overlay - type="modal"', () => {
383
366
  it("closes on `contextmenu` and passes that to the underlying page", async () => {
384
367
  await fixture(html`
385
- ${virtualElement({
386
- ...virtualElement.args,
387
- offset: 6
388
- })}
368
+ ${virtualElement()}
389
369
  `);
390
370
  const width = window.innerWidth;
391
371
  const height = window.innerHeight;
@@ -406,15 +386,6 @@ describe('Overlay - type="modal"', () => {
406
386
  ]
407
387
  });
408
388
  await opened;
409
- const firstOverlay = document.querySelector(
410
- "active-overlay"
411
- );
412
- const firstHeadline = firstOverlay.querySelector(
413
- '[slot="header"]'
414
- );
415
- expect(firstOverlay, "first overlay").to.not.be.null;
416
- expect(firstOverlay.isConnected).to.be.true;
417
- expect(firstHeadline.textContent).to.equal("Menu source: end");
418
389
  let closed = oneEvent(document, "sp-closed");
419
390
  opened = oneEvent(document, "sp-opened");
420
391
  sendMouse({
@@ -434,17 +405,6 @@ describe('Overlay - type="modal"', () => {
434
405
  });
435
406
  await closed;
436
407
  await opened;
437
- const secondOverlay = document.querySelector(
438
- "active-overlay"
439
- );
440
- const secondHeadline = secondOverlay.querySelector(
441
- '[slot="header"]'
442
- );
443
- expect(secondOverlay, "second overlay").to.not.be.null;
444
- expect(secondOverlay).to.not.equal(firstOverlay);
445
- expect(firstOverlay.isConnected).to.be.false;
446
- expect(secondOverlay.isConnected).to.be.true;
447
- expect(secondHeadline.textContent).to.equal("Menu source: start");
448
408
  closed = oneEvent(document, "sp-closed");
449
409
  sendMouse({
450
410
  steps: [
@@ -463,10 +423,7 @@ describe('Overlay - type="modal"', () => {
463
423
  });
464
424
  it("does not open content off of the viewport", async () => {
465
425
  await fixture(html`
466
- ${virtualElement({
467
- ...virtualElement.args,
468
- offset: 6
469
- })}
426
+ ${virtualElement()}
470
427
  `);
471
428
  await setViewport({ width: 360, height: 640 });
472
429
  await nextFrame();
@@ -487,13 +444,6 @@ describe('Overlay - type="modal"', () => {
487
444
  ]
488
445
  });
489
446
  await opened;
490
- const activeOverlay = document.querySelector(
491
- "active-overlay"
492
- );
493
- expect(activeOverlay.placement).to.equal("right-start");
494
- expect(activeOverlay.getAttribute("actual-placement")).to.equal(
495
- "bottom"
496
- );
497
447
  const closed = oneEvent(document, "sp-closed");
498
448
  sendKeys({
499
449
  press: "Escape"
@@ -515,10 +465,6 @@ describe('Overlay - type="modal"', () => {
515
465
  open = oneEvent(content, "sp-opened");
516
466
  content.button.click();
517
467
  await open;
518
- const activeOverlays = document.querySelectorAll("active-overlay");
519
- activeOverlays.forEach((overlay) => {
520
- expect(overlay.slot).to.equal("open");
521
- });
522
468
  let close = oneEvent(content, "sp-closed");
523
469
  content.trigger.removeAttribute("open");
524
470
  await close;
@@ -527,7 +473,7 @@ describe('Overlay - type="modal"', () => {
527
473
  await close;
528
474
  });
529
475
  });
530
- describe("Overlay - timing", () => {
476
+ describe.skip("Overlay - timing", () => {
531
477
  it("manages multiple modals in a row without preventing them from closing", async () => {
532
478
  const test = await fixture(html`
533
479
  <div>