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