@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
|
@@ -1,664 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
import {
|
|
3
|
-
elementUpdated,
|
|
4
|
-
expect,
|
|
5
|
-
fixture,
|
|
6
|
-
html,
|
|
7
|
-
nextFrame,
|
|
8
|
-
oneEvent
|
|
9
|
-
} from "@open-wc/testing";
|
|
10
|
-
import "@spectrum-web-components/overlay/sp-overlay.js";
|
|
11
|
-
import "@spectrum-web-components/tooltip/sp-tooltip.js";
|
|
12
|
-
import "@spectrum-web-components/theme/sp-theme.js";
|
|
13
|
-
import "@spectrum-web-components/theme/src/themes.js";
|
|
14
|
-
import "@spectrum-web-components/button/sp-button.js";
|
|
15
|
-
import { sendMouse } from "../../../test/plugins/browser.js";
|
|
16
|
-
const OVERLAY_TYPES = ["modal", "page", "hint", "auto", "manual"];
|
|
17
|
-
async function styledFixture(story) {
|
|
18
|
-
const test = await fixture(html`
|
|
19
|
-
<sp-theme theme="spectrum" scale="medium" color="light">
|
|
20
|
-
${story}
|
|
21
|
-
</sp-theme>
|
|
22
|
-
`);
|
|
23
|
-
return test.children[0];
|
|
24
|
-
}
|
|
25
|
-
describe("sp-overlay", () => {
|
|
26
|
-
function opensDeclaratively(overlayType) {
|
|
27
|
-
it(`as [type="'${overlayType}'"]`, async () => {
|
|
28
|
-
const el = await styledFixture(html`
|
|
29
|
-
<sp-overlay open type=${overlayType}>
|
|
30
|
-
<sp-tooltip>Content</sp-tooltip>
|
|
31
|
-
</sp-overlay>
|
|
32
|
-
`);
|
|
33
|
-
const content = el.children[0];
|
|
34
|
-
let opened = oneEvent(el, "sp-opened");
|
|
35
|
-
await opened;
|
|
36
|
-
expect(content.open).to.be.true;
|
|
37
|
-
const closed = oneEvent(el, "sp-closed");
|
|
38
|
-
el.open = false;
|
|
39
|
-
await closed;
|
|
40
|
-
expect(content.open).to.be.false;
|
|
41
|
-
opened = oneEvent(el, "sp-opened");
|
|
42
|
-
el.open = true;
|
|
43
|
-
await opened;
|
|
44
|
-
expect(content.open).to.be.true;
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
describe('[type="modal"]', () => {
|
|
48
|
-
opensDeclaratively("modal");
|
|
49
|
-
describe("interaction with other non-ancestor overlays", function() {
|
|
50
|
-
beforeEach(async function() {
|
|
51
|
-
this.fixture = await styledFixture(html`
|
|
52
|
-
<div>
|
|
53
|
-
${OVERLAY_TYPES.map(
|
|
54
|
-
(type) => html`
|
|
55
|
-
<sp-overlay type=${type}>
|
|
56
|
-
<sp-tooltip>${type} Content</sp-tooltip>
|
|
57
|
-
</sp-overlay>
|
|
58
|
-
`
|
|
59
|
-
)}
|
|
60
|
-
</div>
|
|
61
|
-
`);
|
|
62
|
-
this.modal = this.fixture.querySelector(
|
|
63
|
-
'[type="modal"]'
|
|
64
|
-
);
|
|
65
|
-
this.page = this.fixture.querySelector(
|
|
66
|
-
'[type="page"]'
|
|
67
|
-
);
|
|
68
|
-
this.hint = this.fixture.querySelector(
|
|
69
|
-
'[type="hint"]'
|
|
70
|
-
);
|
|
71
|
-
this.auto = this.fixture.querySelector(
|
|
72
|
-
'[type="auto"]'
|
|
73
|
-
);
|
|
74
|
-
this.manual = this.fixture.querySelector(
|
|
75
|
-
'[type="manual"]'
|
|
76
|
-
);
|
|
77
|
-
expect(this.modal.open).to.be.false;
|
|
78
|
-
expect(this.page.open).to.be.false;
|
|
79
|
-
expect(this.hint.open).to.be.false;
|
|
80
|
-
expect(this.auto.open).to.be.false;
|
|
81
|
-
expect(this.manual.open).to.be.false;
|
|
82
|
-
});
|
|
83
|
-
afterEach(async function() {
|
|
84
|
-
const closed = oneEvent(this.modal, "sp-closed");
|
|
85
|
-
this.modal.open = false;
|
|
86
|
-
await closed;
|
|
87
|
-
});
|
|
88
|
-
it('closes "page" overlays when opening', async function() {
|
|
89
|
-
let opened = oneEvent(this.page, "sp-opened");
|
|
90
|
-
this.page.open = true;
|
|
91
|
-
await opened;
|
|
92
|
-
expect(this.modal.open).to.be.false;
|
|
93
|
-
expect(this.page.open).to.be.true;
|
|
94
|
-
expect(this.hint.open).to.be.false;
|
|
95
|
-
expect(this.auto.open).to.be.false;
|
|
96
|
-
expect(this.manual.open).to.be.false;
|
|
97
|
-
opened = oneEvent(this.modal, "sp-opened");
|
|
98
|
-
const closed = oneEvent(this.page, "sp-closed");
|
|
99
|
-
this.modal.open = true;
|
|
100
|
-
await opened;
|
|
101
|
-
await closed;
|
|
102
|
-
expect(this.modal.open).to.be.true;
|
|
103
|
-
expect(this.page.open).to.be.false;
|
|
104
|
-
expect(this.hint.open).to.be.false;
|
|
105
|
-
expect(this.auto.open).to.be.false;
|
|
106
|
-
expect(this.manual.open).to.be.false;
|
|
107
|
-
});
|
|
108
|
-
it('closes "hint" overlays when opening', async function() {
|
|
109
|
-
let opened = oneEvent(this.hint, "sp-opened");
|
|
110
|
-
this.hint.open = true;
|
|
111
|
-
await opened;
|
|
112
|
-
expect(this.modal.open).to.be.false;
|
|
113
|
-
expect(this.page.open).to.be.false;
|
|
114
|
-
expect(this.hint.open).to.be.true;
|
|
115
|
-
expect(this.auto.open).to.be.false;
|
|
116
|
-
expect(this.manual.open).to.be.false;
|
|
117
|
-
opened = oneEvent(this.modal, "sp-opened");
|
|
118
|
-
const closed = oneEvent(this.hint, "sp-closed");
|
|
119
|
-
this.modal.open = true;
|
|
120
|
-
await opened;
|
|
121
|
-
await closed;
|
|
122
|
-
expect(this.modal.open).to.be.true;
|
|
123
|
-
expect(this.page.open).to.be.false;
|
|
124
|
-
expect(this.hint.open).to.be.false;
|
|
125
|
-
expect(this.auto.open).to.be.false;
|
|
126
|
-
expect(this.manual.open).to.be.false;
|
|
127
|
-
});
|
|
128
|
-
it('closes "auto" overlays when opening', async function() {
|
|
129
|
-
let opened = oneEvent(this.auto, "sp-opened");
|
|
130
|
-
this.auto.open = true;
|
|
131
|
-
await opened;
|
|
132
|
-
expect(this.modal.open).to.be.false;
|
|
133
|
-
expect(this.page.open).to.be.false;
|
|
134
|
-
expect(this.hint.open).to.be.false;
|
|
135
|
-
expect(this.auto.open).to.be.true;
|
|
136
|
-
expect(this.manual.open).to.be.false;
|
|
137
|
-
opened = oneEvent(this.modal, "sp-opened");
|
|
138
|
-
const closed = oneEvent(this.auto, "sp-closed");
|
|
139
|
-
this.modal.open = true;
|
|
140
|
-
await opened;
|
|
141
|
-
await closed;
|
|
142
|
-
expect(this.modal.open).to.be.true;
|
|
143
|
-
expect(this.page.open).to.be.false;
|
|
144
|
-
expect(this.hint.open).to.be.false;
|
|
145
|
-
expect(this.auto.open).to.be.false;
|
|
146
|
-
expect(this.manual.open).to.be.false;
|
|
147
|
-
});
|
|
148
|
-
it('does not close "manual" overlays when opening', async function() {
|
|
149
|
-
let opened = oneEvent(this.manual, "sp-opened");
|
|
150
|
-
this.manual.open = true;
|
|
151
|
-
await opened;
|
|
152
|
-
expect(this.modal.open).to.be.false;
|
|
153
|
-
expect(this.page.open).to.be.false;
|
|
154
|
-
expect(this.hint.open).to.be.false;
|
|
155
|
-
expect(this.auto.open).to.be.false;
|
|
156
|
-
expect(this.manual.open).to.be.true;
|
|
157
|
-
opened = oneEvent(this.modal, "sp-opened");
|
|
158
|
-
this.modal.open = true;
|
|
159
|
-
await opened;
|
|
160
|
-
expect(this.modal.open).to.be.true;
|
|
161
|
-
expect(this.page.open).to.be.false;
|
|
162
|
-
expect(this.hint.open).to.be.false;
|
|
163
|
-
expect(this.auto.open).to.be.false;
|
|
164
|
-
expect(this.manual.open).to.be.true;
|
|
165
|
-
});
|
|
166
|
-
});
|
|
167
|
-
});
|
|
168
|
-
describe('[type="page"]', () => {
|
|
169
|
-
opensDeclaratively("page");
|
|
170
|
-
describe("interaction with other non-ancestor overlays", function() {
|
|
171
|
-
beforeEach(async function() {
|
|
172
|
-
this.fixture = await styledFixture(html`
|
|
173
|
-
<div>
|
|
174
|
-
${OVERLAY_TYPES.map(
|
|
175
|
-
(type) => html`
|
|
176
|
-
<sp-overlay type=${type}>
|
|
177
|
-
<sp-tooltip>${type} Content</sp-tooltip>
|
|
178
|
-
</sp-overlay>
|
|
179
|
-
`
|
|
180
|
-
)}
|
|
181
|
-
</div>
|
|
182
|
-
`);
|
|
183
|
-
this.modal = this.fixture.querySelector(
|
|
184
|
-
'[type="modal"]'
|
|
185
|
-
);
|
|
186
|
-
this.page = this.fixture.querySelector(
|
|
187
|
-
'[type="page"]'
|
|
188
|
-
);
|
|
189
|
-
this.hint = this.fixture.querySelector(
|
|
190
|
-
'[type="hint"]'
|
|
191
|
-
);
|
|
192
|
-
this.auto = this.fixture.querySelector(
|
|
193
|
-
'[type="auto"]'
|
|
194
|
-
);
|
|
195
|
-
this.manual = this.fixture.querySelector(
|
|
196
|
-
'[type="manual"]'
|
|
197
|
-
);
|
|
198
|
-
expect(this.modal.open).to.be.false;
|
|
199
|
-
expect(this.page.open).to.be.false;
|
|
200
|
-
expect(this.hint.open).to.be.false;
|
|
201
|
-
expect(this.auto.open).to.be.false;
|
|
202
|
-
expect(this.manual.open).to.be.false;
|
|
203
|
-
});
|
|
204
|
-
afterEach(async function() {
|
|
205
|
-
const closed = oneEvent(this.page, "sp-closed");
|
|
206
|
-
this.page.open = false;
|
|
207
|
-
await closed;
|
|
208
|
-
});
|
|
209
|
-
it('closes "page" overlays when opening', async function() {
|
|
210
|
-
let opened = oneEvent(this.modal, "sp-opened");
|
|
211
|
-
this.modal.open = true;
|
|
212
|
-
await opened;
|
|
213
|
-
expect(this.modal.open).to.be.true;
|
|
214
|
-
expect(this.page.open).to.be.false;
|
|
215
|
-
expect(this.hint.open).to.be.false;
|
|
216
|
-
expect(this.auto.open).to.be.false;
|
|
217
|
-
expect(this.manual.open).to.be.false;
|
|
218
|
-
opened = oneEvent(this.page, "sp-opened");
|
|
219
|
-
const closed = oneEvent(this.modal, "sp-closed");
|
|
220
|
-
this.page.open = true;
|
|
221
|
-
await opened;
|
|
222
|
-
await closed;
|
|
223
|
-
expect(this.modal.open).to.be.false;
|
|
224
|
-
expect(this.page.open).to.be.true;
|
|
225
|
-
expect(this.hint.open).to.be.false;
|
|
226
|
-
expect(this.auto.open).to.be.false;
|
|
227
|
-
expect(this.manual.open).to.be.false;
|
|
228
|
-
});
|
|
229
|
-
it('closes "hint" overlays when opening', async function() {
|
|
230
|
-
let opened = oneEvent(this.hint, "sp-opened");
|
|
231
|
-
this.hint.open = true;
|
|
232
|
-
await opened;
|
|
233
|
-
expect(this.modal.open).to.be.false;
|
|
234
|
-
expect(this.page.open).to.be.false;
|
|
235
|
-
expect(this.hint.open).to.be.true;
|
|
236
|
-
expect(this.auto.open).to.be.false;
|
|
237
|
-
expect(this.manual.open).to.be.false;
|
|
238
|
-
opened = oneEvent(this.page, "sp-opened");
|
|
239
|
-
const closed = oneEvent(this.hint, "sp-closed");
|
|
240
|
-
this.page.open = true;
|
|
241
|
-
await opened;
|
|
242
|
-
await closed;
|
|
243
|
-
expect(this.modal.open).to.be.false;
|
|
244
|
-
expect(this.page.open).to.be.true;
|
|
245
|
-
expect(this.hint.open).to.be.false;
|
|
246
|
-
expect(this.auto.open).to.be.false;
|
|
247
|
-
expect(this.manual.open).to.be.false;
|
|
248
|
-
});
|
|
249
|
-
it('closes "auto" overlays when opening', async function() {
|
|
250
|
-
let opened = oneEvent(this.auto, "sp-opened");
|
|
251
|
-
this.auto.open = true;
|
|
252
|
-
await opened;
|
|
253
|
-
expect(this.modal.open).to.be.false;
|
|
254
|
-
expect(this.page.open).to.be.false;
|
|
255
|
-
expect(this.hint.open).to.be.false;
|
|
256
|
-
expect(this.auto.open).to.be.true;
|
|
257
|
-
expect(this.manual.open).to.be.false;
|
|
258
|
-
opened = oneEvent(this.page, "sp-opened");
|
|
259
|
-
const closed = oneEvent(this.auto, "sp-closed");
|
|
260
|
-
this.page.open = true;
|
|
261
|
-
await opened;
|
|
262
|
-
await closed;
|
|
263
|
-
expect(this.modal.open).to.be.false;
|
|
264
|
-
expect(this.page.open).to.be.true;
|
|
265
|
-
expect(this.hint.open).to.be.false;
|
|
266
|
-
expect(this.auto.open).to.be.false;
|
|
267
|
-
expect(this.manual.open).to.be.false;
|
|
268
|
-
});
|
|
269
|
-
it('does not close "manual" overlays when opening', async function() {
|
|
270
|
-
let opened = oneEvent(this.manual, "sp-opened");
|
|
271
|
-
this.manual.open = true;
|
|
272
|
-
await opened;
|
|
273
|
-
expect(this.modal.open).to.be.false;
|
|
274
|
-
expect(this.page.open).to.be.false;
|
|
275
|
-
expect(this.hint.open).to.be.false;
|
|
276
|
-
expect(this.auto.open).to.be.false;
|
|
277
|
-
expect(this.manual.open).to.be.true;
|
|
278
|
-
opened = oneEvent(this.page, "sp-opened");
|
|
279
|
-
this.page.open = true;
|
|
280
|
-
await opened;
|
|
281
|
-
expect(this.modal.open).to.be.false;
|
|
282
|
-
expect(this.page.open).to.be.true;
|
|
283
|
-
expect(this.hint.open).to.be.false;
|
|
284
|
-
expect(this.auto.open).to.be.false;
|
|
285
|
-
expect(this.manual.open).to.be.true;
|
|
286
|
-
});
|
|
287
|
-
});
|
|
288
|
-
});
|
|
289
|
-
describe('[type="hint"]', () => {
|
|
290
|
-
opensDeclaratively("hint");
|
|
291
|
-
it("closes other `[type=hint]` overlays when opening", async () => {
|
|
292
|
-
const test = await styledFixture(html`
|
|
293
|
-
<div>
|
|
294
|
-
${[1, 2].map(
|
|
295
|
-
(overlay) => html`
|
|
296
|
-
<sp-overlay type="hint" class="hint-${overlay}">
|
|
297
|
-
<sp-tooltip>Hint ${overlay} Content</sp-tooltip>
|
|
298
|
-
</sp-overlay>
|
|
299
|
-
`
|
|
300
|
-
)}
|
|
301
|
-
</div>
|
|
302
|
-
`);
|
|
303
|
-
const hint1 = test.querySelector(".hint-1");
|
|
304
|
-
const hint2 = test.querySelector(".hint-2");
|
|
305
|
-
expect(hint1.open).to.be.false;
|
|
306
|
-
expect(hint2.open).to.be.false;
|
|
307
|
-
let opened = oneEvent(hint1, "sp-opened");
|
|
308
|
-
hint1.open = true;
|
|
309
|
-
await opened;
|
|
310
|
-
expect(hint1.open).to.be.true;
|
|
311
|
-
expect(hint2.open).to.be.false;
|
|
312
|
-
opened = oneEvent(hint2, "sp-opened");
|
|
313
|
-
let closed = oneEvent(hint1, "sp-closed");
|
|
314
|
-
hint2.open = true;
|
|
315
|
-
await opened;
|
|
316
|
-
await closed;
|
|
317
|
-
expect(hint1.open).to.be.false;
|
|
318
|
-
expect(hint2.open).to.be.true;
|
|
319
|
-
opened = oneEvent(hint1, "sp-opened");
|
|
320
|
-
closed = oneEvent(hint2, "sp-closed");
|
|
321
|
-
hint1.open = true;
|
|
322
|
-
await opened;
|
|
323
|
-
await closed;
|
|
324
|
-
expect(hint1.open).to.be.true;
|
|
325
|
-
expect(hint2.open).to.be.false;
|
|
326
|
-
});
|
|
327
|
-
it("stays open when pointer enters overlay from trigger element", async () => {
|
|
328
|
-
const test = await styledFixture(
|
|
329
|
-
html`
|
|
330
|
-
<div>
|
|
331
|
-
<sp-button id="test-button">
|
|
332
|
-
This is a button.
|
|
333
|
-
</sp-button>
|
|
334
|
-
<sp-overlay
|
|
335
|
-
trigger="test-button@hover"
|
|
336
|
-
placement="bottom"
|
|
337
|
-
offset="-10"
|
|
338
|
-
>
|
|
339
|
-
<sp-tooltip>Help text.</sp-tooltip>
|
|
340
|
-
</sp-overlay>
|
|
341
|
-
</div>
|
|
342
|
-
`
|
|
343
|
-
);
|
|
344
|
-
const button = test.querySelector("sp-button");
|
|
345
|
-
const overlay = test.querySelector(
|
|
346
|
-
"sp-overlay"
|
|
347
|
-
);
|
|
348
|
-
const el = test.querySelector("sp-tooltip");
|
|
349
|
-
const buttonRect = button.getBoundingClientRect();
|
|
350
|
-
const buttonPoint = [
|
|
351
|
-
buttonRect.x + buttonRect.width / 2,
|
|
352
|
-
buttonRect.y + buttonRect.height - 2
|
|
353
|
-
];
|
|
354
|
-
await elementUpdated(overlay);
|
|
355
|
-
await expect(button).to.be.accessible();
|
|
356
|
-
let opened = oneEvent(button, "sp-opened");
|
|
357
|
-
await sendMouse({
|
|
358
|
-
steps: [
|
|
359
|
-
{
|
|
360
|
-
type: "move",
|
|
361
|
-
position: buttonPoint
|
|
362
|
-
}
|
|
363
|
-
]
|
|
364
|
-
});
|
|
365
|
-
await nextFrame();
|
|
366
|
-
await nextFrame();
|
|
367
|
-
await nextFrame();
|
|
368
|
-
await nextFrame();
|
|
369
|
-
expect(overlay.open).to.be.true;
|
|
370
|
-
await sendMouse({
|
|
371
|
-
steps: [
|
|
372
|
-
{
|
|
373
|
-
type: "move",
|
|
374
|
-
position: [
|
|
375
|
-
buttonRect.x + buttonRect.width / 2,
|
|
376
|
-
buttonRect.y + buttonRect.height - 1
|
|
377
|
-
]
|
|
378
|
-
},
|
|
379
|
-
{
|
|
380
|
-
type: "move",
|
|
381
|
-
position: [
|
|
382
|
-
buttonRect.x + buttonRect.width / 2,
|
|
383
|
-
buttonRect.y + buttonRect.height
|
|
384
|
-
]
|
|
385
|
-
},
|
|
386
|
-
{
|
|
387
|
-
type: "move",
|
|
388
|
-
position: [
|
|
389
|
-
buttonRect.x + buttonRect.width / 2,
|
|
390
|
-
buttonRect.y + buttonRect.height + 1
|
|
391
|
-
]
|
|
392
|
-
}
|
|
393
|
-
]
|
|
394
|
-
});
|
|
395
|
-
await nextFrame();
|
|
396
|
-
await nextFrame();
|
|
397
|
-
expect(overlay.open).to.be.true;
|
|
398
|
-
await opened;
|
|
399
|
-
expect(el.open).to.be.true;
|
|
400
|
-
await expect(button).to.be.accessible();
|
|
401
|
-
let closed = oneEvent(button, "sp-closed");
|
|
402
|
-
await sendMouse({
|
|
403
|
-
steps: [
|
|
404
|
-
{
|
|
405
|
-
type: "move",
|
|
406
|
-
position: buttonPoint
|
|
407
|
-
}
|
|
408
|
-
]
|
|
409
|
-
});
|
|
410
|
-
await sendMouse({
|
|
411
|
-
steps: [
|
|
412
|
-
{
|
|
413
|
-
type: "move",
|
|
414
|
-
position: [
|
|
415
|
-
buttonRect.x + buttonRect.width * 2,
|
|
416
|
-
buttonRect.y + buttonRect.height * 2
|
|
417
|
-
]
|
|
418
|
-
}
|
|
419
|
-
]
|
|
420
|
-
});
|
|
421
|
-
await closed;
|
|
422
|
-
expect(el.open).to.be.false;
|
|
423
|
-
opened = oneEvent(button, "sp-opened");
|
|
424
|
-
await sendMouse({
|
|
425
|
-
steps: [
|
|
426
|
-
{
|
|
427
|
-
type: "move",
|
|
428
|
-
position: buttonPoint
|
|
429
|
-
}
|
|
430
|
-
]
|
|
431
|
-
});
|
|
432
|
-
await opened;
|
|
433
|
-
await elementUpdated(el);
|
|
434
|
-
closed = oneEvent(button, "sp-closed");
|
|
435
|
-
await sendMouse({
|
|
436
|
-
steps: [
|
|
437
|
-
{
|
|
438
|
-
type: "move",
|
|
439
|
-
position: [
|
|
440
|
-
buttonRect.x + buttonRect.width * 2,
|
|
441
|
-
buttonRect.y + buttonRect.height * 2
|
|
442
|
-
]
|
|
443
|
-
}
|
|
444
|
-
]
|
|
445
|
-
});
|
|
446
|
-
await closed;
|
|
447
|
-
});
|
|
448
|
-
it("stays open when pointer enters overlay from trigger element", async () => {
|
|
449
|
-
const button = await styledFixture(
|
|
450
|
-
html`
|
|
451
|
-
<sp-button>
|
|
452
|
-
This is a button.
|
|
453
|
-
<sp-tooltip self-managed placement="bottom">
|
|
454
|
-
Help text.
|
|
455
|
-
</sp-tooltip>
|
|
456
|
-
</sp-button>
|
|
457
|
-
`
|
|
458
|
-
);
|
|
459
|
-
const el = button.querySelector("sp-tooltip");
|
|
460
|
-
const buttonRect = button.getBoundingClientRect();
|
|
461
|
-
const buttonPoint = [
|
|
462
|
-
buttonRect.x + buttonRect.width / 2,
|
|
463
|
-
buttonRect.y + buttonRect.height / 2
|
|
464
|
-
];
|
|
465
|
-
await elementUpdated(el);
|
|
466
|
-
await expect(button).to.be.accessible();
|
|
467
|
-
let opened = oneEvent(button, "sp-opened");
|
|
468
|
-
await sendMouse({
|
|
469
|
-
steps: [
|
|
470
|
-
{
|
|
471
|
-
type: "move",
|
|
472
|
-
position: buttonPoint
|
|
473
|
-
}
|
|
474
|
-
]
|
|
475
|
-
});
|
|
476
|
-
await nextFrame();
|
|
477
|
-
await nextFrame();
|
|
478
|
-
await nextFrame();
|
|
479
|
-
await nextFrame();
|
|
480
|
-
const tooltipRect = el.shadowRoot.querySelector("#tooltip").getBoundingClientRect();
|
|
481
|
-
const tooltipPoint = [
|
|
482
|
-
tooltipRect.x + tooltipRect.width / 2,
|
|
483
|
-
tooltipRect.y + tooltipRect.height / 2
|
|
484
|
-
];
|
|
485
|
-
await sendMouse({
|
|
486
|
-
steps: [
|
|
487
|
-
{
|
|
488
|
-
type: "move",
|
|
489
|
-
position: tooltipPoint
|
|
490
|
-
}
|
|
491
|
-
]
|
|
492
|
-
});
|
|
493
|
-
await opened;
|
|
494
|
-
expect(el.open).to.be.true;
|
|
495
|
-
await expect(button).to.be.accessible();
|
|
496
|
-
let closed = oneEvent(button, "sp-closed");
|
|
497
|
-
await sendMouse({
|
|
498
|
-
steps: [
|
|
499
|
-
{
|
|
500
|
-
type: "move",
|
|
501
|
-
position: buttonPoint
|
|
502
|
-
}
|
|
503
|
-
]
|
|
504
|
-
});
|
|
505
|
-
await sendMouse({
|
|
506
|
-
steps: [
|
|
507
|
-
{
|
|
508
|
-
type: "move",
|
|
509
|
-
position: [
|
|
510
|
-
buttonRect.x + buttonRect.width * 2,
|
|
511
|
-
buttonRect.y + buttonRect.height * 2
|
|
512
|
-
]
|
|
513
|
-
}
|
|
514
|
-
]
|
|
515
|
-
});
|
|
516
|
-
await closed;
|
|
517
|
-
expect(el.open).to.be.false;
|
|
518
|
-
opened = oneEvent(button, "sp-opened");
|
|
519
|
-
await sendMouse({
|
|
520
|
-
steps: [
|
|
521
|
-
{
|
|
522
|
-
type: "move",
|
|
523
|
-
position: buttonPoint
|
|
524
|
-
}
|
|
525
|
-
]
|
|
526
|
-
});
|
|
527
|
-
await opened;
|
|
528
|
-
expect(el.open).to.be.true;
|
|
529
|
-
closed = oneEvent(button, "sp-closed");
|
|
530
|
-
sendMouse({
|
|
531
|
-
steps: [
|
|
532
|
-
{
|
|
533
|
-
type: "move",
|
|
534
|
-
position: [
|
|
535
|
-
buttonRect.x + buttonRect.width * 2,
|
|
536
|
-
buttonRect.y + buttonRect.height * 2
|
|
537
|
-
]
|
|
538
|
-
}
|
|
539
|
-
]
|
|
540
|
-
});
|
|
541
|
-
await closed;
|
|
542
|
-
expect(el.open).to.be.false;
|
|
543
|
-
});
|
|
544
|
-
});
|
|
545
|
-
describe('[type="auto"]', () => {
|
|
546
|
-
opensDeclaratively("auto");
|
|
547
|
-
});
|
|
548
|
-
describe('[type="manual"]', () => {
|
|
549
|
-
opensDeclaratively("manual");
|
|
550
|
-
describe("interaction with other non-ancestor overlays", function() {
|
|
551
|
-
beforeEach(async function() {
|
|
552
|
-
this.fixture = await styledFixture(html`
|
|
553
|
-
<div>
|
|
554
|
-
${OVERLAY_TYPES.map(
|
|
555
|
-
(type) => html`
|
|
556
|
-
<sp-overlay type=${type}>
|
|
557
|
-
<sp-tooltip>${type} Content</sp-tooltip>
|
|
558
|
-
</sp-overlay>
|
|
559
|
-
`
|
|
560
|
-
)}
|
|
561
|
-
</div>
|
|
562
|
-
`);
|
|
563
|
-
this.modal = this.fixture.querySelector(
|
|
564
|
-
'[type="modal"]'
|
|
565
|
-
);
|
|
566
|
-
this.page = this.fixture.querySelector(
|
|
567
|
-
'[type="page"]'
|
|
568
|
-
);
|
|
569
|
-
this.hint = this.fixture.querySelector(
|
|
570
|
-
'[type="hint"]'
|
|
571
|
-
);
|
|
572
|
-
this.auto = this.fixture.querySelector(
|
|
573
|
-
'[type="auto"]'
|
|
574
|
-
);
|
|
575
|
-
this.manual = this.fixture.querySelector(
|
|
576
|
-
'[type="manual"]'
|
|
577
|
-
);
|
|
578
|
-
expect(this.modal.open).to.be.false;
|
|
579
|
-
expect(this.page.open).to.be.false;
|
|
580
|
-
expect(this.hint.open).to.be.false;
|
|
581
|
-
expect(this.auto.open).to.be.false;
|
|
582
|
-
expect(this.manual.open).to.be.false;
|
|
583
|
-
});
|
|
584
|
-
afterEach(async function() {
|
|
585
|
-
const closed = oneEvent(this.manual, "sp-closed");
|
|
586
|
-
this.manual.open = false;
|
|
587
|
-
await closed;
|
|
588
|
-
});
|
|
589
|
-
it('does not close "modal" overlays when opening', async function() {
|
|
590
|
-
let opened = oneEvent(this.modal, "sp-opened");
|
|
591
|
-
this.modal.open = true;
|
|
592
|
-
await opened;
|
|
593
|
-
expect(this.modal.open).to.be.true;
|
|
594
|
-
expect(this.page.open).to.be.false;
|
|
595
|
-
expect(this.hint.open).to.be.false;
|
|
596
|
-
expect(this.auto.open).to.be.false;
|
|
597
|
-
expect(this.manual.open).to.be.false;
|
|
598
|
-
opened = oneEvent(this.manual, "sp-opened");
|
|
599
|
-
this.manual.open = true;
|
|
600
|
-
await opened;
|
|
601
|
-
expect(this.modal.open).to.be.true;
|
|
602
|
-
expect(this.page.open).to.be.false;
|
|
603
|
-
expect(this.hint.open).to.be.false;
|
|
604
|
-
expect(this.auto.open).to.be.false;
|
|
605
|
-
expect(this.manual.open).to.be.true;
|
|
606
|
-
});
|
|
607
|
-
it('does not close "modal" overlays when opening', async function() {
|
|
608
|
-
let opened = oneEvent(this.page, "sp-opened");
|
|
609
|
-
this.page.open = true;
|
|
610
|
-
await opened;
|
|
611
|
-
expect(this.modal.open).to.be.false;
|
|
612
|
-
expect(this.page.open).to.be.true;
|
|
613
|
-
expect(this.hint.open).to.be.false;
|
|
614
|
-
expect(this.auto.open).to.be.false;
|
|
615
|
-
expect(this.manual.open).to.be.false;
|
|
616
|
-
opened = oneEvent(this.manual, "sp-opened");
|
|
617
|
-
this.manual.open = true;
|
|
618
|
-
await opened;
|
|
619
|
-
expect(this.modal.open).to.be.false;
|
|
620
|
-
expect(this.page.open).to.be.true;
|
|
621
|
-
expect(this.hint.open).to.be.false;
|
|
622
|
-
expect(this.auto.open).to.be.false;
|
|
623
|
-
expect(this.manual.open).to.be.true;
|
|
624
|
-
});
|
|
625
|
-
it('does not close "hint" overlays when opening', async function() {
|
|
626
|
-
let opened = oneEvent(this.hint, "sp-opened");
|
|
627
|
-
this.hint.open = true;
|
|
628
|
-
await opened;
|
|
629
|
-
expect(this.modal.open).to.be.false;
|
|
630
|
-
expect(this.page.open).to.be.false;
|
|
631
|
-
expect(this.hint.open).to.be.true;
|
|
632
|
-
expect(this.auto.open).to.be.false;
|
|
633
|
-
expect(this.manual.open).to.be.false;
|
|
634
|
-
opened = oneEvent(this.manual, "sp-opened");
|
|
635
|
-
this.manual.open = true;
|
|
636
|
-
await opened;
|
|
637
|
-
expect(this.modal.open).to.be.false;
|
|
638
|
-
expect(this.page.open).to.be.false;
|
|
639
|
-
expect(this.hint.open).to.be.true;
|
|
640
|
-
expect(this.auto.open).to.be.false;
|
|
641
|
-
expect(this.manual.open).to.be.true;
|
|
642
|
-
});
|
|
643
|
-
it('does not close "auto" overlays when opening', async function() {
|
|
644
|
-
let opened = oneEvent(this.auto, "sp-opened");
|
|
645
|
-
this.auto.open = true;
|
|
646
|
-
await opened;
|
|
647
|
-
expect(this.modal.open).to.be.false;
|
|
648
|
-
expect(this.page.open).to.be.false;
|
|
649
|
-
expect(this.hint.open).to.be.false;
|
|
650
|
-
expect(this.auto.open).to.be.true;
|
|
651
|
-
expect(this.manual.open).to.be.false;
|
|
652
|
-
opened = oneEvent(this.manual, "sp-opened");
|
|
653
|
-
this.manual.open = true;
|
|
654
|
-
await opened;
|
|
655
|
-
expect(this.modal.open).to.be.false;
|
|
656
|
-
expect(this.page.open).to.be.false;
|
|
657
|
-
expect(this.hint.open).to.be.false;
|
|
658
|
-
expect(this.auto.open).to.be.true;
|
|
659
|
-
expect(this.manual.open).to.be.true;
|
|
660
|
-
});
|
|
661
|
-
});
|
|
662
|
-
});
|
|
663
|
-
});
|
|
664
|
-
//# sourceMappingURL=overlay-element.test.js.map
|