@spectrum-web-components/overlay 0.19.2 → 0.19.4-overlay.7

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.
Files changed (156) hide show
  1. package/package.json +48 -23
  2. package/sp-overlay.d.ts +6 -0
  3. package/sp-overlay.dev.js +4 -0
  4. package/{active-overlay.js.map → sp-overlay.dev.js.map} +4 -4
  5. package/sp-overlay.js +2 -0
  6. package/sp-overlay.js.map +7 -0
  7. package/src/Overlay.d.ts +22 -0
  8. package/src/Overlay.dev.js +63 -0
  9. package/src/Overlay.dev.js.map +7 -0
  10. package/src/Overlay.js +2 -0
  11. package/src/Overlay.js.map +7 -0
  12. package/src/OverlayBase.d.ts +93 -0
  13. package/src/OverlayBase.dev.js +564 -0
  14. package/src/OverlayBase.dev.js.map +7 -0
  15. package/src/OverlayBase.js +18 -0
  16. package/src/OverlayBase.js.map +7 -0
  17. package/src/OverlayDialog.d.ts +8 -0
  18. package/src/OverlayDialog.dev.js +43 -0
  19. package/src/OverlayDialog.dev.js.map +7 -0
  20. package/src/OverlayDialog.js +2 -0
  21. package/src/OverlayDialog.js.map +7 -0
  22. package/src/OverlayNoPopover.d.ts +8 -0
  23. package/src/OverlayNoPopover.dev.js +62 -0
  24. package/src/OverlayNoPopover.dev.js.map +7 -0
  25. package/src/OverlayNoPopover.js +2 -0
  26. package/src/OverlayNoPopover.js.map +7 -0
  27. package/src/OverlayPopover.d.ts +8 -0
  28. package/src/OverlayPopover.dev.js +81 -0
  29. package/src/OverlayPopover.dev.js.map +7 -0
  30. package/src/OverlayPopover.js +2 -0
  31. package/src/OverlayPopover.js.map +7 -0
  32. package/src/OverlayStack.d.ts +24 -0
  33. package/src/OverlayStack.dev.js +113 -0
  34. package/src/OverlayStack.dev.js.map +7 -0
  35. package/src/OverlayStack.js +2 -0
  36. package/src/OverlayStack.js.map +7 -0
  37. package/src/OverlayTrigger.d.ts +18 -31
  38. package/src/OverlayTrigger.dev.js +138 -246
  39. package/src/OverlayTrigger.dev.js.map +3 -3
  40. package/src/OverlayTrigger.js +54 -22
  41. package/src/OverlayTrigger.js.map +3 -3
  42. package/src/PlacementController.d.ts +35 -0
  43. package/src/PlacementController.dev.js +172 -0
  44. package/src/PlacementController.dev.js.map +7 -0
  45. package/src/PlacementController.js +2 -0
  46. package/src/PlacementController.js.map +7 -0
  47. package/src/VirtualTrigger.dev.js +0 -2
  48. package/src/VirtualTrigger.dev.js.map +2 -2
  49. package/src/VirtualTrigger.js +1 -1
  50. package/src/VirtualTrigger.js.map +3 -3
  51. package/src/fullSizePlugin.d.ts +12 -0
  52. package/src/fullSizePlugin.dev.js +39 -0
  53. package/src/fullSizePlugin.dev.js.map +7 -0
  54. package/src/fullSizePlugin.js +2 -0
  55. package/src/fullSizePlugin.js.map +7 -0
  56. package/src/index.d.ts +1 -3
  57. package/src/index.dev.js +1 -3
  58. package/src/index.dev.js.map +2 -2
  59. package/src/index.js +1 -1
  60. package/src/index.js.map +2 -2
  61. package/src/overlay-base.css.dev.js +9 -0
  62. package/src/overlay-base.css.dev.js.map +7 -0
  63. package/src/overlay-base.css.js +6 -0
  64. package/src/overlay-base.css.js.map +7 -0
  65. package/src/overlay-trigger.css.dev.js +1 -1
  66. package/src/overlay-trigger.css.dev.js.map +1 -1
  67. package/src/overlay-trigger.css.js +1 -1
  68. package/src/overlay-trigger.css.js.map +1 -1
  69. package/src/overlay-types.d.ts +2 -2
  70. package/src/overlay-types.dev.js +1 -0
  71. package/src/overlay-types.dev.js.map +3 -3
  72. package/src/overlay-types.js +1 -1
  73. package/src/overlay-types.js.map +3 -3
  74. package/src/placement.d.ts +21 -0
  75. package/src/placement.dev.js +111 -0
  76. package/src/placement.dev.js.map +7 -0
  77. package/src/placement.js +2 -0
  78. package/src/placement.js.map +7 -0
  79. package/src/topLayerOverTransforms.d.ts +22 -0
  80. package/src/topLayerOverTransforms.dev.js +161 -0
  81. package/src/topLayerOverTransforms.dev.js.map +7 -0
  82. package/src/topLayerOverTransforms.js +2 -0
  83. package/src/topLayerOverTransforms.js.map +7 -0
  84. package/stories/overlay-element.stories.js +229 -0
  85. package/stories/overlay-element.stories.js.map +7 -0
  86. package/stories/overlay-story-components.js +1 -6
  87. package/stories/overlay-story-components.js.map +2 -2
  88. package/stories/overlay.stories.js +641 -682
  89. package/stories/overlay.stories.js.map +2 -2
  90. package/sync/overlay-trigger.d.ts +4 -0
  91. package/sync/overlay-trigger.dev.js +1 -4
  92. package/sync/overlay-trigger.dev.js.map +2 -2
  93. package/sync/overlay-trigger.js +1 -1
  94. package/sync/overlay-trigger.js.map +3 -3
  95. package/test/benchmark/basic-test.js +1 -1
  96. package/test/benchmark/basic-test.js.map +1 -1
  97. package/test/index.js +3 -9
  98. package/test/index.js.map +2 -2
  99. package/test/overlay-element.test-vrt.js +5 -0
  100. package/{active-overlay.dev.js.map → test/overlay-element.test-vrt.js.map} +3 -3
  101. package/test/overlay-element.test.js +759 -0
  102. package/test/overlay-element.test.js.map +7 -0
  103. package/test/overlay-lifecycle.test.js +34 -74
  104. package/test/overlay-lifecycle.test.js.map +2 -2
  105. package/test/overlay-trigger-click.test.js +3 -2
  106. package/test/overlay-trigger-click.test.js.map +2 -2
  107. package/test/overlay-trigger-extended.test.js +1 -6
  108. package/test/overlay-trigger-extended.test.js.map +2 -2
  109. package/test/overlay-trigger-hover-click.test.js +1 -1
  110. package/test/overlay-trigger-hover-click.test.js.map +2 -2
  111. package/test/overlay-trigger-hover.test.js +2 -2
  112. package/test/overlay-trigger-hover.test.js.map +2 -2
  113. package/test/overlay-trigger-longpress.test.js +1 -377
  114. package/test/overlay-trigger-longpress.test.js.map +2 -2
  115. package/test/overlay-trigger-sync.test.js +1 -3
  116. package/test/overlay-trigger-sync.test.js.map +2 -2
  117. package/test/overlay-trigger.test.js +1 -3
  118. package/test/overlay-trigger.test.js.map +2 -2
  119. package/test/overlay-update.test.js +4 -4
  120. package/test/overlay-update.test.js.map +2 -2
  121. package/test/overlay.test.js +100 -154
  122. package/test/overlay.test.js.map +2 -2
  123. package/active-overlay.d.ts +0 -6
  124. package/active-overlay.dev.js +0 -4
  125. package/active-overlay.js +0 -2
  126. package/custom-elements.json +0 -1212
  127. package/src/ActiveOverlay.d.ts +0 -84
  128. package/src/ActiveOverlay.dev.js +0 -517
  129. package/src/ActiveOverlay.dev.js.map +0 -7
  130. package/src/ActiveOverlay.js +0 -16
  131. package/src/ActiveOverlay.js.map +0 -7
  132. package/src/active-overlay.css.dev.js +0 -13
  133. package/src/active-overlay.css.dev.js.map +0 -7
  134. package/src/active-overlay.css.js +0 -10
  135. package/src/active-overlay.css.js.map +0 -7
  136. package/src/loader.d.ts +0 -2
  137. package/src/loader.dev.js +0 -21
  138. package/src/loader.dev.js.map +0 -7
  139. package/src/loader.js +0 -2
  140. package/src/loader.js.map +0 -7
  141. package/src/overlay-stack.d.ts +0 -50
  142. package/src/overlay-stack.dev.js +0 -514
  143. package/src/overlay-stack.dev.js.map +0 -7
  144. package/src/overlay-stack.js +0 -33
  145. package/src/overlay-stack.js.map +0 -7
  146. package/src/overlay-utils.d.ts +0 -3
  147. package/src/overlay-utils.dev.js +0 -31
  148. package/src/overlay-utils.dev.js.map +0 -7
  149. package/src/overlay-utils.js +0 -2
  150. package/src/overlay-utils.js.map +0 -7
  151. package/src/overlay.d.ts +0 -59
  152. package/src/overlay.dev.js +0 -127
  153. package/src/overlay.dev.js.map +0 -7
  154. package/src/overlay.js +0 -2
  155. package/src/overlay.js.map +0 -7
  156. /package/src/{active-overlay.css.d.ts → overlay-base.css.d.ts} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spectrum-web-components/overlay",
