@spectrum-web-components/overlay 1.1.0-beta.8 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/package.json +7 -7
  2. package/overlay-trigger.d.ts +0 -6
  3. package/overlay-trigger.dev.js +0 -5
  4. package/overlay-trigger.dev.js.map +0 -7
  5. package/overlay-trigger.js +0 -2
  6. package/overlay-trigger.js.map +0 -7
  7. package/sp-overlay.d.ts +0 -6
  8. package/sp-overlay.dev.js +0 -5
  9. package/sp-overlay.dev.js.map +0 -7
  10. package/sp-overlay.js +0 -2
  11. package/sp-overlay.js.map +0 -7
  12. package/src/AbstractOverlay.d.ts +0 -72
  13. package/src/AbstractOverlay.dev.js +0 -234
  14. package/src/AbstractOverlay.dev.js.map +0 -7
  15. package/src/AbstractOverlay.js +0 -2
  16. package/src/AbstractOverlay.js.map +0 -7
  17. package/src/ClickController.d.ts +0 -14
  18. package/src/ClickController.dev.js +0 -42
  19. package/src/ClickController.dev.js.map +0 -7
  20. package/src/ClickController.js +0 -2
  21. package/src/ClickController.js.map +0 -7
  22. package/src/HoverController.d.ts +0 -20
  23. package/src/HoverController.dev.js +0 -153
  24. package/src/HoverController.dev.js.map +0 -7
  25. package/src/HoverController.js +0 -2
  26. package/src/HoverController.js.map +0 -7
  27. package/src/InteractionController.d.ts +0 -38
  28. package/src/InteractionController.dev.js +0 -90
  29. package/src/InteractionController.dev.js.map +0 -7
  30. package/src/InteractionController.js +0 -2
  31. package/src/InteractionController.js.map +0 -7
  32. package/src/LongpressController.d.ts +0 -21
  33. package/src/LongpressController.dev.js +0 -156
  34. package/src/LongpressController.dev.js.map +0 -7
  35. package/src/LongpressController.js +0 -2
  36. package/src/LongpressController.js.map +0 -7
  37. package/src/Overlay.d.ts +0 -134
  38. package/src/Overlay.dev.js +0 -534
  39. package/src/Overlay.dev.js.map +0 -7
  40. package/src/Overlay.js +0 -33
  41. package/src/Overlay.js.map +0 -7
  42. package/src/OverlayDialog.d.ts +0 -4
  43. package/src/OverlayDialog.dev.js +0 -139
  44. package/src/OverlayDialog.dev.js.map +0 -7
  45. package/src/OverlayDialog.js +0 -2
  46. package/src/OverlayDialog.js.map +0 -7
  47. package/src/OverlayNoPopover.d.ts +0 -4
  48. package/src/OverlayNoPopover.dev.js +0 -117
  49. package/src/OverlayNoPopover.dev.js.map +0 -7
  50. package/src/OverlayNoPopover.js +0 -2
  51. package/src/OverlayNoPopover.js.map +0 -7
  52. package/src/OverlayPopover.d.ts +0 -4
  53. package/src/OverlayPopover.dev.js +0 -199
  54. package/src/OverlayPopover.dev.js.map +0 -7
  55. package/src/OverlayPopover.js +0 -2
  56. package/src/OverlayPopover.js.map +0 -7
  57. package/src/OverlayStack.d.ts +0 -44
  58. package/src/OverlayStack.dev.js +0 -160
  59. package/src/OverlayStack.dev.js.map +0 -7
  60. package/src/OverlayStack.js +0 -2
  61. package/src/OverlayStack.js.map +0 -7
  62. package/src/OverlayTrigger.d.ts +0 -52
  63. package/src/OverlayTrigger.dev.js +0 -243
  64. package/src/OverlayTrigger.dev.js.map +0 -7
  65. package/src/OverlayTrigger.js +0 -57
  66. package/src/OverlayTrigger.js.map +0 -7
  67. package/src/PlacementController.d.ts +0 -40
  68. package/src/PlacementController.dev.js +0 -212
  69. package/src/PlacementController.dev.js.map +0 -7
  70. package/src/PlacementController.js +0 -2
  71. package/src/PlacementController.js.map +0 -7
  72. package/src/VirtualTrigger.d.ts +0 -7
  73. package/src/VirtualTrigger.dev.js +0 -32
  74. package/src/VirtualTrigger.dev.js.map +0 -7
  75. package/src/VirtualTrigger.js +0 -2
  76. package/src/VirtualTrigger.js.map +0 -7
  77. package/src/events.d.ts +0 -23
  78. package/src/events.dev.js +0 -39
  79. package/src/events.dev.js.map +0 -7
  80. package/src/events.js +0 -2
  81. package/src/events.js.map +0 -7
  82. package/src/fullSizePlugin.d.ts +0 -12
  83. package/src/fullSizePlugin.dev.js +0 -39
  84. package/src/fullSizePlugin.dev.js.map +0 -7
  85. package/src/fullSizePlugin.js +0 -2
  86. package/src/fullSizePlugin.js.map +0 -7
  87. package/src/index.d.ts +0 -6
  88. package/src/index.dev.js +0 -8
  89. package/src/index.dev.js.map +0 -7
  90. package/src/index.js +0 -2
  91. package/src/index.js.map +0 -7
  92. package/src/loader.d.ts +0 -4
  93. package/src/loader.dev.js +0 -11
  94. package/src/loader.dev.js.map +0 -7
  95. package/src/loader.js +0 -2
  96. package/src/loader.js.map +0 -7
  97. package/src/overlay-events.d.ts +0 -11
  98. package/src/overlay-events.dev.js +0 -8
  99. package/src/overlay-events.dev.js.map +0 -7
  100. package/src/overlay-events.js +0 -2
  101. package/src/overlay-events.js.map +0 -7
  102. package/src/overlay-timer.d.ts +0 -22
  103. package/src/overlay-timer.dev.js +0 -72
  104. package/src/overlay-timer.dev.js.map +0 -7
  105. package/src/overlay-timer.js +0 -2
  106. package/src/overlay-timer.js.map +0 -7
  107. package/src/overlay-trigger-directive.d.ts +0 -26
  108. package/src/overlay-trigger-directive.dev.js +0 -87
  109. package/src/overlay-trigger-directive.dev.js.map +0 -7
  110. package/src/overlay-trigger-directive.js +0 -2
  111. package/src/overlay-trigger-directive.js.map +0 -7
  112. package/src/overlay-trigger.css.d.ts +0 -2
  113. package/src/overlay-trigger.css.dev.js +0 -7
  114. package/src/overlay-trigger.css.dev.js.map +0 -7
  115. package/src/overlay-trigger.css.js +0 -4
  116. package/src/overlay-trigger.css.js.map +0 -7
  117. package/src/overlay-types.d.ts +0 -50
  118. package/src/overlay-types.dev.js +0 -3
  119. package/src/overlay-types.dev.js.map +0 -7
  120. package/src/overlay-types.js +0 -2
  121. package/src/overlay-types.js.map +0 -7
  122. package/src/overlay.css.d.ts +0 -2
  123. package/src/overlay.css.dev.js +0 -7
  124. package/src/overlay.css.dev.js.map +0 -7
  125. package/src/overlay.css.js +0 -4
  126. package/src/overlay.css.js.map +0 -7
  127. package/src/slottable-request-directive.d.ts +0 -17
  128. package/src/slottable-request-directive.dev.js +0 -66
  129. package/src/slottable-request-directive.dev.js.map +0 -7
  130. package/src/slottable-request-directive.js +0 -2
  131. package/src/slottable-request-directive.js.map +0 -7
  132. package/src/slottable-request-event.d.ts +0 -12
  133. package/src/slottable-request-event.dev.js +0 -28
  134. package/src/slottable-request-event.dev.js.map +0 -7
  135. package/src/slottable-request-event.js +0 -2
  136. package/src/slottable-request-event.js.map +0 -7
  137. package/src/strategies.d.ts +0 -8
  138. package/src/strategies.dev.js +0 -10
  139. package/src/strategies.dev.js.map +0 -7
  140. package/src/strategies.js +0 -2
  141. package/src/strategies.js.map +0 -7
  142. package/stories/index.js +0 -40
  143. package/stories/index.js.map +0 -7
  144. package/stories/overlay-directive.stories.js +0 -324
  145. package/stories/overlay-directive.stories.js.map +0 -7
  146. package/stories/overlay-element.stories.js +0 -675
  147. package/stories/overlay-element.stories.js.map +0 -7
  148. package/stories/overlay-story-components.js +0 -338
  149. package/stories/overlay-story-components.js.map +0 -7
  150. package/stories/overlay.stories.js +0 -1397
  151. package/stories/overlay.stories.js.map +0 -7
  152. package/sync/overlay-trigger.d.ts +0 -6
  153. package/sync/overlay-trigger.dev.js +0 -6
  154. package/sync/overlay-trigger.dev.js.map +0 -7
  155. package/sync/overlay-trigger.js +0 -2
  156. package/sync/overlay-trigger.js.map +0 -7
  157. package/test/benchmark/basic-test.js +0 -40
  158. package/test/benchmark/basic-test.js.map +0 -7
  159. package/test/benchmark/directive-test.js +0 -43
  160. package/test/benchmark/directive-test.js.map +0 -7
  161. package/test/benchmark/element-test.js +0 -40
  162. package/test/benchmark/element-test.js.map +0 -7
  163. package/test/benchmark/lazy-test.js +0 -47
  164. package/test/benchmark/lazy-test.js.map +0 -7
  165. package/test/index.js +0 -605
  166. package/test/index.js.map +0 -7
  167. package/test/overlay-directive.test-vrt.js +0 -5
  168. package/test/overlay-directive.test-vrt.js.map +0 -7
  169. package/test/overlay-directive.test.js +0 -162
  170. package/test/overlay-directive.test.js.map +0 -7
  171. package/test/overlay-element.test-vrt.js +0 -5
  172. package/test/overlay-element.test-vrt.js.map +0 -7
  173. package/test/overlay-element.test.js +0 -936
  174. package/test/overlay-element.test.js.map +0 -7
  175. package/test/overlay-lifecycle.test.js +0 -139
  176. package/test/overlay-lifecycle.test.js.map +0 -7
  177. package/test/overlay-memory.test.js +0 -10
  178. package/test/overlay-memory.test.js.map +0 -7
  179. package/test/overlay-timer.test.js +0 -118
  180. package/test/overlay-timer.test.js.map +0 -7
  181. package/test/overlay-trigger-click.test.js +0 -164
  182. package/test/overlay-trigger-click.test.js.map +0 -7
  183. package/test/overlay-trigger-directive.test.js +0 -75
  184. package/test/overlay-trigger-directive.test.js.map +0 -7
  185. package/test/overlay-trigger-extended.test.js +0 -235
  186. package/test/overlay-trigger-extended.test.js.map +0 -7
  187. package/test/overlay-trigger-hover-click.test.js +0 -225
  188. package/test/overlay-trigger-hover-click.test.js.map +0 -7
  189. package/test/overlay-trigger-hover.test.js +0 -308
  190. package/test/overlay-trigger-hover.test.js.map +0 -7
  191. package/test/overlay-trigger-longpress.test.js +0 -549
  192. package/test/overlay-trigger-longpress.test.js.map +0 -7
  193. package/test/overlay-trigger-sync.test.js +0 -5
  194. package/test/overlay-trigger-sync.test.js.map +0 -7
  195. package/test/overlay-trigger.test.js +0 -5
  196. package/test/overlay-trigger.test.js.map +0 -7
  197. package/test/overlay-update.test.js +0 -28
  198. package/test/overlay-update.test.js.map +0 -7
  199. package/test/overlay-v1.test.js +0 -569
  200. package/test/overlay-v1.test.js.map +0 -7
  201. package/test/overlay.test-vrt.js +0 -5
  202. package/test/overlay.test-vrt.js.map +0 -7
  203. package/test/overlay.test.js +0 -776
  204. package/test/overlay.test.js.map +0 -7
