@spectrum-web-components/overlay 0.35.0 → 0.35.1-rc.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/README.md +237 -150
  2. package/package.json +49 -22
  3. package/sp-overlay.d.ts +6 -0
  4. package/sp-overlay.dev.js +5 -0
  5. package/{active-overlay.dev.js.map → sp-overlay.dev.js.map} +3 -3
  6. package/sp-overlay.js +2 -0
  7. package/{active-overlay.js.map → sp-overlay.js.map} +4 -4
  8. package/src/AbstractOverlay.d.ts +56 -0
  9. package/src/AbstractOverlay.dev.js +198 -0
  10. package/src/AbstractOverlay.dev.js.map +7 -0
  11. package/src/AbstractOverlay.js +2 -0
  12. package/src/AbstractOverlay.js.map +7 -0
  13. package/src/Overlay.d.ts +147 -0
  14. package/src/Overlay.dev.js +770 -0
  15. package/src/Overlay.dev.js.map +7 -0
  16. package/src/Overlay.js +31 -0
  17. package/src/Overlay.js.map +7 -0
  18. package/src/OverlayDialog.d.ts +4 -0
  19. package/src/OverlayDialog.dev.js +135 -0
  20. package/src/OverlayDialog.dev.js.map +7 -0
  21. package/src/OverlayDialog.js +2 -0
  22. package/src/OverlayDialog.js.map +7 -0
  23. package/src/OverlayNoPopover.d.ts +4 -0
  24. package/src/OverlayNoPopover.dev.js +110 -0
  25. package/src/OverlayNoPopover.dev.js.map +7 -0
  26. package/src/OverlayNoPopover.js +2 -0
  27. package/src/OverlayNoPopover.js.map +7 -0
  28. package/src/OverlayPopover.d.ts +4 -0
  29. package/src/OverlayPopover.dev.js +169 -0
  30. package/src/OverlayPopover.dev.js.map +7 -0
  31. package/src/OverlayPopover.js +2 -0
  32. package/src/OverlayPopover.js.map +7 -0
  33. package/src/OverlayStack.d.ts +43 -0
  34. package/src/OverlayStack.dev.js +150 -0
  35. package/src/OverlayStack.dev.js.map +7 -0
  36. package/src/OverlayStack.js +2 -0
  37. package/src/OverlayStack.js.map +7 -0
  38. package/src/OverlayTrigger.d.ts +25 -41
  39. package/src/OverlayTrigger.dev.js +132 -289
  40. package/src/OverlayTrigger.dev.js.map +3 -3
  41. package/src/OverlayTrigger.js +52 -22
  42. package/src/OverlayTrigger.js.map +3 -3
  43. package/src/PlacementController.d.ts +38 -0
  44. package/src/PlacementController.dev.js +199 -0
  45. package/src/PlacementController.dev.js.map +7 -0
  46. package/src/PlacementController.js +2 -0
  47. package/src/PlacementController.js.map +7 -0
  48. package/src/VirtualTrigger.dev.js +2 -1
  49. package/src/VirtualTrigger.dev.js.map +2 -2
  50. package/src/VirtualTrigger.js +1 -1
  51. package/src/VirtualTrigger.js.map +2 -2
  52. package/src/fullSizePlugin.d.ts +12 -0
  53. package/src/fullSizePlugin.dev.js +39 -0
  54. package/src/fullSizePlugin.dev.js.map +7 -0
  55. package/src/fullSizePlugin.js +2 -0
  56. package/src/fullSizePlugin.js.map +7 -0
  57. package/src/index.d.ts +2 -3
  58. package/src/index.dev.js +2 -3
  59. package/src/index.dev.js.map +2 -2
  60. package/src/index.js +1 -1
  61. package/src/index.js.map +2 -2
  62. package/src/loader.d.ts +1 -2
  63. package/src/loader.dev.js +2 -19
  64. package/src/loader.dev.js.map +2 -2
  65. package/src/loader.js +1 -1
  66. package/src/loader.js.map +3 -3
  67. package/src/overlay-timer.dev.js.map +2 -2
  68. package/src/overlay-timer.js.map +2 -2
  69. package/src/overlay-trigger.css.dev.js +1 -1
  70. package/src/overlay-trigger.css.dev.js.map +1 -1
  71. package/src/overlay-trigger.css.js +1 -1
  72. package/src/overlay-trigger.css.js.map +1 -1
  73. package/src/overlay-types.d.ts +25 -31
  74. package/src/overlay-types.dev.js +1 -0
  75. package/src/overlay-types.dev.js.map +3 -3
  76. package/src/overlay-types.js +1 -1
  77. package/src/overlay-types.js.map +3 -3
  78. package/src/overlay.css.dev.js +9 -0
  79. package/src/overlay.css.dev.js.map +7 -0
  80. package/src/overlay.css.js +6 -0
  81. package/src/overlay.css.js.map +7 -0
  82. package/src/topLayerOverTransforms.d.ts +2 -0
  83. package/src/topLayerOverTransforms.dev.js +84 -0
  84. package/src/topLayerOverTransforms.dev.js.map +7 -0
  85. package/src/topLayerOverTransforms.js +2 -0
  86. package/src/topLayerOverTransforms.js.map +7 -0
  87. package/stories/overlay-element.stories.js +243 -0
  88. package/stories/overlay-element.stories.js.map +7 -0
  89. package/stories/overlay-story-components.js +9 -8
  90. package/stories/overlay-story-components.js.map +2 -2
  91. package/stories/overlay.stories.js +808 -680
  92. package/stories/overlay.stories.js.map +2 -2
  93. package/sync/overlay-trigger.d.ts +4 -0
  94. package/sync/overlay-trigger.dev.js +1 -4
  95. package/sync/overlay-trigger.dev.js.map +2 -2
  96. package/sync/overlay-trigger.js +1 -1
  97. package/sync/overlay-trigger.js.map +3 -3
  98. package/test/benchmark/basic-test.js +1 -1
  99. package/test/benchmark/basic-test.js.map +1 -1
  100. package/test/index.js +408 -377
  101. package/test/index.js.map +3 -3
  102. package/test/overlay-element.test-vrt.js +5 -0
  103. package/test/overlay-element.test-vrt.js.map +7 -0
  104. package/test/overlay-element.test.js +681 -0
  105. package/test/overlay-element.test.js.map +7 -0
  106. package/test/overlay-lifecycle.test.js +34 -106
  107. package/test/overlay-lifecycle.test.js.map +2 -2
  108. package/test/overlay-trigger-click.test.js +11 -5
  109. package/test/overlay-trigger-click.test.js.map +2 -2
  110. package/test/overlay-trigger-extended.test.js +34 -34
  111. package/test/overlay-trigger-extended.test.js.map +2 -2
  112. package/test/overlay-trigger-hover-click.test.js +27 -24
  113. package/test/overlay-trigger-hover-click.test.js.map +2 -2
  114. package/test/overlay-trigger-hover.test.js +41 -35
  115. package/test/overlay-trigger-hover.test.js.map +2 -2
  116. package/test/overlay-trigger-longpress.test.js +147 -81
  117. package/test/overlay-trigger-longpress.test.js.map +2 -2
  118. package/test/overlay-trigger-sync.test.js +1 -1
  119. package/test/overlay-trigger-sync.test.js.map +2 -2
  120. package/test/overlay-trigger.test.js +1 -1
  121. package/test/overlay-trigger.test.js.map +2 -2
  122. package/test/overlay-update.test.js +4 -4
  123. package/test/overlay-update.test.js.map +2 -2
  124. package/test/overlay-v1.test.js +648 -0
  125. package/test/overlay-v1.test.js.map +7 -0
  126. package/test/overlay.test.js +383 -268
  127. package/test/overlay.test.js.map +3 -3
  128. package/active-overlay.d.ts +0 -6
  129. package/active-overlay.dev.js +0 -5
  130. package/active-overlay.js +0 -2
  131. package/custom-elements.json +0 -1215
  132. package/src/ActiveOverlay.d.ts +0 -84
  133. package/src/ActiveOverlay.dev.js +0 -517
  134. package/src/ActiveOverlay.dev.js.map +0 -7
  135. package/src/ActiveOverlay.js +0 -16
  136. package/src/ActiveOverlay.js.map +0 -7
  137. package/src/active-overlay.css.dev.js +0 -13
  138. package/src/active-overlay.css.dev.js.map +0 -7
  139. package/src/active-overlay.css.js +0 -10
  140. package/src/active-overlay.css.js.map +0 -7
  141. package/src/overlay-stack.d.ts +0 -50
  142. package/src/overlay-stack.dev.js +0 -515
  143. package/src/overlay-stack.dev.js.map +0 -7
  144. package/src/overlay-stack.js +0 -34
  145. package/src/overlay-stack.js.map +0 -7
  146. package/src/overlay-utils.d.ts +0 -3
  147. package/src/overlay-utils.dev.js +0 -31
  148. package/src/overlay-utils.dev.js.map +0 -7
  149. package/src/overlay-utils.js +0 -2
  150. package/src/overlay-utils.js.map +0 -7
  151. package/src/overlay.d.ts +0 -59
  152. package/src/overlay.dev.js +0 -127
  153. package/src/overlay.dev.js.map +0 -7
  154. package/src/overlay.js +0 -2
  155. package/src/overlay.js.map +0 -7
  156. /package/src/{active-overlay.css.d.ts → overlay.css.d.ts} +0 -0
