@spectrum-web-components/overlay 0.34.1-rc.0 → 0.35.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 +152 -227
- 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 +529 -1389
- package/package.json +22 -48
- package/src/ActiveOverlay.d.ts +84 -0
- package/src/ActiveOverlay.dev.js +517 -0
- package/src/ActiveOverlay.dev.js.map +7 -0
- package/src/ActiveOverlay.js +16 -0
- package/src/ActiveOverlay.js.map +7 -0
- package/src/OverlayTrigger.d.ts +31 -23
- package/src/OverlayTrigger.dev.js +245 -135
- package/src/OverlayTrigger.dev.js.map +3 -3
- package/src/OverlayTrigger.js +22 -52
- package/src/OverlayTrigger.js.map +3 -3
- package/src/VirtualTrigger.dev.js +2 -0
- package/src/VirtualTrigger.dev.js.map +2 -2
- package/src/VirtualTrigger.js +1 -1
- package/src/VirtualTrigger.js.map +3 -3
- package/src/active-overlay.css.dev.js +13 -0
- package/src/active-overlay.css.dev.js.map +7 -0
- package/src/active-overlay.css.js +10 -0
- package/src/active-overlay.css.js.map +7 -0
- package/src/index.d.ts +3 -2
- package/src/index.dev.js +3 -2
- package/src/index.dev.js.map +2 -2
- package/src/index.js +1 -1
- package/src/index.js.map +2 -2
- package/src/loader.d.ts +2 -2
- package/src/loader.dev.js +19 -2
- package/src/loader.dev.js.map +2 -2
- package/src/loader.js +1 -1
- package/src/loader.js.map +3 -3
- package/src/overlay-stack.d.ts +50 -0
- package/src/overlay-stack.dev.js +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-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 +5 -7
- 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 +702 -799
- 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 +376 -407
- 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 +6 -1
- package/test/overlay-trigger-extended.test.js.map +2 -2
- package/test/overlay-trigger-hover-click.test.js +23 -23
- package/test/overlay-trigger-hover-click.test.js.map +2 -2
- package/test/overlay-trigger-hover.test.js +34 -40
- package/test/overlay-trigger-hover.test.js.map +2 -2
- package/test/overlay-trigger-longpress.test.js +80 -98
- package/test/overlay-trigger-longpress.test.js.map +2 -2
- package/test/overlay-trigger-sync.test.js +1 -1
- package/test/overlay-trigger-sync.test.js.map +2 -2
- package/test/overlay-trigger.test.js +1 -1
- package/test/overlay-trigger.test.js.map +2 -2
- package/test/overlay-update.test.js +4 -4
- package/test/overlay-update.test.js.map +2 -2
- package/test/{overlay-v1.test.js → overlay.test.js} +249 -267
- package/test/overlay.test.js.map +7 -0
- package/sp-overlay.d.ts +0 -6
- package/sp-overlay.dev.js +0 -5
- package/sp-overlay.js +0 -2
- package/src/Overlay.d.ts +0 -29
- package/src/Overlay.dev.js +0 -91
- package/src/Overlay.dev.js.map +0 -7
- package/src/Overlay.js +0 -2
- package/src/Overlay.js.map +0 -7
- package/src/OverlayBase.d.ts +0 -124
- package/src/OverlayBase.dev.js +0 -744
- package/src/OverlayBase.dev.js.map +0 -7
- package/src/OverlayBase.js +0 -31
- package/src/OverlayBase.js.map +0 -7
- package/src/OverlayDialog.d.ts +0 -8
- package/src/OverlayDialog.dev.js +0 -160
- package/src/OverlayDialog.dev.js.map +0 -7
- package/src/OverlayDialog.js +0 -2
- package/src/OverlayDialog.js.map +0 -7
- package/src/OverlayNoPopover.d.ts +0 -8
- package/src/OverlayNoPopover.dev.js +0 -149
- package/src/OverlayNoPopover.dev.js.map +0 -7
- package/src/OverlayNoPopover.js +0 -2
- package/src/OverlayNoPopover.js.map +0 -7
- package/src/OverlayPopover.d.ts +0 -8
- package/src/OverlayPopover.dev.js +0 -199
- package/src/OverlayPopover.dev.js.map +0 -7
- package/src/OverlayPopover.js +0 -2
- package/src/OverlayPopover.js.map +0 -7
- package/src/OverlayStack.d.ts +0 -29
- package/src/OverlayStack.dev.js +0 -126
- package/src/OverlayStack.dev.js.map +0 -7
- package/src/OverlayStack.js +0 -2
- package/src/OverlayStack.js.map +0 -7
- package/src/PlacementController.d.ts +0 -36
- package/src/PlacementController.dev.js +0 -191
- package/src/PlacementController.dev.js.map +0 -7
- package/src/PlacementController.js +0 -2
- package/src/PlacementController.js.map +0 -7
- package/src/fullSizePlugin.d.ts +0 -12
- package/src/fullSizePlugin.dev.js +0 -39
- package/src/fullSizePlugin.dev.js.map +0 -7
- package/src/fullSizePlugin.js +0 -2
- package/src/fullSizePlugin.js.map +0 -7
- package/src/overlay-base.css.dev.js +0 -9
- package/src/overlay-base.css.dev.js.map +0 -7
- package/src/overlay-base.css.js +0 -6
- package/src/overlay-base.css.js.map +0 -7
- package/src/topLayerOverTransforms.d.ts +0 -23
- package/src/topLayerOverTransforms.dev.js +0 -170
- package/src/topLayerOverTransforms.dev.js.map +0 -7
- package/src/topLayerOverTransforms.js +0 -2
- package/src/topLayerOverTransforms.js.map +0 -7
- package/stories/overlay-element.stories.js +0 -247
- package/stories/overlay-element.stories.js.map +0 -7
- package/test/overlay-element.test-vrt.js +0 -5
- package/test/overlay-element.test-vrt.js.map +0 -7
- package/test/overlay-element.test.js +0 -682
- package/test/overlay-element.test.js.map +0 -7
- package/test/overlay-v1.test.js.map +0 -7
- package/test/overlay-v2.test.js +0 -720
- package/test/overlay-v2.test.js.map +0 -7
- /package/src/{overlay-base.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-divder>
|
|
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();
|
|
212
|
+
await nextFrame();
|
|
213
|
+
await nextFrame();
|
|
214
|
+
await nextFrame();
|
|
215
|
+
if (document.scrollingElement) {
|
|
216
|
+
document.scrollingElement.scrollTop = 100;
|
|
217
|
+
}
|
|
339
218
|
await nextFrame();
|
|
340
219
|
await nextFrame();
|
|
341
|
-
|
|
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,148 +247,97 @@ 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" 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
|
-
`;
|
|
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
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
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">
|
|
338
|
+
My Tooltip 1
|
|
339
|
+
</sp-tooltip>
|
|
340
|
+
B
|
|
512
341
|
</sp-action-button>
|
|
513
342
|
</sp-dialog>
|
|
514
343
|
</sp-popover>
|
|
@@ -518,8 +347,8 @@ 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>
|
|
522
|
-
<sp-dialog size="s" no-
|
|
350
|
+
<sp-popover slot="click-content" direction="bottom" tip open>
|
|
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>
|
|
525
354
|
</sp-dialog>
|
|
@@ -529,6 +358,72 @@ export const deep = () => html`
|
|
|
529
358
|
deep.swc_vrt = {
|
|
530
359
|
skip: true
|
|
531
360
|
};
|
|
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>
|
|
386
|
+
</sp-dialog>
|
|
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
|
+
};
|
|
532
427
|
export const deepNesting = () => {
|
|
533
428
|
const color = window.__swc_hack_knobs__.defaultColor;
|
|
534
429
|
const outter = color === "light" ? "dark" : "light";
|
|
@@ -558,140 +453,6 @@ export const deepNesting = () => {
|
|
|
558
453
|
</sp-theme>
|
|
559
454
|
`;
|
|
560
455
|
};
|
|
561
|
-
class DefinedOverlayReady extends HTMLElement {
|
|
562
|
-
constructor() {
|
|
563
|
-
super(...arguments);
|
|
564
|
-
this.handleTriggerOpened = async () => {
|
|
565
|
-
this.overlay.removeEventListener("sp-opened", this.handleTriggerOpened);
|
|
566
|
-
await nextFrame();
|
|
567
|
-
await nextFrame();
|
|
568
|
-
await nextFrame();
|
|
569
|
-
await nextFrame();
|
|
570
|
-
this.popover = document.querySelector(
|
|
571
|
-
"popover-content"
|
|
572
|
-
);
|
|
573
|
-
if (!this.popover) {
|
|
574
|
-
return;
|
|
575
|
-
}
|
|
576
|
-
this.popover.addEventListener("sp-opened", this.handlePopoverOpen);
|
|
577
|
-
await nextFrame();
|
|
578
|
-
await nextFrame();
|
|
579
|
-
this.popover.button.click();
|
|
580
|
-
};
|
|
581
|
-
this.handlePopoverOpen = async () => {
|
|
582
|
-
await nextFrame();
|
|
583
|
-
this.ready(true);
|
|
584
|
-
};
|
|
585
|
-
this.readyPromise = Promise.resolve(false);
|
|
586
|
-
}
|
|
587
|
-
connectedCallback() {
|
|
588
|
-
if (!!this.ready)
|
|
589
|
-
return;
|
|
590
|
-
this.readyPromise = new Promise((res) => {
|
|
591
|
-
this.ready = res;
|
|
592
|
-
this.setup();
|
|
593
|
-
});
|
|
594
|
-
}
|
|
595
|
-
async setup() {
|
|
596
|
-
await nextFrame();
|
|
597
|
-
await nextFrame();
|
|
598
|
-
this.overlay = document.querySelector(
|
|
599
|
-
`overlay-trigger`
|
|
600
|
-
);
|
|
601
|
-
const button = document.querySelector(
|
|
602
|
-
`[slot="trigger"]`
|
|
603
|
-
);
|
|
604
|
-
this.overlay.addEventListener("sp-opened", this.handleTriggerOpened);
|
|
605
|
-
await nextFrame();
|
|
606
|
-
await nextFrame();
|
|
607
|
-
button.click();
|
|
608
|
-
}
|
|
609
|
-
disconnectedCallback() {
|
|
610
|
-
this.overlay.removeEventListener("sp-opened", this.handleTriggerOpened);
|
|
611
|
-
this.popover.removeEventListener("sp-opened", this.handlePopoverOpen);
|
|
612
|
-
}
|
|
613
|
-
get updateComplete() {
|
|
614
|
-
return this.readyPromise;
|
|
615
|
-
}
|
|
616
|
-
}
|
|
617
|
-
customElements.define("defined-overlay-ready", DefinedOverlayReady);
|
|
618
|
-
const definedOverlayDecorator = (story) => {
|
|
619
|
-
return html`
|
|
620
|
-
${story()}
|
|
621
|
-
<defined-overlay-ready></defined-overlay-ready>
|
|
622
|
-
`;
|
|
623
|
-
};
|
|
624
|
-
export const definedOverlayElement = () => {
|
|
625
|
-
return html`
|
|
626
|
-
<overlay-trigger placement="bottom" type="modal">
|
|
627
|
-
<sp-button variant="primary" slot="trigger">Open popover</sp-button>
|
|
628
|
-
<sp-popover slot="click-content" direction="bottom">
|
|
629
|
-
<sp-dialog no-divder>
|
|
630
|
-
<popover-content></popover-content>
|
|
631
|
-
</sp-dialog>
|
|
632
|
-
</sp-popover>
|
|
633
|
-
</overlay-trigger>
|
|
634
|
-
`;
|
|
635
|
-
};
|
|
636
|
-
definedOverlayElement.decorators = [definedOverlayDecorator];
|
|
637
|
-
export const detachedElement = () => {
|
|
638
|
-
let overlay;
|
|
639
|
-
const openDetachedOverlayContent = async ({
|
|
640
|
-
target
|
|
641
|
-
}) => {
|
|
642
|
-
if (overlay) {
|
|
643
|
-
overlay.open = false;
|
|
644
|
-
overlay = void 0;
|
|
645
|
-
return;
|
|
646
|
-
}
|
|
647
|
-
const div = document.createElement("div");
|
|
648
|
-
div.open = false;
|
|
649
|
-
div.textContent = "This div is overlaid";
|
|
650
|
-
div.setAttribute(
|
|
651
|
-
"style",
|
|
652
|
-
`
|
|
653
|
-
background-color: var(--spectrum-global-color-gray-50);
|
|
654
|
-
color: var(--spectrum-global-color-gray-800);
|
|
655
|
-
border: 1px solid;
|
|
656
|
-
padding: 2em;
|
|
657
|
-
`
|
|
658
|
-
);
|
|
659
|
-
overlay = await Overlay.open(div, {
|
|
660
|
-
type: "auto",
|
|
661
|
-
trigger: target,
|
|
662
|
-
receivesFocus: "auto",
|
|
663
|
-
placement: "bottom",
|
|
664
|
-
offset: 0
|
|
665
|
-
});
|
|
666
|
-
overlay.addEventListener("sp-closed", () => {
|
|
667
|
-
overlay = void 0;
|
|
668
|
-
});
|
|
669
|
-
target.insertAdjacentElement("afterend", overlay);
|
|
670
|
-
};
|
|
671
|
-
requestAnimationFrame(() => {
|
|
672
|
-
openDetachedOverlayContent({
|
|
673
|
-
target: document.querySelector(
|
|
674
|
-
"#detached-content-trigger"
|
|
675
|
-
)
|
|
676
|
-
});
|
|
677
|
-
});
|
|
678
|
-
return html`
|
|
679
|
-
<style>
|
|
680
|
-
sp-overlay div:not([placement]) {
|
|
681
|
-
visibility: hidden;
|
|
682
|
-
}
|
|
683
|
-
</style>
|
|
684
|
-
<sp-action-button
|
|
685
|
-
id="detached-content-trigger"
|
|
686
|
-
@click=${openDetachedOverlayContent}
|
|
687
|
-
>
|
|
688
|
-
<sp-icon-open-in
|
|
689
|
-
slot="icon"
|
|
690
|
-
label="Open in overlay"
|
|
691
|
-
></sp-icon-open-in>
|
|
692
|
-
</sp-action-button>
|
|
693
|
-
`;
|
|
694
|
-
};
|
|
695
456
|
export const edges = () => {
|
|
696
457
|
return html`
|
|
697
458
|
<style>
|
|
@@ -721,7 +482,7 @@ export const edges = () => {
|
|
|
721
482
|
<br />
|
|
722
483
|
Left
|
|
723
484
|
</sp-button>
|
|
724
|
-
<sp-tooltip slot="hover-content" delayed tip="bottom">
|
|
485
|
+
<sp-tooltip slot="hover-content" delayed open tip="bottom">
|
|
725
486
|
Triskaidekaphobia and More
|
|
726
487
|
</sp-tooltip>
|
|
727
488
|
</overlay-trigger>
|
|
@@ -731,7 +492,7 @@ export const edges = () => {
|
|
|
731
492
|
<br />
|
|
732
493
|
Right
|
|
733
494
|
</sp-button>
|
|
734
|
-
<sp-tooltip slot="hover-content" delayed tip="bottom">
|
|
495
|
+
<sp-tooltip slot="hover-content" delayed open tip="bottom">
|
|
735
496
|
Triskaidekaphobia and More
|
|
736
497
|
</sp-tooltip>
|
|
737
498
|
</overlay-trigger>
|
|
@@ -741,7 +502,7 @@ export const edges = () => {
|
|
|
741
502
|
<br />
|
|
742
503
|
Left
|
|
743
504
|
</sp-button>
|
|
744
|
-
<sp-tooltip slot="hover-content" delayed tip="top">
|
|
505
|
+
<sp-tooltip slot="hover-content" delayed open tip="top">
|
|
745
506
|
Triskaidekaphobia and More
|
|
746
507
|
</sp-tooltip>
|
|
747
508
|
</overlay-trigger>
|
|
@@ -751,188 +512,73 @@ export const edges = () => {
|
|
|
751
512
|
<br />
|
|
752
513
|
Right
|
|
753
514
|
</sp-button>
|
|
754
|
-
<sp-tooltip slot="hover-content" delayed tip="top">
|
|
515
|
+
<sp-tooltip slot="hover-content" delayed open tip="top">
|
|
755
516
|
Triskaidekaphobia and More
|
|
756
517
|
</sp-tooltip>
|
|
757
518
|
</overlay-trigger>
|
|
758
519
|
`;
|
|
759
520
|
};
|
|
760
|
-
export const
|
|
761
|
-
const closeEvent = new Event("close", { bubbles: true, composed: true });
|
|
762
|
-
return html`
|
|
763
|
-
<overlay-trigger type="inline">
|
|
764
|
-
<sp-button slot="trigger">Open</sp-button>
|
|
765
|
-
<sp-popover slot="click-content">
|
|
766
|
-
<sp-button
|
|
767
|
-
@click=${(event) => {
|
|
768
|
-
event.target.dispatchEvent(closeEvent);
|
|
769
|
-
}}
|
|
770
|
-
>
|
|
771
|
-
Close
|
|
772
|
-
</sp-button>
|
|
773
|
-
</sp-popover>
|
|
774
|
-
</overlay-trigger>
|
|
775
|
-
${extraText}
|
|
776
|
-
`;
|
|
777
|
-
};
|
|
778
|
-
export const longpress = () => {
|
|
521
|
+
export const updated = () => {
|
|
779
522
|
return html`
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
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
|
-
const closeEvent = new Event("close", { bubbles: true, composed: true });
|
|
840
|
-
return html`
|
|
841
|
-
<overlay-trigger type="modal" placement="none">
|
|
842
|
-
<sp-button slot="trigger">Open</sp-button>
|
|
843
|
-
<sp-dialog-wrapper
|
|
844
|
-
underlay
|
|
845
|
-
slot="click-content"
|
|
846
|
-
headline="Wrapped Dialog w/ Hero Image"
|
|
847
|
-
confirm-label="Keep Both"
|
|
848
|
-
secondary-label="Replace"
|
|
849
|
-
cancel-label="Cancel"
|
|
850
|
-
footer="Content for footer"
|
|
851
|
-
@confirm=${(event) => {
|
|
852
|
-
event.target.dispatchEvent(closeEvent);
|
|
853
|
-
}}
|
|
854
|
-
@secondary=${(event) => {
|
|
855
|
-
event.target.dispatchEvent(closeEvent);
|
|
856
|
-
}}
|
|
857
|
-
@cancel=${(event) => {
|
|
858
|
-
event.target.dispatchEvent(closeEvent);
|
|
859
|
-
}}
|
|
860
|
-
>
|
|
861
|
-
<p>
|
|
862
|
-
The
|
|
863
|
-
<code>sp-dialog-wrapper</code>
|
|
864
|
-
element has been prepared for use in an
|
|
865
|
-
<code>overlay-trigger</code>
|
|
866
|
-
element by it's combination of modal, underlay, etc. styles
|
|
867
|
-
and features.
|
|
868
|
-
</p>
|
|
869
|
-
</sp-dialog-wrapper>
|
|
870
|
-
</overlay-trigger>
|
|
871
|
-
${extraText}
|
|
872
|
-
`;
|
|
873
|
-
};
|
|
874
|
-
export const modalWithinNonModal = () => {
|
|
875
|
-
return html`
|
|
876
|
-
<overlay-trigger type="inline">
|
|
877
|
-
<sp-button variant="primary" slot="trigger">
|
|
878
|
-
Open inline overlay
|
|
879
|
-
</sp-button>
|
|
880
|
-
<sp-popover slot="click-content">
|
|
881
|
-
<sp-dialog size="s" no-divder>
|
|
882
|
-
<overlay-trigger type="modal">
|
|
883
|
-
<sp-button variant="primary" slot="trigger">
|
|
884
|
-
Open modal overlay
|
|
885
|
-
</sp-button>
|
|
886
|
-
<sp-popover slot="click-content">
|
|
887
|
-
<sp-dialog size="s" no-divder>
|
|
888
|
-
Modal overlay
|
|
889
|
-
</sp-dialog>
|
|
890
|
-
</sp-popover>
|
|
891
|
-
</overlay-trigger>
|
|
892
|
-
</sp-dialog>
|
|
893
|
-
</sp-popover>
|
|
894
|
-
</overlay-trigger>
|
|
895
|
-
`;
|
|
896
|
-
};
|
|
897
|
-
export const noCloseOnResize = (args) => html`
|
|
898
|
-
<style>
|
|
899
|
-
sp-button:hover {
|
|
900
|
-
border: 10px solid;
|
|
901
|
-
width: 100px;
|
|
902
|
-
}
|
|
903
|
-
</style>
|
|
904
|
-
${template({
|
|
905
|
-
...args,
|
|
906
|
-
open: "click"
|
|
907
|
-
})}
|
|
908
|
-
`;
|
|
909
|
-
noCloseOnResize.swc_vrt = {
|
|
910
|
-
skip: true
|
|
911
|
-
};
|
|
912
|
-
export const openClickContent = (args) => template({
|
|
913
|
-
...args,
|
|
914
|
-
open: "click"
|
|
915
|
-
});
|
|
916
|
-
export const openHoverContent = (args) => template({
|
|
917
|
-
...args,
|
|
918
|
-
open: "hover"
|
|
919
|
-
});
|
|
920
|
-
export const replace = () => {
|
|
921
|
-
const closeEvent = new Event("close", { bubbles: true, composed: true });
|
|
922
|
-
return html`
|
|
923
|
-
<overlay-trigger type="replace">
|
|
924
|
-
<sp-button slot="trigger">Open</sp-button>
|
|
925
|
-
<sp-popover slot="click-content">
|
|
926
|
-
<sp-button
|
|
927
|
-
@click=${(event) => {
|
|
928
|
-
event.target.dispatchEvent(closeEvent);
|
|
929
|
-
}}
|
|
930
|
-
>
|
|
931
|
-
Close
|
|
932
|
-
</sp-button>
|
|
933
|
-
</sp-popover>
|
|
934
|
-
</overlay-trigger>
|
|
935
|
-
${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>
|
|
936
582
|
`;
|
|
937
583
|
};
|
|
938
584
|
export const sideHoverDraggable = () => {
|
|
@@ -965,133 +611,232 @@ export const sideHoverDraggable = () => {
|
|
|
965
611
|
</overlay-drag>
|
|
966
612
|
`;
|
|
967
613
|
};
|
|
968
|
-
export const
|
|
614
|
+
export const longpress = () => {
|
|
969
615
|
return html`
|
|
970
|
-
<overlay-trigger
|
|
971
|
-
<sp-button slot="trigger"
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
<p>
|
|
995
|
-
All of the rest of the
|
|
996
|
-
ActiveOverlay elements should
|
|
997
|
-
have had their [slot] attribute
|
|
998
|
-
removed.
|
|
999
|
-
</p>
|
|
1000
|
-
<p>
|
|
1001
|
-
Closing this ActiveOverlay
|
|
1002
|
-
should replace them...
|
|
1003
|
-
</p>
|
|
1004
|
-
</sp-dialog>
|
|
1005
|
-
</sp-popover>
|
|
1006
|
-
</overlay-trigger>
|
|
1007
|
-
</sp-dialog>
|
|
1008
|
-
</sp-popover>
|
|
1009
|
-
</overlay-trigger>
|
|
1010
|
-
</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>
|
|
1011
640
|
</sp-popover>
|
|
1012
641
|
</overlay-trigger>
|
|
1013
642
|
`;
|
|
1014
643
|
};
|
|
1015
|
-
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 = () => {
|
|
1016
723
|
return html`
|
|
1017
|
-
${storyStyles}
|
|
1018
724
|
<style>
|
|
1019
|
-
|
|
1020
|
-
|
|
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;
|
|
1021
763
|
}
|
|
1022
764
|
</style>
|
|
1023
|
-
<overlay-
|
|
1024
|
-
<
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
placement="bottom"
|
|
1049
|
-
tip
|
|
1050
|
-
>
|
|
1051
|
-
<sp-dialog size="s" no-divder>
|
|
1052
|
-
Another Popover
|
|
1053
|
-
</sp-dialog>
|
|
1054
|
-
</sp-popover>
|
|
1055
|
-
|
|
1056
|
-
<sp-tooltip
|
|
1057
|
-
slot="hover-content"
|
|
1058
|
-
delayed
|
|
1059
|
-
tip="bottom"
|
|
1060
|
-
>
|
|
1061
|
-
Click to open another popover.
|
|
1062
|
-
</sp-tooltip>
|
|
1063
|
-
</overlay-trigger>
|
|
1064
|
-
</sp-dialog>
|
|
1065
|
-
</sp-popover>
|
|
1066
|
-
</overlay-trigger>
|
|
1067
|
-
</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>
|
|
1068
790
|
`;
|
|
1069
791
|
};
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
const button = document.querySelector('[slot="trigger"]');
|
|
1073
|
-
button.style.left = `${Math.floor(Math.random() * 200)}px`;
|
|
1074
|
-
button.style.top = `${Math.floor(Math.random() * 200)}px`;
|
|
1075
|
-
button.style.position = "fixed";
|
|
1076
|
-
};
|
|
792
|
+
complexModal.decorators = [complexModalDecorator];
|
|
793
|
+
export const superComplexModal = () => {
|
|
1077
794
|
return html`
|
|
1078
|
-
<overlay-trigger type="
|
|
1079
|
-
<sp-button
|
|
1080
|
-
Open inline overlay
|
|
1081
|
-
</sp-button>
|
|
795
|
+
<overlay-trigger type="modal" placement="none">
|
|
796
|
+
<sp-button slot="trigger" variant="accent">Toggle Dialog</sp-button>
|
|
1082
797
|
<sp-popover slot="click-content">
|
|
1083
|
-
<sp-dialog size="s"
|
|
1084
|
-
<
|
|
1085
|
-
|
|
1086
|
-
|
|
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>
|
|
1087
835
|
</sp-dialog>
|
|
1088
836
|
</sp-popover>
|
|
1089
837
|
</overlay-trigger>
|
|
1090
838
|
`;
|
|
1091
839
|
};
|
|
1092
|
-
updating.swc_vrt = {
|
|
1093
|
-
skip: true
|
|
1094
|
-
};
|
|
1095
840
|
class StartEndContextmenu extends HTMLElement {
|
|
1096
841
|
constructor() {
|
|
1097
842
|
super();
|
|
@@ -1113,17 +858,15 @@ class StartEndContextmenu extends HTMLElement {
|
|
|
1113
858
|
}
|
|
1114
859
|
}
|
|
1115
860
|
customElements.define("start-end-contextmenu", StartEndContextmenu);
|
|
1116
|
-
export const
|
|
861
|
+
export const virtualElement = (args) => {
|
|
1117
862
|
const contextMenuTemplate = (kind = "") => html`
|
|
1118
863
|
<sp-popover
|
|
1119
864
|
style="width:300px;"
|
|
1120
865
|
@click=${(event) => {
|
|
1121
866
|
var _a;
|
|
1122
|
-
|
|
1123
|
-
(
|
|
1124
|
-
|
|
1125
|
-
);
|
|
1126
|
-
}
|
|
867
|
+
return (_a = event.target) == null ? void 0 : _a.dispatchEvent(
|
|
868
|
+
new Event("close", { bubbles: true })
|
|
869
|
+
);
|
|
1127
870
|
}}
|
|
1128
871
|
>
|
|
1129
872
|
<sp-menu>
|
|
@@ -1140,9 +883,8 @@ export const virtualElementV1 = (args) => {
|
|
|
1140
883
|
</sp-menu>
|
|
1141
884
|
</sp-popover>
|
|
1142
885
|
`;
|
|
1143
|
-
const
|
|
886
|
+
const pointerenter = async (event) => {
|
|
1144
887
|
event.preventDefault();
|
|
1145
|
-
event.stopPropagation();
|
|
1146
888
|
const source = event.composedPath()[0];
|
|
1147
889
|
const { id } = source;
|
|
1148
890
|
const trigger = event.target;
|
|
@@ -1150,12 +892,10 @@ export const virtualElementV1 = (args) => {
|
|
|
1150
892
|
const fragment = document.createDocumentFragment();
|
|
1151
893
|
render(contextMenuTemplate(id), fragment);
|
|
1152
894
|
const popover = fragment.querySelector("sp-popover");
|
|
1153
|
-
openOverlay(trigger, "
|
|
895
|
+
openOverlay(trigger, "modal", popover, {
|
|
1154
896
|
placement: args.placement,
|
|
1155
897
|
receivesFocus: "auto",
|
|
1156
|
-
virtualTrigger
|
|
1157
|
-
offset: 0,
|
|
1158
|
-
notImmediatelyClosable: true
|
|
898
|
+
virtualTrigger
|
|
1159
899
|
});
|
|
1160
900
|
};
|
|
1161
901
|
return html`
|
|
@@ -1167,78 +907,241 @@ export const virtualElementV1 = (args) => {
|
|
|
1167
907
|
</style>
|
|
1168
908
|
<start-end-contextmenu
|
|
1169
909
|
class="app-root"
|
|
1170
|
-
@contextmenu=${
|
|
1171
|
-
capture: true,
|
|
1172
|
-
handleEvent: handleContextmenu
|
|
1173
|
-
}}
|
|
910
|
+
@contextmenu=${pointerenter}
|
|
1174
911
|
></start-end-contextmenu>
|
|
1175
912
|
`;
|
|
1176
913
|
};
|
|
1177
|
-
|
|
914
|
+
virtualElement.args = {
|
|
1178
915
|
placement: "right-start"
|
|
1179
916
|
};
|
|
1180
|
-
export const
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
);
|
|
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;
|
|
1190
926
|
}
|
|
1191
|
-
|
|
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}
|
|
1192
955
|
>
|
|
1193
|
-
<sp-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
<sp-menu-item>Feather...</sp-menu-item>
|
|
1199
|
-
<sp-menu-item>Select and mask...</sp-menu-item>
|
|
1200
|
-
<sp-menu-divider></sp-menu-divider>
|
|
1201
|
-
<sp-menu-item>Save selection</sp-menu-item>
|
|
1202
|
-
<sp-menu-item disabled>Make work path</sp-menu-item>
|
|
1203
|
-
</sp-menu-group>
|
|
1204
|
-
</sp-menu>
|
|
1205
|
-
</sp-popover>
|
|
956
|
+
<sp-icon-open-in
|
|
957
|
+
slot="icon"
|
|
958
|
+
label="Open in overlay"
|
|
959
|
+
></sp-icon-open-in>
|
|
960
|
+
</sp-action-button>
|
|
1206
961
|
`;
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
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();
|
|
1222
983
|
});
|
|
1223
|
-
|
|
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();
|
|
1224
1050
|
};
|
|
1225
1051
|
return html`
|
|
1226
|
-
<
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
></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>
|
|
1239
1064
|
`;
|
|
1240
1065
|
};
|
|
1241
|
-
|
|
1242
|
-
|
|
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
|
|
1243
1146
|
};
|
|
1244
1147
|
//# sourceMappingURL=overlay.stories.js.map
|