@spectrum-web-components/overlay 1.2.0-beta.9 → 1.2.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.
@@ -2894,19 +2894,24 @@
2894
2894
  "name": "click-content"
2895
2895
  },
2896
2896
  {
2897
- "description": "The content that will be displayed on click",
2897
+ "description": "The content that will be displayed on longpress",
2898
2898
  "name": "longpress-content"
2899
+ },
2900
+ {
2901
+ "description": "Description for longpress content",
2902
+ "name": "longpress-describedby-descriptor"
2899
2903
  }
2900
2904
  ],
2901
2905
  "members": [
2902
2906
  {
2903
2907
  "kind": "field",
2904
- "name": "content",
2908
+ "name": "triggeredBy",
2905
2909
  "type": {
2906
- "text": "string"
2910
+ "text": "TriggeredByType | undefined"
2907
2911
  },
2908
- "default": "'click hover longpress'",
2909
- "attribute": "content"
2912
+ "privacy": "public",
2913
+ "description": "Optional property to optimize performance and prevent race conditions.\n\nBy explicitly declaring which content types are used (e.g. \"click\", \"longpress hover\"),\nwe can avoid:\n1. Extra renders from unnecessary slot reparenting\n2. Potential infinite render loops during content detection\n3. Race conditions during slot assignment\n\nBy only returning overlay wrappers for explicitly declared content types,\nwe minimize unecessary DOM nodes, operations and ensure a more stable rendering behavior.",
2914
+ "attribute": "triggered-by"
2910
2915
  },
2911
2916
  {
2912
2917
  "kind": "field",
@@ -3197,53 +3202,57 @@
3197
3202
  "text": "\"top\" | \"top-start\" | \"top-end\" | \"right\" | \"right-start\" | \"right-end\" | \"bottom\" | \"bottom-start\" | \"bottom-end\" | \"left\" | \"left-start\" | \"left-end\""
3198
3203
  },
3199
3204
  "fieldName": "placement",
3205
+ "description": "The placement of the overlay relative to the trigger",
3200
3206
  "attribute": "placement"
3201
3207
  },
3202
3208
  {
3203
- "name": "content",
3204
3209
  "type": {
3205
- "text": "string"
3210
+ "text": "number"
3206
3211
  },
3207
- "default": "'click hover longpress'",
3208
- "fieldName": "content"
3212
+ "description": "The distance between the overlay and the trigger",
3213
+ "name": "offset",
3214
+ "default": "6",
3215
+ "fieldName": "offset"
3209
3216
  },
3210
3217
  {
3211
- "name": "type",
3212
3218
  "type": {
3213
- "text": "OverlayTriggerInteractions | undefined"
3219
+ "text": "boolean"
3214
3220
  },
3215
- "fieldName": "type"
3221
+ "description": "Whether the overlay trigger is disabled",
3222
+ "name": "disabled",
3223
+ "default": "false",
3224
+ "fieldName": "disabled"
3216
3225
  },
3217
3226
  {
3218
- "name": "offset",
3219
3227
  "type": {
3220
- "text": "number"
3228
+ "text": "'true' | 'false' | 'auto'"
3221
3229
  },
3222
- "default": "6",
3223
- "fieldName": "offset"
3230
+ "description": "How focus should be handled ('true'|'false'|'auto')",
3231
+ "name": "receives-focus",
3232
+ "default": "'auto'",
3233
+ "fieldName": "receivesFocus"
3224
3234
  },
3225
3235
  {
3226
- "name": "open",
3236
+ "name": "triggered-by",
3227
3237
  "type": {
3228
- "text": "OverlayContentTypes | undefined"
3238
+ "text": "TriggeredByType | undefined"
3229
3239
  },
3230
- "fieldName": "open"
3240
+ "description": "Optional property to optimize performance and prevent race conditions.\n\nBy explicitly declaring which content types are used (e.g. \"click\", \"longpress hover\"),\nwe can avoid:\n1. Extra renders from unnecessary slot reparenting\n2. Potential infinite render loops during content detection\n3. Race conditions during slot assignment\n\nBy only returning overlay wrappers for explicitly declared content types,\nwe minimize unecessary DOM nodes, operations and ensure a more stable rendering behavior.",
3241
+ "fieldName": "triggeredBy"
3231
3242
  },
3232
3243
  {
3233
- "name": "disabled",
3244
+ "name": "type",
3234
3245
  "type": {
3235
- "text": "boolean"
3246
+ "text": "OverlayTriggerInteractions | undefined"
3236
3247
  },
3237
- "default": "false",
3238
- "fieldName": "disabled"
3248
+ "fieldName": "type"
3239
3249
  },
3240
3250
  {
3241
- "name": "receives-focus",
3251
+ "name": "open",
3242
3252
  "type": {
3243
- "text": "'true' | 'false' | 'auto'"
3253
+ "text": "OverlayContentTypes | undefined"
3244
3254
  },
3245
- "default": "'auto'",
3246
- "fieldName": "receivesFocus"
3255
+ "fieldName": "open"
3247
3256
  }
3248
3257
  ],
3249
3258
  "superclass": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spectrum-web-components/overlay",
3
- "version": "1.2.0-beta.9",
3
+ "version": "1.2.0",
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.2.0-beta.9",
164
- "@spectrum-web-components/base": "^1.2.0-beta.9",
165
- "@spectrum-web-components/reactive-controllers": "^1.2.0-beta.9",
166
- "@spectrum-web-components/shared": "^1.2.0-beta.9",
167
- "@spectrum-web-components/theme": "^1.2.0-beta.9"
163
+ "@spectrum-web-components/action-button": "^1.2.0",
164
+ "@spectrum-web-components/base": "^1.2.0",
165
+ "@spectrum-web-components/reactive-controllers": "^1.2.0",
166
+ "@spectrum-web-components/shared": "^1.2.0",
167
+ "@spectrum-web-components/theme": "^1.2.0"
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": "1f6549c7e7a8fdb9570a959fc44cef766cd4bee7"
179
+ "gitHead": "e4aec7b389e6209984e4df74f9b86b3ee0c485dd"
180
180
  }
@@ -2,21 +2,46 @@ import { CSSResultArray, PropertyValues, SpectrumElement, TemplateResult } from
2
2
  import type { Placement } from '@floating-ui/dom';
3
3
  import type { Overlay } from './Overlay.js';
4
4
  import type { OverlayTriggerInteractions } from './overlay-types';
5
+ import '@spectrum-web-components/overlay/sp-overlay.js';
5
6
  export type OverlayContentTypes = 'click' | 'hover' | 'longpress';
7
+ type Combinations<T extends string, U extends string = T> = T extends string ? T | `${T} ${Combinations<Exclude<U, T>>}` : never;
8
+ export type TriggeredByType = Combinations<OverlayContentTypes>;
6
9
  /**
7
10
  * @element overlay-trigger
8
11
  *
12
+ * A component that manages overlay content triggered by different interactions.
13
+ * Supports click, hover, and longpress triggered overlays with configurable
14
+ * placement and behavior.
15
+ *
9
16
  * @slot trigger - The content that will trigger the various overlays
10
17
  * @slot hover-content - The content that will be displayed on hover
11
18
  * @slot click-content - The content that will be displayed on click
12
- * @slot longpress-content - The content that will be displayed on click
19
+ * @slot longpress-content - The content that will be displayed on longpress
20
+ * @slot longpress-describedby-descriptor - Description for longpress content
13
21
  *
14
22
  * @fires sp-opened - Announces that the overlay has been opened
15
23
  * @fires sp-closed - Announces that the overlay has been closed
24
+ *
25
+ * @attr {string} placement - The placement of the overlay relative to the trigger
26
+ * @attr {number} offset - The distance between the overlay and the trigger
27
+ * @attr {boolean} disabled - Whether the overlay trigger is disabled
28
+ * @attr {string} receives-focus - How focus should be handled ('true'|'false'|'auto')
16
29
  */
