@spectrum-web-components/overlay 0.17.1-devmode2.0 → 0.18.1
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/README.md +3 -0
- package/active-overlay.dev.js +1 -0
- package/active-overlay.dev.js.map +1 -1
- package/active-overlay.js +1 -2
- package/active-overlay.js.map +2 -2
- package/overlay-trigger.dev.js +1 -0
- package/overlay-trigger.dev.js.map +1 -1
- package/overlay-trigger.js +1 -2
- package/overlay-trigger.js.map +2 -2
- package/package.json +6 -6
- package/src/ActiveOverlay.dev.js +57 -23
- package/src/ActiveOverlay.dev.js.map +2 -2
- package/src/ActiveOverlay.js +8 -437
- package/src/ActiveOverlay.js.map +2 -2
- package/src/OverlayTrigger.dev.js +51 -18
- package/src/OverlayTrigger.dev.js.map +1 -1
- package/src/OverlayTrigger.js +2 -265
- package/src/OverlayTrigger.js.map +2 -2
- package/src/VirtualTrigger.dev.js +1 -0
- package/src/VirtualTrigger.dev.js.map +1 -1
- package/src/VirtualTrigger.js +1 -29
- package/src/VirtualTrigger.js.map +2 -2
- package/src/active-overlay.css.dev.js +1 -0
- package/src/active-overlay.css.dev.js.map +1 -1
- package/src/active-overlay.css.js +2 -4
- package/src/active-overlay.css.js.map +2 -2
- package/src/index.dev.js +1 -0
- package/src/index.dev.js.map +1 -1
- package/src/index.js +1 -6
- package/src/index.js.map +1 -1
- package/src/loader.dev.js +1 -0
- package/src/loader.dev.js.map +1 -1
- package/src/loader.js +1 -4
- package/src/loader.js.map +2 -2
- package/src/overlay-events.dev.js +1 -0
- package/src/overlay-events.dev.js.map +1 -1
- package/src/overlay-events.js +1 -6
- package/src/overlay-events.js.map +2 -2
- package/src/overlay-stack.dev.js +95 -44
- package/src/overlay-stack.dev.js.map +3 -3
- package/src/overlay-stack.js +2 -405
- package/src/overlay-stack.js.map +3 -3
- package/src/overlay-timer.dev.js +1 -0
- package/src/overlay-timer.dev.js.map +1 -1
- package/src/overlay-timer.js +1 -70
- package/src/overlay-timer.js.map +2 -2
- package/src/overlay-trigger.css.dev.js +1 -0
- package/src/overlay-trigger.css.dev.js.map +1 -1
- package/src/overlay-trigger.css.js +2 -4
- package/src/overlay-trigger.css.js.map +2 -2
- package/src/overlay-types.dev.js +1 -0
- package/src/overlay-types.js +1 -0
- package/src/overlay-utils.dev.js +4 -1
- package/src/overlay-utils.dev.js.map +1 -1
- package/src/overlay-utils.js +1 -27
- package/src/overlay-utils.js.map +2 -2
- package/src/overlay.dev.js +1 -0
- package/src/overlay.dev.js.map +1 -1
- package/src/overlay.js +1 -84
- package/src/overlay.js.map +2 -2
- package/stories/overlay-story-components.js +17 -5
- package/stories/overlay-story-components.js.map +2 -2
- package/stories/overlay.stories.js +24 -8
- package/stories/overlay.stories.js.map +1 -1
- package/sync/overlay-trigger.dev.js +1 -0
- package/sync/overlay-trigger.dev.js.map +1 -1
- package/sync/overlay-trigger.js +1 -6
- package/sync/overlay-trigger.js.map +2 -2
- package/test/benchmark/basic-test.js +5 -2
- package/test/benchmark/basic-test.js.map +1 -1
- package/test/overlay-lifecycle.test.js +51 -14
- package/test/overlay-lifecycle.test.js.map +1 -1
- package/test/overlay-timer.test.js +1 -0
- package/test/overlay-timer.test.js.map +2 -2
- package/test/overlay-trigger-click.test.js +20 -5
- package/test/overlay-trigger-click.test.js.map +1 -1
- package/test/overlay-trigger-extended.test.js +19 -6
- package/test/overlay-trigger-extended.test.js.map +1 -1
- package/test/overlay-trigger-hover-click.test.js +7 -2
- package/test/overlay-trigger-hover-click.test.js.map +1 -1
- package/test/overlay-trigger-hover.test.js +110 -19
- package/test/overlay-trigger-hover.test.js.map +2 -2
- package/test/overlay-trigger-longpress.test.js +85 -29
- package/test/overlay-trigger-longpress.test.js.map +2 -2
- package/test/overlay-trigger-sync.test.js +183 -56
- package/test/overlay-trigger-sync.test.js.map +2 -2
- package/test/overlay-trigger.test.js +183 -56
- package/test/overlay-trigger.test.js.map +2 -2
- package/test/overlay.test-vrt.js +1 -0
- package/test/overlay.test-vrt.js.map +1 -1
- package/test/overlay.test.js +162 -74
- package/test/overlay.test.js.map +1 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
import { isVisible } from "../../../test/testing-helpers.js";
|
|
2
3
|
import {
|
|
3
4
|
aTimeout,
|
|
@@ -39,7 +40,8 @@ describe("Overlay Trigger", () => {
|
|
|
39
40
|
let outerClickContent;
|
|
40
41
|
let hoverContent;
|
|
41
42
|
beforeEach(async () => {
|
|
42
|
-
testDiv = await fixture(
|
|
43
|
+
testDiv = await fixture(
|
|
44
|
+
html`
|
|
43
45
|
<div>
|
|
44
46
|
<style>
|
|
45
47
|
body {
|
|
@@ -104,14 +106,23 @@ describe("Overlay Trigger", () => {
|
|
|
104
106
|
</div>
|
|
105
107
|
</overlay-trigger>
|
|
106
108
|
</div>
|
|
107
|
-
`
|
|
108
|
-
|
|
109
|
+
`
|
|
110
|
+
);
|
|
111
|
+
innerTrigger = testDiv.querySelector(
|
|
112
|
+
"#inner-trigger"
|
|
113
|
+
);
|
|
109
114
|
outerTrigger = testDiv.querySelector("#trigger");
|
|
110
115
|
innerButton = testDiv.querySelector("#inner-button");
|
|
111
116
|
outerButton = testDiv.querySelector("#outer-button");
|
|
112
|
-
innerClickContent = testDiv.querySelector(
|
|
113
|
-
|
|
114
|
-
|
|
117
|
+
innerClickContent = testDiv.querySelector(
|
|
118
|
+
"#inner-popover"
|
|
119
|
+
);
|
|
120
|
+
outerClickContent = testDiv.querySelector(
|
|
121
|
+
"#outer-popover"
|
|
122
|
+
);
|
|
123
|
+
hoverContent = testDiv.querySelector(
|
|
124
|
+
"#hover-content"
|
|
125
|
+
);
|
|
115
126
|
});
|
|
116
127
|
afterEach(async () => {
|
|
117
128
|
if (outerTrigger.open) {
|
|
@@ -132,7 +143,9 @@ describe("Overlay Trigger", () => {
|
|
|
132
143
|
throw new Error("popover is not an instance of Popover");
|
|
133
144
|
expect(outerClickContent).to.exist;
|
|
134
145
|
expect(outerClickContent.shadowRoot).to.exist;
|
|
135
|
-
expect(outerClickContent.parentElement).to.be.an.instanceOf(
|
|
146
|
+
expect(outerClickContent.parentElement).to.be.an.instanceOf(
|
|
147
|
+
OverlayTrigger
|
|
148
|
+
);
|
|
136
149
|
});
|
|
137
150
|
it("opens a popover", async () => {
|
|
138
151
|
expect(isVisible(outerClickContent)).to.be.false;
|
|
@@ -140,7 +153,9 @@ describe("Overlay Trigger", () => {
|
|
|
140
153
|
const open = oneEvent(outerTrigger, "sp-opened");
|
|
141
154
|
outerButton.click();
|
|
142
155
|
await open;
|
|
143
|
-
expect(outerClickContent.parentElement).to.not.be.an.instanceOf(
|
|
156
|
+
expect(outerClickContent.parentElement).to.not.be.an.instanceOf(
|
|
157
|
+
OverlayTrigger
|
|
158
|
+
);
|
|
144
159
|
expect(isVisible(outerClickContent)).to.be.true;
|
|
145
160
|
});
|
|
146
161
|
it("[disabled] closes a popover", async () => {
|
|
@@ -150,7 +165,9 @@ describe("Overlay Trigger", () => {
|
|
|
150
165
|
const opened = oneEvent(outerButton, "sp-opened");
|
|
151
166
|
outerButton.click();
|
|
152
167
|
await opened;
|
|
153
|
-
expect(outerClickContent.parentElement).to.not.be.an.instanceOf(
|
|
168
|
+
expect(outerClickContent.parentElement).to.not.be.an.instanceOf(
|
|
169
|
+
OverlayTrigger
|
|
170
|
+
);
|
|
154
171
|
expect(isVisible(outerClickContent)).to.be.true;
|
|
155
172
|
const closed = oneEvent(outerButton, "sp-closed");
|
|
156
173
|
outerTrigger.disabled = true;
|
|
@@ -164,11 +181,15 @@ describe("Overlay Trigger", () => {
|
|
|
164
181
|
const open = oneEvent(outerTrigger, "sp-opened");
|
|
165
182
|
outerButton.click();
|
|
166
183
|
await open;
|
|
167
|
-
expect(outerClickContent.parentElement).to.not.be.an.instanceOf(
|
|
184
|
+
expect(outerClickContent.parentElement).to.not.be.an.instanceOf(
|
|
185
|
+
OverlayTrigger
|
|
186
|
+
);
|
|
168
187
|
expect(isVisible(outerClickContent)).to.be.true;
|
|
169
188
|
window.dispatchEvent(new Event("resize"));
|
|
170
189
|
window.dispatchEvent(new Event("resize"));
|
|
171
|
-
expect(outerClickContent.parentElement).to.not.be.an.instanceOf(
|
|
190
|
+
expect(outerClickContent.parentElement).to.not.be.an.instanceOf(
|
|
191
|
+
OverlayTrigger
|
|
192
|
+
);
|
|
172
193
|
expect(isVisible(outerClickContent)).to.be.true;
|
|
173
194
|
});
|
|
174
195
|
["modal", "replace", "inline"].map((type) => {
|
|
@@ -180,7 +201,9 @@ describe("Overlay Trigger", () => {
|
|
|
180
201
|
const opened = oneEvent(outerTrigger, "sp-opened");
|
|
181
202
|
outerButton.click();
|
|
182
203
|
await opened;
|
|
183
|
-
expect(outerClickContent.parentElement).to.not.be.an.instanceOf(
|
|
204
|
+
expect(outerClickContent.parentElement).to.not.be.an.instanceOf(
|
|
205
|
+
OverlayTrigger
|
|
206
|
+
);
|
|
184
207
|
expect(isVisible(outerClickContent)).to.be.true;
|
|
185
208
|
});
|
|
186
209
|
});
|
|
@@ -191,13 +214,17 @@ describe("Overlay Trigger", () => {
|
|
|
191
214
|
const open = oneEvent(outerTrigger, "sp-opened");
|
|
192
215
|
outerButton.click();
|
|
193
216
|
await open;
|
|
194
|
-
expect(outerClickContent.parentElement).to.not.be.an.instanceOf(
|
|
217
|
+
expect(outerClickContent.parentElement).to.not.be.an.instanceOf(
|
|
218
|
+
OverlayTrigger
|
|
219
|
+
);
|
|
195
220
|
expect(isVisible(outerClickContent), "outer popover visible").to.be.true;
|
|
196
221
|
expect(isVisible(hoverContent), "hover popover still not visible").to.be.false;
|
|
197
|
-
outerButton.dispatchEvent(
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
222
|
+
outerButton.dispatchEvent(
|
|
223
|
+
new Event("mouseenter", {
|
|
224
|
+
bubbles: true,
|
|
225
|
+
composed: true
|
|
226
|
+
})
|
|
227
|
+
);
|
|
201
228
|
await nextFrame();
|
|
202
229
|
expect(hoverContent.parentElement).to.be.instanceOf(OverlayTrigger);
|
|
203
230
|
expect(isVisible(outerClickContent), "outer popover visible again").to.be.true;
|
|
@@ -205,26 +232,36 @@ describe("Overlay Trigger", () => {
|
|
|
205
232
|
});
|
|
206
233
|
it("does not open a popover when [disabled]", async () => {
|
|
207
234
|
const root = outerTrigger.shadowRoot ? outerTrigger.shadowRoot : outerTrigger;
|
|
208
|
-
const triggerZone = root.querySelector(
|
|
235
|
+
const triggerZone = root.querySelector(
|
|
236
|
+
"#trigger"
|
|
237
|
+
);
|
|
209
238
|
expect(outerTrigger.disabled).to.be.false;
|
|
210
239
|
let open = oneEvent(outerTrigger, "sp-opened");
|
|
211
240
|
outerButton.click();
|
|
212
241
|
await open;
|
|
213
|
-
expect(outerClickContent.parentElement).to.not.be.an.instanceOf(
|
|
242
|
+
expect(outerClickContent.parentElement).to.not.be.an.instanceOf(
|
|
243
|
+
OverlayTrigger
|
|
244
|
+
);
|
|
214
245
|
let closed = oneEvent(outerTrigger, "sp-closed");
|
|
215
246
|
document.body.click();
|
|
216
247
|
await closed;
|
|
217
|
-
expect(outerClickContent.parentElement).to.be.an.instanceOf(
|
|
248
|
+
expect(outerClickContent.parentElement).to.be.an.instanceOf(
|
|
249
|
+
OverlayTrigger
|
|
250
|
+
);
|
|
218
251
|
outerTrigger.disabled = true;
|
|
219
252
|
await elementUpdated(outerTrigger);
|
|
220
253
|
expect(outerTrigger.disabled).to.be.true;
|
|
221
254
|
expect(outerTrigger.hasAttribute("disabled")).to.be.true;
|
|
222
255
|
outerButton.click();
|
|
223
256
|
await aTimeout(200);
|
|
224
|
-
expect(outerClickContent.parentElement).to.be.an.instanceOf(
|
|
257
|
+
expect(outerClickContent.parentElement).to.be.an.instanceOf(
|
|
258
|
+
OverlayTrigger
|
|
259
|
+
);
|
|
225
260
|
triggerZone.dispatchEvent(new Event("mouseenter"));
|
|
226
261
|
await aTimeout(200);
|
|
227
|
-
expect(outerClickContent.parentElement).to.be.an.instanceOf(
|
|
262
|
+
expect(outerClickContent.parentElement).to.be.an.instanceOf(
|
|
263
|
+
OverlayTrigger
|
|
264
|
+
);
|
|
228
265
|
outerTrigger.disabled = false;
|
|
229
266
|
await elementUpdated(outerTrigger);
|
|
230
267
|
expect(outerTrigger.disabled).to.be.false;
|
|
@@ -232,11 +269,15 @@ describe("Overlay Trigger", () => {
|
|
|
232
269
|
open = oneEvent(outerTrigger, "sp-opened");
|
|
233
270
|
outerButton.click();
|
|
234
271
|
await open;
|
|
235
|
-
expect(outerClickContent.parentElement).to.not.be.an.instanceOf(
|
|
272
|
+
expect(outerClickContent.parentElement).to.not.be.an.instanceOf(
|
|
273
|
+
OverlayTrigger
|
|
274
|
+
);
|
|
236
275
|
closed = oneEvent(outerTrigger, "sp-closed");
|
|
237
276
|
outerButton.click();
|
|
238
277
|
await closed;
|
|
239
|
-
expect(outerClickContent.parentElement).to.be.an.instanceOf(
|
|
278
|
+
expect(outerClickContent.parentElement).to.be.an.instanceOf(
|
|
279
|
+
OverlayTrigger
|
|
280
|
+
);
|
|
240
281
|
});
|
|
241
282
|
it("opens a nested popover", async () => {
|
|
242
283
|
expect(isVisible(outerClickContent)).to.be.false;
|
|
@@ -245,13 +286,17 @@ describe("Overlay Trigger", () => {
|
|
|
245
286
|
let open = oneEvent(outerTrigger, "sp-opened");
|
|
246
287
|
outerButton.click();
|
|
247
288
|
await open;
|
|
248
|
-
expect(outerClickContent.parentElement).to.not.be.an.instanceOf(
|
|
289
|
+
expect(outerClickContent.parentElement).to.not.be.an.instanceOf(
|
|
290
|
+
OverlayTrigger
|
|
291
|
+
);
|
|
249
292
|
expect(isVisible(outerClickContent)).to.be.true;
|
|
250
293
|
expect(isVisible(innerClickContent)).to.be.false;
|
|
251
294
|
open = oneEvent(innerTrigger, "sp-opened");
|
|
252
295
|
innerButton.click();
|
|
253
296
|
await open;
|
|
254
|
-
expect(innerClickContent.parentElement).to.not.be.instanceOf(
|
|
297
|
+
expect(innerClickContent.parentElement).to.not.be.instanceOf(
|
|
298
|
+
OverlayTrigger
|
|
299
|
+
);
|
|
255
300
|
expect(isVisible(outerClickContent)).to.be.true;
|
|
256
301
|
expect(isVisible(innerClickContent)).to.be.true;
|
|
257
302
|
});
|
|
@@ -264,20 +309,29 @@ describe("Overlay Trigger", () => {
|
|
|
264
309
|
const outerOpen = oneEvent(outerButton, "sp-opened");
|
|
265
310
|
outerButton.click();
|
|
266
311
|
await outerOpen;
|
|
267
|
-
expect(outerClickContent.parentElement).to.not.be.an.instanceOf(
|
|
312
|
+
expect(outerClickContent.parentElement).to.not.be.an.instanceOf(
|
|
313
|
+
OverlayTrigger
|
|
314
|
+
);
|
|
268
315
|
expect(isVisible(outerClickContent), "outer popover opens").to.be.true;
|
|
269
316
|
expect(isVisible(innerClickContent), "inner popover stays closed").to.be.false;
|
|
270
317
|
const innerOpen = oneEvent(innerButton, "sp-opened");
|
|
271
318
|
innerButton.click();
|
|
272
319
|
await innerOpen;
|
|
273
|
-
expect(innerClickContent.parentElement).to.not.be.instanceOf(
|
|
320
|
+
expect(innerClickContent.parentElement).to.not.be.instanceOf(
|
|
321
|
+
OverlayTrigger
|
|
322
|
+
);
|
|
274
323
|
expect(isVisible(outerClickContent), "outer popover stays open").to.be.true;
|
|
275
324
|
expect(isVisible(innerClickContent), "inner popover opens").to.be.true;
|
|
276
325
|
const innerClose = oneEvent(innerButton, "sp-closed");
|
|
277
326
|
pressEscape();
|
|
278
327
|
await innerClose;
|
|
279
|
-
expect(innerClickContent.parentElement).to.be.instanceOf(
|
|
280
|
-
|
|
328
|
+
expect(innerClickContent.parentElement).to.be.instanceOf(
|
|
329
|
+
OverlayTrigger
|
|
330
|
+
);
|
|
331
|
+
expect(
|
|
332
|
+
document.activeElement === innerButton,
|
|
333
|
+
"outer popover recieved focus"
|
|
334
|
+
).to.be.true;
|
|
281
335
|
});
|
|
282
336
|
it("escape closes an open popover", async () => {
|
|
283
337
|
outerTrigger.type = "modal";
|
|
@@ -285,11 +339,17 @@ describe("Overlay Trigger", () => {
|
|
|
285
339
|
const outerOpen = oneEvent(outerButton, "sp-opened");
|
|
286
340
|
outerButton.click();
|
|
287
341
|
await outerOpen;
|
|
288
|
-
expect(
|
|
342
|
+
expect(
|
|
343
|
+
outerClickContent.parentElement instanceof OverlayTrigger,
|
|
344
|
+
"outer content stolen and reparented"
|
|
345
|
+
).to.be.false;
|
|
289
346
|
const innerOpen = oneEvent(innerButton, "sp-opened");
|
|
290
347
|
innerButton.click();
|
|
291
348
|
await innerOpen;
|
|
292
|
-
expect(
|
|
349
|
+
expect(
|
|
350
|
+
innerClickContent.parentElement instanceof OverlayTrigger,
|
|
351
|
+
"inner content stolen and reparented"
|
|
352
|
+
).to.be.false;
|
|
293
353
|
expect(isVisible(outerClickContent)).to.be.true;
|
|
294
354
|
expect(isVisible(innerClickContent)).to.be.true;
|
|
295
355
|
pressSpace();
|
|
@@ -298,13 +358,19 @@ describe("Overlay Trigger", () => {
|
|
|
298
358
|
const innerClose = oneEvent(innerButton, "sp-closed");
|
|
299
359
|
pressEscape();
|
|
300
360
|
await innerClose;
|
|
301
|
-
expect(
|
|
361
|
+
expect(
|
|
362
|
+
innerClickContent.parentElement instanceof OverlayTrigger,
|
|
363
|
+
"inner content returned"
|
|
364
|
+
).to.be.true;
|
|
302
365
|
expect(isVisible(outerClickContent)).to.be.true;
|
|
303
366
|
expect(isVisible(innerClickContent)).to.be.false;
|
|
304
367
|
const outerClose = oneEvent(outerButton, "sp-closed");
|
|
305
368
|
pressEscape();
|
|
306
369
|
await outerClose;
|
|
307
|
-
expect(
|
|
370
|
+
expect(
|
|
371
|
+
outerClickContent.parentElement instanceof OverlayTrigger,
|
|
372
|
+
"outer content returned"
|
|
373
|
+
).to.be.true;
|
|
308
374
|
expect(isVisible(outerClickContent)).to.be.false;
|
|
309
375
|
expect(isVisible(innerClickContent)).to.be.false;
|
|
310
376
|
});
|
|
@@ -314,11 +380,17 @@ describe("Overlay Trigger", () => {
|
|
|
314
380
|
const outerOpen = oneEvent(outerButton, "sp-opened");
|
|
315
381
|
outerButton.click();
|
|
316
382
|
await outerOpen;
|
|
317
|
-
expect(
|
|
383
|
+
expect(
|
|
384
|
+
outerClickContent.parentElement instanceof OverlayTrigger,
|
|
385
|
+
"outer content stolen and reparented"
|
|
386
|
+
).to.be.false;
|
|
318
387
|
const innerOpen = oneEvent(innerButton, "sp-opened");
|
|
319
388
|
innerButton.click();
|
|
320
389
|
await innerOpen;
|
|
321
|
-
expect(
|
|
390
|
+
expect(
|
|
391
|
+
innerClickContent.parentElement instanceof OverlayTrigger,
|
|
392
|
+
"inner content stolen and reparented"
|
|
393
|
+
).to.be.false;
|
|
322
394
|
expect(isVisible(outerClickContent)).to.be.true;
|
|
323
395
|
expect(isVisible(innerClickContent)).to.be.true;
|
|
324
396
|
innerClickContent.click();
|
|
@@ -328,19 +400,27 @@ describe("Overlay Trigger", () => {
|
|
|
328
400
|
const innerClose = oneEvent(innerButton, "sp-closed");
|
|
329
401
|
document.body.click();
|
|
330
402
|
await innerClose;
|
|
331
|
-
expect(
|
|
403
|
+
expect(
|
|
404
|
+
innerClickContent.parentElement instanceof OverlayTrigger,
|
|
405
|
+
"inner content returned"
|
|
406
|
+
).to.be.true;
|
|
332
407
|
expect(isVisible(outerClickContent)).to.be.true;
|
|
333
408
|
expect(isVisible(innerClickContent)).to.be.false;
|
|
334
409
|
const outerClose = oneEvent(outerButton, "sp-closed");
|
|
335
410
|
document.body.click();
|
|
336
411
|
await outerClose;
|
|
337
|
-
expect(
|
|
412
|
+
expect(
|
|
413
|
+
outerClickContent.parentElement instanceof OverlayTrigger,
|
|
414
|
+
"outer content returned"
|
|
415
|
+
).to.be.true;
|
|
338
416
|
expect(isVisible(outerClickContent)).to.be.false;
|
|
339
417
|
expect(isVisible(innerClickContent)).to.be.false;
|
|
340
418
|
});
|
|
341
419
|
it("opens a hover popover", async () => {
|
|
342
420
|
const root = outerTrigger.shadowRoot ? outerTrigger.shadowRoot : outerTrigger;
|
|
343
|
-
const triggerZone = root.querySelector(
|
|
421
|
+
const triggerZone = root.querySelector(
|
|
422
|
+
"#trigger"
|
|
423
|
+
);
|
|
344
424
|
expect(triggerZone).to.exist;
|
|
345
425
|
if (!triggerZone)
|
|
346
426
|
return;
|
|
@@ -351,7 +431,9 @@ describe("Overlay Trigger", () => {
|
|
|
351
431
|
const mouseEnter = new MouseEvent("mouseenter");
|
|
352
432
|
triggerZone.dispatchEvent(mouseEnter);
|
|
353
433
|
await open;
|
|
354
|
-
expect(hoverContent.parentElement).to.not.be.instanceOf(
|
|
434
|
+
expect(hoverContent.parentElement).to.not.be.instanceOf(
|
|
435
|
+
OverlayTrigger
|
|
436
|
+
);
|
|
355
437
|
expect(isVisible(hoverContent)).to.be.true;
|
|
356
438
|
const close = oneEvent(outerTrigger, "sp-closed");
|
|
357
439
|
const mouseLeave = new MouseEvent("mouseleave");
|
|
@@ -362,19 +444,27 @@ describe("Overlay Trigger", () => {
|
|
|
362
444
|
});
|
|
363
445
|
it("closes a hover popover", async () => {
|
|
364
446
|
const root = outerTrigger.shadowRoot ? outerTrigger.shadowRoot : outerTrigger;
|
|
365
|
-
const triggerZone = root.querySelector(
|
|
447
|
+
const triggerZone = root.querySelector(
|
|
448
|
+
"#trigger"
|
|
449
|
+
);
|
|
366
450
|
expect(triggerZone).to.exist;
|
|
367
451
|
if (!triggerZone)
|
|
368
452
|
return;
|
|
369
453
|
expect(outerButton).to.exist;
|
|
370
454
|
expect(hoverContent).to.exist;
|
|
371
|
-
expect(
|
|
455
|
+
expect(
|
|
456
|
+
isVisible(hoverContent),
|
|
457
|
+
"hoverContent should not be visible"
|
|
458
|
+
).to.be.false;
|
|
372
459
|
const mouseEnter = new MouseEvent("mouseenter");
|
|
373
460
|
const mouseLeave = new MouseEvent("mouseleave");
|
|
374
461
|
triggerZone.dispatchEvent(mouseEnter);
|
|
375
462
|
await nextFrame();
|
|
376
463
|
triggerZone.dispatchEvent(mouseLeave);
|
|
377
|
-
await waitUntil(
|
|
464
|
+
await waitUntil(
|
|
465
|
+
() => isVisible(hoverContent) === false,
|
|
466
|
+
"hoverContent should still not be visible"
|
|
467
|
+
);
|
|
378
468
|
});
|
|
379
469
|
it("dispatches events on open/close", async () => {
|
|
380
470
|
const opened = oneEvent(outerButton, "sp-opened");
|
|
@@ -386,7 +476,9 @@ describe("Overlay Trigger", () => {
|
|
|
386
476
|
const closed = oneEvent(outerButton, "sp-closed");
|
|
387
477
|
document.body.click();
|
|
388
478
|
const closedEvent = await closed;
|
|
389
|
-
expect(outerClickContent.parentElement).to.be.instanceOf(
|
|
479
|
+
expect(outerClickContent.parentElement).to.be.instanceOf(
|
|
480
|
+
OverlayTrigger
|
|
481
|
+
);
|
|
390
482
|
expect(closedEvent.detail.interaction).to.equal("click");
|
|
391
483
|
expect(isVisible(outerClickContent)).to.be.false;
|
|
392
484
|
});
|
|
@@ -437,7 +529,9 @@ describe("Overlay Trigger", () => {
|
|
|
437
529
|
button.click();
|
|
438
530
|
await opened;
|
|
439
531
|
await elementUpdated(el);
|
|
440
|
-
const overlay = document.querySelector(
|
|
532
|
+
const overlay = document.querySelector(
|
|
533
|
+
"active-overlay"
|
|
534
|
+
);
|
|
441
535
|
expect(overlay).to.exist;
|
|
442
536
|
expect(overlay.theme.color).to.not.equal("dark");
|
|
443
537
|
expect(overlay.theme.color).to.equal("light");
|
|
@@ -497,36 +591,69 @@ describe("Overlay Trigger", () => {
|
|
|
497
591
|
await open;
|
|
498
592
|
await elementUpdated(overlayTriggers[0]);
|
|
499
593
|
activeOverlays = [...document.querySelectorAll("active-overlay")];
|
|
500
|
-
expect(
|
|
501
|
-
|
|
594
|
+
expect(
|
|
595
|
+
activeOverlays.length,
|
|
596
|
+
"The first `active-overlay` element has been added."
|
|
597
|
+
).to.equal(1);
|
|
598
|
+
expect(
|
|
599
|
+
activeOverlays[0].slot,
|
|
600
|
+
"first overlay, first time"
|
|
601
|
+
).to.equal("open");
|
|
502
602
|
open = oneEvent(triggers[1], "sp-opened");
|
|
503
603
|
(_b = triggers[1]) == null ? void 0 : _b.click();
|
|
504
604
|
await open;
|
|
505
605
|
await elementUpdated(overlayTriggers[1]);
|
|
506
606
|
activeOverlays = [...document.querySelectorAll("active-overlay")];
|
|
507
|
-
expect(
|
|
508
|
-
|
|
509
|
-
|
|
607
|
+
expect(
|
|
608
|
+
activeOverlays.length,
|
|
609
|
+
"The second `active-overlay` element has been added."
|
|
610
|
+
).to.equal(2);
|
|
611
|
+
expect(
|
|
612
|
+
activeOverlays[0].slot,
|
|
613
|
+
"first overlay, second time"
|
|
614
|
+
).to.equal("open");
|
|
615
|
+
expect(
|
|
616
|
+
activeOverlays[1].slot,
|
|
617
|
+
"second overlay, second time"
|
|
618
|
+
).to.equal("open");
|
|
510
619
|
open = oneEvent(triggers[2], "sp-opened");
|
|
511
620
|
(_c = triggers[2]) == null ? void 0 : _c.click();
|
|
512
621
|
await open;
|
|
513
622
|
await elementUpdated(overlayTriggers[2]);
|
|
514
623
|
activeOverlays = [...document.querySelectorAll("active-overlay")];
|
|
515
|
-
expect(
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
624
|
+
expect(
|
|
625
|
+
activeOverlays.length,
|
|
626
|
+
"The third `active-overlay` element has been added."
|
|
627
|
+
).to.equal(3);
|
|
628
|
+
expect(
|
|
629
|
+
activeOverlays[0].hasAttribute("slot"),
|
|
630
|
+
"first overlay, third time"
|
|
631
|
+
).to.be.false;
|
|
632
|
+
expect(
|
|
633
|
+
activeOverlays[1].hasAttribute("slot"),
|
|
634
|
+
"second overlay, third time"
|
|
635
|
+
).to.be.false;
|
|
636
|
+
expect(
|
|
637
|
+
activeOverlays[2].slot,
|
|
638
|
+
"third overlay, third time"
|
|
639
|
+
).to.equal("open");
|
|
519
640
|
await nextFrame();
|
|
520
641
|
const closed = oneEvent(triggers[2], "sp-closed");
|
|
521
642
|
document.body.click();
|
|
522
643
|
await closed;
|
|
523
644
|
await elementUpdated(overlayTriggers[2]);
|
|
524
645
|
activeOverlays = [...document.querySelectorAll("active-overlay")];
|
|
525
|
-
expect(
|
|
646
|
+
expect(
|
|
647
|
+
activeOverlays.length,
|
|
648
|
+
"The third `active-overlay` element has been removed."
|
|
649
|
+
).to.equal(2);
|
|
526
650
|
await waitUntil(() => {
|
|
527
651
|
return activeOverlays[0].slot === "open";
|
|
528
652
|
}, "first overlay, last time");
|
|
529
|
-
expect(
|
|
653
|
+
expect(
|
|
654
|
+
activeOverlays[1].slot,
|
|
655
|
+
"second overlay, last time"
|
|
656
|
+
).to.equal("open");
|
|
530
657
|
});
|
|
531
658
|
});
|
|
532
659
|
});
|