@spectrum-web-components/overlay 0.30.1-overlay.41 → 0.31.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/active-overlay.d.ts +6 -0
- package/active-overlay.dev.js +5 -0
- package/{sp-overlay.dev.js.map → active-overlay.dev.js.map} +3 -3
- package/active-overlay.js +2 -0
- package/{sp-overlay.js.map → active-overlay.js.map} +4 -4
- package/custom-elements.json +1203 -0
- package/package.json +21 -50
- package/src/ActiveOverlay.d.ts +84 -0
- package/src/ActiveOverlay.dev.js +517 -0
- package/src/ActiveOverlay.dev.js.map +7 -0
- package/src/ActiveOverlay.js +16 -0
- package/src/ActiveOverlay.js.map +7 -0
- package/src/OverlayTrigger.d.ts +31 -23
- package/src/OverlayTrigger.dev.js +245 -135
- package/src/OverlayTrigger.dev.js.map +3 -3
- package/src/OverlayTrigger.js +22 -52
- package/src/OverlayTrigger.js.map +3 -3
- package/src/VirtualTrigger.dev.js +2 -0
- package/src/VirtualTrigger.dev.js.map +2 -2
- package/src/VirtualTrigger.js +1 -1
- package/src/VirtualTrigger.js.map +3 -3
- package/src/active-overlay.css.dev.js +13 -0
- package/src/active-overlay.css.dev.js.map +7 -0
- package/src/active-overlay.css.js +10 -0
- package/src/active-overlay.css.js.map +7 -0
- package/src/index.d.ts +3 -2
- package/src/index.dev.js +3 -2
- package/src/index.dev.js.map +2 -2
- package/src/index.js +1 -1
- package/src/index.js.map +2 -2
- package/src/loader.d.ts +2 -2
- package/src/loader.dev.js +19 -2
- package/src/loader.dev.js.map +2 -2
- package/src/loader.js +1 -1
- package/src/loader.js.map +3 -3
- package/src/overlay-stack.d.ts +50 -0
- package/src/overlay-stack.dev.js +514 -0
- package/src/overlay-stack.dev.js.map +7 -0
- package/src/overlay-stack.js +33 -0
- package/src/overlay-stack.js.map +7 -0
- package/src/overlay-trigger.css.dev.js +1 -1
- package/src/overlay-trigger.css.dev.js.map +1 -1
- package/src/overlay-trigger.css.js +1 -1
- package/src/overlay-trigger.css.js.map +1 -1
- package/src/overlay-types.d.ts +4 -6
- package/src/overlay-types.dev.js +0 -1
- package/src/overlay-types.dev.js.map +3 -3
- package/src/overlay-types.js +1 -1
- package/src/overlay-types.js.map +3 -3
- package/src/overlay-utils.d.ts +3 -0
- package/src/overlay-utils.dev.js +31 -0
- package/src/overlay-utils.dev.js.map +7 -0
- package/src/overlay-utils.js +2 -0
- package/src/overlay-utils.js.map +7 -0
- package/src/overlay.d.ts +59 -0
- package/src/overlay.dev.js +127 -0
- package/src/overlay.dev.js.map +7 -0
- package/src/overlay.js +2 -0
- package/src/overlay.js.map +7 -0
- package/stories/overlay-story-components.js +8 -9
- package/stories/overlay-story-components.js.map +2 -2
- package/stories/overlay.stories.js +652 -678
- package/stories/overlay.stories.js.map +2 -2
- package/sync/overlay-trigger.d.ts +0 -4
- package/sync/overlay-trigger.dev.js +4 -1
- package/sync/overlay-trigger.dev.js.map +2 -2
- package/sync/overlay-trigger.js +1 -1
- package/sync/overlay-trigger.js.map +3 -3
- package/test/benchmark/basic-test.js +1 -1
- package/test/benchmark/basic-test.js.map +1 -1
- package/test/index.js +375 -422
- package/test/index.js.map +3 -3
- package/test/overlay-lifecycle.test.js +106 -34
- package/test/overlay-lifecycle.test.js.map +2 -2
- package/test/overlay-trigger-click.test.js +5 -11
- package/test/overlay-trigger-click.test.js.map +2 -2
- package/test/overlay-trigger-extended.test.js +6 -1
- package/test/overlay-trigger-extended.test.js.map +2 -2
- package/test/overlay-trigger-hover-click.test.js +23 -23
- package/test/overlay-trigger-hover-click.test.js.map +2 -2
- package/test/overlay-trigger-hover.test.js +34 -40
- package/test/overlay-trigger-hover.test.js.map +2 -2
- package/test/overlay-trigger-longpress.test.js +80 -98
- package/test/overlay-trigger-longpress.test.js.map +2 -2
- package/test/overlay-trigger-sync.test.js +1 -1
- package/test/overlay-trigger-sync.test.js.map +2 -2
- package/test/overlay-trigger.test.js +1 -1
- package/test/overlay-trigger.test.js.map +2 -2
- package/test/overlay-update.test.js +4 -4
- package/test/overlay-update.test.js.map +2 -2
- package/test/overlay.test.js +235 -237
- package/test/overlay.test.js.map +3 -3
- package/sp-overlay.d.ts +0 -6
- package/sp-overlay.dev.js +0 -5
- package/sp-overlay.js +0 -2
- package/src/Overlay.d.ts +0 -28
- package/src/Overlay.dev.js +0 -88
- package/src/Overlay.dev.js.map +0 -7
- package/src/Overlay.js +0 -2
- package/src/Overlay.js.map +0 -7
- package/src/OverlayBase.d.ts +0 -117
- package/src/OverlayBase.dev.js +0 -680
- package/src/OverlayBase.dev.js.map +0 -7
- package/src/OverlayBase.js +0 -17
- package/src/OverlayBase.js.map +0 -7
- package/src/OverlayDialog.d.ts +0 -8
- package/src/OverlayDialog.dev.js +0 -151
- package/src/OverlayDialog.dev.js.map +0 -7
- package/src/OverlayDialog.js +0 -2
- package/src/OverlayDialog.js.map +0 -7
- package/src/OverlayNoPopover.d.ts +0 -8
- package/src/OverlayNoPopover.dev.js +0 -121
- package/src/OverlayNoPopover.dev.js.map +0 -7
- package/src/OverlayNoPopover.js +0 -2
- package/src/OverlayNoPopover.js.map +0 -7
- package/src/OverlayPopover.d.ts +0 -8
- package/src/OverlayPopover.dev.js +0 -171
- package/src/OverlayPopover.dev.js.map +0 -7
- package/src/OverlayPopover.js +0 -2
- package/src/OverlayPopover.js.map +0 -7
- package/src/OverlayStack.d.ts +0 -24
- package/src/OverlayStack.dev.js +0 -125
- package/src/OverlayStack.dev.js.map +0 -7
- package/src/OverlayStack.js +0 -2
- package/src/OverlayStack.js.map +0 -7
- package/src/PlacementController.d.ts +0 -36
- package/src/PlacementController.dev.js +0 -193
- package/src/PlacementController.dev.js.map +0 -7
- package/src/PlacementController.js +0 -2
- package/src/PlacementController.js.map +0 -7
- package/src/fullSizePlugin.d.ts +0 -12
- package/src/fullSizePlugin.dev.js +0 -39
- package/src/fullSizePlugin.dev.js.map +0 -7
- package/src/fullSizePlugin.js +0 -2
- package/src/fullSizePlugin.js.map +0 -7
- package/src/overlay-base.css.dev.js +0 -9
- package/src/overlay-base.css.dev.js.map +0 -7
- package/src/overlay-base.css.js +0 -6
- package/src/overlay-base.css.js.map +0 -7
- package/src/placement.d.ts +0 -21
- package/src/placement.dev.js +0 -111
- package/src/placement.dev.js.map +0 -7
- package/src/placement.js +0 -2
- package/src/placement.js.map +0 -7
- package/src/topLayerOverTransforms.d.ts +0 -22
- package/src/topLayerOverTransforms.dev.js +0 -165
- package/src/topLayerOverTransforms.dev.js.map +0 -7
- package/src/topLayerOverTransforms.js +0 -2
- package/src/topLayerOverTransforms.js.map +0 -7
- package/stories/overlay-element.stories.js +0 -230
- package/stories/overlay-element.stories.js.map +0 -7
- package/test/overlay-element.test-vrt.js +0 -5
- package/test/overlay-element.test-vrt.js.map +0 -7
- package/test/overlay-element.test.js +0 -664
- package/test/overlay-element.test.js.map +0 -7
- /package/src/{overlay-base.css.d.ts → active-overlay.css.d.ts} +0 -0
package/test/index.js
CHANGED
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
import {
|
|
2
|
+
import { escapeEvent, isVisible } from "../../../test/testing-helpers.js";
|
|
3
3
|
import {
|
|
4
4
|
aTimeout,
|
|
5
5
|
elementUpdated,
|
|
6
6
|
expect,
|
|
7
|
+
fixture,
|
|
7
8
|
html,
|
|
8
9
|
nextFrame,
|
|
9
10
|
oneEvent,
|
|
10
11
|
waitUntil
|
|
11
12
|
} from "@open-wc/testing";
|
|
13
|
+
import {
|
|
14
|
+
OverlayTrigger
|
|
15
|
+
} from "@spectrum-web-components/overlay";
|
|
12
16
|
import "@spectrum-web-components/button/sp-button.js";
|
|
13
17
|
import "@spectrum-web-components/popover/sp-popover.js";
|
|
18
|
+
import { Popover } from "@spectrum-web-components/popover";
|
|
14
19
|
import "@spectrum-web-components/theme/sp-theme.js";
|
|
15
|
-
import { sendMouse } from "../../../test/plugins/browser.js";
|
|
16
|
-
import { sendKeys } from "@web/test-runner-commands";
|
|
17
20
|
function pressKey(code) {
|
|
18
21
|
const up = new KeyboardEvent("keyup", {
|
|
19
22
|
bubbles: true,
|
|
@@ -23,12 +26,23 @@ function pressKey(code) {
|
|
|
23
26
|
});
|
|
24
27
|
document.dispatchEvent(up);
|
|
25
28
|
}
|
|
29
|
+
const pressEscape = () => {
|
|
30
|
+
document.dispatchEvent(escapeEvent());
|
|
31
|
+
};
|
|
26
32
|
const pressSpace = () => pressKey("Space");
|
|
27
|
-
export const runOverlayTriggerTests = (
|
|
28
|
-
describe(
|
|
33
|
+
export const runOverlayTriggerTests = () => {
|
|
34
|
+
describe("Overlay Trigger - sync", () => {
|
|
29
35
|
describe("open/close", () => {
|
|
30
|
-
|
|
31
|
-
|
|
36
|
+
let testDiv;
|
|
37
|
+
let innerTrigger;
|
|
38
|
+
let outerTrigger;
|
|
39
|
+
let innerButton;
|
|
40
|
+
let outerButton;
|
|
41
|
+
let innerClickContent;
|
|
42
|
+
let outerClickContent;
|
|
43
|
+
let hoverContent;
|
|
44
|
+
beforeEach(async () => {
|
|
45
|
+
testDiv = await fixture(
|
|
32
46
|
html`
|
|
33
47
|
<div>
|
|
34
48
|
<style>
|
|
@@ -52,6 +66,8 @@ export const runOverlayTriggerTests = (type) => {
|
|
|
52
66
|
slot="click-content"
|
|
53
67
|
direction="bottom"
|
|
54
68
|
tip
|
|
69
|
+
open
|
|
70
|
+
tabindex="0"
|
|
55
71
|
>
|
|
56
72
|
<div class="options-popover-content">
|
|
57
73
|
<overlay-trigger
|
|
@@ -70,6 +86,8 @@ export const runOverlayTriggerTests = (type) => {
|
|
|
70
86
|
slot="click-content"
|
|
71
87
|
direction="bottom"
|
|
72
88
|
tip
|
|
89
|
+
open
|
|
90
|
+
tabindex="0"
|
|
73
91
|
>
|
|
74
92
|
<div
|
|
75
93
|
class="options-popover-content"
|
|
@@ -92,505 +110,407 @@ export const runOverlayTriggerTests = (type) => {
|
|
|
92
110
|
</div>
|
|
93
111
|
`
|
|
94
112
|
);
|
|
95
|
-
|
|
113
|
+
innerTrigger = testDiv.querySelector(
|
|
96
114
|
"#inner-trigger"
|
|
97
115
|
);
|
|
98
|
-
|
|
116
|
+
outerTrigger = testDiv.querySelector(
|
|
99
117
|
"#trigger"
|
|
100
118
|
);
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
this.outerButton = this.testDiv.querySelector(
|
|
105
|
-
"#outer-button"
|
|
106
|
-
);
|
|
107
|
-
this.innerClickContent = this.testDiv.querySelector(
|
|
119
|
+
innerButton = testDiv.querySelector("#inner-button");
|
|
120
|
+
outerButton = testDiv.querySelector("#outer-button");
|
|
121
|
+
innerClickContent = testDiv.querySelector(
|
|
108
122
|
"#inner-popover"
|
|
109
123
|
);
|
|
110
|
-
|
|
124
|
+
outerClickContent = testDiv.querySelector(
|
|
111
125
|
"#outer-popover"
|
|
112
126
|
);
|
|
113
|
-
|
|
127
|
+
hoverContent = testDiv.querySelector(
|
|
114
128
|
"#hover-content"
|
|
115
129
|
);
|
|
116
130
|
});
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
131
|
+
afterEach(async () => {
|
|
132
|
+
if (outerTrigger.open) {
|
|
133
|
+
const closed = oneEvent(outerTrigger, "sp-closed");
|
|
134
|
+
outerTrigger.open = void 0;
|
|
135
|
+
await closed;
|
|
136
|
+
}
|
|
137
|
+
outerTrigger.removeAttribute("type");
|
|
138
|
+
if (innerTrigger.open) {
|
|
139
|
+
const closed = oneEvent(innerTrigger, "sp-closed");
|
|
140
|
+
innerTrigger.open = void 0;
|
|
141
|
+
await closed;
|
|
142
|
+
}
|
|
143
|
+
innerTrigger.removeAttribute("type");
|
|
144
|
+
});
|
|
145
|
+
it("loads", async () => {
|
|
146
|
+
if (!(outerClickContent instanceof Popover))
|
|
147
|
+
throw new Error("popover is not an instance of Popover");
|
|
148
|
+
expect(outerClickContent).to.exist;
|
|
149
|
+
expect(outerClickContent.shadowRoot).to.exist;
|
|
150
|
+
expect(outerClickContent.parentElement).to.be.an.instanceOf(
|
|
151
|
+
OverlayTrigger
|
|
152
|
+
);
|
|
153
|
+
});
|
|
154
|
+
it("opens a popover", async () => {
|
|
155
|
+
expect(isVisible(outerClickContent)).to.be.false;
|
|
156
|
+
expect(outerButton).to.exist;
|
|
157
|
+
const open = oneEvent(outerTrigger, "sp-opened");
|
|
158
|
+
outerButton.click();
|
|
125
159
|
await open;
|
|
126
|
-
expect(
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
).to.be.true;
|
|
160
|
+
expect(outerClickContent.parentElement).to.not.be.an.instanceOf(
|
|
161
|
+
OverlayTrigger
|
|
162
|
+
);
|
|
163
|
+
expect(isVisible(outerClickContent)).to.be.true;
|
|
130
164
|
});
|
|
131
|
-
it("[disabled] closes a popover", async
|
|
132
|
-
expect(
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
)
|
|
136
|
-
|
|
137
|
-
expect(this.outerButton).to.exist;
|
|
138
|
-
const opened = oneEvent(this.outerButton, "sp-opened");
|
|
139
|
-
this.outerButton.click();
|
|
165
|
+
it("[disabled] closes a popover", async () => {
|
|
166
|
+
expect(isVisible(outerClickContent)).to.be.false;
|
|
167
|
+
expect(outerTrigger.disabled).to.be.false;
|
|
168
|
+
expect(outerButton).to.exist;
|
|
169
|
+
const opened = oneEvent(outerButton, "sp-opened");
|
|
170
|
+
outerButton.click();
|
|
140
171
|
await opened;
|
|
141
|
-
expect(
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
).to.be.true;
|
|
145
|
-
const closed = oneEvent(
|
|
146
|
-
|
|
172
|
+
expect(outerClickContent.parentElement).to.not.be.an.instanceOf(
|
|
173
|
+
OverlayTrigger
|
|
174
|
+
);
|
|
175
|
+
expect(isVisible(outerClickContent)).to.be.true;
|
|
176
|
+
const closed = oneEvent(outerButton, "sp-closed");
|
|
177
|
+
outerTrigger.disabled = true;
|
|
147
178
|
await closed;
|
|
148
|
-
expect(
|
|
149
|
-
|
|
150
|
-
"popover not available at point"
|
|
151
|
-
).to.be.false;
|
|
179
|
+
expect(isVisible(outerClickContent)).to.be.false;
|
|
180
|
+
expect(outerTrigger.disabled).to.be.true;
|
|
152
181
|
});
|
|
153
|
-
it("resizes a popover", async
|
|
154
|
-
expect(
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
)
|
|
158
|
-
expect(this.outerButton).to.exist;
|
|
159
|
-
const open = oneEvent(this.outerTrigger, "sp-opened");
|
|
160
|
-
this.outerButton.click();
|
|
182
|
+
it("resizes a popover", async () => {
|
|
183
|
+
expect(isVisible(outerClickContent)).to.be.false;
|
|
184
|
+
expect(outerButton).to.exist;
|
|
185
|
+
const open = oneEvent(outerTrigger, "sp-opened");
|
|
186
|
+
outerButton.click();
|
|
161
187
|
await open;
|
|
162
|
-
expect(
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
).to.be.true;
|
|
188
|
+
expect(outerClickContent.parentElement).to.not.be.an.instanceOf(
|
|
189
|
+
OverlayTrigger
|
|
190
|
+
);
|
|
191
|
+
expect(isVisible(outerClickContent)).to.be.true;
|
|
166
192
|
window.dispatchEvent(new Event("resize"));
|
|
167
193
|
window.dispatchEvent(new Event("resize"));
|
|
168
|
-
expect(
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
).to.be.true;
|
|
194
|
+
expect(outerClickContent.parentElement).to.not.be.an.instanceOf(
|
|
195
|
+
OverlayTrigger
|
|
196
|
+
);
|
|
197
|
+
expect(isVisible(outerClickContent)).to.be.true;
|
|
172
198
|
});
|
|
173
|
-
["modal", "replace", "inline"].map((
|
|
174
|
-
it(`opens a popover - [type="${
|
|
175
|
-
|
|
176
|
-
await elementUpdated(
|
|
177
|
-
expect(
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
)
|
|
181
|
-
expect(this.outerButton).to.exist;
|
|
182
|
-
const opened = oneEvent(this.outerTrigger, "sp-opened");
|
|
183
|
-
this.outerButton.click();
|
|
199
|
+
["modal", "replace", "inline"].map((type) => {
|
|
200
|
+
it(`opens a popover - [type="${type}"]`, async () => {
|
|
201
|
+
outerTrigger.type = type;
|
|
202
|
+
await elementUpdated(outerTrigger);
|
|
203
|
+
expect(isVisible(outerClickContent)).to.be.false;
|
|
204
|
+
expect(outerButton).to.exist;
|
|
205
|
+
const opened = oneEvent(outerTrigger, "sp-opened");
|
|
206
|
+
outerButton.click();
|
|
184
207
|
await opened;
|
|
185
208
|
expect(
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
).to.be.true;
|
|
209
|
+
outerClickContent.parentElement
|
|
210
|
+
).to.not.be.an.instanceOf(OverlayTrigger);
|
|
211
|
+
expect(isVisible(outerClickContent)).to.be.true;
|
|
189
212
|
});
|
|
190
213
|
});
|
|
191
|
-
it("does not open a hover popover when a click popover is open", async
|
|
214
|
+
it("does not open a hover popover when a click popover is open", async () => {
|
|
192
215
|
expect(
|
|
193
|
-
|
|
194
|
-
"popover not
|
|
216
|
+
isVisible(outerClickContent),
|
|
217
|
+
"outer popover not visible"
|
|
195
218
|
).to.be.false;
|
|
196
|
-
expect(
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
)
|
|
200
|
-
expect(this.outerButton).to.exist;
|
|
201
|
-
const open = oneEvent(this.outerTrigger, "sp-opened");
|
|
202
|
-
this.outerButton.click();
|
|
219
|
+
expect(isVisible(hoverContent), "hover popover not visible").to.be.false;
|
|
220
|
+
expect(outerButton).to.exist;
|
|
221
|
+
const open = oneEvent(outerTrigger, "sp-opened");
|
|
222
|
+
outerButton.click();
|
|
203
223
|
await open;
|
|
224
|
+
expect(outerClickContent.parentElement).to.not.be.an.instanceOf(
|
|
225
|
+
OverlayTrigger
|
|
226
|
+
);
|
|
227
|
+
expect(isVisible(outerClickContent), "outer popover visible").to.be.true;
|
|
204
228
|
expect(
|
|
205
|
-
|
|
206
|
-
"popover
|
|
207
|
-
).to.be.true;
|
|
208
|
-
expect(
|
|
209
|
-
await isOnTopLayer(this.hoverContent),
|
|
210
|
-
"hover not available at point"
|
|
229
|
+
isVisible(hoverContent),
|
|
230
|
+
"hover popover still not visible"
|
|
211
231
|
).to.be.false;
|
|
212
|
-
|
|
232
|
+
outerButton.dispatchEvent(
|
|
213
233
|
new Event("mouseenter", {
|
|
214
234
|
bubbles: true,
|
|
215
235
|
composed: true
|
|
216
236
|
})
|
|
217
237
|
);
|
|
218
238
|
await nextFrame();
|
|
239
|
+
expect(hoverContent.parentElement).to.be.instanceOf(
|
|
240
|
+
OverlayTrigger
|
|
241
|
+
);
|
|
219
242
|
expect(
|
|
220
|
-
|
|
221
|
-
"popover
|
|
243
|
+
isVisible(outerClickContent),
|
|
244
|
+
"outer popover visible again"
|
|
222
245
|
).to.be.true;
|
|
223
246
|
expect(
|
|
224
|
-
|
|
225
|
-
"hover not
|
|
247
|
+
isVisible(hoverContent),
|
|
248
|
+
"hover popover not visible again"
|
|
226
249
|
).to.be.false;
|
|
227
250
|
});
|
|
228
|
-
it("does not open a popover when [disabled]", async
|
|
229
|
-
|
|
251
|
+
it("does not open a popover when [disabled]", async () => {
|
|
252
|
+
var _a, _b, _c, _d, _e, _f;
|
|
253
|
+
const root = outerTrigger.shadowRoot ? outerTrigger.shadowRoot : outerTrigger;
|
|
254
|
+
const triggerZone = root.querySelector(
|
|
230
255
|
"#trigger"
|
|
231
256
|
);
|
|
232
|
-
expect(
|
|
233
|
-
let open = oneEvent(
|
|
234
|
-
|
|
257
|
+
expect(outerTrigger.disabled).to.be.false;
|
|
258
|
+
let open = oneEvent(outerTrigger, "sp-opened");
|
|
259
|
+
outerButton.click();
|
|
235
260
|
await open;
|
|
236
|
-
expect(
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
)
|
|
240
|
-
|
|
241
|
-
sendMouse({
|
|
242
|
-
steps: [
|
|
243
|
-
{
|
|
244
|
-
type: "click",
|
|
245
|
-
position: [1, 1]
|
|
246
|
-
}
|
|
247
|
-
]
|
|
248
|
-
});
|
|
261
|
+
expect((_a = outerClickContent.parentElement) == null ? void 0 : _a.localName).to.equal(
|
|
262
|
+
"active-overlay"
|
|
263
|
+
);
|
|
264
|
+
let closed = oneEvent(outerTrigger, "sp-closed");
|
|
265
|
+
document.body.click();
|
|
249
266
|
await closed;
|
|
250
|
-
expect(
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
expect(
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
"hover not available at point"
|
|
263
|
-
).to.be.false;
|
|
267
|
+
expect((_b = outerClickContent.parentElement) == null ? void 0 : _b.localName).to.equal(
|
|
268
|
+
"overlay-trigger"
|
|
269
|
+
);
|
|
270
|
+
outerTrigger.disabled = true;
|
|
271
|
+
await elementUpdated(outerTrigger);
|
|
272
|
+
expect(outerTrigger.disabled).to.be.true;
|
|
273
|
+
expect(outerTrigger.hasAttribute("disabled")).to.be.true;
|
|
274
|
+
outerButton.click();
|
|
275
|
+
await aTimeout(200);
|
|
276
|
+
expect((_c = outerClickContent.parentElement) == null ? void 0 : _c.localName).to.equal(
|
|
277
|
+
"overlay-trigger"
|
|
278
|
+
);
|
|
264
279
|
triggerZone.dispatchEvent(new Event("mouseenter"));
|
|
265
|
-
await aTimeout(
|
|
266
|
-
expect(
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
expect(
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
this.outerButton.click();
|
|
280
|
+
await aTimeout(200);
|
|
281
|
+
expect((_d = outerClickContent.parentElement) == null ? void 0 : _d.localName).to.equal(
|
|
282
|
+
"overlay-trigger"
|
|
283
|
+
);
|
|
284
|
+
outerTrigger.disabled = false;
|
|
285
|
+
await elementUpdated(outerTrigger);
|
|
286
|
+
expect(outerTrigger.disabled).to.be.false;
|
|
287
|
+
expect(outerTrigger.hasAttribute("disabled")).to.be.false;
|
|
288
|
+
open = oneEvent(outerTrigger, "sp-opened");
|
|
289
|
+
outerButton.click();
|
|
276
290
|
await open;
|
|
277
|
-
expect(
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
)
|
|
281
|
-
|
|
282
|
-
this.outerButton.click();
|
|
291
|
+
expect((_e = outerClickContent.parentElement) == null ? void 0 : _e.localName).to.equal(
|
|
292
|
+
"active-overlay"
|
|
293
|
+
);
|
|
294
|
+
closed = oneEvent(outerTrigger, "sp-closed");
|
|
295
|
+
outerButton.click();
|
|
283
296
|
await closed;
|
|
284
|
-
expect(
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
).to.be.false;
|
|
297
|
+
expect((_f = outerClickContent.parentElement) == null ? void 0 : _f.localName).to.equal(
|
|
298
|
+
"overlay-trigger"
|
|
299
|
+
);
|
|
288
300
|
});
|
|
289
|
-
it("opens a nested popover", async
|
|
290
|
-
expect(
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
)
|
|
294
|
-
|
|
295
|
-
await isOnTopLayer(this.innerClickContent),
|
|
296
|
-
"hover not available at point"
|
|
297
|
-
).to.be.false;
|
|
298
|
-
expect(this.outerButton).to.exist;
|
|
299
|
-
let open = oneEvent(this.outerTrigger, "sp-opened");
|
|
300
|
-
this.outerButton.click();
|
|
301
|
+
it("opens a nested popover", async () => {
|
|
302
|
+
expect(isVisible(outerClickContent)).to.be.false;
|
|
303
|
+
expect(isVisible(innerClickContent)).to.be.false;
|
|
304
|
+
expect(outerButton).to.exist;
|
|
305
|
+
let open = oneEvent(outerTrigger, "sp-opened");
|
|
306
|
+
outerButton.click();
|
|
301
307
|
await open;
|
|
302
|
-
expect(
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
).to.be.true;
|
|
306
|
-
expect(
|
|
307
|
-
open = oneEvent(
|
|
308
|
-
|
|
308
|
+
expect(outerClickContent.parentElement).to.not.be.an.instanceOf(
|
|
309
|
+
OverlayTrigger
|
|
310
|
+
);
|
|
311
|
+
expect(isVisible(outerClickContent)).to.be.true;
|
|
312
|
+
expect(isVisible(innerClickContent)).to.be.false;
|
|
313
|
+
open = oneEvent(innerTrigger, "sp-opened");
|
|
314
|
+
innerButton.click();
|
|
309
315
|
await open;
|
|
310
|
-
expect(
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
).to.be.true;
|
|
314
|
-
expect(
|
|
315
|
-
await isOnTopLayer(this.innerClickContent),
|
|
316
|
-
"inner click content available at point"
|
|
317
|
-
).to.be.true;
|
|
316
|
+
expect(innerClickContent.parentElement).to.not.be.instanceOf(
|
|
317
|
+
OverlayTrigger
|
|
318
|
+
);
|
|
319
|
+
expect(isVisible(outerClickContent)).to.be.true;
|
|
320
|
+
expect(isVisible(innerClickContent)).to.be.true;
|
|
318
321
|
});
|
|
319
|
-
it('focus previous "modal" when closing nested "modal"', async
|
|
320
|
-
|
|
321
|
-
|
|
322
|
+
it('focus previous "modal" when closing nested "modal"', async () => {
|
|
323
|
+
outerTrigger.type = "modal";
|
|
324
|
+
innerTrigger.type = "modal";
|
|
322
325
|
expect(
|
|
323
|
-
|
|
324
|
-
"outer
|
|
326
|
+
isVisible(outerClickContent),
|
|
327
|
+
"outer popover starts closed"
|
|
325
328
|
).to.be.false;
|
|
326
329
|
expect(
|
|
327
|
-
|
|
328
|
-
"inner
|
|
330
|
+
isVisible(innerClickContent),
|
|
331
|
+
"inner popover starts closed"
|
|
329
332
|
).to.be.false;
|
|
330
|
-
|
|
331
|
-
|
|
333
|
+
expect(outerButton).to.exist;
|
|
334
|
+
const outerOpen = oneEvent(outerButton, "sp-opened");
|
|
335
|
+
outerButton.click();
|
|
332
336
|
await outerOpen;
|
|
337
|
+
expect(outerClickContent.parentElement).to.not.be.an.instanceOf(
|
|
338
|
+
OverlayTrigger
|
|
339
|
+
);
|
|
340
|
+
expect(isVisible(outerClickContent), "outer popover opens").to.be.true;
|
|
333
341
|
expect(
|
|
334
|
-
|
|
335
|
-
"
|
|
336
|
-
).to.be.true;
|
|
337
|
-
expect(
|
|
338
|
-
await isOnTopLayer(this.innerClickContent),
|
|
339
|
-
"inner click content available at point"
|
|
342
|
+
isVisible(innerClickContent),
|
|
343
|
+
"inner popover stays closed"
|
|
340
344
|
).to.be.false;
|
|
341
|
-
const innerOpen = oneEvent(
|
|
342
|
-
|
|
345
|
+
const innerOpen = oneEvent(innerButton, "sp-opened");
|
|
346
|
+
innerButton.click();
|
|
343
347
|
await innerOpen;
|
|
344
|
-
expect(
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
).to.be.true;
|
|
348
|
-
expect(
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
).to.be.true;
|
|
352
|
-
const innerClose = oneEvent(this.innerButton, "sp-closed");
|
|
353
|
-
await sendKeys({
|
|
354
|
-
press: "Escape"
|
|
355
|
-
});
|
|
348
|
+
expect(innerClickContent.parentElement).to.not.be.instanceOf(
|
|
349
|
+
OverlayTrigger
|
|
350
|
+
);
|
|
351
|
+
expect(isVisible(outerClickContent), "outer popover stays open").to.be.true;
|
|
352
|
+
expect(isVisible(innerClickContent), "inner popover opens").to.be.true;
|
|
353
|
+
const innerClose = oneEvent(innerButton, "sp-closed");
|
|
354
|
+
pressEscape();
|
|
356
355
|
await innerClose;
|
|
356
|
+
expect(innerClickContent.parentElement).to.be.instanceOf(
|
|
357
|
+
OverlayTrigger
|
|
358
|
+
);
|
|
357
359
|
expect(
|
|
358
|
-
|
|
359
|
-
"outer click content available at point"
|
|
360
|
-
).to.be.true;
|
|
361
|
-
expect(
|
|
362
|
-
await isOnTopLayer(this.innerClickContent),
|
|
363
|
-
"inner click content not available at point"
|
|
364
|
-
).to.be.false;
|
|
365
|
-
expect(
|
|
366
|
-
document.activeElement === this.innerButton,
|
|
360
|
+
document.activeElement === innerButton,
|
|
367
361
|
"outer popover recieved focus"
|
|
368
362
|
).to.be.true;
|
|
369
363
|
});
|
|
370
|
-
it("escape closes an open popover", async
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
const outerOpen = oneEvent(
|
|
374
|
-
|
|
364
|
+
it("escape closes an open popover", async () => {
|
|
365
|
+
outerTrigger.type = "modal";
|
|
366
|
+
innerTrigger.type = "modal";
|
|
367
|
+
const outerOpen = oneEvent(outerButton, "sp-opened");
|
|
368
|
+
outerButton.click();
|
|
375
369
|
await outerOpen;
|
|
376
370
|
expect(
|
|
377
|
-
|
|
378
|
-
"outer
|
|
379
|
-
).to.be.
|
|
380
|
-
const innerOpen = oneEvent(
|
|
381
|
-
|
|
371
|
+
outerClickContent.parentElement instanceof OverlayTrigger,
|
|
372
|
+
"outer content stolen and reparented"
|
|
373
|
+
).to.be.false;
|
|
374
|
+
const innerOpen = oneEvent(innerButton, "sp-opened");
|
|
375
|
+
innerButton.click();
|
|
382
376
|
await innerOpen;
|
|
383
377
|
expect(
|
|
384
|
-
|
|
385
|
-
"
|
|
386
|
-
).to.be.
|
|
387
|
-
expect(
|
|
388
|
-
|
|
389
|
-
"inner click content available at point"
|
|
390
|
-
).to.be.true;
|
|
378
|
+
innerClickContent.parentElement instanceof OverlayTrigger,
|
|
379
|
+
"inner content stolen and reparented"
|
|
380
|
+
).to.be.false;
|
|
381
|
+
expect(isVisible(outerClickContent)).to.be.true;
|
|
382
|
+
expect(isVisible(innerClickContent)).to.be.true;
|
|
391
383
|
pressSpace();
|
|
392
|
-
expect(
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
)
|
|
396
|
-
expect(
|
|
397
|
-
await isOnTopLayer(this.innerClickContent),
|
|
398
|
-
"inner click content available at point"
|
|
399
|
-
).to.be.true;
|
|
400
|
-
const innerClose = oneEvent(this.innerButton, "sp-closed");
|
|
401
|
-
await sendKeys({
|
|
402
|
-
press: "Escape"
|
|
403
|
-
});
|
|
384
|
+
expect(isVisible(outerClickContent)).to.be.true;
|
|
385
|
+
expect(isVisible(innerClickContent)).to.be.true;
|
|
386
|
+
const innerClose = oneEvent(innerButton, "sp-closed");
|
|
387
|
+
pressEscape();
|
|
404
388
|
await innerClose;
|
|
405
389
|
expect(
|
|
406
|
-
|
|
407
|
-
"
|
|
390
|
+
innerClickContent.parentElement instanceof OverlayTrigger,
|
|
391
|
+
"inner content returned"
|
|
408
392
|
).to.be.true;
|
|
409
|
-
expect(
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
)
|
|
413
|
-
const outerClose = oneEvent(this.outerButton, "sp-closed");
|
|
414
|
-
await sendKeys({
|
|
415
|
-
press: "Escape"
|
|
416
|
-
});
|
|
393
|
+
expect(isVisible(outerClickContent)).to.be.true;
|
|
394
|
+
expect(isVisible(innerClickContent)).to.be.false;
|
|
395
|
+
const outerClose = oneEvent(outerButton, "sp-closed");
|
|
396
|
+
pressEscape();
|
|
417
397
|
await outerClose;
|
|
418
398
|
expect(
|
|
419
|
-
|
|
420
|
-
"outer
|
|
421
|
-
).to.be.
|
|
422
|
-
expect(
|
|
423
|
-
|
|
424
|
-
"inner click content not available at point"
|
|
425
|
-
).to.be.false;
|
|
399
|
+
outerClickContent.parentElement instanceof OverlayTrigger,
|
|
400
|
+
"outer content returned"
|
|
401
|
+
).to.be.true;
|
|
402
|
+
expect(isVisible(outerClickContent)).to.be.false;
|
|
403
|
+
expect(isVisible(innerClickContent)).to.be.false;
|
|
426
404
|
});
|
|
427
|
-
it("click closes an open popover", async
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
const outerOpen = oneEvent(
|
|
431
|
-
|
|
405
|
+
it("click closes an open popover", async () => {
|
|
406
|
+
outerTrigger.type = "modal";
|
|
407
|
+
innerTrigger.type = "modal";
|
|
408
|
+
const outerOpen = oneEvent(outerButton, "sp-opened");
|
|
409
|
+
outerButton.click();
|
|
432
410
|
await outerOpen;
|
|
433
411
|
expect(
|
|
434
|
-
|
|
435
|
-
"outer
|
|
436
|
-
).to.be.
|
|
437
|
-
const innerOpen = oneEvent(
|
|
438
|
-
|
|
412
|
+
outerClickContent.parentElement instanceof OverlayTrigger,
|
|
413
|
+
"outer content stolen and reparented"
|
|
414
|
+
).to.be.false;
|
|
415
|
+
const innerOpen = oneEvent(innerButton, "sp-opened");
|
|
416
|
+
innerButton.click();
|
|
439
417
|
await innerOpen;
|
|
440
418
|
expect(
|
|
441
|
-
|
|
442
|
-
"
|
|
443
|
-
).to.be.
|
|
444
|
-
expect(
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
).to.be.true;
|
|
448
|
-
this.innerClickContent.click();
|
|
419
|
+
innerClickContent.parentElement instanceof OverlayTrigger,
|
|
420
|
+
"inner content stolen and reparented"
|
|
421
|
+
).to.be.false;
|
|
422
|
+
expect(isVisible(outerClickContent)).to.be.true;
|
|
423
|
+
expect(isVisible(innerClickContent)).to.be.true;
|
|
424
|
+
innerClickContent.click();
|
|
449
425
|
await aTimeout(200);
|
|
450
|
-
expect(
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
expect(
|
|
455
|
-
await isOnTopLayer(this.innerClickContent),
|
|
456
|
-
"inner click content is available at point"
|
|
457
|
-
).to.be.true;
|
|
458
|
-
const innerClose = oneEvent(this.innerButton, "sp-closed");
|
|
459
|
-
sendMouse({
|
|
460
|
-
steps: [
|
|
461
|
-
{
|
|
462
|
-
type: "click",
|
|
463
|
-
position: [1, 1]
|
|
464
|
-
}
|
|
465
|
-
]
|
|
466
|
-
});
|
|
426
|
+
expect(isVisible(outerClickContent)).to.be.true;
|
|
427
|
+
expect(isVisible(innerClickContent)).to.be.true;
|
|
428
|
+
const innerClose = oneEvent(innerButton, "sp-closed");
|
|
429
|
+
document.body.click();
|
|
467
430
|
await innerClose;
|
|
468
431
|
expect(
|
|
469
|
-
|
|
470
|
-
"
|
|
432
|
+
innerClickContent.parentElement instanceof OverlayTrigger,
|
|
433
|
+
"inner content returned"
|
|
471
434
|
).to.be.true;
|
|
472
|
-
expect(
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
const outerClose = oneEvent(this.outerButton, "sp-closed");
|
|
477
|
-
sendMouse({
|
|
478
|
-
steps: [
|
|
479
|
-
{
|
|
480
|
-
type: "click",
|
|
481
|
-
position: [1, 1]
|
|
482
|
-
}
|
|
483
|
-
]
|
|
484
|
-
});
|
|
435
|
+
expect(isVisible(outerClickContent)).to.be.true;
|
|
436
|
+
expect(isVisible(innerClickContent)).to.be.false;
|
|
437
|
+
const outerClose = oneEvent(outerButton, "sp-closed");
|
|
438
|
+
document.body.click();
|
|
485
439
|
await outerClose;
|
|
486
440
|
expect(
|
|
487
|
-
|
|
488
|
-
"outer
|
|
489
|
-
).to.be.
|
|
490
|
-
expect(
|
|
491
|
-
|
|
492
|
-
"inner click content is not available at point"
|
|
493
|
-
).to.be.not;
|
|
441
|
+
outerClickContent.parentElement instanceof OverlayTrigger,
|
|
442
|
+
"outer content returned"
|
|
443
|
+
).to.be.true;
|
|
444
|
+
expect(isVisible(outerClickContent)).to.be.false;
|
|
445
|
+
expect(isVisible(innerClickContent)).to.be.false;
|
|
494
446
|
});
|
|
495
|
-
it("opens a hover popover", async
|
|
496
|
-
|
|
497
|
-
const
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
});
|
|
447
|
+
it("opens a hover popover", async () => {
|
|
448
|
+
const root = outerTrigger.shadowRoot ? outerTrigger.shadowRoot : outerTrigger;
|
|
449
|
+
const triggerZone = root.querySelector(
|
|
450
|
+
"#trigger"
|
|
451
|
+
);
|
|
452
|
+
expect(triggerZone).to.exist;
|
|
453
|
+
if (!triggerZone)
|
|
454
|
+
return;
|
|
455
|
+
expect(outerButton).to.exist;
|
|
456
|
+
expect(hoverContent).to.exist;
|
|
457
|
+
expect(isVisible(hoverContent)).to.be.false;
|
|
458
|
+
const open = oneEvent(outerTrigger, "sp-opened");
|
|
459
|
+
const mouseEnter = new MouseEvent("mouseenter");
|
|
460
|
+
triggerZone.dispatchEvent(mouseEnter);
|
|
510
461
|
await open;
|
|
511
|
-
expect(
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
).to.be.true;
|
|
515
|
-
const close = oneEvent(
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
{
|
|
519
|
-
type: "move",
|
|
520
|
-
position: [
|
|
521
|
-
rect.left + rect.width * 2,
|
|
522
|
-
rect.top + rect.height / 2
|
|
523
|
-
]
|
|
524
|
-
}
|
|
525
|
-
]
|
|
526
|
-
});
|
|
462
|
+
expect(hoverContent.parentElement).to.not.be.instanceOf(
|
|
463
|
+
OverlayTrigger
|
|
464
|
+
);
|
|
465
|
+
expect(isVisible(hoverContent)).to.be.true;
|
|
466
|
+
const close = oneEvent(outerTrigger, "sp-closed");
|
|
467
|
+
const mouseLeave = new MouseEvent("mouseleave");
|
|
468
|
+
triggerZone.dispatchEvent(mouseLeave);
|
|
527
469
|
await close;
|
|
528
|
-
expect(
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
).to.be.false;
|
|
470
|
+
expect(hoverContent.parentElement).to.be.instanceOf(
|
|
471
|
+
OverlayTrigger
|
|
472
|
+
);
|
|
473
|
+
expect(isVisible(hoverContent)).to.be.false;
|
|
532
474
|
});
|
|
533
|
-
it("closes a hover popover", async
|
|
534
|
-
|
|
535
|
-
const
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
]
|
|
547
|
-
});
|
|
548
|
-
await nextFrame();
|
|
549
|
-
await nextFrame();
|
|
550
|
-
await nextFrame();
|
|
551
|
-
await nextFrame();
|
|
552
|
-
await sendMouse({
|
|
553
|
-
steps: [
|
|
554
|
-
{
|
|
555
|
-
type: "move",
|
|
556
|
-
position: [
|
|
557
|
-
rect.left + rect.width * 2,
|
|
558
|
-
rect.top + rect.height / 2
|
|
559
|
-
]
|
|
560
|
-
}
|
|
561
|
-
]
|
|
562
|
-
});
|
|
563
|
-
await close;
|
|
564
|
-
expect(
|
|
565
|
-
await isOnTopLayer(this.hoverContent),
|
|
566
|
-
"hover content is not available at point"
|
|
475
|
+
it("closes a hover popover", async () => {
|
|
476
|
+
const root = outerTrigger.shadowRoot ? outerTrigger.shadowRoot : outerTrigger;
|
|
477
|
+
const triggerZone = root.querySelector(
|
|
478
|
+
"#trigger"
|
|
479
|
+
);
|
|
480
|
+
expect(triggerZone).to.exist;
|
|
481
|
+
if (!triggerZone)
|
|
482
|
+
return;
|
|
483
|
+
expect(outerButton).to.exist;
|
|
484
|
+
expect(hoverContent).to.exist;
|
|
485
|
+
expect(
|
|
486
|
+
isVisible(hoverContent),
|
|
487
|
+
"hoverContent should not be visible"
|
|
567
488
|
).to.be.false;
|
|
489
|
+
const mouseEnter = new MouseEvent("mouseenter");
|
|
490
|
+
const mouseLeave = new MouseEvent("mouseleave");
|
|
491
|
+
triggerZone.dispatchEvent(mouseEnter);
|
|
492
|
+
await nextFrame();
|
|
493
|
+
triggerZone.dispatchEvent(mouseLeave);
|
|
494
|
+
await waitUntil(
|
|
495
|
+
() => isVisible(hoverContent) === false,
|
|
496
|
+
"hoverContent should still not be visible"
|
|
497
|
+
);
|
|
568
498
|
});
|
|
569
|
-
it("dispatches events on open/close", async
|
|
570
|
-
const opened = oneEvent(
|
|
571
|
-
|
|
499
|
+
it("dispatches events on open/close", async () => {
|
|
500
|
+
const opened = oneEvent(outerButton, "sp-opened");
|
|
501
|
+
outerButton.click();
|
|
572
502
|
const openedEvent = await opened;
|
|
573
|
-
expect(
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
)
|
|
577
|
-
|
|
578
|
-
expect(openedEvent.detail.interaction).to.equal("auto");
|
|
579
|
-
const closed = oneEvent(this.outerButton, "sp-closed");
|
|
580
|
-
sendMouse({
|
|
581
|
-
steps: [
|
|
582
|
-
{
|
|
583
|
-
type: "click",
|
|
584
|
-
position: [1, 1]
|
|
585
|
-
}
|
|
586
|
-
]
|
|
587
|
-
});
|
|
503
|
+
expect(isVisible(outerClickContent)).to.be.true;
|
|
504
|
+
expect(outerTrigger.open).to.equal("click");
|
|
505
|
+
expect(openedEvent.detail.interaction).to.equal("click");
|
|
506
|
+
const closed = oneEvent(outerButton, "sp-closed");
|
|
507
|
+
document.body.click();
|
|
588
508
|
const closedEvent = await closed;
|
|
589
|
-
expect(
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
).to.be.false;
|
|
509
|
+
expect(outerClickContent.parentElement).to.be.instanceOf(
|
|
510
|
+
OverlayTrigger
|
|
511
|
+
);
|
|
512
|
+
expect(closedEvent.detail.interaction).to.equal("click");
|
|
513
|
+
expect(isVisible(outerClickContent)).to.be.false;
|
|
594
514
|
});
|
|
595
515
|
});
|
|
596
516
|
describe("System interactions", () => {
|
|
@@ -606,7 +526,47 @@ export const runOverlayTriggerTests = (type) => {
|
|
|
606
526
|
});
|
|
607
527
|
await Promise.all(closes);
|
|
608
528
|
});
|
|
609
|
-
it
|
|
529
|
+
it("acquires a `color` and `size` from `sp-theme`", async () => {
|
|
530
|
+
const el = await fixture(html`
|
|
531
|
+
<sp-theme color="dark">
|
|
532
|
+
<sp-theme color="light">
|
|
533
|
+
<overlay-trigger id="trigger" placement="top">
|
|
534
|
+
<sp-button
|
|
535
|
+
id="outer-button"
|
|
536
|
+
variant="primary"
|
|
537
|
+
slot="trigger"
|
|
538
|
+
>
|
|
539
|
+
Show Popover
|
|
540
|
+
</sp-button>
|
|
541
|
+
<sp-popover
|
|
542
|
+
id="outer-popover"
|
|
543
|
+
dialog
|
|
544
|
+
slot="click-content"
|
|
545
|
+
direction="bottom"
|
|
546
|
+
tip
|
|
547
|
+
open
|
|
548
|
+
>
|
|
549
|
+
Popover content!
|
|
550
|
+
</sp-popover>
|
|
551
|
+
</overlay-trigger>
|
|
552
|
+
</sp-theme>
|
|
553
|
+
</sp-theme>
|
|
554
|
+
`);
|
|
555
|
+
await elementUpdated(el);
|
|
556
|
+
expect(document.querySelector("active-overlay")).to.be.null;
|
|
557
|
+
const button = el.querySelector("sp-button");
|
|
558
|
+
const opened = oneEvent(button, "sp-opened");
|
|
559
|
+
button.click();
|
|
560
|
+
await opened;
|
|
561
|
+
await elementUpdated(el);
|
|
562
|
+
const overlay = document.querySelector(
|
|
563
|
+
"active-overlay"
|
|
564
|
+
);
|
|
565
|
+
expect(overlay).to.exist;
|
|
566
|
+
expect(overlay.theme.color).to.not.equal("dark");
|
|
567
|
+
expect(overlay.theme.color).to.equal("light");
|
|
568
|
+
});
|
|
569
|
+
it('manages multiple layers of `type="modal"', async () => {
|
|
610
570
|
var _a, _b, _c;
|
|
611
571
|
const el = await fixture(html`
|
|
612
572
|
<overlay-trigger type="modal" placement="none">
|
|
@@ -720,14 +680,7 @@ export const runOverlayTriggerTests = (type) => {
|
|
|
720
680
|
).to.equal("open");
|
|
721
681
|
await nextFrame();
|
|
722
682
|
const closed = oneEvent(triggers[2], "sp-closed");
|
|
723
|
-
|
|
724
|
-
steps: [
|
|
725
|
-
{
|
|
726
|
-
type: "click",
|
|
727
|
-
position: [1, 1]
|
|
728
|
-
}
|
|
729
|
-
]
|
|
730
|
-
});
|
|
683
|
+
document.body.click();
|
|
731
684
|
await closed;
|
|
732
685
|
await elementUpdated(overlayTriggers[2]);
|
|
733
686
|
activeOverlays = [
|