@@ -1,11 +1,9 @@
1
1
  import { CSSResultArray, PropertyValues, SpectrumElement, TemplateResult } from '@spectrum-web-components/base';
2
- import { OverlayOptions, OverlayTriggerInteractions, Placement, TriggerInteractions } from './overlay-types';
2
+ import { OverlayTriggerInteractions } from './overlay-types';
3
+ import '../sp-overlay.js';
4
+ import { Placement } from '@floating-ui/dom';
5
+ import type { Overlay } from './Overlay.js';
3
6
  export declare type OverlayContentTypes = 'click' | 'hover' | 'longpress';
4
- export declare const LONGPRESS_INSTRUCTIONS: {
5
- touch: string;
6
- keyboard: string;
7
- mouse: string;
8
- };
9
7
  /**
10
8
  * @element overlay-trigger
11
9
  *
@@ -18,50 +16,36 @@ export declare const LONGPRESS_INSTRUCTIONS: {
18
16
  * @fires sp-closed - Announces that the overlay has been closed
19
17
  */
20
18
  export declare class OverlayTrigger extends SpectrumElement {
21
- private closeClickOverlay?;
22
- private closeLongpressOverlay?;
23
- private closeHoverOverlay?;
24
19
  static get styles(): CSSResultArray;
25
20
  /**
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"}
21
+ * @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" }
27
22
  * @attr
28
23
  */
29
- placement: Placement;
24
+ placement?: Placement;
30
25
  type?: OverlayTriggerInteractions;
31
26
  offset: number;
32
27
  open?: OverlayContentTypes;
33
28
  disabled: boolean;
34
- hasLongpressContent: boolean;
35
- private longpressDescriptor?;
36
- private clickContent?;
37
- private longpressContent?;
38
- private hoverContent?;
39
- private targetContent?;
40
- private overlaidContent?;
29
+ private clickContent;
30
+ private clickPlacement?;
31
+ private longpressContent;
32
+ private longpressPlacement?;
33
+ private hoverContent;
34
+ private hoverPlacement?;
35
+ private targetContent;
36
+ clickOverlayElement: Overlay;
37
+ longpressOverlayElement: Overlay;
38
+ hoverOverlayElement: Overlay;
41
39
  private _longpressId;
42
- private handleClose;
40
+ private getAssignedElementsFromSlot;
41
+ private handleTriggerContent;
42
+ private handleClickContent;
43
+ private handleLongpressContent;
44
+ private handleHoverContent;
45
+ private handleBeforetoggle;
46
+ protected update(changes: PropertyValues): void;
43
47
  protected render(): TemplateResult;
44
- protected updated(changes: PropertyValues<this>): void;
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;
48
+ protected updated(changes: PropertyValues): void;
65
49
  protected getUpdateComplete(): Promise<boolean>;
66
- disconnectedCallback(): void;
50
+ protected willUpdate(): void;
67
51
  }