package/src/Overlay.d.ts DELETED
@@ -1,134 +0,0 @@
1
- import { PropertyValues, TemplateResult } from '@spectrum-web-components/base';
2
- import { ElementResolutionController } from '@spectrum-web-components/reactive-controllers/src/ElementResolution.js';
3
- import type { OpenableElement, OverlayState, OverlayTypes, Placement, TriggerInteraction } from './overlay-types.js';
4
- import { AbstractOverlay } from './AbstractOverlay.js';
5
- import { VirtualTrigger } from './VirtualTrigger.js';
6
- import { PlacementController } from './PlacementController.js';
7
- import type { ClickController } from './ClickController.js';
8
- import type { HoverController } from './HoverController.js';
9
- import type { LongpressController } from './LongpressController.js';
10
- export { LONGPRESS_INSTRUCTIONS } from './LongpressController.js';
11
- declare let OverlayFeatures: typeof AbstractOverlay & import("./overlay-types.js").Constructor<import("@spectrum-web-components/base").SpectrumElement>;
12
- /**
13
- * @element sp-overlay
14
- *
15
- * @fires sp-opened - announces that an overlay has completed any entry animations
16
- * @fires sp-closed - announce that an overlay has compelted any exit animations
17
- * @fires slottable-request - requests to add or remove slottable content
18
- */
19
- export declare class Overlay extends OverlayFeatures {
20
- static styles: import("@spectrum-web-components/base").CSSResult[];
21
- /**
22
- * An Overlay that is `delayed` will wait until a warm-up period of 1000ms
23
- * has completed before opening. Once the warmup period has completed, all
24
- * subsequent Overlays will open immediately. When no Overlays are opened,
25
- * a cooldown period of 1000ms will begin. Once the cooldown has completed,
26
- * the next Overlay to be opened will be subject to the warm-up period if
27
- * provided that option.
28
- */
29
- get delayed(): boolean;
30
- set delayed(delayed: boolean);
31
- private _delayed;
32
- dialogEl: HTMLDialogElement & {
33
- showPopover(): void;
34
- hidePopover(): void;
35
- };
36
- /**
37
- * Whether the overlay is currently functional or not
38
- */
39
- get disabled(): boolean;
40
- set disabled(disabled: boolean);
41
- private _disabled;
42
- elements: OpenableElement[];
43
- parentOverlayToForceClose?: Overlay;
44
- private get hasNonVirtualTrigger();
45
- /**
46
- * The `offset` property accepts either a single number, to
47
- * define the offset of the Overlay along the main axis from
48
- * the trigger, or 2-tuple, to define the offset along the
49
- * main axis and the cross axis. This option has no effect
50
- * when there is no trigger element.
51
- */
52
- offset: number | [number, number];
53
- protected get placementController(): PlacementController;
54
- /**
55
- * Whether the Overlay is projected onto the "top layer" or not.
56
- */
57
- get open(): boolean;
58
- set open(open: boolean);
59
- private _open;
60
- static openCount: number;
61
- /**
62
- * Instruct the Overlay where to place itself in
63
- * relationship to the trigger element.
64
- * @type {"top" | "top-start" | "top-end" | "right" | "right-start" | "right-end" | "bottom" | "bottom-start" | "bottom-end" | "left" | "left-start" | "left-end"}
65
- */
66
- placement?: Placement;
67
- /**
68
- * The state in which the last `request-slottable` event was dispatched.
69
- * Do not allow overlays from dispatching the same state twice in a row.
70
- */
71
- private lastRequestSlottableState;
72
- /**
73
- * Whether to pass focus to the overlay once opened, or
74
- * to the appropriate value based on the "type" of the overlay
75
- * when set to `"auto"`.
76
- *
77
- */
78
- receivesFocus: 'true' | 'false' | 'auto';
79
- slotEl: HTMLSlotElement;
80
- get state(): OverlayState;
81
- set state(state: OverlayState);
82
- _state: OverlayState;
83
- strategy?: ClickController | HoverController | LongpressController;
84
- tipPadding?: number;
85
- /**
86
- * An optional ID reference for the trigger element combined with the optional
87
- * interaction (click | hover | longpress) by which the overlay shold open
88
- * the overlay with an `@`: e.g. `trigger@click` opens the overlay when an
89
- * element with the ID "trigger" is clicked.
90
- */
91
- trigger?: string;
92
- /**
93
- * An element reference for the trigger element that the overlay should relate to.
94
- */
95
- triggerElement: HTMLElement | VirtualTrigger | null;
96
- /**
97
- * The specific interaction to listen for on the `triggerElement` to open the overlay.
98
- */
99
- triggerInteraction?: TriggerInteraction;
100
- /**
101
- * Configures the open/close heuristics of the Overlay.
102
- * @type {"auto" | "hint" | "manual" | "modal" | "page"}
103
- */
104
- type: OverlayTypes;
105
- protected wasOpen: boolean;
106
- protected get elementResolver(): ElementResolutionController;
107
- private get usesDialog();
108
- private get popoverValue();
109
- protected get requiresPosition(): boolean;
110
- protected managePosition(): void;
111
- protected managePopoverOpen(): Promise<void>;
112
- protected applyFocus(targetOpenState: boolean, focusEl: HTMLElement | null): Promise<void>;
113
- protected returnFocus(): void;
114
- private closeOnFocusOut;
115
- protected manageOpen(oldOpen: boolean): Promise<void>;
116
- protected bindEvents(): void;
117
- protected handleBeforetoggle(event: Event & {
118
- newState: string;
119
- }): void;
120
- protected handleBrowserClose(): void;
121
- manuallyKeepOpen(): void;
122
- protected handleSlotchange(): void;
123
- shouldPreventClose(): boolean;
124
- protected requestSlottable(): void;
125
- willUpdate(changes: PropertyValues): void;
126
- protected updated(changes: PropertyValues): void;
127
- protected renderContent(): TemplateResult;
128
- private get dialogStyleMap();
129
- protected renderDialog(): TemplateResult;
130
- protected renderPopover(): TemplateResult;
131
- render(): TemplateResult;
132
- connectedCallback(): void;
133
- disconnectedCallback(): void;
134
- }
@@ -1,534 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __decorateClass = (decorators, target, key, kind) => {
5
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
6
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
7
- if (decorator = decorators[i])
8
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
9
- if (kind && result) __defProp(target, key, result);
10
- return result;
11
- };
12
- import {
13
- html
14
- } from "@spectrum-web-components/base";
15
- import {
16
- property,
17
- query,
18
- queryAssignedElements,
19
- state
20
- } from "@spectrum-web-components/base/src/decorators.js";
21
- import {
22
- ElementResolutionController,
23
- elementResolverUpdatedSymbol
24
- } from "@spectrum-web-components/reactive-controllers/src/ElementResolution.js";
25
- import {
26
- ifDefined,
27
- styleMap
28
- } from "@spectrum-web-components/base/src/directives.js";
29
- import { randomID } from "@spectrum-web-components/shared/src/random-id.js";
30
- import { AbstractOverlay, nextFrame } from "./AbstractOverlay.dev.js";
31
- import { OverlayDialog } from "./OverlayDialog.dev.js";
32
- import { OverlayPopover } from "./OverlayPopover.dev.js";
33
- import { OverlayNoPopover } from "./OverlayNoPopover.dev.js";
34
- import { overlayStack } from "./OverlayStack.dev.js";
35
- import { VirtualTrigger } from "./VirtualTrigger.dev.js";
36
- import { PlacementController } from "./PlacementController.dev.js";
37
- export { LONGPRESS_INSTRUCTIONS } from "./LongpressController.dev.js";
38
- import { strategies } from "./strategies.dev.js";
39
- import {
40
- removeSlottableRequest,
41
- SlottableRequestEvent
42
- } from "./slottable-request-event.dev.js";
43
- import styles from "./overlay.css.js";
44
- const supportsPopover = "showPopover" in document.createElement("div");
45
- let OverlayFeatures = OverlayDialog(AbstractOverlay);
46
- if (supportsPopover) {
47
- OverlayFeatures = OverlayPopover(OverlayFeatures);
48
- } else {
49
- OverlayFeatures = OverlayNoPopover(OverlayFeatures);
50
- }
51
- const _Overlay = class _Overlay extends OverlayFeatures {
52
- constructor() {
53
- super(...arguments);
54
- this._delayed = false;
55
- this._disabled = false;
56
- this.offset = 0;
57
- this._open = false;
58
- /**
59
- * The state in which the last `request-slottable` event was dispatched.
60
- * Do not allow overlays from dispatching the same state twice in a row.
61
- */
62
- this.lastRequestSlottableState = false;
63
- this.receivesFocus = "auto";
64
- this._state = "closed";
65
- this.triggerElement = null;
66
- this.type = "auto";
67
- this.wasOpen = false;
68
- this.closeOnFocusOut = (event) => {
69
- if (!event.relatedTarget) {
70
- return;
71
- }
72
- const relationEvent = new Event("overlay-relation-query", {
73
- bubbles: true,
74
- composed: true
75
- });
76
- event.relatedTarget.addEventListener(
77
- relationEvent.type,
78
- (event2) => {
79
- if (!event2.composedPath().includes(this)) {
80
- this.open = false;
81
- }
82
- }
83
- );
84
- event.relatedTarget.dispatchEvent(relationEvent);
85
- };
86
- }
87
- get delayed() {
88
- var _a;
89
- return ((_a = this.elements.at(-1)) == null ? void 0 : _a.hasAttribute("delayed")) || this._delayed;
90
- }
91
- set delayed(delayed) {
92
- this._delayed = delayed;
93
- }
94
- get disabled() {
95
- return this._disabled;
96
- }
97
- set disabled(disabled) {
98
- var _a;
99
- this._disabled = disabled;
100
- if (disabled) {
101
- (_a = this.strategy) == null ? void 0 : _a.abort();
102
- this.wasOpen = this.open;
103
- this.open = false;
104
- } else {
105
- this.bindEvents();
106
- this.open = this.open || this.wasOpen;
107
- this.wasOpen = false;
108
- }
109
- }
110
- get hasNonVirtualTrigger() {
111
- return !!this.triggerElement && !(this.triggerElement instanceof VirtualTrigger);
112
- }
113
- get placementController() {
114
- if (!this._placementController) {
115
- this._placementController = new PlacementController(this);
116
- }
117
- return this._placementController;
118
- }
119
- get open() {
120
- return this._open;
121
- }
122
- set open(open) {
123
- var _a;
124
- if (open && this.disabled) return;
125
- if (open === this.open) return;
126
- if (((_a = this.strategy) == null ? void 0 : _a.activelyOpening) && !open) return;
127
- this._open = open;
128
- if (this.open) {
129
- _Overlay.openCount += 1;
130
- }
131
- this.requestUpdate("open", !this.open);
132
- if (this.open) {
133
- this.requestSlottable();
134
- }
135
- }
136
- get state() {
137
- return this._state;
138
- }
139
- set state(state2) {
140
- var _a;
141
- if (state2 === this.state) return;
142
- const oldState = this.state;
143
- this._state = state2;
144
- if (this.state === "opened" || this.state === "closed") {
145
- (_a = this.strategy) == null ? void 0 : _a.shouldCompleteOpen();
146
- }
147
- this.requestUpdate("state", oldState);
148
- }
149
- get elementResolver() {
150
- if (!this._elementResolver) {
151
- this._elementResolver = new ElementResolutionController(this);
152
- }
153
- return this._elementResolver;
154
- }
155
- get usesDialog() {
156
- return this.type === "modal" || this.type === "page";
157
- }
158
- get popoverValue() {
159
- const hasPopoverAttribute = "popover" in this;
160
- if (!hasPopoverAttribute) {
161
- return void 0;
162
- }
163
- switch (this.type) {
164
- case "modal":
165
- case "page":
166
- return void 0;
167
- case "hint":
168
- return "manual";
169
- default:
170
- return this.type;
171
- }
172
- }
173
- get requiresPosition() {
174
- if (this.type === "page" || !this.open) return false;
175
- if (!this.triggerElement || !this.placement && this.type !== "hint")
176
- return false;
177
- return true;
178
- }
179
- managePosition() {
180
- if (!this.requiresPosition || !this.open) return;
181
- const offset = this.offset || 0;
182
- const trigger = this.triggerElement;
183
- const placement = this.placement || "right";
184
- const tipPadding = this.tipPadding;
185
- this.placementController.placeOverlay(this.dialogEl, {
186
- offset,
187
- placement,
188
- tipPadding,
189
- trigger,
190
- type: this.type
191
- });
192
- }
193
- async managePopoverOpen() {
194
- super.managePopoverOpen();
195
- const targetOpenState = this.open;
196
- if (this.open !== targetOpenState) {
197
- return;
198
- }
199
- await this.manageDelay(targetOpenState);
200
- if (this.open !== targetOpenState) {
201
- return;
202
- }
203
- await this.ensureOnDOM(targetOpenState);
204
- if (this.open !== targetOpenState) {
205
- return;
206
- }
207
- const focusEl = await this.makeTransition(targetOpenState);
208
- if (this.open !== targetOpenState) {
209
- return;
210
- }
211
- await this.applyFocus(targetOpenState, focusEl);
212
- }
213
- async applyFocus(targetOpenState, focusEl) {
214
- if (this.receivesFocus === "false" || this.type === "hint") {
215
- return;
216
- }
217
- await nextFrame();
218
- await nextFrame();
219
- if (targetOpenState === this.open && !this.open) {
220
- if (this.hasNonVirtualTrigger && this.contains(this.getRootNode().activeElement)) {
221
- this.triggerElement.focus();
222
- }
223
- return;
224
- }
225
- focusEl == null ? void 0 : focusEl.focus();
226
- }
227
- returnFocus() {
228
- var _a;
229
- if (this.open || this.type === "hint") return;
230
- const getAncestors = () => {
231
- var _a2, _b;
232
- const ancestors = [];
233
- let currentNode = document.activeElement;
234
- while ((_a2 = currentNode == null ? void 0 : currentNode.shadowRoot) == null ? void 0 : _a2.activeElement) {
235
- currentNode = currentNode.shadowRoot.activeElement;
236
- }
237
- while (currentNode) {
238
- const ancestor = currentNode.assignedSlot || currentNode.parentElement || ((_b = currentNode.getRootNode()) == null ? void 0 : _b.host);
239
- if (ancestor) {
240
- ancestors.push(ancestor);
241
- }
242
- currentNode = ancestor;
243
- }
244
- return ancestors;
245
- };
246
- if (this.receivesFocus !== "false" && !!((_a = this.triggerElement) == null ? void 0 : _a.focus) && (this.contains(this.getRootNode().activeElement) || getAncestors().includes(this) || // eslint-disable-next-line @spectrum-web-components/document-active-element
247
- document.activeElement === document.body)) {
248
- this.triggerElement.focus();
249
- }
250
- }
251
- async manageOpen(oldOpen) {
252
- if (!this.isConnected && this.open) return;
253
- if (!this.hasUpdated) {
254
- await this.updateComplete;
255
- }
256
- if (this.open) {
257
- overlayStack.add(this);
258
- if (this.willPreventClose) {
259
- document.addEventListener(
260
- "pointerup",
261
- () => {
262
- this.dialogEl.classList.toggle(
263
- "not-immediately-closable",
264
- false
265
- );
266
- this.willPreventClose = false;
267
- },
268
- { once: true }
269
- );
270
- this.dialogEl.classList.toggle(
271
- "not-immediately-closable",
272
- true
273
- );
274
- }
275
- } else {
276
- if (oldOpen) {
277
- this.dispose();
278
- }
279
- overlayStack.remove(this);
280
- }
281
- if (this.open && this.state !== "opened") {
282
- this.state = "opening";
283
- } else if (!this.open && this.state !== "closed") {
284
- this.state = "closing";
285
- }
286
- if (this.usesDialog) {
287
- this.manageDialogOpen();
288
- } else {
289
- this.managePopoverOpen();
290
- }
291
- if (this.type === "auto") {
292
- const listenerRoot = this.getRootNode();
293
- if (this.open) {
294
- listenerRoot.addEventListener(
295
- "focusout",
296
- this.closeOnFocusOut,
297
- { capture: true }
298
- );
299
- } else {
300
- listenerRoot.removeEventListener(
301
- "focusout",
302
- this.closeOnFocusOut,
303
- { capture: true }
304
- );
305
- }
306
- }
307
- }
308
- bindEvents() {
309
- var _a;
310
- (_a = this.strategy) == null ? void 0 : _a.abort();
311
- this.strategy = void 0;
312
- if (!this.hasNonVirtualTrigger) return;
313
- if (!this.triggerInteraction) return;
314
- this.strategy = new strategies[this.triggerInteraction](
315
- this.triggerElement,
316
- {
317
- overlay: this
318
- }
319
- );
320
- }
321
- handleBeforetoggle(event) {
322
- if (event.newState !== "open") {
323
- this.handleBrowserClose();
324
- }
325
- }
326
- handleBrowserClose() {
327
- var _a;
328
- if (!((_a = this.strategy) == null ? void 0 : _a.activelyOpening)) {
329
- this.open = false;
330
- return;
331
- }
332
- this.manuallyKeepOpen();
333
- }
334
- manuallyKeepOpen() {
335
- this.open = true;
336
- this.placementController.allowPlacementUpdate = true;
337
- this.manageOpen(false);
338
- }
339
- handleSlotchange() {
340
- var _a, _b;
341
- if (!this.elements.length) {
342
- (_a = this.strategy) == null ? void 0 : _a.releaseDescription();
343
- } else if (this.hasNonVirtualTrigger) {
344
- (_b = this.strategy) == null ? void 0 : _b.prepareDescription(
345
- this.triggerElement
346
- );
347
- }
348
- }
349
- shouldPreventClose() {
350
- const shouldPreventClose = this.willPreventClose;
351
- this.willPreventClose = false;
352
- return shouldPreventClose;
353
- }
354
- requestSlottable() {
355
- if (this.lastRequestSlottableState === this.open) {
356
- return;
357
- }
358
- if (!this.open) {
359
- document.body.offsetHeight;
360
- }
361
- this.dispatchEvent(
362
- new SlottableRequestEvent(
363
- "overlay-content",
364
- this.open ? {} : removeSlottableRequest
365
- )
366
- );
367
- this.lastRequestSlottableState = this.open;
368
- }
369
- willUpdate(changes) {
370
- var _a;
371
- if (!this.hasAttribute("id")) {
372
- this.setAttribute(
373
- "id",
374
- `${this.tagName.toLowerCase()}-${randomID()}`
375
- );
376
- }
377
- if (changes.has("open") && (this.hasUpdated || this.open)) {
378
- this.manageOpen(changes.get("open"));
379
- }
380
- if (changes.has("trigger")) {
381
- const [id, interaction] = ((_a = this.trigger) == null ? void 0 : _a.split("@")) || [];
382
- this.elementResolver.selector = id ? `#${id}` : "";
383
- this.triggerInteraction = interaction;
384
- }
385
- let oldTrigger = false;
386
- if (changes.has(elementResolverUpdatedSymbol)) {
387
- oldTrigger = this.triggerElement;
388
- this.triggerElement = this.elementResolver.element;
389
- }
390
- if (changes.has("triggerElement")) {
391
- oldTrigger = changes.get("triggerElement");
392
- }
393
- if (oldTrigger !== false) {
394
- this.bindEvents();
395
- }
396
- }
397
- updated(changes) {
398
- super.updated(changes);
399
- if (changes.has("placement")) {
400
- if (this.placement) {
401
- this.dialogEl.setAttribute("actual-placement", this.placement);
402
- } else {
403
- this.dialogEl.removeAttribute("actual-placement");
404
- }
405
- if (this.open && typeof changes.get("placement") !== "undefined") {
406
- this.placementController.resetOverlayPosition();
407
- }
408
- }
409
- if (changes.has("state") && this.state === "closed" && typeof changes.get("state") !== "undefined") {
410
- this.placementController.clearOverlayPosition();
411
- }
412
- }
413
- renderContent() {
414
- return html`
415
- <slot @slotchange=${this.handleSlotchange}></slot>
416
- `;
417
- }
418
- get dialogStyleMap() {
419
- return {
420
- "--swc-overlay-open-count": _Overlay.openCount.toString()
421
- };
422
- }
423
- renderDialog() {
424
- return html`
425
- <dialog
426
- class="dialog"
427
- part="dialog"
428
- placement=${ifDefined(
429
- this.requiresPosition ? this.placement || "right" : void 0
430
- )}
431
- style=${styleMap(this.dialogStyleMap)}
432
- @close=${this.handleBrowserClose}
433
- @cancel=${this.handleBrowserClose}
434
- @beforetoggle=${this.handleBeforetoggle}
435
- ?is-visible=${this.state !== "closed"}
436
- >
437
- ${this.renderContent()}
438
- </dialog>
439
- `;
440
- }
441
- renderPopover() {
442
- return html`
443
- <div
444
- class="dialog"
445
- part="dialog"
446
- placement=${ifDefined(
447
- this.requiresPosition ? this.placement || "right" : void 0
448
- )}
449
- popover=${ifDefined(this.popoverValue)}
450
- style=${styleMap(this.dialogStyleMap)}
451
- @beforetoggle=${this.handleBeforetoggle}
452
- @close=${this.handleBrowserClose}
453
- ?is-visible=${this.state !== "closed"}
454
- >
455
- ${this.renderContent()}
456
- </div>
457
- `;
458
- }
459
- render() {
460
- const isDialog = this.type === "modal" || this.type === "page";
461
- return html`
462
- ${isDialog ? this.renderDialog() : this.renderPopover()}
463
- <slot name="longpress-describedby-descriptor"></slot>
464
- `;
465
- }
466
- connectedCallback() {
467
- super.connectedCallback();
468
- this.addEventListener("close", () => {
469
- this.open = false;
470
- });
471
- if (this.hasUpdated) {
472
- this.bindEvents();
473
- }
474
- }
475
- disconnectedCallback() {
476
- var _a;
477
- (_a = this.strategy) == null ? void 0 : _a.releaseDescription();
478
- this.open = false;
479
- super.disconnectedCallback();
480
- }
481
- };
482
- _Overlay.styles = [styles];
483
- _Overlay.openCount = 1;
484
- __decorateClass([
485
- property({ type: Boolean })
486
- ], _Overlay.prototype, "delayed", 1);
487
- __decorateClass([
488
- query(".dialog")
489
- ], _Overlay.prototype, "dialogEl", 2);
490
- __decorateClass([
491
- property({ type: Boolean })
492
- ], _Overlay.prototype, "disabled", 1);
493
- __decorateClass([
494
- queryAssignedElements({
495
- flatten: true,
496
- selector: ':not([slot="longpress-describedby-descriptor"], slot)'
497
- // gather only elements slotted into the default slot
498
- })
499
- ], _Overlay.prototype, "elements", 2);
500
- __decorateClass([
501
- property({ type: Number })
502
- ], _Overlay.prototype, "offset", 2);
503
- __decorateClass([
504
- property({ type: Boolean, reflect: true })
505
- ], _Overlay.prototype, "open", 1);
506
- __decorateClass([
507
- property()
508
- ], _Overlay.prototype, "placement", 2);
509
- __decorateClass([
510
- property({ attribute: "receives-focus" })
511
- ], _Overlay.prototype, "receivesFocus", 2);
512
- __decorateClass([
513
- query("slot")
514
- ], _Overlay.prototype, "slotEl", 2);
515
- __decorateClass([
516
- state()
517
- ], _Overlay.prototype, "state", 1);
518
- __decorateClass([
519
- property({ type: Number, attribute: "tip-padding" })
520
- ], _Overlay.prototype, "tipPadding", 2);
521
- __decorateClass([
522
- property()
523
- ], _Overlay.prototype, "trigger", 2);
524
- __decorateClass([
525
- property({ attribute: false })
526
- ], _Overlay.prototype, "triggerElement", 2);
527
- __decorateClass([
528
- property({ attribute: false })
529
- ], _Overlay.prototype, "triggerInteraction", 2);
530
- __decorateClass([
531
- property()
532
- ], _Overlay.prototype, "type", 2);
533
- export let Overlay = _Overlay;
534
- //# sourceMappingURL=Overlay.dev.js.map