@spectrum-web-components/overlay 0.34.0 → 0.34.1-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +227 -152
- package/custom-elements.json +1401 -541
- package/package.json +48 -22
- package/sp-overlay.d.ts +6 -0
- package/sp-overlay.dev.js +5 -0
- package/{active-overlay.dev.js.map → sp-overlay.dev.js.map} +3 -3
- package/sp-overlay.js +2 -0
- package/{active-overlay.js.map → sp-overlay.js.map} +4 -4
- package/src/Overlay.d.ts +29 -0
- package/src/Overlay.dev.js +91 -0
- package/src/Overlay.dev.js.map +7 -0
- package/src/Overlay.js +2 -0
- package/src/Overlay.js.map +7 -0
- package/src/OverlayBase.d.ts +124 -0
- package/src/OverlayBase.dev.js +744 -0
- package/src/OverlayBase.dev.js.map +7 -0
- package/src/OverlayBase.js +31 -0
- package/src/OverlayBase.js.map +7 -0
- package/src/OverlayDialog.d.ts +8 -0
- package/src/OverlayDialog.dev.js +160 -0
- package/src/OverlayDialog.dev.js.map +7 -0
- package/src/OverlayDialog.js +2 -0
- package/src/OverlayDialog.js.map +7 -0
- package/src/OverlayNoPopover.d.ts +8 -0
- package/src/OverlayNoPopover.dev.js +149 -0
- package/src/OverlayNoPopover.dev.js.map +7 -0
- package/src/OverlayNoPopover.js +2 -0
- package/src/OverlayNoPopover.js.map +7 -0
- package/src/OverlayPopover.d.ts +8 -0
- package/src/OverlayPopover.dev.js +199 -0
- package/src/OverlayPopover.dev.js.map +7 -0
- package/src/OverlayPopover.js +2 -0
- package/src/OverlayPopover.js.map +7 -0
- package/src/OverlayStack.d.ts +29 -0
- package/src/OverlayStack.dev.js +126 -0
- package/src/OverlayStack.dev.js.map +7 -0
- package/src/OverlayStack.js +2 -0
- package/src/OverlayStack.js.map +7 -0
- package/src/OverlayTrigger.d.ts +23 -31
- package/src/OverlayTrigger.dev.js +135 -245
- package/src/OverlayTrigger.dev.js.map +3 -3
- package/src/OverlayTrigger.js +52 -22
- package/src/OverlayTrigger.js.map +3 -3
- package/src/PlacementController.d.ts +36 -0
- package/src/PlacementController.dev.js +191 -0
- package/src/PlacementController.dev.js.map +7 -0
- package/src/PlacementController.js +2 -0
- package/src/PlacementController.js.map +7 -0
- package/src/VirtualTrigger.dev.js +0 -2
- package/src/VirtualTrigger.dev.js.map +2 -2
- package/src/VirtualTrigger.js +1 -1
- package/src/VirtualTrigger.js.map +3 -3
- package/src/fullSizePlugin.d.ts +12 -0
- package/src/fullSizePlugin.dev.js +39 -0
- package/src/fullSizePlugin.dev.js.map +7 -0
- package/src/fullSizePlugin.js +2 -0
- package/src/fullSizePlugin.js.map +7 -0
- package/src/index.d.ts +2 -3
- package/src/index.dev.js +2 -3
- package/src/index.dev.js.map +2 -2
- package/src/index.js +1 -1
- package/src/index.js.map +2 -2
- package/src/loader.d.ts +2 -2
- package/src/loader.dev.js +2 -19
- package/src/loader.dev.js.map +2 -2
- package/src/loader.js +1 -1
- package/src/loader.js.map +3 -3
- package/src/overlay-base.css.dev.js +9 -0
- package/src/overlay-base.css.dev.js.map +7 -0
- package/src/overlay-base.css.js +6 -0
- package/src/overlay-base.css.js.map +7 -0
- package/src/overlay-trigger.css.dev.js +1 -1
- package/src/overlay-trigger.css.dev.js.map +1 -1
- package/src/overlay-trigger.css.js +1 -1
- package/src/overlay-trigger.css.js.map +1 -1
- package/src/overlay-types.d.ts +7 -5
- package/src/overlay-types.dev.js +1 -0
- package/src/overlay-types.dev.js.map +3 -3
- package/src/overlay-types.js +1 -1
- package/src/overlay-types.js.map +3 -3
- package/src/topLayerOverTransforms.d.ts +23 -0
- package/src/topLayerOverTransforms.dev.js +170 -0
- package/src/topLayerOverTransforms.dev.js.map +7 -0
- package/src/topLayerOverTransforms.js +2 -0
- package/src/topLayerOverTransforms.js.map +7 -0
- package/stories/overlay-element.stories.js +247 -0
- package/stories/overlay-element.stories.js.map +7 -0
- package/stories/overlay-story-components.js +9 -8
- package/stories/overlay-story-components.js.map +2 -2
- package/stories/overlay.stories.js +780 -683
- package/stories/overlay.stories.js.map +2 -2
- package/sync/overlay-trigger.d.ts +4 -0
- package/sync/overlay-trigger.dev.js +1 -4
- package/sync/overlay-trigger.dev.js.map +2 -2
- package/sync/overlay-trigger.js +1 -1
- package/sync/overlay-trigger.js.map +3 -3
- package/test/benchmark/basic-test.js +1 -1
- package/test/benchmark/basic-test.js.map +1 -1
- package/test/index.js +407 -376
- package/test/index.js.map +3 -3
- package/test/overlay-element.test-vrt.js +5 -0
- package/test/overlay-element.test-vrt.js.map +7 -0
- package/test/overlay-element.test.js +682 -0
- package/test/overlay-element.test.js.map +7 -0
- package/test/overlay-lifecycle.test.js +34 -106
- package/test/overlay-lifecycle.test.js.map +2 -2
- package/test/overlay-trigger-click.test.js +11 -5
- package/test/overlay-trigger-click.test.js.map +2 -2
- package/test/overlay-trigger-extended.test.js +1 -6
- package/test/overlay-trigger-extended.test.js.map +2 -2
- package/test/overlay-trigger-hover-click.test.js +23 -23
- package/test/overlay-trigger-hover-click.test.js.map +2 -2
- package/test/overlay-trigger-hover.test.js +40 -34
- package/test/overlay-trigger-hover.test.js.map +2 -2
- package/test/overlay-trigger-longpress.test.js +98 -80
- package/test/overlay-trigger-longpress.test.js.map +2 -2
- package/test/overlay-trigger-sync.test.js +1 -1
- package/test/overlay-trigger-sync.test.js.map +2 -2
- package/test/overlay-trigger.test.js +1 -1
- package/test/overlay-trigger.test.js.map +2 -2
- package/test/overlay-update.test.js +4 -4
- package/test/overlay-update.test.js.map +2 -2
- package/test/{overlay.test.js → overlay-v1.test.js} +267 -249
- package/test/overlay-v1.test.js.map +7 -0
- package/test/overlay-v2.test.js +720 -0
- package/test/overlay-v2.test.js.map +7 -0
- package/active-overlay.d.ts +0 -6
- package/active-overlay.dev.js +0 -5
- package/active-overlay.js +0 -2
- package/src/ActiveOverlay.d.ts +0 -84
- package/src/ActiveOverlay.dev.js +0 -517
- package/src/ActiveOverlay.dev.js.map +0 -7
- package/src/ActiveOverlay.js +0 -16
- package/src/ActiveOverlay.js.map +0 -7
- package/src/active-overlay.css.dev.js +0 -13
- package/src/active-overlay.css.dev.js.map +0 -7
- package/src/active-overlay.css.js +0 -10
- package/src/active-overlay.css.js.map +0 -7
- package/src/overlay-stack.d.ts +0 -50
- package/src/overlay-stack.dev.js +0 -515
- package/src/overlay-stack.dev.js.map +0 -7
- package/src/overlay-stack.js +0 -34
- package/src/overlay-stack.js.map +0 -7
- package/src/overlay-utils.d.ts +0 -3
- package/src/overlay-utils.dev.js +0 -31
- package/src/overlay-utils.dev.js.map +0 -7
- package/src/overlay-utils.js +0 -2
- package/src/overlay-utils.js.map +0 -7
- package/src/overlay.d.ts +0 -59
- package/src/overlay.dev.js +0 -127
- package/src/overlay.dev.js.map +0 -7
- package/src/overlay.js +0 -2
- package/src/overlay.js.map +0 -7
- package/test/overlay.test.js.map +0 -7
- /package/src/{active-overlay.css.d.ts → overlay-base.css.d.ts} +0 -0
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
export const topLayerOverTransforms = () => ({
|
|
3
|
+
name: "topLayer",
|
|
4
|
+
async fn(middlewareArguments) {
|
|
5
|
+
const {
|
|
6
|
+
x,
|
|
7
|
+
y,
|
|
8
|
+
elements: { reference, floating }
|
|
9
|
+
} = middlewareArguments;
|
|
10
|
+
let onTopLayer = false;
|
|
11
|
+
let topLayerIsFloating = false;
|
|
12
|
+
const diffCoords = {
|
|
13
|
+
x: 0,
|
|
14
|
+
y: 0
|
|
15
|
+
};
|
|
16
|
+
try {
|
|
17
|
+
onTopLayer = onTopLayer || floating.matches(":popover-open");
|
|
18
|
+
} catch (e) {
|
|
19
|
+
}
|
|
20
|
+
try {
|
|
21
|
+
onTopLayer = onTopLayer || floating.matches(":open");
|
|
22
|
+
} catch (e) {
|
|
23
|
+
}
|
|
24
|
+
try {
|
|
25
|
+
onTopLayer = onTopLayer || floating.matches(":modal");
|
|
26
|
+
} catch (e) {
|
|
27
|
+
}
|
|
28
|
+
topLayerIsFloating = onTopLayer;
|
|
29
|
+
if (!onTopLayer) {
|
|
30
|
+
const dialogAncestorQueryEvent = new Event(
|
|
31
|
+
"floating-ui-dialog-test",
|
|
32
|
+
{ composed: true, bubbles: true }
|
|
33
|
+
);
|
|
34
|
+
floating.addEventListener(
|
|
35
|
+
"floating-ui-dialog-test",
|
|
36
|
+
(event) => {
|
|
37
|
+
event.composedPath().forEach(
|
|
38
|
+
(el) => {
|
|
39
|
+
if (el === floating || el.localName !== "dialog")
|
|
40
|
+
return;
|
|
41
|
+
try {
|
|
42
|
+
onTopLayer = onTopLayer || el.matches(":modal");
|
|
43
|
+
if (onTopLayer) {
|
|
44
|
+
}
|
|
45
|
+
} catch (e) {
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
);
|
|
49
|
+
},
|
|
50
|
+
{ once: true }
|
|
51
|
+
);
|
|
52
|
+
floating.dispatchEvent(dialogAncestorQueryEvent);
|
|
53
|
+
}
|
|
54
|
+
let overTransforms = false;
|
|
55
|
+
const containingBlock = getContainingBlock(reference);
|
|
56
|
+
if (containingBlock !== null && !isWindow(containingBlock)) {
|
|
57
|
+
overTransforms = true;
|
|
58
|
+
}
|
|
59
|
+
if (onTopLayer && overTransforms) {
|
|
60
|
+
const rect = containingBlock.getBoundingClientRect();
|
|
61
|
+
diffCoords.x = rect.x;
|
|
62
|
+
diffCoords.y = rect.y;
|
|
63
|
+
}
|
|
64
|
+
if (onTopLayer && topLayerIsFloating) {
|
|
65
|
+
return {
|
|
66
|
+
x: x + diffCoords.x,
|
|
67
|
+
y: y + diffCoords.y,
|
|
68
|
+
data: diffCoords
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
if (onTopLayer) {
|
|
72
|
+
return {
|
|
73
|
+
x,
|
|
74
|
+
y,
|
|
75
|
+
data: diffCoords
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
x: x - diffCoords.x,
|
|
80
|
+
y: y - diffCoords.y,
|
|
81
|
+
data: diffCoords
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
function getContainingBlock(element) {
|
|
86
|
+
let currentNode = getParentNode(element);
|
|
87
|
+
if (isShadowRoot(currentNode)) {
|
|
88
|
+
currentNode = currentNode.host;
|
|
89
|
+
}
|
|
90
|
+
while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {
|
|
91
|
+
if (isContainingBlock(currentNode)) {
|
|
92
|
+
return currentNode;
|
|
93
|
+
} else {
|
|
94
|
+
const parent = currentNode.assignedSlot ? currentNode.assignedSlot : currentNode.parentNode;
|
|
95
|
+
currentNode = isShadowRoot(parent) ? parent.host : parent;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
export function isLastTraversableNode(node) {
|
|
101
|
+
return ["html", "body", "#document"].includes(getNodeName(node));
|
|
102
|
+
}
|
|
103
|
+
function isContainingBlock(element) {
|
|
104
|
+
const safari = isSafari();
|
|
105
|
+
const css = getComputedStyle(element);
|
|
106
|
+
return css.transform !== "none" || css.perspective !== "none" || !safari && (css.backdropFilter ? css.backdropFilter !== "none" : false) || !safari && (css.filter ? css.filter !== "none" : false) || ["transform", "perspective", "filter"].some(
|
|
107
|
+
(value) => (css.willChange || "").includes(value)
|
|
108
|
+
) || ["paint", "layout", "strict", "content"].some(
|
|
109
|
+
(value) => (css.contain || "").includes(value)
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
export function isSafari() {
|
|
113
|
+
if (typeof CSS === "undefined" || !CSS.supports)
|
|
114
|
+
return false;
|
|
115
|
+
return CSS.supports("-webkit-backdrop-filter", "none");
|
|
116
|
+
}
|
|
117
|
+
export function getUAString() {
|
|
118
|
+
const uaData = navigator.userAgentData;
|
|
119
|
+
if (uaData == null ? void 0 : uaData.brands) {
|
|
120
|
+
return uaData.brands.map((item) => `${item.brand}/${item.version}`).join(" ");
|
|
121
|
+
}
|
|
122
|
+
return navigator.userAgent;
|
|
123
|
+
}
|
|
124
|
+
export function getParentNode(node) {
|
|
125
|
+
if (getNodeName(node) === "html") {
|
|
126
|
+
return node;
|
|
127
|
+
}
|
|
128
|
+
return (
|
|
129
|
+
// this is a quicker (but less type safe) way to save quite some bytes from the bundle
|
|
130
|
+
// @ts-ignore
|
|
131
|
+
node.assignedSlot || // step into the shadow DOM of the parent of a slotted node
|
|
132
|
+
node.parentNode || // DOM Element detected
|
|
133
|
+
(isShadowRoot(node) ? node.host : null) || // ShadowRoot detected
|
|
134
|
+
getDocumentElement(node)
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
export function getNodeName(node) {
|
|
138
|
+
return isWindow(node) ? "" : node ? (node.nodeName || "").toLowerCase() : "";
|
|
139
|
+
}
|
|
140
|
+
export function getDocumentElement(node) {
|
|
141
|
+
return ((isNode(node) ? node.ownerDocument : node.document) || window.document).documentElement;
|
|
142
|
+
}
|
|
143
|
+
export function isNode(value) {
|
|
144
|
+
return value instanceof getWindow(value).Node;
|
|
145
|
+
}
|
|
146
|
+
export function isWindow(value) {
|
|
147
|
+
return value && value.document && value.location && value.alert && value.setInterval;
|
|
148
|
+
}
|
|
149
|
+
export function getWindow(node) {
|
|
150
|
+
if (node == null) {
|
|
151
|
+
return window;
|
|
152
|
+
}
|
|
153
|
+
if (!isWindow(node)) {
|
|
154
|
+
const ownerDocument = node.ownerDocument;
|
|
155
|
+
return ownerDocument ? ownerDocument.defaultView || window : window;
|
|
156
|
+
}
|
|
157
|
+
return node;
|
|
158
|
+
}
|
|
159
|
+
export function isShadowRoot(node) {
|
|
160
|
+
if (typeof ShadowRoot === "undefined") {
|
|
161
|
+
return false;
|
|
162
|
+
}
|
|
163
|
+
const OwnElement = getWindow(node).ShadowRoot;
|
|
164
|
+
const testNode = node;
|
|
165
|
+
return node instanceof OwnElement || testNode instanceof ShadowRoot;
|
|
166
|
+
}
|
|
167
|
+
export function isHTMLElement(value) {
|
|
168
|
+
return value instanceof getWindow(value).HTMLElement;
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=topLayerOverTransforms.dev.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["topLayerOverTransforms.ts"],
|
|
4
|
+
"sourcesContent": ["/*\nCopyright 2022 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 type { MiddlewareArguments } from '@floating-ui/dom';\n\nexport const topLayerOverTransforms = () => ({\n name: 'topLayer',\n async fn(middlewareArguments: MiddlewareArguments) {\n const {\n x,\n y,\n elements: { reference, floating },\n } = middlewareArguments;\n let onTopLayer = false;\n let topLayerIsFloating = false;\n const diffCoords = {\n x: 0,\n y: 0,\n };\n try {\n onTopLayer = onTopLayer || floating.matches(':popover-open');\n // eslint-disable-next-line no-empty\n } catch (e) {}\n try {\n onTopLayer = onTopLayer || floating.matches(':open');\n // eslint-disable-next-line no-empty\n } catch (e) {}\n try {\n onTopLayer = onTopLayer || floating.matches(':modal');\n // eslint-disable-next-line no-empty\n } catch (e) {}\n topLayerIsFloating = onTopLayer;\n if (!onTopLayer) {\n const dialogAncestorQueryEvent = new Event(\n 'floating-ui-dialog-test',\n { composed: true, bubbles: true }\n );\n floating.addEventListener(\n 'floating-ui-dialog-test',\n (event: Event) => {\n (event.composedPath() as unknown as Element[]).forEach(\n (el) => {\n if (el === floating || el.localName !== 'dialog')\n return;\n try {\n onTopLayer = onTopLayer || el.matches(':modal');\n if (onTopLayer) {\n // console.log(el);\n }\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n );\n },\n { once: true }\n );\n floating.dispatchEvent(dialogAncestorQueryEvent);\n }\n let overTransforms = false;\n const containingBlock = getContainingBlock(reference as Element);\n if (containingBlock !== null && !isWindow(containingBlock)) {\n overTransforms = true;\n }\n\n if (onTopLayer && overTransforms) {\n const rect = containingBlock!.getBoundingClientRect();\n diffCoords.x = rect.x;\n diffCoords.y = rect.y;\n }\n\n if (onTopLayer && topLayerIsFloating) {\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: diffCoords,\n };\n }\n\n if (onTopLayer) {\n return {\n x,\n y,\n data: diffCoords,\n };\n }\n\n return {\n x: x - diffCoords.x,\n y: y - diffCoords.y,\n data: diffCoords,\n };\n },\n});\n\n/* COPY/PASTE from Floating UI */\n\nfunction getContainingBlock(element: Element) {\n let currentNode: Node | null = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else {\n const parent = (\n currentNode.assignedSlot\n ? currentNode.assignedSlot\n : currentNode.parentNode\n ) as Node;\n currentNode = isShadowRoot(parent) ? parent.host : parent;\n }\n }\n\n return null;\n}\n\nexport function isLastTraversableNode(node: Node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\n\nfunction isContainingBlock(element: HTMLElement) {\n const safari = isSafari();\n const css = getComputedStyle(element) as CSSStyleDeclaration & {\n backdropFilter: string;\n };\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n return (\n css.transform !== 'none' ||\n css.perspective !== 'none' ||\n (!safari &&\n (css.backdropFilter ? css.backdropFilter !== 'none' : false)) ||\n (!safari && (css.filter ? css.filter !== 'none' : false)) ||\n ['transform', 'perspective', 'filter'].some((value) =>\n (css.willChange || '').includes(value)\n ) ||\n ['paint', 'layout', 'strict', 'content'].some((value) =>\n (css.contain || '').includes(value)\n )\n );\n}\n\nexport function isSafari(): boolean {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\n\ninterface NavigatorUAData {\n brands: Array<{ brand: string; version: string }>;\n mobile: boolean;\n platform: string;\n}\n\nexport function getUAString(): string {\n const uaData = (navigator as any).userAgentData as\n | NavigatorUAData\n | undefined;\n\n if (uaData?.brands) {\n return uaData.brands\n .map((item) => `${item.brand}/${item.version}`)\n .join(' ');\n }\n\n return navigator.userAgent;\n}\n\nexport function getParentNode(node: Node): Node {\n if (getNodeName(node) === 'html') {\n return node;\n }\n\n return (\n // this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // @ts-ignore\n node.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n node.parentNode || // DOM Element detected\n (isShadowRoot(node) ? node.host : null) || // ShadowRoot detected\n getDocumentElement(node) // fallback\n );\n}\n\nexport function getNodeName(node: Node | Window): string {\n return isWindow(node)\n ? ''\n : node\n ? (node.nodeName || '').toLowerCase()\n : '';\n}\n\nexport function getDocumentElement(node: Node | Window): HTMLElement {\n return (\n (isNode(node) ? node.ownerDocument : node.document) || window.document\n ).documentElement;\n}\n\nexport function isNode(value: any): value is Node {\n return value instanceof (getWindow(value) as unknown as { Node: any }).Node;\n}\n\nexport function isWindow(value: any): value is Window {\n return (\n value &&\n value.document &&\n value.location &&\n value.alert &&\n value.setInterval\n );\n}\n\nexport function getWindow(node: Node | Window): Window {\n if (node == null) {\n return window;\n }\n\n if (!isWindow(node)) {\n const ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}\n\nexport function isShadowRoot(node: Node): node is ShadowRoot {\n // Browsers without `ShadowRoot` support\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n const OwnElement = (\n getWindow(node) as unknown as { ShadowRoot: ShadowRoot }\n ).ShadowRoot;\n const testNode = node as Node;\n return (\n node instanceof (OwnElement as unknown as any) ||\n testNode instanceof ShadowRoot\n );\n}\n\nexport function isHTMLElement(value: any): value is HTMLElement {\n return (\n value instanceof\n (getWindow(value) as unknown as { HTMLElement: any }).HTMLElement\n );\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";export const topLayerOverTransforms=()=>({name:"topLayer",async fn(e){const{x:t,y:n,elements:{reference:s,floating:i}}=e;let o=!1,u=!1;const r={x:0,y:0};try{o=o||i.matches(":popover-open")}catch(a){}try{o=o||i.matches(":open")}catch(a){}try{o=o||i.matches(":modal")}catch(a){}if(u=o,!o){const a=new Event("floating-ui-dialog-test",{composed:!0,bubbles:!0});i.addEventListener("floating-ui-dialog-test",f=>{f.composedPath().forEach(l=>{if(!(l===i||l.localName!=="dialog"))try{o=o||l.matches(":modal")}catch(g){}})},{once:!0}),i.dispatchEvent(a)}let d=!1;const c=m(s);if(c!==null&&!isWindow(c)&&(d=!0),o&&d){const a=c.getBoundingClientRect();r.x=a.x,r.y=a.y}return o&&u?{x:t+r.x,y:n+r.y,data:r}:o?{x:t,y:n,data:r}:{x:t-r.x,y:n-r.y,data:r}}});function m(e){let t=getParentNode(e);for(isShadowRoot(t)&&(t=t.host);isHTMLElement(t)&&!isLastTraversableNode(t);){if(p(t))return t;{const n=t.assignedSlot?t.assignedSlot:t.parentNode;t=isShadowRoot(n)?n.host:n}}return null}export function isLastTraversableNode(e){return["html","body","#document"].includes(getNodeName(e))}function p(e){const t=isSafari(),n=getComputedStyle(e);return n.transform!=="none"||n.perspective!=="none"||!t&&(n.backdropFilter?n.backdropFilter!=="none":!1)||!t&&(n.filter?n.filter!=="none":!1)||["transform","perspective","filter"].some(s=>(n.willChange||"").includes(s))||["paint","layout","strict","content"].some(s=>(n.contain||"").includes(s))}export function isSafari(){return typeof CSS=="undefined"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}export function getUAString(){const e=navigator.userAgentData;return e!=null&&e.brands?e.brands.map(t=>`${t.brand}/${t.version}`).join(" "):navigator.userAgent}export function getParentNode(e){return getNodeName(e)==="html"?e:e.assignedSlot||e.parentNode||(isShadowRoot(e)?e.host:null)||getDocumentElement(e)}export function getNodeName(e){return isWindow(e)?"":e?(e.nodeName||"").toLowerCase():""}export function getDocumentElement(e){return((isNode(e)?e.ownerDocument:e.document)||window.document).documentElement}export function isNode(e){return e instanceof getWindow(e).Node}export function isWindow(e){return e&&e.document&&e.location&&e.alert&&e.setInterval}export function getWindow(e){if(e==null)return window;if(!isWindow(e)){const t=e.ownerDocument;return t&&t.defaultView||window}return e}export function isShadowRoot(e){if(typeof ShadowRoot=="undefined")return!1;const t=getWindow(e).ShadowRoot,n=e;return e instanceof t||n instanceof ShadowRoot}export function isHTMLElement(e){return e instanceof getWindow(e).HTMLElement}
|
|
2
|
+
//# sourceMappingURL=topLayerOverTransforms.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["topLayerOverTransforms.ts"],
|
|
4
|
+
"sourcesContent": ["/*\nCopyright 2022 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 type { MiddlewareArguments } from '@floating-ui/dom';\n\nexport const topLayerOverTransforms = () => ({\n name: 'topLayer',\n async fn(middlewareArguments: MiddlewareArguments) {\n const {\n x,\n y,\n elements: { reference, floating },\n } = middlewareArguments;\n let onTopLayer = false;\n let topLayerIsFloating = false;\n const diffCoords = {\n x: 0,\n y: 0,\n };\n try {\n onTopLayer = onTopLayer || floating.matches(':popover-open');\n // eslint-disable-next-line no-empty\n } catch (e) {}\n try {\n onTopLayer = onTopLayer || floating.matches(':open');\n // eslint-disable-next-line no-empty\n } catch (e) {}\n try {\n onTopLayer = onTopLayer || floating.matches(':modal');\n // eslint-disable-next-line no-empty\n } catch (e) {}\n topLayerIsFloating = onTopLayer;\n if (!onTopLayer) {\n const dialogAncestorQueryEvent = new Event(\n 'floating-ui-dialog-test',\n { composed: true, bubbles: true }\n );\n floating.addEventListener(\n 'floating-ui-dialog-test',\n (event: Event) => {\n (event.composedPath() as unknown as Element[]).forEach(\n (el) => {\n if (el === floating || el.localName !== 'dialog')\n return;\n try {\n onTopLayer = onTopLayer || el.matches(':modal');\n if (onTopLayer) {\n // console.log(el);\n }\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n );\n },\n { once: true }\n );\n floating.dispatchEvent(dialogAncestorQueryEvent);\n }\n let overTransforms = false;\n const containingBlock = getContainingBlock(reference as Element);\n if (containingBlock !== null && !isWindow(containingBlock)) {\n overTransforms = true;\n }\n\n if (onTopLayer && overTransforms) {\n const rect = containingBlock!.getBoundingClientRect();\n diffCoords.x = rect.x;\n diffCoords.y = rect.y;\n }\n\n if (onTopLayer && topLayerIsFloating) {\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: diffCoords,\n };\n }\n\n if (onTopLayer) {\n return {\n x,\n y,\n data: diffCoords,\n };\n }\n\n return {\n x: x - diffCoords.x,\n y: y - diffCoords.y,\n data: diffCoords,\n };\n },\n});\n\n/* COPY/PASTE from Floating UI */\n\nfunction getContainingBlock(element: Element) {\n let currentNode: Node | null = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else {\n const parent = (\n currentNode.assignedSlot\n ? currentNode.assignedSlot\n : currentNode.parentNode\n ) as Node;\n currentNode = isShadowRoot(parent) ? parent.host : parent;\n }\n }\n\n return null;\n}\n\nexport function isLastTraversableNode(node: Node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\n\nfunction isContainingBlock(element: HTMLElement) {\n const safari = isSafari();\n const css = getComputedStyle(element) as CSSStyleDeclaration & {\n backdropFilter: string;\n };\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n return (\n css.transform !== 'none' ||\n css.perspective !== 'none' ||\n (!safari &&\n (css.backdropFilter ? css.backdropFilter !== 'none' : false)) ||\n (!safari && (css.filter ? css.filter !== 'none' : false)) ||\n ['transform', 'perspective', 'filter'].some((value) =>\n (css.willChange || '').includes(value)\n ) ||\n ['paint', 'layout', 'strict', 'content'].some((value) =>\n (css.contain || '').includes(value)\n )\n );\n}\n\nexport function isSafari(): boolean {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\n\ninterface NavigatorUAData {\n brands: Array<{ brand: string; version: string }>;\n mobile: boolean;\n platform: string;\n}\n\nexport function getUAString(): string {\n const uaData = (navigator as any).userAgentData as\n | NavigatorUAData\n | undefined;\n\n if (uaData?.brands) {\n return uaData.brands\n .map((item) => `${item.brand}/${item.version}`)\n .join(' ');\n }\n\n return navigator.userAgent;\n}\n\nexport function getParentNode(node: Node): Node {\n if (getNodeName(node) === 'html') {\n return node;\n }\n\n return (\n // this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // @ts-ignore\n node.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n node.parentNode || // DOM Element detected\n (isShadowRoot(node) ? node.host : null) || // ShadowRoot detected\n getDocumentElement(node) // fallback\n );\n}\n\nexport function getNodeName(node: Node | Window): string {\n return isWindow(node)\n ? ''\n : node\n ? (node.nodeName || '').toLowerCase()\n : '';\n}\n\nexport function getDocumentElement(node: Node | Window): HTMLElement {\n return (\n (isNode(node) ? node.ownerDocument : node.document) || window.document\n ).documentElement;\n}\n\nexport function isNode(value: any): value is Node {\n return value instanceof (getWindow(value) as unknown as { Node: any }).Node;\n}\n\nexport function isWindow(value: any): value is Window {\n return (\n value &&\n value.document &&\n value.location &&\n value.alert &&\n value.setInterval\n );\n}\n\nexport function getWindow(node: Node | Window): Window {\n if (node == null) {\n return window;\n }\n\n if (!isWindow(node)) {\n const ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}\n\nexport function isShadowRoot(node: Node): node is ShadowRoot {\n // Browsers without `ShadowRoot` support\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n const OwnElement = (\n getWindow(node) as unknown as { ShadowRoot: ShadowRoot }\n ).ShadowRoot;\n const testNode = node as Node;\n return (\n node instanceof (OwnElement as unknown as any) ||\n testNode instanceof ShadowRoot\n );\n}\n\nexport function isHTMLElement(value: any): value is HTMLElement {\n return (\n value instanceof\n (getWindow(value) as unknown as { HTMLElement: any }).HTMLElement\n );\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["middlewareArguments", "x", "y", "reference", "floating", "onTopLayer", "topLayerIsFloating", "diffCoords", "e", "dialogAncestorQueryEvent", "event", "el", "overTransforms", "containingBlock", "getContainingBlock", "rect", "element", "currentNode", "isContainingBlock", "parent", "node", "safari", "css", "value", "uaData", "item", "ownerDocument", "OwnElement", "testNode"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
import { html } from "@spectrum-web-components/base";
|
|
3
|
+
import { ifDefined } from "@spectrum-web-components/base/src/directives.js";
|
|
4
|
+
import "@spectrum-web-components/overlay/sp-overlay.js";
|
|
5
|
+
import "@spectrum-web-components/action-button/sp-action-button.js";
|
|
6
|
+
import "@spectrum-web-components/action-group/sp-action-group.js";
|
|
7
|
+
import "@spectrum-web-components/popover/sp-popover.js";
|
|
8
|
+
import "@spectrum-web-components/icons-workflow/icons/sp-icon-anchor-select.js";
|
|
9
|
+
import "@spectrum-web-components/icons-workflow/icons/sp-icon-polygon-select.js";
|
|
10
|
+
import "@spectrum-web-components/icons-workflow/icons/sp-icon-rect-select.js";
|
|
11
|
+
import { notAgain } from "../../dialog/stories/dialog-base.stories.js";
|
|
12
|
+
export default {
|
|
13
|
+
title: "Overlay Element",
|
|
14
|
+
component: "sp-overlay",
|
|
15
|
+
args: {
|
|
16
|
+
open: true,
|
|
17
|
+
delayed: false
|
|
18
|
+
},
|
|
19
|
+
argTypes: {
|
|
20
|
+
open: {
|
|
21
|
+
name: "open",
|
|
22
|
+
type: { name: "boolean", required: false },
|
|
23
|
+
description: "Whether the second accordion item is open.",
|
|
24
|
+
table: {
|
|
25
|
+
type: { summary: "boolean" },
|
|
26
|
+
defaultValue: { summary: false }
|
|
27
|
+
},
|
|
28
|
+
control: {
|
|
29
|
+
type: "boolean"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
delayed: {
|
|
33
|
+
name: "delayed",
|
|
34
|
+
type: { name: "boolean", required: false },
|
|
35
|
+
description: "Whether the tooltips are delayed.",
|
|
36
|
+
table: {
|
|
37
|
+
type: { summary: "boolean" },
|
|
38
|
+
defaultValue: { summary: false }
|
|
39
|
+
},
|
|
40
|
+
control: {
|
|
41
|
+
type: "boolean"
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
const Template = ({
|
|
47
|
+
interaction,
|
|
48
|
+
open,
|
|
49
|
+
placement,
|
|
50
|
+
type
|
|
51
|
+
}) => html`
|
|
52
|
+
<sp-action-button id="trigger">Open the overlay</sp-action-button>
|
|
53
|
+
<sp-overlay
|
|
54
|
+
?open=${open}
|
|
55
|
+
trigger="trigger@${interaction}"
|
|
56
|
+
type=${ifDefined(type)}
|
|
57
|
+
placement=${ifDefined(placement)}
|
|
58
|
+
offset="-10"
|
|
59
|
+
>
|
|
60
|
+
<sp-popover dialog>
|
|
61
|
+
<p>
|
|
62
|
+
Content goes here.
|
|
63
|
+
${type === "modal" || type === "page" ? html`
|
|
64
|
+
Or, a link,
|
|
65
|
+
<sp-link
|
|
66
|
+
href="https://opensource.adobe.com/spectrum-web-components"
|
|
67
|
+
>
|
|
68
|
+
Spectrum Web Components
|
|
69
|
+
</sp-link>
|
|
70
|
+
.
|
|
71
|
+
` : ""}
|
|
72
|
+
</p>
|
|
73
|
+
</sp-popover>
|
|
74
|
+
</sp-overlay>
|
|
75
|
+
`;
|
|
76
|
+
export const modal = (args) => Template(args);
|
|
77
|
+
modal.args = {
|
|
78
|
+
interaction: "click",
|
|
79
|
+
placement: "right",
|
|
80
|
+
type: "modal"
|
|
81
|
+
};
|
|
82
|
+
export const page = ({
|
|
83
|
+
interaction,
|
|
84
|
+
open,
|
|
85
|
+
placement,
|
|
86
|
+
type
|
|
87
|
+
}) => html`
|
|
88
|
+
<sp-action-button id="trigger">Open the overlay</sp-action-button>
|
|
89
|
+
<sp-overlay
|
|
90
|
+
?open=${open}
|
|
91
|
+
trigger="trigger@${interaction}"
|
|
92
|
+
type=${ifDefined(type)}
|
|
93
|
+
placement=${ifDefined(placement)}
|
|
94
|
+
>
|
|
95
|
+
${notAgain()}
|
|
96
|
+
</sp-overlay>
|
|
97
|
+
`;
|
|
98
|
+
page.args = {
|
|
99
|
+
interaction: "click",
|
|
100
|
+
placement: "right",
|
|
101
|
+
type: "page"
|
|
102
|
+
};
|
|
103
|
+
export const click = (args) => Template(args);
|
|
104
|
+
click.args = {
|
|
105
|
+
interaction: "click",
|
|
106
|
+
placement: "right",
|
|
107
|
+
type: "auto"
|
|
108
|
+
};
|
|
109
|
+
export const hover = (args) => Template(args);
|
|
110
|
+
hover.args = {
|
|
111
|
+
interaction: "hover",
|
|
112
|
+
placement: "right"
|
|
113
|
+
};
|
|
114
|
+
export const longpress = (args) => Template(args);
|
|
115
|
+
longpress.args = {
|
|
116
|
+
interaction: "longpress",
|
|
117
|
+
placement: "right",
|
|
118
|
+
type: "auto"
|
|
119
|
+
};
|
|
120
|
+
export const all = ({
|
|
121
|
+
delayed
|
|
122
|
+
}) => html`
|
|
123
|
+
<sp-action-button id="trigger" hold-affordance>
|
|
124
|
+
Open the overlay
|
|
125
|
+
</sp-action-button>
|
|
126
|
+
<sp-overlay trigger="trigger@click" type="auto" placement="right">
|
|
127
|
+
<sp-popover dialog>Click content</sp-popover>
|
|
128
|
+
</sp-overlay>
|
|
129
|
+
<sp-overlay ?delayed=${delayed} trigger="trigger@hover">
|
|
130
|
+
<sp-tooltip>Hover content</sp-tooltip>
|
|
131
|
+
</sp-overlay>
|
|
132
|
+
<sp-overlay trigger="trigger@longpress" type="auto" placement="right">
|
|
133
|
+
<sp-popover dialog>Longpress content</sp-popover>
|
|
134
|
+
</sp-overlay>
|
|
135
|
+
`;
|
|
136
|
+
export const actionGroup = ({
|
|
137
|
+
delayed
|
|
138
|
+
}) => {
|
|
139
|
+
const popoverOffset = [6, -9];
|
|
140
|
+
return html`
|
|
141
|
+
<style>
|
|
142
|
+
sp-popover sp-action-group {
|
|
143
|
+
padding: var(--spectrum-actiongroup-vertical-spacing-regular);
|
|
144
|
+
}
|
|
145
|
+
sp-popover {
|
|
146
|
+
position: static;
|
|
147
|
+
}
|
|
148
|
+
</style>
|
|
149
|
+
<sp-popover open>
|
|
150
|
+
<sp-action-group vertical quiet emphasized selects="single">
|
|
151
|
+
<sp-action-button id="trigger-1" hold-affordance>
|
|
152
|
+
<sp-icon-anchor-select slot="icon"></sp-icon-anchor-select>
|
|
153
|
+
</sp-action-button>
|
|
154
|
+
<sp-action-button id="trigger-2" hold-affordance>
|
|
155
|
+
<sp-icon-polygon-select
|
|
156
|
+
slot="icon"
|
|
157
|
+
></sp-icon-polygon-select>
|
|
158
|
+
</sp-action-button>
|
|
159
|
+
<sp-action-button id="trigger-3" hold-affordance>
|
|
160
|
+
<sp-icon-rect-select slot="icon"></sp-icon-rect-select>
|
|
161
|
+
</sp-action-button>
|
|
162
|
+
</sp-action-group>
|
|
163
|
+
</sp-popover>
|
|
164
|
+
<sp-overlay ?delayed=${delayed} trigger="trigger-1@hover">
|
|
165
|
+
<sp-tooltip>Hover</sp-tooltip>
|
|
166
|
+
</sp-overlay>
|
|
167
|
+
<sp-overlay
|
|
168
|
+
trigger="trigger-1@longpress"
|
|
169
|
+
type="auto"
|
|
170
|
+
placement="right-start"
|
|
171
|
+
.offset=${popoverOffset}
|
|
172
|
+
>
|
|
173
|
+
<sp-popover tip>
|
|
174
|
+
<sp-action-group vertical quiet>
|
|
175
|
+
<sp-action-button>
|
|
176
|
+
<sp-icon-anchor-select
|
|
177
|
+
slot="icon"
|
|
178
|
+
></sp-icon-anchor-select>
|
|
179
|
+
</sp-action-button>
|
|
180
|
+
<sp-action-button>
|
|
181
|
+
<sp-icon-polygon-select
|
|
182
|
+
slot="icon"
|
|
183
|
+
></sp-icon-polygon-select>
|
|
184
|
+
</sp-action-button>
|
|
185
|
+
<sp-action-button>
|
|
186
|
+
<sp-icon-rect-select slot="icon"></sp-icon-rect-select>
|
|
187
|
+
</sp-action-button>
|
|
188
|
+
</sp-action-group>
|
|
189
|
+
</sp-popover>
|
|
190
|
+
</sp-overlay>
|
|
191
|
+
<sp-overlay ?delayed=${delayed} trigger="trigger-2@hover">
|
|
192
|
+
<sp-tooltip>Hover</sp-tooltip>
|
|
193
|
+
</sp-overlay>
|
|
194
|
+
<sp-overlay
|
|
195
|
+
trigger="trigger-2@longpress"
|
|
196
|
+
type="auto"
|
|
197
|
+
placement="right-start"
|
|
198
|
+
.offset=${popoverOffset}
|
|
199
|
+
>
|
|
200
|
+
<sp-popover tip>
|
|
201
|
+
<sp-action-group vertical quiet>
|
|
202
|
+
<sp-action-button>
|
|
203
|
+
<sp-icon-anchor-select
|
|
204
|
+
slot="icon"
|
|
205
|
+
></sp-icon-anchor-select>
|
|
206
|
+
</sp-action-button>
|
|
207
|
+
<sp-action-button>
|
|
208
|
+
<sp-icon-polygon-select
|
|
209
|
+
slot="icon"
|
|
210
|
+
></sp-icon-polygon-select>
|
|
211
|
+
</sp-action-button>
|
|
212
|
+
<sp-action-button>
|
|
213
|
+
<sp-icon-rect-select slot="icon"></sp-icon-rect-select>
|
|
214
|
+
</sp-action-button>
|
|
215
|
+
</sp-action-group>
|
|
216
|
+
</sp-popover>
|
|
217
|
+
</sp-overlay>
|
|
218
|
+
<sp-overlay ?delayed=${delayed} trigger="trigger-3@hover">
|
|
219
|
+
<sp-tooltip>Hover</sp-tooltip>
|
|
220
|
+
</sp-overlay>
|
|
221
|
+
<sp-overlay
|
|
222
|
+
trigger="trigger-3@longpress"
|
|
223
|
+
type="auto"
|
|
224
|
+
placement="right-start"
|
|
225
|
+
.offset=${popoverOffset}
|
|
226
|
+
>
|
|
227
|
+
<sp-popover tip>
|
|
228
|
+
<sp-action-group vertical quiet>
|
|
229
|
+
<sp-action-button>
|
|
230
|
+
<sp-icon-anchor-select
|
|
231
|
+
slot="icon"
|
|
232
|
+
></sp-icon-anchor-select>
|
|
233
|
+
</sp-action-button>
|
|
234
|
+
<sp-action-button>
|
|
235
|
+
<sp-icon-polygon-select
|
|
236
|
+
slot="icon"
|
|
237
|
+
></sp-icon-polygon-select>
|
|
238
|
+
</sp-action-button>
|
|
239
|
+
<sp-action-button>
|
|
240
|
+
<sp-icon-rect-select slot="icon"></sp-icon-rect-select>
|
|
241
|
+
</sp-action-button>
|
|
242
|
+
</sp-action-group>
|
|
243
|
+
</sp-popover>
|
|
244
|
+
</sp-overlay>
|
|
245
|
+
`;
|
|
246
|
+
};
|
|
247
|
+
//# sourceMappingURL=overlay-element.stories.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["overlay-element.stories.ts"],
|
|
4
|
+
"sourcesContent": ["/*\nCopyright 2022 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\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 { html, TemplateResult } from '@spectrum-web-components/base';\nimport { ifDefined } from '@spectrum-web-components/base/src/directives.js';\nimport '@spectrum-web-components/overlay/sp-overlay.js';\nimport '@spectrum-web-components/action-button/sp-action-button.js';\nimport '@spectrum-web-components/action-group/sp-action-group.js';\nimport '@spectrum-web-components/popover/sp-popover.js';\nimport '@spectrum-web-components/icons-workflow/icons/sp-icon-anchor-select.js';\nimport '@spectrum-web-components/icons-workflow/icons/sp-icon-polygon-select.js';\nimport '@spectrum-web-components/icons-workflow/icons/sp-icon-rect-select.js';\nimport { Placement } from '@floating-ui/dom';\nimport { OverlayTypes } from '../src/overlay-types.js';\nimport { notAgain } from '../../dialog/stories/dialog-base.stories.js';\n\nexport default {\n title: 'Overlay Element',\n component: 'sp-overlay',\n args: {\n open: true,\n delayed: false,\n },\n argTypes: {\n open: {\n name: 'open',\n type: { name: 'boolean', required: false },\n description: 'Whether the second accordion item is open.',\n table: {\n type: { summary: 'boolean' },\n defaultValue: { summary: false },\n },\n control: {\n type: 'boolean',\n },\n },\n delayed: {\n name: 'delayed',\n type: { name: 'boolean', required: false },\n description: 'Whether the tooltips are delayed.',\n table: {\n type: { summary: 'boolean' },\n defaultValue: { summary: false },\n },\n control: {\n type: 'boolean',\n },\n },\n },\n};\n\ntype Properties = {\n delayed: boolean;\n interaction: 'click' | 'hover' | 'longpress';\n open?: boolean;\n placement?: Placement;\n type?: OverlayTypes;\n};\n\nconst Template = ({\n interaction,\n open,\n placement,\n type,\n}: Properties): TemplateResult => html`\n <sp-action-button id=\"trigger\">Open the overlay</sp-action-button>\n <sp-overlay\n ?open=${open}\n trigger=\"trigger@${interaction}\"\n type=${ifDefined(type)}\n placement=${ifDefined(placement)}\n offset=\"-10\"\n >\n <sp-popover dialog>\n <p>\n Content goes here.\n ${type === 'modal' || type === 'page'\n ? html`\n Or, a link,\n <sp-link\n href=\"https://opensource.adobe.com/spectrum-web-components\"\n >\n Spectrum Web Components\n </sp-link>\n .\n `\n : ''}\n </p>\n </sp-popover>\n </sp-overlay>\n`;\n\nexport const modal = (args: Properties): TemplateResult => Template(args);\nmodal.args = {\n interaction: 'click',\n placement: 'right',\n type: 'modal',\n};\n\nexport const page = ({\n interaction,\n open,\n placement,\n type,\n}: Properties): TemplateResult => html`\n <sp-action-button id=\"trigger\">Open the overlay</sp-action-button>\n <sp-overlay\n ?open=${open}\n trigger=\"trigger@${interaction}\"\n type=${ifDefined(type)}\n placement=${ifDefined(placement)}\n >\n ${notAgain()}\n </sp-overlay>\n`;\npage.args = {\n interaction: 'click',\n placement: 'right',\n type: 'page',\n};\n\nexport const click = (args: Properties): TemplateResult => Template(args);\nclick.args = {\n interaction: 'click',\n placement: 'right',\n type: 'auto',\n};\n\nexport const hover = (args: Properties): TemplateResult => Template(args);\nhover.args = {\n interaction: 'hover',\n placement: 'right',\n};\n\nexport const longpress = (args: Properties): TemplateResult => Template(args);\nlongpress.args = {\n interaction: 'longpress',\n placement: 'right',\n type: 'auto',\n};\n\nexport const all = ({\n delayed,\n}: Properties): TemplateResult => html`\n <sp-action-button id=\"trigger\" hold-affordance>\n Open the overlay\n </sp-action-button>\n <sp-overlay trigger=\"trigger@click\" type=\"auto\" placement=\"right\">\n <sp-popover dialog>Click content</sp-popover>\n </sp-overlay>\n <sp-overlay ?delayed=${delayed} trigger=\"trigger@hover\">\n <sp-tooltip>Hover content</sp-tooltip>\n </sp-overlay>\n <sp-overlay trigger=\"trigger@longpress\" type=\"auto\" placement=\"right\">\n <sp-popover dialog>Longpress content</sp-popover>\n </sp-overlay>\n`;\n\nexport const actionGroup = ({\n delayed\n}: Properties): TemplateResult => {\n const popoverOffset = [6, -9] as [number, number];\n return html`\n <style>\n sp-popover sp-action-group {\n padding: var(--spectrum-actiongroup-vertical-spacing-regular);\n }\n sp-popover {\n position: static;\n }\n </style>\n <sp-popover open>\n <sp-action-group vertical quiet emphasized selects=\"single\">\n <sp-action-button id=\"trigger-1\" hold-affordance>\n <sp-icon-anchor-select slot=\"icon\"></sp-icon-anchor-select>\n </sp-action-button>\n <sp-action-button id=\"trigger-2\" hold-affordance>\n <sp-icon-polygon-select\n slot=\"icon\"\n ></sp-icon-polygon-select>\n </sp-action-button>\n <sp-action-button id=\"trigger-3\" hold-affordance>\n <sp-icon-rect-select slot=\"icon\"></sp-icon-rect-select>\n </sp-action-button>\n </sp-action-group>\n </sp-popover>\n <sp-overlay ?delayed=${delayed} trigger=\"trigger-1@hover\">\n <sp-tooltip>Hover</sp-tooltip>\n </sp-overlay>\n <sp-overlay\n trigger=\"trigger-1@longpress\"\n type=\"auto\"\n placement=\"right-start\"\n .offset=${popoverOffset}\n >\n <sp-popover tip>\n <sp-action-group vertical quiet>\n <sp-action-button>\n <sp-icon-anchor-select\n slot=\"icon\"\n ></sp-icon-anchor-select>\n </sp-action-button>\n <sp-action-button>\n <sp-icon-polygon-select\n slot=\"icon\"\n ></sp-icon-polygon-select>\n </sp-action-button>\n <sp-action-button>\n <sp-icon-rect-select slot=\"icon\"></sp-icon-rect-select>\n </sp-action-button>\n </sp-action-group>\n </sp-popover>\n </sp-overlay>\n <sp-overlay ?delayed=${delayed} trigger=\"trigger-2@hover\">\n <sp-tooltip>Hover</sp-tooltip>\n </sp-overlay>\n <sp-overlay\n trigger=\"trigger-2@longpress\"\n type=\"auto\"\n placement=\"right-start\"\n .offset=${popoverOffset}\n >\n <sp-popover tip>\n <sp-action-group vertical quiet>\n <sp-action-button>\n <sp-icon-anchor-select\n slot=\"icon\"\n ></sp-icon-anchor-select>\n </sp-action-button>\n <sp-action-button>\n <sp-icon-polygon-select\n slot=\"icon\"\n ></sp-icon-polygon-select>\n </sp-action-button>\n <sp-action-button>\n <sp-icon-rect-select slot=\"icon\"></sp-icon-rect-select>\n </sp-action-button>\n </sp-action-group>\n </sp-popover>\n </sp-overlay>\n <sp-overlay ?delayed=${delayed} trigger=\"trigger-3@hover\">\n <sp-tooltip>Hover</sp-tooltip>\n </sp-overlay>\n <sp-overlay\n trigger=\"trigger-3@longpress\"\n type=\"auto\"\n placement=\"right-start\"\n .offset=${popoverOffset}\n >\n <sp-popover tip>\n <sp-action-group vertical quiet>\n <sp-action-button>\n <sp-icon-anchor-select\n slot=\"icon\"\n ></sp-icon-anchor-select>\n </sp-action-button>\n <sp-action-button>\n <sp-icon-polygon-select\n slot=\"icon\"\n ></sp-icon-polygon-select>\n </sp-action-button>\n <sp-action-button>\n <sp-icon-rect-select slot=\"icon\"></sp-icon-rect-select>\n </sp-action-button>\n </sp-action-group>\n </sp-popover>\n </sp-overlay>\n `;\n};\n"],
|
|
5
|
+
"mappings": ";AAWA,SAAS,YAA4B;AACrC,SAAS,iBAAiB;AAC1B,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AAGP,SAAS,gBAAgB;AAEzB,eAAe;AAAA,EACX,OAAO;AAAA,EACP,WAAW;AAAA,EACX,MAAM;AAAA,IACF,MAAM;AAAA,IACN,SAAS;AAAA,EACb;AAAA,EACA,UAAU;AAAA,IACN,MAAM;AAAA,MACF,MAAM;AAAA,MACN,MAAM,EAAE,MAAM,WAAW,UAAU,MAAM;AAAA,MACzC,aAAa;AAAA,MACb,OAAO;AAAA,QACH,MAAM,EAAE,SAAS,UAAU;AAAA,QAC3B,cAAc,EAAE,SAAS,MAAM;AAAA,MACnC;AAAA,MACA,SAAS;AAAA,QACL,MAAM;AAAA,MACV;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,MACL,MAAM;AAAA,MACN,MAAM,EAAE,MAAM,WAAW,UAAU,MAAM;AAAA,MACzC,aAAa;AAAA,MACb,OAAO;AAAA,QACH,MAAM,EAAE,SAAS,UAAU;AAAA,QAC3B,cAAc,EAAE,SAAS,MAAM;AAAA,MACnC;AAAA,MACA,SAAS;AAAA,QACL,MAAM;AAAA,MACV;AAAA,IACJ;AAAA,EACJ;AACJ;AAUA,MAAM,WAAW,CAAC;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAAkC;AAAA;AAAA;AAAA,gBAGlB;AAAA,2BACW;AAAA,eACZ,UAAU,IAAI;AAAA,oBACT,UAAU,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAMrB,SAAS,WAAW,SAAS,SACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BASA;AAAA;AAAA;AAAA;AAAA;AAMf,aAAM,QAAQ,CAAC,SAAqC,SAAS,IAAI;AACxE,MAAM,OAAO;AAAA,EACT,aAAa;AAAA,EACb,WAAW;AAAA,EACX,MAAM;AACV;AAEO,aAAM,OAAO,CAAC;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAAkC;AAAA;AAAA;AAAA,gBAGlB;AAAA,2BACW;AAAA,eACZ,UAAU,IAAI;AAAA,oBACT,UAAU,SAAS;AAAA;AAAA,UAE7B,SAAS;AAAA;AAAA;AAGnB,KAAK,OAAO;AAAA,EACR,aAAa;AAAA,EACb,WAAW;AAAA,EACX,MAAM;AACV;AAEO,aAAM,QAAQ,CAAC,SAAqC,SAAS,IAAI;AACxE,MAAM,OAAO;AAAA,EACT,aAAa;AAAA,EACb,WAAW;AAAA,EACX,MAAM;AACV;AAEO,aAAM,QAAQ,CAAC,SAAqC,SAAS,IAAI;AACxE,MAAM,OAAO;AAAA,EACT,aAAa;AAAA,EACb,WAAW;AACf;AAEO,aAAM,YAAY,CAAC,SAAqC,SAAS,IAAI;AAC5E,UAAU,OAAO;AAAA,EACb,aAAa;AAAA,EACb,WAAW;AAAA,EACX,MAAM;AACV;AAEO,aAAM,MAAM,CAAC;AAAA,EAChB;AACJ,MAAkC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAOP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQpB,aAAM,cAAc,CAAC;AAAA,EACxB;AACJ,MAAkC;AAC9B,QAAM,gBAAgB,CAAC,GAAG,EAAE;AAC5B,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+BAwBoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAOT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+BAoBS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAOT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+BAoBS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAOT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBtB;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -99,7 +99,7 @@ class OverlayDrag extends LitElement {
|
|
|
99
99
|
if (!this.targetElement)
|
|
100
100
|
return;
|
|
101
101
|
this.targetElement.addEventListener(
|
|
102
|
-
"
|
|
102
|
+
"pointerdown",
|
|
103
103
|
(event2) => this.onMouseDown(event2)
|
|
104
104
|
);
|
|
105
105
|
this.resetTargetPosition();
|
|
@@ -109,6 +109,7 @@ class OverlayDrag extends LitElement {
|
|
|
109
109
|
const parent = target.parentElement;
|
|
110
110
|
if (!parent)
|
|
111
111
|
return;
|
|
112
|
+
target.setPointerCapture(event.pointerId);
|
|
112
113
|
const max = {
|
|
113
114
|
x: parent.offsetWidth - target.offsetWidth,
|
|
114
115
|
y: parent.offsetHeight - target.offsetHeight
|
|
@@ -134,12 +135,13 @@ class OverlayDrag extends LitElement {
|
|
|
134
135
|
this.top = Math.min(Math.max(newPosition.y, 0), max.y);
|
|
135
136
|
Overlay.update();
|
|
136
137
|
};
|
|
137
|
-
const onMouseUp = () => {
|
|
138
|
-
|
|
139
|
-
document.removeEventListener("
|
|
138
|
+
const onMouseUp = (event2) => {
|
|
139
|
+
target.setPointerCapture(event2.pointerId);
|
|
140
|
+
document.removeEventListener("pointermove", onMouseMove);
|
|
141
|
+
document.removeEventListener("pointerup", onMouseUp);
|
|
140
142
|
};
|
|
141
|
-
document.addEventListener("
|
|
142
|
-
document.addEventListener("
|
|
143
|
+
document.addEventListener("pointermove", onMouseMove);
|
|
144
|
+
document.addEventListener("pointerup", onMouseUp);
|
|
143
145
|
}
|
|
144
146
|
resetTargetPosition() {
|
|
145
147
|
if (!this.targetElement)
|
|
@@ -256,7 +258,6 @@ class RecursivePopover extends LitElement {
|
|
|
256
258
|
slot="click-content"
|
|
257
259
|
direction="${this.placement}"
|
|
258
260
|
tip
|
|
259
|
-
open
|
|
260
261
|
>
|
|
261
262
|
<sp-dialog size="s" no-divider>
|
|
262
263
|
${this.depth < MAX_DEPTH ? html`
|
|
@@ -287,7 +288,7 @@ customElements.define("recursive-popover", RecursivePopover);
|
|
|
287
288
|
export class PopoverContent extends LitElement {
|
|
288
289
|
render() {
|
|
289
290
|
return html`
|
|
290
|
-
<overlay-trigger>
|
|
291
|
+
<overlay-trigger type="modal" placement="bottom">
|
|
291
292
|
<sp-button slot="trigger">Open me</sp-button>
|
|
292
293
|
<sp-popover slot="click-content" direction="bottom">
|
|
293
294
|
<sp-dialog no-divider>
|