3
- "version": "0.19.2",
3
+ "version": "0.19.4-overlay.7+a493756c7",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -25,35 +25,55 @@
25
25
  "default": "./src/index.js"
26
26
  },
27
27
  "./package.json": "./package.json",
28
- "./src/ActiveOverlay.js": {
29
- "development": "./src/ActiveOverlay.dev.js",
30
- "default": "./src/ActiveOverlay.js"
28
+ "./src/Overlay.js": {
29
+ "development": "./src/Overlay.dev.js",
30
+ "default": "./src/Overlay.js"
31
+ },
32
+ "./src/OverlayBase.js": {
33
+ "development": "./src/OverlayBase.dev.js",
34
+ "default": "./src/OverlayBase.js"
35
+ },
36
+ "./src/OverlayDialog.js": {
37
+ "development": "./src/OverlayDialog.dev.js",
38
+ "default": "./src/OverlayDialog.js"
39
+ },
40
+ "./src/OverlayNoPopover.js": {
41
+ "development": "./src/OverlayNoPopover.dev.js",
42
+ "default": "./src/OverlayNoPopover.js"
43
+ },
44
+ "./src/OverlayPopover.js": {
45
+ "development": "./src/OverlayPopover.dev.js",
46
+ "default": "./src/OverlayPopover.js"
47
+ },
48
+ "./src/OverlayStack.js": {
49
+ "development": "./src/OverlayStack.dev.js",
50
+ "default": "./src/OverlayStack.js"
31
51
  },
32
52
  "./src/OverlayTrigger.js": {
33
53
  "development": "./src/OverlayTrigger.dev.js",
34
54
  "default": "./src/OverlayTrigger.js"
35
55
  },
56
+ "./src/PlacementController.js": {
57
+ "development": "./src/PlacementController.dev.js",
58
+ "default": "./src/PlacementController.js"
59
+ },
36
60
  "./src/VirtualTrigger.js": {
37
61
  "development": "./src/VirtualTrigger.dev.js",
38
62
  "default": "./src/VirtualTrigger.js"
39
63
  },
40
- "./src/active-overlay.css.js": "./src/active-overlay.css.js",
64
+ "./src/fullSizePlugin.js": {
65
+ "development": "./src/fullSizePlugin.dev.js",
66
+ "default": "./src/fullSizePlugin.js"
67
+ },
41
68
  "./src/index.js": {
42
69
  "development": "./src/index.dev.js",
43
70
  "default": "./src/index.js"
44
71
  },
45
- "./src/loader.js": {
46
- "development": "./src/loader.dev.js",
47
- "default": "./src/loader.js"
48
- },
72
+ "./src/overlay-base.css.js": "./src/overlay-base.css.js",
49
73
  "./src/overlay-events.js": {
50
74
  "development": "./src/overlay-events.dev.js",
51
75
  "default": "./src/overlay-events.js"
52
76
  },
53
- "./src/overlay-stack.js": {
54
- "development": "./src/overlay-stack.dev.js",
55
- "default": "./src/overlay-stack.js"
56
- },
57
77
  "./src/overlay-timer.js": {
58
78
  "development": "./src/overlay-timer.dev.js",
59
79
  "default": "./src/overlay-timer.js"
@@ -63,13 +83,13 @@
63
83
  "development": "./src/overlay-types.dev.js",
64
84
  "default": "./src/overlay-types.js"
65
85
  },
66
- "./src/overlay-utils.js": {
67
- "development": "./src/overlay-utils.dev.js",
68
- "default": "./src/overlay-utils.js"
86
+ "./src/placement.js": {
87
+ "development": "./src/placement.dev.js",
88
+ "default": "./src/placement.js"
69
89
  },
70
- "./src/overlay.js": {
71
- "development": "./src/overlay.dev.js",
72
- "default": "./src/overlay.js"
90
+ "./src/topLayerOverTransforms.js": {
91
+ "development": "./src/topLayerOverTransforms.dev.js",
92
+ "default": "./src/topLayerOverTransforms.js"
73
93
  },
74
94
  "./active-overlay.js": {
75
95
  "development": "./active-overlay.dev.js",
@@ -82,6 +102,10 @@
82
102
  "./sync/overlay-trigger.js": {
83
103
  "development": "./sync/overlay-trigger.dev.js",
84
104
  "default": "./sync/overlay-trigger.js"
105
+ },
106
+ "./sp-overlay.js": {
107
+ "development": "./sp-overlay.dev.js",
108
+ "default": "./sp-overlay.js"
85
109
  }
86
110
  },
87
111
  "scripts": {
@@ -102,20 +126,21 @@
102
126
  "lit-html"
103
127
  ],
104
128
  "dependencies": {
105
- "@floating-ui/dom": "^1.2.0",
106
- "@spectrum-web-components/action-button": "^0.10.13",
129
+ "@floating-ui/dom": "^1.2.5",
130
+ "@spectrum-web-components/action-button": "^0.10.14",
107
131
  "@spectrum-web-components/base": "^0.7.4",
108
132
  "@spectrum-web-components/shared": "^0.15.5",
109
- "@spectrum-web-components/theme": "^0.14.12"
133
+ "@spectrum-web-components/theme": "^0.14.13"
110
134
  },
111
135
  "types": "./src/index.d.ts",
112
136
  "customElements": "custom-elements.json",
113
137
  "sideEffects": [
114
138
  "./active-overlay.js",
115
139
  "./overlay-trigger.js",
140
+ "./sp-overlay.js",
116
141
  "./sync/overlay-trigger.js",
117
142
  "./stories/overlay-story-components.js",
118
143
  "./**/*.dev.js"
119
144
  ],
120
- "gitHead": "5e11d828243bb3ff572c25b33a8d58844a89f524"
145
+ "gitHead": "a493756c787f12c6266ddeb11cba260cd66b6e41"
121
146
  }
@@ -0,0 +1,6 @@
1
+ import { Overlay } from './src/Overlay.js';
2
+ declare global {
3
+ interface HTMLElementTagNameMap {
4
+ 'sp-overlay': typeof Overlay;
5
+ }
6
+ }
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ import { Overlay } from "./src/Overlay.dev.js";
3
+ customElements.define("sp-overlay", Overlay);
4
+ //# sourceMappingURL=sp-overlay.dev.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["active-overlay.ts"],
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": "aAWA,OAAS,iBAAAA,MAAqB,yBAE9B,eAAe,OAAO,iBAAkBA,CAAa",
6
- "names": ["ActiveOverlay"]
3
+ "sources": ["sp-overlay.ts"],
4
+ "sourcesContent": ["/*\nCopyright 2023 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 { Overlay } from './src/Overlay.dev.js'\n\ncustomElements.define('sp-overlay', Overlay);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sp-overlay': typeof Overlay;\n }\n}\n"],
5
+ "mappings": ";AAWA,SAAS,eAAe;AAExB,eAAe,OAAO,cAAc,OAAO;",
6
+ "names": []
7
7
  }
package/sp-overlay.js ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";import{Overlay as e}from"./src/Overlay.js";customElements.define("sp-overlay",e);
2
+ //# sourceMappingURL=sp-overlay.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["sp-overlay.ts"],
4
+ "sourcesContent": ["/*\nCopyright 2023 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 { Overlay } from './src/Overlay.js';\n\ncustomElements.define('sp-overlay', Overlay);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sp-overlay': typeof Overlay;\n }\n}\n"],
5
+ "mappings": "aAWA,OAAS,WAAAA,MAAe,mBAExB,eAAe,OAAO,aAAcA,CAAO",
6
+ "names": ["Overlay"]
7
+ }
@@ -0,0 +1,22 @@
1
+ import { OverlayBase } from './OverlayBase.js';
2
+ import type { OverlayOptions, TriggerInteractions } from './overlay-types.js';
3
+ import { Placement } from '@floating-ui/dom/src/types.js';
4
+ import { VirtualTrigger } from './VirtualTrigger.js';
5
+ declare let OverlayFeatures: typeof OverlayBase & {
6
+ new (...args: any[]): import("lit").ReactiveElement;
7
+ prototype: import("lit").ReactiveElement;
8
+ };
9
+ declare type OverlayOptionsV2 = {
10
+ delayed?: boolean;
11
+ offset?: number | [number, number];
12
+ placement?: Placement;
13
+ receivesFocus: 'auto' | 'true' | 'false';
14
+ trigger?: HTMLElement | VirtualTrigger;
15
+ type?: 'modal' | 'page' | 'hint' | 'auto' | 'manual';
16
+ };
17
+ export declare class Overlay extends OverlayFeatures {
18
+ static update(): void;
19
+ static open(target: HTMLElement, interaction: TriggerInteractions, content: HTMLElement, options: OverlayOptions): Promise<() => void>;
20
+ static open(content: HTMLElement, options: OverlayOptionsV2): Promise<Overlay>;
21
+ }
22
+ export {};
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ import { OverlayBase } from "./OverlayBase.dev.js";
3
+ import { OverlayDialog } from "./OverlayDialog.dev.js";
4
+ import { OverlayPopover } from "./OverlayPopover.dev.js";
5
+ import { OverlayNoPopover } from "./OverlayNoPopover.dev.js";
6
+ const supportsPopover = "showPopover" in document.createElement("div");
7
+ let OverlayFeatures = OverlayDialog(OverlayBase);
8
+ if (supportsPopover) {
9
+ OverlayFeatures = OverlayPopover(OverlayFeatures);
10
+ } else {
11
+ OverlayFeatures = OverlayNoPopover(OverlayFeatures);
12
+ }
13
+ export class Overlay extends OverlayFeatures {
14
+ static update() {
15
+ return;
16
+ }
17
+ static async open(targetOrContent, interactionOrOptions, content, options) {
18
+ const v2 = arguments.length === 2;
19
+ const overlay = new Overlay();
20
+ if (v2) {
21
+ const content2 = targetOrContent;
22
+ const options2 = interactionOrOptions;
23
+ overlay.append(content2);
24
+ overlay.triggerElement = options2.trigger || null;
25
+ overlay.type = options2.type || "modal";
26
+ overlay.offset = options2.offset || 6;
27
+ overlay.placement = options2.placement;
28
+ await new Promise(
29
+ (res) => requestAnimationFrame(() => res())
30
+ );
31
+ overlay.open = true;
32
+ return overlay;
33
+ } else if (content && options) {
34
+ const target = targetOrContent;
35
+ const interaction = interactionOrOptions;
36
+ overlay.append(content);
37
+ overlay.triggerElement = target;
38
+ overlay.type = interaction === "modal" ? "modal" : interaction === "hover" ? "hint" : "auto";
39
+ overlay.offset = options.offset || 6;
40
+ overlay.placement = options.placement;
41
+ const parent = target.getRootNode();
42
+ if (parent === document) {
43
+ document.body.append(overlay);
44
+ } else {
45
+ parent.append(overlay);
46
+ }
47
+ await new Promise(
48
+ (res) => requestAnimationFrame(() => res())
49
+ );
50
+ overlay.open = true;
51
+ return () => {
52
+ overlay.addEventListener("sp-closed", () => {
53
+ requestAnimationFrame(() => {
54
+ overlay.remove();
55
+ });
56
+ });
57
+ overlay.open = false;
58
+ };
59
+ }
60
+ return overlay;
61
+ }
62
+ }
63
+ //# sourceMappingURL=Overlay.dev.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["Overlay.ts"],
4
+ "sourcesContent": ["/*\nCopyright 2023 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 { OverlayBase } from './OverlayBase.dev.js'\nimport { OverlayDialog } from './OverlayDialog.dev.js'\nimport { OverlayPopover } from './OverlayPopover.dev.js'\nimport { OverlayNoPopover } from './OverlayNoPopover.dev.js'\nimport type { OverlayOptions, TriggerInteractions } from './overlay-types.dev.js'\nimport { Placement } from '@floating-ui/dom/src/types.js';\nimport { VirtualTrigger } from './VirtualTrigger.dev.js'\n\nconst supportsPopover = 'showPopover' in document.createElement('div');\n\nlet OverlayFeatures = OverlayDialog(OverlayBase);\nif (supportsPopover) {\n OverlayFeatures = OverlayPopover(OverlayFeatures);\n} else {\n OverlayFeatures = OverlayNoPopover(OverlayFeatures);\n}\n\ntype OverlayOptionsV2 = {\n delayed?: boolean;\n offset?: number | [number, number]; // supporting multi-axis\n placement?: Placement;\n receivesFocus: 'auto' | 'true' | 'false';\n trigger?: HTMLElement | VirtualTrigger;\n type?: 'modal' | 'page' | 'hint' | 'auto' | 'manual';\n};\n\nexport class Overlay extends OverlayFeatures {\n public static update(): void {\n return;\n }\n\n public static async open(\n target: HTMLElement,\n interaction: TriggerInteractions,\n content: HTMLElement,\n options: OverlayOptions\n ): Promise<() => void>;\n public static async open(\n content: HTMLElement,\n options: OverlayOptionsV2\n ): Promise<Overlay>;\n public static async open(\n targetOrContent: HTMLElement,\n interactionOrOptions: TriggerInteractions | OverlayOptionsV2,\n content?: HTMLElement,\n options?: OverlayOptions\n ): Promise<Overlay | (() => void)> {\n const v2 = arguments.length === 2;\n const overlay = new Overlay();\n if (v2) {\n const content = targetOrContent;\n const options = interactionOrOptions as OverlayOptionsV2;\n overlay.append(content);\n overlay.triggerElement = options.trigger || null;\n overlay.type = options.type || 'modal';\n overlay.offset = options.offset || 6;\n overlay.placement = options.placement;\n await new Promise<void>((res) =>\n requestAnimationFrame(() => res())\n );\n overlay.open = true;\n return overlay;\n } else if (content && options) {\n const target = targetOrContent;\n const interaction = interactionOrOptions;\n overlay.append(content);\n overlay.triggerElement = target;\n overlay.type =\n interaction === 'modal'\n ? 'modal'\n : interaction === 'hover'\n ? 'hint'\n : 'auto';\n overlay.offset = options.offset || 6;\n overlay.placement = options.placement;\n // This is super dirty...find a better way.\n // Maybe imperative open should go _at the end_ of everything?\n // Having an option is likely useful.\n // Make imperative overlays less useful?\n // Delete the imperative approach to an overlay?\n // Possibly the giving all of the responsiblities to the user is the best path.\n const parent = target.getRootNode() as Document;\n if (parent === document) {\n document.body.append(overlay);\n } else {\n parent.append(overlay);\n }\n await new Promise<void>((res) =>\n requestAnimationFrame(() => res())\n );\n overlay.open = true;\n return () => {\n overlay.addEventListener('sp-closed', () => {\n requestAnimationFrame(() => {\n overlay.remove();\n });\n });\n overlay.open = false;\n };\n }\n return overlay;\n }\n}\n"],
5
+ "mappings": ";AAWA,SAAS,mBAAmB;AAC5B,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB;AAC/B,SAAS,wBAAwB;AAKjC,MAAM,kBAAkB,iBAAiB,SAAS,cAAc,KAAK;AAErE,IAAI,kBAAkB,cAAc,WAAW;AAC/C,IAAI,iBAAiB;AACjB,oBAAkB,eAAe,eAAe;AACpD,OAAO;AACH,oBAAkB,iBAAiB,eAAe;AACtD;AAWO,aAAM,gBAAgB,gBAAgB;AAAA,EACzC,OAAc,SAAe;AACzB;AAAA,EACJ;AAAA,EAYA,aAAoB,KAChB,iBACA,sBACA,SACA,SAC+B;AAC/B,UAAM,KAAK,UAAU,WAAW;AAChC,UAAM,UAAU,IAAI,QAAQ;AAC5B,QAAI,IAAI;AACJ,YAAMA,WAAU;AAChB,YAAMC,WAAU;AAChB,cAAQ,OAAOD,QAAO;AACtB,cAAQ,iBAAiBC,SAAQ,WAAW;AAC5C,cAAQ,OAAOA,SAAQ,QAAQ;AAC/B,cAAQ,SAASA,SAAQ,UAAU;AACnC,cAAQ,YAAYA,SAAQ;AAC5B,YAAM,IAAI;AAAA,QAAc,CAAC,QACrB,sBAAsB,MAAM,IAAI,CAAC;AAAA,MACrC;AACA,cAAQ,OAAO;AACf,aAAO;AAAA,IACX,WAAW,WAAW,SAAS;AAC3B,YAAM,SAAS;AACf,YAAM,cAAc;AACpB,cAAQ,OAAO,OAAO;AACtB,cAAQ,iBAAiB;AACzB,cAAQ,OACJ,gBAAgB,UACV,UACA,gBAAgB,UAChB,SACA;AACV,cAAQ,SAAS,QAAQ,UAAU;AACnC,cAAQ,YAAY,QAAQ;AAO5B,YAAM,SAAS,OAAO,YAAY;AAClC,UAAI,WAAW,UAAU;AACrB,iBAAS,KAAK,OAAO,OAAO;AAAA,MAChC,OAAO;AACH,eAAO,OAAO,OAAO;AAAA,MACzB;AACA,YAAM,IAAI;AAAA,QAAc,CAAC,QACrB,sBAAsB,MAAM,IAAI,CAAC;AAAA,MACrC;AACA,cAAQ,OAAO;AACf,aAAO,MAAM;AACT,gBAAQ,iBAAiB,aAAa,MAAM;AACxC,gCAAsB,MAAM;AACxB,oBAAQ,OAAO;AAAA,UACnB,CAAC;AAAA,QACL,CAAC;AACD,gBAAQ,OAAO;AAAA,MACnB;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AACJ;",
6
+ "names": ["content", "options"]
7
+ }
package/src/Overlay.js ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";import{OverlayBase as c}from"./OverlayBase.js";import{OverlayDialog as u}from"./OverlayDialog.js";import{OverlayPopover as v}from"./OverlayPopover.js";import{OverlayNoPopover as y}from"./OverlayNoPopover.js";const d="showPopover"in document.createElement("div");let o=u(c);d?o=v(o):o=y(o);export class Overlay extends o{static update(){}static async open(i,s,l,a){const m=arguments.length===2,e=new Overlay;if(m){const r=i,t=s;return e.append(r),e.triggerElement=t.trigger||null,e.type=t.type||"modal",e.offset=t.offset||6,e.placement=t.placement,await new Promise(n=>requestAnimationFrame(()=>n())),e.open=!0,e}else if(l&&a){const r=i,t=s;e.append(l),e.triggerElement=r,e.type=t==="modal"?"modal":t==="hover"?"hint":"auto",e.offset=a.offset||6,e.placement=a.placement;const n=r.getRootNode();return n===document?document.body.append(e):n.append(e),await new Promise(p=>requestAnimationFrame(()=>p())),e.open=!0,()=>{e.addEventListener("sp-closed",()=>{requestAnimationFrame(()=>{e.remove()})}),e.open=!1}}return e}}
2
+ //# sourceMappingURL=Overlay.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["Overlay.ts"],
4
+ "sourcesContent": ["/*\nCopyright 2023 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 { OverlayBase } from './OverlayBase.js';\nimport { OverlayDialog } from './OverlayDialog.js';\nimport { OverlayPopover } from './OverlayPopover.js';\nimport { OverlayNoPopover } from './OverlayNoPopover.js';\nimport type { OverlayOptions, TriggerInteractions } from './overlay-types.js';\nimport { Placement } from '@floating-ui/dom/src/types.js';\nimport { VirtualTrigger } from './VirtualTrigger.js';\n\nconst supportsPopover = 'showPopover' in document.createElement('div');\n\nlet OverlayFeatures = OverlayDialog(OverlayBase);\nif (supportsPopover) {\n OverlayFeatures = OverlayPopover(OverlayFeatures);\n} else {\n OverlayFeatures = OverlayNoPopover(OverlayFeatures);\n}\n\ntype OverlayOptionsV2 = {\n delayed?: boolean;\n offset?: number | [number, number]; // supporting multi-axis\n placement?: Placement;\n receivesFocus: 'auto' | 'true' | 'false';\n trigger?: HTMLElement | VirtualTrigger;\n type?: 'modal' | 'page' | 'hint' | 'auto' | 'manual';\n};\n\nexport class Overlay extends OverlayFeatures {\n public static update(): void {\n return;\n }\n\n public static async open(\n target: HTMLElement,\n interaction: TriggerInteractions,\n content: HTMLElement,\n options: OverlayOptions\n ): Promise<() => void>;\n public static async open(\n content: HTMLElement,\n options: OverlayOptionsV2\n ): Promise<Overlay>;\n public static async open(\n targetOrContent: HTMLElement,\n interactionOrOptions: TriggerInteractions | OverlayOptionsV2,\n content?: HTMLElement,\n options?: OverlayOptions\n ): Promise<Overlay | (() => void)> {\n const v2 = arguments.length === 2;\n const overlay = new Overlay();\n if (v2) {\n const content = targetOrContent;\n const options = interactionOrOptions as OverlayOptionsV2;\n overlay.append(content);\n overlay.triggerElement = options.trigger || null;\n overlay.type = options.type || 'modal';\n overlay.offset = options.offset || 6;\n overlay.placement = options.placement;\n await new Promise<void>((res) =>\n requestAnimationFrame(() => res())\n );\n overlay.open = true;\n return overlay;\n } else if (content && options) {\n const target = targetOrContent;\n const interaction = interactionOrOptions;\n overlay.append(content);\n overlay.triggerElement = target;\n overlay.type =\n interaction === 'modal'\n ? 'modal'\n : interaction === 'hover'\n ? 'hint'\n : 'auto';\n overlay.offset = options.offset || 6;\n overlay.placement = options.placement;\n // This is super dirty...find a better way.\n // Maybe imperative open should go _at the end_ of everything?\n // Having an option is likely useful.\n // Make imperative overlays less useful?\n // Delete the imperative approach to an overlay?\n // Possibly the giving all of the responsiblities to the user is the best path.\n const parent = target.getRootNode() as Document;\n if (parent === document) {\n document.body.append(overlay);\n } else {\n parent.append(overlay);\n }\n await new Promise<void>((res) =>\n requestAnimationFrame(() => res())\n );\n overlay.open = true;\n return () => {\n overlay.addEventListener('sp-closed', () => {\n requestAnimationFrame(() => {\n overlay.remove();\n });\n });\n overlay.open = false;\n };\n }\n return overlay;\n }\n}\n"],
5
+ "mappings": "aAWA,OAAS,eAAAA,MAAmB,mBAC5B,OAAS,iBAAAC,MAAqB,qBAC9B,OAAS,kBAAAC,MAAsB,sBAC/B,OAAS,oBAAAC,MAAwB,wBAKjC,MAAMC,EAAkB,gBAAiB,SAAS,cAAc,KAAK,EAErE,IAAIC,EAAkBJ,EAAcD,CAAW,EAC3CI,EACAC,EAAkBH,EAAeG,CAAe,EAEhDA,EAAkBF,EAAiBE,CAAe,EAY/C,aAAM,gBAAgBA,CAAgB,CACzC,OAAc,QAAe,CAE7B,CAYA,aAAoB,KAChBC,EACAC,EACAC,EACAC,EAC+B,CAC/B,MAAMC,EAAK,UAAU,SAAW,EAC1BC,EAAU,IAAI,QACpB,GAAID,EAAI,CACJ,MAAMF,EAAUF,EACVG,EAAUF,EAChB,OAAAI,EAAQ,OAAOH,CAAO,EACtBG,EAAQ,eAAiBF,EAAQ,SAAW,KAC5CE,EAAQ,KAAOF,EAAQ,MAAQ,QAC/BE,EAAQ,OAASF,EAAQ,QAAU,EACnCE,EAAQ,UAAYF,EAAQ,UAC5B,MAAM,IAAI,QAAeG,GACrB,sBAAsB,IAAMA,EAAI,CAAC,CACrC,EACAD,EAAQ,KAAO,GACRA,CACX,SAAWH,GAAWC,EAAS,CAC3B,MAAMI,EAASP,EACTQ,EAAcP,EACpBI,EAAQ,OAAOH,CAAO,EACtBG,EAAQ,eAAiBE,EACzBF,EAAQ,KACJG,IAAgB,QACV,QACAA,IAAgB,QAChB,OACA,OACVH,EAAQ,OAASF,EAAQ,QAAU,EACnCE,EAAQ,UAAYF,EAAQ,UAO5B,MAAMM,EAASF,EAAO,YAAY,EAClC,OAAIE,IAAW,SACX,SAAS,KAAK,OAAOJ,CAAO,EAE5BI,EAAO,OAAOJ,CAAO,EAEzB,MAAM,IAAI,QAAeC,GACrB,sBAAsB,IAAMA,EAAI,CAAC,CACrC,EACAD,EAAQ,KAAO,GACR,IAAM,CACTA,EAAQ,iBAAiB,YAAa,IAAM,CACxC,sBAAsB,IAAM,CACxBA,EAAQ,OAAO,CACnB,CAAC,CACL,CAAC,EACDA,EAAQ,KAAO,EACnB,CACJ,CACA,OAAOA,CACX,CACJ",
6
+ "names": ["OverlayBase", "OverlayDialog", "OverlayPopover", "OverlayNoPopover", "supportsPopover", "OverlayFeatures", "targetOrContent", "interactionOrOptions", "content", "options", "v2", "overlay", "res", "target", "interaction", "parent"]
7
+ }
@@ -0,0 +1,93 @@
1
+ import type { Placement } from '@floating-ui/dom';
2
+ import { PropertyValues, SpectrumElement, TemplateResult } from '@spectrum-web-components/base';
3
+ import type { VirtualTrigger } from './VirtualTrigger.js';
4
+ import { PlacementController } from './PlacementController.js';
5
+ export declare type OpenableElement = HTMLElement & {
6
+ open: boolean;
7
+ tipElement?: HTMLElement;
8
+ updateComplete?: Promise<void>;
9
+ };
10
+ export declare type OverlayTypes = 'auto' | 'hint' | 'manual' | 'modal' | 'page';
11
+ export declare type LongpressEvent = {
12
+ source: 'pointer' | 'keyboard';
13
+ };
14
+ export declare const LONGPRESS_INSTRUCTIONS: {
15
+ touch: string;
16
+ keyboard: string;
17
+ mouse: string;
18
+ };
19
+ export declare class BeforetoggleClosedEvent extends Event {
20
+ currentState: string;
21
+ newState: string;
22
+ constructor();
23
+ }
24
+ export declare class BeforetoggleOpenEvent extends Event {
25
+ currentState: string;
26
+ newState: string;
27
+ constructor();
28
+ }
29
+ export declare class OverlayBase extends SpectrumElement {
30
+ static styles: import("@spectrum-web-components/base").CSSResult[];
31
+ dialogEl: HTMLDialogElement & {
32
+ showPopover(): void;
33
+ hidePopover(): void;
34
+ };
35
+ get disabled(): boolean;
36
+ set disabled(disabled: boolean);
37
+ private _disabled;
38
+ elements: OpenableElement[];
39
+ parentOverlayToForceClose?: OverlayBase;
40
+ protected longpressed: boolean;
41
+ private longressTimeout;
42
+ offset: number | [number, number];
43
+ placementController: PlacementController;
44
+ get open(): boolean;
45
+ set open(open: boolean);
46
+ private _open;
47
+ static openCount: number;
48
+ placement?: Placement;
49
+ receivesFocus: 'true' | 'false' | 'auto';
50
+ private releaseAriaDescribedby;
51
+ slotEl: HTMLSlotElement;
52
+ trigger?: string;
53
+ triggerElement: HTMLElement | VirtualTrigger | null;
54
+ triggerInteraction?: 'click' | 'longpress' | 'hover';
55
+ type: OverlayTypes;
56
+ protected wasOpen: boolean;
57
+ private elementResolver;
58
+ private get usesDialog();
59
+ private get popoverValue();
60
+ protected manageChildren(open: boolean): void;
61
+ protected manageDialogOpen(): Promise<void>;
62
+ protected managePopoverOpen(): Promise<void>;
63
+ protected get requiresPosition(): boolean;
64
+ protected managePosition(): void;
65
+ protected manageOpen(): Promise<void>;
66
+ protected manageTriggerElement(triggerElement: HTMLElement | null): void;
67
+ private elementIds;
68
+ private prepareAriaDescribedby;
69
+ private handlePointerdown;
70
+ private handlePointerup;
71
+ /**
72
+ * @private
73
+ */
74
+ protected handleKeydown: (event: KeyboardEvent) => void;
75
+ protected handleKeyup: (event: KeyboardEvent) => void;
76
+ protected handleClick: () => void;
77
+ private focusedin;
78
+ protected handleFocusin: () => void;
79
+ protected handleFocusout: () => void;
80
+ private pointerentered;
81
+ protected handlePointerenter: () => void;
82
+ protected handlePointerleave: () => void;
83
+ protected handleLongpress: () => void;
84
+ protected handleBeforetoggle({ newState: open, }: Event & {
85
+ newState: string;
86
+ }): void;
87
+ protected handlePopoverhide(): void;
88
+ protected handlePopovershow(): void;
89
+ willUpdate(changes: PropertyValues): void;
90
+ protected updated(changes: PropertyValues): void;
91
+ render(): TemplateResult;
92
+ connectedCallback(): void;
93
+ }