17
30
  export declare class OverlayTrigger extends SpectrumElement {
18
31
  static get styles(): CSSResultArray;
19
- content: string;
32
+ /**
33
+ * Optional property to optimize performance and prevent race conditions.
34
+ *
35
+ * By explicitly declaring which content types are used (e.g. "click", "longpress hover"),
36
+ * we can avoid:
37
+ * 1. Extra renders from unnecessary slot reparenting
38
+ * 2. Potential infinite render loops during content detection
39
+ * 3. Race conditions during slot assignment
40
+ *
41
+ * By only returning overlay wrappers for explicitly declared content types,
42
+ * we minimize unecessary DOM nodes, operations and ensure a more stable rendering behavior.
43
+ */
44
+ triggeredBy?: TriggeredByType;
20
45
  /**
21
46
  * @type {"top" | "top-start" | "top-end" | "right" | "right-start" | "right-end" | "bottom" | "bottom-start" | "bottom-end" | "left" | "left-start" | "left-end"}
22
47
  * @attr
@@ -47,6 +72,7 @@ export declare class OverlayTrigger extends SpectrumElement {
47
72
  protected renderHoverOverlay(): TemplateResult;
48
73
  protected renderLongpressOverlay(): TemplateResult;
49
74
  protected render(): TemplateResult;
50
- protected updated(changes: PropertyValues): void;
75
+ protected updated(changedProperties: PropertyValues): void;
51
76
  protected getUpdateComplete(): Promise<boolean>;
52
77
  }
78
+ export {};
@@ -18,11 +18,11 @@ import {
18
18
  query,
19
19
  state
20
20
  } from "@spectrum-web-components/base/src/decorators.js";
21
+ import "@spectrum-web-components/overlay/sp-overlay.js";
21
22
  import overlayTriggerStyles from "./overlay-trigger.css.js";
22
23
  export class OverlayTrigger extends SpectrumElement {
23
24
  constructor() {
24
25
  super(...arguments);
25
- this.content = "click hover longpress";
26
26
  this.offset = 6;
27
27
  this.disabled = false;
28
28
  this.receivesFocus = "auto";
@@ -102,12 +102,9 @@ export class OverlayTrigger extends SpectrumElement {
102
102
  `;
103
103
  }
104
104
  renderClickOverlay() {
105
- import("@spectrum-web-components/overlay/sp-overlay.js");
105
+ var _a;
106
106
  const slot = this.renderSlot("click-content");
107
- if (!this.clickContent.length) {
108
- return slot;
109
- }
110
- return html`
107
+ const clickOverlay = html`
111
108
  <sp-overlay
112
109
  id="click-overlay"
113
110
  ?disabled=${this.disabled || !this.clickContent.length}
@@ -123,14 +120,19 @@ export class OverlayTrigger extends SpectrumElement {
123
120
  ${slot}
124
121
  </sp-overlay>
125
122
  `;
123
+ if ((_a = this.triggeredBy) == null ? void 0 : _a.includes("click")) {
124
+ return clickOverlay;
125
+ }
126
+ if (!this.clickContent.length) {
127
+ return slot;
128
+ } else {
129
+ return clickOverlay;
130
+ }
126
131
  }
127
132
  renderHoverOverlay() {
128
- import("@spectrum-web-components/overlay/sp-overlay.js");
133
+ var _a;
129
134
  const slot = this.renderSlot("hover-content");
130
- if (!this.hoverContent.length) {
131
- return slot;
132
- }
133
- return html`
135
+ const hoverOverlay = html`
134
136
  <sp-overlay
135
137
  id="hover-overlay"
136
138
  ?open=${this.open === "hover" && !!this.hoverContent.length}
@@ -146,14 +148,19 @@ export class OverlayTrigger extends SpectrumElement {
146
148
  ${slot}
147
149
  </sp-overlay>
148
150
  `;
151
+ if ((_a = this.triggeredBy) == null ? void 0 : _a.includes("hover")) {
152
+ return hoverOverlay;
153
+ }
154
+ if (!this.hoverContent.length) {
155
+ return slot;
156
+ } else {
157
+ return hoverOverlay;
158
+ }
149
159
  }
150
160
  renderLongpressOverlay() {
151
- import("@spectrum-web-components/overlay/sp-overlay.js");
161
+ var _a;
152
162
  const slot = this.renderSlot("longpress-content");
153
- if (!this.longpressContent.length) {
154
- return slot;
155
- }
156
- return html`
163
+ const longpressOverlay = html`
157
164
  <sp-overlay
158
165
  id="longpress-overlay"
159
166
  ?disabled=${this.disabled || !this.longpressContent.length}
@@ -170,9 +177,16 @@ export class OverlayTrigger extends SpectrumElement {
170
177
  </sp-overlay>
171
178
  <slot name="longpress-describedby-descriptor"></slot>
172
179
  `;
180
+ if ((_a = this.triggeredBy) == null ? void 0 : _a.includes("longpress")) {
181
+ return longpressOverlay;
182
+ }
183
+ if (!this.longpressContent.length) {
184
+ return slot;
185
+ } else {
186
+ return longpressOverlay;
187
+ }
173
188
  }
174
189
  render() {
175
- const content = this.content.split(" ");
176
190
  return html`
177
191
  <slot
178
192
  id="trigger"
@@ -180,15 +194,28 @@ export class OverlayTrigger extends SpectrumElement {
180
194
  @slotchange=${this.handleTriggerContent}
181
195
  ></slot>
182
196
  ${[
183
- content.includes("click") ? this.renderClickOverlay() : html``,
184
- content.includes("hover") ? this.renderHoverOverlay() : html``,
185
- content.includes("longpress") ? this.renderLongpressOverlay() : html``
197
+ this.renderClickOverlay(),
198
+ this.renderHoverOverlay(),
199
+ this.renderLongpressOverlay()
186
200
  ]}
187
201
  `;
188
202
  }
189
- updated(changes) {
190
- super.updated(changes);
191
- if (this.disabled && changes.has("disabled")) {
203
+ updated(changedProperties) {
204
+ super.updated(changedProperties);
205
+ if (!this.triggeredBy) {
206
+ const issues = [
207
+ "You have not specified the `triggeredBy` property. For optimal performance, consider explicitly declaring which overlay types you plan to use.",
208
+ 'Example: triggered-by="click hover"',
209
+ "This helps avoid unnecessary DOM operations and potential race conditions."
210
+ ];
211
+ window.__swc.warn(
212
+ this,
213
+ "Performance optimization available for <overlay-trigger>:",
214
+ "https://opensource.adobe.com/spectrum-web-components/components/overlay-trigger/#performance-optimization",
215
+ { issues }
216
+ );
217
+ }
218
+ if (this.disabled && changedProperties.has("disabled")) {
192
219
  this.open = void 0;
193
220
  return;
194
221
  }
@@ -199,8 +226,8 @@ export class OverlayTrigger extends SpectrumElement {
199
226
  }
200
227
  }
201
228
  __decorateClass([
202
- property()
203
- ], OverlayTrigger.prototype, "content", 2);
229
+ property({ attribute: "triggered-by" })
230
+ ], OverlayTrigger.prototype, "triggeredBy", 2);
204
231
  __decorateClass([
205
232
  property({ reflect: true })
206
233
  ], OverlayTrigger.prototype, "placement", 2);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["OverlayTrigger.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*/\n\nimport {\n CSSResultArray,\n html,\n PropertyValues,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport {\n property,\n query,\n state,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport type { Placement } from '@floating-ui/dom';\n\nimport type { BeforetoggleOpenEvent } from './events.dev.js'\nimport type { Overlay } from './Overlay.dev.js'\nimport type { OverlayTriggerInteractions } from './overlay-types';\n\nimport overlayTriggerStyles from './overlay-trigger.css.js';\n\nexport type OverlayContentTypes = 'click' | 'hover' | 'longpress';\n\n/**\n * @element overlay-trigger\n *\n * @slot trigger - The content that will trigger the various overlays\n * @slot hover-content - The content that will be displayed on hover\n * @slot click-content - The content that will be displayed on click\n * @slot longpress-content - The content that will be displayed on click\n *\n * @fires sp-opened - Announces that the overlay has been opened\n * @fires sp-closed - Announces that the overlay has been closed\n */\nexport class OverlayTrigger extends SpectrumElement {\n public static override get styles(): CSSResultArray {\n return [overlayTriggerStyles];\n }\n\n @property()\n content = 'click hover longpress';\n\n /**\n * @type {\"top\" | \"top-start\" | \"top-end\" | \"right\" | \"right-start\" | \"right-end\" | \"bottom\" | \"bottom-start\" | \"bottom-end\" | \"left\" | \"left-start\" | \"left-end\"}\n * @attr\n */\n @property({ reflect: true })\n public placement?: Placement;\n\n @property()\n public type?: OverlayTriggerInteractions;\n\n @property({ type: Number })\n public offset = 6;\n\n @property({ reflect: true })\n public open?: OverlayContentTypes;\n\n @property({ type: Boolean, reflect: true })\n public disabled = false;\n\n @property({ attribute: 'receives-focus' })\n public receivesFocus: 'true' | 'false' | 'auto' = 'auto';\n\n @state()\n private clickContent: HTMLElement[] = [];\n\n private clickPlacement?: Placement;\n\n @state()\n private longpressContent: HTMLElement[] = [];\n\n private longpressPlacement?: Placement;\n\n @state()\n private hoverContent: HTMLElement[] = [];\n\n private hoverPlacement?: Placement;\n\n @state()\n private targetContent: HTMLElement[] = [];\n\n @query('#click-overlay', true)\n clickOverlayElement!: Overlay;\n\n @query('#longpress-overlay', true)\n longpressOverlayElement!: Overlay;\n\n @query('#hover-overlay', true)\n hoverOverlayElement!: Overlay;\n\n private getAssignedElementsFromSlot(slot: HTMLSlotElement): HTMLElement[] {\n return slot.assignedElements({ flatten: true }) as HTMLElement[];\n }\n\n private handleTriggerContent(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.targetContent = this.getAssignedElementsFromSlot(event.target);\n }\n\n private handleSlotContent(\n event: Event & { target: HTMLSlotElement }\n ): void {\n switch (event.target.name) {\n case 'click-content':\n this.clickContent = this.getAssignedElementsFromSlot(\n event.target\n );\n break;\n case 'longpress-content':\n this.longpressContent = this.getAssignedElementsFromSlot(\n event.target\n );\n break;\n case 'hover-content':\n this.hoverContent = this.getAssignedElementsFromSlot(\n event.target\n );\n break;\n }\n }\n\n private handleBeforetoggle(event: BeforetoggleOpenEvent): void {\n const { target } = event;\n let type: OverlayContentTypes;\n if (target === this.clickOverlayElement) {\n type = 'click';\n } else if (target === this.longpressOverlayElement) {\n type = 'longpress';\n } else if (target === this.hoverOverlayElement) {\n type = 'hover';\n /* c8 ignore next 3 */\n } else {\n return;\n }\n if (event.newState === 'open') {\n this.open = type;\n } else if (this.open === type) {\n this.open = undefined;\n }\n }\n\n protected override update(changes: PropertyValues): void {\n if (changes.has('clickContent')) {\n this.clickPlacement =\n ((this.clickContent[0]?.getAttribute('placement') ||\n this.clickContent[0]?.getAttribute(\n 'direction'\n )) as Placement) || undefined;\n }\n if (changes.has('hoverContent')) {\n this.hoverPlacement =\n ((this.hoverContent[0]?.getAttribute('placement') ||\n this.hoverContent[0]?.getAttribute(\n 'direction'\n )) as Placement) || undefined;\n }\n if (changes.has('longpressContent')) {\n this.longpressPlacement =\n ((this.longpressContent[0]?.getAttribute('placement') ||\n this.longpressContent[0]?.getAttribute(\n 'direction'\n )) as Placement) || undefined;\n }\n super.update(changes);\n }\n\n protected renderSlot(name: string): TemplateResult {\n return html`\n <slot name=${name} @slotchange=${this.handleSlotContent}></slot>\n `;\n }\n\n protected renderClickOverlay(): TemplateResult {\n import('@spectrum-web-components/overlay/sp-overlay.js');\n const slot = this.renderSlot('click-content');\n if (!this.clickContent.length) {\n return slot;\n }\n return html`\n <sp-overlay\n id=\"click-overlay\"\n ?disabled=${this.disabled || !this.clickContent.length}\n ?open=${this.open === 'click' && !!this.clickContent.length}\n .offset=${this.offset}\n .placement=${this.clickPlacement || this.placement}\n .triggerElement=${this.targetContent[0]}\n .triggerInteraction=${'click'}\n .type=${this.type !== 'modal' ? 'auto' : 'modal'}\n @beforetoggle=${this.handleBeforetoggle}\n .receivesFocus=${this.receivesFocus}\n >\n ${slot}\n </sp-overlay>\n `;\n }\n\n protected renderHoverOverlay(): TemplateResult {\n import('@spectrum-web-components/overlay/sp-overlay.js');\n const slot = this.renderSlot('hover-content');\n if (!this.hoverContent.length) {\n return slot;\n }\n return html`\n <sp-overlay\n id=\"hover-overlay\"\n ?open=${this.open === 'hover' && !!this.hoverContent.length}\n ?disabled=${this.disabled ||\n !this.hoverContent.length ||\n (!!this.open && this.open !== 'hover')}\n .offset=${this.offset}\n .placement=${this.hoverPlacement || this.placement}\n .triggerElement=${this.targetContent[0]}\n .triggerInteraction=${'hover'}\n .type=${'hint'}\n @beforetoggle=${this.handleBeforetoggle}\n .receivesFocus=${this.receivesFocus}\n >\n ${slot}\n </sp-overlay>\n `;\n }\n\n protected renderLongpressOverlay(): TemplateResult {\n import('@spectrum-web-components/overlay/sp-overlay.js');\n const slot = this.renderSlot('longpress-content');\n if (!this.longpressContent.length) {\n return slot;\n }\n return html`\n <sp-overlay\n id=\"longpress-overlay\"\n ?disabled=${this.disabled || !this.longpressContent.length}\n ?open=${this.open === 'longpress' &&\n !!this.longpressContent.length}\n .offset=${this.offset}\n .placement=${this.longpressPlacement || this.placement}\n .triggerElement=${this.targetContent[0]}\n .triggerInteraction=${'longpress'}\n .type=${'auto'}\n @beforetoggle=${this.handleBeforetoggle}\n .receivesFocus=${this.receivesFocus}\n >\n ${slot}\n </sp-overlay>\n <slot name=\"longpress-describedby-descriptor\"></slot>\n `;\n }\n\n protected override render(): TemplateResult {\n const content = this.content.split(' ');\n // Keyboard event availability documented in README.md\n /* eslint-disable lit-a11y/click-events-have-key-events */\n return html`\n <slot\n id=\"trigger\"\n name=\"trigger\"\n @slotchange=${this.handleTriggerContent}\n ></slot>\n ${[\n content.includes('click') ? this.renderClickOverlay() : html``,\n content.includes('hover') ? this.renderHoverOverlay() : html``,\n content.includes('longpress')\n ? this.renderLongpressOverlay()\n : html``,\n ]}\n `;\n /* eslint-enable lit-a11y/click-events-have-key-events */\n }\n\n protected override updated(changes: PropertyValues): void {\n super.updated(changes);\n if (this.disabled && changes.has('disabled')) {\n this.open = undefined;\n return;\n }\n }\n\n protected override async getUpdateComplete(): Promise<boolean> {\n const complete = (await super.getUpdateComplete()) as boolean;\n return complete;\n }\n}\n"],
5
- "mappings": "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",
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*/\n\nimport {\n CSSResultArray,\n html,\n PropertyValues,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport {\n property,\n query,\n state,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport type { Placement } from '@floating-ui/dom';\n\nimport type { BeforetoggleOpenEvent } from './events.dev.js'\nimport type { Overlay } from './Overlay.dev.js'\nimport type { OverlayTriggerInteractions } from './overlay-types';\nimport '@spectrum-web-components/overlay/sp-overlay.js';\n\nimport overlayTriggerStyles from './overlay-trigger.css.js';\n\nexport type OverlayContentTypes = 'click' | 'hover' | 'longpress';\n\n// Helper type to create all unique combinations of OverlayContentTypes\ntype Combinations<T extends string, U extends string = T> = T extends string\n ? T | `${T} ${Combinations<Exclude<U, T>>}`\n : never;\n\nexport type TriggeredByType = Combinations<OverlayContentTypes>;\n\n/**\n * @element overlay-trigger\n *\n * A component that manages overlay content triggered by different interactions.\n * Supports click, hover, and longpress triggered overlays with configurable\n * placement and behavior.\n *\n * @slot trigger - The content that will trigger the various overlays\n * @slot hover-content - The content that will be displayed on hover\n * @slot click-content - The content that will be displayed on click\n * @slot longpress-content - The content that will be displayed on longpress\n * @slot longpress-describedby-descriptor - Description for longpress content\n *\n * @fires sp-opened - Announces that the overlay has been opened\n * @fires sp-closed - Announces that the overlay has been closed\n *\n * @attr {string} placement - The placement of the overlay relative to the trigger\n * @attr {number} offset - The distance between the overlay and the trigger\n * @attr {boolean} disabled - Whether the overlay trigger is disabled\n * @attr {string} receives-focus - How focus should be handled ('true'|'false'|'auto')\n */\nexport class OverlayTrigger extends SpectrumElement {\n public static override get styles(): CSSResultArray {\n return [overlayTriggerStyles];\n }\n\n /**\n * Optional property to optimize performance and prevent race conditions.\n *\n * By explicitly declaring which content types are used (e.g. \"click\", \"longpress hover\"),\n * we can avoid:\n * 1. Extra renders from unnecessary slot reparenting\n * 2. Potential infinite render loops during content detection\n * 3. Race conditions during slot assignment\n *\n * By only returning overlay wrappers for explicitly declared content types,\n * we minimize unecessary DOM nodes, operations and ensure a more stable rendering behavior.\n */\n @property({ attribute: 'triggered-by' })\n public triggeredBy?: TriggeredByType;\n\n /**\n * @type {\"top\" | \"top-start\" | \"top-end\" | \"right\" | \"right-start\" | \"right-end\" | \"bottom\" | \"bottom-start\" | \"bottom-end\" | \"left\" | \"left-start\" | \"left-end\"}\n * @attr\n */\n @property({ reflect: true })\n public placement?: Placement;\n\n @property()\n public type?: OverlayTriggerInteractions;\n\n @property({ type: Number })\n public offset = 6;\n\n @property({ reflect: true })\n public open?: OverlayContentTypes;\n\n @property({ type: Boolean, reflect: true })\n public disabled = false;\n\n @property({ attribute: 'receives-focus' })\n public receivesFocus: 'true' | 'false' | 'auto' = 'auto';\n\n @state()\n private clickContent: HTMLElement[] = [];\n\n private clickPlacement?: Placement;\n\n @state()\n private longpressContent: HTMLElement[] = [];\n\n private longpressPlacement?: Placement;\n\n @state()\n private hoverContent: HTMLElement[] = [];\n\n private hoverPlacement?: Placement;\n\n @state()\n private targetContent: HTMLElement[] = [];\n\n @query('#click-overlay', true)\n clickOverlayElement!: Overlay;\n\n @query('#longpress-overlay', true)\n longpressOverlayElement!: Overlay;\n\n @query('#hover-overlay', true)\n hoverOverlayElement!: Overlay;\n\n private getAssignedElementsFromSlot(slot: HTMLSlotElement): HTMLElement[] {\n return slot.assignedElements({ flatten: true }) as HTMLElement[];\n }\n\n private handleTriggerContent(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.targetContent = this.getAssignedElementsFromSlot(event.target);\n }\n\n private handleSlotContent(\n event: Event & { target: HTMLSlotElement }\n ): void {\n switch (event.target.name) {\n case 'click-content':\n this.clickContent = this.getAssignedElementsFromSlot(\n event.target\n );\n break;\n case 'longpress-content':\n this.longpressContent = this.getAssignedElementsFromSlot(\n event.target\n );\n break;\n case 'hover-content':\n this.hoverContent = this.getAssignedElementsFromSlot(\n event.target\n );\n break;\n }\n }\n\n private handleBeforetoggle(event: BeforetoggleOpenEvent): void {\n const { target } = event;\n let type: OverlayContentTypes;\n if (target === this.clickOverlayElement) {\n type = 'click';\n } else if (target === this.longpressOverlayElement) {\n type = 'longpress';\n } else if (target === this.hoverOverlayElement) {\n type = 'hover';\n /* c8 ignore next 3 */\n } else {\n return;\n }\n if (event.newState === 'open') {\n this.open = type;\n } else if (this.open === type) {\n this.open = undefined;\n }\n }\n\n protected override update(changes: PropertyValues): void {\n if (changes.has('clickContent')) {\n this.clickPlacement =\n ((this.clickContent[0]?.getAttribute('placement') ||\n this.clickContent[0]?.getAttribute(\n 'direction'\n )) as Placement) || undefined;\n }\n if (changes.has('hoverContent')) {\n this.hoverPlacement =\n ((this.hoverContent[0]?.getAttribute('placement') ||\n this.hoverContent[0]?.getAttribute(\n 'direction'\n )) as Placement) || undefined;\n }\n if (changes.has('longpressContent')) {\n this.longpressPlacement =\n ((this.longpressContent[0]?.getAttribute('placement') ||\n this.longpressContent[0]?.getAttribute(\n 'direction'\n )) as Placement) || undefined;\n }\n super.update(changes);\n }\n\n protected renderSlot(name: string): TemplateResult {\n return html`\n <slot name=${name} @slotchange=${this.handleSlotContent}></slot>\n `;\n }\n\n protected renderClickOverlay(): TemplateResult {\n const slot = this.renderSlot('click-content');\n const clickOverlay = html`\n <sp-overlay\n id=\"click-overlay\"\n ?disabled=${this.disabled || !this.clickContent.length}\n ?open=${this.open === 'click' && !!this.clickContent.length}\n .offset=${this.offset}\n .placement=${this.clickPlacement || this.placement}\n .triggerElement=${this.targetContent[0]}\n .triggerInteraction=${'click'}\n .type=${this.type !== 'modal' ? 'auto' : 'modal'}\n @beforetoggle=${this.handleBeforetoggle}\n .receivesFocus=${this.receivesFocus}\n >\n ${slot}\n </sp-overlay>\n `;\n\n // If click interactions are explicitly enabled by customers, always return the overlay\n if (this.triggeredBy?.includes('click')) {\n return clickOverlay;\n }\n\n if (!this.clickContent.length) {\n return slot;\n } else {\n return clickOverlay;\n }\n }\n\n protected renderHoverOverlay(): TemplateResult {\n const slot = this.renderSlot('hover-content');\n const hoverOverlay = html`\n <sp-overlay\n id=\"hover-overlay\"\n ?open=${this.open === 'hover' && !!this.hoverContent.length}\n ?disabled=${this.disabled ||\n !this.hoverContent.length ||\n (!!this.open && this.open !== 'hover')}\n .offset=${this.offset}\n .placement=${this.hoverPlacement || this.placement}\n .triggerElement=${this.targetContent[0]}\n .triggerInteraction=${'hover'}\n .type=${'hint'}\n @beforetoggle=${this.handleBeforetoggle}\n .receivesFocus=${this.receivesFocus}\n >\n ${slot}\n </sp-overlay>\n `;\n\n // If hover interactions are explicitly enabled by customers, always return the overlay\n if (this.triggeredBy?.includes('hover')) {\n return hoverOverlay;\n }\n\n if (!this.hoverContent.length) {\n return slot;\n } else {\n return hoverOverlay;\n }\n }\n\n protected renderLongpressOverlay(): TemplateResult {\n const slot = this.renderSlot('longpress-content');\n const longpressOverlay = html`\n <sp-overlay\n id=\"longpress-overlay\"\n ?disabled=${this.disabled || !this.longpressContent.length}\n ?open=${this.open === 'longpress' &&\n !!this.longpressContent.length}\n .offset=${this.offset}\n .placement=${this.longpressPlacement || this.placement}\n .triggerElement=${this.targetContent[0]}\n .triggerInteraction=${'longpress'}\n .type=${'auto'}\n @beforetoggle=${this.handleBeforetoggle}\n .receivesFocus=${this.receivesFocus}\n >\n ${slot}\n </sp-overlay>\n <slot name=\"longpress-describedby-descriptor\"></slot>\n `;\n\n // If click interactions are explicitly enabled by customers, always return the overlay\n if (this.triggeredBy?.includes('longpress')) {\n return longpressOverlay;\n }\n\n if (!this.longpressContent.length) {\n return slot;\n } else {\n return longpressOverlay;\n }\n }\n\n protected override render(): TemplateResult {\n // Keyboard event availability documented in README.md\n return html`\n <slot\n id=\"trigger\"\n name=\"trigger\"\n @slotchange=${this.handleTriggerContent}\n ></slot>\n ${[\n this.renderClickOverlay(),\n this.renderHoverOverlay(),\n this.renderLongpressOverlay(),\n ]}\n `;\n }\n\n protected override updated(changedProperties: PropertyValues): void {\n super.updated(changedProperties);\n\n if (window.__swc?.DEBUG && !this.triggeredBy) {\n const issues = [\n 'You have not specified the `triggeredBy` property. For optimal performance, consider explicitly declaring which overlay types you plan to use.',\n 'Example: triggered-by=\"click hover\"',\n 'This helps avoid unnecessary DOM operations and potential race conditions.',\n ];\n\n window.__swc.warn(\n this,\n 'Performance optimization available for <overlay-trigger>:',\n 'https://opensource.adobe.com/spectrum-web-components/components/overlay-trigger/#performance-optimization',\n { issues }\n );\n }\n\n if (this.disabled && changedProperties.has('disabled')) {\n this.open = undefined;\n return;\n }\n }\n\n protected override async getUpdateComplete(): Promise<boolean> {\n const complete = (await super.getUpdateComplete()) as boolean;\n return complete;\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,6 +1,6 @@
1
- "use strict";var g=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var n=(p,a,e,o)=>{for(var t=o>1?void 0:o?v(a,e):a,l=p.length-1,i;l>=0;l--)(i=p[l])&&(t=(o?i(a,e,t):i(t))||t);return o&&t&&g(a,e,t),t};import{html as r,SpectrumElement as u}from"@spectrum-web-components/base";import{property as s,query as h,state as c}from"@spectrum-web-components/base/src/decorators.js";import f from"./overlay-trigger.css.js";export class OverlayTrigger extends u{constructor(){super(...arguments);this.content="click hover longpress";this.offset=6;this.disabled=!1;this.receivesFocus="auto";this.clickContent=[];this.longpressContent=[];this.hoverContent=[];this.targetContent=[]}static get styles(){return[f]}getAssignedElementsFromSlot(e){return e.assignedElements({flatten:!0})}handleTriggerContent(e){this.targetContent=this.getAssignedElementsFromSlot(e.target)}handleSlotContent(e){switch(e.target.name){case"click-content":this.clickContent=this.getAssignedElementsFromSlot(e.target);break;case"longpress-content":this.longpressContent=this.getAssignedElementsFromSlot(e.target);break;case"hover-content":this.hoverContent=this.getAssignedElementsFromSlot(e.target);break}}handleBeforetoggle(e){const{target:o}=e;let t;if(o===this.clickOverlayElement)t="click";else if(o===this.longpressOverlayElement)t="longpress";else if(o===this.hoverOverlayElement)t="hover";else return;e.newState==="open"?this.open=t:this.open===t&&(this.open=void 0)}update(e){var o,t,l,i,d,m;e.has("clickContent")&&(this.clickPlacement=((o=this.clickContent[0])==null?void 0:o.getAttribute("placement"))||((t=this.clickContent[0])==null?void 0:t.getAttribute("direction"))||void 0),e.has("hoverContent")&&(this.hoverPlacement=((l=this.hoverContent[0])==null?void 0:l.getAttribute("placement"))||((i=this.hoverContent[0])==null?void 0:i.getAttribute("direction"))||void 0),e.has("longpressContent")&&(this.longpressPlacement=((d=this.longpressContent[0])==null?void 0:d.getAttribute("placement"))||((m=this.longpressContent[0])==null?void 0:m.getAttribute("direction"))||void 0),super.update(e)}renderSlot(e){return r`
1
+ "use strict";var m=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var n=(p,l,e,r)=>{for(var t=r>1?void 0:r?u(l,e):l,s=p.length-1,i;s>=0;s--)(i=p[s])&&(t=(r?i(l,e,t):i(t))||t);return r&&t&&m(l,e,t),t};import{html as a,SpectrumElement as v}from"@spectrum-web-components/base";import{property as o,query as h,state as c}from"@spectrum-web-components/base/src/decorators.js";import"@spectrum-web-components/overlay/sp-overlay.js";import y from"./overlay-trigger.css.js";export class OverlayTrigger extends v{constructor(){super(...arguments);this.offset=6;this.disabled=!1;this.receivesFocus="auto";this.clickContent=[];this.longpressContent=[];this.hoverContent=[];this.targetContent=[]}static get styles(){return[y]}getAssignedElementsFromSlot(e){return e.assignedElements({flatten:!0})}handleTriggerContent(e){this.targetContent=this.getAssignedElementsFromSlot(e.target)}handleSlotContent(e){switch(e.target.name){case"click-content":this.clickContent=this.getAssignedElementsFromSlot(e.target);break;case"longpress-content":this.longpressContent=this.getAssignedElementsFromSlot(e.target);break;case"hover-content":this.hoverContent=this.getAssignedElementsFromSlot(e.target);break}}handleBeforetoggle(e){const{target:r}=e;let t;if(r===this.clickOverlayElement)t="click";else if(r===this.longpressOverlayElement)t="longpress";else if(r===this.hoverOverlayElement)t="hover";else return;e.newState==="open"?this.open=t:this.open===t&&(this.open=void 0)}update(e){var r,t,s,i,d,g;e.has("clickContent")&&(this.clickPlacement=((r=this.clickContent[0])==null?void 0:r.getAttribute("placement"))||((t=this.clickContent[0])==null?void 0:t.getAttribute("direction"))||void 0),e.has("hoverContent")&&(this.hoverPlacement=((s=this.hoverContent[0])==null?void 0:s.getAttribute("placement"))||((i=this.hoverContent[0])==null?void 0:i.getAttribute("direction"))||void 0),e.has("longpressContent")&&(this.longpressPlacement=((d=this.longpressContent[0])==null?void 0:d.getAttribute("placement"))||((g=this.longpressContent[0])==null?void 0:g.getAttribute("direction"))||void 0),super.update(e)}renderSlot(e){return a`
2
2
  <slot name=${e} @slotchange=${this.handleSlotContent}></slot>
3
- `}renderClickOverlay(){import("@spectrum-web-components/overlay/sp-overlay.js");const e=this.renderSlot("click-content");return this.clickContent.length?r`
3
+ `}renderClickOverlay(){var t;const e=this.renderSlot("click-content"),r=a`
4
4
  <sp-overlay
5
5
  id="click-overlay"
6
6
  ?disabled=${this.disabled||!this.clickContent.length}
@@ -15,7 +15,7 @@
15
15
  >
16
16
  ${e}
17
17
  </sp-overlay>
18
- `:e}renderHoverOverlay(){import("@spectrum-web-components/overlay/sp-overlay.js");const e=this.renderSlot("hover-content");return this.hoverContent.length?r`
18
+ `;return(t=this.triggeredBy)!=null&&t.includes("click")||this.clickContent.length?r:e}renderHoverOverlay(){var t;const e=this.renderSlot("hover-content"),r=a`
19
19
  <sp-overlay
20
20
  id="hover-overlay"
21
21
  ?open=${this.open==="hover"&&!!this.hoverContent.length}
@@ -30,7 +30,7 @@
30
30
  >
31
31
  ${e}
32
32
  </sp-overlay>
33
- `:e}renderLongpressOverlay(){import("@spectrum-web-components/overlay/sp-overlay.js");const e=this.renderSlot("longpress-content");return this.longpressContent.length?r`
33
+ `;return(t=this.triggeredBy)!=null&&t.includes("hover")||this.hoverContent.length?r:e}renderLongpressOverlay(){var t;const e=this.renderSlot("longpress-content"),r=a`
34
34
  <sp-overlay
35
35
  id="longpress-overlay"
36
36
  ?disabled=${this.disabled||!this.longpressContent.length}
@@ -46,12 +46,12 @@
46
46
  ${e}
47
47
  </sp-overlay>
48
48
  <slot name="longpress-describedby-descriptor"></slot>
49
- `:e}render(){const e=this.content.split(" ");return r`
49
+ `;return(t=this.triggeredBy)!=null&&t.includes("longpress")||this.longpressContent.length?r:e}render(){return a`
50
50
  <slot
51
51
  id="trigger"
52
52
  name="trigger"
53
53
  @slotchange=${this.handleTriggerContent}
54
54
  ></slot>
55
- ${[e.includes("click")?this.renderClickOverlay():r``,e.includes("hover")?this.renderHoverOverlay():r``,e.includes("longpress")?this.renderLongpressOverlay():r``]}
56
- `}updated(e){if(super.updated(e),this.disabled&&e.has("disabled")){this.open=void 0;return}}async getUpdateComplete(){return await super.getUpdateComplete()}}n([s()],OverlayTrigger.prototype,"content",2),n([s({reflect:!0})],OverlayTrigger.prototype,"placement",2),n([s()],OverlayTrigger.prototype,"type",2),n([s({type:Number})],OverlayTrigger.prototype,"offset",2),n([s({reflect:!0})],OverlayTrigger.prototype,"open",2),n([s({type:Boolean,reflect:!0})],OverlayTrigger.prototype,"disabled",2),n([s({attribute:"receives-focus"})],OverlayTrigger.prototype,"receivesFocus",2),n([c()],OverlayTrigger.prototype,"clickContent",2),n([c()],OverlayTrigger.prototype,"longpressContent",2),n([c()],OverlayTrigger.prototype,"hoverContent",2),n([c()],OverlayTrigger.prototype,"targetContent",2),n([h("#click-overlay",!0)],OverlayTrigger.prototype,"clickOverlayElement",2),n([h("#longpress-overlay",!0)],OverlayTrigger.prototype,"longpressOverlayElement",2),n([h("#hover-overlay",!0)],OverlayTrigger.prototype,"hoverOverlayElement",2);
55
+ ${[this.renderClickOverlay(),this.renderHoverOverlay(),this.renderLongpressOverlay()]}
56
+ `}updated(e){if(super.updated(e),this.disabled&&e.has("disabled")){this.open=void 0;return}}async getUpdateComplete(){return await super.getUpdateComplete()}}n([o({attribute:"triggered-by"})],OverlayTrigger.prototype,"triggeredBy",2),n([o({reflect:!0})],OverlayTrigger.prototype,"placement",2),n([o()],OverlayTrigger.prototype,"type",2),n([o({type:Number})],OverlayTrigger.prototype,"offset",2),n([o({reflect:!0})],OverlayTrigger.prototype,"open",2),n([o({type:Boolean,reflect:!0})],OverlayTrigger.prototype,"disabled",2),n([o({attribute:"receives-focus"})],OverlayTrigger.prototype,"receivesFocus",2),n([c()],OverlayTrigger.prototype,"clickContent",2),n([c()],OverlayTrigger.prototype,"longpressContent",2),n([c()],OverlayTrigger.prototype,"hoverContent",2),n([c()],OverlayTrigger.prototype,"targetContent",2),n([h("#click-overlay",!0)],OverlayTrigger.prototype,"clickOverlayElement",2),n([h("#longpress-overlay",!0)],OverlayTrigger.prototype,"longpressOverlayElement",2),n([h("#hover-overlay",!0)],OverlayTrigger.prototype,"hoverOverlayElement",2);
57
57
  //# sourceMappingURL=OverlayTrigger.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["OverlayTrigger.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*/\n\nimport {\n CSSResultArray,\n html,\n PropertyValues,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport {\n property,\n query,\n state,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport type { Placement } from '@floating-ui/dom';\n\nimport type { BeforetoggleOpenEvent } from './events.js';\nimport type { Overlay } from './Overlay.js';\nimport type { OverlayTriggerInteractions } from './overlay-types';\n\nimport overlayTriggerStyles from './overlay-trigger.css.js';\n\nexport type OverlayContentTypes = 'click' | 'hover' | 'longpress';\n\n/**\n * @element overlay-trigger\n *\n * @slot trigger - The content that will trigger the various overlays\n * @slot hover-content - The content that will be displayed on hover\n * @slot click-content - The content that will be displayed on click\n * @slot longpress-content - The content that will be displayed on click\n *\n * @fires sp-opened - Announces that the overlay has been opened\n * @fires sp-closed - Announces that the overlay has been closed\n */\nexport class OverlayTrigger extends SpectrumElement {\n public static override get styles(): CSSResultArray {\n return [overlayTriggerStyles];\n }\n\n @property()\n content = 'click hover longpress';\n\n /**\n * @type {\"top\" | \"top-start\" | \"top-end\" | \"right\" | \"right-start\" | \"right-end\" | \"bottom\" | \"bottom-start\" | \"bottom-end\" | \"left\" | \"left-start\" | \"left-end\"}\n * @attr\n */\n @property({ reflect: true })\n public placement?: Placement;\n\n @property()\n public type?: OverlayTriggerInteractions;\n\n @property({ type: Number })\n public offset = 6;\n\n @property({ reflect: true })\n public open?: OverlayContentTypes;\n\n @property({ type: Boolean, reflect: true })\n public disabled = false;\n\n @property({ attribute: 'receives-focus' })\n public receivesFocus: 'true' | 'false' | 'auto' = 'auto';\n\n @state()\n private clickContent: HTMLElement[] = [];\n\n private clickPlacement?: Placement;\n\n @state()\n private longpressContent: HTMLElement[] = [];\n\n private longpressPlacement?: Placement;\n\n @state()\n private hoverContent: HTMLElement[] = [];\n\n private hoverPlacement?: Placement;\n\n @state()\n private targetContent: HTMLElement[] = [];\n\n @query('#click-overlay', true)\n clickOverlayElement!: Overlay;\n\n @query('#longpress-overlay', true)\n longpressOverlayElement!: Overlay;\n\n @query('#hover-overlay', true)\n hoverOverlayElement!: Overlay;\n\n private getAssignedElementsFromSlot(slot: HTMLSlotElement): HTMLElement[] {\n return slot.assignedElements({ flatten: true }) as HTMLElement[];\n }\n\n private handleTriggerContent(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.targetContent = this.getAssignedElementsFromSlot(event.target);\n }\n\n private handleSlotContent(\n event: Event & { target: HTMLSlotElement }\n ): void {\n switch (event.target.name) {\n case 'click-content':\n this.clickContent = this.getAssignedElementsFromSlot(\n event.target\n );\n break;\n case 'longpress-content':\n this.longpressContent = this.getAssignedElementsFromSlot(\n event.target\n );\n break;\n case 'hover-content':\n this.hoverContent = this.getAssignedElementsFromSlot(\n event.target\n );\n break;\n }\n }\n\n private handleBeforetoggle(event: BeforetoggleOpenEvent): void {\n const { target } = event;\n let type: OverlayContentTypes;\n if (target === this.clickOverlayElement) {\n type = 'click';\n } else if (target === this.longpressOverlayElement) {\n type = 'longpress';\n } else if (target === this.hoverOverlayElement) {\n type = 'hover';\n /* c8 ignore next 3 */\n } else {\n return;\n }\n if (event.newState === 'open') {\n this.open = type;\n } else if (this.open === type) {\n this.open = undefined;\n }\n }\n\n protected override update(changes: PropertyValues): void {\n if (changes.has('clickContent')) {\n this.clickPlacement =\n ((this.clickContent[0]?.getAttribute('placement') ||\n this.clickContent[0]?.getAttribute(\n 'direction'\n )) as Placement) || undefined;\n }\n if (changes.has('hoverContent')) {\n this.hoverPlacement =\n ((this.hoverContent[0]?.getAttribute('placement') ||\n this.hoverContent[0]?.getAttribute(\n 'direction'\n )) as Placement) || undefined;\n }\n if (changes.has('longpressContent')) {\n this.longpressPlacement =\n ((this.longpressContent[0]?.getAttribute('placement') ||\n this.longpressContent[0]?.getAttribute(\n 'direction'\n )) as Placement) || undefined;\n }\n super.update(changes);\n }\n\n protected renderSlot(name: string): TemplateResult {\n return html`\n <slot name=${name} @slotchange=${this.handleSlotContent}></slot>\n `;\n }\n\n protected renderClickOverlay(): TemplateResult {\n import('@spectrum-web-components/overlay/sp-overlay.js');\n const slot = this.renderSlot('click-content');\n if (!this.clickContent.length) {\n return slot;\n }\n return html`\n <sp-overlay\n id=\"click-overlay\"\n ?disabled=${this.disabled || !this.clickContent.length}\n ?open=${this.open === 'click' && !!this.clickContent.length}\n .offset=${this.offset}\n .placement=${this.clickPlacement || this.placement}\n .triggerElement=${this.targetContent[0]}\n .triggerInteraction=${'click'}\n .type=${this.type !== 'modal' ? 'auto' : 'modal'}\n @beforetoggle=${this.handleBeforetoggle}\n .receivesFocus=${this.receivesFocus}\n >\n ${slot}\n </sp-overlay>\n `;\n }\n\n protected renderHoverOverlay(): TemplateResult {\n import('@spectrum-web-components/overlay/sp-overlay.js');\n const slot = this.renderSlot('hover-content');\n if (!this.hoverContent.length) {\n return slot;\n }\n return html`\n <sp-overlay\n id=\"hover-overlay\"\n ?open=${this.open === 'hover' && !!this.hoverContent.length}\n ?disabled=${this.disabled ||\n !this.hoverContent.length ||\n (!!this.open && this.open !== 'hover')}\n .offset=${this.offset}\n .placement=${this.hoverPlacement || this.placement}\n .triggerElement=${this.targetContent[0]}\n .triggerInteraction=${'hover'}\n .type=${'hint'}\n @beforetoggle=${this.handleBeforetoggle}\n .receivesFocus=${this.receivesFocus}\n >\n ${slot}\n </sp-overlay>\n `;\n }\n\n protected renderLongpressOverlay(): TemplateResult {\n import('@spectrum-web-components/overlay/sp-overlay.js');\n const slot = this.renderSlot('longpress-content');\n if (!this.longpressContent.length) {\n return slot;\n }\n return html`\n <sp-overlay\n id=\"longpress-overlay\"\n ?disabled=${this.disabled || !this.longpressContent.length}\n ?open=${this.open === 'longpress' &&\n !!this.longpressContent.length}\n .offset=${this.offset}\n .placement=${this.longpressPlacement || this.placement}\n .triggerElement=${this.targetContent[0]}\n .triggerInteraction=${'longpress'}\n .type=${'auto'}\n @beforetoggle=${this.handleBeforetoggle}\n .receivesFocus=${this.receivesFocus}\n >\n ${slot}\n </sp-overlay>\n <slot name=\"longpress-describedby-descriptor\"></slot>\n `;\n }\n\n protected override render(): TemplateResult {\n const content = this.content.split(' ');\n // Keyboard event availability documented in README.md\n /* eslint-disable lit-a11y/click-events-have-key-events */\n return html`\n <slot\n id=\"trigger\"\n name=\"trigger\"\n @slotchange=${this.handleTriggerContent}\n ></slot>\n ${[\n content.includes('click') ? this.renderClickOverlay() : html``,\n content.includes('hover') ? this.renderHoverOverlay() : html``,\n content.includes('longpress')\n ? this.renderLongpressOverlay()\n : html``,\n ]}\n `;\n /* eslint-enable lit-a11y/click-events-have-key-events */\n }\n\n protected override updated(changes: PropertyValues): void {\n super.updated(changes);\n if (this.disabled && changes.has('disabled')) {\n this.open = undefined;\n return;\n }\n }\n\n protected override async getUpdateComplete(): Promise<boolean> {\n const complete = (await super.getUpdateComplete()) as boolean;\n return complete;\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["html", "SpectrumElement", "property", "query", "state", "overlayTriggerStyles", "slot", "event", "target", "type", "changes", "_a", "_b", "_c", "_d", "_e", "_f", "name", "content", "__decorateClass"]
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*/\n\nimport {\n CSSResultArray,\n html,\n PropertyValues,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport {\n property,\n query,\n state,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport type { Placement } from '@floating-ui/dom';\n\nimport type { BeforetoggleOpenEvent } from './events.js';\nimport type { Overlay } from './Overlay.js';\nimport type { OverlayTriggerInteractions } from './overlay-types';\nimport '@spectrum-web-components/overlay/sp-overlay.js';\n\nimport overlayTriggerStyles from './overlay-trigger.css.js';\n\nexport type OverlayContentTypes = 'click' | 'hover' | 'longpress';\n\n// Helper type to create all unique combinations of OverlayContentTypes\ntype Combinations<T extends string, U extends string = T> = T extends string\n ? T | `${T} ${Combinations<Exclude<U, T>>}`\n : never;\n\nexport type TriggeredByType = Combinations<OverlayContentTypes>;\n\n/**\n * @element overlay-trigger\n *\n * A component that manages overlay content triggered by different interactions.\n * Supports click, hover, and longpress triggered overlays with configurable\n * placement and behavior.\n *\n * @slot trigger - The content that will trigger the various overlays\n * @slot hover-content - The content that will be displayed on hover\n * @slot click-content - The content that will be displayed on click\n * @slot longpress-content - The content that will be displayed on longpress\n * @slot longpress-describedby-descriptor - Description for longpress content\n *\n * @fires sp-opened - Announces that the overlay has been opened\n * @fires sp-closed - Announces that the overlay has been closed\n *\n * @attr {string} placement - The placement of the overlay relative to the trigger\n * @attr {number} offset - The distance between the overlay and the trigger\n * @attr {boolean} disabled - Whether the overlay trigger is disabled\n * @attr {string} receives-focus - How focus should be handled ('true'|'false'|'auto')\n */\nexport class OverlayTrigger extends SpectrumElement {\n public static override get styles(): CSSResultArray {\n return [overlayTriggerStyles];\n }\n\n /**\n * Optional property to optimize performance and prevent race conditions.\n *\n * By explicitly declaring which content types are used (e.g. \"click\", \"longpress hover\"),\n * we can avoid:\n * 1. Extra renders from unnecessary slot reparenting\n * 2. Potential infinite render loops during content detection\n * 3. Race conditions during slot assignment\n *\n * By only returning overlay wrappers for explicitly declared content types,\n * we minimize unecessary DOM nodes, operations and ensure a more stable rendering behavior.\n */\n @property({ attribute: 'triggered-by' })\n public triggeredBy?: TriggeredByType;\n\n /**\n * @type {\"top\" | \"top-start\" | \"top-end\" | \"right\" | \"right-start\" | \"right-end\" | \"bottom\" | \"bottom-start\" | \"bottom-end\" | \"left\" | \"left-start\" | \"left-end\"}\n * @attr\n */\n @property({ reflect: true })\n public placement?: Placement;\n\n @property()\n public type?: OverlayTriggerInteractions;\n\n @property({ type: Number })\n public offset = 6;\n\n @property({ reflect: true })\n public open?: OverlayContentTypes;\n\n @property({ type: Boolean, reflect: true })\n public disabled = false;\n\n @property({ attribute: 'receives-focus' })\n public receivesFocus: 'true' | 'false' | 'auto' = 'auto';\n\n @state()\n private clickContent: HTMLElement[] = [];\n\n private clickPlacement?: Placement;\n\n @state()\n private longpressContent: HTMLElement[] = [];\n\n private longpressPlacement?: Placement;\n\n @state()\n private hoverContent: HTMLElement[] = [];\n\n private hoverPlacement?: Placement;\n\n @state()\n private targetContent: HTMLElement[] = [];\n\n @query('#click-overlay', true)\n clickOverlayElement!: Overlay;\n\n @query('#longpress-overlay', true)\n longpressOverlayElement!: Overlay;\n\n @query('#hover-overlay', true)\n hoverOverlayElement!: Overlay;\n\n private getAssignedElementsFromSlot(slot: HTMLSlotElement): HTMLElement[] {\n return slot.assignedElements({ flatten: true }) as HTMLElement[];\n }\n\n private handleTriggerContent(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.targetContent = this.getAssignedElementsFromSlot(event.target);\n }\n\n private handleSlotContent(\n event: Event & { target: HTMLSlotElement }\n ): void {\n switch (event.target.name) {\n case 'click-content':\n this.clickContent = this.getAssignedElementsFromSlot(\n event.target\n );\n break;\n case 'longpress-content':\n this.longpressContent = this.getAssignedElementsFromSlot(\n event.target\n );\n break;\n case 'hover-content':\n this.hoverContent = this.getAssignedElementsFromSlot(\n event.target\n );\n break;\n }\n }\n\n private handleBeforetoggle(event: BeforetoggleOpenEvent): void {\n const { target } = event;\n let type: OverlayContentTypes;\n if (target === this.clickOverlayElement) {\n type = 'click';\n } else if (target === this.longpressOverlayElement) {\n type = 'longpress';\n } else if (target === this.hoverOverlayElement) {\n type = 'hover';\n /* c8 ignore next 3 */\n } else {\n return;\n }\n if (event.newState === 'open') {\n this.open = type;\n } else if (this.open === type) {\n this.open = undefined;\n }\n }\n\n protected override update(changes: PropertyValues): void {\n if (changes.has('clickContent')) {\n this.clickPlacement =\n ((this.clickContent[0]?.getAttribute('placement') ||\n this.clickContent[0]?.getAttribute(\n 'direction'\n )) as Placement) || undefined;\n }\n if (changes.has('hoverContent')) {\n this.hoverPlacement =\n ((this.hoverContent[0]?.getAttribute('placement') ||\n this.hoverContent[0]?.getAttribute(\n 'direction'\n )) as Placement) || undefined;\n }\n if (changes.has('longpressContent')) {\n this.longpressPlacement =\n ((this.longpressContent[0]?.getAttribute('placement') ||\n this.longpressContent[0]?.getAttribute(\n 'direction'\n )) as Placement) || undefined;\n }\n super.update(changes);\n }\n\n protected renderSlot(name: string): TemplateResult {\n return html`\n <slot name=${name} @slotchange=${this.handleSlotContent}></slot>\n `;\n }\n\n protected renderClickOverlay(): TemplateResult {\n const slot = this.renderSlot('click-content');\n const clickOverlay = html`\n <sp-overlay\n id=\"click-overlay\"\n ?disabled=${this.disabled || !this.clickContent.length}\n ?open=${this.open === 'click' && !!this.clickContent.length}\n .offset=${this.offset}\n .placement=${this.clickPlacement || this.placement}\n .triggerElement=${this.targetContent[0]}\n .triggerInteraction=${'click'}\n .type=${this.type !== 'modal' ? 'auto' : 'modal'}\n @beforetoggle=${this.handleBeforetoggle}\n .receivesFocus=${this.receivesFocus}\n >\n ${slot}\n </sp-overlay>\n `;\n\n // If click interactions are explicitly enabled by customers, always return the overlay\n if (this.triggeredBy?.includes('click')) {\n return clickOverlay;\n }\n\n if (!this.clickContent.length) {\n return slot;\n } else {\n return clickOverlay;\n }\n }\n\n protected renderHoverOverlay(): TemplateResult {\n const slot = this.renderSlot('hover-content');\n const hoverOverlay = html`\n <sp-overlay\n id=\"hover-overlay\"\n ?open=${this.open === 'hover' && !!this.hoverContent.length}\n ?disabled=${this.disabled ||\n !this.hoverContent.length ||\n (!!this.open && this.open !== 'hover')}\n .offset=${this.offset}\n .placement=${this.hoverPlacement || this.placement}\n .triggerElement=${this.targetContent[0]}\n .triggerInteraction=${'hover'}\n .type=${'hint'}\n @beforetoggle=${this.handleBeforetoggle}\n .receivesFocus=${this.receivesFocus}\n >\n ${slot}\n </sp-overlay>\n `;\n\n // If hover interactions are explicitly enabled by customers, always return the overlay\n if (this.triggeredBy?.includes('hover')) {\n return hoverOverlay;\n }\n\n if (!this.hoverContent.length) {\n return slot;\n } else {\n return hoverOverlay;\n }\n }\n\n protected renderLongpressOverlay(): TemplateResult {\n const slot = this.renderSlot('longpress-content');\n const longpressOverlay = html`\n <sp-overlay\n id=\"longpress-overlay\"\n ?disabled=${this.disabled || !this.longpressContent.length}\n ?open=${this.open === 'longpress' &&\n !!this.longpressContent.length}\n .offset=${this.offset}\n .placement=${this.longpressPlacement || this.placement}\n .triggerElement=${this.targetContent[0]}\n .triggerInteraction=${'longpress'}\n .type=${'auto'}\n @beforetoggle=${this.handleBeforetoggle}\n .receivesFocus=${this.receivesFocus}\n >\n ${slot}\n </sp-overlay>\n <slot name=\"longpress-describedby-descriptor\"></slot>\n `;\n\n // If click interactions are explicitly enabled by customers, always return the overlay\n if (this.triggeredBy?.includes('longpress')) {\n return longpressOverlay;\n }\n\n if (!this.longpressContent.length) {\n return slot;\n } else {\n return longpressOverlay;\n }\n }\n\n protected override render(): TemplateResult {\n // Keyboard event availability documented in README.md\n return html`\n <slot\n id=\"trigger\"\n name=\"trigger\"\n @slotchange=${this.handleTriggerContent}\n ></slot>\n ${[\n this.renderClickOverlay(),\n this.renderHoverOverlay(),\n this.renderLongpressOverlay(),\n ]}\n `;\n }\n\n protected override updated(changedProperties: PropertyValues): void {\n super.updated(changedProperties);\n\n if (window.__swc?.DEBUG && !this.triggeredBy) {\n const issues = [\n 'You have not specified the `triggeredBy` property. For optimal performance, consider explicitly declaring which overlay types you plan to use.',\n 'Example: triggered-by=\"click hover\"',\n 'This helps avoid unnecessary DOM operations and potential race conditions.',\n ];\n\n window.__swc.warn(\n this,\n 'Performance optimization available for <overlay-trigger>:',\n 'https://opensource.adobe.com/spectrum-web-components/components/overlay-trigger/#performance-optimization',\n { issues }\n );\n }\n\n if (this.disabled && changedProperties.has('disabled')) {\n this.open = undefined;\n return;\n }\n }\n\n protected override async getUpdateComplete(): Promise<boolean> {\n const complete = (await super.getUpdateComplete()) as boolean;\n return complete;\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["html", "SpectrumElement", "property", "query", "state", "overlayTriggerStyles", "slot", "event", "target", "type", "changes", "_a", "_b", "_c", "_d", "_e", "_f", "name", "clickOverlay", "hoverOverlay", "longpressOverlay", "changedProperties", "__decorateClass"]
7
7
  }