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