@spectrum-web-components/overlay 0.31.1-overlay.29 → 0.31.1-react.21
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 +1215 -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 +26 -24
- package/stories/overlay-story-components.js.map +2 -2
- package/stories/overlay.stories.js +730 -733
- 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 +428 -461
- 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 +9 -3
- 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 +237 -240
- 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 -122
- package/src/OverlayBase.dev.js +0 -701
- 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 -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 -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 -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 -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>
|
|
@@ -48,12 +62,16 @@ export const runOverlayTriggerTests = (type) => {
|
|
|
48
62
|
</sp-button>
|
|
49
63
|
<sp-popover
|
|
50
64
|
id="outer-popover"
|
|
51
|
-
dialog
|
|
52
65
|
slot="click-content"
|
|
53
66
|
direction="bottom"
|
|
54
67
|
tip
|
|
68
|
+
open
|
|
69
|
+
tabindex="0"
|
|
55
70
|
>
|
|
56
|
-
<
|
|
71
|
+
<sp-dialog
|
|
72
|
+
no-divider
|
|
73
|
+
class="options-popover-content"
|
|
74
|
+
>
|
|
57
75
|
<overlay-trigger
|
|
58
76
|
id="inner-trigger"
|
|
59
77
|
placement="bottom"
|
|
@@ -66,19 +84,21 @@ export const runOverlayTriggerTests = (type) => {
|
|
|
66
84
|
</sp-button>
|
|
67
85
|
<sp-popover
|
|
68
86
|
id="inner-popover"
|
|
69
|
-
dialog
|
|
70
87
|
slot="click-content"
|
|
71
88
|
direction="bottom"
|
|
72
89
|
tip
|
|
90
|
+
open
|
|
91
|
+
tabindex="0"
|
|
73
92
|
>
|
|
74
|
-
<
|
|
93
|
+
<sp-dialog
|
|
94
|
+
no-divider
|
|
75
95
|
class="options-popover-content"
|
|
76
96
|
>
|
|
77
97
|
Another Popover
|
|
78
|
-
</
|
|
98
|
+
</sp-dialog>
|
|
79
99
|
</sp-popover>
|
|
80
100
|
</overlay-trigger>
|
|
81
|
-
</
|
|
101
|
+
</sp-dialog>
|
|
82
102
|
</sp-popover>
|
|
83
103
|
<div
|
|
84
104
|
id="hover-content"
|
|
@@ -92,505 +112,407 @@ export const runOverlayTriggerTests = (type) => {
|
|
|
92
112
|
</div>
|
|
93
113
|
`
|
|
94
114
|
);
|
|
95
|
-
|
|
115
|
+
innerTrigger = testDiv.querySelector(
|
|
96
116
|
"#inner-trigger"
|
|
97
117
|
);
|
|
98
|
-
|
|
118
|
+
outerTrigger = testDiv.querySelector(
|
|
99
119
|
"#trigger"
|
|
100
120
|
);
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
this.outerButton = this.testDiv.querySelector(
|
|
105
|
-
"#outer-button"
|
|
106
|
-
);
|
|
107
|
-
this.innerClickContent = this.testDiv.querySelector(
|
|
121
|
+
innerButton = testDiv.querySelector("#inner-button");
|
|
122
|
+
outerButton = testDiv.querySelector("#outer-button");
|
|
123
|
+
innerClickContent = testDiv.querySelector(
|
|
108
124
|
"#inner-popover"
|
|
109
125
|
);
|
|
110
|
-
|
|
126
|
+
outerClickContent = testDiv.querySelector(
|
|
111
127
|
"#outer-popover"
|
|
112
128
|
);
|
|
113
|
-
|
|
129
|
+
hoverContent = testDiv.querySelector(
|
|
114
130
|
"#hover-content"
|
|
115
131
|
);
|
|
116
132
|
});
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
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();
|
|
125
161
|
await open;
|
|
126
|
-
expect(
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
).to.be.true;
|
|
162
|
+
expect(outerClickContent.parentElement).to.not.be.an.instanceOf(
|
|
163
|
+
OverlayTrigger
|
|
164
|
+
);
|
|
165
|
+
expect(isVisible(outerClickContent)).to.be.true;
|
|
130
166
|
});
|
|
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();
|
|
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();
|
|
140
173
|
await opened;
|
|
141
|
-
expect(
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
).to.be.true;
|
|
145
|
-
const closed = oneEvent(
|
|
146
|
-
|
|
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;
|
|
147
180
|
await closed;
|
|
148
|
-
expect(
|
|
149
|
-
|
|
150
|
-
"popover not available at point"
|
|
151
|
-
).to.be.false;
|
|
181
|
+
expect(isVisible(outerClickContent)).to.be.false;
|
|
182
|
+
expect(outerTrigger.disabled).to.be.true;
|
|
152
183
|
});
|
|
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();
|
|
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();
|
|
161
189
|
await open;
|
|
162
|
-
expect(
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
).to.be.true;
|
|
190
|
+
expect(outerClickContent.parentElement).to.not.be.an.instanceOf(
|
|
191
|
+
OverlayTrigger
|
|
192
|
+
);
|
|
193
|
+
expect(isVisible(outerClickContent)).to.be.true;
|
|
166
194
|
window.dispatchEvent(new Event("resize"));
|
|
167
195
|
window.dispatchEvent(new Event("resize"));
|
|
168
|
-
expect(
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
).to.be.true;
|
|
196
|
+
expect(outerClickContent.parentElement).to.not.be.an.instanceOf(
|
|
197
|
+
OverlayTrigger
|
|
198
|
+
);
|
|
199
|
+
expect(isVisible(outerClickContent)).to.be.true;
|
|
172
200
|
});
|
|
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();
|
|
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();
|
|
184
209
|
await opened;
|
|
185
210
|
expect(
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
).to.be.true;
|
|
211
|
+
outerClickContent.parentElement
|
|
212
|
+
).to.not.be.an.instanceOf(OverlayTrigger);
|
|
213
|
+
expect(isVisible(outerClickContent)).to.be.true;
|
|
189
214
|
});
|
|
190
215
|
});
|
|
191
|
-
it("does not open a hover popover when a click popover is open", async
|
|
216
|
+
it("does not open a hover popover when a click popover is open", async () => {
|
|
192
217
|
expect(
|
|
193
|
-
|
|
194
|
-
"popover not
|
|
218
|
+
isVisible(outerClickContent),
|
|
219
|
+
"outer popover not visible"
|
|
195
220
|
).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();
|
|
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();
|
|
203
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;
|
|
204
230
|
expect(
|
|
205
|
-
|
|
206
|
-
"popover
|
|
207
|
-
).to.be.true;
|
|
208
|
-
expect(
|
|
209
|
-
await isOnTopLayer(this.hoverContent),
|
|
210
|
-
"hover not available at point"
|
|
231
|
+
isVisible(hoverContent),
|
|
232
|
+
"hover popover still not visible"
|
|
211
233
|
).to.be.false;
|
|
212
|
-
|
|
234
|
+
outerButton.dispatchEvent(
|
|
213
235
|
new Event("mouseenter", {
|
|
214
236
|
bubbles: true,
|
|
215
237
|
composed: true
|
|
216
238
|
})
|
|
217
239
|
);
|
|
218
240
|
await nextFrame();
|
|
241
|
+
expect(hoverContent.parentElement).to.be.instanceOf(
|
|
242
|
+
OverlayTrigger
|
|
243
|
+
);
|
|
219
244
|
expect(
|
|
220
|
-
|
|
221
|
-
"popover
|
|
245
|
+
isVisible(outerClickContent),
|
|
246
|
+
"outer popover visible again"
|
|
222
247
|
).to.be.true;
|
|
223
248
|
expect(
|
|
224
|
-
|
|
225
|
-
"hover not
|
|
249
|
+
isVisible(hoverContent),
|
|
250
|
+
"hover popover not visible again"
|
|
226
251
|
).to.be.false;
|
|
227
252
|
});
|
|
228
|
-
it("does not open a popover when [disabled]", async
|
|
229
|
-
|
|
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(
|
|
230
257
|
"#trigger"
|
|
231
258
|
);
|
|
232
|
-
expect(
|
|
233
|
-
let open = oneEvent(
|
|
234
|
-
|
|
259
|
+
expect(outerTrigger.disabled).to.be.false;
|
|
260
|
+
let open = oneEvent(outerTrigger, "sp-opened");
|
|
261
|
+
outerButton.click();
|
|
235
262
|
await open;
|
|
236
|
-
expect(
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
)
|
|
240
|
-
|
|
241
|
-
sendMouse({
|
|
242
|
-
steps: [
|
|
243
|
-
{
|
|
244
|
-
type: "click",
|
|
245
|
-
position: [1, 1]
|
|
246
|
-
}
|
|
247
|
-
]
|
|
248
|
-
});
|
|
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();
|
|
249
268
|
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;
|
|
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
|
+
);
|
|
264
281
|
triggerZone.dispatchEvent(new Event("mouseenter"));
|
|
265
|
-
await aTimeout(
|
|
266
|
-
expect(
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
expect(
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
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();
|
|
276
292
|
await open;
|
|
277
|
-
expect(
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
)
|
|
281
|
-
|
|
282
|
-
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();
|
|
283
298
|
await closed;
|
|
284
|
-
expect(
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
).to.be.false;
|
|
299
|
+
expect((_f = outerClickContent.parentElement) == null ? void 0 : _f.localName).to.equal(
|
|
300
|
+
"overlay-trigger"
|
|
301
|
+
);
|
|
288
302
|
});
|
|
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();
|
|
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();
|
|
301
309
|
await open;
|
|
302
|
-
expect(
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
).to.be.true;
|
|
306
|
-
expect(
|
|
307
|
-
open = oneEvent(
|
|
308
|
-
|
|
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();
|
|
309
317
|
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;
|
|
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;
|
|
318
323
|
});
|
|
319
|
-
it('focus previous "modal" when closing nested "modal"', async
|
|
320
|
-
|
|
321
|
-
|
|
324
|
+
it('focus previous "modal" when closing nested "modal"', async () => {
|
|
325
|
+
outerTrigger.type = "modal";
|
|
326
|
+
innerTrigger.type = "modal";
|
|
322
327
|
expect(
|
|
323
|
-
|
|
324
|
-
"outer
|
|
328
|
+
isVisible(outerClickContent),
|
|
329
|
+
"outer popover starts closed"
|
|
325
330
|
).to.be.false;
|
|
326
331
|
expect(
|
|
327
|
-
|
|
328
|
-
"inner
|
|
332
|
+
isVisible(innerClickContent),
|
|
333
|
+
"inner popover starts closed"
|
|
329
334
|
).to.be.false;
|
|
330
|
-
|
|
331
|
-
|
|
335
|
+
expect(outerButton).to.exist;
|
|
336
|
+
const outerOpen = oneEvent(outerButton, "sp-opened");
|
|
337
|
+
outerButton.click();
|
|
332
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;
|
|
333
343
|
expect(
|
|
334
|
-
|
|
335
|
-
"
|
|
336
|
-
).to.be.true;
|
|
337
|
-
expect(
|
|
338
|
-
await isOnTopLayer(this.innerClickContent),
|
|
339
|
-
"inner click content available at point"
|
|
344
|
+
isVisible(innerClickContent),
|
|
345
|
+
"inner popover stays closed"
|
|
340
346
|
).to.be.false;
|
|
341
|
-
const innerOpen = oneEvent(
|
|
342
|
-
|
|
347
|
+
const innerOpen = oneEvent(innerButton, "sp-opened");
|
|
348
|
+
innerButton.click();
|
|
343
349
|
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
|
-
});
|
|
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();
|
|
356
357
|
await innerClose;
|
|
358
|
+
expect(innerClickContent.parentElement).to.be.instanceOf(
|
|
359
|
+
OverlayTrigger
|
|
360
|
+
);
|
|
357
361
|
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,
|
|
362
|
+
document.activeElement === innerButton,
|
|
367
363
|
"outer popover recieved focus"
|
|
368
364
|
).to.be.true;
|
|
369
365
|
});
|
|
370
|
-
it("escape closes an open popover", async
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
const outerOpen = oneEvent(
|
|
374
|
-
|
|
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();
|
|
375
371
|
await outerOpen;
|
|
376
372
|
expect(
|
|
377
|
-
|
|
378
|
-
"outer
|
|
379
|
-
).to.be.
|
|
380
|
-
const innerOpen = oneEvent(
|
|
381
|
-
|
|
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();
|
|
382
378
|
await innerOpen;
|
|
383
379
|
expect(
|
|
384
|
-
|
|
385
|
-
"
|
|
386
|
-
).to.be.
|
|
387
|
-
expect(
|
|
388
|
-
|
|
389
|
-
"inner click content available at point"
|
|
390
|
-
).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;
|
|
391
385
|
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
|
-
});
|
|
386
|
+
expect(isVisible(outerClickContent)).to.be.true;
|
|
387
|
+
expect(isVisible(innerClickContent)).to.be.true;
|
|
388
|
+
const innerClose = oneEvent(innerButton, "sp-closed");
|
|
389
|
+
pressEscape();
|
|
404
390
|
await innerClose;
|
|
405
391
|
expect(
|
|
406
|
-
|
|
407
|
-
"
|
|
392
|
+
innerClickContent.parentElement instanceof OverlayTrigger,
|
|
393
|
+
"inner content returned"
|
|
408
394
|
).to.be.true;
|
|
409
|
-
expect(
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
)
|
|
413
|
-
const outerClose = oneEvent(this.outerButton, "sp-closed");
|
|
414
|
-
await sendKeys({
|
|
415
|
-
press: "Escape"
|
|
416
|
-
});
|
|
395
|
+
expect(isVisible(outerClickContent)).to.be.true;
|
|
396
|
+
expect(isVisible(innerClickContent)).to.be.false;
|
|
397
|
+
const outerClose = oneEvent(outerButton, "sp-closed");
|
|
398
|
+
pressEscape();
|
|
417
399
|
await outerClose;
|
|
418
400
|
expect(
|
|
419
|
-
|
|
420
|
-
"outer
|
|
421
|
-
).to.be.
|
|
422
|
-
expect(
|
|
423
|
-
|
|
424
|
-
"inner click content not available at point"
|
|
425
|
-
).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;
|
|
426
406
|
});
|
|
427
|
-
it("click closes an open popover", async
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
const outerOpen = oneEvent(
|
|
431
|
-
|
|
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();
|
|
432
412
|
await outerOpen;
|
|
433
413
|
expect(
|
|
434
|
-
|
|
435
|
-
"outer
|
|
436
|
-
).to.be.
|
|
437
|
-
const innerOpen = oneEvent(
|
|
438
|
-
|
|
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();
|
|
439
419
|
await innerOpen;
|
|
440
420
|
expect(
|
|
441
|
-
|
|
442
|
-
"
|
|
443
|
-
).to.be.
|
|
444
|
-
expect(
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
).to.be.true;
|
|
448
|
-
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();
|
|
449
427
|
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
|
-
});
|
|
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();
|
|
467
432
|
await innerClose;
|
|
468
433
|
expect(
|
|
469
|
-
|
|
470
|
-
"
|
|
434
|
+
innerClickContent.parentElement instanceof OverlayTrigger,
|
|
435
|
+
"inner content returned"
|
|
471
436
|
).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
|
-
});
|
|
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();
|
|
485
441
|
await outerClose;
|
|
486
442
|
expect(
|
|
487
|
-
|
|
488
|
-
"outer
|
|
489
|
-
).to.be.
|
|
490
|
-
expect(
|
|
491
|
-
|
|
492
|
-
"inner click content is not available at point"
|
|
493
|
-
).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;
|
|
494
448
|
});
|
|
495
|
-
it("opens a hover popover", async
|
|
496
|
-
|
|
497
|
-
const
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
});
|
|
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);
|
|
510
463
|
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
|
-
});
|
|
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);
|
|
527
471
|
await close;
|
|
528
|
-
expect(
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
).to.be.false;
|
|
472
|
+
expect(hoverContent.parentElement).to.be.instanceOf(
|
|
473
|
+
OverlayTrigger
|
|
474
|
+
);
|
|
475
|
+
expect(isVisible(hoverContent)).to.be.false;
|
|
532
476
|
});
|
|
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"
|
|
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"
|
|
567
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
|
+
);
|
|
568
500
|
});
|
|
569
|
-
it("dispatches events on open/close", async
|
|
570
|
-
const opened = oneEvent(
|
|
571
|
-
|
|
501
|
+
it("dispatches events on open/close", async () => {
|
|
502
|
+
const opened = oneEvent(outerButton, "sp-opened");
|
|
503
|
+
outerButton.click();
|
|
572
504
|
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
|
-
});
|
|
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();
|
|
588
510
|
const closedEvent = await closed;
|
|
589
|
-
expect(
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
).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;
|
|
594
516
|
});
|
|
595
517
|
});
|
|
596
518
|
describe("System interactions", () => {
|
|
@@ -606,46 +528,98 @@ export const runOverlayTriggerTests = (type) => {
|
|
|
606
528
|
});
|
|
607
529
|
await Promise.all(closes);
|
|
608
530
|
});
|
|
609
|
-
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 () => {
|
|
610
572
|
var _a, _b, _c;
|
|
611
573
|
const el = await fixture(html`
|
|
612
574
|
<overlay-trigger type="modal" placement="none">
|
|
613
575
|
<sp-button slot="trigger" variant="accent">
|
|
614
576
|
Toggle Dialog
|
|
615
577
|
</sp-button>
|
|
616
|
-
<sp-popover
|
|
617
|
-
<
|
|
618
|
-
<
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
<
|
|
623
|
-
<sp-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
578
|
+
<sp-popover slot="click-content">
|
|
579
|
+
<sp-dialog no-divider>
|
|
580
|
+
<overlay-trigger>
|
|
581
|
+
<sp-button slot="trigger" variant="primary">
|
|
582
|
+
Toggle Dialog
|
|
583
|
+
</sp-button>
|
|
584
|
+
<sp-popover slot="click-content">
|
|
585
|
+
<sp-dialog no-divider>
|
|
586
|
+
<overlay-trigger type="modal">
|
|
587
|
+
<sp-button
|
|
588
|
+
slot="trigger"
|
|
589
|
+
variant="secondary"
|
|
590
|
+
>
|
|
591
|
+
Toggle Dialog
|
|
592
|
+
</sp-button>
|
|
593
|
+
<sp-popover
|
|
594
|
+
slot="click-content"
|
|
595
|
+
>
|
|
596
|
+
<sp-dialog no-divider>
|
|
597
|
+
<p>
|
|
598
|
+
When you get this
|
|
599
|
+
deep, this
|
|
600
|
+
ActiveOverlay should
|
|
601
|
+
be the only one in
|
|
602
|
+
[slot="open"].
|
|
603
|
+
</p>
|
|
604
|
+
<p>
|
|
605
|
+
All of the rest of
|
|
606
|
+
the ActiveOverlay
|
|
607
|
+
elements should have
|
|
608
|
+
had their [slot]
|
|
609
|
+
attribute removed.
|
|
610
|
+
</p>
|
|
611
|
+
<p>
|
|
612
|
+
Closing this
|
|
613
|
+
ActiveOverlay should
|
|
614
|
+
replace them...
|
|
615
|
+
</p>
|
|
616
|
+
</sp-dialog>
|
|
617
|
+
</sp-popover>
|
|
618
|
+
</overlay-trigger>
|
|
619
|
+
</sp-dialog>
|
|
620
|
+
</sp-popover>
|
|
621
|
+
</overlay-trigger>
|
|
622
|
+
</sp-dialog>
|
|
649
623
|
</sp-popover>
|
|
650
624
|
</overlay-trigger>
|
|
651
625
|
`);
|
|
@@ -720,14 +694,7 @@ export const runOverlayTriggerTests = (type) => {
|
|
|
720
694
|
).to.equal("open");
|
|
721
695
|
await nextFrame();
|
|
722
696
|
const closed = oneEvent(triggers[2], "sp-closed");
|
|
723
|
-
|
|
724
|
-
steps: [
|
|
725
|
-
{
|
|
726
|
-
type: "click",
|
|
727
|
-
position: [1, 1]
|
|
728
|
-
}
|
|
729
|
-
]
|
|
730
|
-
});
|
|
697
|
+
document.body.click();
|
|
731
698
|
await closed;
|
|
732
699
|
await elementUpdated(overlayTriggers[2]);
|
|
733
700
|
activeOverlays = [
|