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