@spectrum-web-components/overlay 0.35.1-rc.41 → 0.36.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 +150 -237
- package/active-overlay.d.ts +6 -0
- package/active-overlay.dev.js +5 -0
- package/{sp-overlay.dev.js.map → active-overlay.dev.js.map} +3 -3
- package/active-overlay.js +2 -0
- package/{sp-overlay.js.map → active-overlay.js.map} +4 -4
- package/custom-elements.json +1215 -0
- package/package.json +22 -49
- package/src/ActiveOverlay.d.ts +84 -0
- package/src/ActiveOverlay.dev.js +517 -0
- package/src/ActiveOverlay.dev.js.map +7 -0
- package/src/ActiveOverlay.js +16 -0
- package/src/ActiveOverlay.js.map +7 -0
- package/src/OverlayTrigger.d.ts +41 -24
- package/src/OverlayTrigger.dev.js +295 -133
- package/src/OverlayTrigger.dev.js.map +3 -3
- package/src/OverlayTrigger.js +22 -52
- package/src/OverlayTrigger.js.map +3 -3
- package/src/VirtualTrigger.dev.js +1 -2
- package/src/VirtualTrigger.dev.js.map +2 -2
- package/src/VirtualTrigger.js +1 -1
- package/src/VirtualTrigger.js.map +2 -2
- package/src/active-overlay.css.dev.js +13 -0
- package/src/active-overlay.css.dev.js.map +7 -0
- package/src/active-overlay.css.js +10 -0
- package/src/active-overlay.css.js.map +7 -0
- package/src/index.d.ts +3 -2
- package/src/index.dev.js +3 -2
- package/src/index.dev.js.map +2 -2
- package/src/index.js +1 -1
- package/src/index.js.map +2 -2
- package/src/loader.d.ts +2 -1
- package/src/loader.dev.js +19 -2
- package/src/loader.dev.js.map +2 -2
- package/src/loader.js +1 -1
- package/src/loader.js.map +3 -3
- package/src/overlay-stack.d.ts +50 -0
- package/src/overlay-stack.dev.js +515 -0
- package/src/overlay-stack.dev.js.map +7 -0
- package/src/overlay-stack.js +34 -0
- package/src/overlay-stack.js.map +7 -0
- 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 +1 -1
- package/src/overlay-trigger.css.js.map +1 -1
- package/src/overlay-types.d.ts +31 -25
- package/src/overlay-types.dev.js +0 -1
- package/src/overlay-types.dev.js.map +3 -3
- package/src/overlay-types.js +1 -1
- package/src/overlay-types.js.map +3 -3
- package/src/overlay-utils.d.ts +3 -0
- package/src/overlay-utils.dev.js +31 -0
- package/src/overlay-utils.dev.js.map +7 -0
- package/src/overlay-utils.js +2 -0
- package/src/overlay-utils.js.map +7 -0
- package/src/overlay.d.ts +59 -0
- package/src/overlay.dev.js +127 -0
- package/src/overlay.dev.js.map +7 -0
- package/src/overlay.js +2 -0
- package/src/overlay.js.map +7 -0
- package/stories/overlay-story-components.js +8 -9
- package/stories/overlay-story-components.js.map +2 -2
- package/stories/overlay.stories.js +697 -825
- package/stories/overlay.stories.js.map +2 -2
- package/sync/overlay-trigger.d.ts +0 -4
- package/sync/overlay-trigger.dev.js +4 -1
- package/sync/overlay-trigger.dev.js.map +2 -2
- package/sync/overlay-trigger.js +1 -1
- package/sync/overlay-trigger.js.map +3 -3
- package/test/benchmark/basic-test.js +1 -1
- package/test/benchmark/basic-test.js.map +1 -1
- package/test/index.js +377 -408
- package/test/index.js.map +3 -3
- package/test/overlay-lifecycle.test.js +106 -34
- package/test/overlay-lifecycle.test.js.map +2 -2
- package/test/overlay-trigger-click.test.js +5 -11
- package/test/overlay-trigger-click.test.js.map +2 -2
- package/test/overlay-trigger-extended.test.js +36 -42
- package/test/overlay-trigger-extended.test.js.map +2 -2
- package/test/overlay-trigger-hover-click.test.js +24 -27
- package/test/overlay-trigger-hover-click.test.js.map +2 -2
- package/test/overlay-trigger-hover.test.js +35 -41
- package/test/overlay-trigger-hover.test.js.map +2 -2
- package/test/overlay-trigger-longpress.test.js +81 -206
- package/test/overlay-trigger-longpress.test.js.map +2 -2
- package/test/overlay-trigger-sync.test.js +1 -1
- package/test/overlay-trigger-sync.test.js.map +2 -2
- package/test/overlay-trigger.test.js +1 -1
- package/test/overlay-trigger.test.js.map +2 -2
- package/test/overlay-update.test.js +4 -4
- package/test/overlay-update.test.js.map +2 -2
- package/test/overlay.test.js +268 -386
- package/test/overlay.test.js.map +3 -3
- package/sp-overlay.d.ts +0 -6
- package/sp-overlay.dev.js +0 -5
- package/sp-overlay.js +0 -2
- package/src/AbstractOverlay.d.ts +0 -56
- package/src/AbstractOverlay.dev.js +0 -202
- package/src/AbstractOverlay.dev.js.map +0 -7
- package/src/AbstractOverlay.js +0 -2
- package/src/AbstractOverlay.js.map +0 -7
- package/src/Overlay.d.ts +0 -147
- package/src/Overlay.dev.js +0 -777
- package/src/Overlay.dev.js.map +0 -7
- package/src/Overlay.js +0 -33
- package/src/Overlay.js.map +0 -7
- package/src/OverlayDialog.d.ts +0 -4
- package/src/OverlayDialog.dev.js +0 -135
- package/src/OverlayDialog.dev.js.map +0 -7
- package/src/OverlayDialog.js +0 -2
- package/src/OverlayDialog.js.map +0 -7
- package/src/OverlayNoPopover.d.ts +0 -4
- package/src/OverlayNoPopover.dev.js +0 -110
- 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 -4
- package/src/OverlayPopover.dev.js +0 -169
- 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 -43
- package/src/OverlayStack.dev.js +0 -150
- 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 -38
- package/src/PlacementController.dev.js +0 -199
- 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.css.dev.js +0 -9
- package/src/overlay.css.dev.js.map +0 -7
- package/src/overlay.css.js +0 -6
- package/src/overlay.css.js.map +0 -7
- package/src/topLayerOverTransforms.d.ts +0 -2
- package/src/topLayerOverTransforms.dev.js +0 -90
- 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 -366
- 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 -681
- package/test/overlay-element.test.js.map +0 -7
- package/test/overlay-v1.test.js +0 -651
- package/test/overlay-v1.test.js.map +0 -7
- /package/src/{overlay.css.d.ts → active-overlay.css.d.ts} +0 -0
|
@@ -9,17 +9,14 @@ 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";
|
|
13
12
|
import "@spectrum-web-components/dialog/sp-dialog-wrapper.js";
|
|
14
13
|
import "@spectrum-web-components/field-label/sp-field-label.js";
|
|
15
14
|
import "@spectrum-web-components/icons-workflow/icons/sp-icon-magnify.js";
|
|
16
15
|
import "@spectrum-web-components/icons-workflow/icons/sp-icon-open-in.js";
|
|
17
16
|
import "@spectrum-web-components/overlay/overlay-trigger.js";
|
|
18
17
|
import "@spectrum-web-components/picker/sp-picker.js";
|
|
19
|
-
import "@spectrum-web-components/overlay/sp-overlay.js";
|
|
20
18
|
import "@spectrum-web-components/menu/sp-menu.js";
|
|
21
19
|
import "@spectrum-web-components/menu/sp-menu-item.js";
|
|
22
|
-
import "@spectrum-web-components/menu/sp-menu-group.js";
|
|
23
20
|
import "@spectrum-web-components/menu/sp-menu-divider.js";
|
|
24
21
|
import "@spectrum-web-components/popover/sp-popover.js";
|
|
25
22
|
import "@spectrum-web-components/slider/sp-slider.js";
|
|
@@ -131,33 +128,33 @@ const template = ({
|
|
|
131
128
|
type=${ifDefined(type)}
|
|
132
129
|
>
|
|
133
130
|
<sp-button variant="primary" slot="trigger">Show Popover</sp-button>
|
|
134
|
-
<sp-popover
|
|
135
|
-
slot="click-content"
|
|
136
|
-
placement="${placement}"
|
|
137
|
-
tip
|
|
138
|
-
>
|
|
131
|
+
<sp-popover slot="click-content" placement="${placement}" tip>
|
|
139
132
|
<sp-dialog no-divider>
|
|
140
|
-
<
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
<
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
133
|
+
<div class="options-popover-content">
|
|
134
|
+
<sp-slider
|
|
135
|
+
value="5"
|
|
136
|
+
step="0.5"
|
|
137
|
+
min="0"
|
|
138
|
+
max="20"
|
|
139
|
+
label="Awesomeness"
|
|
140
|
+
></sp-slider>
|
|
141
|
+
<div id="styled-div">
|
|
142
|
+
The background of this div should be blue
|
|
143
|
+
</div>
|
|
144
|
+
<overlay-trigger id="inner-trigger" placement="bottom">
|
|
145
|
+
<sp-button slot="trigger">Press Me</sp-button>
|
|
146
|
+
<sp-popover
|
|
147
|
+
slot="click-content"
|
|
148
|
+
placement="bottom"
|
|
149
|
+
tip
|
|
150
|
+
open
|
|
151
|
+
>
|
|
152
|
+
<sp-dialog size="s" no-divider>
|
|
153
|
+
<div class="options-popover-content">
|
|
154
|
+
Another Popover
|
|
155
|
+
</div>
|
|
156
|
+
</sp-dialog>
|
|
157
|
+
</sp-popover>
|
|
161
158
|
|
|
162
159
|
<sp-tooltip
|
|
163
160
|
slot="hover-content"
|
|
@@ -180,148 +177,18 @@ const template = ({
|
|
|
180
177
|
</overlay-trigger>
|
|
181
178
|
`;
|
|
182
179
|
};
|
|
183
|
-
const extraText = html`
|
|
184
|
-
<p>This is some text.</p>
|
|
185
|
-
<p>This is some text.</p>
|
|
186
|
-
<p>
|
|
187
|
-
This is a
|
|
188
|
-
<a href="#anchor">link</a>
|
|
189
|
-
.
|
|
190
|
-
</p>
|
|
191
|
-
`;
|
|
192
|
-
function nextFrame() {
|
|
193
|
-
return new Promise((res) => requestAnimationFrame(() => res()));
|
|
194
|
-
}
|
|
195
180
|
export const Default = (args) => template(args);
|
|
196
|
-
export const
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
style="overflow-y: scroll;position: static;"
|
|
205
|
-
>
|
|
206
|
-
<sp-dialog size="s" no-divider>
|
|
207
|
-
<sp-accordion allow-multiple>
|
|
208
|
-
<sp-accordion-item label="Some things">
|
|
209
|
-
<p>
|
|
210
|
-
Thing
|
|
211
|
-
<br />
|
|
212
|
-
<br />
|
|
213
|
-
<br />
|
|
214
|
-
<br />
|
|
215
|
-
<br />
|
|
216
|
-
<br />
|
|
217
|
-
<br />
|
|
218
|
-
more things
|
|
219
|
-
</p>
|
|
220
|
-
</sp-accordion-item>
|
|
221
|
-
<sp-accordion-item label="Other things">
|
|
222
|
-
<p>
|
|
223
|
-
Thing
|
|
224
|
-
<br />
|
|
225
|
-
<br />
|
|
226
|
-
<br />
|
|
227
|
-
<br />
|
|
228
|
-
<br />
|
|
229
|
-
<br />
|
|
230
|
-
<br />
|
|
231
|
-
more things
|
|
232
|
-
</p>
|
|
233
|
-
</sp-accordion-item>
|
|
234
|
-
<sp-accordion-item label="More things">
|
|
235
|
-
<p>
|
|
236
|
-
Thing
|
|
237
|
-
<br />
|
|
238
|
-
<br />
|
|
239
|
-
<br />
|
|
240
|
-
<br />
|
|
241
|
-
<br />
|
|
242
|
-
<br />
|
|
243
|
-
<br />
|
|
244
|
-
more things
|
|
245
|
-
</p>
|
|
246
|
-
</sp-accordion-item>
|
|
247
|
-
<sp-accordion-item label="Additional things">
|
|
248
|
-
<p>
|
|
249
|
-
Thing
|
|
250
|
-
<br />
|
|
251
|
-
<br />
|
|
252
|
-
<br />
|
|
253
|
-
<br />
|
|
254
|
-
<br />
|
|
255
|
-
<br />
|
|
256
|
-
<br />
|
|
257
|
-
more things
|
|
258
|
-
</p>
|
|
259
|
-
</sp-accordion-item>
|
|
260
|
-
</sp-accordion>
|
|
261
|
-
</sp-dialog>
|
|
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
|
-
};
|
|
181
|
+
export const openHoverContent = (args) => template({
|
|
182
|
+
...args,
|
|
183
|
+
open: "hover"
|
|
184
|
+
});
|
|
185
|
+
export const openClickContent = (args) => template({
|
|
186
|
+
...args,
|
|
187
|
+
open: "click"
|
|
188
|
+
});
|
|
305
189
|
class ScrollForcer extends HTMLElement {
|
|
306
190
|
constructor() {
|
|
307
191
|
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
192
|
this.readyPromise = Promise.resolve(false);
|
|
326
193
|
this.readyPromise = new Promise((res) => {
|
|
327
194
|
this.ready = res;
|
|
@@ -329,16 +196,28 @@ class ScrollForcer extends HTMLElement {
|
|
|
329
196
|
this.setup();
|
|
330
197
|
}
|
|
331
198
|
async setup() {
|
|
332
|
-
var _a
|
|
199
|
+
var _a;
|
|
333
200
|
await nextFrame();
|
|
334
201
|
await nextFrame();
|
|
335
202
|
(_a = this.previousElementSibling) == null ? void 0 : _a.addEventListener(
|
|
336
203
|
"sp-opened",
|
|
337
|
-
|
|
204
|
+
() => {
|
|
205
|
+
this.doScroll();
|
|
206
|
+
},
|
|
207
|
+
{ once: true }
|
|
338
208
|
);
|
|
209
|
+
}
|
|
210
|
+
async doScroll() {
|
|
211
|
+
await nextFrame();
|
|
339
212
|
await nextFrame();
|
|
340
213
|
await nextFrame();
|
|
341
|
-
(
|
|
214
|
+
await nextFrame();
|
|
215
|
+
if (document.scrollingElement) {
|
|
216
|
+
document.scrollingElement.scrollTop = 100;
|
|
217
|
+
}
|
|
218
|
+
await nextFrame();
|
|
219
|
+
await nextFrame();
|
|
220
|
+
this.ready(true);
|
|
342
221
|
}
|
|
343
222
|
get updateComplete() {
|
|
344
223
|
return this.readyPromise;
|
|
@@ -348,7 +227,8 @@ customElements.define("scroll-forcer", ScrollForcer);
|
|
|
348
227
|
export const clickContentClosedOnScroll = (args) => html`
|
|
349
228
|
<div style="margin: 50vh 0 100vh;">
|
|
350
229
|
${template({
|
|
351
|
-
...args
|
|
230
|
+
...args,
|
|
231
|
+
open: "click"
|
|
352
232
|
})}
|
|
353
233
|
</div>
|
|
354
234
|
`;
|
|
@@ -367,145 +247,94 @@ clickContentClosedOnScroll.decorators = [
|
|
|
367
247
|
<scroll-forcer></scroll-forcer>
|
|
368
248
|
`
|
|
369
249
|
];
|
|
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" 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
|
-
`;
|
|
250
|
+
export const noCloseOnResize = (args) => html`
|
|
251
|
+
<style>
|
|
252
|
+
sp-button:hover {
|
|
253
|
+
border: 10px solid;
|
|
254
|
+
width: 100px;
|
|
255
|
+
}
|
|
256
|
+
</style>
|
|
257
|
+
${template({
|
|
258
|
+
...args,
|
|
259
|
+
open: "click"
|
|
260
|
+
})}
|
|
261
|
+
`;
|
|
262
|
+
noCloseOnResize.swc_vrt = {
|
|
263
|
+
skip: true
|
|
478
264
|
};
|
|
479
|
-
complexModal.decorators = [complexModalDecorator];
|
|
480
265
|
export const customizedClickContent = (args) => html`
|
|
481
266
|
<style>
|
|
482
|
-
overlay
|
|
483
|
-
--styled-div-background-color: var(
|
|
484
|
-
|
|
485
|
-
);
|
|
486
|
-
--spectrum-button-m-accent-fill-texticon-background-color: rebeccapurple;
|
|
267
|
+
active-overlay::part(theme) {
|
|
268
|
+
--styled-div-background-color: var(--spectrum-semantic-cta-background-color-default);
|
|
269
|
+
--spectrum-button-m-cta-texticon-background-color: rebeccapurple;
|
|
487
270
|
}
|
|
488
271
|
</style>
|
|
272
|
+
</style>
|
|
489
273
|
${template({
|
|
490
274
|
...args,
|
|
491
275
|
open: "click"
|
|
492
276
|
})}
|
|
493
277
|
`;
|
|
494
|
-
|
|
495
|
-
<
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
<
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
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
|
+
export const deep = () => html`
|
|
324
|
+
<overlay-trigger>
|
|
325
|
+
<sp-button variant="primary" slot="trigger">
|
|
326
|
+
Open popover 1 with buttons + selfmanaged Tooltips
|
|
327
|
+
</sp-button>
|
|
328
|
+
<sp-popover slot="click-content" direction="bottom" tip open>
|
|
329
|
+
<sp-dialog size="s" no-divider>
|
|
330
|
+
<sp-action-button>
|
|
331
|
+
<sp-tooltip self-managed placement="bottom" offset="0">
|
|
332
|
+
My Tooltip 1
|
|
333
|
+
</sp-tooltip>
|
|
334
|
+
A
|
|
335
|
+
</sp-action-button>
|
|
336
|
+
<sp-action-button>
|
|
337
|
+
<sp-tooltip self-managed placement="bottom" offset="0">
|
|
509
338
|
My Tooltip 1
|
|
510
339
|
</sp-tooltip>
|
|
511
340
|
B
|
|
@@ -518,7 +347,7 @@ export const deep = () => html`
|
|
|
518
347
|
<sp-button variant="primary" slot="trigger">
|
|
519
348
|
Open popover 2 with buttons without ToolTips
|
|
520
349
|
</sp-button>
|
|
521
|
-
<sp-popover slot="click-content" direction="bottom" tip>
|
|
350
|
+
<sp-popover slot="click-content" direction="bottom" tip open>
|
|
522
351
|
<sp-dialog size="s" no-divider>
|
|
523
352
|
<sp-action-button>X</sp-action-button>
|
|
524
353
|
<sp-action-button>Y</sp-action-button>
|
|
@@ -529,36 +358,72 @@ export const deep = () => html`
|
|
|
529
358
|
deep.swc_vrt = {
|
|
530
359
|
skip: true
|
|
531
360
|
};
|
|
532
|
-
export const
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
<
|
|
536
|
-
<sp-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
</overlay-trigger>
|
|
361
|
+
export const modalLoose = () => {
|
|
362
|
+
const closeEvent = new Event("close", { bubbles: true, composed: true });
|
|
363
|
+
return html`
|
|
364
|
+
<overlay-trigger type="modal" placement="none">
|
|
365
|
+
<sp-button slot="trigger">Open</sp-button>
|
|
366
|
+
<sp-dialog
|
|
367
|
+
size="s"
|
|
368
|
+
dismissable
|
|
369
|
+
slot="click-content"
|
|
370
|
+
@closed=${(event) => event.target.dispatchEvent(closeEvent)}
|
|
371
|
+
>
|
|
372
|
+
<h2 slot="heading">Loose Dialog</h2>
|
|
373
|
+
<p>
|
|
374
|
+
The
|
|
375
|
+
<code>sp-dialog</code>
|
|
376
|
+
element is not "meant" to be a modal alone. In that way it
|
|
377
|
+
does not manage its own
|
|
378
|
+
<code>open</code>
|
|
379
|
+
attribute or outline when it should have
|
|
380
|
+
<code>pointer-events: auto</code>
|
|
381
|
+
. It's a part of this test suite to prove that content in
|
|
382
|
+
this way can be used in an
|
|
383
|
+
<code>overlay-trigger</code>
|
|
384
|
+
element.
|
|
385
|
+
</p>
|
|
558
386
|
</sp-dialog>
|
|
559
|
-
</
|
|
560
|
-
|
|
561
|
-
`;
|
|
387
|
+
</overlay-trigger>
|
|
388
|
+
${extraText}
|
|
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
|
+
};
|
|
562
427
|
export const deepNesting = () => {
|
|
563
428
|
const color = window.__swc_hack_knobs__.defaultColor;
|
|
564
429
|
const outter = color === "light" ? "dark" : "light";
|
|
@@ -588,140 +453,6 @@ export const deepNesting = () => {
|
|
|
588
453
|
</sp-theme>
|
|
589
454
|
`;
|
|
590
455
|
};
|
|
591
|
-
class DefinedOverlayReady extends HTMLElement {
|
|
592
|
-
constructor() {
|
|
593
|
-
super(...arguments);
|
|
594
|
-
this.handleTriggerOpened = async () => {
|
|
595
|
-
this.overlay.removeEventListener("sp-opened", this.handleTriggerOpened);
|
|
596
|
-
await nextFrame();
|
|
597
|
-
await nextFrame();
|
|
598
|
-
await nextFrame();
|
|
599
|
-
await nextFrame();
|
|
600
|
-
this.popover = document.querySelector(
|
|
601
|
-
"popover-content"
|
|
602
|
-
);
|
|
603
|
-
if (!this.popover) {
|
|
604
|
-
return;
|
|
605
|
-
}
|
|
606
|
-
this.popover.addEventListener("sp-opened", this.handlePopoverOpen);
|
|
607
|
-
await nextFrame();
|
|
608
|
-
await nextFrame();
|
|
609
|
-
this.popover.button.click();
|
|
610
|
-
};
|
|
611
|
-
this.handlePopoverOpen = async () => {
|
|
612
|
-
await nextFrame();
|
|
613
|
-
this.ready(true);
|
|
614
|
-
};
|
|
615
|
-
this.readyPromise = Promise.resolve(false);
|
|
616
|
-
}
|
|
617
|
-
connectedCallback() {
|
|
618
|
-
if (!!this.ready)
|
|
619
|
-
return;
|
|
620
|
-
this.readyPromise = new Promise((res) => {
|
|
621
|
-
this.ready = res;
|
|
622
|
-
this.setup();
|
|
623
|
-
});
|
|
624
|
-
}
|
|
625
|
-
async setup() {
|
|
626
|
-
await nextFrame();
|
|
627
|
-
await nextFrame();
|
|
628
|
-
this.overlay = document.querySelector(
|
|
629
|
-
`overlay-trigger`
|
|
630
|
-
);
|
|
631
|
-
const button = document.querySelector(
|
|
632
|
-
`[slot="trigger"]`
|
|
633
|
-
);
|
|
634
|
-
this.overlay.addEventListener("sp-opened", this.handleTriggerOpened);
|
|
635
|
-
await nextFrame();
|
|
636
|
-
await nextFrame();
|
|
637
|
-
button.click();
|
|
638
|
-
}
|
|
639
|
-
disconnectedCallback() {
|
|
640
|
-
this.overlay.removeEventListener("sp-opened", this.handleTriggerOpened);
|
|
641
|
-
this.popover.removeEventListener("sp-opened", this.handlePopoverOpen);
|
|
642
|
-
}
|
|
643
|
-
get updateComplete() {
|
|
644
|
-
return this.readyPromise;
|
|
645
|
-
}
|
|
646
|
-
}
|
|
647
|
-
customElements.define("defined-overlay-ready", DefinedOverlayReady);
|
|
648
|
-
const definedOverlayDecorator = (story) => {
|
|
649
|
-
return html`
|
|
650
|
-
${story()}
|
|
651
|
-
<defined-overlay-ready></defined-overlay-ready>
|
|
652
|
-
`;
|
|
653
|
-
};
|
|
654
|
-
export const definedOverlayElement = () => {
|
|
655
|
-
return html`
|
|
656
|
-
<overlay-trigger placement="bottom" type="modal">
|
|
657
|
-
<sp-button variant="primary" slot="trigger">Open popover</sp-button>
|
|
658
|
-
<sp-popover slot="click-content" direction="bottom">
|
|
659
|
-
<sp-dialog no-divider>
|
|
660
|
-
<popover-content></popover-content>
|
|
661
|
-
</sp-dialog>
|
|
662
|
-
</sp-popover>
|
|
663
|
-
</overlay-trigger>
|
|
664
|
-
`;
|
|
665
|
-
};
|
|
666
|
-
definedOverlayElement.decorators = [definedOverlayDecorator];
|
|
667
|
-
export const detachedElement = () => {
|
|
668
|
-
let overlay;
|
|
669
|
-
const openDetachedOverlayContent = async ({
|
|
670
|
-
target
|
|
671
|
-
}) => {
|
|
672
|
-
if (overlay) {
|
|
673
|
-
overlay.open = false;
|
|
674
|
-
overlay = void 0;
|
|
675
|
-
return;
|
|
676
|
-
}
|
|
677
|
-
const div = document.createElement("div");
|
|
678
|
-
div.open = false;
|
|
679
|
-
div.textContent = "This div is overlaid";
|
|
680
|
-
div.setAttribute(
|
|
681
|
-
"style",
|
|
682
|
-
`
|
|
683
|
-
background-color: var(--spectrum-global-color-gray-50);
|
|
684
|
-
color: var(--spectrum-global-color-gray-800);
|
|
685
|
-
border: 1px solid;
|
|
686
|
-
padding: 2em;
|
|
687
|
-
`
|
|
688
|
-
);
|
|
689
|
-
overlay = await Overlay.open(div, {
|
|
690
|
-
type: "auto",
|
|
691
|
-
trigger: target,
|
|
692
|
-
receivesFocus: "auto",
|
|
693
|
-
placement: "bottom",
|
|
694
|
-
offset: 0
|
|
695
|
-
});
|
|
696
|
-
overlay.addEventListener("sp-closed", () => {
|
|
697
|
-
overlay = void 0;
|
|
698
|
-
});
|
|
699
|
-
target.insertAdjacentElement("afterend", overlay);
|
|
700
|
-
};
|
|
701
|
-
requestAnimationFrame(() => {
|
|
702
|
-
openDetachedOverlayContent({
|
|
703
|
-
target: document.querySelector(
|
|
704
|
-
"#detached-content-trigger"
|
|
705
|
-
)
|
|
706
|
-
});
|
|
707
|
-
});
|
|
708
|
-
return html`
|
|
709
|
-
<style>
|
|
710
|
-
sp-overlay div:not([placement]) {
|
|
711
|
-
visibility: hidden;
|
|
712
|
-
}
|
|
713
|
-
</style>
|
|
714
|
-
<sp-action-button
|
|
715
|
-
id="detached-content-trigger"
|
|
716
|
-
@click=${openDetachedOverlayContent}
|
|
717
|
-
>
|
|
718
|
-
<sp-icon-open-in
|
|
719
|
-
slot="icon"
|
|
720
|
-
label="Open in overlay"
|
|
721
|
-
></sp-icon-open-in>
|
|
722
|
-
</sp-action-button>
|
|
723
|
-
`;
|
|
724
|
-
};
|
|
725
456
|
export const edges = () => {
|
|
726
457
|
return html`
|
|
727
458
|
<style>
|
|
@@ -751,7 +482,7 @@ export const edges = () => {
|
|
|
751
482
|
<br />
|
|
752
483
|
Left
|
|
753
484
|
</sp-button>
|
|
754
|
-
<sp-tooltip slot="hover-content" delayed tip="bottom">
|
|
485
|
+
<sp-tooltip slot="hover-content" delayed open tip="bottom">
|
|
755
486
|
Triskaidekaphobia and More
|
|
756
487
|
</sp-tooltip>
|
|
757
488
|
</overlay-trigger>
|
|
@@ -761,7 +492,7 @@ export const edges = () => {
|
|
|
761
492
|
<br />
|
|
762
493
|
Right
|
|
763
494
|
</sp-button>
|
|
764
|
-
<sp-tooltip slot="hover-content" delayed tip="bottom">
|
|
495
|
+
<sp-tooltip slot="hover-content" delayed open tip="bottom">
|
|
765
496
|
Triskaidekaphobia and More
|
|
766
497
|
</sp-tooltip>
|
|
767
498
|
</overlay-trigger>
|
|
@@ -771,7 +502,7 @@ export const edges = () => {
|
|
|
771
502
|
<br />
|
|
772
503
|
Left
|
|
773
504
|
</sp-button>
|
|
774
|
-
<sp-tooltip slot="hover-content" delayed tip="top">
|
|
505
|
+
<sp-tooltip slot="hover-content" delayed open tip="top">
|
|
775
506
|
Triskaidekaphobia and More
|
|
776
507
|
</sp-tooltip>
|
|
777
508
|
</overlay-trigger>
|
|
@@ -781,188 +512,73 @@ export const edges = () => {
|
|
|
781
512
|
<br />
|
|
782
513
|
Right
|
|
783
514
|
</sp-button>
|
|
784
|
-
<sp-tooltip slot="hover-content" delayed tip="top">
|
|
515
|
+
<sp-tooltip slot="hover-content" delayed open tip="top">
|
|
785
516
|
Triskaidekaphobia and More
|
|
786
517
|
</sp-tooltip>
|
|
787
518
|
</overlay-trigger>
|
|
788
519
|
`;
|
|
789
520
|
};
|
|
790
|
-
export const
|
|
791
|
-
const closeEvent = new Event("close", { bubbles: true, composed: true });
|
|
792
|
-
return html`
|
|
793
|
-
<overlay-trigger type="inline">
|
|
794
|
-
<sp-button slot="trigger">Open</sp-button>
|
|
795
|
-
<sp-popover slot="click-content">
|
|
796
|
-
<sp-button
|
|
797
|
-
@click=${(event) => {
|
|
798
|
-
event.target.dispatchEvent(closeEvent);
|
|
799
|
-
}}
|
|
800
|
-
>
|
|
801
|
-
Close
|
|
802
|
-
</sp-button>
|
|
803
|
-
</sp-popover>
|
|
804
|
-
</overlay-trigger>
|
|
805
|
-
${extraText}
|
|
806
|
-
`;
|
|
807
|
-
};
|
|
808
|
-
export const longpress = () => {
|
|
521
|
+
export const updated = () => {
|
|
809
522
|
return html`
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
const closeEvent = new Event("close", { bubbles: true, composed: true });
|
|
870
|
-
return html`
|
|
871
|
-
<overlay-trigger type="modal">
|
|
872
|
-
<sp-button slot="trigger">Open</sp-button>
|
|
873
|
-
<sp-dialog-wrapper
|
|
874
|
-
underlay
|
|
875
|
-
slot="click-content"
|
|
876
|
-
headline="Wrapped Dialog w/ Hero Image"
|
|
877
|
-
confirm-label="Keep Both"
|
|
878
|
-
secondary-label="Replace"
|
|
879
|
-
cancel-label="Cancel"
|
|
880
|
-
footer="Content for footer"
|
|
881
|
-
@confirm=${(event) => {
|
|
882
|
-
event.target.dispatchEvent(closeEvent);
|
|
883
|
-
}}
|
|
884
|
-
@secondary=${(event) => {
|
|
885
|
-
event.target.dispatchEvent(closeEvent);
|
|
886
|
-
}}
|
|
887
|
-
@cancel=${(event) => {
|
|
888
|
-
event.target.dispatchEvent(closeEvent);
|
|
889
|
-
}}
|
|
890
|
-
>
|
|
891
|
-
<p>
|
|
892
|
-
The
|
|
893
|
-
<code>sp-dialog-wrapper</code>
|
|
894
|
-
element has been prepared for use in an
|
|
895
|
-
<code>overlay-trigger</code>
|
|
896
|
-
element by it's combination of modal, underlay, etc. styles
|
|
897
|
-
and features.
|
|
898
|
-
</p>
|
|
899
|
-
</sp-dialog-wrapper>
|
|
900
|
-
</overlay-trigger>
|
|
901
|
-
${extraText}
|
|
902
|
-
`;
|
|
903
|
-
};
|
|
904
|
-
export const modalWithinNonModal = () => {
|
|
905
|
-
return html`
|
|
906
|
-
<overlay-trigger type="inline">
|
|
907
|
-
<sp-button variant="primary" slot="trigger">
|
|
908
|
-
Open inline overlay
|
|
909
|
-
</sp-button>
|
|
910
|
-
<sp-popover slot="click-content">
|
|
911
|
-
<sp-dialog size="s" no-divider>
|
|
912
|
-
<overlay-trigger type="modal">
|
|
913
|
-
<sp-button variant="primary" slot="trigger">
|
|
914
|
-
Open modal overlay
|
|
915
|
-
</sp-button>
|
|
916
|
-
<sp-popover slot="click-content">
|
|
917
|
-
<sp-dialog size="s" no-divider>
|
|
918
|
-
Modal overlay
|
|
919
|
-
</sp-dialog>
|
|
920
|
-
</sp-popover>
|
|
921
|
-
</overlay-trigger>
|
|
922
|
-
</sp-dialog>
|
|
923
|
-
</sp-popover>
|
|
924
|
-
</overlay-trigger>
|
|
925
|
-
`;
|
|
926
|
-
};
|
|
927
|
-
export const noCloseOnResize = (args) => html`
|
|
928
|
-
<style>
|
|
929
|
-
sp-button:hover {
|
|
930
|
-
border: 10px solid;
|
|
931
|
-
width: 100px;
|
|
932
|
-
}
|
|
933
|
-
</style>
|
|
934
|
-
${template({
|
|
935
|
-
...args,
|
|
936
|
-
open: "click"
|
|
937
|
-
})}
|
|
938
|
-
`;
|
|
939
|
-
noCloseOnResize.swc_vrt = {
|
|
940
|
-
skip: true
|
|
941
|
-
};
|
|
942
|
-
export const openClickContent = (args) => template({
|
|
943
|
-
...args,
|
|
944
|
-
open: "click"
|
|
945
|
-
});
|
|
946
|
-
export const openHoverContent = (args) => template({
|
|
947
|
-
...args,
|
|
948
|
-
open: "hover"
|
|
949
|
-
});
|
|
950
|
-
export const replace = () => {
|
|
951
|
-
const closeEvent = new Event("close", { bubbles: true, composed: true });
|
|
952
|
-
return html`
|
|
953
|
-
<overlay-trigger type="replace">
|
|
954
|
-
<sp-button slot="trigger">Open</sp-button>
|
|
955
|
-
<sp-popover slot="click-content">
|
|
956
|
-
<sp-button
|
|
957
|
-
@click=${(event) => {
|
|
958
|
-
event.target.dispatchEvent(closeEvent);
|
|
959
|
-
}}
|
|
960
|
-
>
|
|
961
|
-
Close
|
|
962
|
-
</sp-button>
|
|
963
|
-
</sp-popover>
|
|
964
|
-
</overlay-trigger>
|
|
965
|
-
${extraText}
|
|
523
|
+
${storyStyles}
|
|
524
|
+
<style>
|
|
525
|
+
sp-tooltip {
|
|
526
|
+
transition: none;
|
|
527
|
+
}
|
|
528
|
+
</style>
|
|
529
|
+
<overlay-drag>
|
|
530
|
+
<overlay-trigger class="demo top-left" placement="bottom">
|
|
531
|
+
<overlay-target-icon
|
|
532
|
+
slot="trigger"
|
|
533
|
+
style="translate(400px, 300px)"
|
|
534
|
+
></overlay-target-icon>
|
|
535
|
+
<sp-tooltip slot="hover-content" delayed tip="bottom">
|
|
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>
|
|
966
582
|
`;
|
|
967
583
|
};
|
|
968
584
|
export const sideHoverDraggable = () => {
|
|
@@ -995,133 +611,232 @@ export const sideHoverDraggable = () => {
|
|
|
995
611
|
</overlay-drag>
|
|
996
612
|
`;
|
|
997
613
|
};
|
|
998
|
-
export const
|
|
614
|
+
export const longpress = () => {
|
|
999
615
|
return html`
|
|
1000
|
-
<overlay-trigger
|
|
1001
|
-
<sp-button slot="trigger"
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
<p>
|
|
1025
|
-
All of the rest of the
|
|
1026
|
-
ActiveOverlay elements should
|
|
1027
|
-
have had their [slot] attribute
|
|
1028
|
-
removed.
|
|
1029
|
-
</p>
|
|
1030
|
-
<p>
|
|
1031
|
-
Closing this ActiveOverlay
|
|
1032
|
-
should replace them...
|
|
1033
|
-
</p>
|
|
1034
|
-
</sp-dialog>
|
|
1035
|
-
</sp-popover>
|
|
1036
|
-
</overlay-trigger>
|
|
1037
|
-
</sp-dialog>
|
|
1038
|
-
</sp-popover>
|
|
1039
|
-
</overlay-trigger>
|
|
1040
|
-
</sp-dialog>
|
|
616
|
+
<overlay-trigger placement="right-start">
|
|
617
|
+
<sp-action-button slot="trigger" hold-affordance>
|
|
618
|
+
<sp-icon-magnify slot="icon"></sp-icon-magnify>
|
|
619
|
+
</sp-action-button>
|
|
620
|
+
<sp-tooltip slot="hover-content">Search real hard...</sp-tooltip>
|
|
621
|
+
<sp-popover slot="longpress-content" tip>
|
|
622
|
+
<sp-action-group
|
|
623
|
+
@change=${(event) => event.target.dispatchEvent(
|
|
624
|
+
new Event("close", { bubbles: true })
|
|
625
|
+
)}
|
|
626
|
+
selects="single"
|
|
627
|
+
vertical
|
|
628
|
+
style="margin: calc(var(--spectrum-actiongroup-button-gap-y,var(--spectrum-global-dimension-size-100)) / 2);"
|
|
629
|
+
>
|
|
630
|
+
<sp-action-button>
|
|
631
|
+
<sp-icon-magnify slot="icon"></sp-icon-magnify>
|
|
632
|
+
</sp-action-button>
|
|
633
|
+
<sp-action-button>
|
|
634
|
+
<sp-icon-magnify slot="icon"></sp-icon-magnify>
|
|
635
|
+
</sp-action-button>
|
|
636
|
+
<sp-action-button>
|
|
637
|
+
<sp-icon-magnify slot="icon"></sp-icon-magnify>
|
|
638
|
+
</sp-action-button>
|
|
639
|
+
</sp-action-group>
|
|
1041
640
|
</sp-popover>
|
|
1042
641
|
</overlay-trigger>
|
|
1043
642
|
`;
|
|
1044
643
|
};
|
|
1045
|
-
export const
|
|
644
|
+
export const clickAndHoverTargets = () => {
|
|
645
|
+
return html`
|
|
646
|
+
<div>
|
|
647
|
+
${storyStyles}
|
|
648
|
+
<style>
|
|
649
|
+
.friendly-target {
|
|
650
|
+
padding: 4px;
|
|
651
|
+
margin: 6px;
|
|
652
|
+
border: 2px solid black;
|
|
653
|
+
border-radius: 6px;
|
|
654
|
+
cursor: default;
|
|
655
|
+
}
|
|
656
|
+
</style>
|
|
657
|
+
<overlay-trigger placement="right">
|
|
658
|
+
<div class="friendly-target" slot="trigger" tabindex="0">
|
|
659
|
+
Click me
|
|
660
|
+
</div>
|
|
661
|
+
<sp-tooltip slot="click-content" tip="right">
|
|
662
|
+
Ok, now hover the other trigger
|
|
663
|
+
</sp-tooltip>
|
|
664
|
+
</overlay-trigger>
|
|
665
|
+
<overlay-trigger placement="left">
|
|
666
|
+
<div class="friendly-target" slot="trigger" tabindex="0">
|
|
667
|
+
Then hover me
|
|
668
|
+
</div>
|
|
669
|
+
<sp-tooltip slot="hover-content" tip="right">
|
|
670
|
+
Now click my trigger -- I should stay open, but the other
|
|
671
|
+
overlay should close
|
|
672
|
+
</sp-tooltip>
|
|
673
|
+
</overlay-trigger>
|
|
674
|
+
</div>
|
|
675
|
+
`;
|
|
676
|
+
};
|
|
677
|
+
clickAndHoverTargets.swc_vrt = {
|
|
678
|
+
skip: true
|
|
679
|
+
};
|
|
680
|
+
function nextFrame() {
|
|
681
|
+
return new Promise((res) => requestAnimationFrame(() => res()));
|
|
682
|
+
}
|
|
683
|
+
class ComplexModalReady extends HTMLElement {
|
|
684
|
+
constructor() {
|
|
685
|
+
super();
|
|
686
|
+
this.handleTriggerOpened = async () => {
|
|
687
|
+
await nextFrame();
|
|
688
|
+
const picker = document.querySelector("#test-picker");
|
|
689
|
+
picker.addEventListener("sp-opened", this.handlePickerOpen);
|
|
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) => {
|
|
717
|
+
return html`
|
|
718
|
+
${story()}
|
|
719
|
+
<complex-modal-ready></complex-modal-ready>
|
|
720
|
+
`;
|
|
721
|
+
};
|
|
722
|
+
export const complexModal = () => {
|
|
1046
723
|
return html`
|
|
1047
|
-
${storyStyles}
|
|
1048
724
|
<style>
|
|
1049
|
-
|
|
1050
|
-
|
|
725
|
+
body {
|
|
726
|
+
--swc-margin-test: 10px;
|
|
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;
|
|
1051
763
|
}
|
|
1052
764
|
</style>
|
|
1053
|
-
<overlay-
|
|
1054
|
-
<
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
placement="bottom"
|
|
1079
|
-
tip
|
|
1080
|
-
>
|
|
1081
|
-
<sp-dialog size="s" no-divider>
|
|
1082
|
-
Another Popover
|
|
1083
|
-
</sp-dialog>
|
|
1084
|
-
</sp-popover>
|
|
1085
|
-
|
|
1086
|
-
<sp-tooltip
|
|
1087
|
-
slot="hover-content"
|
|
1088
|
-
delayed
|
|
1089
|
-
tip="bottom"
|
|
1090
|
-
>
|
|
1091
|
-
Click to open another popover.
|
|
1092
|
-
</sp-tooltip>
|
|
1093
|
-
</overlay-trigger>
|
|
1094
|
-
</sp-dialog>
|
|
1095
|
-
</sp-popover>
|
|
1096
|
-
</overlay-trigger>
|
|
1097
|
-
</overlay-drag>
|
|
765
|
+
<overlay-trigger type="modal" placement="none" open="click">
|
|
766
|
+
<sp-dialog-wrapper
|
|
767
|
+
slot="click-content"
|
|
768
|
+
headline="Dialog title"
|
|
769
|
+
dismissable
|
|
770
|
+
underlay
|
|
771
|
+
footer="Content for footer"
|
|
772
|
+
>
|
|
773
|
+
<sp-field-label for="test-picker">
|
|
774
|
+
Selection type:
|
|
775
|
+
</sp-field-label>
|
|
776
|
+
<sp-picker id="test-picker">
|
|
777
|
+
<sp-menu-item>Deselect</sp-menu-item>
|
|
778
|
+
<sp-menu-item>Select inverse</sp-menu-item>
|
|
779
|
+
<sp-menu-item>Feather...</sp-menu-item>
|
|
780
|
+
<sp-menu-item>Select and mask...</sp-menu-item>
|
|
781
|
+
<sp-menu-divider></sp-menu-divider>
|
|
782
|
+
<sp-menu-item>Save selection</sp-menu-item>
|
|
783
|
+
<sp-menu-item disabled>Make work path</sp-menu-item>
|
|
784
|
+
</sp-picker>
|
|
785
|
+
</sp-dialog-wrapper>
|
|
786
|
+
<sp-button slot="trigger" variant="primary">
|
|
787
|
+
Toggle Dialog
|
|
788
|
+
</sp-button>
|
|
789
|
+
</overlay-trigger>
|
|
1098
790
|
`;
|
|
1099
791
|
};
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
const button = document.querySelector('[slot="trigger"]');
|
|
1103
|
-
button.style.left = `${Math.floor(Math.random() * 200)}px`;
|
|
1104
|
-
button.style.top = `${Math.floor(Math.random() * 200)}px`;
|
|
1105
|
-
button.style.position = "fixed";
|
|
1106
|
-
};
|
|
792
|
+
complexModal.decorators = [complexModalDecorator];
|
|
793
|
+
export const superComplexModal = () => {
|
|
1107
794
|
return html`
|
|
1108
|
-
<overlay-trigger type="
|
|
1109
|
-
<sp-button
|
|
1110
|
-
Open inline overlay
|
|
1111
|
-
</sp-button>
|
|
795
|
+
<overlay-trigger type="modal" placement="none">
|
|
796
|
+
<sp-button slot="trigger" variant="accent">Toggle Dialog</sp-button>
|
|
1112
797
|
<sp-popover slot="click-content">
|
|
1113
|
-
<sp-dialog size="s"
|
|
1114
|
-
<
|
|
1115
|
-
|
|
1116
|
-
|
|
798
|
+
<sp-dialog size="s">
|
|
799
|
+
<overlay-trigger>
|
|
800
|
+
<sp-button slot="trigger" variant="primary">
|
|
801
|
+
Toggle Dialog
|
|
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>
|
|
1117
835
|
</sp-dialog>
|
|
1118
836
|
</sp-popover>
|
|
1119
837
|
</overlay-trigger>
|
|
1120
838
|
`;
|
|
1121
839
|
};
|
|
1122
|
-
updating.swc_vrt = {
|
|
1123
|
-
skip: true
|
|
1124
|
-
};
|
|
1125
840
|
class StartEndContextmenu extends HTMLElement {
|
|
1126
841
|
constructor() {
|
|
1127
842
|
super();
|
|
@@ -1143,17 +858,15 @@ class StartEndContextmenu extends HTMLElement {
|
|
|
1143
858
|
}
|
|
1144
859
|
}
|
|
1145
860
|
customElements.define("start-end-contextmenu", StartEndContextmenu);
|
|
1146
|
-
export const
|
|
861
|
+
export const virtualElement = (args) => {
|
|
1147
862
|
const contextMenuTemplate = (kind = "") => html`
|
|
1148
863
|
<sp-popover
|
|
1149
864
|
style="width:300px;"
|
|
1150
865
|
@click=${(event) => {
|
|
1151
866
|
var _a;
|
|
1152
|
-
|
|
1153
|
-
(
|
|
1154
|
-
|
|
1155
|
-
);
|
|
1156
|
-
}
|
|
867
|
+
return (_a = event.target) == null ? void 0 : _a.dispatchEvent(
|
|
868
|
+
new Event("close", { bubbles: true })
|
|
869
|
+
);
|
|
1157
870
|
}}
|
|
1158
871
|
>
|
|
1159
872
|
<sp-menu>
|
|
@@ -1170,9 +883,8 @@ export const virtualElementV1 = (args) => {
|
|
|
1170
883
|
</sp-menu>
|
|
1171
884
|
</sp-popover>
|
|
1172
885
|
`;
|
|
1173
|
-
const
|
|
886
|
+
const pointerenter = async (event) => {
|
|
1174
887
|
event.preventDefault();
|
|
1175
|
-
event.stopPropagation();
|
|
1176
888
|
const source = event.composedPath()[0];
|
|
1177
889
|
const { id } = source;
|
|
1178
890
|
const trigger = event.target;
|
|
@@ -1180,12 +892,10 @@ export const virtualElementV1 = (args) => {
|
|
|
1180
892
|
const fragment = document.createDocumentFragment();
|
|
1181
893
|
render(contextMenuTemplate(id), fragment);
|
|
1182
894
|
const popover = fragment.querySelector("sp-popover");
|
|
1183
|
-
openOverlay(trigger, "
|
|
895
|
+
openOverlay(trigger, "modal", popover, {
|
|
1184
896
|
placement: args.placement,
|
|
1185
897
|
receivesFocus: "auto",
|
|
1186
|
-
virtualTrigger
|
|
1187
|
-
offset: 0,
|
|
1188
|
-
notImmediatelyClosable: true
|
|
898
|
+
virtualTrigger
|
|
1189
899
|
});
|
|
1190
900
|
};
|
|
1191
901
|
return html`
|
|
@@ -1197,79 +907,241 @@ export const virtualElementV1 = (args) => {
|
|
|
1197
907
|
</style>
|
|
1198
908
|
<start-end-contextmenu
|
|
1199
909
|
class="app-root"
|
|
1200
|
-
@contextmenu=${
|
|
1201
|
-
capture: true,
|
|
1202
|
-
handleEvent: handleContextmenu
|
|
1203
|
-
}}
|
|
910
|
+
@contextmenu=${pointerenter}
|
|
1204
911
|
></start-end-contextmenu>
|
|
1205
912
|
`;
|
|
1206
913
|
};
|
|
1207
|
-
|
|
914
|
+
virtualElement.args = {
|
|
1208
915
|
placement: "right-start"
|
|
1209
916
|
};
|
|
1210
|
-
export const
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
);
|
|
917
|
+
export const detachedElement = () => {
|
|
918
|
+
let closeOverlay;
|
|
919
|
+
const openDetachedOverlayContent = async ({
|
|
920
|
+
target
|
|
921
|
+
}) => {
|
|
922
|
+
if (closeOverlay) {
|
|
923
|
+
closeOverlay();
|
|
924
|
+
closeOverlay = void 0;
|
|
925
|
+
return;
|
|
1220
926
|
}
|
|
1221
|
-
|
|
927
|
+
const div = document.createElement("div");
|
|
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}
|
|
1222
955
|
>
|
|
1223
|
-
<sp-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
<sp-menu-item>Feather...</sp-menu-item>
|
|
1229
|
-
<sp-menu-item>Select and mask...</sp-menu-item>
|
|
1230
|
-
<sp-menu-divider></sp-menu-divider>
|
|
1231
|
-
<sp-menu-item>Save selection</sp-menu-item>
|
|
1232
|
-
<sp-menu-item disabled>Make work path</sp-menu-item>
|
|
1233
|
-
</sp-menu-group>
|
|
1234
|
-
</sp-menu>
|
|
1235
|
-
</sp-popover>
|
|
956
|
+
<sp-icon-open-in
|
|
957
|
+
slot="icon"
|
|
958
|
+
label="Open in overlay"
|
|
959
|
+
></sp-icon-open-in>
|
|
960
|
+
</sp-action-button>
|
|
1236
961
|
`;
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
962
|
+
};
|
|
963
|
+
class DefinedOverlayReady extends HTMLElement {
|
|
964
|
+
constructor() {
|
|
965
|
+
super();
|
|
966
|
+
this.handleTriggerOpened = async () => {
|
|
967
|
+
await nextFrame();
|
|
968
|
+
const popover = document.querySelector("popover-content");
|
|
969
|
+
if (!popover) {
|
|
970
|
+
return;
|
|
971
|
+
}
|
|
972
|
+
popover.addEventListener("sp-opened", this.handlePopoverOpen);
|
|
973
|
+
popover.button.click();
|
|
974
|
+
};
|
|
975
|
+
this.handlePopoverOpen = async () => {
|
|
976
|
+
await nextFrame();
|
|
977
|
+
this.ready(true);
|
|
978
|
+
};
|
|
979
|
+
this.readyPromise = Promise.resolve(false);
|
|
980
|
+
this.readyPromise = new Promise((res) => {
|
|
981
|
+
this.ready = res;
|
|
982
|
+
this.setup();
|
|
1253
983
|
});
|
|
1254
|
-
|
|
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();
|
|
1255
1050
|
};
|
|
1256
1051
|
return html`
|
|
1257
|
-
<
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
></start-end-contextmenu>
|
|
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>
|
|
1270
1064
|
`;
|
|
1271
1065
|
};
|
|
1272
|
-
|
|
1273
|
-
|
|
1066
|
+
updating.swc_vrt = {
|
|
1067
|
+
skip: true
|
|
1068
|
+
};
|
|
1069
|
+
export const accordion = () => {
|
|
1070
|
+
const handleToggle = () => {
|
|
1071
|
+
Overlay.update();
|
|
1072
|
+
};
|
|
1073
|
+
return html`
|
|
1074
|
+
<overlay-trigger type="modal" placement="right">
|
|
1075
|
+
<sp-button variant="primary" slot="trigger">
|
|
1076
|
+
Open overlay w/ accordion
|
|
1077
|
+
</sp-button>
|
|
1078
|
+
<div slot="click-content" style="max-height: 100%;display: flex;">
|
|
1079
|
+
<sp-popover open style="overflow-y: scroll;position: static;">
|
|
1080
|
+
<sp-dialog size="s" no-divider>
|
|
1081
|
+
<sp-accordion
|
|
1082
|
+
allow-multiple
|
|
1083
|
+
@sp-accordion-item-toggle=${handleToggle}
|
|
1084
|
+
>
|
|
1085
|
+
<sp-accordion-item label="Some things">
|
|
1086
|
+
<p>
|
|
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>
|
|
1142
|
+
`;
|
|
1143
|
+
};
|
|
1144
|
+
accordion.swc_vrt = {
|
|
1145
|
+
skip: true
|
|
1274
1146
|
};
|
|
1275
1147
|
//# sourceMappingURL=overlay.stories.js.map
|