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