@spectrum-web-components/overlay 0.19.2-overlay.33 → 0.19.3
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/custom-elements.json +1212 -0
- package/package.json +6 -57
- package/src/OverlayTrigger.d.ts +31 -18
- package/src/OverlayTrigger.dev.js +245 -137
- package/src/OverlayTrigger.dev.js.map +3 -3
- package/src/OverlayTrigger.js +22 -54
- package/src/OverlayTrigger.js.map +3 -3
- package/src/overlay-trigger.css.dev.js +1 -1
- package/src/overlay-trigger.css.dev.js.map +1 -1
- package/src/overlay-trigger.css.js +1 -1
- package/src/overlay-trigger.css.js.map +1 -1
- package/stories/overlay-story-components.js +2 -1
- package/stories/overlay-story-components.js.map +2 -2
- package/stories/overlay.stories.js +637 -652
- package/stories/overlay.stories.js.map +2 -2
- package/sync/overlay-trigger.d.ts +0 -4
- package/sync/overlay-trigger.dev.js +3 -1
- package/sync/overlay-trigger.dev.js.map +2 -2
- package/sync/overlay-trigger.js +1 -1
- package/sync/overlay-trigger.js.map +3 -3
- package/test/index.js +3 -3
- package/test/index.js.map +2 -2
- package/test/overlay-lifecycle.test.js +61 -15
- package/test/overlay-lifecycle.test.js.map +2 -2
- package/test/overlay-trigger-click.test.js +2 -3
- package/test/overlay-trigger-click.test.js.map +2 -2
- package/test/overlay-trigger-extended.test.js +1 -1
- package/test/overlay-trigger-extended.test.js.map +2 -2
- package/test/overlay-trigger-hover-click.test.js +1 -1
- package/test/overlay-trigger-hover-click.test.js.map +2 -2
- package/test/overlay-trigger-hover.test.js +2 -2
- package/test/overlay-trigger-hover.test.js.map +2 -2
- package/test/overlay-trigger-longpress.test.js +1 -1
- package/test/overlay-trigger-longpress.test.js.map +2 -2
- package/test/overlay-update.test.js +4 -4
- package/test/overlay-update.test.js.map +2 -2
- package/test/overlay.test.js +3 -3
- package/test/overlay.test.js.map +2 -2
- package/sp-overlay.d.ts +0 -11
- package/sp-overlay.dev.js +0 -14
- package/sp-overlay.dev.js.map +0 -7
- package/sp-overlay.js +0 -2
- package/sp-overlay.js.map +0 -7
- package/src/OverlayBase.d.ts +0 -91
- package/src/OverlayBase.dev.js +0 -521
- package/src/OverlayBase.dev.js.map +0 -7
- package/src/OverlayBase.js +0 -16
- package/src/OverlayBase.js.map +0 -7
- package/src/OverlayDialog.d.ts +0 -8
- package/src/OverlayDialog.dev.js +0 -43
- package/src/OverlayDialog.dev.js.map +0 -7
- package/src/OverlayDialog.js +0 -2
- package/src/OverlayDialog.js.map +0 -7
- package/src/OverlayElement.d.ts +0 -66
- package/src/OverlayElement.dev.js +0 -371
- package/src/OverlayElement.dev.js.map +0 -7
- package/src/OverlayElement.js +0 -9
- package/src/OverlayElement.js.map +0 -7
- package/src/OverlayNoPopover.d.ts +0 -8
- package/src/OverlayNoPopover.dev.js +0 -63
- package/src/OverlayNoPopover.dev.js.map +0 -7
- package/src/OverlayNoPopover.js +0 -2
- package/src/OverlayNoPopover.js.map +0 -7
- package/src/OverlayPopover.d.ts +0 -8
- package/src/OverlayPopover.dev.js +0 -37
- package/src/OverlayPopover.dev.js.map +0 -7
- package/src/OverlayPopover.js +0 -2
- package/src/OverlayPopover.js.map +0 -7
- package/src/OverlayStack.d.ts +0 -24
- package/src/OverlayStack.dev.js +0 -113
- package/src/OverlayStack.dev.js.map +0 -7
- package/src/OverlayStack.js +0 -2
- package/src/OverlayStack.js.map +0 -7
- package/src/PlacementController.d.ts +0 -35
- package/src/PlacementController.dev.js +0 -172
- package/src/PlacementController.dev.js.map +0 -7
- package/src/PlacementController.js +0 -2
- package/src/PlacementController.js.map +0 -7
- package/src/fullSizePlugin.d.ts +0 -12
- package/src/fullSizePlugin.dev.js +0 -39
- package/src/fullSizePlugin.dev.js.map +0 -7
- package/src/fullSizePlugin.js +0 -2
- package/src/fullSizePlugin.js.map +0 -7
- package/src/overlay-base.css.d.ts +0 -2
- package/src/overlay-base.css.dev.js +0 -9
- package/src/overlay-base.css.dev.js.map +0 -7
- package/src/overlay-base.css.js +0 -6
- package/src/overlay-base.css.js.map +0 -7
- package/src/overlay-element.css.d.ts +0 -2
- package/src/overlay-element.css.dev.js +0 -7
- package/src/overlay-element.css.dev.js.map +0 -7
- package/src/overlay-element.css.js +0 -4
- package/src/overlay-element.css.js.map +0 -7
- package/src/placement.d.ts +0 -21
- package/src/placement.dev.js +0 -111
- package/src/placement.dev.js.map +0 -7
- package/src/placement.js +0 -2
- package/src/placement.js.map +0 -7
- package/src/sizePlugin.d.ts +0 -12
- package/src/sizePlugin.dev.js +0 -18
- package/src/sizePlugin.dev.js.map +0 -7
- package/src/sizePlugin.js +0 -2
- package/src/sizePlugin.js.map +0 -7
- package/src/topLayerOverTransforms.d.ts +0 -22
- package/src/topLayerOverTransforms.dev.js +0 -161
- package/src/topLayerOverTransforms.dev.js.map +0 -7
- package/src/topLayerOverTransforms.js +0 -2
- package/src/topLayerOverTransforms.js.map +0 -7
- package/stories/overlay-element.stories.js +0 -216
- package/stories/overlay-element.stories.js.map +0 -7
- package/test/overlay-element.test-vrt.js +0 -5
- package/test/overlay-element.test-vrt.js.map +0 -7
- package/test/overlay-element.test.js +0 -739
- package/test/overlay-element.test.js.map +0 -7
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spectrum-web-components/overlay",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.3",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -29,47 +29,15 @@
|
|
|
29
29
|
"development": "./src/ActiveOverlay.dev.js",
|
|
30
30
|
"default": "./src/ActiveOverlay.js"
|
|
31
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/OverlayElement.js": {
|
|
41
|
-
"development": "./src/OverlayElement.dev.js",
|
|
42
|
-
"default": "./src/OverlayElement.js"
|
|
43
|
-
},
|
|
44
|
-
"./src/OverlayNoPopover.js": {
|
|
45
|
-
"development": "./src/OverlayNoPopover.dev.js",
|
|
46
|
-
"default": "./src/OverlayNoPopover.js"
|
|
47
|
-
},
|
|
48
|
-
"./src/OverlayPopover.js": {
|
|
49
|
-
"development": "./src/OverlayPopover.dev.js",
|
|
50
|
-
"default": "./src/OverlayPopover.js"
|
|
51
|
-
},
|
|
52
|
-
"./src/OverlayStack.js": {
|
|
53
|
-
"development": "./src/OverlayStack.dev.js",
|
|
54
|
-
"default": "./src/OverlayStack.js"
|
|
55
|
-
},
|
|
56
32
|
"./src/OverlayTrigger.js": {
|
|
57
33
|
"development": "./src/OverlayTrigger.dev.js",
|
|
58
34
|
"default": "./src/OverlayTrigger.js"
|
|
59
35
|
},
|
|
60
|
-
"./src/PlacementController.js": {
|
|
61
|
-
"development": "./src/PlacementController.dev.js",
|
|
62
|
-
"default": "./src/PlacementController.js"
|
|
63
|
-
},
|
|
64
36
|
"./src/VirtualTrigger.js": {
|
|
65
37
|
"development": "./src/VirtualTrigger.dev.js",
|
|
66
38
|
"default": "./src/VirtualTrigger.js"
|
|
67
39
|
},
|
|
68
40
|
"./src/active-overlay.css.js": "./src/active-overlay.css.js",
|
|
69
|
-
"./src/fullSizePlugin.js": {
|
|
70
|
-
"development": "./src/fullSizePlugin.dev.js",
|
|
71
|
-
"default": "./src/fullSizePlugin.js"
|
|
72
|
-
},
|
|
73
41
|
"./src/index.js": {
|
|
74
42
|
"development": "./src/index.dev.js",
|
|
75
43
|
"default": "./src/index.js"
|
|
@@ -78,8 +46,6 @@
|
|
|
78
46
|
"development": "./src/loader.dev.js",
|
|
79
47
|
"default": "./src/loader.js"
|
|
80
48
|
},
|
|
81
|
-
"./src/overlay-base.css.js": "./src/overlay-base.css.js",
|
|
82
|
-
"./src/overlay-element.css.js": "./src/overlay-element.css.js",
|
|
83
49
|
"./src/overlay-events.js": {
|
|
84
50
|
"development": "./src/overlay-events.dev.js",
|
|
85
51
|
"default": "./src/overlay-events.js"
|
|
@@ -105,18 +71,6 @@
|
|
|
105
71
|
"development": "./src/overlay.dev.js",
|
|
106
72
|
"default": "./src/overlay.js"
|
|
107
73
|
},
|
|
108
|
-
"./src/placement.js": {
|
|
109
|
-
"development": "./src/placement.dev.js",
|
|
110
|
-
"default": "./src/placement.js"
|
|
111
|
-
},
|
|
112
|
-
"./src/sizePlugin.js": {
|
|
113
|
-
"development": "./src/sizePlugin.dev.js",
|
|
114
|
-
"default": "./src/sizePlugin.js"
|
|
115
|
-
},
|
|
116
|
-
"./src/topLayerOverTransforms.js": {
|
|
117
|
-
"development": "./src/topLayerOverTransforms.dev.js",
|
|
118
|
-
"default": "./src/topLayerOverTransforms.js"
|
|
119
|
-
},
|
|
120
74
|
"./active-overlay.js": {
|
|
121
75
|
"development": "./active-overlay.dev.js",
|
|
122
76
|
"default": "./active-overlay.js"
|
|
@@ -128,10 +82,6 @@
|
|
|
128
82
|
"./sync/overlay-trigger.js": {
|
|
129
83
|
"development": "./sync/overlay-trigger.dev.js",
|
|
130
84
|
"default": "./sync/overlay-trigger.js"
|
|
131
|
-
},
|
|
132
|
-
"./sp-overlay.js": {
|
|
133
|
-
"development": "./sp-overlay.dev.js",
|
|
134
|
-
"default": "./sp-overlay.js"
|
|
135
85
|
}
|
|
136
86
|
},
|
|
137
87
|
"scripts": {
|
|
@@ -152,21 +102,20 @@
|
|
|
152
102
|
"lit-html"
|
|
153
103
|
],
|
|
154
104
|
"dependencies": {
|
|
155
|
-
"@floating-ui/dom": "^1.2.
|
|
156
|
-
"@spectrum-web-components/action-button": "^0.10.
|
|
105
|
+
"@floating-ui/dom": "^1.2.0",
|
|
106
|
+
"@spectrum-web-components/action-button": "^0.10.14",
|
|
157
107
|
"@spectrum-web-components/base": "^0.7.4",
|
|
158
|
-
"@spectrum-web-components/shared": "^0.15.
|
|
159
|
-
"@spectrum-web-components/theme": "^0.14.
|
|
108
|
+
"@spectrum-web-components/shared": "^0.15.5",
|
|
109
|
+
"@spectrum-web-components/theme": "^0.14.13"
|
|
160
110
|
},
|
|
161
111
|
"types": "./src/index.d.ts",
|
|
162
112
|
"customElements": "custom-elements.json",
|
|
163
113
|
"sideEffects": [
|
|
164
114
|
"./active-overlay.js",
|
|
165
115
|
"./overlay-trigger.js",
|
|
166
|
-
"./sp-overlay.js",
|
|
167
116
|
"./sync/overlay-trigger.js",
|
|
168
117
|
"./stories/overlay-story-components.js",
|
|
169
118
|
"./**/*.dev.js"
|
|
170
119
|
],
|
|
171
|
-
"gitHead": "
|
|
120
|
+
"gitHead": "1e25ee121f3bc838dbb99bac62f3c95857570f7a"
|
|
172
121
|
}
|
package/src/OverlayTrigger.d.ts
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import { CSSResultArray, PropertyValues, SpectrumElement, TemplateResult } from '@spectrum-web-components/base';
|
|
2
|
-
import { OverlayTriggerInteractions } from './overlay-types';
|
|
3
|
-
import '../sp-overlay.js';
|
|
4
|
-
import { Placement } from '@floating-ui/dom';
|
|
5
|
-
import { OverlayBase } from './OverlayBase';
|
|
2
|
+
import { OverlayOptions, OverlayTriggerInteractions, Placement, TriggerInteractions } from './overlay-types';
|
|
6
3
|
export declare type OverlayContentTypes = 'click' | 'hover' | 'longpress';
|
|
7
4
|
export declare const LONGPRESS_INSTRUCTIONS: {
|
|
8
5
|
touch: string;
|
|
@@ -21,34 +18,50 @@ export declare const LONGPRESS_INSTRUCTIONS: {
|
|
|
21
18
|
* @fires sp-closed - Announces that the overlay has been closed
|
|
22
19
|
*/
|
|
23
20
|
export declare class OverlayTrigger extends SpectrumElement {
|
|
21
|
+
private closeClickOverlay?;
|
|
22
|
+
private closeLongpressOverlay?;
|
|
23
|
+
private closeHoverOverlay?;
|
|
24
24
|
static get styles(): CSSResultArray;
|
|
25
25
|
/**
|
|
26
26
|
* @type {"auto" | "auto-start" | "auto-end" | "top" | "bottom" | "right" | "left" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right-start" | "right-end" | "left-start" | "left-end" | "none"}
|
|
27
27
|
* @attr
|
|
28
28
|
*/
|
|
29
|
-
placement
|
|
29
|
+
placement: Placement;
|
|
30
30
|
type?: OverlayTriggerInteractions;
|
|
31
31
|
offset: number;
|
|
32
32
|
open?: OverlayContentTypes;
|
|
33
33
|
disabled: boolean;
|
|
34
34
|
hasLongpressContent: boolean;
|
|
35
35
|
private longpressDescriptor?;
|
|
36
|
-
private clickContent
|
|
37
|
-
private longpressContent
|
|
38
|
-
private hoverContent
|
|
39
|
-
private targetContent
|
|
40
|
-
|
|
41
|
-
longpressOverlayElement: OverlayBase;
|
|
42
|
-
hoverOverlayElement: OverlayBase;
|
|
36
|
+
private clickContent?;
|
|
37
|
+
private longpressContent?;
|
|
38
|
+
private hoverContent?;
|
|
39
|
+
private targetContent?;
|
|
40
|
+
private overlaidContent?;
|
|
43
41
|
private _longpressId;
|
|
44
|
-
private
|
|
45
|
-
private handleTriggerContent;
|
|
46
|
-
private handleClickContent;
|
|
47
|
-
private handleLongpressContent;
|
|
48
|
-
private handleHoverContent;
|
|
42
|
+
private handleClose;
|
|
49
43
|
protected render(): TemplateResult;
|
|
50
44
|
protected updated(changes: PropertyValues<this>): void;
|
|
51
45
|
protected manageLongpressDescriptor(): void;
|
|
46
|
+
private closeAllOverlays;
|
|
47
|
+
private manageOpen;
|
|
48
|
+
private openOverlay;
|
|
49
|
+
static openOverlay: (target: HTMLElement, interaction: TriggerInteractions, content: HTMLElement, options: OverlayOptions) => Promise<() => void>;
|
|
50
|
+
private get overlayOptions();
|
|
51
|
+
private onTrigger;
|
|
52
|
+
private prepareToFocusOverlayContent;
|
|
53
|
+
onTriggerClick(): Promise<void>;
|
|
54
|
+
private _longpressEvent?;
|
|
55
|
+
private onTriggerLongpress;
|
|
56
|
+
private abortOverlay;
|
|
57
|
+
onTriggerMouseEnter(): Promise<void>;
|
|
58
|
+
private onClickSlotChange;
|
|
59
|
+
private onLongpressSlotChange;
|
|
60
|
+
private onHoverSlotChange;
|
|
61
|
+
private onTargetSlotChange;
|
|
62
|
+
private extractSlotContentFromEvent;
|
|
63
|
+
private openStatePromise;
|
|
64
|
+
private openStateResolver;
|
|
52
65
|
protected getUpdateComplete(): Promise<boolean>;
|
|
53
|
-
|
|
66
|
+
disconnectedCallback(): void;
|
|
54
67
|
}
|
|
@@ -16,146 +16,69 @@ import {
|
|
|
16
16
|
} from "@spectrum-web-components/base";
|
|
17
17
|
import {
|
|
18
18
|
property,
|
|
19
|
-
query,
|
|
20
19
|
state
|
|
21
20
|
} from "@spectrum-web-components/base/src/decorators.js";
|
|
21
|
+
import { firstFocusableIn } from "@spectrum-web-components/shared/src/first-focusable-in.js";
|
|
22
22
|
import {
|
|
23
23
|
isAndroid,
|
|
24
24
|
isIOS
|
|
25
25
|
} from "@spectrum-web-components/shared/src/platform.js";
|
|
26
|
+
import { openOverlay } from "./loader.dev.js";
|
|
26
27
|
import overlayTriggerStyles from "./overlay-trigger.css.js";
|
|
27
|
-
import "../sp-overlay.dev.js";
|
|
28
28
|
export const LONGPRESS_INSTRUCTIONS = {
|
|
29
29
|
touch: "Double tap and long press for additional options",
|
|
30
30
|
keyboard: "Press Space or Alt+Down Arrow for additional options",
|
|
31
31
|
mouse: "Click and hold for additional options"
|
|
32
32
|
};
|
|
33
|
-
|
|
33
|
+
const _OverlayTrigger = class extends SpectrumElement {
|
|
34
34
|
constructor() {
|
|
35
35
|
super(...arguments);
|
|
36
|
+
this.placement = "bottom";
|
|
36
37
|
this.offset = 6;
|
|
37
38
|
this.disabled = false;
|
|
38
39
|
this.hasLongpressContent = false;
|
|
39
|
-
this.clickContent = [];
|
|
40
|
-
this.longpressContent = [];
|
|
41
|
-
this.hoverContent = [];
|
|
42
|
-
this.targetContent = [];
|
|
43
40
|
this._longpressId = `longpress-describedby-descriptor`;
|
|
41
|
+
this.abortOverlay = () => {
|
|
42
|
+
return;
|
|
43
|
+
};
|
|
44
|
+
this.openStatePromise = Promise.resolve();
|
|
44
45
|
}
|
|
45
46
|
static get styles() {
|
|
46
47
|
return [overlayTriggerStyles];
|
|
47
48
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
this.targetContent = this.getAssignedElementsFromEvent(event);
|
|
54
|
-
}
|
|
55
|
-
handleClickContent(event) {
|
|
56
|
-
this.clickContent = this.getAssignedElementsFromEvent(event);
|
|
57
|
-
}
|
|
58
|
-
handleLongpressContent(event) {
|
|
59
|
-
this.longpressContent = this.getAssignedElementsFromEvent(event);
|
|
60
|
-
}
|
|
61
|
-
handleHoverContent(event) {
|
|
62
|
-
this.hoverContent = this.getAssignedElementsFromEvent(event);
|
|
49
|
+
handleClose(event) {
|
|
50
|
+
if (event && event.detail.interaction !== this.open && event.detail.interaction !== this.type) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
this.removeAttribute("open");
|
|
63
54
|
}
|
|
64
55
|
render() {
|
|
65
56
|
return html`
|
|
66
57
|
<slot
|
|
67
58
|
id="trigger"
|
|
59
|
+
@click=${this.onTrigger}
|
|
60
|
+
@longpress=${this.onTrigger}
|
|
61
|
+
@mouseenter=${this.onTrigger}
|
|
62
|
+
@mouseleave=${this.onTrigger}
|
|
63
|
+
@focusin=${this.onTrigger}
|
|
64
|
+
@focusout=${this.onTrigger}
|
|
65
|
+
@sp-closed=${this.handleClose}
|
|
66
|
+
@slotchange=${this.onTargetSlotChange}
|
|
68
67
|
name="trigger"
|
|
69
|
-
@slotchange=${this.handleTriggerContent}
|
|
70
68
|
></slot>
|
|
71
69
|
<div id="overlay-content">
|
|
72
|
-
<
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
@
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
return;
|
|
85
|
-
if (this.open === "click") {
|
|
86
|
-
this.open = void 0;
|
|
87
|
-
}
|
|
88
|
-
}}
|
|
89
|
-
@sp-opened=${(event) => {
|
|
90
|
-
const target = event.composedPath()[0];
|
|
91
|
-
if (target !== this.clickOverlayElement)
|
|
92
|
-
return;
|
|
93
|
-
this.open = "click";
|
|
94
|
-
}}
|
|
95
|
-
>
|
|
96
|
-
<slot
|
|
97
|
-
name="click-content"
|
|
98
|
-
@slotchange=${this.handleClickContent}
|
|
99
|
-
></slot>
|
|
100
|
-
</sp-overlay>
|
|
101
|
-
<sp-overlay
|
|
102
|
-
id="longpress-overlay"
|
|
103
|
-
?disabled=${!this.longpressContent.length}
|
|
104
|
-
?open=${this.open === "longpress" && !!this.longpressContent.length}
|
|
105
|
-
.offset=${this.offset}
|
|
106
|
-
.placement=${this.placement}
|
|
107
|
-
.triggerElement=${this.targetContent[0]}
|
|
108
|
-
.triggerInteraction=${"longpress"}
|
|
109
|
-
.type=${"auto"}
|
|
110
|
-
@sp-closed=${(event) => {
|
|
111
|
-
const target = event.composedPath()[0];
|
|
112
|
-
if (target !== this.longpressOverlayElement)
|
|
113
|
-
return;
|
|
114
|
-
if (this.open === "longpress") {
|
|
115
|
-
this.open = void 0;
|
|
116
|
-
}
|
|
117
|
-
}}
|
|
118
|
-
@sp-opened=${(event) => {
|
|
119
|
-
const target = event.composedPath()[0];
|
|
120
|
-
if (target !== this.longpressOverlayElement)
|
|
121
|
-
return;
|
|
122
|
-
this.open = "longpress";
|
|
123
|
-
}}
|
|
124
|
-
>
|
|
125
|
-
<slot
|
|
126
|
-
name="longpress-content"
|
|
127
|
-
@slotchange=${this.handleLongpressContent}
|
|
128
|
-
></slot>
|
|
129
|
-
</sp-overlay>
|
|
130
|
-
<sp-overlay
|
|
131
|
-
id="hover-overlay"
|
|
132
|
-
?disabled=${!this.hoverContent.length}
|
|
133
|
-
?open=${this.open === "hover" && !!this.hoverContent.length}
|
|
134
|
-
.offset=${this.offset}
|
|
135
|
-
.placement=${this.placement}
|
|
136
|
-
.triggerElement=${this.targetContent[0]}
|
|
137
|
-
.triggerInteraction=${"hover"}
|
|
138
|
-
.type=${"hint"}
|
|
139
|
-
@sp-closed=${(event) => {
|
|
140
|
-
const target = event.composedPath()[0];
|
|
141
|
-
if (target !== this.hoverOverlayElement)
|
|
142
|
-
return;
|
|
143
|
-
if (this.open === "hover") {
|
|
144
|
-
this.open = void 0;
|
|
145
|
-
}
|
|
146
|
-
}}
|
|
147
|
-
@sp-opened=${(event) => {
|
|
148
|
-
const target = event.composedPath()[0];
|
|
149
|
-
if (target !== this.hoverOverlayElement)
|
|
150
|
-
return;
|
|
151
|
-
this.open = "hover";
|
|
152
|
-
}}
|
|
153
|
-
>
|
|
154
|
-
<slot
|
|
155
|
-
name="hover-content"
|
|
156
|
-
@slotchange=${this.handleHoverContent}
|
|
157
|
-
></slot>
|
|
158
|
-
</sp-overlay>
|
|
70
|
+
<slot
|
|
71
|
+
@slotchange=${this.onClickSlotChange}
|
|
72
|
+
name="click-content"
|
|
73
|
+
></slot>
|
|
74
|
+
<slot
|
|
75
|
+
@slotchange=${this.onLongpressSlotChange}
|
|
76
|
+
name="longpress-content"
|
|
77
|
+
></slot>
|
|
78
|
+
<slot
|
|
79
|
+
@slotchange=${this.onHoverSlotChange}
|
|
80
|
+
name="hover-content"
|
|
81
|
+
></slot>
|
|
159
82
|
<slot name=${this._longpressId}></slot>
|
|
160
83
|
</div>
|
|
161
84
|
`;
|
|
@@ -163,9 +86,12 @@ export class OverlayTrigger extends SpectrumElement {
|
|
|
163
86
|
updated(changes) {
|
|
164
87
|
super.updated(changes);
|
|
165
88
|
if (this.disabled && changes.has("disabled")) {
|
|
166
|
-
this.
|
|
89
|
+
this.closeAllOverlays();
|
|
167
90
|
return;
|
|
168
91
|
}
|
|
92
|
+
if (changes.has("open")) {
|
|
93
|
+
this.manageOpen();
|
|
94
|
+
}
|
|
169
95
|
if (changes.has("hasLongpressContent")) {
|
|
170
96
|
this.manageLongpressDescriptor();
|
|
171
97
|
}
|
|
@@ -201,16 +127,219 @@ export class OverlayTrigger extends SpectrumElement {
|
|
|
201
127
|
trigger.removeAttribute("aria-describedby");
|
|
202
128
|
}
|
|
203
129
|
}
|
|
130
|
+
closeAllOverlays() {
|
|
131
|
+
if (this.abortOverlay)
|
|
132
|
+
this.abortOverlay(true);
|
|
133
|
+
[
|
|
134
|
+
"closeClickOverlay",
|
|
135
|
+
"closeHoverOverlay",
|
|
136
|
+
"closeLongpressOverlay"
|
|
137
|
+
].forEach(async (name) => {
|
|
138
|
+
const canClose = this[name];
|
|
139
|
+
if (canClose == null)
|
|
140
|
+
return;
|
|
141
|
+
delete this[name];
|
|
142
|
+
(await canClose)();
|
|
143
|
+
});
|
|
144
|
+
this.overlaidContent = void 0;
|
|
145
|
+
}
|
|
146
|
+
manageOpen() {
|
|
147
|
+
var _a;
|
|
148
|
+
const openHandlers = {
|
|
149
|
+
click: () => this.onTriggerClick(),
|
|
150
|
+
hover: () => this.onTriggerMouseEnter(),
|
|
151
|
+
longpress: () => this.onTriggerLongpress(),
|
|
152
|
+
none: () => this.closeAllOverlays()
|
|
153
|
+
};
|
|
154
|
+
openHandlers[(_a = this.open) != null ? _a : "none"]();
|
|
155
|
+
}
|
|
156
|
+
async openOverlay(target, interaction, content, options) {
|
|
157
|
+
this.openStatePromise = new Promise(
|
|
158
|
+
(res) => this.openStateResolver = res
|
|
159
|
+
);
|
|
160
|
+
this.addEventListener(
|
|
161
|
+
"sp-opened",
|
|
162
|
+
() => {
|
|
163
|
+
this.openStateResolver();
|
|
164
|
+
},
|
|
165
|
+
{ once: true }
|
|
166
|
+
);
|
|
167
|
+
this.overlaidContent = content;
|
|
168
|
+
return _OverlayTrigger.openOverlay(
|
|
169
|
+
target,
|
|
170
|
+
interaction,
|
|
171
|
+
content,
|
|
172
|
+
options
|
|
173
|
+
);
|
|
174
|
+
}
|
|
175
|
+
get overlayOptions() {
|
|
176
|
+
return {
|
|
177
|
+
offset: this.offset,
|
|
178
|
+
placement: this.placement,
|
|
179
|
+
receivesFocus: !this.type || this.type === "inline" || this.open === "hover" ? void 0 : "auto"
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
onTrigger(event) {
|
|
183
|
+
const mouseIsEnteringHoverContent = event.type === "mouseleave" && this.open === "hover" && event.relatedTarget === this.overlaidContent;
|
|
184
|
+
if (mouseIsEnteringHoverContent && this.overlaidContent) {
|
|
185
|
+
this.overlaidContent.addEventListener(
|
|
186
|
+
"mouseleave",
|
|
187
|
+
(event2) => {
|
|
188
|
+
const mouseIsEnteringTrigger = event2.relatedTarget === this.targetContent;
|
|
189
|
+
if (mouseIsEnteringTrigger) {
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
this.onTrigger(
|
|
193
|
+
event2
|
|
194
|
+
);
|
|
195
|
+
},
|
|
196
|
+
{ once: true }
|
|
197
|
+
);
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
if (this.disabled)
|
|
201
|
+
return;
|
|
202
|
+
switch (event.type) {
|
|
203
|
+
case "mouseenter":
|
|
204
|
+
case "focusin":
|
|
205
|
+
if (!this.open && this.hoverContent) {
|
|
206
|
+
this.open = "hover";
|
|
207
|
+
}
|
|
208
|
+
return;
|
|
209
|
+
case "mouseleave":
|
|
210
|
+
case "focusout":
|
|
211
|
+
if (this.open === "hover") {
|
|
212
|
+
this.handleClose();
|
|
213
|
+
}
|
|
214
|
+
return;
|
|
215
|
+
case "click":
|
|
216
|
+
if (this.clickContent) {
|
|
217
|
+
this.open = event.type;
|
|
218
|
+
}
|
|
219
|
+
return;
|
|
220
|
+
case "longpress":
|
|
221
|
+
if (this.longpressContent) {
|
|
222
|
+
this._longpressEvent = event;
|
|
223
|
+
this.open = event.type;
|
|
224
|
+
}
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
prepareToFocusOverlayContent(overlayContent) {
|
|
229
|
+
if (this.type !== "modal") {
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
const firstFocusable = firstFocusableIn(overlayContent);
|
|
233
|
+
if (!firstFocusable) {
|
|
234
|
+
overlayContent.tabIndex = 0;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
async onTriggerClick() {
|
|
238
|
+
if (!this.targetContent || !this.clickContent || this.closeClickOverlay) {
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
const { targetContent, clickContent } = this;
|
|
242
|
+
this.closeAllOverlays();
|
|
243
|
+
this.prepareToFocusOverlayContent(clickContent);
|
|
244
|
+
if (true) {
|
|
245
|
+
window.__swc.ignoreWarningLevels.deprecation = true;
|
|
246
|
+
}
|
|
247
|
+
this.closeClickOverlay = this.openOverlay(
|
|
248
|
+
targetContent,
|
|
249
|
+
this.type ? this.type : "click",
|
|
250
|
+
clickContent,
|
|
251
|
+
this.overlayOptions
|
|
252
|
+
);
|
|
253
|
+
if (true) {
|
|
254
|
+
window.__swc.ignoreWarningLevels.deprecation = false;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
async onTriggerLongpress() {
|
|
258
|
+
var _a, _b;
|
|
259
|
+
if (!this.targetContent || !this.longpressContent || this.closeLongpressOverlay) {
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
const { targetContent, longpressContent } = this;
|
|
263
|
+
this.closeAllOverlays();
|
|
264
|
+
this.prepareToFocusOverlayContent(longpressContent);
|
|
265
|
+
const notImmediatelyClosable = ((_b = (_a = this._longpressEvent) == null ? void 0 : _a.detail) == null ? void 0 : _b.source) !== "keyboard";
|
|
266
|
+
if (true) {
|
|
267
|
+
window.__swc.ignoreWarningLevels.deprecation = true;
|
|
268
|
+
}
|
|
269
|
+
this.closeLongpressOverlay = this.openOverlay(
|
|
270
|
+
targetContent,
|
|
271
|
+
this.type ? this.type : "longpress",
|
|
272
|
+
longpressContent,
|
|
273
|
+
{
|
|
274
|
+
...this.overlayOptions,
|
|
275
|
+
receivesFocus: "auto",
|
|
276
|
+
notImmediatelyClosable
|
|
277
|
+
}
|
|
278
|
+
);
|
|
279
|
+
if (true) {
|
|
280
|
+
window.__swc.ignoreWarningLevels.deprecation = false;
|
|
281
|
+
}
|
|
282
|
+
this._longpressEvent = void 0;
|
|
283
|
+
}
|
|
284
|
+
async onTriggerMouseEnter() {
|
|
285
|
+
if (!this.targetContent || !this.hoverContent || this.closeHoverOverlay) {
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
const abortPromise = new Promise((res) => {
|
|
289
|
+
this.abortOverlay = res;
|
|
290
|
+
});
|
|
291
|
+
const { targetContent, hoverContent } = this;
|
|
292
|
+
if (true) {
|
|
293
|
+
window.__swc.ignoreWarningLevels.deprecation = true;
|
|
294
|
+
}
|
|
295
|
+
this.closeHoverOverlay = this.openOverlay(
|
|
296
|
+
targetContent,
|
|
297
|
+
"hover",
|
|
298
|
+
hoverContent,
|
|
299
|
+
{
|
|
300
|
+
abortPromise,
|
|
301
|
+
...this.overlayOptions
|
|
302
|
+
}
|
|
303
|
+
);
|
|
304
|
+
if (true) {
|
|
305
|
+
window.__swc.ignoreWarningLevels.deprecation = false;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
onClickSlotChange(event) {
|
|
309
|
+
this.clickContent = this.extractSlotContentFromEvent(event);
|
|
310
|
+
this.manageOpen();
|
|
311
|
+
}
|
|
312
|
+
onLongpressSlotChange(event) {
|
|
313
|
+
this.longpressContent = this.extractSlotContentFromEvent(event);
|
|
314
|
+
this.hasLongpressContent = !!this.longpressContent || !!this.closeLongpressOverlay;
|
|
315
|
+
this.manageOpen();
|
|
316
|
+
}
|
|
317
|
+
onHoverSlotChange(event) {
|
|
318
|
+
this.hoverContent = this.extractSlotContentFromEvent(event);
|
|
319
|
+
this.manageOpen();
|
|
320
|
+
}
|
|
321
|
+
onTargetSlotChange(event) {
|
|
322
|
+
this.targetContent = this.extractSlotContentFromEvent(event);
|
|
323
|
+
}
|
|
324
|
+
extractSlotContentFromEvent(event) {
|
|
325
|
+
const slot = event.target;
|
|
326
|
+
const nodes = slot.assignedNodes({ flatten: true });
|
|
327
|
+
return nodes.find((node) => node instanceof HTMLElement);
|
|
328
|
+
}
|
|
204
329
|
async getUpdateComplete() {
|
|
205
330
|
const complete = await super.getUpdateComplete();
|
|
331
|
+
await this.openStatePromise;
|
|
206
332
|
return complete;
|
|
207
333
|
}
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
}
|
|
334
|
+
disconnectedCallback() {
|
|
335
|
+
this.closeAllOverlays();
|
|
336
|
+
super.disconnectedCallback();
|
|
212
337
|
}
|
|
213
|
-
}
|
|
338
|
+
};
|
|
339
|
+
export let OverlayTrigger = _OverlayTrigger;
|
|
340
|
+
OverlayTrigger.openOverlay = async (target, interaction, content, options) => {
|
|
341
|
+
return openOverlay(target, interaction, content, options);
|
|
342
|
+
};
|
|
214
343
|
__decorateClass([
|
|
215
344
|
property({ reflect: true })
|
|
216
345
|
], OverlayTrigger.prototype, "placement", 2);
|
|
@@ -229,25 +358,4 @@ __decorateClass([
|
|
|
229
358
|
__decorateClass([
|
|
230
359
|
state()
|
|
231
360
|
], OverlayTrigger.prototype, "hasLongpressContent", 2);
|
|
232
|
-
__decorateClass([
|
|
233
|
-
state()
|
|
234
|
-
], OverlayTrigger.prototype, "clickContent", 2);
|
|
235
|
-
__decorateClass([
|
|
236
|
-
state()
|
|
237
|
-
], OverlayTrigger.prototype, "longpressContent", 2);
|
|
238
|
-
__decorateClass([
|
|
239
|
-
state()
|
|
240
|
-
], OverlayTrigger.prototype, "hoverContent", 2);
|
|
241
|
-
__decorateClass([
|
|
242
|
-
state()
|
|
243
|
-
], OverlayTrigger.prototype, "targetContent", 2);
|
|
244
|
-
__decorateClass([
|
|
245
|
-
query("#click-overlay", true)
|
|
246
|
-
], OverlayTrigger.prototype, "clickOverlayElement", 2);
|
|
247
|
-
__decorateClass([
|
|
248
|
-
query("#longpress-overlay", true)
|
|
249
|
-
], OverlayTrigger.prototype, "longpressOverlayElement", 2);
|
|
250
|
-
__decorateClass([
|
|
251
|
-
query("#hover-overlay", true)
|
|
252
|
-
], OverlayTrigger.prototype, "hoverOverlayElement", 2);
|
|
253
361
|
//# sourceMappingURL=OverlayTrigger.dev.js.map
|