@@ -16,69 +16,134 @@ import {
16
16
  } from "@spectrum-web-components/base";
17
17
  import {
18
18
  property,
19
+ query,
19
20
  state
20
21
  } from "@spectrum-web-components/base/src/decorators.js";
21
- import { firstFocusableIn } from "@spectrum-web-components/shared/src/first-focusable-in.js";
22
- import {
23
- isAndroid,
24
- isIOS
25
- } from "@spectrum-web-components/shared/src/platform.js";
26
- import { openOverlay } from "./loader.dev.js";
27
22
  import overlayTriggerStyles from "./overlay-trigger.css.js";
28
- export const LONGPRESS_INSTRUCTIONS = {
29
- touch: "Double tap and long press for additional options",
30
- keyboard: "Press Space or Alt+Down Arrow for additional options",
31
- mouse: "Click and hold for additional options"
32
- };
33
- const _OverlayTrigger = class extends SpectrumElement {
23
+ import "../sp-overlay.dev.js";
24
+ export class OverlayTrigger extends SpectrumElement {
34
25
  constructor() {
35
26
  super(...arguments);
36
- this.placement = "bottom";
37
27
  this.offset = 6;
38
28
  this.disabled = false;
39
- this.hasLongpressContent = false;
29
+ this.clickContent = [];
30
+ this.longpressContent = [];
31
+ this.hoverContent = [];
32
+ this.targetContent = [];
40
33
  this._longpressId = `longpress-describedby-descriptor`;
41
- this.abortOverlay = () => {
42
- return;
43
- };
44
- this.openStatePromise = Promise.resolve();
45
34
  }
46
35
  static get styles() {
47
36
  return [overlayTriggerStyles];
48
37
  }
49
- handleClose(event) {
50
- if (event && event.detail.interaction !== this.open && event.detail.interaction !== this.type) {
38
+ getAssignedElementsFromSlot(slot) {
39
+ return slot.assignedElements({ flatten: true });
40
+ }
41
+ handleTriggerContent(event) {
42
+ this.targetContent = this.getAssignedElementsFromSlot(event.target);
43
+ }
44
+ handleClickContent(event) {
45
+ this.clickContent = this.getAssignedElementsFromSlot(event.target);
46
+ }
47
+ handleLongpressContent(event) {
48
+ this.longpressContent = this.getAssignedElementsFromSlot(event.target);
49
+ }
50
+ handleHoverContent(event) {
51
+ this.hoverContent = this.getAssignedElementsFromSlot(event.target);
52
+ }
53
+ handleBeforetoggle(event) {
54
+ const { target } = event;
55
+ let type;
56
+ if (target === this.clickOverlayElement) {
57
+ type = "click";
58
+ } else if (target === this.longpressOverlayElement) {
59
+ type = "longpress";
60
+ } else if (target === this.hoverOverlayElement) {
61
+ type = "hover";
62
+ } else {
51
63
  return;
52
64
  }
53
- this.removeAttribute("open");
65
+ if (event.newState === "open") {
66
+ this.open = type;
67
+ } else if (this.open === type) {
68
+ this.open = void 0;
69
+ }
70
+ }
71
+ update(changes) {
72
+ var _a, _b, _c, _d, _e, _f;
73
+ if (changes.has("clickContent")) {
74
+ this.clickPlacement = ((_a = this.clickContent[0]) == null ? void 0 : _a.getAttribute("placement")) || ((_b = this.clickContent[0]) == null ? void 0 : _b.getAttribute(
75
+ "direction"
76
+ )) || void 0;
77
+ }
78
+ if (changes.has("hoverContent")) {
79
+ this.hoverPlacement = ((_c = this.hoverContent[0]) == null ? void 0 : _c.getAttribute("placement")) || ((_d = this.hoverContent[0]) == null ? void 0 : _d.getAttribute(
80
+ "direction"
81
+ )) || void 0;
82
+ }
83
+ if (changes.has("longpressContent")) {
84
+ this.longpressPlacement = ((_e = this.longpressContent[0]) == null ? void 0 : _e.getAttribute("placement")) || ((_f = this.longpressContent[0]) == null ? void 0 : _f.getAttribute(
85
+ "direction"
86
+ )) || void 0;
87
+ }
88
+ super.update(changes);
54
89
  }
55
90
  render() {
56
91
  return html`
57
92
  <slot
58
93
  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}
67
94
  name="trigger"
95
+ @slotchange=${this.handleTriggerContent}
68
96
  ></slot>
69
97
  <div id="overlay-content">
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>
98
+ <sp-overlay
99
+ id="click-overlay"
100
+ ?disabled=${this.disabled || !this.clickContent.length}
101
+ ?open=${this.open === "click" && !!this.clickContent.length}
102
+ .offset=${this.offset}
103
+ .placement=${this.clickPlacement || this.placement}
104
+ .triggerElement=${this.targetContent[0]}
105
+ .triggerInteraction=${"click"}
106
+ .type=${this.type !== "modal" ? "auto" : "modal"}
107
+ @beforetoggle=${this.handleBeforetoggle}
108
+ >
109
+ <slot
110
+ name="click-content"
111
+ @slotchange=${this.handleClickContent}
112
+ ></slot>
113
+ </sp-overlay>
114
+ <sp-overlay
115
+ id="longpress-overlay"
116
+ ?disabled=${this.disabled || !this.longpressContent.length}
117
+ ?open=${this.open === "longpress" && !!this.longpressContent.length}
118
+ .offset=${this.offset}
119
+ .placement=${this.longpressPlacement || this.placement}
120
+ .triggerElement=${this.targetContent[0]}
121
+ .triggerInteraction=${"longpress"}
122
+ .type=${"auto"}
123
+ @beforetoggle=${this.handleBeforetoggle}
124
+ >
125
+ <slot
126
+ name="longpress-content"
127
+ @slotchange=${this.handleLongpressContent}
128
+ ></slot>
129
+ <slot name="longpress-describedby-descriptor"></slot>
130
+ </sp-overlay>
131
+ <sp-overlay
132
+ id="hover-overlay"
133
+ ?disabled=${this.disabled || !this.hoverContent.length || !!this.open && this.open !== "hover"}
134
+ ?open=${this.open === "hover" && !!this.hoverContent.length}
135
+ .offset=${this.offset}
136
+ .placement=${this.hoverPlacement || this.placement}
137
+ .triggerElement=${this.targetContent[0]}
138
+ .triggerInteraction=${"hover"}
139
+ .type=${"hint"}
140
+ @beforetoggle=${this.handleBeforetoggle}
141
+ >
142
+ <slot
143
+ name="hover-content"
144
+ @slotchange=${this.handleHoverContent}
145
+ ></slot>
146
+ </sp-overlay>
82
147
  <slot name=${this._longpressId}></slot>
83
148
  </div>
84
149
  `;
@@ -86,260 +151,20 @@ const _OverlayTrigger = class extends SpectrumElement {
86
151
  updated(changes) {
87
152
  super.updated(changes);
88
153
  if (this.disabled && changes.has("disabled")) {
89
- this.closeAllOverlays();
90
- return;
91
- }
92
- if (changes.has("open")) {
93
- this.manageOpen();
94
- }
95
- if (changes.has("hasLongpressContent")) {
96
- this.manageLongpressDescriptor();
97
- }
98
- }
99
- manageLongpressDescriptor() {
100
- const trigger = this.querySelector(
101
- '[slot="trigger"]'
102
- );
103
- const ariaDescribedby = trigger.getAttribute("aria-describedby");
104
- let descriptors = ariaDescribedby ? ariaDescribedby.split(/\s+/) : [];
105
- if (this.hasLongpressContent) {
106
- if (!this.longpressDescriptor) {
107
- this.longpressDescriptor = document.createElement(
108
- "div"
109
- );
110
- this.longpressDescriptor.id = this._longpressId;
111
- this.longpressDescriptor.slot = this._longpressId;
112
- }
113
- const messageType = isIOS() || isAndroid() ? "touch" : "keyboard";
114
- this.longpressDescriptor.textContent = LONGPRESS_INSTRUCTIONS[messageType];
115
- this.appendChild(this.longpressDescriptor);
116
- descriptors.push(this._longpressId);
117
- } else {
118
- if (this.longpressDescriptor)
119
- this.longpressDescriptor.remove();
120
- descriptors = descriptors.filter(
121
- (descriptor) => descriptor !== this._longpressId
122
- );
123
- }
124
- if (descriptors.length) {
125
- trigger.setAttribute("aria-describedby", descriptors.join(" "));
126
- } else {
127
- trigger.removeAttribute("aria-describedby");
128
- }
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") {
154
+ this.open = void 0;
230
155
  return;
231
156
  }
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
157
  }
329
158
  async getUpdateComplete() {
330
159
  const complete = await super.getUpdateComplete();
331
- await this.openStatePromise;
332
160
  return complete;
333
161
  }
334
- disconnectedCallback() {
335
- this.closeAllOverlays();
336
- super.disconnectedCallback();
162
+ willUpdate() {
163
+ if (this.placement === "none") {
164
+ this.placement = void 0;
165
+ }
337
166
  }
338
- };
339
- export let OverlayTrigger = _OverlayTrigger;
340
- OverlayTrigger.openOverlay = async (target, interaction, content, options) => {
341
- return openOverlay(target, interaction, content, options);
342
- };
167
+ }
343
168
  __decorateClass([
344
169
  property({ reflect: true })
345
170
  ], OverlayTrigger.prototype, "placement", 2);
@@ -347,7 +172,7 @@ __decorateClass([
347
172
  property()
348
173
  ], OverlayTrigger.prototype, "type", 2);
349
174
  __decorateClass([
350
- property({ type: Number, reflect: true })
175
+ property({ type: Number })
351
176
  ], OverlayTrigger.prototype, "offset", 2);
352
177
  __decorateClass([
353
178
  property({ reflect: true })
@@ -357,5 +182,23 @@ __decorateClass([
357
182
  ], OverlayTrigger.prototype, "disabled", 2);
358
183
  __decorateClass([
359
184
  state()
360
- ], OverlayTrigger.prototype, "hasLongpressContent", 2);
185
+ ], OverlayTrigger.prototype, "clickContent", 2);
186
+ __decorateClass([
187
+ state()
188
+ ], OverlayTrigger.prototype, "longpressContent", 2);
189
+ __decorateClass([
190
+ state()
191
+ ], OverlayTrigger.prototype, "hoverContent", 2);
192
+ __decorateClass([
193
+ state()
194
+ ], OverlayTrigger.prototype, "targetContent", 2);
195
+ __decorateClass([
196
+ query("#click-overlay", true)
197
+ ], OverlayTrigger.prototype, "clickOverlayElement", 2);
198
+ __decorateClass([
199
+ query("#longpress-overlay", true)
200
+ ], OverlayTrigger.prototype, "longpressOverlayElement", 2);
201
+ __decorateClass([
202
+ query("#hover-overlay", true)
203
+ ], OverlayTrigger.prototype, "hoverOverlayElement", 2);
361
204
  //# sourceMappingURL=OverlayTrigger.dev.js.map