@spectrum-web-components/overlay 0.16.4 → 0.16.6-devmode.7
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.dev.js +3 -0
- package/active-overlay.dev.js.map +7 -0
- package/active-overlay.js +3 -14
- package/active-overlay.js.map +7 -1
- package/overlay-trigger.dev.js +3 -0
- package/overlay-trigger.dev.js.map +7 -0
- package/overlay-trigger.js +3 -14
- package/overlay-trigger.js.map +7 -1
- package/package.json +68 -14
- package/src/ActiveOverlay.dev.js +445 -0
- package/src/ActiveOverlay.dev.js.map +7 -0
- package/src/ActiveOverlay.js +404 -424
- package/src/ActiveOverlay.js.map +7 -1
- package/src/OverlayTrigger.dev.js +293 -0
- package/src/OverlayTrigger.dev.js.map +7 -0
- package/src/OverlayTrigger.js +245 -264
- package/src/OverlayTrigger.js.map +7 -1
- package/src/VirtualTrigger.dev.js +30 -0
- package/src/VirtualTrigger.dev.js.map +7 -0
- package/src/VirtualTrigger.js +28 -38
- package/src/VirtualTrigger.js.map +7 -1
- package/src/active-overlay.css.dev.js +12 -0
- package/src/active-overlay.css.dev.js.map +7 -0
- package/src/active-overlay.css.js +3 -14
- package/src/active-overlay.css.js.map +7 -1
- package/src/index.dev.js +7 -0
- package/src/index.dev.js.map +7 -0
- package/src/index.js +7 -18
- package/src/index.js.map +7 -1
- package/src/loader.dev.js +5 -0
- package/src/loader.dev.js.map +7 -0
- package/src/loader.js +3 -14
- package/src/loader.js.map +7 -1
- package/src/overlay-events.dev.js +7 -0
- package/src/overlay-events.dev.js.map +7 -0
- package/src/overlay-events.js +5 -16
- package/src/overlay-events.js.map +7 -1
- package/src/overlay-stack.dev.js +436 -0
- package/src/overlay-stack.dev.js.map +7 -0
- package/src/overlay-stack.js +374 -420
- package/src/overlay-stack.js.map +7 -1
- package/src/overlay-timer.dev.js +71 -0
- package/src/overlay-timer.dev.js.map +7 -0
- package/src/overlay-timer.js +64 -82
- package/src/overlay-timer.js.map +7 -1
- package/src/overlay-trigger.css.dev.js +6 -0
- package/src/overlay-trigger.css.dev.js.map +7 -0
- package/src/overlay-trigger.css.js +3 -14
- package/src/overlay-trigger.css.js.map +7 -1
- package/src/overlay-types.dev.js +1 -0
- package/src/overlay-types.dev.js.map +7 -0
- package/src/overlay-types.js +1 -13
- package/src/overlay-types.js.map +7 -1
- package/src/overlay-utils.dev.js +28 -0
- package/src/overlay-utils.dev.js.map +7 -0
- package/src/overlay-utils.js +22 -33
- package/src/overlay-utils.js.map +7 -1
- package/src/overlay.dev.js +85 -0
- package/src/overlay.dev.js.map +7 -0
- package/src/overlay.js +83 -119
- package/src/overlay.js.map +7 -1
- package/stories/overlay-story-components.js +188 -184
- package/stories/overlay-story-components.js.map +7 -1
- package/stories/overlay.stories.js +238 -228
- package/stories/overlay.stories.js.map +7 -1
- package/sync/overlay-trigger.dev.js +7 -0
- package/sync/overlay-trigger.dev.js.map +7 -0
- package/sync/overlay-trigger.js +5 -16
- package/sync/overlay-trigger.js.map +7 -1
- package/test/benchmark/basic-test.js +7 -18
- package/test/benchmark/basic-test.js.map +7 -1
- package/test/overlay-lifecycle.test.js +107 -115
- package/test/overlay-lifecycle.test.js.map +7 -1
- package/test/overlay-timer.test.js +110 -122
- package/test/overlay-timer.test.js.map +7 -1
- package/test/overlay-trigger-click.test.js +43 -48
- package/test/overlay-trigger-click.test.js.map +7 -1
- package/test/overlay-trigger-extended.test.js +167 -182
- package/test/overlay-trigger-extended.test.js.map +7 -1
- package/test/overlay-trigger-hover-click.test.js +59 -73
- package/test/overlay-trigger-hover-click.test.js.map +7 -1
- package/test/overlay-trigger-hover.test.js +74 -77
- package/test/overlay-trigger-hover.test.js.map +7 -1
- package/test/overlay-trigger-longpress.test.js +166 -178
- package/test/overlay-trigger-longpress.test.js.map +7 -1
- package/test/overlay-trigger-sync.test.js +400 -422
- package/test/overlay-trigger-sync.test.js.map +7 -1
- package/test/overlay-trigger.test.js +400 -422
- package/test/overlay-trigger.test.js.map +7 -1
- package/test/overlay.test-vrt.js +4 -15
- package/test/overlay.test-vrt.js.map +7 -1
- package/test/overlay.test.js +458 -479
- package/test/overlay.test.js.map +7 -1
|
@@ -1,39 +1,33 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import
|
|
14
|
-
import
|
|
15
|
-
import
|
|
16
|
-
import
|
|
17
|
-
import
|
|
18
|
-
import
|
|
19
|
-
import
|
|
20
|
-
import
|
|
21
|
-
import
|
|
22
|
-
import
|
|
23
|
-
import
|
|
24
|
-
import
|
|
25
|
-
import
|
|
26
|
-
import
|
|
27
|
-
import
|
|
28
|
-
import
|
|
29
|
-
import
|
|
30
|
-
|
|
31
|
-
import '@spectrum-web-components/theme/sp-theme.js';
|
|
32
|
-
import '@spectrum-web-components/theme/src/themes.js';
|
|
33
|
-
import '../../../projects/story-decorator/src/types.js';
|
|
34
|
-
import './overlay-story-components.js';
|
|
35
|
-
import { render } from 'lit-html';
|
|
36
|
-
const storyStyles = html `
|
|
1
|
+
import { html } from "@spectrum-web-components/base";
|
|
2
|
+
import { ifDefined } from "@spectrum-web-components/base/src/directives.js";
|
|
3
|
+
import {
|
|
4
|
+
openOverlay,
|
|
5
|
+
Overlay,
|
|
6
|
+
VirtualTrigger
|
|
7
|
+
} from "@spectrum-web-components/overlay";
|
|
8
|
+
import "@spectrum-web-components/action-button/sp-action-button.js";
|
|
9
|
+
import "@spectrum-web-components/action-group/sp-action-group.js";
|
|
10
|
+
import "@spectrum-web-components/button/sp-button.js";
|
|
11
|
+
import "@spectrum-web-components/dialog/sp-dialog-wrapper.js";
|
|
12
|
+
import "@spectrum-web-components/field-label/sp-field-label.js";
|
|
13
|
+
import "@spectrum-web-components/icons-workflow/icons/sp-icon-magnify.js";
|
|
14
|
+
import "@spectrum-web-components/icons-workflow/icons/sp-icon-open-in.js";
|
|
15
|
+
import "@spectrum-web-components/overlay/overlay-trigger.js";
|
|
16
|
+
import "@spectrum-web-components/picker/sp-picker.js";
|
|
17
|
+
import "@spectrum-web-components/menu/sp-menu.js";
|
|
18
|
+
import "@spectrum-web-components/menu/sp-menu-item.js";
|
|
19
|
+
import "@spectrum-web-components/menu/sp-menu-divider.js";
|
|
20
|
+
import "@spectrum-web-components/popover/sp-popover.js";
|
|
21
|
+
import "@spectrum-web-components/slider/sp-slider.js";
|
|
22
|
+
import "@spectrum-web-components/radio/sp-radio.js";
|
|
23
|
+
import "@spectrum-web-components/radio/sp-radio-group.js";
|
|
24
|
+
import "@spectrum-web-components/tooltip/sp-tooltip.js";
|
|
25
|
+
import "@spectrum-web-components/theme/sp-theme.js";
|
|
26
|
+
import "@spectrum-web-components/theme/src/themes.js";
|
|
27
|
+
import "../../../projects/story-decorator/src/types.js";
|
|
28
|
+
import "./overlay-story-components.js";
|
|
29
|
+
import { render } from "lit-html";
|
|
30
|
+
const storyStyles = html`
|
|
37
31
|
<style>
|
|
38
32
|
html,
|
|
39
33
|
body,
|
|
@@ -70,53 +64,58 @@ const storyStyles = html `
|
|
|
70
64
|
</style>
|
|
71
65
|
`;
|
|
72
66
|
export default {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
},
|
|
99
|
-
type: {
|
|
100
|
-
control: {
|
|
101
|
-
type: 'inline-radio',
|
|
102
|
-
options: ['modal', 'replace', 'inline'],
|
|
103
|
-
},
|
|
104
|
-
},
|
|
105
|
-
colorStop: {
|
|
106
|
-
control: {
|
|
107
|
-
type: 'inline-radio',
|
|
108
|
-
options: ['light', 'dark'],
|
|
109
|
-
},
|
|
110
|
-
},
|
|
67
|
+
title: "Overlay",
|
|
68
|
+
argTypes: {
|
|
69
|
+
offset: { control: "number" },
|
|
70
|
+
placement: {
|
|
71
|
+
control: {
|
|
72
|
+
type: "inline-radio",
|
|
73
|
+
options: [
|
|
74
|
+
"top",
|
|
75
|
+
"top-start",
|
|
76
|
+
"top-end",
|
|
77
|
+
"bottom",
|
|
78
|
+
"bottom-start",
|
|
79
|
+
"bottom-end",
|
|
80
|
+
"left",
|
|
81
|
+
"left-start",
|
|
82
|
+
"left-end",
|
|
83
|
+
"right",
|
|
84
|
+
"right-start",
|
|
85
|
+
"right-end",
|
|
86
|
+
"auto",
|
|
87
|
+
"auto-start",
|
|
88
|
+
"auto-end",
|
|
89
|
+
"none"
|
|
90
|
+
]
|
|
91
|
+
}
|
|
111
92
|
},
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
93
|
+
type: {
|
|
94
|
+
control: {
|
|
95
|
+
type: "inline-radio",
|
|
96
|
+
options: ["modal", "replace", "inline"]
|
|
97
|
+
}
|
|
116
98
|
},
|
|
99
|
+
colorStop: {
|
|
100
|
+
control: {
|
|
101
|
+
type: "inline-radio",
|
|
102
|
+
options: ["light", "dark"]
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
args: {
|
|
107
|
+
placement: "bottom",
|
|
108
|
+
offset: 0,
|
|
109
|
+
colorStop: "light"
|
|
110
|
+
}
|
|
117
111
|
};
|
|
118
|
-
const template = ({
|
|
119
|
-
|
|
112
|
+
const template = ({
|
|
113
|
+
placement,
|
|
114
|
+
offset,
|
|
115
|
+
open,
|
|
116
|
+
type
|
|
117
|
+
}) => {
|
|
118
|
+
return html`
|
|
120
119
|
${storyStyles}
|
|
121
120
|
<overlay-trigger
|
|
122
121
|
id="trigger"
|
|
@@ -165,7 +164,7 @@ const template = ({ placement, offset, open, type, }) => {
|
|
|
165
164
|
</sp-popover>
|
|
166
165
|
<sp-tooltip
|
|
167
166
|
slot="hover-content"
|
|
168
|
-
?delayed=${open !==
|
|
167
|
+
?delayed=${open !== "hover"}
|
|
169
168
|
tip="bottom"
|
|
170
169
|
>
|
|
171
170
|
Click to open a popover.
|
|
@@ -174,9 +173,15 @@ const template = ({ placement, offset, open, type, }) => {
|
|
|
174
173
|
`;
|
|
175
174
|
};
|
|
176
175
|
export const Default = (args) => template(args);
|
|
177
|
-
export const openHoverContent = (args) => template(
|
|
178
|
-
|
|
179
|
-
|
|
176
|
+
export const openHoverContent = (args) => template({
|
|
177
|
+
...args,
|
|
178
|
+
open: "hover"
|
|
179
|
+
});
|
|
180
|
+
export const openClickContent = (args) => template({
|
|
181
|
+
...args,
|
|
182
|
+
open: "click"
|
|
183
|
+
});
|
|
184
|
+
export const customizedClickContent = (args) => html`
|
|
180
185
|
<style>
|
|
181
186
|
active-overlay::part(theme) {
|
|
182
187
|
--styled-div-background-color: var(--spectrum-semantic-cta-background-color-default);
|
|
@@ -184,9 +189,12 @@ export const customizedClickContent = (args) => html `
|
|
|
184
189
|
}
|
|
185
190
|
</style>
|
|
186
191
|
</style>
|
|
187
|
-
${template(
|
|
192
|
+
${template({
|
|
193
|
+
...args,
|
|
194
|
+
open: "click"
|
|
195
|
+
})}
|
|
188
196
|
`;
|
|
189
|
-
const extraText = html
|
|
197
|
+
const extraText = html`
|
|
190
198
|
<p>This is some text.</p>
|
|
191
199
|
<p>This is some text.</p>
|
|
192
200
|
<p>
|
|
@@ -196,15 +204,15 @@ const extraText = html `
|
|
|
196
204
|
</p>
|
|
197
205
|
`;
|
|
198
206
|
export const inline = () => {
|
|
199
|
-
|
|
200
|
-
|
|
207
|
+
const closeEvent = new Event("close", { bubbles: true, composed: true });
|
|
208
|
+
return html`
|
|
201
209
|
<overlay-trigger type="inline">
|
|
202
210
|
<sp-button slot="trigger">Open</sp-button>
|
|
203
211
|
<sp-overlay slot="click-content">
|
|
204
212
|
<sp-button
|
|
205
213
|
@click=${(event) => {
|
|
206
|
-
|
|
207
|
-
|
|
214
|
+
event.target.dispatchEvent(closeEvent);
|
|
215
|
+
}}
|
|
208
216
|
>
|
|
209
217
|
Close
|
|
210
218
|
</sp-button>
|
|
@@ -214,15 +222,15 @@ export const inline = () => {
|
|
|
214
222
|
`;
|
|
215
223
|
};
|
|
216
224
|
export const replace = () => {
|
|
217
|
-
|
|
218
|
-
|
|
225
|
+
const closeEvent = new Event("close", { bubbles: true, composed: true });
|
|
226
|
+
return html`
|
|
219
227
|
<overlay-trigger type="replace">
|
|
220
228
|
<sp-button slot="trigger">Open</sp-button>
|
|
221
229
|
<sp-overlay slot="click-content">
|
|
222
230
|
<sp-button
|
|
223
231
|
@click=${(event) => {
|
|
224
|
-
|
|
225
|
-
|
|
232
|
+
event.target.dispatchEvent(closeEvent);
|
|
233
|
+
}}
|
|
226
234
|
>
|
|
227
235
|
Close
|
|
228
236
|
</sp-button>
|
|
@@ -232,8 +240,8 @@ export const replace = () => {
|
|
|
232
240
|
`;
|
|
233
241
|
};
|
|
234
242
|
export const modalLoose = () => {
|
|
235
|
-
|
|
236
|
-
|
|
243
|
+
const closeEvent = new Event("close", { bubbles: true, composed: true });
|
|
244
|
+
return html`
|
|
237
245
|
<overlay-trigger type="modal" placement="none">
|
|
238
246
|
<sp-button slot="trigger">Open</sp-button>
|
|
239
247
|
<sp-dialog
|
|
@@ -262,8 +270,8 @@ export const modalLoose = () => {
|
|
|
262
270
|
`;
|
|
263
271
|
};
|
|
264
272
|
export const modalManaged = () => {
|
|
265
|
-
|
|
266
|
-
|
|
273
|
+
const closeEvent = new Event("close", { bubbles: true, composed: true });
|
|
274
|
+
return html`
|
|
267
275
|
<overlay-trigger type="modal" placement="none">
|
|
268
276
|
<sp-button slot="trigger">Open</sp-button>
|
|
269
277
|
<sp-dialog-wrapper
|
|
@@ -275,14 +283,14 @@ export const modalManaged = () => {
|
|
|
275
283
|
cancel-label="Cancel"
|
|
276
284
|
footer="Content for footer"
|
|
277
285
|
@confirm=${(event) => {
|
|
278
|
-
|
|
279
|
-
|
|
286
|
+
event.target.dispatchEvent(closeEvent);
|
|
287
|
+
}}
|
|
280
288
|
@secondary=${(event) => {
|
|
281
|
-
|
|
282
|
-
|
|
289
|
+
event.target.dispatchEvent(closeEvent);
|
|
290
|
+
}}
|
|
283
291
|
@cancel=${(event) => {
|
|
284
|
-
|
|
285
|
-
|
|
292
|
+
event.target.dispatchEvent(closeEvent);
|
|
293
|
+
}}
|
|
286
294
|
>
|
|
287
295
|
<p>
|
|
288
296
|
The
|
|
@@ -298,9 +306,9 @@ export const modalManaged = () => {
|
|
|
298
306
|
`;
|
|
299
307
|
};
|
|
300
308
|
export const deepNesting = () => {
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
309
|
+
const color = window.__swc_hack_knobs__.defaultColor;
|
|
310
|
+
const outter = color === "light" ? "dark" : "light";
|
|
311
|
+
return html`
|
|
304
312
|
${storyStyles}
|
|
305
313
|
<sp-theme
|
|
306
314
|
color=${outter}
|
|
@@ -327,7 +335,7 @@ export const deepNesting = () => {
|
|
|
327
335
|
`;
|
|
328
336
|
};
|
|
329
337
|
export const edges = () => {
|
|
330
|
-
|
|
338
|
+
return html`
|
|
331
339
|
<style>
|
|
332
340
|
.demo {
|
|
333
341
|
position: absolute;
|
|
@@ -392,7 +400,7 @@ export const edges = () => {
|
|
|
392
400
|
`;
|
|
393
401
|
};
|
|
394
402
|
export const updated = () => {
|
|
395
|
-
|
|
403
|
+
return html`
|
|
396
404
|
${storyStyles}
|
|
397
405
|
<style>
|
|
398
406
|
sp-tooltip {
|
|
@@ -455,7 +463,7 @@ export const updated = () => {
|
|
|
455
463
|
`;
|
|
456
464
|
};
|
|
457
465
|
export const sideHoverDraggable = () => {
|
|
458
|
-
|
|
466
|
+
return html`
|
|
459
467
|
${storyStyles}
|
|
460
468
|
<style>
|
|
461
469
|
sp-tooltip {
|
|
@@ -485,7 +493,7 @@ export const sideHoverDraggable = () => {
|
|
|
485
493
|
`;
|
|
486
494
|
};
|
|
487
495
|
export const longpress = () => {
|
|
488
|
-
|
|
496
|
+
return html`
|
|
489
497
|
<overlay-trigger placement="right-start">
|
|
490
498
|
<sp-action-button slot="trigger" hold-affordance>
|
|
491
499
|
<sp-icon-magnify slot="icon"></sp-icon-magnify>
|
|
@@ -493,7 +501,7 @@ export const longpress = () => {
|
|
|
493
501
|
<sp-tooltip slot="hover-content">Search real hard...</sp-tooltip>
|
|
494
502
|
<sp-popover slot="longpress-content" tip>
|
|
495
503
|
<sp-action-group
|
|
496
|
-
@change=${(event) => event.target.dispatchEvent(new Event(
|
|
504
|
+
@change=${(event) => event.target.dispatchEvent(new Event("close", { bubbles: true }))}
|
|
497
505
|
selects="single"
|
|
498
506
|
vertical
|
|
499
507
|
style="margin: calc(var(--spectrum-actiongroup-button-gap-y,var(--spectrum-global-dimension-size-100)) / 2);"
|
|
@@ -513,47 +521,47 @@ export const longpress = () => {
|
|
|
513
521
|
`;
|
|
514
522
|
};
|
|
515
523
|
function nextFrame() {
|
|
516
|
-
|
|
524
|
+
return new Promise((res) => requestAnimationFrame(() => res()));
|
|
517
525
|
}
|
|
518
526
|
class ComplexModalReady extends HTMLElement {
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
527
|
+
constructor() {
|
|
528
|
+
super();
|
|
529
|
+
this.handleTriggerOpened = async () => {
|
|
530
|
+
await nextFrame();
|
|
531
|
+
const picker = document.querySelector("#test-picker");
|
|
532
|
+
picker.addEventListener("sp-opened", this.handlePickerOpen);
|
|
533
|
+
picker.open = true;
|
|
534
|
+
};
|
|
535
|
+
this.handlePickerOpen = async () => {
|
|
536
|
+
const picker = document.querySelector("#test-picker");
|
|
537
|
+
const actions = [nextFrame, picker.updateComplete];
|
|
538
|
+
await Promise.all(actions);
|
|
539
|
+
this.ready(true);
|
|
540
|
+
};
|
|
541
|
+
this.readyPromise = Promise.resolve(false);
|
|
542
|
+
this.readyPromise = new Promise((res) => {
|
|
543
|
+
this.ready = res;
|
|
544
|
+
this.setup();
|
|
545
|
+
});
|
|
546
|
+
}
|
|
547
|
+
async setup() {
|
|
548
|
+
await nextFrame();
|
|
549
|
+
const overlay = document.querySelector(`overlay-trigger`);
|
|
550
|
+
overlay.addEventListener("sp-opened", this.handleTriggerOpened);
|
|
551
|
+
}
|
|
552
|
+
get updateComplete() {
|
|
553
|
+
return this.readyPromise;
|
|
554
|
+
}
|
|
547
555
|
}
|
|
548
|
-
customElements.define(
|
|
556
|
+
customElements.define("complex-modal-ready", ComplexModalReady);
|
|
549
557
|
const complexModalDecorator = (story) => {
|
|
550
|
-
|
|
558
|
+
return html`
|
|
551
559
|
${story()}
|
|
552
560
|
<complex-modal-ready></complex-modal-ready>
|
|
553
561
|
`;
|
|
554
562
|
};
|
|
555
563
|
export const complexModal = () => {
|
|
556
|
-
|
|
564
|
+
return html`
|
|
557
565
|
<style>
|
|
558
566
|
body {
|
|
559
567
|
--swc-margin-test: 10px;
|
|
@@ -611,7 +619,7 @@ export const complexModal = () => {
|
|
|
611
619
|
};
|
|
612
620
|
complexModal.decorators = [complexModalDecorator];
|
|
613
621
|
export const superComplexModal = () => {
|
|
614
|
-
|
|
622
|
+
return html`
|
|
615
623
|
<overlay-trigger type="modal" placement="none">
|
|
616
624
|
<sp-button slot="trigger" variant="accent">Toggle Dialog</sp-button>
|
|
617
625
|
<sp-popover dialog slot="click-content">
|
|
@@ -647,10 +655,10 @@ export const superComplexModal = () => {
|
|
|
647
655
|
`;
|
|
648
656
|
};
|
|
649
657
|
class StartEndContextmenu extends HTMLElement {
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
658
|
+
constructor() {
|
|
659
|
+
super();
|
|
660
|
+
this.attachShadow({ mode: "open" });
|
|
661
|
+
this.shadowRoot.innerHTML = `
|
|
654
662
|
<style>
|
|
655
663
|
:host {
|
|
656
664
|
display: flex;
|
|
@@ -664,17 +672,17 @@ class StartEndContextmenu extends HTMLElement {
|
|
|
664
672
|
<div id="start"></div>
|
|
665
673
|
<div id="end"></div>
|
|
666
674
|
`;
|
|
667
|
-
|
|
675
|
+
}
|
|
668
676
|
}
|
|
669
|
-
customElements.define(
|
|
677
|
+
customElements.define("start-end-contextmenu", StartEndContextmenu);
|
|
670
678
|
export const virtualElement = (args) => {
|
|
671
|
-
|
|
679
|
+
const contextMenuTemplate = (kind = "") => html`
|
|
672
680
|
<sp-popover
|
|
673
681
|
style="width:300px;"
|
|
674
682
|
@click=${(event) => {
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
683
|
+
var _a;
|
|
684
|
+
return (_a = event.target) == null ? void 0 : _a.dispatchEvent(new Event("close", { bubbles: true }));
|
|
685
|
+
}}
|
|
678
686
|
>
|
|
679
687
|
<sp-menu>
|
|
680
688
|
<sp-menu-group>
|
|
@@ -690,22 +698,22 @@ export const virtualElement = (args) => {
|
|
|
690
698
|
</sp-menu>
|
|
691
699
|
</sp-popover>
|
|
692
700
|
`;
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
701
|
+
const pointerenter = async (event) => {
|
|
702
|
+
event.preventDefault();
|
|
703
|
+
const source = event.composedPath()[0];
|
|
704
|
+
const { id } = source;
|
|
705
|
+
const trigger = event.target;
|
|
706
|
+
const virtualTrigger = new VirtualTrigger(event.clientX, event.clientY);
|
|
707
|
+
const fragment = document.createDocumentFragment();
|
|
708
|
+
render(contextMenuTemplate(id), fragment);
|
|
709
|
+
const popover = fragment.querySelector("sp-popover");
|
|
710
|
+
openOverlay(trigger, "modal", popover, {
|
|
711
|
+
placement: args.placement,
|
|
712
|
+
receivesFocus: "auto",
|
|
713
|
+
virtualTrigger
|
|
714
|
+
});
|
|
715
|
+
};
|
|
716
|
+
return html`
|
|
709
717
|
<style>
|
|
710
718
|
.app-root {
|
|
711
719
|
position: absolute;
|
|
@@ -719,39 +727,41 @@ export const virtualElement = (args) => {
|
|
|
719
727
|
`;
|
|
720
728
|
};
|
|
721
729
|
virtualElement.args = {
|
|
722
|
-
|
|
730
|
+
placement: "right-start"
|
|
723
731
|
};
|
|
724
732
|
export const detachedElement = () => {
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
733
|
+
let closeOverlay;
|
|
734
|
+
const openDetachedOverlayContent = async ({
|
|
735
|
+
target
|
|
736
|
+
}) => {
|
|
737
|
+
if (closeOverlay) {
|
|
738
|
+
closeOverlay();
|
|
739
|
+
closeOverlay = void 0;
|
|
740
|
+
return;
|
|
741
|
+
}
|
|
742
|
+
const div = document.createElement("div");
|
|
743
|
+
div.textContent = "This div is overlaid";
|
|
744
|
+
div.setAttribute("style", `
|
|
735
745
|
background-color: var(--spectrum-global-color-gray-50);
|
|
736
746
|
color: var(--spectrum-global-color-gray-800);
|
|
737
747
|
border: 1px solid;
|
|
738
748
|
padding: 2em;
|
|
739
749
|
`);
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
});
|
|
750
|
+
closeOverlay = await Overlay.open(target, "click", div, {
|
|
751
|
+
offset: 0,
|
|
752
|
+
placement: "bottom"
|
|
753
|
+
});
|
|
754
|
+
};
|
|
755
|
+
requestAnimationFrame(() => {
|
|
756
|
+
openDetachedOverlayContent({
|
|
757
|
+
target: document.querySelector("#detached-content-trigger")
|
|
749
758
|
});
|
|
750
|
-
|
|
759
|
+
});
|
|
760
|
+
return html`
|
|
751
761
|
<sp-action-button
|
|
752
762
|
id="detached-content-trigger"
|
|
753
763
|
@click=${openDetachedOverlayContent}
|
|
754
|
-
@sp-closed=${() =>
|
|
764
|
+
@sp-closed=${() => closeOverlay = void 0}
|
|
755
765
|
>
|
|
756
766
|
<sp-icon-open-in
|
|
757
767
|
slot="icon"
|
|
@@ -761,47 +771,47 @@ export const detachedElement = () => {
|
|
|
761
771
|
`;
|
|
762
772
|
};
|
|
763
773
|
class DefinedOverlayReady extends HTMLElement {
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
774
|
+
constructor() {
|
|
775
|
+
super();
|
|
776
|
+
this.handleTriggerOpened = async () => {
|
|
777
|
+
await nextFrame();
|
|
778
|
+
const popover = document.querySelector("popover-content");
|
|
779
|
+
if (!popover) {
|
|
780
|
+
return;
|
|
781
|
+
}
|
|
782
|
+
popover.addEventListener("sp-opened", this.handlePopoverOpen);
|
|
783
|
+
popover.button.click();
|
|
784
|
+
};
|
|
785
|
+
this.handlePopoverOpen = async () => {
|
|
786
|
+
await nextFrame();
|
|
787
|
+
this.ready(true);
|
|
788
|
+
};
|
|
789
|
+
this.readyPromise = Promise.resolve(false);
|
|
790
|
+
this.readyPromise = new Promise((res) => {
|
|
791
|
+
this.ready = res;
|
|
792
|
+
this.setup();
|
|
793
|
+
});
|
|
794
|
+
}
|
|
795
|
+
async setup() {
|
|
796
|
+
await nextFrame();
|
|
797
|
+
const overlay = document.querySelector(`overlay-trigger`);
|
|
798
|
+
const button = document.querySelector(`[slot="trigger"]`);
|
|
799
|
+
overlay.addEventListener("sp-opened", this.handleTriggerOpened);
|
|
800
|
+
button.click();
|
|
801
|
+
}
|
|
802
|
+
get updateComplete() {
|
|
803
|
+
return this.readyPromise;
|
|
804
|
+
}
|
|
795
805
|
}
|
|
796
|
-
customElements.define(
|
|
806
|
+
customElements.define("defined-overlay-ready", DefinedOverlayReady);
|
|
797
807
|
const definedOverlayDecorator = (story) => {
|
|
798
|
-
|
|
808
|
+
return html`
|
|
799
809
|
${story()}
|
|
800
810
|
<defined-overlay-ready></defined-overlay-ready>
|
|
801
811
|
`;
|
|
802
812
|
};
|
|
803
813
|
export const definedOverlayElement = () => {
|
|
804
|
-
|
|
814
|
+
return html`
|
|
805
815
|
<overlay-trigger placement="bottom" type="modal">
|
|
806
816
|
<sp-button variant="primary" slot="trigger">Open popover</sp-button>
|
|
807
817
|
<sp-popover slot="click-content" direction="bottom" dialog>
|
|
@@ -811,4 +821,4 @@ export const definedOverlayElement = () => {
|
|
|
811
821
|
`;
|
|
812
822
|
};
|
|
813
823
|
definedOverlayElement.decorators = [definedOverlayDecorator];
|
|
814
|
-
//# sourceMappingURL=overlay.stories.js.map
|
|
824
|
+
//# sourceMappingURL=overlay.stories.js.map
|