@spectrum-web-components/overlay 0.36.0 → 0.37.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +266 -149
- package/custom-elements.json +1678 -553
- package/package.json +49 -22
- package/sp-overlay.d.ts +6 -0
- package/sp-overlay.dev.js +5 -0
- package/{active-overlay.dev.js.map → sp-overlay.dev.js.map} +3 -3
- package/sp-overlay.js +2 -0
- package/{active-overlay.js.map → sp-overlay.js.map} +4 -4
- package/src/AbstractOverlay.d.ts +58 -0
- package/src/AbstractOverlay.dev.js +211 -0
- package/src/AbstractOverlay.dev.js.map +7 -0
- package/src/AbstractOverlay.js +2 -0
- package/src/AbstractOverlay.js.map +7 -0
- package/src/Overlay.d.ts +163 -0
- package/src/Overlay.dev.js +792 -0
- package/src/Overlay.dev.js.map +7 -0
- package/src/Overlay.js +33 -0
- package/src/Overlay.js.map +7 -0
- package/src/OverlayDialog.d.ts +4 -0
- package/src/OverlayDialog.dev.js +135 -0
- package/src/OverlayDialog.dev.js.map +7 -0
- package/src/OverlayDialog.js +2 -0
- package/src/OverlayDialog.js.map +7 -0
- package/src/OverlayNoPopover.d.ts +4 -0
- package/src/OverlayNoPopover.dev.js +109 -0
- package/src/OverlayNoPopover.dev.js.map +7 -0
- package/src/OverlayNoPopover.js +2 -0
- package/src/OverlayNoPopover.js.map +7 -0
- package/src/OverlayPopover.d.ts +4 -0
- package/src/OverlayPopover.dev.js +169 -0
- package/src/OverlayPopover.dev.js.map +7 -0
- package/src/OverlayPopover.js +2 -0
- package/src/OverlayPopover.js.map +7 -0
- package/src/OverlayStack.d.ts +43 -0
- package/src/OverlayStack.dev.js +150 -0
- package/src/OverlayStack.dev.js.map +7 -0
- package/src/OverlayStack.js +2 -0
- package/src/OverlayStack.js.map +7 -0
- package/src/OverlayTrigger.d.ts +26 -42
- package/src/OverlayTrigger.dev.js +172 -296
- package/src/OverlayTrigger.dev.js.map +3 -3
- package/src/OverlayTrigger.js +49 -25
- package/src/OverlayTrigger.js.map +3 -3
- package/src/PlacementController.d.ts +38 -0
- package/src/PlacementController.dev.js +199 -0
- package/src/PlacementController.dev.js.map +7 -0
- package/src/PlacementController.js +2 -0
- package/src/PlacementController.js.map +7 -0
- package/src/VirtualTrigger.dev.js +2 -1
- package/src/VirtualTrigger.dev.js.map +2 -2
- package/src/VirtualTrigger.js +1 -1
- package/src/VirtualTrigger.js.map +2 -2
- package/src/fullSizePlugin.d.ts +12 -0
- package/src/fullSizePlugin.dev.js +39 -0
- package/src/fullSizePlugin.dev.js.map +7 -0
- package/src/fullSizePlugin.js +2 -0
- package/src/fullSizePlugin.js.map +7 -0
- package/src/index.d.ts +2 -3
- package/src/index.dev.js +2 -3
- 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 +1 -2
- package/src/loader.dev.js +2 -19
- package/src/loader.dev.js.map +2 -2
- package/src/loader.js +1 -1
- package/src/loader.js.map +3 -3
- package/src/overlay-timer.dev.js.map +2 -2
- package/src/overlay-timer.js.map +2 -2
- 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 +3 -3
- package/src/overlay-trigger.css.js.map +1 -1
- package/src/overlay-types.d.ts +25 -31
- package/src/overlay-types.dev.js +1 -0
- 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.css.dev.js +9 -0
- package/src/overlay.css.dev.js.map +7 -0
- package/src/overlay.css.js +6 -0
- package/src/overlay.css.js.map +7 -0
- package/src/topLayerOverTransforms.d.ts +2 -0
- package/src/topLayerOverTransforms.dev.js +91 -0
- package/src/topLayerOverTransforms.dev.js.map +7 -0
- package/src/topLayerOverTransforms.js +2 -0
- package/src/topLayerOverTransforms.js.map +7 -0
- package/stories/overlay-element.stories.js +476 -0
- package/stories/overlay-element.stories.js.map +7 -0
- package/stories/overlay-story-components.js +9 -8
- package/stories/overlay-story-components.js.map +2 -2
- package/stories/overlay.stories.js +824 -680
- package/stories/overlay.stories.js.map +2 -2
- package/sync/overlay-trigger.d.ts +5 -0
- package/sync/overlay-trigger.dev.js +2 -4
- 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 +2 -2
- package/test/benchmark/basic-test.js.map +1 -1
- package/test/index.js +414 -377
- package/test/index.js.map +3 -3
- package/test/overlay-element.test-vrt.js +5 -0
- package/test/overlay-element.test-vrt.js.map +7 -0
- package/test/overlay-element.test.js +682 -0
- package/test/overlay-element.test.js.map +7 -0
- package/test/overlay-lifecycle.test.js +36 -106
- package/test/overlay-lifecycle.test.js.map +2 -2
- package/test/overlay-trigger-click.test.js +11 -5
- package/test/overlay-trigger-click.test.js.map +2 -2
- package/test/overlay-trigger-extended.test.js +46 -36
- package/test/overlay-trigger-extended.test.js.map +2 -2
- package/test/overlay-trigger-hover-click.test.js +38 -25
- package/test/overlay-trigger-hover-click.test.js.map +2 -2
- package/test/overlay-trigger-hover.test.js +41 -35
- package/test/overlay-trigger-hover.test.js.map +2 -2
- package/test/overlay-trigger-longpress.test.js +211 -82
- 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 +5 -5
- package/test/overlay-update.test.js.map +2 -2
- package/test/overlay-v1.test.js +547 -0
- package/test/overlay-v1.test.js.map +7 -0
- package/test/overlay.test.js +385 -269
- package/test/overlay.test.js.map +3 -3
- package/active-overlay.d.ts +0 -6
- package/active-overlay.dev.js +0 -5
- package/active-overlay.js +0 -2
- package/src/ActiveOverlay.d.ts +0 -84
- package/src/ActiveOverlay.dev.js +0 -517
- package/src/ActiveOverlay.dev.js.map +0 -7
- package/src/ActiveOverlay.js +0 -16
- package/src/ActiveOverlay.js.map +0 -7
- package/src/active-overlay.css.dev.js +0 -13
- package/src/active-overlay.css.dev.js.map +0 -7
- package/src/active-overlay.css.js +0 -10
- package/src/active-overlay.css.js.map +0 -7
- package/src/overlay-stack.d.ts +0 -50
- package/src/overlay-stack.dev.js +0 -515
- package/src/overlay-stack.dev.js.map +0 -7
- package/src/overlay-stack.js +0 -34
- package/src/overlay-stack.js.map +0 -7
- package/src/overlay-utils.d.ts +0 -3
- package/src/overlay-utils.dev.js +0 -31
- package/src/overlay-utils.dev.js.map +0 -7
- package/src/overlay-utils.js +0 -2
- package/src/overlay-utils.js.map +0 -7
- package/src/overlay.d.ts +0 -59
- package/src/overlay.dev.js +0 -127
- package/src/overlay.dev.js.map +0 -7
- package/src/overlay.js +0 -2
- package/src/overlay.js.map +0 -7
- /package/src/{active-overlay.css.d.ts → overlay.css.d.ts} +0 -0
|
@@ -9,14 +9,17 @@ import {
|
|
|
9
9
|
import "@spectrum-web-components/action-button/sp-action-button.js";
|
|
10
10
|
import "@spectrum-web-components/action-group/sp-action-group.js";
|
|
11
11
|
import "@spectrum-web-components/button/sp-button.js";
|
|
12
|
+
import "@spectrum-web-components/dialog/sp-dialog.js";
|
|
12
13
|
import "@spectrum-web-components/dialog/sp-dialog-wrapper.js";
|
|
13
14
|
import "@spectrum-web-components/field-label/sp-field-label.js";
|
|
14
15
|
import "@spectrum-web-components/icons-workflow/icons/sp-icon-magnify.js";
|
|
15
16
|
import "@spectrum-web-components/icons-workflow/icons/sp-icon-open-in.js";
|
|
16
17
|
import "@spectrum-web-components/overlay/overlay-trigger.js";
|
|
17
18
|
import "@spectrum-web-components/picker/sp-picker.js";
|
|
19
|
+
import "@spectrum-web-components/overlay/sp-overlay.js";
|
|
18
20
|
import "@spectrum-web-components/menu/sp-menu.js";
|
|
19
21
|
import "@spectrum-web-components/menu/sp-menu-item.js";
|
|
22
|
+
import "@spectrum-web-components/menu/sp-menu-group.js";
|
|
20
23
|
import "@spectrum-web-components/menu/sp-menu-divider.js";
|
|
21
24
|
import "@spectrum-web-components/popover/sp-popover.js";
|
|
22
25
|
import "@spectrum-web-components/slider/sp-slider.js";
|
|
@@ -121,6 +124,7 @@ const template = ({
|
|
|
121
124
|
return html`
|
|
122
125
|
${storyStyles}
|
|
123
126
|
<overlay-trigger
|
|
127
|
+
content="click hover"
|
|
124
128
|
id="trigger"
|
|
125
129
|
placement="${placement}"
|
|
126
130
|
offset="${offset}"
|
|
@@ -128,33 +132,33 @@ const template = ({
|
|
|
128
132
|
type=${ifDefined(type)}
|
|
129
133
|
>
|
|
130
134
|
<sp-button variant="primary" slot="trigger">Show Popover</sp-button>
|
|
131
|
-
<sp-popover
|
|
135
|
+
<sp-popover
|
|
136
|
+
slot="click-content"
|
|
137
|
+
placement="${placement}"
|
|
138
|
+
tip
|
|
139
|
+
>
|
|
132
140
|
<sp-dialog no-divider>
|
|
133
|
-
<
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
<
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
Another Popover
|
|
155
|
-
</div>
|
|
156
|
-
</sp-dialog>
|
|
157
|
-
</sp-popover>
|
|
141
|
+
<sp-slider
|
|
142
|
+
value="5"
|
|
143
|
+
step="0.5"
|
|
144
|
+
min="0"
|
|
145
|
+
max="20"
|
|
146
|
+
label="Awesomeness"
|
|
147
|
+
></sp-slider>
|
|
148
|
+
<div id="styled-div">
|
|
149
|
+
The background of this div should be blue
|
|
150
|
+
</div>
|
|
151
|
+
<overlay-trigger id="inner-trigger" placement="bottom">
|
|
152
|
+
<sp-button slot="trigger">Press Me</sp-button>
|
|
153
|
+
<sp-popover
|
|
154
|
+
slot="click-content"
|
|
155
|
+
placement="bottom"
|
|
156
|
+
tip
|
|
157
|
+
>
|
|
158
|
+
<sp-dialog size="s" no-divider>
|
|
159
|
+
Another Popover
|
|
160
|
+
</sp-dialog>
|
|
161
|
+
</sp-popover>
|
|
158
162
|
|
|
159
163
|
<sp-tooltip
|
|
160
164
|
slot="hover-content"
|
|
@@ -177,18 +181,148 @@ const template = ({
|
|
|
177
181
|
</overlay-trigger>
|
|
178
182
|
`;
|
|
179
183
|
};
|
|
184
|
+
const extraText = html`
|
|
185
|
+
<p>This is some text.</p>
|
|
186
|
+
<p>This is some text.</p>
|
|
187
|
+
<p>
|
|
188
|
+
This is a
|
|
189
|
+
<a href="#anchor">link</a>
|
|
190
|
+
.
|
|
191
|
+
</p>
|
|
192
|
+
`;
|
|
193
|
+
function nextFrame() {
|
|
194
|
+
return new Promise((res) => requestAnimationFrame(() => res()));
|
|
195
|
+
}
|
|
180
196
|
export const Default = (args) => template(args);
|
|
181
|
-
export const
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
197
|
+
export const accordion = () => {
|
|
198
|
+
return html`
|
|
199
|
+
<overlay-trigger type="modal" placement="right">
|
|
200
|
+
<sp-button variant="primary" slot="trigger">
|
|
201
|
+
Open overlay w/ accordion
|
|
202
|
+
</sp-button>
|
|
203
|
+
<sp-popover
|
|
204
|
+
slot="click-content"
|
|
205
|
+
style="overflow-y: scroll;position: static;"
|
|
206
|
+
>
|
|
207
|
+
<sp-dialog size="s" no-divider>
|
|
208
|
+
<sp-accordion allow-multiple>
|
|
209
|
+
<sp-accordion-item label="Some things">
|
|
210
|
+
<p>
|
|
211
|
+
Thing
|
|
212
|
+
<br />
|
|
213
|
+
<br />
|
|
214
|
+
<br />
|
|
215
|
+
<br />
|
|
216
|
+
<br />
|
|
217
|
+
<br />
|
|
218
|
+
<br />
|
|
219
|
+
more things
|
|
220
|
+
</p>
|
|
221
|
+
</sp-accordion-item>
|
|
222
|
+
<sp-accordion-item label="Other things">
|
|
223
|
+
<p>
|
|
224
|
+
Thing
|
|
225
|
+
<br />
|
|
226
|
+
<br />
|
|
227
|
+
<br />
|
|
228
|
+
<br />
|
|
229
|
+
<br />
|
|
230
|
+
<br />
|
|
231
|
+
<br />
|
|
232
|
+
more things
|
|
233
|
+
</p>
|
|
234
|
+
</sp-accordion-item>
|
|
235
|
+
<sp-accordion-item label="More things">
|
|
236
|
+
<p>
|
|
237
|
+
Thing
|
|
238
|
+
<br />
|
|
239
|
+
<br />
|
|
240
|
+
<br />
|
|
241
|
+
<br />
|
|
242
|
+
<br />
|
|
243
|
+
<br />
|
|
244
|
+
<br />
|
|
245
|
+
more things
|
|
246
|
+
</p>
|
|
247
|
+
</sp-accordion-item>
|
|
248
|
+
<sp-accordion-item label="Additional things">
|
|
249
|
+
<p>
|
|
250
|
+
Thing
|
|
251
|
+
<br />
|
|
252
|
+
<br />
|
|
253
|
+
<br />
|
|
254
|
+
<br />
|
|
255
|
+
<br />
|
|
256
|
+
<br />
|
|
257
|
+
<br />
|
|
258
|
+
more things
|
|
259
|
+
</p>
|
|
260
|
+
</sp-accordion-item>
|
|
261
|
+
</sp-accordion>
|
|
262
|
+
</sp-dialog>
|
|
263
|
+
</sp-popover>
|
|
264
|
+
</overlay-trigger>
|
|
265
|
+
`;
|
|
266
|
+
};
|
|
267
|
+
accordion.swc_vrt = {
|
|
268
|
+
skip: true
|
|
269
|
+
};
|
|
270
|
+
export const clickAndHoverTargets = () => {
|
|
271
|
+
return html`
|
|
272
|
+
<div>
|
|
273
|
+
${storyStyles}
|
|
274
|
+
<style>
|
|
275
|
+
.friendly-target {
|
|
276
|
+
padding: 4px;
|
|
277
|
+
margin: 6px;
|
|
278
|
+
border: 2px solid black;
|
|
279
|
+
border-radius: 6px;
|
|
280
|
+
cursor: default;
|
|
281
|
+
}
|
|
282
|
+
</style>
|
|
283
|
+
<overlay-trigger placement="right">
|
|
284
|
+
<div class="friendly-target" slot="trigger" tabindex="0">
|
|
285
|
+
Click me
|
|
286
|
+
</div>
|
|
287
|
+
<sp-tooltip slot="click-content" tip="right">
|
|
288
|
+
Ok, now hover the other trigger
|
|
289
|
+
</sp-tooltip>
|
|
290
|
+
</overlay-trigger>
|
|
291
|
+
<overlay-trigger placement="left">
|
|
292
|
+
<div class="friendly-target" slot="trigger" tabindex="0">
|
|
293
|
+
Then hover me
|
|
294
|
+
</div>
|
|
295
|
+
<sp-tooltip slot="hover-content" tip="right">
|
|
296
|
+
Now click my trigger -- I should stay open, but the other
|
|
297
|
+
overlay should close
|
|
298
|
+
</sp-tooltip>
|
|
299
|
+
</overlay-trigger>
|
|
300
|
+
</div>
|
|
301
|
+
`;
|
|
302
|
+
};
|
|
303
|
+
clickAndHoverTargets.swc_vrt = {
|
|
304
|
+
skip: true
|
|
305
|
+
};
|
|
189
306
|
class ScrollForcer extends HTMLElement {
|
|
190
307
|
constructor() {
|
|
191
308
|
super();
|
|
309
|
+
this.doScroll = async () => {
|
|
310
|
+
var _a;
|
|
311
|
+
(_a = this.previousElementSibling) == null ? void 0 : _a.addEventListener(
|
|
312
|
+
"sp-opened",
|
|
313
|
+
this.doScroll
|
|
314
|
+
);
|
|
315
|
+
await nextFrame();
|
|
316
|
+
await nextFrame();
|
|
317
|
+
await nextFrame();
|
|
318
|
+
await nextFrame();
|
|
319
|
+
if (document.scrollingElement) {
|
|
320
|
+
document.scrollingElement.scrollTop = 100;
|
|
321
|
+
}
|
|
322
|
+
await nextFrame();
|
|
323
|
+
await nextFrame();
|
|
324
|
+
this.ready(true);
|
|
325
|
+
};
|
|
192
326
|
this.readyPromise = Promise.resolve(false);
|
|
193
327
|
this.readyPromise = new Promise((res) => {
|
|
194
328
|
this.ready = res;
|
|
@@ -196,28 +330,16 @@ class ScrollForcer extends HTMLElement {
|
|
|
196
330
|
this.setup();
|
|
197
331
|
}
|
|
198
332
|
async setup() {
|
|
199
|
-
var _a;
|
|
333
|
+
var _a, _b;
|
|
200
334
|
await nextFrame();
|
|
201
335
|
await nextFrame();
|
|
202
336
|
(_a = this.previousElementSibling) == null ? void 0 : _a.addEventListener(
|
|
203
337
|
"sp-opened",
|
|
204
|
-
|
|
205
|
-
this.doScroll();
|
|
206
|
-
},
|
|
207
|
-
{ once: true }
|
|
338
|
+
this.doScroll
|
|
208
339
|
);
|
|
209
|
-
}
|
|
210
|
-
async doScroll() {
|
|
211
|
-
await nextFrame();
|
|
212
340
|
await nextFrame();
|
|
213
341
|
await nextFrame();
|
|
214
|
-
|
|
215
|
-
if (document.scrollingElement) {
|
|
216
|
-
document.scrollingElement.scrollTop = 100;
|
|
217
|
-
}
|
|
218
|
-
await nextFrame();
|
|
219
|
-
await nextFrame();
|
|
220
|
-
this.ready(true);
|
|
342
|
+
((_b = this.previousElementSibling) == null ? void 0 : _b.lastElementChild).open = "click";
|
|
221
343
|
}
|
|
222
344
|
get updateComplete() {
|
|
223
345
|
return this.readyPromise;
|
|
@@ -227,8 +349,7 @@ customElements.define("scroll-forcer", ScrollForcer);
|
|
|
227
349
|
export const clickContentClosedOnScroll = (args) => html`
|
|
228
350
|
<div style="margin: 50vh 0 100vh;">
|
|
229
351
|
${template({
|
|
230
|
-
...args
|
|
231
|
-
open: "click"
|
|
352
|
+
...args
|
|
232
353
|
})}
|
|
233
354
|
</div>
|
|
234
355
|
`;
|
|
@@ -247,85 +368,136 @@ clickContentClosedOnScroll.decorators = [
|
|
|
247
368
|
<scroll-forcer></scroll-forcer>
|
|
248
369
|
`
|
|
249
370
|
];
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
371
|
+
class ComplexModalReady extends HTMLElement {
|
|
372
|
+
constructor() {
|
|
373
|
+
super();
|
|
374
|
+
this.handleTriggerOpened = async () => {
|
|
375
|
+
await nextFrame();
|
|
376
|
+
const picker = document.querySelector("#test-picker");
|
|
377
|
+
picker.addEventListener("sp-opened", this.handlePickerOpen);
|
|
378
|
+
picker.open = true;
|
|
379
|
+
};
|
|
380
|
+
this.handlePickerOpen = async () => {
|
|
381
|
+
const picker = document.querySelector("#test-picker");
|
|
382
|
+
const actions = [nextFrame, picker.updateComplete];
|
|
383
|
+
await Promise.all(actions);
|
|
384
|
+
this.ready(true);
|
|
385
|
+
};
|
|
386
|
+
this.readyPromise = Promise.resolve(false);
|
|
387
|
+
this.readyPromise = new Promise((res) => {
|
|
388
|
+
this.ready = res;
|
|
389
|
+
this.setup();
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
async setup() {
|
|
393
|
+
await nextFrame();
|
|
394
|
+
const overlay = document.querySelector(
|
|
395
|
+
`overlay-trigger`
|
|
396
|
+
);
|
|
397
|
+
overlay.addEventListener("sp-opened", this.handleTriggerOpened);
|
|
398
|
+
}
|
|
399
|
+
get updateComplete() {
|
|
400
|
+
return this.readyPromise;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
customElements.define("complex-modal-ready", ComplexModalReady);
|
|
404
|
+
const complexModalDecorator = (story) => {
|
|
405
|
+
return html`
|
|
406
|
+
${story()}
|
|
407
|
+
<complex-modal-ready></complex-modal-ready>
|
|
408
|
+
`;
|
|
409
|
+
};
|
|
410
|
+
export const complexModal = () => {
|
|
411
|
+
return html`
|
|
412
|
+
<style>
|
|
413
|
+
body {
|
|
414
|
+
--swc-margin-test: 10px;
|
|
415
|
+
margin: var(--swc-margin-test);
|
|
416
|
+
}
|
|
417
|
+
sp-story-decorator::part(container) {
|
|
418
|
+
min-height: calc(100vh - (2 * var(--swc-margin-test)));
|
|
419
|
+
padding: 0;
|
|
420
|
+
display: grid;
|
|
421
|
+
place-content: center;
|
|
422
|
+
}
|
|
423
|
+
active-overlay > * {
|
|
424
|
+
--spectrum-global-animation-duration-100: 0ms;
|
|
425
|
+
--spectrum-global-animation-duration-200: 0ms;
|
|
426
|
+
--spectrum-global-animation-duration-300: 0ms;
|
|
427
|
+
--spectrum-global-animation-duration-400: 0ms;
|
|
428
|
+
--spectrum-global-animation-duration-500: 0ms;
|
|
429
|
+
--spectrum-global-animation-duration-600: 0ms;
|
|
430
|
+
--spectrum-global-animation-duration-700: 0ms;
|
|
431
|
+
--spectrum-global-animation-duration-800: 0ms;
|
|
432
|
+
--spectrum-global-animation-duration-900: 0ms;
|
|
433
|
+
--spectrum-global-animation-duration-1000: 0ms;
|
|
434
|
+
--spectrum-global-animation-duration-2000: 0ms;
|
|
435
|
+
--spectrum-global-animation-duration-4000: 0ms;
|
|
436
|
+
--spectrum-animation-duration-0: 0ms;
|
|
437
|
+
--spectrum-animation-duration-100: 0ms;
|
|
438
|
+
--spectrum-animation-duration-200: 0ms;
|
|
439
|
+
--spectrum-animation-duration-300: 0ms;
|
|
440
|
+
--spectrum-animation-duration-400: 0ms;
|
|
441
|
+
--spectrum-animation-duration-500: 0ms;
|
|
442
|
+
--spectrum-animation-duration-600: 0ms;
|
|
443
|
+
--spectrum-animation-duration-700: 0ms;
|
|
444
|
+
--spectrum-animation-duration-800: 0ms;
|
|
445
|
+
--spectrum-animation-duration-900: 0ms;
|
|
446
|
+
--spectrum-animation-duration-1000: 0ms;
|
|
447
|
+
--spectrum-animation-duration-2000: 0ms;
|
|
448
|
+
--spectrum-animation-duration-4000: 0ms;
|
|
449
|
+
--spectrum-coachmark-animation-indicator-ring-duration: 0ms;
|
|
450
|
+
--swc-test-duration: 1ms;
|
|
451
|
+
}
|
|
452
|
+
</style>
|
|
453
|
+
<overlay-trigger type="modal" open="click">
|
|
454
|
+
<sp-dialog-wrapper
|
|
455
|
+
slot="click-content"
|
|
456
|
+
headline="Dialog title"
|
|
457
|
+
dismissable
|
|
458
|
+
underlay
|
|
459
|
+
footer="Content for footer"
|
|
460
|
+
>
|
|
461
|
+
<sp-field-label for="test-picker">
|
|
462
|
+
Selection type:
|
|
463
|
+
</sp-field-label>
|
|
464
|
+
<sp-picker id="test-picker">
|
|
465
|
+
<sp-menu-item>Deselect</sp-menu-item>
|
|
466
|
+
<sp-menu-item>Select inverse</sp-menu-item>
|
|
467
|
+
<sp-menu-item>Feather...</sp-menu-item>
|
|
468
|
+
<sp-menu-item>Select and mask...</sp-menu-item>
|
|
469
|
+
<sp-menu-divider></sp-menu-divider>
|
|
470
|
+
<sp-menu-item>Save selection</sp-menu-item>
|
|
471
|
+
<sp-menu-item disabled>Make work path</sp-menu-item>
|
|
472
|
+
</sp-picker>
|
|
473
|
+
</sp-dialog-wrapper>
|
|
474
|
+
<sp-button slot="trigger" variant="primary">
|
|
475
|
+
Toggle Dialog
|
|
476
|
+
</sp-button>
|
|
477
|
+
</overlay-trigger>
|
|
478
|
+
`;
|
|
264
479
|
};
|
|
480
|
+
complexModal.decorators = [complexModalDecorator];
|
|
265
481
|
export const customizedClickContent = (args) => html`
|
|
266
482
|
<style>
|
|
267
|
-
|
|
268
|
-
--styled-div-background-color: var(
|
|
269
|
-
|
|
483
|
+
overlay-trigger {
|
|
484
|
+
--styled-div-background-color: var(
|
|
485
|
+
--spectrum-semantic-cta-background-color-default
|
|
486
|
+
);
|
|
487
|
+
--spectrum-button-m-accent-fill-texticon-background-color: rebeccapurple;
|
|
270
488
|
}
|
|
271
489
|
</style>
|
|
272
|
-
</style>
|
|
273
490
|
${template({
|
|
274
491
|
...args,
|
|
275
492
|
open: "click"
|
|
276
493
|
})}
|
|
277
494
|
`;
|
|
278
|
-
const extraText = html`
|
|
279
|
-
<p>This is some text.</p>
|
|
280
|
-
<p>This is some text.</p>
|
|
281
|
-
<p>
|
|
282
|
-
This is a
|
|
283
|
-
<a href="#anchor">link</a>
|
|
284
|
-
.
|
|
285
|
-
</p>
|
|
286
|
-
`;
|
|
287
|
-
export const inline = () => {
|
|
288
|
-
const closeEvent = new Event("close", { bubbles: true, composed: true });
|
|
289
|
-
return html`
|
|
290
|
-
<overlay-trigger type="inline">
|
|
291
|
-
<sp-button slot="trigger">Open</sp-button>
|
|
292
|
-
<sp-overlay slot="click-content">
|
|
293
|
-
<sp-button
|
|
294
|
-
@click=${(event) => {
|
|
295
|
-
event.target.dispatchEvent(closeEvent);
|
|
296
|
-
}}
|
|
297
|
-
>
|
|
298
|
-
Close
|
|
299
|
-
</sp-button>
|
|
300
|
-
</sp-overlay>
|
|
301
|
-
</overlay-trigger>
|
|
302
|
-
${extraText}
|
|
303
|
-
`;
|
|
304
|
-
};
|
|
305
|
-
export const replace = () => {
|
|
306
|
-
const closeEvent = new Event("close", { bubbles: true, composed: true });
|
|
307
|
-
return html`
|
|
308
|
-
<overlay-trigger type="replace">
|
|
309
|
-
<sp-button slot="trigger">Open</sp-button>
|
|
310
|
-
<sp-overlay slot="click-content">
|
|
311
|
-
<sp-button
|
|
312
|
-
@click=${(event) => {
|
|
313
|
-
event.target.dispatchEvent(closeEvent);
|
|
314
|
-
}}
|
|
315
|
-
>
|
|
316
|
-
Close
|
|
317
|
-
</sp-button>
|
|
318
|
-
</sp-overlay>
|
|
319
|
-
</overlay-trigger>
|
|
320
|
-
${extraText}
|
|
321
|
-
`;
|
|
322
|
-
};
|
|
323
495
|
export const deep = () => html`
|
|
324
496
|
<overlay-trigger>
|
|
325
497
|
<sp-button variant="primary" slot="trigger">
|
|
326
498
|
Open popover 1 with buttons + selfmanaged Tooltips
|
|
327
499
|
</sp-button>
|
|
328
|
-
<sp-popover slot="click-content" direction="bottom" tip
|
|
500
|
+
<sp-popover slot="click-content" direction="bottom" tip>
|
|
329
501
|
<sp-dialog size="s" no-divider>
|
|
330
502
|
<sp-action-button>
|
|
331
503
|
<sp-tooltip self-managed placement="bottom" offset="0">
|
|
@@ -347,7 +519,7 @@ export const deep = () => html`
|
|
|
347
519
|
<sp-button variant="primary" slot="trigger">
|
|
348
520
|
Open popover 2 with buttons without ToolTips
|
|
349
521
|
</sp-button>
|
|
350
|
-
<sp-popover slot="click-content" direction="bottom" tip
|
|
522
|
+
<sp-popover slot="click-content" direction="bottom" tip>
|
|
351
523
|
<sp-dialog size="s" no-divider>
|
|
352
524
|
<sp-action-button>X</sp-action-button>
|
|
353
525
|
<sp-action-button>Y</sp-action-button>
|
|
@@ -358,72 +530,36 @@ export const deep = () => html`
|
|
|
358
530
|
deep.swc_vrt = {
|
|
359
531
|
skip: true
|
|
360
532
|
};
|
|
361
|
-
export const
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
<
|
|
365
|
-
<sp-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
533
|
+
export const deepChildTooltip = () => html`
|
|
534
|
+
<overlay-trigger>
|
|
535
|
+
<sp-button variant="primary" slot="trigger">Open popover</sp-button>
|
|
536
|
+
<sp-popover slot="click-content" direction="bottom" tip>
|
|
537
|
+
<sp-dialog no-divider>
|
|
538
|
+
<p>Let us open another overlay here</p>
|
|
539
|
+
<overlay-trigger>
|
|
540
|
+
<sp-button variant="primary" slot="trigger">
|
|
541
|
+
Open sub popover
|
|
542
|
+
</sp-button>
|
|
543
|
+
<sp-popover slot="click-content" direction="bottom" tip>
|
|
544
|
+
<sp-dialog no-divider>
|
|
545
|
+
<p>
|
|
546
|
+
Render an action button with tooltips. Clicking
|
|
547
|
+
the action button shouldn't close everything
|
|
548
|
+
</p>
|
|
549
|
+
<sp-action-button>
|
|
550
|
+
Button with self-managed tooltip
|
|
551
|
+
<sp-tooltip self-managed placement="top">
|
|
552
|
+
Deep Child ToolTip
|
|
553
|
+
</sp-tooltip>
|
|
554
|
+
</sp-action-button>
|
|
555
|
+
<sp-action-button>Just a button</sp-action-button>
|
|
556
|
+
</sp-dialog>
|
|
557
|
+
</sp-popover>
|
|
558
|
+
</overlay-trigger>
|
|
386
559
|
</sp-dialog>
|
|
387
|
-
</
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
};
|
|
391
|
-
export const modalManaged = () => {
|
|
392
|
-
const closeEvent = new Event("close", { bubbles: true, composed: true });
|
|
393
|
-
return html`
|
|
394
|
-
<overlay-trigger type="modal" placement="none">
|
|
395
|
-
<sp-button slot="trigger">Open</sp-button>
|
|
396
|
-
<sp-dialog-wrapper
|
|
397
|
-
underlay
|
|
398
|
-
slot="click-content"
|
|
399
|
-
headline="Wrapped Dialog w/ Hero Image"
|
|
400
|
-
confirm-label="Keep Both"
|
|
401
|
-
secondary-label="Replace"
|
|
402
|
-
cancel-label="Cancel"
|
|
403
|
-
footer="Content for footer"
|
|
404
|
-
@confirm=${(event) => {
|
|
405
|
-
event.target.dispatchEvent(closeEvent);
|
|
406
|
-
}}
|
|
407
|
-
@secondary=${(event) => {
|
|
408
|
-
event.target.dispatchEvent(closeEvent);
|
|
409
|
-
}}
|
|
410
|
-
@cancel=${(event) => {
|
|
411
|
-
event.target.dispatchEvent(closeEvent);
|
|
412
|
-
}}
|
|
413
|
-
>
|
|
414
|
-
<p>
|
|
415
|
-
The
|
|
416
|
-
<code>sp-dialog-wrapper</code>
|
|
417
|
-
element has been prepared for use in an
|
|
418
|
-
<code>overlay-trigger</code>
|
|
419
|
-
element by it's combination of modal, underlay, etc. styles
|
|
420
|
-
and features.
|
|
421
|
-
</p>
|
|
422
|
-
</sp-dialog-wrapper>
|
|
423
|
-
</overlay-trigger>
|
|
424
|
-
${extraText}
|
|
425
|
-
`;
|
|
426
|
-
};
|
|
560
|
+
</sp-popover>
|
|
561
|
+
</overlay-trigger>
|
|
562
|
+
`;
|
|
427
563
|
export const deepNesting = () => {
|
|
428
564
|
const color = window.__swc_hack_knobs__.defaultColor;
|
|
429
565
|
const outter = color === "light" ? "dark" : "light";
|
|
@@ -453,6 +589,155 @@ export const deepNesting = () => {
|
|
|
453
589
|
</sp-theme>
|
|
454
590
|
`;
|
|
455
591
|
};
|
|
592
|
+
class DefinedOverlayReady extends HTMLElement {
|
|
593
|
+
constructor() {
|
|
594
|
+
super(...arguments);
|
|
595
|
+
this.handleTriggerOpened = async () => {
|
|
596
|
+
this.overlayElement.removeEventListener(
|
|
597
|
+
"sp-opened",
|
|
598
|
+
this.handleTriggerOpened
|
|
599
|
+
);
|
|
600
|
+
await nextFrame();
|
|
601
|
+
await nextFrame();
|
|
602
|
+
await nextFrame();
|
|
603
|
+
await nextFrame();
|
|
604
|
+
this.popoverElement = document.querySelector(
|
|
605
|
+
"popover-content"
|
|
606
|
+
);
|
|
607
|
+
if (!this.popoverElement) {
|
|
608
|
+
return;
|
|
609
|
+
}
|
|
610
|
+
this.popoverElement.addEventListener(
|
|
611
|
+
"sp-opened",
|
|
612
|
+
this.handlePopoverOpen
|
|
613
|
+
);
|
|
614
|
+
await nextFrame();
|
|
615
|
+
await nextFrame();
|
|
616
|
+
this.popoverElement.button.click();
|
|
617
|
+
};
|
|
618
|
+
this.handlePopoverOpen = async () => {
|
|
619
|
+
await nextFrame();
|
|
620
|
+
this.ready(true);
|
|
621
|
+
};
|
|
622
|
+
this.readyPromise = Promise.resolve(false);
|
|
623
|
+
}
|
|
624
|
+
connectedCallback() {
|
|
625
|
+
if (!!this.ready)
|
|
626
|
+
return;
|
|
627
|
+
this.readyPromise = new Promise((res) => {
|
|
628
|
+
this.ready = res;
|
|
629
|
+
this.setup();
|
|
630
|
+
});
|
|
631
|
+
}
|
|
632
|
+
async setup() {
|
|
633
|
+
await nextFrame();
|
|
634
|
+
await nextFrame();
|
|
635
|
+
this.overlayElement = document.querySelector(
|
|
636
|
+
`overlay-trigger`
|
|
637
|
+
);
|
|
638
|
+
const button = document.querySelector(
|
|
639
|
+
`[slot="trigger"]`
|
|
640
|
+
);
|
|
641
|
+
this.overlayElement.addEventListener(
|
|
642
|
+
"sp-opened",
|
|
643
|
+
this.handleTriggerOpened
|
|
644
|
+
);
|
|
645
|
+
await nextFrame();
|
|
646
|
+
await nextFrame();
|
|
647
|
+
button.click();
|
|
648
|
+
}
|
|
649
|
+
disconnectedCallback() {
|
|
650
|
+
this.overlayElement.removeEventListener(
|
|
651
|
+
"sp-opened",
|
|
652
|
+
this.handleTriggerOpened
|
|
653
|
+
);
|
|
654
|
+
this.popoverElement.removeEventListener(
|
|
655
|
+
"sp-opened",
|
|
656
|
+
this.handlePopoverOpen
|
|
657
|
+
);
|
|
658
|
+
}
|
|
659
|
+
get updateComplete() {
|
|
660
|
+
return this.readyPromise;
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
customElements.define("defined-overlay-ready", DefinedOverlayReady);
|
|
664
|
+
const definedOverlayDecorator = (story) => {
|
|
665
|
+
return html`
|
|
666
|
+
${story()}
|
|
667
|
+
<defined-overlay-ready></defined-overlay-ready>
|
|
668
|
+
`;
|
|
669
|
+
};
|
|
670
|
+
export const definedOverlayElement = () => {
|
|
671
|
+
return html`
|
|
672
|
+
<overlay-trigger placement="bottom" type="modal">
|
|
673
|
+
<sp-button variant="primary" slot="trigger">Open popover</sp-button>
|
|
674
|
+
<sp-popover slot="click-content" direction="bottom">
|
|
675
|
+
<sp-dialog no-divider>
|
|
676
|
+
<popover-content></popover-content>
|
|
677
|
+
</sp-dialog>
|
|
678
|
+
</sp-popover>
|
|
679
|
+
</overlay-trigger>
|
|
680
|
+
`;
|
|
681
|
+
};
|
|
682
|
+
definedOverlayElement.decorators = [definedOverlayDecorator];
|
|
683
|
+
export const detachedElement = () => {
|
|
684
|
+
let overlay;
|
|
685
|
+
const openDetachedOverlayContent = async ({
|
|
686
|
+
target
|
|
687
|
+
}) => {
|
|
688
|
+
if (overlay) {
|
|
689
|
+
overlay.open = false;
|
|
690
|
+
overlay = void 0;
|
|
691
|
+
return;
|
|
692
|
+
}
|
|
693
|
+
const div = document.createElement("div");
|
|
694
|
+
div.open = false;
|
|
695
|
+
div.textContent = "This div is overlaid";
|
|
696
|
+
div.setAttribute(
|
|
697
|
+
"style",
|
|
698
|
+
`
|
|
699
|
+
background-color: var(--spectrum-global-color-gray-50);
|
|
700
|
+
color: var(--spectrum-global-color-gray-800);
|
|
701
|
+
border: 1px solid;
|
|
702
|
+
padding: 2em;
|
|
703
|
+
`
|
|
704
|
+
);
|
|
705
|
+
overlay = await Overlay.open(div, {
|
|
706
|
+
type: "auto",
|
|
707
|
+
trigger: target,
|
|
708
|
+
receivesFocus: "auto",
|
|
709
|
+
placement: "bottom",
|
|
710
|
+
offset: 0
|
|
711
|
+
});
|
|
712
|
+
overlay.addEventListener("sp-closed", () => {
|
|
713
|
+
overlay = void 0;
|
|
714
|
+
});
|
|
715
|
+
target.insertAdjacentElement("afterend", overlay);
|
|
716
|
+
};
|
|
717
|
+
requestAnimationFrame(() => {
|
|
718
|
+
openDetachedOverlayContent({
|
|
719
|
+
target: document.querySelector(
|
|
720
|
+
"#detached-content-trigger"
|
|
721
|
+
)
|
|
722
|
+
});
|
|
723
|
+
});
|
|
724
|
+
return html`
|
|
725
|
+
<style>
|
|
726
|
+
sp-overlay div:not([placement]) {
|
|
727
|
+
visibility: hidden;
|
|
728
|
+
}
|
|
729
|
+
</style>
|
|
730
|
+
<sp-action-button
|
|
731
|
+
id="detached-content-trigger"
|
|
732
|
+
@click=${openDetachedOverlayContent}
|
|
733
|
+
>
|
|
734
|
+
<sp-icon-open-in
|
|
735
|
+
slot="icon"
|
|
736
|
+
label="Open in overlay"
|
|
737
|
+
></sp-icon-open-in>
|
|
738
|
+
</sp-action-button>
|
|
739
|
+
`;
|
|
740
|
+
};
|
|
456
741
|
export const edges = () => {
|
|
457
742
|
return html`
|
|
458
743
|
<style>
|
|
@@ -482,7 +767,7 @@ export const edges = () => {
|
|
|
482
767
|
<br />
|
|
483
768
|
Left
|
|
484
769
|
</sp-button>
|
|
485
|
-
<sp-tooltip slot="hover-content" delayed
|
|
770
|
+
<sp-tooltip slot="hover-content" delayed tip="bottom">
|
|
486
771
|
Triskaidekaphobia and More
|
|
487
772
|
</sp-tooltip>
|
|
488
773
|
</overlay-trigger>
|
|
@@ -492,7 +777,7 @@ export const edges = () => {
|
|
|
492
777
|
<br />
|
|
493
778
|
Right
|
|
494
779
|
</sp-button>
|
|
495
|
-
<sp-tooltip slot="hover-content" delayed
|
|
780
|
+
<sp-tooltip slot="hover-content" delayed tip="bottom">
|
|
496
781
|
Triskaidekaphobia and More
|
|
497
782
|
</sp-tooltip>
|
|
498
783
|
</overlay-trigger>
|
|
@@ -502,7 +787,7 @@ export const edges = () => {
|
|
|
502
787
|
<br />
|
|
503
788
|
Left
|
|
504
789
|
</sp-button>
|
|
505
|
-
<sp-tooltip slot="hover-content" delayed
|
|
790
|
+
<sp-tooltip slot="hover-content" delayed tip="top">
|
|
506
791
|
Triskaidekaphobia and More
|
|
507
792
|
</sp-tooltip>
|
|
508
793
|
</overlay-trigger>
|
|
@@ -512,106 +797,31 @@ export const edges = () => {
|
|
|
512
797
|
<br />
|
|
513
798
|
Right
|
|
514
799
|
</sp-button>
|
|
515
|
-
<sp-tooltip slot="hover-content" delayed
|
|
800
|
+
<sp-tooltip slot="hover-content" delayed tip="top">
|
|
516
801
|
Triskaidekaphobia and More
|
|
517
802
|
</sp-tooltip>
|
|
518
803
|
</overlay-trigger>
|
|
519
804
|
`;
|
|
520
805
|
};
|
|
521
|
-
export const
|
|
806
|
+
export const inline = () => {
|
|
807
|
+
const closeEvent = new Event("close", { bubbles: true, composed: true });
|
|
522
808
|
return html`
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
sp-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
Click to open popover
|
|
537
|
-
</sp-tooltip>
|
|
538
|
-
<sp-popover slot="click-content" position="bottom" tip open>
|
|
539
|
-
<sp-dialog size="s" no-divider>
|
|
540
|
-
<div class="options-popover-content">
|
|
541
|
-
<sp-slider
|
|
542
|
-
value="5"
|
|
543
|
-
step="0.5"
|
|
544
|
-
min="0"
|
|
545
|
-
max="20"
|
|
546
|
-
label="Awesomeness"
|
|
547
|
-
></sp-slider>
|
|
548
|
-
<div id="styled-div">
|
|
549
|
-
The background of this div should be blue
|
|
550
|
-
</div>
|
|
551
|
-
<overlay-trigger
|
|
552
|
-
id="inner-trigger"
|
|
553
|
-
placement="bottom"
|
|
554
|
-
>
|
|
555
|
-
<sp-button slot="trigger">Press Me</sp-button>
|
|
556
|
-
<sp-popover
|
|
557
|
-
slot="click-content"
|
|
558
|
-
placement="bottom"
|
|
559
|
-
tip
|
|
560
|
-
open
|
|
561
|
-
>
|
|
562
|
-
<sp-dialog size="s" no-divider>
|
|
563
|
-
<div class="options-popover-content">
|
|
564
|
-
Another Popover
|
|
565
|
-
</div>
|
|
566
|
-
</sp-dialog>
|
|
567
|
-
</sp-popover>
|
|
568
|
-
|
|
569
|
-
<sp-tooltip
|
|
570
|
-
slot="hover-content"
|
|
571
|
-
delayed
|
|
572
|
-
tip="bottom"
|
|
573
|
-
>
|
|
574
|
-
Click to open another popover.
|
|
575
|
-
</sp-tooltip>
|
|
576
|
-
</overlay-trigger>
|
|
577
|
-
</div>
|
|
578
|
-
</sp-dialog>
|
|
579
|
-
</sp-popover>
|
|
580
|
-
</overlay-trigger>
|
|
581
|
-
</overlay-drag>
|
|
809
|
+
<overlay-trigger type="inline">
|
|
810
|
+
<sp-button slot="trigger">Open</sp-button>
|
|
811
|
+
<sp-popover slot="click-content">
|
|
812
|
+
<sp-button
|
|
813
|
+
@click=${(event) => {
|
|
814
|
+
event.target.dispatchEvent(closeEvent);
|
|
815
|
+
}}
|
|
816
|
+
>
|
|
817
|
+
Close
|
|
818
|
+
</sp-button>
|
|
819
|
+
</sp-popover>
|
|
820
|
+
</overlay-trigger>
|
|
821
|
+
${extraText}
|
|
582
822
|
`;
|
|
583
823
|
};
|
|
584
|
-
export const
|
|
585
|
-
return html`
|
|
586
|
-
${storyStyles}
|
|
587
|
-
<style>
|
|
588
|
-
sp-tooltip {
|
|
589
|
-
transition: none;
|
|
590
|
-
}
|
|
591
|
-
</style>
|
|
592
|
-
<overlay-drag>
|
|
593
|
-
<overlay-trigger placement="right">
|
|
594
|
-
<overlay-target-icon slot="trigger"></overlay-target-icon>
|
|
595
|
-
<sp-tooltip slot="hover-content" delayed tip="right">
|
|
596
|
-
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
|
597
|
-
Vivamus egestas sed enim sed condimentum. Nunc facilisis
|
|
598
|
-
scelerisque massa sed luctus. Orci varius natoque penatibus
|
|
599
|
-
et magnis dis parturient montes, nascetur ridiculus mus.
|
|
600
|
-
Suspendisse sagittis sodales purus vitae ultricies. Integer
|
|
601
|
-
at dui sem. Sed quam tortor, ornare in nisi et, rhoncus
|
|
602
|
-
lacinia mauris. Sed vel rutrum mauris, ac pellentesque nibh.
|
|
603
|
-
Sed feugiat semper libero, sit amet vehicula orci fermentum
|
|
604
|
-
id. Vivamus imperdiet egestas luctus. Mauris tincidunt
|
|
605
|
-
malesuada ante, faucibus viverra nunc blandit a. Fusce et
|
|
606
|
-
nisl nisi. Aenean dictum quam id mollis faucibus. Nulla a
|
|
607
|
-
ultricies dui. In hac habitasse platea dictumst. Curabitur
|
|
608
|
-
gravida lobortis vestibulum.
|
|
609
|
-
</sp-tooltip>
|
|
610
|
-
</overlay-trigger>
|
|
611
|
-
</overlay-drag>
|
|
612
|
-
`;
|
|
613
|
-
};
|
|
614
|
-
export const longpress = () => {
|
|
824
|
+
export const longpress = () => {
|
|
615
825
|
return html`
|
|
616
826
|
<overlay-trigger placement="right-start">
|
|
617
827
|
<sp-action-button slot="trigger" hold-affordance>
|
|
@@ -641,202 +851,293 @@ export const longpress = () => {
|
|
|
641
851
|
</overlay-trigger>
|
|
642
852
|
`;
|
|
643
853
|
};
|
|
644
|
-
export const
|
|
854
|
+
export const modalLoose = () => {
|
|
855
|
+
const closeEvent = new Event("close", { bubbles: true, composed: true });
|
|
645
856
|
return html`
|
|
646
|
-
<
|
|
647
|
-
|
|
648
|
-
<
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
overlay should close
|
|
672
|
-
</sp-tooltip>
|
|
673
|
-
</overlay-trigger>
|
|
674
|
-
</div>
|
|
857
|
+
<overlay-trigger type="modal">
|
|
858
|
+
<sp-button slot="trigger">Open</sp-button>
|
|
859
|
+
<sp-dialog
|
|
860
|
+
size="s"
|
|
861
|
+
dismissable
|
|
862
|
+
slot="click-content"
|
|
863
|
+
@closed=${(event) => event.target.dispatchEvent(closeEvent)}
|
|
864
|
+
>
|
|
865
|
+
<h2 slot="heading">Loose Dialog</h2>
|
|
866
|
+
<p>
|
|
867
|
+
The
|
|
868
|
+
<code>sp-dialog</code>
|
|
869
|
+
element is not "meant" to be a modal alone. In that way it
|
|
870
|
+
does not manage its own
|
|
871
|
+
<code>open</code>
|
|
872
|
+
attribute or outline when it should have
|
|
873
|
+
<code>pointer-events: auto</code>
|
|
874
|
+
. It's a part of this test suite to prove that content in
|
|
875
|
+
this way can be used in an
|
|
876
|
+
<code>overlay-trigger</code>
|
|
877
|
+
element.
|
|
878
|
+
</p>
|
|
879
|
+
</sp-dialog>
|
|
880
|
+
</overlay-trigger>
|
|
881
|
+
${extraText}
|
|
675
882
|
`;
|
|
676
883
|
};
|
|
677
|
-
|
|
884
|
+
export const modalManaged = () => {
|
|
885
|
+
const closeEvent = new Event("close", { bubbles: true, composed: true });
|
|
886
|
+
return html`
|
|
887
|
+
<overlay-trigger type="modal">
|
|
888
|
+
<sp-button slot="trigger">Open</sp-button>
|
|
889
|
+
<sp-dialog-wrapper
|
|
890
|
+
underlay
|
|
891
|
+
slot="click-content"
|
|
892
|
+
headline="Wrapped Dialog w/ Hero Image"
|
|
893
|
+
confirm-label="Keep Both"
|
|
894
|
+
secondary-label="Replace"
|
|
895
|
+
cancel-label="Cancel"
|
|
896
|
+
footer="Content for footer"
|
|
897
|
+
@confirm=${(event) => {
|
|
898
|
+
event.target.dispatchEvent(closeEvent);
|
|
899
|
+
}}
|
|
900
|
+
@secondary=${(event) => {
|
|
901
|
+
event.target.dispatchEvent(closeEvent);
|
|
902
|
+
}}
|
|
903
|
+
@cancel=${(event) => {
|
|
904
|
+
event.target.dispatchEvent(closeEvent);
|
|
905
|
+
}}
|
|
906
|
+
>
|
|
907
|
+
<p>
|
|
908
|
+
The
|
|
909
|
+
<code>sp-dialog-wrapper</code>
|
|
910
|
+
element has been prepared for use in an
|
|
911
|
+
<code>overlay-trigger</code>
|
|
912
|
+
element by it's combination of modal, underlay, etc. styles
|
|
913
|
+
and features.
|
|
914
|
+
</p>
|
|
915
|
+
</sp-dialog-wrapper>
|
|
916
|
+
</overlay-trigger>
|
|
917
|
+
${extraText}
|
|
918
|
+
`;
|
|
919
|
+
};
|
|
920
|
+
export const modalWithinNonModal = () => {
|
|
921
|
+
return html`
|
|
922
|
+
<overlay-trigger type="inline">
|
|
923
|
+
<sp-button variant="primary" slot="trigger">
|
|
924
|
+
Open inline overlay
|
|
925
|
+
</sp-button>
|
|
926
|
+
<sp-popover slot="click-content">
|
|
927
|
+
<sp-dialog size="s" no-divider>
|
|
928
|
+
<overlay-trigger type="modal">
|
|
929
|
+
<sp-button variant="primary" slot="trigger">
|
|
930
|
+
Open modal overlay
|
|
931
|
+
</sp-button>
|
|
932
|
+
<sp-popover slot="click-content">
|
|
933
|
+
<sp-dialog size="s" no-divider>
|
|
934
|
+
Modal overlay
|
|
935
|
+
</sp-dialog>
|
|
936
|
+
</sp-popover>
|
|
937
|
+
</overlay-trigger>
|
|
938
|
+
</sp-dialog>
|
|
939
|
+
</sp-popover>
|
|
940
|
+
</overlay-trigger>
|
|
941
|
+
`;
|
|
942
|
+
};
|
|
943
|
+
export const noCloseOnResize = (args) => html`
|
|
944
|
+
<style>
|
|
945
|
+
sp-button:hover {
|
|
946
|
+
border: 10px solid;
|
|
947
|
+
width: 100px;
|
|
948
|
+
}
|
|
949
|
+
</style>
|
|
950
|
+
${template({
|
|
951
|
+
...args,
|
|
952
|
+
open: "click"
|
|
953
|
+
})}
|
|
954
|
+
`;
|
|
955
|
+
noCloseOnResize.swc_vrt = {
|
|
678
956
|
skip: true
|
|
679
957
|
};
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
picker.open = true;
|
|
691
|
-
};
|
|
692
|
-
this.handlePickerOpen = async () => {
|
|
693
|
-
const picker = document.querySelector("#test-picker");
|
|
694
|
-
const actions = [nextFrame, picker.updateComplete];
|
|
695
|
-
await Promise.all(actions);
|
|
696
|
-
this.ready(true);
|
|
697
|
-
};
|
|
698
|
-
this.readyPromise = Promise.resolve(false);
|
|
699
|
-
this.readyPromise = new Promise((res) => {
|
|
700
|
-
this.ready = res;
|
|
701
|
-
this.setup();
|
|
702
|
-
});
|
|
703
|
-
}
|
|
704
|
-
async setup() {
|
|
705
|
-
await nextFrame();
|
|
706
|
-
const overlay = document.querySelector(
|
|
707
|
-
`overlay-trigger`
|
|
708
|
-
);
|
|
709
|
-
overlay.addEventListener("sp-opened", this.handleTriggerOpened);
|
|
710
|
-
}
|
|
711
|
-
get updateComplete() {
|
|
712
|
-
return this.readyPromise;
|
|
713
|
-
}
|
|
714
|
-
}
|
|
715
|
-
customElements.define("complex-modal-ready", ComplexModalReady);
|
|
716
|
-
const complexModalDecorator = (story) => {
|
|
958
|
+
export const openClickContent = (args) => template({
|
|
959
|
+
...args,
|
|
960
|
+
open: "click"
|
|
961
|
+
});
|
|
962
|
+
export const openHoverContent = (args) => template({
|
|
963
|
+
...args,
|
|
964
|
+
open: "hover"
|
|
965
|
+
});
|
|
966
|
+
export const replace = () => {
|
|
967
|
+
const closeEvent = new Event("close", { bubbles: true, composed: true });
|
|
717
968
|
return html`
|
|
718
|
-
|
|
719
|
-
|
|
969
|
+
<overlay-trigger type="replace">
|
|
970
|
+
<sp-button slot="trigger">Open</sp-button>
|
|
971
|
+
<sp-popover slot="click-content">
|
|
972
|
+
<sp-button
|
|
973
|
+
@click=${(event) => {
|
|
974
|
+
event.target.dispatchEvent(closeEvent);
|
|
975
|
+
}}
|
|
976
|
+
>
|
|
977
|
+
Close
|
|
978
|
+
</sp-button>
|
|
979
|
+
</sp-popover>
|
|
980
|
+
</overlay-trigger>
|
|
981
|
+
${extraText}
|
|
720
982
|
`;
|
|
721
983
|
};
|
|
722
|
-
export const
|
|
984
|
+
export const sideHoverDraggable = () => {
|
|
723
985
|
return html`
|
|
986
|
+
${storyStyles}
|
|
724
987
|
<style>
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
margin: var(--swc-margin-test);
|
|
728
|
-
}
|
|
729
|
-
sp-story-decorator::part(container) {
|
|
730
|
-
min-height: calc(100vh - (2 * var(--swc-margin-test)));
|
|
731
|
-
padding: 0;
|
|
732
|
-
display: grid;
|
|
733
|
-
place-content: center;
|
|
734
|
-
}
|
|
735
|
-
active-overlay > * {
|
|
736
|
-
--spectrum-global-animation-duration-100: 0ms;
|
|
737
|
-
--spectrum-global-animation-duration-200: 0ms;
|
|
738
|
-
--spectrum-global-animation-duration-300: 0ms;
|
|
739
|
-
--spectrum-global-animation-duration-400: 0ms;
|
|
740
|
-
--spectrum-global-animation-duration-500: 0ms;
|
|
741
|
-
--spectrum-global-animation-duration-600: 0ms;
|
|
742
|
-
--spectrum-global-animation-duration-700: 0ms;
|
|
743
|
-
--spectrum-global-animation-duration-800: 0ms;
|
|
744
|
-
--spectrum-global-animation-duration-900: 0ms;
|
|
745
|
-
--spectrum-global-animation-duration-1000: 0ms;
|
|
746
|
-
--spectrum-global-animation-duration-2000: 0ms;
|
|
747
|
-
--spectrum-global-animation-duration-4000: 0ms;
|
|
748
|
-
--spectrum-animation-duration-0: 0ms;
|
|
749
|
-
--spectrum-animation-duration-100: 0ms;
|
|
750
|
-
--spectrum-animation-duration-200: 0ms;
|
|
751
|
-
--spectrum-animation-duration-300: 0ms;
|
|
752
|
-
--spectrum-animation-duration-400: 0ms;
|
|
753
|
-
--spectrum-animation-duration-500: 0ms;
|
|
754
|
-
--spectrum-animation-duration-600: 0ms;
|
|
755
|
-
--spectrum-animation-duration-700: 0ms;
|
|
756
|
-
--spectrum-animation-duration-800: 0ms;
|
|
757
|
-
--spectrum-animation-duration-900: 0ms;
|
|
758
|
-
--spectrum-animation-duration-1000: 0ms;
|
|
759
|
-
--spectrum-animation-duration-2000: 0ms;
|
|
760
|
-
--spectrum-animation-duration-4000: 0ms;
|
|
761
|
-
--spectrum-coachmark-animation-indicator-ring-duration: 0ms;
|
|
762
|
-
--swc-test-duration: 1ms;
|
|
988
|
+
sp-tooltip {
|
|
989
|
+
transition: none;
|
|
763
990
|
}
|
|
764
991
|
</style>
|
|
765
|
-
<overlay-
|
|
766
|
-
<
|
|
767
|
-
slot="
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
992
|
+
<overlay-drag>
|
|
993
|
+
<overlay-trigger placement="right">
|
|
994
|
+
<overlay-target-icon slot="trigger"></overlay-target-icon>
|
|
995
|
+
<sp-tooltip slot="hover-content" delayed tip="right">
|
|
996
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
|
997
|
+
Vivamus egestas sed enim sed condimentum. Nunc facilisis
|
|
998
|
+
scelerisque massa sed luctus. Orci varius natoque penatibus
|
|
999
|
+
et magnis dis parturient montes, nascetur ridiculus mus.
|
|
1000
|
+
Suspendisse sagittis sodales purus vitae ultricies. Integer
|
|
1001
|
+
at dui sem. Sed quam tortor, ornare in nisi et, rhoncus
|
|
1002
|
+
lacinia mauris. Sed vel rutrum mauris, ac pellentesque nibh.
|
|
1003
|
+
Sed feugiat semper libero, sit amet vehicula orci fermentum
|
|
1004
|
+
id. Vivamus imperdiet egestas luctus. Mauris tincidunt
|
|
1005
|
+
malesuada ante, faucibus viverra nunc blandit a. Fusce et
|
|
1006
|
+
nisl nisi. Aenean dictum quam id mollis faucibus. Nulla a
|
|
1007
|
+
ultricies dui. In hac habitasse platea dictumst. Curabitur
|
|
1008
|
+
gravida lobortis vestibulum.
|
|
1009
|
+
</sp-tooltip>
|
|
1010
|
+
</overlay-trigger>
|
|
1011
|
+
</overlay-drag>
|
|
1012
|
+
`;
|
|
1013
|
+
};
|
|
1014
|
+
export const superComplexModal = () => {
|
|
1015
|
+
return html`
|
|
1016
|
+
<overlay-trigger type="modal">
|
|
1017
|
+
<sp-button slot="trigger" variant="accent">Toggle Dialog</sp-button>
|
|
1018
|
+
<sp-popover slot="click-content">
|
|
1019
|
+
<sp-dialog size="s">
|
|
1020
|
+
<overlay-trigger>
|
|
1021
|
+
<sp-button slot="trigger" variant="primary">
|
|
1022
|
+
Toggle Dialog
|
|
1023
|
+
</sp-button>
|
|
1024
|
+
<sp-popover slot="click-content">
|
|
1025
|
+
<sp-dialog size="s" no-divider>
|
|
1026
|
+
<overlay-trigger type="modal">
|
|
1027
|
+
<sp-button
|
|
1028
|
+
slot="trigger"
|
|
1029
|
+
variant="secondary"
|
|
1030
|
+
>
|
|
1031
|
+
Toggle Dialog
|
|
1032
|
+
</sp-button>
|
|
1033
|
+
<sp-popover slot="click-content">
|
|
1034
|
+
<sp-dialog size="s" no-divider>
|
|
1035
|
+
<p>
|
|
1036
|
+
When you get this deep, this
|
|
1037
|
+
ActiveOverlay should be the only
|
|
1038
|
+
one in [slot="open"].
|
|
1039
|
+
</p>
|
|
1040
|
+
<p>
|
|
1041
|
+
All of the rest of the
|
|
1042
|
+
ActiveOverlay elements should
|
|
1043
|
+
have had their [slot] attribute
|
|
1044
|
+
removed.
|
|
1045
|
+
</p>
|
|
1046
|
+
<p>
|
|
1047
|
+
Closing this ActiveOverlay
|
|
1048
|
+
should replace them...
|
|
1049
|
+
</p>
|
|
1050
|
+
</sp-dialog>
|
|
1051
|
+
</sp-popover>
|
|
1052
|
+
</overlay-trigger>
|
|
1053
|
+
</sp-dialog>
|
|
1054
|
+
</sp-popover>
|
|
1055
|
+
</overlay-trigger>
|
|
1056
|
+
</sp-dialog>
|
|
1057
|
+
</sp-popover>
|
|
789
1058
|
</overlay-trigger>
|
|
790
1059
|
`;
|
|
791
1060
|
};
|
|
792
|
-
|
|
793
|
-
|
|
1061
|
+
export const updated = () => {
|
|
1062
|
+
return html`
|
|
1063
|
+
${storyStyles}
|
|
1064
|
+
<style>
|
|
1065
|
+
sp-tooltip {
|
|
1066
|
+
transition: none;
|
|
1067
|
+
}
|
|
1068
|
+
</style>
|
|
1069
|
+
<overlay-drag>
|
|
1070
|
+
<overlay-trigger class="demo top-left" placement="bottom">
|
|
1071
|
+
<overlay-target-icon
|
|
1072
|
+
slot="trigger"
|
|
1073
|
+
style="translate(400px, 300px)"
|
|
1074
|
+
></overlay-target-icon>
|
|
1075
|
+
<sp-tooltip slot="hover-content" delayed tip="bottom">
|
|
1076
|
+
Click to open popover
|
|
1077
|
+
</sp-tooltip>
|
|
1078
|
+
<sp-popover slot="click-content" position="bottom" tip>
|
|
1079
|
+
<sp-dialog size="s" no-divider>
|
|
1080
|
+
<sp-slider
|
|
1081
|
+
value="5"
|
|
1082
|
+
step="0.5"
|
|
1083
|
+
min="0"
|
|
1084
|
+
max="20"
|
|
1085
|
+
label="Awesomeness"
|
|
1086
|
+
></sp-slider>
|
|
1087
|
+
<div id="styled-div">
|
|
1088
|
+
The background of this div should be blue
|
|
1089
|
+
</div>
|
|
1090
|
+
<overlay-trigger id="inner-trigger" placement="bottom">
|
|
1091
|
+
<sp-button slot="trigger">Press Me</sp-button>
|
|
1092
|
+
<sp-popover
|
|
1093
|
+
slot="click-content"
|
|
1094
|
+
placement="bottom"
|
|
1095
|
+
tip
|
|
1096
|
+
>
|
|
1097
|
+
<sp-dialog size="s" no-divider>
|
|
1098
|
+
Another Popover
|
|
1099
|
+
</sp-dialog>
|
|
1100
|
+
</sp-popover>
|
|
1101
|
+
|
|
1102
|
+
<sp-tooltip
|
|
1103
|
+
slot="hover-content"
|
|
1104
|
+
delayed
|
|
1105
|
+
tip="bottom"
|
|
1106
|
+
>
|
|
1107
|
+
Click to open another popover.
|
|
1108
|
+
</sp-tooltip>
|
|
1109
|
+
</overlay-trigger>
|
|
1110
|
+
</sp-dialog>
|
|
1111
|
+
</sp-popover>
|
|
1112
|
+
</overlay-trigger>
|
|
1113
|
+
</overlay-drag>
|
|
1114
|
+
`;
|
|
1115
|
+
};
|
|
1116
|
+
export const updating = () => {
|
|
1117
|
+
const update = () => {
|
|
1118
|
+
const button = document.querySelector('[slot="trigger"]');
|
|
1119
|
+
button.style.left = `${Math.floor(Math.random() * 200)}px`;
|
|
1120
|
+
button.style.top = `${Math.floor(Math.random() * 200)}px`;
|
|
1121
|
+
button.style.position = "fixed";
|
|
1122
|
+
};
|
|
794
1123
|
return html`
|
|
795
|
-
<overlay-trigger type="
|
|
796
|
-
<sp-button
|
|
1124
|
+
<overlay-trigger type="click">
|
|
1125
|
+
<sp-button variant="primary" slot="trigger">
|
|
1126
|
+
Open inline overlay
|
|
1127
|
+
</sp-button>
|
|
797
1128
|
<sp-popover slot="click-content">
|
|
798
|
-
<sp-dialog size="s">
|
|
799
|
-
<
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
</sp-button>
|
|
803
|
-
<sp-popover slot="click-content">
|
|
804
|
-
<sp-dialog size="s" no-divider>
|
|
805
|
-
<overlay-trigger type="modal">
|
|
806
|
-
<sp-button
|
|
807
|
-
slot="trigger"
|
|
808
|
-
variant="secondary"
|
|
809
|
-
>
|
|
810
|
-
Toggle Dialog
|
|
811
|
-
</sp-button>
|
|
812
|
-
<sp-popover slot="click-content">
|
|
813
|
-
<sp-dialog size="s" no-divider>
|
|
814
|
-
<p>
|
|
815
|
-
When you get this deep, this
|
|
816
|
-
ActiveOverlay should be the only
|
|
817
|
-
one in [slot="open"].
|
|
818
|
-
</p>
|
|
819
|
-
<p>
|
|
820
|
-
All of the rest of the
|
|
821
|
-
ActiveOverlay elements should
|
|
822
|
-
have had their [slot] attribute
|
|
823
|
-
removed.
|
|
824
|
-
</p>
|
|
825
|
-
<p>
|
|
826
|
-
Closing this ActiveOverlay
|
|
827
|
-
should replace them...
|
|
828
|
-
</p>
|
|
829
|
-
</sp-dialog>
|
|
830
|
-
</sp-popover>
|
|
831
|
-
</overlay-trigger>
|
|
832
|
-
</sp-dialog>
|
|
833
|
-
</sp-popover>
|
|
834
|
-
</overlay-trigger>
|
|
1129
|
+
<sp-dialog size="s" no-divider>
|
|
1130
|
+
<sp-button variant="primary" @click=${update}>
|
|
1131
|
+
Update trigger location.
|
|
1132
|
+
</sp-button>
|
|
835
1133
|
</sp-dialog>
|
|
836
1134
|
</sp-popover>
|
|
837
1135
|
</overlay-trigger>
|
|
838
1136
|
`;
|
|
839
1137
|
};
|
|
1138
|
+
updating.swc_vrt = {
|
|
1139
|
+
skip: true
|
|
1140
|
+
};
|
|
840
1141
|
class StartEndContextmenu extends HTMLElement {
|
|
841
1142
|
constructor() {
|
|
842
1143
|
super();
|
|
@@ -858,15 +1159,17 @@ class StartEndContextmenu extends HTMLElement {
|
|
|
858
1159
|
}
|
|
859
1160
|
}
|
|
860
1161
|
customElements.define("start-end-contextmenu", StartEndContextmenu);
|
|
861
|
-
export const
|
|
1162
|
+
export const virtualElementV1 = (args) => {
|
|
862
1163
|
const contextMenuTemplate = (kind = "") => html`
|
|
863
1164
|
<sp-popover
|
|
864
1165
|
style="width:300px;"
|
|
865
1166
|
@click=${(event) => {
|
|
866
1167
|
var _a;
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
1168
|
+
if (event.target.localName === "sp-menu-item") {
|
|
1169
|
+
(_a = event.target) == null ? void 0 : _a.dispatchEvent(
|
|
1170
|
+
new Event("close", { bubbles: true })
|
|
1171
|
+
);
|
|
1172
|
+
}
|
|
870
1173
|
}}
|
|
871
1174
|
>
|
|
872
1175
|
<sp-menu>
|
|
@@ -883,8 +1186,9 @@ export const virtualElement = (args) => {
|
|
|
883
1186
|
</sp-menu>
|
|
884
1187
|
</sp-popover>
|
|
885
1188
|
`;
|
|
886
|
-
const
|
|
1189
|
+
const handleContextmenu = async (event) => {
|
|
887
1190
|
event.preventDefault();
|
|
1191
|
+
event.stopPropagation();
|
|
888
1192
|
const source = event.composedPath()[0];
|
|
889
1193
|
const { id } = source;
|
|
890
1194
|
const trigger = event.target;
|
|
@@ -892,10 +1196,12 @@ export const virtualElement = (args) => {
|
|
|
892
1196
|
const fragment = document.createDocumentFragment();
|
|
893
1197
|
render(contextMenuTemplate(id), fragment);
|
|
894
1198
|
const popover = fragment.querySelector("sp-popover");
|
|
895
|
-
openOverlay(trigger, "
|
|
1199
|
+
openOverlay(trigger, "click", popover, {
|
|
896
1200
|
placement: args.placement,
|
|
897
1201
|
receivesFocus: "auto",
|
|
898
|
-
virtualTrigger
|
|
1202
|
+
virtualTrigger,
|
|
1203
|
+
offset: 0,
|
|
1204
|
+
notImmediatelyClosable: true
|
|
899
1205
|
});
|
|
900
1206
|
};
|
|
901
1207
|
return html`
|
|
@@ -907,241 +1213,79 @@ export const virtualElement = (args) => {
|
|
|
907
1213
|
</style>
|
|
908
1214
|
<start-end-contextmenu
|
|
909
1215
|
class="app-root"
|
|
910
|
-
@contextmenu=${
|
|
1216
|
+
@contextmenu=${{
|
|
1217
|
+
capture: true,
|
|
1218
|
+
handleEvent: handleContextmenu
|
|
1219
|
+
}}
|
|
911
1220
|
></start-end-contextmenu>
|
|
912
1221
|
`;
|
|
913
1222
|
};
|
|
914
|
-
|
|
1223
|
+
virtualElementV1.args = {
|
|
915
1224
|
placement: "right-start"
|
|
916
1225
|
};
|
|
917
|
-
export const
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
1226
|
+
export const virtualElement = (args) => {
|
|
1227
|
+
const contextMenuTemplate = (kind = "") => html`
|
|
1228
|
+
<sp-popover
|
|
1229
|
+
style="width:300px;"
|
|
1230
|
+
@click=${(event) => {
|
|
1231
|
+
var _a;
|
|
1232
|
+
if (event.target.localName === "sp-menu-item") {
|
|
1233
|
+
(_a = event.target) == null ? void 0 : _a.dispatchEvent(
|
|
1234
|
+
new Event("close", { bubbles: true })
|
|
1235
|
+
);
|
|
926
1236
|
}
|
|
927
|
-
|
|
928
|
-
div.textContent = "This div is overlaid";
|
|
929
|
-
div.setAttribute(
|
|
930
|
-
"style",
|
|
931
|
-
`
|
|
932
|
-
background-color: var(--spectrum-global-color-gray-50);
|
|
933
|
-
color: var(--spectrum-global-color-gray-800);
|
|
934
|
-
border: 1px solid;
|
|
935
|
-
padding: 2em;
|
|
936
|
-
`
|
|
937
|
-
);
|
|
938
|
-
closeOverlay = await Overlay.open(target, "click", div, {
|
|
939
|
-
offset: 0,
|
|
940
|
-
placement: "bottom"
|
|
941
|
-
});
|
|
942
|
-
};
|
|
943
|
-
requestAnimationFrame(() => {
|
|
944
|
-
openDetachedOverlayContent({
|
|
945
|
-
target: document.querySelector(
|
|
946
|
-
"#detached-content-trigger"
|
|
947
|
-
)
|
|
948
|
-
});
|
|
949
|
-
});
|
|
950
|
-
return html`
|
|
951
|
-
<sp-action-button
|
|
952
|
-
id="detached-content-trigger"
|
|
953
|
-
@click=${openDetachedOverlayContent}
|
|
954
|
-
@sp-closed=${() => closeOverlay = void 0}
|
|
1237
|
+
}}
|
|
955
1238
|
>
|
|
956
|
-
<sp-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
1239
|
+
<sp-menu>
|
|
1240
|
+
<sp-menu-group>
|
|
1241
|
+
<span slot="header">Menu source: ${kind}</span>
|
|
1242
|
+
<sp-menu-item>Deselect</sp-menu-item>
|
|
1243
|
+
<sp-menu-item>Select inverse</sp-menu-item>
|
|
1244
|
+
<sp-menu-item>Feather...</sp-menu-item>
|
|
1245
|
+
<sp-menu-item>Select and mask...</sp-menu-item>
|
|
1246
|
+
<sp-menu-divider></sp-menu-divider>
|
|
1247
|
+
<sp-menu-item>Save selection</sp-menu-item>
|
|
1248
|
+
<sp-menu-item disabled>Make work path</sp-menu-item>
|
|
1249
|
+
</sp-menu-group>
|
|
1250
|
+
</sp-menu>
|
|
1251
|
+
</sp-popover>
|
|
961
1252
|
`;
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
};
|
|
979
|
-
this.readyPromise = Promise.resolve(false);
|
|
980
|
-
this.readyPromise = new Promise((res) => {
|
|
981
|
-
this.ready = res;
|
|
982
|
-
this.setup();
|
|
1253
|
+
const handleContextmenu = async (event) => {
|
|
1254
|
+
event.preventDefault();
|
|
1255
|
+
event.stopPropagation();
|
|
1256
|
+
const source = event.composedPath()[0];
|
|
1257
|
+
const { id } = source;
|
|
1258
|
+
const trigger = event.target;
|
|
1259
|
+
const virtualTrigger = new VirtualTrigger(event.clientX, event.clientY);
|
|
1260
|
+
const fragment = document.createDocumentFragment();
|
|
1261
|
+
render(contextMenuTemplate(id), fragment);
|
|
1262
|
+
const popover = fragment.querySelector("sp-popover");
|
|
1263
|
+
const overlay = await openOverlay(popover, {
|
|
1264
|
+
trigger: virtualTrigger,
|
|
1265
|
+
placement: args.placement,
|
|
1266
|
+
offset: 0,
|
|
1267
|
+
notImmediatelyClosable: true,
|
|
1268
|
+
type: "auto"
|
|
983
1269
|
});
|
|
984
|
-
|
|
985
|
-
async setup() {
|
|
986
|
-
await nextFrame();
|
|
987
|
-
const overlay = document.querySelector(
|
|
988
|
-
`overlay-trigger`
|
|
989
|
-
);
|
|
990
|
-
const button = document.querySelector(
|
|
991
|
-
`[slot="trigger"]`
|
|
992
|
-
);
|
|
993
|
-
overlay.addEventListener("sp-opened", this.handleTriggerOpened);
|
|
994
|
-
button.click();
|
|
995
|
-
}
|
|
996
|
-
get updateComplete() {
|
|
997
|
-
return this.readyPromise;
|
|
998
|
-
}
|
|
999
|
-
}
|
|
1000
|
-
customElements.define("defined-overlay-ready", DefinedOverlayReady);
|
|
1001
|
-
const definedOverlayDecorator = (story) => {
|
|
1002
|
-
return html`
|
|
1003
|
-
${story()}
|
|
1004
|
-
<defined-overlay-ready></defined-overlay-ready>
|
|
1005
|
-
`;
|
|
1006
|
-
};
|
|
1007
|
-
export const definedOverlayElement = () => {
|
|
1008
|
-
return html`
|
|
1009
|
-
<overlay-trigger placement="bottom" type="modal">
|
|
1010
|
-
<sp-button variant="primary" slot="trigger">Open popover</sp-button>
|
|
1011
|
-
<sp-popover slot="click-content" direction="bottom">
|
|
1012
|
-
<sp-dialog no-divider>
|
|
1013
|
-
<popover-content></popover-content>
|
|
1014
|
-
</sp-dialog>
|
|
1015
|
-
</sp-popover>
|
|
1016
|
-
</overlay-trigger>
|
|
1017
|
-
`;
|
|
1018
|
-
};
|
|
1019
|
-
definedOverlayElement.decorators = [definedOverlayDecorator];
|
|
1020
|
-
export const modalWithinNonModal = () => {
|
|
1021
|
-
return html`
|
|
1022
|
-
<overlay-trigger type="inline">
|
|
1023
|
-
<sp-button variant="primary" slot="trigger">
|
|
1024
|
-
Open inline overlay
|
|
1025
|
-
</sp-button>
|
|
1026
|
-
<sp-popover slot="click-content">
|
|
1027
|
-
<sp-dialog size="s" no-divider>
|
|
1028
|
-
<overlay-trigger type="modal">
|
|
1029
|
-
<sp-button variant="primary" slot="trigger">
|
|
1030
|
-
Open modal overlay
|
|
1031
|
-
</sp-button>
|
|
1032
|
-
<sp-popover slot="click-content">
|
|
1033
|
-
<sp-dialog size="s" no-divider>
|
|
1034
|
-
Modal overlay
|
|
1035
|
-
</sp-dialog>
|
|
1036
|
-
</sp-popover>
|
|
1037
|
-
</overlay-trigger>
|
|
1038
|
-
</sp-dialog>
|
|
1039
|
-
</sp-popover>
|
|
1040
|
-
</overlay-trigger>
|
|
1041
|
-
`;
|
|
1042
|
-
};
|
|
1043
|
-
export const updating = () => {
|
|
1044
|
-
const update = () => {
|
|
1045
|
-
const button = document.querySelector('[slot="trigger"]');
|
|
1046
|
-
button.style.left = `${Math.floor(Math.random() * 200)}px`;
|
|
1047
|
-
button.style.top = `${Math.floor(Math.random() * 200)}px`;
|
|
1048
|
-
button.style.position = "fixed";
|
|
1049
|
-
Overlay.update();
|
|
1050
|
-
};
|
|
1051
|
-
return html`
|
|
1052
|
-
<overlay-trigger type="click">
|
|
1053
|
-
<sp-button variant="primary" slot="trigger">
|
|
1054
|
-
Open inline overlay
|
|
1055
|
-
</sp-button>
|
|
1056
|
-
<sp-popover slot="click-content">
|
|
1057
|
-
<sp-dialog size="s" no-divider>
|
|
1058
|
-
<sp-button variant="primary" @click=${update}>
|
|
1059
|
-
Update trigger location.
|
|
1060
|
-
</sp-button>
|
|
1061
|
-
</sp-dialog>
|
|
1062
|
-
</sp-popover>
|
|
1063
|
-
</overlay-trigger>
|
|
1064
|
-
`;
|
|
1065
|
-
};
|
|
1066
|
-
updating.swc_vrt = {
|
|
1067
|
-
skip: true
|
|
1068
|
-
};
|
|
1069
|
-
export const accordion = () => {
|
|
1070
|
-
const handleToggle = () => {
|
|
1071
|
-
Overlay.update();
|
|
1270
|
+
trigger.insertAdjacentElement("afterend", overlay);
|
|
1072
1271
|
};
|
|
1073
1272
|
return html`
|
|
1074
|
-
<
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
Thing
|
|
1088
|
-
<br />
|
|
1089
|
-
<br />
|
|
1090
|
-
<br />
|
|
1091
|
-
<br />
|
|
1092
|
-
<br />
|
|
1093
|
-
<br />
|
|
1094
|
-
<br />
|
|
1095
|
-
more things
|
|
1096
|
-
</p>
|
|
1097
|
-
</sp-accordion-item>
|
|
1098
|
-
<sp-accordion-item label="Other things">
|
|
1099
|
-
<p>
|
|
1100
|
-
Thing
|
|
1101
|
-
<br />
|
|
1102
|
-
<br />
|
|
1103
|
-
<br />
|
|
1104
|
-
<br />
|
|
1105
|
-
<br />
|
|
1106
|
-
<br />
|
|
1107
|
-
<br />
|
|
1108
|
-
more things
|
|
1109
|
-
</p>
|
|
1110
|
-
</sp-accordion-item>
|
|
1111
|
-
<sp-accordion-item label="More things">
|
|
1112
|
-
<p>
|
|
1113
|
-
Thing
|
|
1114
|
-
<br />
|
|
1115
|
-
<br />
|
|
1116
|
-
<br />
|
|
1117
|
-
<br />
|
|
1118
|
-
<br />
|
|
1119
|
-
<br />
|
|
1120
|
-
<br />
|
|
1121
|
-
more things
|
|
1122
|
-
</p>
|
|
1123
|
-
</sp-accordion-item>
|
|
1124
|
-
<sp-accordion-item label="Additional things">
|
|
1125
|
-
<p>
|
|
1126
|
-
Thing
|
|
1127
|
-
<br />
|
|
1128
|
-
<br />
|
|
1129
|
-
<br />
|
|
1130
|
-
<br />
|
|
1131
|
-
<br />
|
|
1132
|
-
<br />
|
|
1133
|
-
<br />
|
|
1134
|
-
more things
|
|
1135
|
-
</p>
|
|
1136
|
-
</sp-accordion-item>
|
|
1137
|
-
</sp-accordion>
|
|
1138
|
-
</sp-dialog>
|
|
1139
|
-
</sp-popover>
|
|
1140
|
-
</div>
|
|
1141
|
-
</overlay-trigger>
|
|
1273
|
+
<style>
|
|
1274
|
+
.app-root {
|
|
1275
|
+
position: absolute;
|
|
1276
|
+
inset: 0;
|
|
1277
|
+
}
|
|
1278
|
+
</style>
|
|
1279
|
+
<start-end-contextmenu
|
|
1280
|
+
class="app-root"
|
|
1281
|
+
@contextmenu=${{
|
|
1282
|
+
capture: true,
|
|
1283
|
+
handleEvent: handleContextmenu
|
|
1284
|
+
}}
|
|
1285
|
+
></start-end-contextmenu>
|
|
1142
1286
|
`;
|
|
1143
1287
|
};
|
|
1144
|
-
|
|
1145
|
-
|
|
1288
|
+
virtualElement.args = {
|
|
1289
|
+
placement: "right-start"
|
|
1146
1290
|
};
|
|
1147
1291
|
//# sourceMappingURL=overlay.stories.js.map
|