@spectrum-web-components/overlay 0.17.1-devmode2.0 → 0.18.1
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 +3 -0
- package/active-overlay.dev.js +1 -0
- package/active-overlay.dev.js.map +1 -1
- package/active-overlay.js +1 -2
- package/active-overlay.js.map +2 -2
- package/overlay-trigger.dev.js +1 -0
- package/overlay-trigger.dev.js.map +1 -1
- package/overlay-trigger.js +1 -2
- package/overlay-trigger.js.map +2 -2
- package/package.json +6 -6
- package/src/ActiveOverlay.dev.js +57 -23
- package/src/ActiveOverlay.dev.js.map +2 -2
- package/src/ActiveOverlay.js +8 -437
- package/src/ActiveOverlay.js.map +2 -2
- package/src/OverlayTrigger.dev.js +51 -18
- package/src/OverlayTrigger.dev.js.map +1 -1
- package/src/OverlayTrigger.js +2 -265
- package/src/OverlayTrigger.js.map +2 -2
- package/src/VirtualTrigger.dev.js +1 -0
- package/src/VirtualTrigger.dev.js.map +1 -1
- package/src/VirtualTrigger.js +1 -29
- package/src/VirtualTrigger.js.map +2 -2
- package/src/active-overlay.css.dev.js +1 -0
- package/src/active-overlay.css.dev.js.map +1 -1
- package/src/active-overlay.css.js +2 -4
- package/src/active-overlay.css.js.map +2 -2
- package/src/index.dev.js +1 -0
- package/src/index.dev.js.map +1 -1
- package/src/index.js +1 -6
- package/src/index.js.map +1 -1
- package/src/loader.dev.js +1 -0
- package/src/loader.dev.js.map +1 -1
- package/src/loader.js +1 -4
- package/src/loader.js.map +2 -2
- package/src/overlay-events.dev.js +1 -0
- package/src/overlay-events.dev.js.map +1 -1
- package/src/overlay-events.js +1 -6
- package/src/overlay-events.js.map +2 -2
- package/src/overlay-stack.dev.js +95 -44
- package/src/overlay-stack.dev.js.map +3 -3
- package/src/overlay-stack.js +2 -405
- package/src/overlay-stack.js.map +3 -3
- package/src/overlay-timer.dev.js +1 -0
- package/src/overlay-timer.dev.js.map +1 -1
- package/src/overlay-timer.js +1 -70
- package/src/overlay-timer.js.map +2 -2
- package/src/overlay-trigger.css.dev.js +1 -0
- package/src/overlay-trigger.css.dev.js.map +1 -1
- package/src/overlay-trigger.css.js +2 -4
- package/src/overlay-trigger.css.js.map +2 -2
- package/src/overlay-types.dev.js +1 -0
- package/src/overlay-types.js +1 -0
- package/src/overlay-utils.dev.js +4 -1
- package/src/overlay-utils.dev.js.map +1 -1
- package/src/overlay-utils.js +1 -27
- package/src/overlay-utils.js.map +2 -2
- package/src/overlay.dev.js +1 -0
- package/src/overlay.dev.js.map +1 -1
- package/src/overlay.js +1 -84
- package/src/overlay.js.map +2 -2
- package/stories/overlay-story-components.js +17 -5
- package/stories/overlay-story-components.js.map +2 -2
- package/stories/overlay.stories.js +24 -8
- package/stories/overlay.stories.js.map +1 -1
- package/sync/overlay-trigger.dev.js +1 -0
- package/sync/overlay-trigger.dev.js.map +1 -1
- package/sync/overlay-trigger.js +1 -6
- package/sync/overlay-trigger.js.map +2 -2
- package/test/benchmark/basic-test.js +5 -2
- package/test/benchmark/basic-test.js.map +1 -1
- package/test/overlay-lifecycle.test.js +51 -14
- package/test/overlay-lifecycle.test.js.map +1 -1
- package/test/overlay-timer.test.js +1 -0
- package/test/overlay-timer.test.js.map +2 -2
- package/test/overlay-trigger-click.test.js +20 -5
- package/test/overlay-trigger-click.test.js.map +1 -1
- package/test/overlay-trigger-extended.test.js +19 -6
- package/test/overlay-trigger-extended.test.js.map +1 -1
- package/test/overlay-trigger-hover-click.test.js +7 -2
- package/test/overlay-trigger-hover-click.test.js.map +1 -1
- package/test/overlay-trigger-hover.test.js +110 -19
- package/test/overlay-trigger-hover.test.js.map +2 -2
- package/test/overlay-trigger-longpress.test.js +85 -29
- package/test/overlay-trigger-longpress.test.js.map +2 -2
- package/test/overlay-trigger-sync.test.js +183 -56
- package/test/overlay-trigger-sync.test.js.map +2 -2
- package/test/overlay-trigger.test.js +183 -56
- package/test/overlay-trigger.test.js.map +2 -2
- package/test/overlay.test-vrt.js +1 -0
- package/test/overlay.test-vrt.js.map +1 -1
- package/test/overlay.test.js +162 -74
- package/test/overlay.test.js.map +1 -1
package/README.md
CHANGED
|
@@ -84,6 +84,7 @@ type OverlayOptions = {
|
|
|
84
84
|
placement?: Placement;
|
|
85
85
|
offset?: number;
|
|
86
86
|
receivesFocus?: 'auto';
|
|
87
|
+
notImmediatelyClosable?: boolean;
|
|
87
88
|
}
|
|
88
89
|
```
|
|
89
90
|
|
|
@@ -95,6 +96,8 @@ type OverlayOptions = {
|
|
|
95
96
|
|
|
96
97
|
`receivesFocus` tells the overlay stack to throw focus into the overlay after it has opened.
|
|
97
98
|
|
|
99
|
+
`notImmediatelyClosable` prevents immediate clicks from closing the overlay. If you find that a trigger event is immediately overridden with a subsequent click (for instance, a `focus` trigger that should be closed on `click`), set `notImmediatelyClosable: true` to disregard clicks that coincide with the opening trigger.
|
|
100
|
+
|
|
98
101
|
### Events
|
|
99
102
|
|
|
100
103
|
The work to both open and close an overlay is asynchronous. This asynchrony is surfaced into the application via DOM events dispatched from the `trigger` element of your overlay. An `sp-opened` event will be dispatched once the overlay has finished opening, and an `sp-closed` event will be dispatched once the overlay has finished closing. In both cases, the dispatched event will include a `detail` property with an `interaction: TriggerInteractions` key to support associating the event/overlay with its originating `interaction`.
|
package/active-overlay.dev.js
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["active-overlay.ts"],
|
|
4
4
|
"sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\nimport { ActiveOverlay } from './src/ActiveOverlay.dev.js'\n\ncustomElements.define('active-overlay', ActiveOverlay);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'active-overlay': ActiveOverlay;\n }\n}\n"],
|
|
5
|
-
"mappings": "AAWA;
|
|
5
|
+
"mappings": ";AAWA,SAAS,qBAAqB;AAE9B,eAAe,OAAO,kBAAkB,aAAa;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/active-overlay.js
CHANGED
package/active-overlay.js.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["active-overlay.ts"],
|
|
4
4
|
"sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\nimport { ActiveOverlay } from './src/ActiveOverlay.js';\n\ncustomElements.define('active-overlay', ActiveOverlay);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'active-overlay': ActiveOverlay;\n }\n}\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": []
|
|
5
|
+
"mappings": "aAWA,OAAS,iBAAAA,MAAqB,yBAE9B,eAAe,OAAO,iBAAkBA,CAAa",
|
|
6
|
+
"names": ["ActiveOverlay"]
|
|
7
7
|
}
|
package/overlay-trigger.dev.js
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["overlay-trigger.ts"],
|
|
4
4
|
"sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\nimport { OverlayTrigger } from './src/OverlayTrigger.dev.js'\n\ncustomElements.define('overlay-trigger', OverlayTrigger);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'overlay-trigger': OverlayTrigger;\n }\n}\n"],
|
|
5
|
-
"mappings": "AAWA;
|
|
5
|
+
"mappings": ";AAWA,SAAS,sBAAsB;AAE/B,eAAe,OAAO,mBAAmB,cAAc;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/overlay-trigger.js
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
customElements.define("overlay-trigger", OverlayTrigger);
|
|
1
|
+
"use strict";import{OverlayTrigger as e}from"./src/OverlayTrigger.js";customElements.define("overlay-trigger",e);
|
|
3
2
|
//# sourceMappingURL=overlay-trigger.js.map
|
package/overlay-trigger.js.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["overlay-trigger.ts"],
|
|
4
4
|
"sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\nimport { OverlayTrigger } from './src/OverlayTrigger.js';\n\ncustomElements.define('overlay-trigger', OverlayTrigger);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'overlay-trigger': OverlayTrigger;\n }\n}\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": []
|
|
5
|
+
"mappings": "aAWA,OAAS,kBAAAA,MAAsB,0BAE/B,eAAe,OAAO,kBAAmBA,CAAc",
|
|
6
|
+
"names": ["OverlayTrigger"]
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spectrum-web-components/overlay",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.18.1",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -103,10 +103,10 @@
|
|
|
103
103
|
],
|
|
104
104
|
"dependencies": {
|
|
105
105
|
"@floating-ui/dom": "^0.5.2",
|
|
106
|
-
"@spectrum-web-components/action-button": "^0.
|
|
107
|
-
"@spectrum-web-components/base": "^0.
|
|
108
|
-
"@spectrum-web-components/shared": "^0.
|
|
109
|
-
"@spectrum-web-components/theme": "^0.
|
|
106
|
+
"@spectrum-web-components/action-button": "^0.10.1",
|
|
107
|
+
"@spectrum-web-components/base": "^0.7.0",
|
|
108
|
+
"@spectrum-web-components/shared": "^0.15.0",
|
|
109
|
+
"@spectrum-web-components/theme": "^0.14.1",
|
|
110
110
|
"tslib": "^2.0.0"
|
|
111
111
|
},
|
|
112
112
|
"types": "./src/index.d.ts",
|
|
@@ -118,5 +118,5 @@
|
|
|
118
118
|
"./stories/overlay-story-components.js",
|
|
119
119
|
"./**/*.dev.js"
|
|
120
120
|
],
|
|
121
|
-
"gitHead": "
|
|
121
|
+
"gitHead": "1cfea66c39440232b9982509573801b8e3a9f692"
|
|
122
122
|
}
|
package/src/ActiveOverlay.dev.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
var __defProp = Object.defineProperty;
|
|
2
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
4
|
var __decorateClass = (decorators, target, key, kind) => {
|
|
@@ -125,7 +126,10 @@ const _ActiveOverlay = class extends SpectrumElement {
|
|
|
125
126
|
availableHeight,
|
|
126
127
|
rects: { floating }
|
|
127
128
|
}) => {
|
|
128
|
-
const maxHeight = Math.max(
|
|
129
|
+
const maxHeight = Math.max(
|
|
130
|
+
MIN_OVERLAY_HEIGHT,
|
|
131
|
+
Math.floor(availableHeight)
|
|
132
|
+
);
|
|
129
133
|
const actualHeight = floating.height;
|
|
130
134
|
this.initialHeight = !this.isConstrained && !this.virtualTrigger ? actualHeight : this.initialHeight || actualHeight;
|
|
131
135
|
this.isConstrained = actualHeight < this.initialHeight || maxHeight <= actualHeight;
|
|
@@ -141,10 +145,14 @@ const _ActiveOverlay = class extends SpectrumElement {
|
|
|
141
145
|
if (this.overlayContentTip) {
|
|
142
146
|
middleware.push(arrow({ element: this.overlayContentTip }));
|
|
143
147
|
}
|
|
144
|
-
const { x, y, placement, middlewareData } = await computePosition(
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
+
const { x, y, placement, middlewareData } = await computePosition(
|
|
149
|
+
this.virtualTrigger || this.trigger,
|
|
150
|
+
this,
|
|
151
|
+
{
|
|
152
|
+
placement: this.placement,
|
|
153
|
+
middleware
|
|
154
|
+
}
|
|
155
|
+
);
|
|
148
156
|
Object.assign(this.style, {
|
|
149
157
|
top: "0px",
|
|
150
158
|
left: "0px",
|
|
@@ -178,7 +186,9 @@ const _ActiveOverlay = class extends SpectrumElement {
|
|
|
178
186
|
this.focus();
|
|
179
187
|
};
|
|
180
188
|
this.stealOverlayContentPromise = Promise.resolve();
|
|
181
|
-
this.stealOverlayContentPromise = new Promise(
|
|
189
|
+
this.stealOverlayContentPromise = new Promise(
|
|
190
|
+
(res) => this.stealOverlayContentResolver = res
|
|
191
|
+
);
|
|
182
192
|
}
|
|
183
193
|
get state() {
|
|
184
194
|
return this._state;
|
|
@@ -242,7 +252,9 @@ const _ActiveOverlay = class extends SpectrumElement {
|
|
|
242
252
|
this.removeAttribute("aria-modal");
|
|
243
253
|
if (this.interaction !== "modal") {
|
|
244
254
|
const parentOverlay = parentOverlayOf(this.trigger);
|
|
245
|
-
this._modalRoot = parentOverlay == null ? void 0 : parentOverlay.obscure(
|
|
255
|
+
this._modalRoot = parentOverlay == null ? void 0 : parentOverlay.obscure(
|
|
256
|
+
nextOverlayInteraction
|
|
257
|
+
);
|
|
246
258
|
return this._modalRoot;
|
|
247
259
|
}
|
|
248
260
|
return this;
|
|
@@ -254,14 +266,22 @@ const _ActiveOverlay = class extends SpectrumElement {
|
|
|
254
266
|
return;
|
|
255
267
|
if (!this.overlayContent || !this.trigger)
|
|
256
268
|
return;
|
|
257
|
-
this.stealOverlayContent(
|
|
269
|
+
this.stealOverlayContent(
|
|
270
|
+
this.overlayContent
|
|
271
|
+
);
|
|
258
272
|
this.state = "active";
|
|
259
273
|
this.feature();
|
|
260
274
|
if (this.placement === "none") {
|
|
261
|
-
this.style.setProperty(
|
|
275
|
+
this.style.setProperty(
|
|
276
|
+
"--swc-visual-viewport-height",
|
|
277
|
+
`${window.innerHeight}px`
|
|
278
|
+
);
|
|
262
279
|
} else if (this.placement) {
|
|
263
280
|
await this.updateOverlayPosition();
|
|
264
|
-
document.addEventListener(
|
|
281
|
+
document.addEventListener(
|
|
282
|
+
"sp-update-overlays",
|
|
283
|
+
this.updateOverlayPosition
|
|
284
|
+
);
|
|
265
285
|
window.addEventListener("scroll", this.updateOverlayPosition);
|
|
266
286
|
}
|
|
267
287
|
const actions = [];
|
|
@@ -269,7 +289,9 @@ const _ActiveOverlay = class extends SpectrumElement {
|
|
|
269
289
|
actions.push(this.applyContentAnimation("sp-overlay-fade-in"));
|
|
270
290
|
}
|
|
271
291
|
if (typeof this.overlayContent.updateComplete !== "undefined") {
|
|
272
|
-
actions.push(
|
|
292
|
+
actions.push(
|
|
293
|
+
this.overlayContent.updateComplete
|
|
294
|
+
);
|
|
273
295
|
}
|
|
274
296
|
this.childrenReady = Promise.all(actions);
|
|
275
297
|
}
|
|
@@ -279,14 +301,16 @@ const _ActiveOverlay = class extends SpectrumElement {
|
|
|
279
301
|
await this.focus();
|
|
280
302
|
}
|
|
281
303
|
await lifecycleCallback();
|
|
282
|
-
this.trigger.dispatchEvent(
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
304
|
+
this.trigger.dispatchEvent(
|
|
305
|
+
new CustomEvent("sp-opened", {
|
|
306
|
+
bubbles: true,
|
|
307
|
+
composed: true,
|
|
308
|
+
cancelable: true,
|
|
309
|
+
detail: {
|
|
310
|
+
interaction: this.interaction
|
|
311
|
+
}
|
|
312
|
+
})
|
|
313
|
+
);
|
|
290
314
|
}
|
|
291
315
|
open(openDetail) {
|
|
292
316
|
this.extractDetail(openDetail);
|
|
@@ -311,7 +335,10 @@ const _ActiveOverlay = class extends SpectrumElement {
|
|
|
311
335
|
clearTimeout(this.timeout);
|
|
312
336
|
delete this.timeout;
|
|
313
337
|
}
|
|
314
|
-
this.trigger.removeEventListener(
|
|
338
|
+
this.trigger.removeEventListener(
|
|
339
|
+
"keydown",
|
|
340
|
+
this.handleInlineTriggerKeydown
|
|
341
|
+
);
|
|
315
342
|
this.returnOverlayContent();
|
|
316
343
|
this.state = "disposed";
|
|
317
344
|
if (this.willNotifyClosed) {
|
|
@@ -355,7 +382,9 @@ const _ActiveOverlay = class extends SpectrumElement {
|
|
|
355
382
|
}
|
|
356
383
|
schedulePositionUpdate() {
|
|
357
384
|
cancelAnimationFrame(this.positionAnimationFrame);
|
|
358
|
-
this.positionAnimationFrame = requestAnimationFrame(
|
|
385
|
+
this.positionAnimationFrame = requestAnimationFrame(
|
|
386
|
+
() => this.updateOverlayPosition()
|
|
387
|
+
);
|
|
359
388
|
}
|
|
360
389
|
onSlotChange() {
|
|
361
390
|
this.schedulePositionUpdate();
|
|
@@ -365,7 +394,9 @@ const _ActiveOverlay = class extends SpectrumElement {
|
|
|
365
394
|
return Promise.resolve(true);
|
|
366
395
|
}
|
|
367
396
|
return new Promise((resolve) => {
|
|
368
|
-
const contents = this.shadowRoot.querySelector(
|
|
397
|
+
const contents = this.shadowRoot.querySelector(
|
|
398
|
+
"#contents"
|
|
399
|
+
);
|
|
369
400
|
const doneHandler = (event) => {
|
|
370
401
|
if (animation !== event.animationName)
|
|
371
402
|
return;
|
|
@@ -421,7 +452,10 @@ const _ActiveOverlay = class extends SpectrumElement {
|
|
|
421
452
|
return complete;
|
|
422
453
|
}
|
|
423
454
|
disconnectedCallback() {
|
|
424
|
-
document.removeEventListener(
|
|
455
|
+
document.removeEventListener(
|
|
456
|
+
"sp-update-overlays",
|
|
457
|
+
this.updateOverlayPosition
|
|
458
|
+
);
|
|
425
459
|
window.removeEventListener("scroll", this.updateOverlayPosition);
|
|
426
460
|
super.disconnectedCallback();
|
|
427
461
|
}
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["ActiveOverlay.ts"],
|
|
4
4
|
"sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport {\n CSSResultArray,\n html,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport { ifDefined } from '@spectrum-web-components/base/src/directives.js';\nimport { property } from '@spectrum-web-components/base/src/decorators.js';\nimport { reparentChildren } from '@spectrum-web-components/shared/src/reparent-children.js';\nimport { firstFocusableIn } from '@spectrum-web-components/shared/src/first-focusable-in.js';\nimport type {\n Color,\n Scale,\n ThemeVariant,\n} from '@spectrum-web-components/theme/src/Theme.js';\nimport styles from './active-overlay.css.js';\nimport { parentOverlayOf } from './overlay-utils.dev.js'\nimport {\n OverlayOpenCloseDetail,\n OverlayOpenDetail,\n Placement,\n TriggerInteractions,\n} from './overlay-types.dev.js'\nimport type { VirtualTrigger } from './VirtualTrigger.dev.js'\nimport {\n arrow,\n computePosition,\n flip,\n Placement as FloatingUIPlacement,\n offset,\n shift,\n size,\n} from '@floating-ui/dom';\n\nexport interface PositionResult {\n arrowOffsetLeft: number;\n arrowOffsetTop: number;\n maxHeight: number;\n placement: string;\n positionLeft: number;\n positionTop: number;\n}\n\ntype OverlayStateType = 'idle' | 'active' | 'hiding' | 'dispose' | 'disposed';\ntype ContentAnimation = 'sp-overlay-fade-in' | 'sp-overlay-fade-out';\n\nconst stateMachine: {\n initial: OverlayStateType;\n states: {\n [stateName: string]: {\n on: {\n [transitionName: string]: OverlayStateType;\n };\n };\n };\n} = {\n initial: 'idle',\n states: {\n idle: {\n on: {\n active: 'active',\n },\n },\n active: {\n on: {\n hiding: 'hiding',\n idle: 'idle',\n },\n },\n hiding: {\n on: {\n dispose: 'dispose',\n },\n },\n dispose: {\n on: {\n disposed: 'disposed',\n },\n },\n disposed: {\n on: {},\n },\n },\n};\n\nconst stateTransition = (\n state?: OverlayStateType,\n event?: string\n): OverlayStateType => {\n if (!state) return stateMachine.initial;\n /* c8 ignore next */\n if (!event) return state;\n return stateMachine.states[state].on[event] || state;\n};\n\nconst getFallbackPlacements = (\n placement: FloatingUIPlacement\n): FloatingUIPlacement[] => {\n const fallbacks: Record<FloatingUIPlacement, FloatingUIPlacement[]> = {\n left: ['right', 'bottom', 'top'],\n 'left-start': ['right-start', 'bottom', 'top'],\n 'left-end': ['right-end', 'bottom', 'top'],\n right: ['left', 'bottom', 'top'],\n 'right-start': ['left-start', 'bottom', 'top'],\n 'right-end': ['left-end', 'bottom', 'top'],\n top: ['bottom', 'left', 'right'],\n 'top-start': ['bottom-start', 'left', 'right'],\n 'top-end': ['bottom-end', 'left', 'right'],\n bottom: ['top', 'left', 'right'],\n 'bottom-start': ['top-start', 'left', 'right'],\n 'bottom-end': ['top-end', 'left', 'right'],\n };\n return fallbacks[placement] ?? [placement];\n};\n\n/**\n * @element active-overlay\n *\n * @slot - content to display in the overlay\n */\nexport class ActiveOverlay extends SpectrumElement {\n public overlayContent!: HTMLElement;\n public overlayContentTip?: HTMLElement;\n public trigger!: HTMLElement;\n public root?: HTMLElement;\n public virtualTrigger?: VirtualTrigger;\n\n protected childrenReady!: Promise<unknown[]>;\n\n @property()\n public _state = stateTransition();\n public get state(): OverlayStateType {\n return this._state;\n }\n public set state(state: OverlayStateType) {\n const nextState = stateTransition(this.state, state);\n if (nextState === this.state) {\n return;\n }\n this._state = nextState;\n if (this.state === 'active' || this.state === 'hiding') {\n this.setAttribute('state', this.state);\n } else {\n this.removeAttribute('state');\n }\n }\n\n @property({ reflect: true, type: Boolean })\n public animating = false;\n\n @property({ reflect: true })\n public placement?: Placement;\n @property({ attribute: false })\n public theme: {\n color?: Color;\n scale?: Scale;\n lang?: string;\n theme?: ThemeVariant;\n } = {};\n @property({ attribute: false })\n public receivesFocus?: 'auto';\n\n public tabbingAway = false;\n private originalPlacement?: Placement;\n private restoreContent?: () => Element[];\n\n public override async focus(): Promise<void> {\n const firstFocusable = firstFocusableIn(this);\n if (firstFocusable) {\n if ((firstFocusable as SpectrumElement).updateComplete) {\n await firstFocusable.updateComplete;\n }\n const activeElement = (this.getRootNode() as Document)\n .activeElement;\n if (activeElement === this || !this.contains(activeElement)) {\n firstFocusable.focus();\n }\n /* c8 ignore next 3 */\n } else {\n super.focus();\n }\n this.removeAttribute('tabindex');\n }\n\n private get hasTheme(): boolean {\n return !!this.theme.color || !!this.theme.scale || !!this.theme.lang;\n }\n\n public offset = 6;\n public skidding = 0;\n public interaction: TriggerInteractions = 'hover';\n private positionAnimationFrame = 0;\n\n private timeout?: number;\n\n public static override get styles(): CSSResultArray {\n return [styles];\n }\n\n public constructor() {\n super();\n this.stealOverlayContentPromise = new Promise(\n (res) => (this.stealOverlayContentResolver = res)\n );\n }\n\n private _modalRoot?: ActiveOverlay;\n\n public get hasModalRoot(): boolean {\n return !!this._modalRoot;\n }\n\n public feature(): void {\n this.tabIndex = -1;\n const parentOverlay = parentOverlayOf(this.trigger);\n const parentIsModal = parentOverlay && parentOverlay.slot === 'open';\n if (parentIsModal) {\n this._modalRoot = parentOverlay._modalRoot || parentOverlay;\n }\n // If an overlay it triggered from within a \"modal\" overlay, it needs to continue\n // to act like one to get treated correctly in regards to tab trapping.\n if (this.interaction === 'modal' || this._modalRoot) {\n this.slot = 'open';\n if (this.interaction === 'modal') {\n this.setAttribute('aria-modal', 'true');\n }\n // If this isn't a modal root, walk up the overlays to the next modal root\n // and \"feature\" each on of the intervening overlays.\n if (this._modalRoot) {\n parentOverlay?.feature();\n }\n }\n }\n\n public obscure(\n nextOverlayInteraction: TriggerInteractions\n ): ActiveOverlay | undefined {\n if (this.slot && nextOverlayInteraction === 'modal') {\n this.removeAttribute('slot');\n this.removeAttribute('aria-modal');\n // Obscure upto and including the next modal root.\n if (this.interaction !== 'modal') {\n const parentOverlay = parentOverlayOf(this.trigger);\n this._modalRoot = parentOverlay?.obscure(\n nextOverlayInteraction\n );\n return this._modalRoot;\n }\n return this;\n }\n return undefined;\n }\n\n public override async willUpdate(): Promise<void> {\n if (this.hasUpdated) return;\n\n /* c8 ignore next */\n if (!this.overlayContent || !this.trigger) return;\n\n this.stealOverlayContent(\n this.overlayContent as HTMLElement & { placement: Placement }\n );\n\n this.state = 'active';\n this.feature();\n if (this.placement === 'none') {\n this.style.setProperty(\n '--swc-visual-viewport-height',\n `${window.innerHeight}px`\n );\n } else if (this.placement) {\n await this.updateOverlayPosition();\n document.addEventListener(\n 'sp-update-overlays',\n this.updateOverlayPosition\n );\n window.addEventListener('scroll', this.updateOverlayPosition);\n }\n const actions: Promise<unknown>[] = [];\n if (this.placement && this.placement !== 'none') {\n actions.push(this.applyContentAnimation('sp-overlay-fade-in'));\n }\n if (\n typeof (this.overlayContent as SpectrumElement).updateComplete !==\n 'undefined'\n ) {\n actions.push(\n (this.overlayContent as SpectrumElement).updateComplete\n );\n }\n this.childrenReady = Promise.all(actions);\n }\n\n public async openCallback(\n lifecycleCallback: () => Promise<void> | void\n ): Promise<void> {\n await this.updateComplete;\n if (this.receivesFocus) {\n await this.focus();\n }\n\n await lifecycleCallback();\n\n this.trigger.dispatchEvent(\n new CustomEvent<OverlayOpenCloseDetail>('sp-opened', {\n bubbles: true,\n composed: true,\n cancelable: true,\n detail: {\n interaction: this.interaction,\n },\n })\n );\n }\n\n private open(openDetail: OverlayOpenDetail): void {\n this.extractDetail(openDetail);\n }\n\n private extractDetail(detail: OverlayOpenDetail): void {\n this.overlayContent = detail.content;\n this.overlayContentTip = detail.contentTip;\n this.trigger = detail.trigger;\n this.virtualTrigger = detail.virtualTrigger;\n this.placement = detail.placement;\n this.offset = detail.offset;\n this.skidding = detail.skidding || 0;\n this.interaction = detail.interaction;\n this.theme = detail.theme;\n this.receivesFocus = detail.receivesFocus;\n this.root = detail.root;\n }\n\n public dispose(): void {\n /* c8 ignore next */\n if (this.state !== 'dispose') return;\n\n /* c8 ignore next 4 */\n if (this.timeout) {\n clearTimeout(this.timeout);\n delete this.timeout;\n }\n\n this.trigger.removeEventListener(\n 'keydown',\n this.handleInlineTriggerKeydown\n );\n\n this.returnOverlayContent();\n this.state = 'disposed';\n\n if (this.willNotifyClosed) {\n this.overlayContent.dispatchEvent(new Event('sp-overlay-closed'));\n this.willNotifyClosed = false;\n }\n }\n\n private stealOverlayContent(\n element: HTMLElement & { placement: Placement }\n ): void {\n this.originalPlacement = element.getAttribute('placement') as Placement;\n this.restoreContent = reparentChildren([element], this, {\n position: 'beforeend',\n prepareCallback: (el) => {\n const slotName = el.slot;\n const placement = el.placement;\n el.removeAttribute('slot');\n return (el) => {\n el.slot = slotName;\n el.placement = placement;\n };\n },\n });\n this.stealOverlayContentResolver();\n }\n\n private willNotifyClosed = false;\n\n private returnOverlayContent(): void {\n /* c8 ignore next */\n if (!this.restoreContent) return;\n\n const [element] = this.restoreContent();\n this.restoreContent = undefined;\n this.willNotifyClosed = true;\n\n if (this.originalPlacement) {\n element.setAttribute('placement', this.originalPlacement);\n delete this.originalPlacement;\n }\n }\n\n private initialHeight!: number;\n private isConstrained = false;\n\n public updateOverlayPosition = async (): Promise<void> => {\n if (!this.placement || this.placement === 'none') {\n return;\n }\n await (document.fonts ? document.fonts.ready : Promise.resolve());\n\n function roundByDPR(num: number): number {\n const dpr = window.devicePixelRatio || 1;\n return Math.round(num * dpr) / dpr || -10000;\n }\n\n // See: https://spectrum.adobe.com/page/popover/#Container-padding\n const REQUIRED_DISTANCE_TO_EDGE = 8;\n // See: https://github.com/adobe/spectrum-web-components/issues/910\n const MIN_OVERLAY_HEIGHT = 100;\n\n const flipMiddleware = this.virtualTrigger\n ? flip({\n padding: REQUIRED_DISTANCE_TO_EDGE,\n fallbackPlacements: getFallbackPlacements(this.placement),\n })\n : flip({\n padding: REQUIRED_DISTANCE_TO_EDGE,\n });\n\n const middleware = [\n offset({\n mainAxis: this.offset,\n crossAxis: this.skidding,\n }),\n shift({ padding: REQUIRED_DISTANCE_TO_EDGE }),\n flipMiddleware,\n size({\n padding: REQUIRED_DISTANCE_TO_EDGE,\n apply: ({\n availableWidth,\n availableHeight,\n rects: { floating },\n }) => {\n const maxHeight = Math.max(\n MIN_OVERLAY_HEIGHT,\n Math.floor(availableHeight)\n );\n const actualHeight = floating.height;\n this.initialHeight =\n !this.isConstrained && !this.virtualTrigger\n ? actualHeight\n : this.initialHeight || actualHeight;\n this.isConstrained =\n actualHeight < this.initialHeight ||\n maxHeight <= actualHeight;\n const appliedHeight = this.isConstrained\n ? `${maxHeight}px`\n : '';\n Object.assign(this.style, {\n maxWidth: `${Math.floor(availableWidth)}px`,\n maxHeight: appliedHeight,\n height: appliedHeight,\n });\n },\n }),\n ];\n if (this.overlayContentTip) {\n middleware.push(arrow({ element: this.overlayContentTip }));\n }\n const { x, y, placement, middlewareData } = await computePosition(\n this.virtualTrigger || this.trigger,\n this,\n {\n placement: this.placement,\n middleware,\n }\n );\n\n Object.assign(this.style, {\n top: '0px',\n left: '0px',\n transform: `translate(${roundByDPR(x)}px, ${roundByDPR(y)}px)`,\n });\n\n if (placement !== this.getAttribute('actual-placement')) {\n this.setAttribute('actual-placement', placement);\n this.overlayContent.setAttribute('placement', placement);\n }\n\n if (this.overlayContentTip && middlewareData.arrow) {\n const { x: arrowX, y: arrowY } = middlewareData.arrow;\n\n Object.assign(this.overlayContentTip.style, {\n left: arrowX != null ? `${roundByDPR(arrowX)}px` : '',\n top: arrowY != null ? `${roundByDPR(arrowY)}px` : '',\n right: '',\n bottom: '',\n });\n }\n };\n\n public async hide(animated = true): Promise<void> {\n this.state = 'hiding';\n if (animated) {\n await this.applyContentAnimation('sp-overlay-fade-out');\n }\n this.state = 'dispose';\n }\n\n private schedulePositionUpdate(): void {\n // Edge needs a little time to update the DOM before computing the layout\n cancelAnimationFrame(this.positionAnimationFrame);\n this.positionAnimationFrame = requestAnimationFrame(() =>\n this.updateOverlayPosition()\n );\n }\n\n private onSlotChange(): void {\n this.schedulePositionUpdate();\n }\n\n public handleInlineTriggerKeydown = (event: KeyboardEvent): void => {\n const { code, shiftKey } = event;\n /* c8 ignore next */\n if (code !== 'Tab') return;\n if (shiftKey) {\n this.tabbingAway = true;\n this.dispatchEvent(new Event('close'));\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n this.focus();\n };\n\n public applyContentAnimation(\n animation: ContentAnimation\n ): Promise<boolean> {\n if (this.placement === 'none') {\n return Promise.resolve(true);\n }\n return new Promise((resolve): void => {\n const contents = this.shadowRoot.querySelector(\n '#contents'\n ) as HTMLElement;\n const doneHandler = (event: AnimationEvent): void => {\n if (animation !== event.animationName) return;\n contents.removeEventListener('animationend', doneHandler);\n contents.removeEventListener('animationcancel', doneHandler);\n this.animating = false;\n resolve(event.type === 'animationcancel');\n };\n contents.addEventListener('animationend', doneHandler);\n contents.addEventListener('animationcancel', doneHandler);\n\n contents.style.animationName = animation;\n this.animating = true;\n });\n }\n\n public renderTheme(content: TemplateResult): TemplateResult {\n const { color, scale, lang, theme } = this.theme;\n return html`\n <sp-theme\n theme=${ifDefined(theme)}\n color=${ifDefined(color)}\n scale=${ifDefined(scale)}\n lang=${ifDefined(lang)}\n part=\"theme\"\n >\n ${content}\n </sp-theme>\n `;\n }\n\n public override render(): TemplateResult {\n const content = html`\n <div id=\"contents\">\n <slot @slotchange=${this.onSlotChange}></slot>\n </div>\n `;\n return this.hasTheme ? this.renderTheme(content) : content;\n }\n\n public static create(details: OverlayOpenDetail): ActiveOverlay {\n const overlay = new ActiveOverlay();\n\n if (details.content) {\n overlay.open(details);\n }\n\n return overlay;\n }\n\n private stealOverlayContentPromise = Promise.resolve();\n private stealOverlayContentResolver!: () => void;\n\n protected override async getUpdateComplete(): Promise<boolean> {\n const actions: Promise<unknown>[] = [\n super.getUpdateComplete(),\n this.stealOverlayContentPromise,\n ];\n if (this.childrenReady) {\n actions.push(this.childrenReady);\n }\n const [complete] = await Promise.all(actions);\n return complete as boolean;\n }\n\n override disconnectedCallback(): void {\n document.removeEventListener(\n 'sp-update-overlays',\n this.updateOverlayPosition\n );\n window.removeEventListener('scroll', this.updateOverlayPosition);\n super.disconnectedCallback();\n }\n}\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": []
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["el"]
|
|
7
7
|
}
|