@spectrum-web-components/overlay 1.1.0 → 1.1.2
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/overlay-trigger.d.ts +6 -0
- package/overlay-trigger.dev.js +5 -0
- package/overlay-trigger.dev.js.map +7 -0
- package/overlay-trigger.js +2 -0
- package/overlay-trigger.js.map +7 -0
- package/package.json +7 -7
- package/sp-overlay.d.ts +6 -0
- package/sp-overlay.dev.js +5 -0
- package/sp-overlay.dev.js.map +7 -0
- package/sp-overlay.js +2 -0
- package/sp-overlay.js.map +7 -0
- package/src/AbstractOverlay.d.ts +76 -0
- package/src/AbstractOverlay.dev.js +262 -0
- package/src/AbstractOverlay.dev.js.map +7 -0
- package/src/AbstractOverlay.js +2 -0
- package/src/AbstractOverlay.js.map +7 -0
- package/src/ClickController.d.ts +14 -0
- package/src/ClickController.dev.js +42 -0
- package/src/ClickController.dev.js.map +7 -0
- package/src/ClickController.js +2 -0
- package/src/ClickController.js.map +7 -0
- package/src/HoverController.d.ts +22 -0
- package/src/HoverController.dev.js +177 -0
- package/src/HoverController.dev.js.map +7 -0
- package/src/HoverController.js +2 -0
- package/src/HoverController.js.map +7 -0
- package/src/InteractionController.d.ts +44 -0
- package/src/InteractionController.dev.js +94 -0
- package/src/InteractionController.dev.js.map +7 -0
- package/src/InteractionController.js +2 -0
- package/src/InteractionController.js.map +7 -0
- package/src/LongpressController.d.ts +21 -0
- package/src/LongpressController.dev.js +156 -0
- package/src/LongpressController.dev.js.map +7 -0
- package/src/LongpressController.js +2 -0
- package/src/LongpressController.js.map +7 -0
- package/src/Overlay.d.ts +464 -0
- package/src/Overlay.dev.js +794 -0
- package/src/Overlay.dev.js.map +7 -0
- package/src/Overlay.js +33 -0
- package/src/Overlay.js.map +7 -0
- package/src/OverlayDialog.d.ts +4 -0
- package/src/OverlayDialog.dev.js +142 -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 +4 -0
- package/src/OverlayNoPopover.dev.js +117 -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 +4 -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 +44 -0
- package/src/OverlayStack.dev.js +163 -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 +52 -0
- package/src/OverlayTrigger.dev.js +243 -0
- package/src/OverlayTrigger.dev.js.map +7 -0
- package/src/OverlayTrigger.js +57 -0
- package/src/OverlayTrigger.js.map +7 -0
- package/src/PlacementController.d.ts +157 -0
- package/src/PlacementController.dev.js +287 -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.d.ts +7 -0
- package/src/VirtualTrigger.dev.js +32 -0
- package/src/VirtualTrigger.dev.js.map +7 -0
- package/src/VirtualTrigger.js +2 -0
- package/src/VirtualTrigger.js.map +7 -0
- package/src/events.d.ts +23 -0
- package/src/events.dev.js +39 -0
- package/src/events.dev.js.map +7 -0
- package/src/events.js +2 -0
- package/src/events.js.map +7 -0
- 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 +6 -0
- package/src/index.dev.js +8 -0
- package/src/index.dev.js.map +7 -0
- package/src/index.js +2 -0
- package/src/index.js.map +7 -0
- package/src/loader.d.ts +4 -0
- package/src/loader.dev.js +11 -0
- package/src/loader.dev.js.map +7 -0
- package/src/loader.js +2 -0
- package/src/loader.js.map +7 -0
- package/src/overlay-events.d.ts +11 -0
- package/src/overlay-events.dev.js +8 -0
- package/src/overlay-events.dev.js.map +7 -0
- package/src/overlay-events.js +2 -0
- package/src/overlay-events.js.map +7 -0
- package/src/overlay-timer.d.ts +22 -0
- package/src/overlay-timer.dev.js +72 -0
- package/src/overlay-timer.dev.js.map +7 -0
- package/src/overlay-timer.js +2 -0
- package/src/overlay-timer.js.map +7 -0
- package/src/overlay-trigger-directive.d.ts +26 -0
- package/src/overlay-trigger-directive.dev.js +87 -0
- package/src/overlay-trigger-directive.dev.js.map +7 -0
- package/src/overlay-trigger-directive.js +2 -0
- package/src/overlay-trigger-directive.js.map +7 -0
- package/src/overlay-trigger.css.d.ts +2 -0
- package/src/overlay-trigger.css.dev.js +7 -0
- package/src/overlay-trigger.css.dev.js.map +7 -0
- package/src/overlay-trigger.css.js +4 -0
- package/src/overlay-trigger.css.js.map +7 -0
- package/src/overlay-types.d.ts +50 -0
- package/src/overlay-types.dev.js +3 -0
- package/src/overlay-types.dev.js.map +7 -0
- package/src/overlay-types.js +2 -0
- package/src/overlay-types.js.map +7 -0
- package/src/overlay.css.d.ts +2 -0
- package/src/overlay.css.dev.js +7 -0
- package/src/overlay.css.dev.js.map +7 -0
- package/src/overlay.css.js +4 -0
- package/src/overlay.css.js.map +7 -0
- package/src/slottable-request-directive.d.ts +17 -0
- package/src/slottable-request-directive.dev.js +66 -0
- package/src/slottable-request-directive.dev.js.map +7 -0
- package/src/slottable-request-directive.js +2 -0
- package/src/slottable-request-directive.js.map +7 -0
- package/src/slottable-request-event.d.ts +12 -0
- package/src/slottable-request-event.dev.js +28 -0
- package/src/slottable-request-event.dev.js.map +7 -0
- package/src/slottable-request-event.js +2 -0
- package/src/slottable-request-event.js.map +7 -0
- package/src/strategies.d.ts +8 -0
- package/src/strategies.dev.js +10 -0
- package/src/strategies.dev.js.map +7 -0
- package/src/strategies.js +2 -0
- package/src/strategies.js.map +7 -0
- package/stories/index.js +48 -0
- package/stories/index.js.map +7 -0
- package/stories/overlay-directive.stories.js +340 -0
- package/stories/overlay-directive.stories.js.map +7 -0
- package/stories/overlay-element.stories.js +687 -0
- package/stories/overlay-element.stories.js.map +7 -0
- package/stories/overlay-story-components.js +338 -0
- package/stories/overlay-story-components.js.map +7 -0
- package/stories/overlay.stories.js +1412 -0
- package/stories/overlay.stories.js.map +7 -0
- package/sync/overlay-trigger.d.ts +6 -0
- package/sync/overlay-trigger.dev.js +6 -0
- package/sync/overlay-trigger.dev.js.map +7 -0
- package/sync/overlay-trigger.js +2 -0
- package/sync/overlay-trigger.js.map +7 -0
- package/test/benchmark/basic-test.js +40 -0
- package/test/benchmark/basic-test.js.map +7 -0
- package/test/benchmark/directive-test.js +43 -0
- package/test/benchmark/directive-test.js.map +7 -0
- package/test/benchmark/element-test.js +40 -0
- package/test/benchmark/element-test.js.map +7 -0
- package/test/benchmark/lazy-test.js +47 -0
- package/test/benchmark/lazy-test.js.map +7 -0
- package/test/index.js +605 -0
- package/test/index.js.map +7 -0
- package/test/overlay-directive.test-vrt.js +5 -0
- package/test/overlay-directive.test-vrt.js.map +7 -0
- package/test/overlay-directive.test.js +162 -0
- package/test/overlay-directive.test.js.map +7 -0
- 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 +934 -0
- package/test/overlay-element.test.js.map +7 -0
- package/test/overlay-lifecycle.test.js +139 -0
- package/test/overlay-lifecycle.test.js.map +7 -0
- package/test/overlay-memory.test.js +10 -0
- package/test/overlay-memory.test.js.map +7 -0
- package/test/overlay-timer.test.js +118 -0
- package/test/overlay-timer.test.js.map +7 -0
- package/test/overlay-trigger-click.test.js +164 -0
- package/test/overlay-trigger-click.test.js.map +7 -0
- package/test/overlay-trigger-directive.test.js +75 -0
- package/test/overlay-trigger-directive.test.js.map +7 -0
- package/test/overlay-trigger-extended.test.js +235 -0
- package/test/overlay-trigger-extended.test.js.map +7 -0
- package/test/overlay-trigger-hover-click.test.js +225 -0
- package/test/overlay-trigger-hover-click.test.js.map +7 -0
- package/test/overlay-trigger-hover.test.js +308 -0
- package/test/overlay-trigger-hover.test.js.map +7 -0
- package/test/overlay-trigger-longpress.test.js +531 -0
- package/test/overlay-trigger-longpress.test.js.map +7 -0
- package/test/overlay-trigger-sync.test.js +5 -0
- package/test/overlay-trigger-sync.test.js.map +7 -0
- package/test/overlay-trigger.test.js +5 -0
- package/test/overlay-trigger.test.js.map +7 -0
- package/test/overlay-update.test.js +28 -0
- package/test/overlay-update.test.js.map +7 -0
- package/test/overlay-v1.test.js +569 -0
- package/test/overlay-v1.test.js.map +7 -0
- package/test/overlay.test-vrt.js +5 -0
- package/test/overlay.test-vrt.js.map +7 -0
- package/test/overlay.test.js +865 -0
- package/test/overlay.test.js.map +7 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["overlay-trigger.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 { defineElement } from '@spectrum-web-components/base/src/define-element.js';\nimport { OverlayTrigger } from './src/OverlayTrigger.dev.js'\n\ndefineElement('overlay-trigger', OverlayTrigger);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'overlay-trigger': OverlayTrigger;\n }\n}\n"],
|
|
5
|
+
"mappings": ";AAWA,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB;AAE/B,cAAc,mBAAmB,cAAc;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["overlay-trigger.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 { defineElement } from '@spectrum-web-components/base/src/define-element.js';\nimport { OverlayTrigger } from './src/OverlayTrigger.js';\n\ndefineElement('overlay-trigger', OverlayTrigger);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'overlay-trigger': OverlayTrigger;\n }\n}\n"],
|
|
5
|
+
"mappings": "aAWA,OAAS,iBAAAA,MAAqB,sDAC9B,OAAS,kBAAAC,MAAsB,0BAE/BD,EAAc,kBAAmBC,CAAc",
|
|
6
|
+
"names": ["defineElement", "OverlayTrigger"]
|
|
7
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spectrum-web-components/overlay",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -160,11 +160,11 @@
|
|
|
160
160
|
"dependencies": {
|
|
161
161
|
"@floating-ui/dom": "^1.6.1",
|
|
162
162
|
"@floating-ui/utils": "^0.2.1",
|
|
163
|
-
"@spectrum-web-components/action-button": "^1.1.
|
|
164
|
-
"@spectrum-web-components/base": "^1.1.
|
|
165
|
-
"@spectrum-web-components/reactive-controllers": "^1.1.
|
|
166
|
-
"@spectrum-web-components/shared": "^1.1.
|
|
167
|
-
"@spectrum-web-components/theme": "^1.1.
|
|
163
|
+
"@spectrum-web-components/action-button": "^1.1.2",
|
|
164
|
+
"@spectrum-web-components/base": "^1.1.2",
|
|
165
|
+
"@spectrum-web-components/reactive-controllers": "^1.1.2",
|
|
166
|
+
"@spectrum-web-components/shared": "^1.1.2",
|
|
167
|
+
"@spectrum-web-components/theme": "^1.1.2"
|
|
168
168
|
},
|
|
169
169
|
"types": "./src/index.d.ts",
|
|
170
170
|
"customElements": "custom-elements.json",
|
|
@@ -176,5 +176,5 @@
|
|
|
176
176
|
"./stories/overlay-story-components.js",
|
|
177
177
|
"./**/*.dev.js"
|
|
178
178
|
],
|
|
179
|
-
"gitHead": "
|
|
179
|
+
"gitHead": "9ee45f2dfd3ac1939072726d00195c6c05d9a562"
|
|
180
180
|
}
|
package/sp-overlay.d.ts
ADDED
|
@@ -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 { defineElement } from '@spectrum-web-components/base/src/define-element.js';\nimport { Overlay } from './src/Overlay.dev.js'\n\ndefineElement('sp-overlay', Overlay);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sp-overlay': Overlay;\n }\n}\n"],
|
|
5
|
+
"mappings": ";AAWA,SAAS,qBAAqB;AAC9B,SAAS,eAAe;AAExB,cAAc,cAAc,OAAO;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/sp-overlay.js
ADDED
|
@@ -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 { defineElement } from '@spectrum-web-components/base/src/define-element.js';\nimport { Overlay } from './src/Overlay.js';\n\ndefineElement('sp-overlay', Overlay);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sp-overlay': Overlay;\n }\n}\n"],
|
|
5
|
+
"mappings": "aAWA,OAAS,iBAAAA,MAAqB,sDAC9B,OAAS,WAAAC,MAAe,mBAExBD,EAAc,aAAcC,CAAO",
|
|
6
|
+
"names": ["defineElement", "Overlay"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { SpectrumElement } from '@spectrum-web-components/base';
|
|
2
|
+
import type { OpenableElement, OverlayOptions, OverlayOptionsV1, OverlayState, OverlayTypes, Placement, TriggerInteractionsV1 } from './overlay-types.js';
|
|
3
|
+
import type { Overlay } from './Overlay.js';
|
|
4
|
+
import type { VirtualTrigger } from './VirtualTrigger.js';
|
|
5
|
+
import { OverlayTimer } from './overlay-timer.js';
|
|
6
|
+
import type { PlacementController } from './PlacementController.js';
|
|
7
|
+
import type { ElementResolutionController } from '@spectrum-web-components/reactive-controllers/src/ElementResolution.js';
|
|
8
|
+
export declare const overlayTimer: OverlayTimer;
|
|
9
|
+
export declare const noop: () => void;
|
|
10
|
+
/**
|
|
11
|
+
* Apply a "transitionend" listener to an element that may not transition but
|
|
12
|
+
* guarantee the callback will be fired either way.
|
|
13
|
+
*
|
|
14
|
+
* @param el {HTMLElement} - Target of the "transition" listeners.
|
|
15
|
+
* @param action {Function} - Method to trigger the "transition".
|
|
16
|
+
* @param cb {Function} - Callback to trigger when the "transition" has ended.
|
|
17
|
+
*/
|
|
18
|
+
export declare const guaranteedAllTransitionend: (el: HTMLElement, action: () => void, cb: () => void) => void;
|
|
19
|
+
export declare function nextFrame(): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Abstract Overlay base class so that property tyings and imperative API
|
|
22
|
+
* interfaces can be held separate from the actual class definition.
|
|
23
|
+
*/
|
|
24
|
+
export declare class AbstractOverlay extends SpectrumElement {
|
|
25
|
+
protected applyFocus(_targetOpenState: boolean, _focusEl: HTMLElement | null): Promise<void>;
|
|
26
|
+
get delayed(): boolean;
|
|
27
|
+
set delayed(_delayed: boolean);
|
|
28
|
+
dialogEl: HTMLDialogElement & {
|
|
29
|
+
showPopover(): void;
|
|
30
|
+
hidePopover(): void;
|
|
31
|
+
};
|
|
32
|
+
get disabled(): boolean;
|
|
33
|
+
set disabled(_disabled: boolean);
|
|
34
|
+
dispose: () => void;
|
|
35
|
+
protected get elementResolver(): ElementResolutionController;
|
|
36
|
+
protected set elementResolver(controller: ElementResolutionController);
|
|
37
|
+
protected _elementResolver: ElementResolutionController;
|
|
38
|
+
protected ensureOnDOM(_targetOpenState: boolean): Promise<void>;
|
|
39
|
+
elements: OpenableElement[];
|
|
40
|
+
protected makeTransition(_targetOpenState: boolean): Promise<HTMLElement | null>;
|
|
41
|
+
protected manageDelay(_targetOpenState: boolean): Promise<void>;
|
|
42
|
+
protected manageDialogOpen(): Promise<void>;
|
|
43
|
+
protected managePopoverOpen(): Promise<void>;
|
|
44
|
+
protected managePosition(): void;
|
|
45
|
+
protected offset: number | [number, number];
|
|
46
|
+
get open(): boolean;
|
|
47
|
+
set open(_open: boolean);
|
|
48
|
+
placement?: Placement;
|
|
49
|
+
protected get placementController(): PlacementController;
|
|
50
|
+
protected set placementController(controller: PlacementController);
|
|
51
|
+
protected _placementController: PlacementController;
|
|
52
|
+
receivesFocus: 'true' | 'false' | 'auto';
|
|
53
|
+
protected requestSlottable(): void;
|
|
54
|
+
protected returnFocus(): void;
|
|
55
|
+
get state(): OverlayState;
|
|
56
|
+
set state(_state: OverlayState);
|
|
57
|
+
protected _state: OverlayState;
|
|
58
|
+
triggerElement: HTMLElement | VirtualTrigger | null;
|
|
59
|
+
type: OverlayTypes;
|
|
60
|
+
willPreventClose: boolean;
|
|
61
|
+
manuallyKeepOpen(): void;
|
|
62
|
+
static update(): void;
|
|
63
|
+
/**
|
|
64
|
+
* Overloaded imperative API entry point that allows for both the pre-0.37.0
|
|
65
|
+
* argument signature as well as the post-0.37.0 signature. This allows for
|
|
66
|
+
* consumers to continue to leverage it as they had been in previous releases
|
|
67
|
+
* while also surfacing the more feature-rich API that has been made available.
|
|
68
|
+
*/
|
|
69
|
+
static open(trigger: HTMLElement, interaction: TriggerInteractionsV1, content: HTMLElement, optionsV1: OverlayOptionsV1): Promise<() => void>;
|
|
70
|
+
static open(content: HTMLElement, options?: OverlayOptions): Promise<Overlay>;
|
|
71
|
+
static applyOptions(overlay: AbstractOverlay, options: OverlayOptions): void;
|
|
72
|
+
private iosEventPropagationController?;
|
|
73
|
+
protected setupIOSEventManagement(): void;
|
|
74
|
+
protected cleanupIOSEventManagement(): void;
|
|
75
|
+
disconnectedCallback(): void;
|
|
76
|
+
}
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
import { SpectrumElement } from "@spectrum-web-components/base";
|
|
3
|
+
import { reparentChildren } from "@spectrum-web-components/shared/src/reparent-children.js";
|
|
4
|
+
import { OverlayTimer } from "./overlay-timer.dev.js";
|
|
5
|
+
export const overlayTimer = new OverlayTimer();
|
|
6
|
+
export const noop = () => {
|
|
7
|
+
return;
|
|
8
|
+
};
|
|
9
|
+
export const guaranteedAllTransitionend = (el, action, cb) => {
|
|
10
|
+
const abortController = new AbortController();
|
|
11
|
+
const runningTransitions = /* @__PURE__ */ new Map();
|
|
12
|
+
const cleanup = () => {
|
|
13
|
+
abortController.abort();
|
|
14
|
+
cb();
|
|
15
|
+
};
|
|
16
|
+
let guarantee2;
|
|
17
|
+
let guarantee3;
|
|
18
|
+
const guarantee1 = requestAnimationFrame(() => {
|
|
19
|
+
guarantee2 = requestAnimationFrame(() => {
|
|
20
|
+
guarantee3 = requestAnimationFrame(() => {
|
|
21
|
+
cleanup();
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
const handleTransitionend = (event) => {
|
|
26
|
+
if (event.target !== el) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
runningTransitions.set(
|
|
30
|
+
event.propertyName,
|
|
31
|
+
runningTransitions.get(event.propertyName) - 1
|
|
32
|
+
);
|
|
33
|
+
if (!runningTransitions.get(event.propertyName)) {
|
|
34
|
+
runningTransitions.delete(event.propertyName);
|
|
35
|
+
}
|
|
36
|
+
if (runningTransitions.size === 0) {
|
|
37
|
+
cleanup();
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
const handleTransitionrun = (event) => {
|
|
41
|
+
if (event.target !== el) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (!runningTransitions.has(event.propertyName)) {
|
|
45
|
+
runningTransitions.set(event.propertyName, 0);
|
|
46
|
+
}
|
|
47
|
+
runningTransitions.set(
|
|
48
|
+
event.propertyName,
|
|
49
|
+
runningTransitions.get(event.propertyName) + 1
|
|
50
|
+
);
|
|
51
|
+
cancelAnimationFrame(guarantee1);
|
|
52
|
+
cancelAnimationFrame(guarantee2);
|
|
53
|
+
cancelAnimationFrame(guarantee3);
|
|
54
|
+
};
|
|
55
|
+
el.addEventListener("transitionrun", handleTransitionrun, {
|
|
56
|
+
signal: abortController.signal
|
|
57
|
+
});
|
|
58
|
+
el.addEventListener("transitionend", handleTransitionend, {
|
|
59
|
+
signal: abortController.signal
|
|
60
|
+
});
|
|
61
|
+
el.addEventListener("transitioncancel", handleTransitionend, {
|
|
62
|
+
signal: abortController.signal
|
|
63
|
+
});
|
|
64
|
+
action();
|
|
65
|
+
};
|
|
66
|
+
export function nextFrame() {
|
|
67
|
+
return new Promise((res) => requestAnimationFrame(() => res()));
|
|
68
|
+
}
|
|
69
|
+
export class AbstractOverlay extends SpectrumElement {
|
|
70
|
+
constructor() {
|
|
71
|
+
super(...arguments);
|
|
72
|
+
this.dispose = noop;
|
|
73
|
+
this.offset = 0;
|
|
74
|
+
this.willPreventClose = false;
|
|
75
|
+
}
|
|
76
|
+
async applyFocus(_targetOpenState, _focusEl) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
/* c8 ignore next 6 */
|
|
80
|
+
get delayed() {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
set delayed(_delayed) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
/* c8 ignore next 6 */
|
|
87
|
+
get disabled() {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
set disabled(_disabled) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
get elementResolver() {
|
|
94
|
+
return this._elementResolver;
|
|
95
|
+
}
|
|
96
|
+
set elementResolver(controller) {
|
|
97
|
+
this._elementResolver = controller;
|
|
98
|
+
}
|
|
99
|
+
/* c8 ignore next 3 */
|
|
100
|
+
async ensureOnDOM(_targetOpenState) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
/* c8 ignore next 5 */
|
|
104
|
+
async makeTransition(_targetOpenState) {
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
async manageDelay(_targetOpenState) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
/* c8 ignore next 3 */
|
|
111
|
+
async manageDialogOpen() {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
/* c8 ignore next 3 */
|
|
115
|
+
async managePopoverOpen() {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
/* c8 ignore next 3 */
|
|
119
|
+
managePosition() {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
/* c8 ignore next 6 */
|
|
123
|
+
get open() {
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
set open(_open) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
get placementController() {
|
|
130
|
+
return this._placementController;
|
|
131
|
+
}
|
|
132
|
+
set placementController(controller) {
|
|
133
|
+
this._placementController = controller;
|
|
134
|
+
}
|
|
135
|
+
requestSlottable() {
|
|
136
|
+
}
|
|
137
|
+
returnFocus() {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
/* c8 ignore next 6 */
|
|
141
|
+
get state() {
|
|
142
|
+
return "closed";
|
|
143
|
+
}
|
|
144
|
+
set state(_state) {
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
/* c8 ignore next 3 */
|
|
148
|
+
manuallyKeepOpen() {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
static update() {
|
|
152
|
+
const overlayUpdateEvent = new CustomEvent("sp-update-overlays", {
|
|
153
|
+
bubbles: true,
|
|
154
|
+
composed: true,
|
|
155
|
+
cancelable: true
|
|
156
|
+
});
|
|
157
|
+
document.dispatchEvent(overlayUpdateEvent);
|
|
158
|
+
}
|
|
159
|
+
static async open(triggerOrContent, interactionOrOptions, content, optionsV1) {
|
|
160
|
+
await import("@spectrum-web-components/overlay/sp-overlay.js");
|
|
161
|
+
const v2 = arguments.length === 2;
|
|
162
|
+
const overlayContent = content || triggerOrContent;
|
|
163
|
+
const overlay = new this();
|
|
164
|
+
let restored = false;
|
|
165
|
+
overlay.dispose = () => {
|
|
166
|
+
overlay.addEventListener("sp-closed", () => {
|
|
167
|
+
if (!restored) {
|
|
168
|
+
restoreContent();
|
|
169
|
+
restored = true;
|
|
170
|
+
}
|
|
171
|
+
requestAnimationFrame(() => {
|
|
172
|
+
overlay.remove();
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
overlay.open = false;
|
|
176
|
+
overlay.dispose = noop;
|
|
177
|
+
};
|
|
178
|
+
const restoreContent = reparentChildren([overlayContent], overlay, {
|
|
179
|
+
position: "beforeend",
|
|
180
|
+
prepareCallback: (el) => {
|
|
181
|
+
const slot = el.slot;
|
|
182
|
+
el.removeAttribute("slot");
|
|
183
|
+
return () => {
|
|
184
|
+
el.slot = slot;
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
const v1 = !v2 && overlayContent && optionsV1;
|
|
189
|
+
if (v1) {
|
|
190
|
+
if (true) {
|
|
191
|
+
window.__swc.warn(
|
|
192
|
+
overlay,
|
|
193
|
+
`You are interacting with an ${overlay.localName} element via a deprecated imperative API. This API will be removed in a future version of the SWC library. Consider leveraging an ${overlay.localName} directly.`,
|
|
194
|
+
"https://opensource.adobe.com/spectrum-web-components/components/overlay/",
|
|
195
|
+
{ level: "deprecation" }
|
|
196
|
+
);
|
|
197
|
+
}
|
|
198
|
+
const trigger = triggerOrContent;
|
|
199
|
+
const interaction = interactionOrOptions;
|
|
200
|
+
const options2 = optionsV1;
|
|
201
|
+
AbstractOverlay.applyOptions(overlay, {
|
|
202
|
+
...options2,
|
|
203
|
+
delayed: options2.delayed || overlayContent.hasAttribute("delayed"),
|
|
204
|
+
trigger: options2.virtualTrigger || trigger,
|
|
205
|
+
type: interaction === "modal" ? "modal" : interaction === "hover" ? "hint" : "auto"
|
|
206
|
+
});
|
|
207
|
+
trigger.insertAdjacentElement("afterend", overlay);
|
|
208
|
+
await overlay.updateComplete;
|
|
209
|
+
overlay.open = true;
|
|
210
|
+
return overlay.dispose;
|
|
211
|
+
}
|
|
212
|
+
const options = interactionOrOptions;
|
|
213
|
+
overlay.append(overlayContent);
|
|
214
|
+
AbstractOverlay.applyOptions(overlay, {
|
|
215
|
+
...options,
|
|
216
|
+
delayed: options.delayed || overlayContent.hasAttribute("delayed")
|
|
217
|
+
});
|
|
218
|
+
overlay.updateComplete.then(() => {
|
|
219
|
+
overlay.open = true;
|
|
220
|
+
});
|
|
221
|
+
return overlay;
|
|
222
|
+
}
|
|
223
|
+
static applyOptions(overlay, options) {
|
|
224
|
+
var _a, _b;
|
|
225
|
+
overlay.delayed = !!options.delayed;
|
|
226
|
+
overlay.receivesFocus = (_a = options.receivesFocus) != null ? _a : "auto";
|
|
227
|
+
overlay.triggerElement = options.trigger || null;
|
|
228
|
+
overlay.type = options.type || "modal";
|
|
229
|
+
overlay.offset = (_b = options.offset) != null ? _b : 0;
|
|
230
|
+
overlay.placement = options.placement;
|
|
231
|
+
overlay.willPreventClose = !!options.notImmediatelyClosable;
|
|
232
|
+
}
|
|
233
|
+
setupIOSEventManagement() {
|
|
234
|
+
this.iosEventPropagationController = new AbortController();
|
|
235
|
+
this.dialogEl.addEventListener(
|
|
236
|
+
"pointerup",
|
|
237
|
+
(event) => event.stopPropagation(),
|
|
238
|
+
{
|
|
239
|
+
capture: true,
|
|
240
|
+
signal: this.iosEventPropagationController.signal
|
|
241
|
+
}
|
|
242
|
+
);
|
|
243
|
+
this.dialogEl.addEventListener(
|
|
244
|
+
"touchend",
|
|
245
|
+
(event) => event.stopPropagation(),
|
|
246
|
+
{
|
|
247
|
+
capture: true,
|
|
248
|
+
signal: this.iosEventPropagationController.signal
|
|
249
|
+
}
|
|
250
|
+
);
|
|
251
|
+
}
|
|
252
|
+
cleanupIOSEventManagement() {
|
|
253
|
+
var _a;
|
|
254
|
+
(_a = this.iosEventPropagationController) == null ? void 0 : _a.abort();
|
|
255
|
+
this.iosEventPropagationController = void 0;
|
|
256
|
+
}
|
|
257
|
+
disconnectedCallback() {
|
|
258
|
+
this.cleanupIOSEventManagement();
|
|
259
|
+
super.disconnectedCallback();
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
//# sourceMappingURL=AbstractOverlay.dev.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["AbstractOverlay.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 { SpectrumElement } from '@spectrum-web-components/base';\nimport { reparentChildren } from '@spectrum-web-components/shared/src/reparent-children.js';\n\nimport type {\n OpenableElement,\n OverlayOptions,\n OverlayOptionsV1,\n OverlayState,\n OverlayTypes,\n Placement,\n TriggerInteractionsV1,\n} from './overlay-types.dev.js'\nimport type { Overlay } from './Overlay.dev.js'\nimport type { VirtualTrigger } from './VirtualTrigger.dev.js'\nimport { OverlayTimer } from './overlay-timer.dev.js'\nimport type { PlacementController } from './PlacementController.dev.js'\nimport type { ElementResolutionController } from '@spectrum-web-components/reactive-controllers/src/ElementResolution.js';\n\nexport const overlayTimer = new OverlayTimer();\n\nexport const noop = (): void => {\n return;\n};\n\n/**\n * Apply a \"transitionend\" listener to an element that may not transition but\n * guarantee the callback will be fired either way.\n *\n * @param el {HTMLElement} - Target of the \"transition\" listeners.\n * @param action {Function} - Method to trigger the \"transition\".\n * @param cb {Function} - Callback to trigger when the \"transition\" has ended.\n */\nexport const guaranteedAllTransitionend = (\n el: HTMLElement,\n action: () => void,\n cb: () => void\n): void => {\n const abortController = new AbortController();\n const runningTransitions = new Map<string, number>();\n const cleanup = (): void => {\n abortController.abort();\n cb();\n };\n let guarantee2: number;\n let guarantee3: number;\n // WebKit fires `transitionrun` a little earlier, the multiple guarantees here\n // allow WebKit to be caught, but doesn't remove the animation listener until\n // after it would have fired in Chromium.\n const guarantee1 = requestAnimationFrame(() => {\n guarantee2 = requestAnimationFrame(() => {\n guarantee3 = requestAnimationFrame(() => {\n cleanup();\n });\n });\n });\n const handleTransitionend = (event: TransitionEvent): void => {\n if (event.target !== el) {\n return;\n }\n runningTransitions.set(\n event.propertyName,\n (runningTransitions.get(event.propertyName) as number) - 1\n );\n if (!runningTransitions.get(event.propertyName)) {\n runningTransitions.delete(event.propertyName);\n }\n if (runningTransitions.size === 0) {\n cleanup();\n }\n };\n const handleTransitionrun = (event: TransitionEvent): void => {\n if (event.target !== el) {\n return;\n }\n if (!runningTransitions.has(event.propertyName)) {\n runningTransitions.set(event.propertyName, 0);\n }\n runningTransitions.set(\n event.propertyName,\n (runningTransitions.get(event.propertyName) as number) + 1\n );\n cancelAnimationFrame(guarantee1);\n cancelAnimationFrame(guarantee2);\n cancelAnimationFrame(guarantee3);\n };\n el.addEventListener('transitionrun', handleTransitionrun, {\n signal: abortController.signal,\n });\n el.addEventListener('transitionend', handleTransitionend, {\n signal: abortController.signal,\n });\n el.addEventListener('transitioncancel', handleTransitionend, {\n signal: abortController.signal,\n });\n action();\n};\n\nexport function nextFrame(): Promise<void> {\n return new Promise((res) => requestAnimationFrame(() => res()));\n}\n\n/**\n * Abstract Overlay base class so that property tyings and imperative API\n * interfaces can be held separate from the actual class definition.\n */\nexport class AbstractOverlay extends SpectrumElement {\n protected async applyFocus(\n _targetOpenState: boolean,\n _focusEl: HTMLElement | null\n ): Promise<void> {\n return;\n }\n /* c8 ignore next 6 */\n get delayed(): boolean {\n return false;\n }\n set delayed(_delayed: boolean) {\n return;\n }\n dialogEl!: HTMLDialogElement & {\n showPopover(): void;\n hidePopover(): void;\n };\n /* c8 ignore next 6 */\n get disabled(): boolean {\n return false;\n }\n set disabled(_disabled: boolean) {\n return;\n }\n dispose = noop;\n protected get elementResolver(): ElementResolutionController {\n return this._elementResolver;\n }\n protected set elementResolver(controller) {\n this._elementResolver = controller;\n }\n protected _elementResolver!: ElementResolutionController;\n /* c8 ignore next 3 */\n protected async ensureOnDOM(_targetOpenState: boolean): Promise<void> {\n return;\n }\n elements!: OpenableElement[];\n /* c8 ignore next 5 */\n protected async makeTransition(\n _targetOpenState: boolean\n ): Promise<HTMLElement | null> {\n return null;\n }\n protected async manageDelay(_targetOpenState: boolean): Promise<void> {\n return;\n }\n /* c8 ignore next 3 */\n protected async manageDialogOpen(): Promise<void> {\n return;\n }\n /* c8 ignore next 3 */\n protected async managePopoverOpen(): Promise<void> {\n return;\n }\n /* c8 ignore next 3 */\n protected managePosition(): void {\n return;\n }\n protected offset: number | [number, number] = 0;\n /* c8 ignore next 6 */\n get open(): boolean {\n return false;\n }\n set open(_open: boolean) {\n return;\n }\n placement?: Placement;\n protected get placementController(): PlacementController {\n return this._placementController;\n }\n protected set placementController(controller) {\n this._placementController = controller;\n }\n protected _placementController!: PlacementController;\n receivesFocus!: 'true' | 'false' | 'auto';\n protected requestSlottable(): void {}\n protected returnFocus(): void {\n return;\n }\n /* c8 ignore next 6 */\n get state(): OverlayState {\n return 'closed';\n }\n set state(_state: OverlayState) {\n return;\n }\n protected _state!: OverlayState;\n triggerElement!: HTMLElement | VirtualTrigger | null;\n type!: OverlayTypes;\n willPreventClose = false;\n /* c8 ignore next 3 */\n public manuallyKeepOpen(): void {\n return;\n }\n\n public static update(): void {\n const overlayUpdateEvent = new CustomEvent('sp-update-overlays', {\n bubbles: true,\n composed: true,\n cancelable: true,\n });\n document.dispatchEvent(overlayUpdateEvent);\n }\n\n /**\n * Overloaded imperative API entry point that allows for both the pre-0.37.0\n * argument signature as well as the post-0.37.0 signature. This allows for\n * consumers to continue to leverage it as they had been in previous releases\n * while also surfacing the more feature-rich API that has been made available.\n */\n public static async open(\n trigger: HTMLElement,\n interaction: TriggerInteractionsV1,\n content: HTMLElement,\n optionsV1: OverlayOptionsV1\n ): Promise<() => void>;\n public static async open(\n content: HTMLElement,\n options?: OverlayOptions\n ): Promise<Overlay>;\n public static async open(\n triggerOrContent: HTMLElement,\n interactionOrOptions:\n | TriggerInteractionsV1\n | OverlayOptions\n | undefined,\n content?: HTMLElement,\n optionsV1?: OverlayOptionsV1\n ): Promise<Overlay | (() => void)> {\n await import('@spectrum-web-components/overlay/sp-overlay.js');\n const v2 = arguments.length === 2;\n const overlayContent = content || triggerOrContent;\n // Use the `this` from the `static` method context rather than a\n // specific imported constructor to prevent opening a circular dependency.\n const overlay = new this() as Overlay;\n let restored = false;\n overlay.dispose = () => {\n overlay.addEventListener('sp-closed', () => {\n if (!restored) {\n restoreContent();\n restored = true;\n }\n requestAnimationFrame(() => {\n overlay.remove();\n });\n });\n overlay.open = false;\n overlay.dispose = noop;\n };\n /**\n * Since content must exist in an <sp-overlay>, we need a way to get it there.\n * The best & most-direct way is to declaratively use an <sp-overlay> element,\n * but for imperative users, we'll reparent content into an overlay that we've created for them.\n **/\n const restoreContent = reparentChildren([overlayContent], overlay, {\n position: 'beforeend',\n prepareCallback: (el) => {\n // Ensure that content to be overlaid is no longer targetted to a specific `slot`.\n // This allow for it to be visible in the overlaid context.\n const slot = el.slot;\n el.removeAttribute('slot');\n return () => {\n el.slot = slot;\n };\n },\n });\n\n const v1 = !v2 && overlayContent && optionsV1;\n if (v1) {\n if (window.__swc.DEBUG) {\n window.__swc.warn(\n overlay,\n `You are interacting with an ${overlay.localName} element via a deprecated imperative API. This API will be removed in a future version of the SWC library. Consider leveraging an ${overlay.localName} directly.`,\n 'https://opensource.adobe.com/spectrum-web-components/components/overlay/',\n { level: 'deprecation' }\n );\n }\n const trigger = triggerOrContent;\n const interaction = interactionOrOptions;\n const options = optionsV1;\n AbstractOverlay.applyOptions(overlay, {\n ...options,\n delayed:\n options.delayed || overlayContent.hasAttribute('delayed'),\n trigger: options.virtualTrigger || trigger,\n type:\n interaction === 'modal'\n ? 'modal'\n : interaction === 'hover'\n ? 'hint'\n : 'auto',\n });\n trigger.insertAdjacentElement('afterend', overlay);\n await overlay.updateComplete;\n overlay.open = true;\n return overlay.dispose;\n }\n\n const options = interactionOrOptions as OverlayOptions;\n overlay.append(overlayContent);\n AbstractOverlay.applyOptions(overlay, {\n ...options,\n delayed: options.delayed || overlayContent.hasAttribute('delayed'),\n });\n overlay.updateComplete.then(() => {\n // Do we want to \"open\" this path, or leave that to the consumer?\n overlay.open = true;\n });\n return overlay;\n }\n\n static applyOptions(\n overlay: AbstractOverlay,\n options: OverlayOptions\n ): void {\n overlay.delayed = !!options.delayed;\n overlay.receivesFocus = options.receivesFocus ?? 'auto';\n overlay.triggerElement = options.trigger || null;\n overlay.type = options.type || 'modal';\n overlay.offset = options.offset ?? 0;\n overlay.placement = options.placement;\n overlay.willPreventClose = !!options.notImmediatelyClosable;\n }\n\n private iosEventPropagationController?: AbortController;\n\n protected setupIOSEventManagement(): void {\n // This is a workaround for a bug in iOS <17 where the event leaks out of the dialog to the element below it.\n // Issue - https://github.com/adobe/spectrum-web-components/issues/5042\n this.iosEventPropagationController = new AbortController();\n this.dialogEl.addEventListener(\n 'pointerup',\n (event) => event.stopPropagation(),\n {\n capture: true,\n signal: this.iosEventPropagationController.signal,\n }\n );\n this.dialogEl.addEventListener(\n 'touchend',\n (event) => event.stopPropagation(),\n {\n capture: true,\n signal: this.iosEventPropagationController.signal,\n }\n );\n }\n\n protected cleanupIOSEventManagement(): void {\n this.iosEventPropagationController?.abort();\n this.iosEventPropagationController = undefined;\n }\n\n override disconnectedCallback(): void {\n this.cleanupIOSEventManagement();\n super.disconnectedCallback();\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["options"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";import{SpectrumElement as y}from"@spectrum-web-components/base";import{reparentChildren as b}from"@spectrum-web-components/shared/src/reparent-children.js";import{OverlayTimer as E}from"./overlay-timer.js";export const overlayTimer=new E,noop=()=>{},guaranteedAllTransitionend=(i,v,e)=>{const r=new AbortController,n=new Map,a=()=>{r.abort(),e()};let d,l;const t=requestAnimationFrame(()=>{d=requestAnimationFrame(()=>{l=requestAnimationFrame(()=>{a()})})}),p=o=>{o.target===i&&(n.set(o.propertyName,n.get(o.propertyName)-1),n.get(o.propertyName)||n.delete(o.propertyName),n.size===0&&a())},m=o=>{o.target===i&&(n.has(o.propertyName)||n.set(o.propertyName,0),n.set(o.propertyName,n.get(o.propertyName)+1),cancelAnimationFrame(t),cancelAnimationFrame(d),cancelAnimationFrame(l))};i.addEventListener("transitionrun",m,{signal:r.signal}),i.addEventListener("transitionend",p,{signal:r.signal}),i.addEventListener("transitioncancel",p,{signal:r.signal}),v()};export function nextFrame(){return new Promise(i=>requestAnimationFrame(()=>i()))}export class AbstractOverlay extends y{constructor(){super(...arguments);this.dispose=noop;this.offset=0;this.willPreventClose=!1}async applyFocus(e,r){}get delayed(){return!1}set delayed(e){}get disabled(){return!1}set disabled(e){}get elementResolver(){return this._elementResolver}set elementResolver(e){this._elementResolver=e}async ensureOnDOM(e){}async makeTransition(e){return null}async manageDelay(e){}async manageDialogOpen(){}async managePopoverOpen(){}managePosition(){}get open(){return!1}set open(e){}get placementController(){return this._placementController}set placementController(e){this._placementController=e}requestSlottable(){}returnFocus(){}get state(){return"closed"}set state(e){}manuallyKeepOpen(){}static update(){const e=new CustomEvent("sp-update-overlays",{bubbles:!0,composed:!0,cancelable:!0});document.dispatchEvent(e)}static async open(e,r,n,a){await import("@spectrum-web-components/overlay/sp-overlay.js");const d=arguments.length===2,l=n||e,t=new this;let p=!1;t.dispose=()=>{t.addEventListener("sp-closed",()=>{p||(m(),p=!0),requestAnimationFrame(()=>{t.remove()})}),t.open=!1,t.dispose=noop};const m=b([l],t,{position:"beforeend",prepareCallback:s=>{const c=s.slot;return s.removeAttribute("slot"),()=>{s.slot=c}}});if(!d&&l&&a){const s=e,c=r,u=a;return AbstractOverlay.applyOptions(t,{...u,delayed:u.delayed||l.hasAttribute("delayed"),trigger:u.virtualTrigger||s,type:c==="modal"?"modal":c==="hover"?"hint":"auto"}),s.insertAdjacentElement("afterend",t),await t.updateComplete,t.open=!0,t.dispose}const g=r;return t.append(l),AbstractOverlay.applyOptions(t,{...g,delayed:g.delayed||l.hasAttribute("delayed")}),t.updateComplete.then(()=>{t.open=!0}),t}static applyOptions(e,r){var n,a;e.delayed=!!r.delayed,e.receivesFocus=(n=r.receivesFocus)!=null?n:"auto",e.triggerElement=r.trigger||null,e.type=r.type||"modal",e.offset=(a=r.offset)!=null?a:0,e.placement=r.placement,e.willPreventClose=!!r.notImmediatelyClosable}setupIOSEventManagement(){this.iosEventPropagationController=new AbortController,this.dialogEl.addEventListener("pointerup",e=>e.stopPropagation(),{capture:!0,signal:this.iosEventPropagationController.signal}),this.dialogEl.addEventListener("touchend",e=>e.stopPropagation(),{capture:!0,signal:this.iosEventPropagationController.signal})}cleanupIOSEventManagement(){var e;(e=this.iosEventPropagationController)==null||e.abort(),this.iosEventPropagationController=void 0}disconnectedCallback(){this.cleanupIOSEventManagement(),super.disconnectedCallback()}}
|
|
2
|
+
//# sourceMappingURL=AbstractOverlay.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["AbstractOverlay.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 { SpectrumElement } from '@spectrum-web-components/base';\nimport { reparentChildren } from '@spectrum-web-components/shared/src/reparent-children.js';\n\nimport type {\n OpenableElement,\n OverlayOptions,\n OverlayOptionsV1,\n OverlayState,\n OverlayTypes,\n Placement,\n TriggerInteractionsV1,\n} from './overlay-types.js';\nimport type { Overlay } from './Overlay.js';\nimport type { VirtualTrigger } from './VirtualTrigger.js';\nimport { OverlayTimer } from './overlay-timer.js';\nimport type { PlacementController } from './PlacementController.js';\nimport type { ElementResolutionController } from '@spectrum-web-components/reactive-controllers/src/ElementResolution.js';\n\nexport const overlayTimer = new OverlayTimer();\n\nexport const noop = (): void => {\n return;\n};\n\n/**\n * Apply a \"transitionend\" listener to an element that may not transition but\n * guarantee the callback will be fired either way.\n *\n * @param el {HTMLElement} - Target of the \"transition\" listeners.\n * @param action {Function} - Method to trigger the \"transition\".\n * @param cb {Function} - Callback to trigger when the \"transition\" has ended.\n */\nexport const guaranteedAllTransitionend = (\n el: HTMLElement,\n action: () => void,\n cb: () => void\n): void => {\n const abortController = new AbortController();\n const runningTransitions = new Map<string, number>();\n const cleanup = (): void => {\n abortController.abort();\n cb();\n };\n let guarantee2: number;\n let guarantee3: number;\n // WebKit fires `transitionrun` a little earlier, the multiple guarantees here\n // allow WebKit to be caught, but doesn't remove the animation listener until\n // after it would have fired in Chromium.\n const guarantee1 = requestAnimationFrame(() => {\n guarantee2 = requestAnimationFrame(() => {\n guarantee3 = requestAnimationFrame(() => {\n cleanup();\n });\n });\n });\n const handleTransitionend = (event: TransitionEvent): void => {\n if (event.target !== el) {\n return;\n }\n runningTransitions.set(\n event.propertyName,\n (runningTransitions.get(event.propertyName) as number) - 1\n );\n if (!runningTransitions.get(event.propertyName)) {\n runningTransitions.delete(event.propertyName);\n }\n if (runningTransitions.size === 0) {\n cleanup();\n }\n };\n const handleTransitionrun = (event: TransitionEvent): void => {\n if (event.target !== el) {\n return;\n }\n if (!runningTransitions.has(event.propertyName)) {\n runningTransitions.set(event.propertyName, 0);\n }\n runningTransitions.set(\n event.propertyName,\n (runningTransitions.get(event.propertyName) as number) + 1\n );\n cancelAnimationFrame(guarantee1);\n cancelAnimationFrame(guarantee2);\n cancelAnimationFrame(guarantee3);\n };\n el.addEventListener('transitionrun', handleTransitionrun, {\n signal: abortController.signal,\n });\n el.addEventListener('transitionend', handleTransitionend, {\n signal: abortController.signal,\n });\n el.addEventListener('transitioncancel', handleTransitionend, {\n signal: abortController.signal,\n });\n action();\n};\n\nexport function nextFrame(): Promise<void> {\n return new Promise((res) => requestAnimationFrame(() => res()));\n}\n\n/**\n * Abstract Overlay base class so that property tyings and imperative API\n * interfaces can be held separate from the actual class definition.\n */\nexport class AbstractOverlay extends SpectrumElement {\n protected async applyFocus(\n _targetOpenState: boolean,\n _focusEl: HTMLElement | null\n ): Promise<void> {\n return;\n }\n /* c8 ignore next 6 */\n get delayed(): boolean {\n return false;\n }\n set delayed(_delayed: boolean) {\n return;\n }\n dialogEl!: HTMLDialogElement & {\n showPopover(): void;\n hidePopover(): void;\n };\n /* c8 ignore next 6 */\n get disabled(): boolean {\n return false;\n }\n set disabled(_disabled: boolean) {\n return;\n }\n dispose = noop;\n protected get elementResolver(): ElementResolutionController {\n return this._elementResolver;\n }\n protected set elementResolver(controller) {\n this._elementResolver = controller;\n }\n protected _elementResolver!: ElementResolutionController;\n /* c8 ignore next 3 */\n protected async ensureOnDOM(_targetOpenState: boolean): Promise<void> {\n return;\n }\n elements!: OpenableElement[];\n /* c8 ignore next 5 */\n protected async makeTransition(\n _targetOpenState: boolean\n ): Promise<HTMLElement | null> {\n return null;\n }\n protected async manageDelay(_targetOpenState: boolean): Promise<void> {\n return;\n }\n /* c8 ignore next 3 */\n protected async manageDialogOpen(): Promise<void> {\n return;\n }\n /* c8 ignore next 3 */\n protected async managePopoverOpen(): Promise<void> {\n return;\n }\n /* c8 ignore next 3 */\n protected managePosition(): void {\n return;\n }\n protected offset: number | [number, number] = 0;\n /* c8 ignore next 6 */\n get open(): boolean {\n return false;\n }\n set open(_open: boolean) {\n return;\n }\n placement?: Placement;\n protected get placementController(): PlacementController {\n return this._placementController;\n }\n protected set placementController(controller) {\n this._placementController = controller;\n }\n protected _placementController!: PlacementController;\n receivesFocus!: 'true' | 'false' | 'auto';\n protected requestSlottable(): void {}\n protected returnFocus(): void {\n return;\n }\n /* c8 ignore next 6 */\n get state(): OverlayState {\n return 'closed';\n }\n set state(_state: OverlayState) {\n return;\n }\n protected _state!: OverlayState;\n triggerElement!: HTMLElement | VirtualTrigger | null;\n type!: OverlayTypes;\n willPreventClose = false;\n /* c8 ignore next 3 */\n public manuallyKeepOpen(): void {\n return;\n }\n\n public static update(): void {\n const overlayUpdateEvent = new CustomEvent('sp-update-overlays', {\n bubbles: true,\n composed: true,\n cancelable: true,\n });\n document.dispatchEvent(overlayUpdateEvent);\n }\n\n /**\n * Overloaded imperative API entry point that allows for both the pre-0.37.0\n * argument signature as well as the post-0.37.0 signature. This allows for\n * consumers to continue to leverage it as they had been in previous releases\n * while also surfacing the more feature-rich API that has been made available.\n */\n public static async open(\n trigger: HTMLElement,\n interaction: TriggerInteractionsV1,\n content: HTMLElement,\n optionsV1: OverlayOptionsV1\n ): Promise<() => void>;\n public static async open(\n content: HTMLElement,\n options?: OverlayOptions\n ): Promise<Overlay>;\n public static async open(\n triggerOrContent: HTMLElement,\n interactionOrOptions:\n | TriggerInteractionsV1\n | OverlayOptions\n | undefined,\n content?: HTMLElement,\n optionsV1?: OverlayOptionsV1\n ): Promise<Overlay | (() => void)> {\n await import('@spectrum-web-components/overlay/sp-overlay.js');\n const v2 = arguments.length === 2;\n const overlayContent = content || triggerOrContent;\n // Use the `this` from the `static` method context rather than a\n // specific imported constructor to prevent opening a circular dependency.\n const overlay = new this() as Overlay;\n let restored = false;\n overlay.dispose = () => {\n overlay.addEventListener('sp-closed', () => {\n if (!restored) {\n restoreContent();\n restored = true;\n }\n requestAnimationFrame(() => {\n overlay.remove();\n });\n });\n overlay.open = false;\n overlay.dispose = noop;\n };\n /**\n * Since content must exist in an <sp-overlay>, we need a way to get it there.\n * The best & most-direct way is to declaratively use an <sp-overlay> element,\n * but for imperative users, we'll reparent content into an overlay that we've created for them.\n **/\n const restoreContent = reparentChildren([overlayContent], overlay, {\n position: 'beforeend',\n prepareCallback: (el) => {\n // Ensure that content to be overlaid is no longer targetted to a specific `slot`.\n // This allow for it to be visible in the overlaid context.\n const slot = el.slot;\n el.removeAttribute('slot');\n return () => {\n el.slot = slot;\n };\n },\n });\n\n const v1 = !v2 && overlayContent && optionsV1;\n if (v1) {\n if (window.__swc.DEBUG) {\n window.__swc.warn(\n overlay,\n `You are interacting with an ${overlay.localName} element via a deprecated imperative API. This API will be removed in a future version of the SWC library. Consider leveraging an ${overlay.localName} directly.`,\n 'https://opensource.adobe.com/spectrum-web-components/components/overlay/',\n { level: 'deprecation' }\n );\n }\n const trigger = triggerOrContent;\n const interaction = interactionOrOptions;\n const options = optionsV1;\n AbstractOverlay.applyOptions(overlay, {\n ...options,\n delayed:\n options.delayed || overlayContent.hasAttribute('delayed'),\n trigger: options.virtualTrigger || trigger,\n type:\n interaction === 'modal'\n ? 'modal'\n : interaction === 'hover'\n ? 'hint'\n : 'auto',\n });\n trigger.insertAdjacentElement('afterend', overlay);\n await overlay.updateComplete;\n overlay.open = true;\n return overlay.dispose;\n }\n\n const options = interactionOrOptions as OverlayOptions;\n overlay.append(overlayContent);\n AbstractOverlay.applyOptions(overlay, {\n ...options,\n delayed: options.delayed || overlayContent.hasAttribute('delayed'),\n });\n overlay.updateComplete.then(() => {\n // Do we want to \"open\" this path, or leave that to the consumer?\n overlay.open = true;\n });\n return overlay;\n }\n\n static applyOptions(\n overlay: AbstractOverlay,\n options: OverlayOptions\n ): void {\n overlay.delayed = !!options.delayed;\n overlay.receivesFocus = options.receivesFocus ?? 'auto';\n overlay.triggerElement = options.trigger || null;\n overlay.type = options.type || 'modal';\n overlay.offset = options.offset ?? 0;\n overlay.placement = options.placement;\n overlay.willPreventClose = !!options.notImmediatelyClosable;\n }\n\n private iosEventPropagationController?: AbortController;\n\n protected setupIOSEventManagement(): void {\n // This is a workaround for a bug in iOS <17 where the event leaks out of the dialog to the element below it.\n // Issue - https://github.com/adobe/spectrum-web-components/issues/5042\n this.iosEventPropagationController = new AbortController();\n this.dialogEl.addEventListener(\n 'pointerup',\n (event) => event.stopPropagation(),\n {\n capture: true,\n signal: this.iosEventPropagationController.signal,\n }\n );\n this.dialogEl.addEventListener(\n 'touchend',\n (event) => event.stopPropagation(),\n {\n capture: true,\n signal: this.iosEventPropagationController.signal,\n }\n );\n }\n\n protected cleanupIOSEventManagement(): void {\n this.iosEventPropagationController?.abort();\n this.iosEventPropagationController = undefined;\n }\n\n override disconnectedCallback(): void {\n this.cleanupIOSEventManagement();\n super.disconnectedCallback();\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["SpectrumElement", "reparentChildren", "OverlayTimer", "el", "action", "cb", "abortController", "runningTransitions", "cleanup", "guarantee2", "guarantee3", "guarantee1", "handleTransitionend", "event", "handleTransitionrun", "res", "_targetOpenState", "_focusEl", "_delayed", "_disabled", "controller", "_open", "_state", "overlayUpdateEvent", "triggerOrContent", "interactionOrOptions", "content", "optionsV1", "v2", "overlayContent", "overlay", "restored", "restoreContent", "slot", "trigger", "interaction", "options", "_a", "_b"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { InteractionController, InteractionTypes } from './InteractionController.js';
|
|
2
|
+
export declare class ClickController extends InteractionController {
|
|
3
|
+
type: InteractionTypes;
|
|
4
|
+
/**
|
|
5
|
+
* An overlay with a `click` interaction should not close on click `triggerElement`.
|
|
6
|
+
* When a click is initiated (`pointerdown`), apply `preventNextToggle` when the
|
|
7
|
+
* overlay is `open` to prevent from toggling the overlay when the click event
|
|
8
|
+
* propagates later in the interaction.
|
|
9
|
+
*/
|
|
10
|
+
private preventNextToggle;
|
|
11
|
+
handleClick(): void;
|
|
12
|
+
handlePointerdown(): void;
|
|
13
|
+
init(): void;
|
|
14
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
import {
|
|
3
|
+
InteractionController,
|
|
4
|
+
InteractionTypes
|
|
5
|
+
} from "./InteractionController.dev.js";
|
|
6
|
+
export class ClickController extends InteractionController {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(...arguments);
|
|
9
|
+
this.type = InteractionTypes.click;
|
|
10
|
+
/**
|
|
11
|
+
* An overlay with a `click` interaction should not close on click `triggerElement`.
|
|
12
|
+
* When a click is initiated (`pointerdown`), apply `preventNextToggle` when the
|
|
13
|
+
* overlay is `open` to prevent from toggling the overlay when the click event
|
|
14
|
+
* propagates later in the interaction.
|
|
15
|
+
*/
|
|
16
|
+
this.preventNextToggle = false;
|
|
17
|
+
}
|
|
18
|
+
handleClick() {
|
|
19
|
+
if (!this.preventNextToggle) {
|
|
20
|
+
this.open = !this.open;
|
|
21
|
+
}
|
|
22
|
+
this.preventNextToggle = false;
|
|
23
|
+
}
|
|
24
|
+
handlePointerdown() {
|
|
25
|
+
this.preventNextToggle = this.open;
|
|
26
|
+
}
|
|
27
|
+
init() {
|
|
28
|
+
var _a;
|
|
29
|
+
(_a = this.abortController) == null ? void 0 : _a.abort();
|
|
30
|
+
this.abortController = new AbortController();
|
|
31
|
+
const { signal } = this.abortController;
|
|
32
|
+
this.target.addEventListener("click", () => this.handleClick(), {
|
|
33
|
+
signal
|
|
34
|
+
});
|
|
35
|
+
this.target.addEventListener(
|
|
36
|
+
"pointerdown",
|
|
37
|
+
() => this.handlePointerdown(),
|
|
38
|
+
{ signal }
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=ClickController.dev.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["ClickController.ts"],
|
|
4
|
+
"sourcesContent": ["/*\nCopyright 2024 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 InteractionController,\n InteractionTypes,\n} from './InteractionController.dev.js'\n\nexport class ClickController extends InteractionController {\n override type = InteractionTypes.click;\n\n /**\n * An overlay with a `click` interaction should not close on click `triggerElement`.\n * When a click is initiated (`pointerdown`), apply `preventNextToggle` when the\n * overlay is `open` to prevent from toggling the overlay when the click event\n * propagates later in the interaction.\n */\n private preventNextToggle = false;\n\n handleClick(): void {\n if (!this.preventNextToggle) {\n this.open = !this.open;\n }\n this.preventNextToggle = false;\n }\n\n handlePointerdown(): void {\n this.preventNextToggle = this.open;\n }\n\n override init(): void {\n // Clean up listeners if they've already been bound\n this.abortController?.abort();\n this.abortController = new AbortController();\n const { signal } = this.abortController;\n this.target.addEventListener('click', () => this.handleClick(), {\n signal,\n });\n this.target.addEventListener(\n 'pointerdown',\n () => this.handlePointerdown(),\n { signal }\n );\n }\n}\n"],
|
|
5
|
+
"mappings": ";AAYA;AAAA,EACI;AAAA,EACA;AAAA,OACG;AAEA,aAAM,wBAAwB,sBAAsB;AAAA,EAApD;AAAA;AACH,SAAS,OAAO,iBAAiB;AAQjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAQ,oBAAoB;AAAA;AAAA,EAE5B,cAAoB;AAChB,QAAI,CAAC,KAAK,mBAAmB;AACzB,WAAK,OAAO,CAAC,KAAK;AAAA,IACtB;AACA,SAAK,oBAAoB;AAAA,EAC7B;AAAA,EAEA,oBAA0B;AACtB,SAAK,oBAAoB,KAAK;AAAA,EAClC;AAAA,EAES,OAAa;AAvC1B;AAyCQ,eAAK,oBAAL,mBAAsB;AACtB,SAAK,kBAAkB,IAAI,gBAAgB;AAC3C,UAAM,EAAE,OAAO,IAAI,KAAK;AACxB,SAAK,OAAO,iBAAiB,SAAS,MAAM,KAAK,YAAY,GAAG;AAAA,MAC5D;AAAA,IACJ,CAAC;AACD,SAAK,OAAO;AAAA,MACR;AAAA,MACA,MAAM,KAAK,kBAAkB;AAAA,MAC7B,EAAE,OAAO;AAAA,IACb;AAAA,EACJ;AACJ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";import{InteractionController as o,InteractionTypes as r}from"./InteractionController.js";export class ClickController extends o{constructor(){super(...arguments);this.type=r.click;this.preventNextToggle=!1}handleClick(){this.preventNextToggle||(this.open=!this.open),this.preventNextToggle=!1}handlePointerdown(){this.preventNextToggle=this.open}init(){var t;(t=this.abortController)==null||t.abort(),this.abortController=new AbortController;const{signal:e}=this.abortController;this.target.addEventListener("click",()=>this.handleClick(),{signal:e}),this.target.addEventListener("pointerdown",()=>this.handlePointerdown(),{signal:e})}}
|
|
2
|
+
//# sourceMappingURL=ClickController.js.map
|