@spectrum-web-components/overlay 0.18.10 → 0.18.11-overlay-warning.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spectrum-web-components/overlay",
3
- "version": "0.18.10",
3
+ "version": "0.18.11-overlay-warning.19+0c0cf0e30",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -103,10 +103,10 @@
103
103
  ],
104
104
  "dependencies": {
105
105
  "@floating-ui/dom": "^1.0.4",
106
- "@spectrum-web-components/action-button": "^0.10.9",
107
- "@spectrum-web-components/base": "^0.7.3",
108
- "@spectrum-web-components/shared": "^0.15.4",
109
- "@spectrum-web-components/theme": "^0.14.9"
106
+ "@spectrum-web-components/action-button": "^0.10.10-overlay-warning.19+0c0cf0e30",
107
+ "@spectrum-web-components/base": "^0.7.4-overlay-warning.19+0c0cf0e30",
108
+ "@spectrum-web-components/shared": "^0.15.5-overlay-warning.19+0c0cf0e30",
109
+ "@spectrum-web-components/theme": "^0.14.10-overlay-warning.19+0c0cf0e30"
110
110
  },
111
111
  "types": "./src/index.d.ts",
112
112
  "customElements": "custom-elements.json",
@@ -117,5 +117,5 @@
117
117
  "./stories/overlay-story-components.js",
118
118
  "./**/*.dev.js"
119
119
  ],
120
- "gitHead": "02534b6685ff89a21dba86c09b2169f5b30a46f2"
120
+ "gitHead": "0c0cf0e307adb5e67526edb57de4f51ddfedefe1"
121
121
  }
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["ActiveOverlay.ts"],
4
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 SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport { ifDefined } from '@spectrum-web-components/base/src/directives.js';\nimport { property } from '@spectrum-web-components/base/src/decorators.js';\nimport { reparentChildren } from '@spectrum-web-components/shared/src/reparent-children.js';\nimport { firstFocusableIn } from '@spectrum-web-components/shared/src/first-focusable-in.js';\nimport type {\n Color,\n Scale,\n ThemeVariant,\n} from '@spectrum-web-components/theme/src/Theme.js';\nimport styles from './active-overlay.css.js';\nimport { parentOverlayOf } from './overlay-utils.dev.js'\nimport {\n OverlayOpenCloseDetail,\n OverlayOpenDetail,\n Placement,\n TriggerInteractions,\n} from './overlay-types.dev.js'\nimport type { VirtualTrigger } from './VirtualTrigger.dev.js'\nimport {\n arrow,\n autoUpdate,\n computePosition,\n flip,\n Placement as FloatingUIPlacement,\n offset,\n shift,\n size,\n} from '@floating-ui/dom';\n\nexport interface PositionResult {\n arrowOffsetLeft: number;\n arrowOffsetTop: number;\n maxHeight: number;\n placement: string;\n positionLeft: number;\n positionTop: number;\n}\n\ntype OverlayStateType = 'idle' | 'active' | 'hiding' | 'dispose' | 'disposed';\ntype ContentAnimation = 'sp-overlay-fade-in' | 'sp-overlay-fade-out';\n\nconst stateMachine: {\n initial: OverlayStateType;\n states: {\n [stateName: string]: {\n on: {\n [transitionName: string]: OverlayStateType;\n };\n };\n };\n} = {\n initial: 'idle',\n states: {\n idle: {\n on: {\n active: 'active',\n },\n },\n active: {\n on: {\n hiding: 'hiding',\n idle: 'idle',\n },\n },\n hiding: {\n on: {\n dispose: 'dispose',\n },\n },\n dispose: {\n on: {\n disposed: 'disposed',\n },\n },\n disposed: {\n on: {},\n },\n },\n};\n\nconst stateTransition = (\n state?: OverlayStateType,\n event?: string\n): OverlayStateType => {\n if (!state) return stateMachine.initial;\n /* c8 ignore next */\n if (!event) return state;\n return stateMachine.states[state].on[event] || state;\n};\n\nconst getFallbackPlacements = (\n placement: FloatingUIPlacement\n): FloatingUIPlacement[] => {\n const fallbacks: Record<FloatingUIPlacement, FloatingUIPlacement[]> = {\n left: ['right', 'bottom', 'top'],\n 'left-start': ['right-start', 'bottom', 'top'],\n 'left-end': ['right-end', 'bottom', 'top'],\n right: ['left', 'bottom', 'top'],\n 'right-start': ['left-start', 'bottom', 'top'],\n 'right-end': ['left-end', 'bottom', 'top'],\n top: ['bottom', 'left', 'right'],\n 'top-start': ['bottom-start', 'left', 'right'],\n 'top-end': ['bottom-end', 'left', 'right'],\n bottom: ['top', 'left', 'right'],\n 'bottom-start': ['top-start', 'left', 'right'],\n 'bottom-end': ['top-end', 'left', 'right'],\n };\n return fallbacks[placement] ?? [placement];\n};\n\n/**\n * @element active-overlay\n *\n * @slot - content to display in the overlay\n */\nexport class ActiveOverlay extends SpectrumElement {\n public overlayContent!: HTMLElement;\n public overlayContentTip?: HTMLElement;\n public trigger!: HTMLElement;\n public root?: HTMLElement;\n public virtualTrigger?: VirtualTrigger;\n private cleanup?: () => void;\n\n protected contentAnimationPromise: Promise<boolean> = Promise.resolve(true);\n protected resolveContentAnimationPromise = (): void => {\n return;\n };\n\n @property()\n public _state = stateTransition();\n public get state(): OverlayStateType {\n return this._state;\n }\n public set state(state: OverlayStateType) {\n const nextState = stateTransition(this.state, state);\n if (nextState === this.state) {\n return;\n }\n this._state = nextState;\n if (this.state === 'active' || this.state === 'hiding') {\n this.setAttribute('state', this.state);\n } else {\n this.removeAttribute('state');\n }\n }\n\n @property({ reflect: true, type: Boolean })\n public animating = false;\n\n @property({ reflect: true })\n public placement?: Placement;\n @property({ attribute: false })\n public theme: {\n color?: Color;\n scale?: Scale;\n lang?: string;\n theme?: ThemeVariant;\n } = {};\n @property({ attribute: false })\n public receivesFocus?: 'auto';\n\n public tabbingAway = false;\n private originalPlacement?: Placement;\n private restoreContent?: () => Element[];\n\n public override async focus(): Promise<void> {\n const firstFocusable = firstFocusableIn(this);\n if (firstFocusable) {\n if ((firstFocusable as SpectrumElement).updateComplete) {\n await firstFocusable.updateComplete;\n }\n const activeElement = (this.getRootNode() as Document)\n .activeElement;\n if (activeElement === this || !this.contains(activeElement)) {\n firstFocusable.focus();\n }\n /* c8 ignore next 3 */\n } else {\n super.focus();\n }\n this.removeAttribute('tabindex');\n }\n\n private get hasTheme(): boolean {\n return !!this.theme.color || !!this.theme.scale || !!this.theme.lang;\n }\n\n public offset = 6;\n public skidding = 0;\n public interaction: TriggerInteractions = 'hover';\n private positionAnimationFrame = 0;\n\n private timeout?: number;\n\n public static override get styles(): CSSResultArray {\n return [styles];\n }\n\n public constructor() {\n super();\n this.stealOverlayContentPromise = new Promise(\n (res) => (this.stealOverlayContentResolver = res)\n );\n }\n\n private _modalRoot?: ActiveOverlay;\n\n public get hasModalRoot(): boolean {\n return !!this._modalRoot;\n }\n\n public feature(): void {\n // eslint-disable-next-line @spectrum-web-components/document-active-element\n if (!this.contains(document.activeElement)) {\n this.tabIndex = -1;\n }\n const parentOverlay = parentOverlayOf(this.trigger);\n const parentIsModal = parentOverlay && parentOverlay.slot === 'open';\n if (parentIsModal) {\n this._modalRoot = parentOverlay._modalRoot || parentOverlay;\n }\n // If an overlay it triggered from within a \"modal\" overlay, it needs to continue\n // to act like one to get treated correctly in regards to tab trapping.\n if (this.interaction === 'modal' || this._modalRoot) {\n this.slot = 'open';\n if (this.interaction === 'modal') {\n this.setAttribute('aria-modal', 'true');\n }\n // If this isn't a modal root, walk up the overlays to the next modal root\n // and \"feature\" each on of the intervening overlays.\n if (this._modalRoot) {\n parentOverlay?.feature();\n }\n }\n }\n\n public obscure(\n nextOverlayInteraction: TriggerInteractions\n ): ActiveOverlay | undefined {\n if (this.slot && nextOverlayInteraction === 'modal') {\n this.removeAttribute('slot');\n this.removeAttribute('aria-modal');\n // Obscure upto and including the next modal root.\n if (this.interaction !== 'modal') {\n const parentOverlay = parentOverlayOf(this.trigger);\n this._modalRoot = parentOverlay?.obscure(\n nextOverlayInteraction\n );\n return this._modalRoot;\n }\n return this;\n }\n return undefined;\n }\n\n public override async willUpdate(): Promise<void> {\n if (this.hasUpdated) return;\n\n /* c8 ignore next */\n if (!this.overlayContent || !this.trigger) return;\n\n this.stealOverlayContent(\n this.overlayContent as HTMLElement & { placement: Placement }\n );\n\n this.state = 'active';\n\n this.feature();\n if (this.placement && this.placement !== 'none') {\n await this.updateOverlayPosition();\n document.addEventListener(\n 'sp-update-overlays',\n this.setOverlayPosition\n );\n }\n if (this.placement && this.placement !== 'none') {\n this.contentAnimationPromise =\n this.applyContentAnimation('sp-overlay-fade-in');\n }\n }\n\n public async openCallback(\n lifecycleCallback: () => Promise<void> | void\n ): Promise<void> {\n await this.updateComplete;\n if (this.receivesFocus) {\n await this.focus();\n }\n\n await lifecycleCallback();\n\n this.trigger.dispatchEvent(\n new CustomEvent<OverlayOpenCloseDetail>('sp-opened', {\n bubbles: true,\n composed: true,\n cancelable: true,\n detail: {\n interaction: this.interaction,\n },\n })\n );\n }\n\n private open(openDetail: OverlayOpenDetail): void {\n this.extractDetail(openDetail);\n }\n\n private extractDetail(detail: OverlayOpenDetail): void {\n this.overlayContent = detail.content;\n this.overlayContentTip = detail.contentTip;\n this.trigger = detail.trigger;\n this.virtualTrigger = detail.virtualTrigger;\n this.placement = detail.placement;\n this.offset = detail.offset;\n this.skidding = detail.skidding || 0;\n this.interaction = detail.interaction;\n this.theme = detail.theme;\n this.receivesFocus = detail.receivesFocus;\n this.root = detail.root;\n }\n\n public dispose(): void {\n /* c8 ignore next */\n if (this.state !== 'dispose') return;\n\n /* c8 ignore next 4 */\n if (this.timeout) {\n clearTimeout(this.timeout);\n delete this.timeout;\n }\n\n this.trigger.removeEventListener(\n 'keydown',\n this.handleInlineTriggerKeydown\n );\n\n this.returnOverlayContent();\n this.state = 'disposed';\n\n if (this.willNotifyClosed) {\n this.overlayContent.dispatchEvent(new Event('sp-overlay-closed'));\n this.willNotifyClosed = false;\n }\n\n if (this.cleanup) {\n this.cleanup();\n }\n }\n\n private stealOverlayContent(\n element: HTMLElement & { placement: Placement }\n ): void {\n this.originalPlacement = element.getAttribute('placement') as Placement;\n this.restoreContent = reparentChildren([element], this, {\n position: 'beforeend',\n prepareCallback: (el) => {\n const slotName = el.slot;\n const placement = el.placement;\n el.removeAttribute('slot');\n return (el) => {\n el.slot = slotName;\n el.placement = placement;\n };\n },\n });\n this.stealOverlayContentResolver();\n }\n\n private willNotifyClosed = false;\n\n private returnOverlayContent(): void {\n /* c8 ignore next */\n if (!this.restoreContent) return;\n\n const [element] = this.restoreContent();\n this.restoreContent = undefined;\n this.willNotifyClosed = true;\n\n if (this.originalPlacement) {\n element.setAttribute('placement', this.originalPlacement);\n delete this.originalPlacement;\n }\n }\n\n private initialHeight!: number;\n private isConstrained = false;\n\n public async placeOverlay(): Promise<void> {\n if (!this.placement || this.placement === 'none') {\n return;\n }\n\n this.cleanup = autoUpdate(\n this.virtualTrigger || this.trigger,\n this,\n this.updateOverlayPosition,\n {\n elementResize: false,\n }\n );\n }\n\n public updateOverlayPosition = (): void => {\n if (this.interaction !== 'modal' && this.cleanup) {\n this.dispatchEvent(new Event('close'));\n return;\n }\n this.setOverlayPosition();\n };\n\n public setOverlayPosition = async (): Promise<void> => {\n if (!this.placement || this.placement === 'none') {\n return;\n }\n await (document.fonts ? document.fonts.ready : Promise.resolve());\n\n function roundByDPR(num: number): number {\n const dpr = window.devicePixelRatio || 1;\n return Math.round(num * dpr) / dpr || -10000;\n }\n\n // See: https://spectrum.adobe.com/page/popover/#Container-padding\n const REQUIRED_DISTANCE_TO_EDGE = 8;\n // See: https://github.com/adobe/spectrum-web-components/issues/910\n const MIN_OVERLAY_HEIGHT = 100;\n\n const flipMiddleware = this.virtualTrigger\n ? flip({\n padding: REQUIRED_DISTANCE_TO_EDGE,\n fallbackPlacements: getFallbackPlacements(this.placement),\n })\n : flip({\n padding: REQUIRED_DISTANCE_TO_EDGE,\n });\n\n const middleware = [\n offset({\n mainAxis: this.offset,\n crossAxis: this.skidding,\n }),\n shift({ padding: REQUIRED_DISTANCE_TO_EDGE }),\n flipMiddleware,\n size({\n padding: REQUIRED_DISTANCE_TO_EDGE,\n apply: ({\n availableWidth,\n availableHeight,\n rects: { floating },\n }) => {\n const maxHeight = Math.max(\n MIN_OVERLAY_HEIGHT,\n Math.floor(availableHeight)\n );\n const actualHeight = floating.height;\n this.initialHeight =\n !this.isConstrained && !this.virtualTrigger\n ? actualHeight\n : this.initialHeight || actualHeight;\n this.isConstrained =\n actualHeight < this.initialHeight ||\n maxHeight <= actualHeight;\n const appliedHeight = this.isConstrained\n ? `${maxHeight}px`\n : '';\n Object.assign(this.style, {\n maxWidth: `${Math.floor(availableWidth)}px`,\n maxHeight: appliedHeight,\n height: appliedHeight,\n });\n },\n }),\n ];\n if (this.overlayContentTip) {\n middleware.push(arrow({ element: this.overlayContentTip }));\n }\n const { x, y, placement, middlewareData } = await computePosition(\n this.virtualTrigger || this.trigger,\n this,\n {\n placement: this.placement,\n middleware,\n strategy: 'fixed',\n }\n );\n\n Object.assign(this.style, {\n top: '0px',\n left: '0px',\n transform: `translate(${roundByDPR(x)}px, ${roundByDPR(y)}px)`,\n });\n\n if (placement !== this.getAttribute('actual-placement')) {\n this.setAttribute('actual-placement', placement);\n this.overlayContent.setAttribute('placement', placement);\n }\n\n if (this.overlayContentTip && middlewareData.arrow) {\n const { x: arrowX, y: arrowY } = middlewareData.arrow;\n\n Object.assign(this.overlayContentTip.style, {\n left: arrowX != null ? `${roundByDPR(arrowX)}px` : '',\n top: arrowY != null ? `${roundByDPR(arrowY)}px` : '',\n right: '',\n bottom: '',\n });\n }\n };\n\n public async hide(animated = true): Promise<void> {\n if (this.state !== 'active') return;\n this.state = 'hiding';\n if (animated) {\n await this.applyContentAnimation('sp-overlay-fade-out');\n }\n this.state = 'dispose';\n }\n\n private schedulePositionUpdate(): void {\n // Edge needs a little time to update the DOM before computing the layout\n cancelAnimationFrame(this.positionAnimationFrame);\n this.positionAnimationFrame = requestAnimationFrame(() => {\n if (this.cleanup) {\n this.updateOverlayPosition();\n } else {\n this.placeOverlay();\n }\n });\n }\n\n private onSlotChange(): void {\n this.schedulePositionUpdate();\n }\n\n public handleInlineTriggerKeydown = (event: KeyboardEvent): void => {\n const { code, shiftKey } = event;\n /* c8 ignore next */\n if (code !== 'Tab') return;\n if (shiftKey) {\n this.tabbingAway = true;\n this.dispatchEvent(new Event('close'));\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n this.focus();\n };\n\n public applyContentAnimation(\n animation: ContentAnimation\n ): Promise<boolean> {\n if (this.placement === 'none') {\n return Promise.resolve(true);\n }\n this.resolveContentAnimationPromise();\n return new Promise((resolve): void => {\n this.resolveContentAnimationPromise = () => {\n resolve(false);\n };\n const contents = this.shadowRoot.querySelector(\n '#contents'\n ) as HTMLElement;\n const doneHandler = (event: AnimationEvent): void => {\n if (animation !== event.animationName) return;\n contents.removeEventListener('animationend', doneHandler);\n contents.removeEventListener('animationcancel', doneHandler);\n this.animating = false;\n resolve(event.type === 'animationcancel');\n };\n contents.addEventListener('animationend', doneHandler);\n contents.addEventListener('animationcancel', doneHandler);\n\n contents.style.animationName = animation;\n this.animating = true;\n });\n }\n\n public renderTheme(content: TemplateResult): TemplateResult {\n const { color, scale, lang, theme } = this.theme;\n return html`\n <sp-theme\n theme=${ifDefined(theme)}\n color=${ifDefined(color)}\n scale=${ifDefined(scale)}\n lang=${ifDefined(lang)}\n part=\"theme\"\n >\n ${content}\n </sp-theme>\n `;\n }\n\n public override render(): TemplateResult {\n const content = html`\n <div id=\"contents\">\n <slot @slotchange=${this.onSlotChange}></slot>\n </div>\n `;\n return this.hasTheme ? this.renderTheme(content) : content;\n }\n\n public static create(details: OverlayOpenDetail): ActiveOverlay {\n const overlay = new ActiveOverlay();\n\n if (details.content) {\n overlay.open(details);\n }\n\n return overlay;\n }\n\n private stealOverlayContentPromise = Promise.resolve();\n private stealOverlayContentResolver!: () => void;\n\n protected override async getUpdateComplete(): Promise<boolean> {\n const actions: Promise<unknown>[] = [\n super.getUpdateComplete(),\n this.stealOverlayContentPromise,\n ];\n actions.push(this.contentAnimationPromise);\n if (\n typeof (this.overlayContent as SpectrumElement).updateComplete !==\n 'undefined'\n ) {\n actions.push(\n (this.overlayContent as SpectrumElement).updateComplete\n );\n }\n const [complete] = await Promise.all(actions);\n return complete as boolean;\n }\n\n override disconnectedCallback(): void {\n document.removeEventListener(\n 'sp-update-overlays',\n this.setOverlayPosition\n );\n super.disconnectedCallback();\n }\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["el"]
7
7
  }
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["ActiveOverlay.ts"],
4
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 SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport { ifDefined } from '@spectrum-web-components/base/src/directives.js';\nimport { property } from '@spectrum-web-components/base/src/decorators.js';\nimport { reparentChildren } from '@spectrum-web-components/shared/src/reparent-children.js';\nimport { firstFocusableIn } from '@spectrum-web-components/shared/src/first-focusable-in.js';\nimport type {\n Color,\n Scale,\n ThemeVariant,\n} from '@spectrum-web-components/theme/src/Theme.js';\nimport styles from './active-overlay.css.js';\nimport { parentOverlayOf } from './overlay-utils.js';\nimport {\n OverlayOpenCloseDetail,\n OverlayOpenDetail,\n Placement,\n TriggerInteractions,\n} from './overlay-types.js';\nimport type { VirtualTrigger } from './VirtualTrigger.js';\nimport {\n arrow,\n autoUpdate,\n computePosition,\n flip,\n Placement as FloatingUIPlacement,\n offset,\n shift,\n size,\n} from '@floating-ui/dom';\n\nexport interface PositionResult {\n arrowOffsetLeft: number;\n arrowOffsetTop: number;\n maxHeight: number;\n placement: string;\n positionLeft: number;\n positionTop: number;\n}\n\ntype OverlayStateType = 'idle' | 'active' | 'hiding' | 'dispose' | 'disposed';\ntype ContentAnimation = 'sp-overlay-fade-in' | 'sp-overlay-fade-out';\n\nconst stateMachine: {\n initial: OverlayStateType;\n states: {\n [stateName: string]: {\n on: {\n [transitionName: string]: OverlayStateType;\n };\n };\n };\n} = {\n initial: 'idle',\n states: {\n idle: {\n on: {\n active: 'active',\n },\n },\n active: {\n on: {\n hiding: 'hiding',\n idle: 'idle',\n },\n },\n hiding: {\n on: {\n dispose: 'dispose',\n },\n },\n dispose: {\n on: {\n disposed: 'disposed',\n },\n },\n disposed: {\n on: {},\n },\n },\n};\n\nconst stateTransition = (\n state?: OverlayStateType,\n event?: string\n): OverlayStateType => {\n if (!state) return stateMachine.initial;\n /* c8 ignore next */\n if (!event) return state;\n return stateMachine.states[state].on[event] || state;\n};\n\nconst getFallbackPlacements = (\n placement: FloatingUIPlacement\n): FloatingUIPlacement[] => {\n const fallbacks: Record<FloatingUIPlacement, FloatingUIPlacement[]> = {\n left: ['right', 'bottom', 'top'],\n 'left-start': ['right-start', 'bottom', 'top'],\n 'left-end': ['right-end', 'bottom', 'top'],\n right: ['left', 'bottom', 'top'],\n 'right-start': ['left-start', 'bottom', 'top'],\n 'right-end': ['left-end', 'bottom', 'top'],\n top: ['bottom', 'left', 'right'],\n 'top-start': ['bottom-start', 'left', 'right'],\n 'top-end': ['bottom-end', 'left', 'right'],\n bottom: ['top', 'left', 'right'],\n 'bottom-start': ['top-start', 'left', 'right'],\n 'bottom-end': ['top-end', 'left', 'right'],\n };\n return fallbacks[placement] ?? [placement];\n};\n\n/**\n * @element active-overlay\n *\n * @slot - content to display in the overlay\n */\nexport class ActiveOverlay extends SpectrumElement {\n public overlayContent!: HTMLElement;\n public overlayContentTip?: HTMLElement;\n public trigger!: HTMLElement;\n public root?: HTMLElement;\n public virtualTrigger?: VirtualTrigger;\n private cleanup?: () => void;\n\n protected contentAnimationPromise: Promise<boolean> = Promise.resolve(true);\n protected resolveContentAnimationPromise = (): void => {\n return;\n };\n\n @property()\n public _state = stateTransition();\n public get state(): OverlayStateType {\n return this._state;\n }\n public set state(state: OverlayStateType) {\n const nextState = stateTransition(this.state, state);\n if (nextState === this.state) {\n return;\n }\n this._state = nextState;\n if (this.state === 'active' || this.state === 'hiding') {\n this.setAttribute('state', this.state);\n } else {\n this.removeAttribute('state');\n }\n }\n\n @property({ reflect: true, type: Boolean })\n public animating = false;\n\n @property({ reflect: true })\n public placement?: Placement;\n @property({ attribute: false })\n public theme: {\n color?: Color;\n scale?: Scale;\n lang?: string;\n theme?: ThemeVariant;\n } = {};\n @property({ attribute: false })\n public receivesFocus?: 'auto';\n\n public tabbingAway = false;\n private originalPlacement?: Placement;\n private restoreContent?: () => Element[];\n\n public override async focus(): Promise<void> {\n const firstFocusable = firstFocusableIn(this);\n if (firstFocusable) {\n if ((firstFocusable as SpectrumElement).updateComplete) {\n await firstFocusable.updateComplete;\n }\n const activeElement = (this.getRootNode() as Document)\n .activeElement;\n if (activeElement === this || !this.contains(activeElement)) {\n firstFocusable.focus();\n }\n /* c8 ignore next 3 */\n } else {\n super.focus();\n }\n this.removeAttribute('tabindex');\n }\n\n private get hasTheme(): boolean {\n return !!this.theme.color || !!this.theme.scale || !!this.theme.lang;\n }\n\n public offset = 6;\n public skidding = 0;\n public interaction: TriggerInteractions = 'hover';\n private positionAnimationFrame = 0;\n\n private timeout?: number;\n\n public static override get styles(): CSSResultArray {\n return [styles];\n }\n\n public constructor() {\n super();\n this.stealOverlayContentPromise = new Promise(\n (res) => (this.stealOverlayContentResolver = res)\n );\n }\n\n private _modalRoot?: ActiveOverlay;\n\n public get hasModalRoot(): boolean {\n return !!this._modalRoot;\n }\n\n public feature(): void {\n // eslint-disable-next-line @spectrum-web-components/document-active-element\n if (!this.contains(document.activeElement)) {\n this.tabIndex = -1;\n }\n const parentOverlay = parentOverlayOf(this.trigger);\n const parentIsModal = parentOverlay && parentOverlay.slot === 'open';\n if (parentIsModal) {\n this._modalRoot = parentOverlay._modalRoot || parentOverlay;\n }\n // If an overlay it triggered from within a \"modal\" overlay, it needs to continue\n // to act like one to get treated correctly in regards to tab trapping.\n if (this.interaction === 'modal' || this._modalRoot) {\n this.slot = 'open';\n if (this.interaction === 'modal') {\n this.setAttribute('aria-modal', 'true');\n }\n // If this isn't a modal root, walk up the overlays to the next modal root\n // and \"feature\" each on of the intervening overlays.\n if (this._modalRoot) {\n parentOverlay?.feature();\n }\n }\n }\n\n public obscure(\n nextOverlayInteraction: TriggerInteractions\n ): ActiveOverlay | undefined {\n if (this.slot && nextOverlayInteraction === 'modal') {\n this.removeAttribute('slot');\n this.removeAttribute('aria-modal');\n // Obscure upto and including the next modal root.\n if (this.interaction !== 'modal') {\n const parentOverlay = parentOverlayOf(this.trigger);\n this._modalRoot = parentOverlay?.obscure(\n nextOverlayInteraction\n );\n return this._modalRoot;\n }\n return this;\n }\n return undefined;\n }\n\n public override async willUpdate(): Promise<void> {\n if (this.hasUpdated) return;\n\n /* c8 ignore next */\n if (!this.overlayContent || !this.trigger) return;\n\n this.stealOverlayContent(\n this.overlayContent as HTMLElement & { placement: Placement }\n );\n\n this.state = 'active';\n\n this.feature();\n if (this.placement && this.placement !== 'none') {\n await this.updateOverlayPosition();\n document.addEventListener(\n 'sp-update-overlays',\n this.setOverlayPosition\n );\n }\n if (this.placement && this.placement !== 'none') {\n this.contentAnimationPromise =\n this.applyContentAnimation('sp-overlay-fade-in');\n }\n }\n\n public async openCallback(\n lifecycleCallback: () => Promise<void> | void\n ): Promise<void> {\n await this.updateComplete;\n if (this.receivesFocus) {\n await this.focus();\n }\n\n await lifecycleCallback();\n\n this.trigger.dispatchEvent(\n new CustomEvent<OverlayOpenCloseDetail>('sp-opened', {\n bubbles: true,\n composed: true,\n cancelable: true,\n detail: {\n interaction: this.interaction,\n },\n })\n );\n }\n\n private open(openDetail: OverlayOpenDetail): void {\n this.extractDetail(openDetail);\n }\n\n private extractDetail(detail: OverlayOpenDetail): void {\n this.overlayContent = detail.content;\n this.overlayContentTip = detail.contentTip;\n this.trigger = detail.trigger;\n this.virtualTrigger = detail.virtualTrigger;\n this.placement = detail.placement;\n this.offset = detail.offset;\n this.skidding = detail.skidding || 0;\n this.interaction = detail.interaction;\n this.theme = detail.theme;\n this.receivesFocus = detail.receivesFocus;\n this.root = detail.root;\n }\n\n public dispose(): void {\n /* c8 ignore next */\n if (this.state !== 'dispose') return;\n\n /* c8 ignore next 4 */\n if (this.timeout) {\n clearTimeout(this.timeout);\n delete this.timeout;\n }\n\n this.trigger.removeEventListener(\n 'keydown',\n this.handleInlineTriggerKeydown\n );\n\n this.returnOverlayContent();\n this.state = 'disposed';\n\n if (this.willNotifyClosed) {\n this.overlayContent.dispatchEvent(new Event('sp-overlay-closed'));\n this.willNotifyClosed = false;\n }\n\n if (this.cleanup) {\n this.cleanup();\n }\n }\n\n private stealOverlayContent(\n element: HTMLElement & { placement: Placement }\n ): void {\n this.originalPlacement = element.getAttribute('placement') as Placement;\n this.restoreContent = reparentChildren([element], this, {\n position: 'beforeend',\n prepareCallback: (el) => {\n const slotName = el.slot;\n const placement = el.placement;\n el.removeAttribute('slot');\n return (el) => {\n el.slot = slotName;\n el.placement = placement;\n };\n },\n });\n this.stealOverlayContentResolver();\n }\n\n private willNotifyClosed = false;\n\n private returnOverlayContent(): void {\n /* c8 ignore next */\n if (!this.restoreContent) return;\n\n const [element] = this.restoreContent();\n this.restoreContent = undefined;\n this.willNotifyClosed = true;\n\n if (this.originalPlacement) {\n element.setAttribute('placement', this.originalPlacement);\n delete this.originalPlacement;\n }\n }\n\n private initialHeight!: number;\n private isConstrained = false;\n\n public async placeOverlay(): Promise<void> {\n if (!this.placement || this.placement === 'none') {\n return;\n }\n\n this.cleanup = autoUpdate(\n this.virtualTrigger || this.trigger,\n this,\n this.updateOverlayPosition,\n {\n elementResize: false,\n }\n );\n }\n\n public updateOverlayPosition = (): void => {\n if (this.interaction !== 'modal' && this.cleanup) {\n this.dispatchEvent(new Event('close'));\n return;\n }\n this.setOverlayPosition();\n };\n\n public setOverlayPosition = async (): Promise<void> => {\n if (!this.placement || this.placement === 'none') {\n return;\n }\n await (document.fonts ? document.fonts.ready : Promise.resolve());\n\n function roundByDPR(num: number): number {\n const dpr = window.devicePixelRatio || 1;\n return Math.round(num * dpr) / dpr || -10000;\n }\n\n // See: https://spectrum.adobe.com/page/popover/#Container-padding\n const REQUIRED_DISTANCE_TO_EDGE = 8;\n // See: https://github.com/adobe/spectrum-web-components/issues/910\n const MIN_OVERLAY_HEIGHT = 100;\n\n const flipMiddleware = this.virtualTrigger\n ? flip({\n padding: REQUIRED_DISTANCE_TO_EDGE,\n fallbackPlacements: getFallbackPlacements(this.placement),\n })\n : flip({\n padding: REQUIRED_DISTANCE_TO_EDGE,\n });\n\n const middleware = [\n offset({\n mainAxis: this.offset,\n crossAxis: this.skidding,\n }),\n shift({ padding: REQUIRED_DISTANCE_TO_EDGE }),\n flipMiddleware,\n size({\n padding: REQUIRED_DISTANCE_TO_EDGE,\n apply: ({\n availableWidth,\n availableHeight,\n rects: { floating },\n }) => {\n const maxHeight = Math.max(\n MIN_OVERLAY_HEIGHT,\n Math.floor(availableHeight)\n );\n const actualHeight = floating.height;\n this.initialHeight =\n !this.isConstrained && !this.virtualTrigger\n ? actualHeight\n : this.initialHeight || actualHeight;\n this.isConstrained =\n actualHeight < this.initialHeight ||\n maxHeight <= actualHeight;\n const appliedHeight = this.isConstrained\n ? `${maxHeight}px`\n : '';\n Object.assign(this.style, {\n maxWidth: `${Math.floor(availableWidth)}px`,\n maxHeight: appliedHeight,\n height: appliedHeight,\n });\n },\n }),\n ];\n if (this.overlayContentTip) {\n middleware.push(arrow({ element: this.overlayContentTip }));\n }\n const { x, y, placement, middlewareData } = await computePosition(\n this.virtualTrigger || this.trigger,\n this,\n {\n placement: this.placement,\n middleware,\n strategy: 'fixed',\n }\n );\n\n Object.assign(this.style, {\n top: '0px',\n left: '0px',\n transform: `translate(${roundByDPR(x)}px, ${roundByDPR(y)}px)`,\n });\n\n if (placement !== this.getAttribute('actual-placement')) {\n this.setAttribute('actual-placement', placement);\n this.overlayContent.setAttribute('placement', placement);\n }\n\n if (this.overlayContentTip && middlewareData.arrow) {\n const { x: arrowX, y: arrowY } = middlewareData.arrow;\n\n Object.assign(this.overlayContentTip.style, {\n left: arrowX != null ? `${roundByDPR(arrowX)}px` : '',\n top: arrowY != null ? `${roundByDPR(arrowY)}px` : '',\n right: '',\n bottom: '',\n });\n }\n };\n\n public async hide(animated = true): Promise<void> {\n if (this.state !== 'active') return;\n this.state = 'hiding';\n if (animated) {\n await this.applyContentAnimation('sp-overlay-fade-out');\n }\n this.state = 'dispose';\n }\n\n private schedulePositionUpdate(): void {\n // Edge needs a little time to update the DOM before computing the layout\n cancelAnimationFrame(this.positionAnimationFrame);\n this.positionAnimationFrame = requestAnimationFrame(() => {\n if (this.cleanup) {\n this.updateOverlayPosition();\n } else {\n this.placeOverlay();\n }\n });\n }\n\n private onSlotChange(): void {\n this.schedulePositionUpdate();\n }\n\n public handleInlineTriggerKeydown = (event: KeyboardEvent): void => {\n const { code, shiftKey } = event;\n /* c8 ignore next */\n if (code !== 'Tab') return;\n if (shiftKey) {\n this.tabbingAway = true;\n this.dispatchEvent(new Event('close'));\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n this.focus();\n };\n\n public applyContentAnimation(\n animation: ContentAnimation\n ): Promise<boolean> {\n if (this.placement === 'none') {\n return Promise.resolve(true);\n }\n this.resolveContentAnimationPromise();\n return new Promise((resolve): void => {\n this.resolveContentAnimationPromise = () => {\n resolve(false);\n };\n const contents = this.shadowRoot.querySelector(\n '#contents'\n ) as HTMLElement;\n const doneHandler = (event: AnimationEvent): void => {\n if (animation !== event.animationName) return;\n contents.removeEventListener('animationend', doneHandler);\n contents.removeEventListener('animationcancel', doneHandler);\n this.animating = false;\n resolve(event.type === 'animationcancel');\n };\n contents.addEventListener('animationend', doneHandler);\n contents.addEventListener('animationcancel', doneHandler);\n\n contents.style.animationName = animation;\n this.animating = true;\n });\n }\n\n public renderTheme(content: TemplateResult): TemplateResult {\n const { color, scale, lang, theme } = this.theme;\n return html`\n <sp-theme\n theme=${ifDefined(theme)}\n color=${ifDefined(color)}\n scale=${ifDefined(scale)}\n lang=${ifDefined(lang)}\n part=\"theme\"\n >\n ${content}\n </sp-theme>\n `;\n }\n\n public override render(): TemplateResult {\n const content = html`\n <div id=\"contents\">\n <slot @slotchange=${this.onSlotChange}></slot>\n </div>\n `;\n return this.hasTheme ? this.renderTheme(content) : content;\n }\n\n public static create(details: OverlayOpenDetail): ActiveOverlay {\n const overlay = new ActiveOverlay();\n\n if (details.content) {\n overlay.open(details);\n }\n\n return overlay;\n }\n\n private stealOverlayContentPromise = Promise.resolve();\n private stealOverlayContentResolver!: () => void;\n\n protected override async getUpdateComplete(): Promise<boolean> {\n const actions: Promise<unknown>[] = [\n super.getUpdateComplete(),\n this.stealOverlayContentPromise,\n ];\n actions.push(this.contentAnimationPromise);\n if (\n typeof (this.overlayContent as SpectrumElement).updateComplete !==\n 'undefined'\n ) {\n actions.push(\n (this.overlayContent as SpectrumElement).updateComplete\n );\n }\n const [complete] = await Promise.all(actions);\n return complete as boolean;\n }\n\n override disconnectedCallback(): void {\n document.removeEventListener(\n 'sp-update-overlays',\n this.setOverlayPosition\n );\n super.disconnectedCallback();\n }\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["html", "SpectrumElement", "ifDefined", "property", "reparentChildren", "firstFocusableIn", "styles", "parentOverlayOf", "arrow", "autoUpdate", "computePosition", "flip", "offset", "shift", "size", "stateMachine", "stateTransition", "state", "event", "getFallbackPlacements", "placement", "_a", "_ActiveOverlay", "roundByDPR", "num", "dpr", "REQUIRED_DISTANCE_TO_EDGE", "MIN_OVERLAY_HEIGHT", "flipMiddleware", "middleware", "availableWidth", "availableHeight", "floating", "maxHeight", "actualHeight", "appliedHeight", "x", "y", "middlewareData", "arrowX", "arrowY", "code", "shiftKey", "res", "nextState", "firstFocusable", "activeElement", "parentOverlay", "nextOverlayInteraction", "lifecycleCallback", "openDetail", "detail", "element", "el", "slotName", "animated", "animation", "resolve", "contents", "doneHandler", "content", "color", "scale", "lang", "theme", "details", "overlay", "actions", "complete", "__decorateClass"]
7
7
  }
@@ -241,12 +241,18 @@ const _OverlayTrigger = class extends SpectrumElement {
241
241
  const { targetContent, clickContent } = this;
242
242
  this.closeAllOverlays();
243
243
  this.prepareToFocusOverlayContent(clickContent);
244
+ if (true) {
245
+ window.__swc.ignoreWarningLevels.deprecation = true;
246
+ }
244
247
  this.closeClickOverlay = this.openOverlay(
245
248
  targetContent,
246
249
  this.type ? this.type : "click",
247
250
  clickContent,
248
251
  this.overlayOptions
249
252
  );
253
+ if (true) {
254
+ window.__swc.ignoreWarningLevels.deprecation = false;
255
+ }
250
256
  }
251
257
  async onTriggerLongpress() {
252
258
  var _a, _b;
@@ -257,6 +263,9 @@ const _OverlayTrigger = class extends SpectrumElement {
257
263
  this.closeAllOverlays();
258
264
  this.prepareToFocusOverlayContent(longpressContent);
259
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
+ }
260
269
  this.closeLongpressOverlay = this.openOverlay(
261
270
  targetContent,
262
271
  this.type ? this.type : "longpress",
@@ -267,6 +276,9 @@ const _OverlayTrigger = class extends SpectrumElement {
267
276
  notImmediatelyClosable
268
277
  }
269
278
  );
279
+ if (true) {
280
+ window.__swc.ignoreWarningLevels.deprecation = false;
281
+ }
270
282
  this._longpressEvent = void 0;
271
283
  }
272
284
  async onTriggerMouseEnter() {
@@ -277,6 +289,9 @@ const _OverlayTrigger = class extends SpectrumElement {
277
289
  this.abortOverlay = res;
278
290
  });
279
291
  const { targetContent, hoverContent } = this;
292
+ if (true) {
293
+ window.__swc.ignoreWarningLevels.deprecation = true;
294
+ }
280
295
  this.closeHoverOverlay = this.openOverlay(
281
296
  targetContent,
282
297
  "hover",
@@ -286,6 +301,9 @@ const _OverlayTrigger = class extends SpectrumElement {
286
301
  ...this.overlayOptions
287
302
  }
288
303
  );
304
+ if (true) {
305
+ window.__swc.ignoreWarningLevels.deprecation = false;
306
+ }
289
307
  }
290
308
  onClickSlotChange(event) {
291
309
  this.clickContent = this.extractSlotContentFromEvent(event);
@@ -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 state,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport type { LongpressEvent } from '@spectrum-web-components/action-button';\nimport { firstFocusableIn } from '@spectrum-web-components/shared/src/first-focusable-in.js';\nimport {\n isAndroid,\n isIOS,\n} from '@spectrum-web-components/shared/src/platform.js';\n\nimport {\n OverlayOpenCloseDetail,\n OverlayOptions,\n OverlayTriggerInteractions,\n Placement,\n TriggerInteractions,\n} from './overlay-types';\nimport { openOverlay } from './loader.dev.js'\nimport overlayTriggerStyles from './overlay-trigger.css.js';\n\nexport type OverlayContentTypes = 'click' | 'hover' | 'longpress';\n\ntype closeOverlay =\n | 'closeClickOverlay'\n | 'closeHoverOverlay'\n | 'closeLongpressOverlay';\n\nexport const LONGPRESS_INSTRUCTIONS = {\n touch: 'Double tap and long press for additional options',\n keyboard: 'Press Space or Alt+Down Arrow for additional options',\n mouse: 'Click and hold for additional options',\n};\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 private closeClickOverlay?: Promise<() => void>;\n private closeLongpressOverlay?: Promise<() => void>;\n private closeHoverOverlay?: Promise<() => void>;\n\n public static override get styles(): CSSResultArray {\n return [overlayTriggerStyles];\n }\n\n /**\n * @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\"}\n * @attr\n */\n @property({ reflect: true })\n public placement: Placement = 'bottom';\n\n @property()\n public type?: OverlayTriggerInteractions;\n\n @property({ type: Number, reflect: true })\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 @state()\n public hasLongpressContent = false;\n\n private longpressDescriptor?: HTMLElement;\n private clickContent?: HTMLElement;\n private longpressContent?: HTMLElement;\n private hoverContent?: HTMLElement;\n private targetContent?: HTMLElement;\n private overlaidContent?: HTMLElement;\n\n private _longpressId = `longpress-describedby-descriptor`;\n\n private handleClose(event?: CustomEvent<OverlayOpenCloseDetail>): void {\n if (\n event &&\n event.detail.interaction !== this.open &&\n event.detail.interaction !== this.type\n ) {\n return;\n }\n this.removeAttribute('open');\n }\n\n protected override render(): TemplateResult {\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 @click=${this.onTrigger}\n @longpress=${this.onTrigger}\n @mouseenter=${this.onTrigger}\n @mouseleave=${this.onTrigger}\n @focusin=${this.onTrigger}\n @focusout=${this.onTrigger}\n @sp-closed=${this.handleClose}\n @slotchange=${this.onTargetSlotChange}\n name=\"trigger\"\n ></slot>\n <div id=\"overlay-content\">\n <slot\n @slotchange=${this.onClickSlotChange}\n name=\"click-content\"\n ></slot>\n <slot\n @slotchange=${this.onLongpressSlotChange}\n name=\"longpress-content\"\n ></slot>\n <slot\n @slotchange=${this.onHoverSlotChange}\n name=\"hover-content\"\n ></slot>\n <slot name=${this._longpressId}></slot>\n </div>\n `;\n /* eslint-enable lit-a11y/click-events-have-key-events */\n }\n\n protected override updated(changes: PropertyValues<this>): void {\n super.updated(changes);\n if (this.disabled && changes.has('disabled')) {\n this.closeAllOverlays();\n return;\n }\n if (changes.has('open')) {\n this.manageOpen();\n }\n if (changes.has('hasLongpressContent')) {\n this.manageLongpressDescriptor();\n }\n }\n\n protected manageLongpressDescriptor(): void {\n const trigger = this.querySelector(\n '[slot=\"trigger\"]'\n ) as SpectrumElement;\n const ariaDescribedby = trigger.getAttribute('aria-describedby');\n let descriptors = ariaDescribedby ? ariaDescribedby.split(/\\s+/) : [];\n\n if (this.hasLongpressContent) {\n if (!this.longpressDescriptor) {\n this.longpressDescriptor = document.createElement(\n 'div'\n ) as HTMLElement;\n\n this.longpressDescriptor.id = this._longpressId;\n this.longpressDescriptor.slot = this._longpressId;\n }\n const messageType = isIOS() || isAndroid() ? 'touch' : 'keyboard';\n this.longpressDescriptor.textContent =\n LONGPRESS_INSTRUCTIONS[messageType];\n this.appendChild(this.longpressDescriptor);\n descriptors.push(this._longpressId);\n } else {\n if (this.longpressDescriptor) this.longpressDescriptor.remove();\n descriptors = descriptors.filter(\n (descriptor) => descriptor !== this._longpressId\n );\n }\n if (descriptors.length) {\n trigger.setAttribute('aria-describedby', descriptors.join(' '));\n } else {\n trigger.removeAttribute('aria-describedby');\n }\n }\n\n private closeAllOverlays(): void {\n if (this.abortOverlay) this.abortOverlay(true);\n (\n [\n 'closeClickOverlay',\n 'closeHoverOverlay',\n 'closeLongpressOverlay',\n ] as closeOverlay[]\n ).forEach(async (name) => {\n const canClose = this[name] as Promise<() => void>;\n if (canClose == null) return;\n delete this[name];\n (await canClose)();\n });\n this.overlaidContent = undefined;\n }\n\n private manageOpen(): void {\n const openHandlers: Record<OverlayContentTypes | 'none', () => void> = {\n click: () => this.onTriggerClick(),\n hover: () => this.onTriggerMouseEnter(),\n longpress: () => this.onTriggerLongpress(),\n none: () => this.closeAllOverlays(),\n };\n openHandlers[this.open ?? 'none']();\n }\n\n private async openOverlay(\n target: HTMLElement,\n interaction: TriggerInteractions,\n content: HTMLElement,\n options: OverlayOptions\n ): Promise<() => void> {\n this.openStatePromise = new Promise(\n (res) => (this.openStateResolver = res)\n );\n this.addEventListener(\n 'sp-opened',\n () => {\n this.openStateResolver();\n },\n { once: true }\n );\n this.overlaidContent = content;\n return OverlayTrigger.openOverlay(\n target,\n interaction,\n content,\n options\n );\n }\n\n public static openOverlay = async (\n target: HTMLElement,\n interaction: TriggerInteractions,\n content: HTMLElement,\n options: OverlayOptions\n ): Promise<() => void> => {\n return openOverlay(target, interaction, content, options);\n };\n\n private get overlayOptions(): OverlayOptions {\n return {\n offset: this.offset,\n placement: this.placement,\n receivesFocus:\n !this.type || this.type === 'inline' || this.open === 'hover'\n ? undefined\n : 'auto',\n };\n }\n\n private onTrigger(event: CustomEvent<LongpressEvent>): void {\n const mouseIsEnteringHoverContent =\n event.type === 'mouseleave' &&\n this.open === 'hover' &&\n (event as unknown as MouseEvent).relatedTarget ===\n this.overlaidContent;\n if (mouseIsEnteringHoverContent && this.overlaidContent) {\n this.overlaidContent.addEventListener(\n 'mouseleave',\n (event: MouseEvent) => {\n const mouseIsEnteringTrigger =\n event.relatedTarget === this.targetContent;\n if (mouseIsEnteringTrigger) {\n return;\n }\n this.onTrigger(\n event as unknown as CustomEvent<LongpressEvent>\n );\n },\n { once: true }\n );\n return;\n }\n if (this.disabled) return;\n\n switch (event.type) {\n case 'mouseenter':\n case 'focusin':\n if (!this.open && this.hoverContent) {\n this.open = 'hover';\n }\n return;\n case 'mouseleave':\n case 'focusout':\n if (this.open === 'hover') {\n this.handleClose();\n }\n return;\n case 'click':\n if (this.clickContent) {\n this.open = event.type;\n }\n return;\n case 'longpress':\n if (this.longpressContent) {\n this._longpressEvent = event;\n this.open = event.type;\n }\n return;\n }\n }\n\n private prepareToFocusOverlayContent(overlayContent: HTMLElement): void {\n if (this.type !== 'modal') {\n return;\n }\n const firstFocusable = firstFocusableIn(overlayContent);\n if (!firstFocusable) {\n overlayContent.tabIndex = 0;\n }\n }\n\n public async onTriggerClick(): Promise<void> {\n if (\n !this.targetContent ||\n !this.clickContent ||\n this.closeClickOverlay\n ) {\n return;\n }\n const { targetContent, clickContent } = this;\n this.closeAllOverlays();\n this.prepareToFocusOverlayContent(clickContent);\n this.closeClickOverlay = this.openOverlay(\n targetContent,\n this.type ? this.type : 'click',\n clickContent,\n this.overlayOptions\n );\n }\n\n private _longpressEvent?: CustomEvent<LongpressEvent>;\n\n private async onTriggerLongpress(): Promise<void> {\n if (\n !this.targetContent ||\n !this.longpressContent ||\n this.closeLongpressOverlay\n ) {\n return;\n }\n const { targetContent, longpressContent } = this;\n this.closeAllOverlays();\n this.prepareToFocusOverlayContent(longpressContent);\n const notImmediatelyClosable =\n this._longpressEvent?.detail?.source !== 'keyboard';\n this.closeLongpressOverlay = this.openOverlay(\n targetContent,\n this.type ? this.type : 'longpress',\n longpressContent,\n {\n ...this.overlayOptions,\n receivesFocus: 'auto',\n notImmediatelyClosable,\n }\n );\n this._longpressEvent = undefined;\n }\n\n private abortOverlay: (cancelled: boolean) => void = () => {\n return;\n };\n\n public async onTriggerMouseEnter(): Promise<void> {\n if (\n !this.targetContent ||\n !this.hoverContent ||\n this.closeHoverOverlay\n ) {\n return;\n }\n const abortPromise: Promise<boolean> = new Promise((res) => {\n this.abortOverlay = res;\n });\n const { targetContent, hoverContent } = this;\n this.closeHoverOverlay = this.openOverlay(\n targetContent,\n 'hover',\n hoverContent,\n {\n abortPromise,\n ...this.overlayOptions,\n }\n );\n }\n\n private onClickSlotChange(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.clickContent = this.extractSlotContentFromEvent(event);\n this.manageOpen();\n }\n\n private onLongpressSlotChange(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.longpressContent = this.extractSlotContentFromEvent(event);\n this.hasLongpressContent =\n !!this.longpressContent || !!this.closeLongpressOverlay;\n this.manageOpen();\n }\n\n private onHoverSlotChange(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.hoverContent = this.extractSlotContentFromEvent(event);\n this.manageOpen();\n }\n\n private onTargetSlotChange(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.targetContent = this.extractSlotContentFromEvent(event);\n }\n\n private extractSlotContentFromEvent(event: Event): HTMLElement | undefined {\n const slot = event.target as HTMLSlotElement;\n const nodes = slot.assignedNodes({ flatten: true });\n return nodes.find((node) => node instanceof HTMLElement) as HTMLElement;\n }\n\n private openStatePromise = Promise.resolve();\n private openStateResolver!: () => void;\n\n protected override async getUpdateComplete(): Promise<boolean> {\n const complete = (await super.getUpdateComplete()) as boolean;\n await this.openStatePromise;\n return complete;\n }\n\n public override disconnectedCallback(): void {\n this.closeAllOverlays();\n super.disconnectedCallback();\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 state,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport type { LongpressEvent } from '@spectrum-web-components/action-button';\nimport { firstFocusableIn } from '@spectrum-web-components/shared/src/first-focusable-in.js';\nimport {\n isAndroid,\n isIOS,\n} from '@spectrum-web-components/shared/src/platform.js';\n\nimport {\n OverlayOpenCloseDetail,\n OverlayOptions,\n OverlayTriggerInteractions,\n Placement,\n TriggerInteractions,\n} from './overlay-types';\nimport { openOverlay } from './loader.dev.js'\nimport overlayTriggerStyles from './overlay-trigger.css.js';\n\nexport type OverlayContentTypes = 'click' | 'hover' | 'longpress';\n\ntype closeOverlay =\n | 'closeClickOverlay'\n | 'closeHoverOverlay'\n | 'closeLongpressOverlay';\n\nexport const LONGPRESS_INSTRUCTIONS = {\n touch: 'Double tap and long press for additional options',\n keyboard: 'Press Space or Alt+Down Arrow for additional options',\n mouse: 'Click and hold for additional options',\n};\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 private closeClickOverlay?: Promise<() => void>;\n private closeLongpressOverlay?: Promise<() => void>;\n private closeHoverOverlay?: Promise<() => void>;\n\n public static override get styles(): CSSResultArray {\n return [overlayTriggerStyles];\n }\n\n /**\n * @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\"}\n * @attr\n */\n @property({ reflect: true })\n public placement: Placement = 'bottom';\n\n @property()\n public type?: OverlayTriggerInteractions;\n\n @property({ type: Number, reflect: true })\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 @state()\n public hasLongpressContent = false;\n\n private longpressDescriptor?: HTMLElement;\n private clickContent?: HTMLElement;\n private longpressContent?: HTMLElement;\n private hoverContent?: HTMLElement;\n private targetContent?: HTMLElement;\n private overlaidContent?: HTMLElement;\n\n private _longpressId = `longpress-describedby-descriptor`;\n\n private handleClose(event?: CustomEvent<OverlayOpenCloseDetail>): void {\n if (\n event &&\n event.detail.interaction !== this.open &&\n event.detail.interaction !== this.type\n ) {\n return;\n }\n this.removeAttribute('open');\n }\n\n protected override render(): TemplateResult {\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 @click=${this.onTrigger}\n @longpress=${this.onTrigger}\n @mouseenter=${this.onTrigger}\n @mouseleave=${this.onTrigger}\n @focusin=${this.onTrigger}\n @focusout=${this.onTrigger}\n @sp-closed=${this.handleClose}\n @slotchange=${this.onTargetSlotChange}\n name=\"trigger\"\n ></slot>\n <div id=\"overlay-content\">\n <slot\n @slotchange=${this.onClickSlotChange}\n name=\"click-content\"\n ></slot>\n <slot\n @slotchange=${this.onLongpressSlotChange}\n name=\"longpress-content\"\n ></slot>\n <slot\n @slotchange=${this.onHoverSlotChange}\n name=\"hover-content\"\n ></slot>\n <slot name=${this._longpressId}></slot>\n </div>\n `;\n /* eslint-enable lit-a11y/click-events-have-key-events */\n }\n\n protected override updated(changes: PropertyValues<this>): void {\n super.updated(changes);\n if (this.disabled && changes.has('disabled')) {\n this.closeAllOverlays();\n return;\n }\n if (changes.has('open')) {\n this.manageOpen();\n }\n if (changes.has('hasLongpressContent')) {\n this.manageLongpressDescriptor();\n }\n }\n\n protected manageLongpressDescriptor(): void {\n const trigger = this.querySelector(\n '[slot=\"trigger\"]'\n ) as SpectrumElement;\n const ariaDescribedby = trigger.getAttribute('aria-describedby');\n let descriptors = ariaDescribedby ? ariaDescribedby.split(/\\s+/) : [];\n\n if (this.hasLongpressContent) {\n if (!this.longpressDescriptor) {\n this.longpressDescriptor = document.createElement(\n 'div'\n ) as HTMLElement;\n\n this.longpressDescriptor.id = this._longpressId;\n this.longpressDescriptor.slot = this._longpressId;\n }\n const messageType = isIOS() || isAndroid() ? 'touch' : 'keyboard';\n this.longpressDescriptor.textContent =\n LONGPRESS_INSTRUCTIONS[messageType];\n this.appendChild(this.longpressDescriptor);\n descriptors.push(this._longpressId);\n } else {\n if (this.longpressDescriptor) this.longpressDescriptor.remove();\n descriptors = descriptors.filter(\n (descriptor) => descriptor !== this._longpressId\n );\n }\n if (descriptors.length) {\n trigger.setAttribute('aria-describedby', descriptors.join(' '));\n } else {\n trigger.removeAttribute('aria-describedby');\n }\n }\n\n private closeAllOverlays(): void {\n if (this.abortOverlay) this.abortOverlay(true);\n (\n [\n 'closeClickOverlay',\n 'closeHoverOverlay',\n 'closeLongpressOverlay',\n ] as closeOverlay[]\n ).forEach(async (name) => {\n const canClose = this[name] as Promise<() => void>;\n if (canClose == null) return;\n delete this[name];\n (await canClose)();\n });\n this.overlaidContent = undefined;\n }\n\n private manageOpen(): void {\n const openHandlers: Record<OverlayContentTypes | 'none', () => void> = {\n click: () => this.onTriggerClick(),\n hover: () => this.onTriggerMouseEnter(),\n longpress: () => this.onTriggerLongpress(),\n none: () => this.closeAllOverlays(),\n };\n openHandlers[this.open ?? 'none']();\n }\n\n private async openOverlay(\n target: HTMLElement,\n interaction: TriggerInteractions,\n content: HTMLElement,\n options: OverlayOptions\n ): Promise<() => void> {\n this.openStatePromise = new Promise(\n (res) => (this.openStateResolver = res)\n );\n this.addEventListener(\n 'sp-opened',\n () => {\n this.openStateResolver();\n },\n { once: true }\n );\n this.overlaidContent = content;\n return OverlayTrigger.openOverlay(\n target,\n interaction,\n content,\n options\n );\n }\n\n public static openOverlay = async (\n target: HTMLElement,\n interaction: TriggerInteractions,\n content: HTMLElement,\n options: OverlayOptions\n ): Promise<() => void> => {\n return openOverlay(target, interaction, content, options);\n };\n\n private get overlayOptions(): OverlayOptions {\n return {\n offset: this.offset,\n placement: this.placement,\n receivesFocus:\n !this.type || this.type === 'inline' || this.open === 'hover'\n ? undefined\n : 'auto',\n };\n }\n\n private onTrigger(event: CustomEvent<LongpressEvent>): void {\n const mouseIsEnteringHoverContent =\n event.type === 'mouseleave' &&\n this.open === 'hover' &&\n (event as unknown as MouseEvent).relatedTarget ===\n this.overlaidContent;\n if (mouseIsEnteringHoverContent && this.overlaidContent) {\n this.overlaidContent.addEventListener(\n 'mouseleave',\n (event: MouseEvent) => {\n const mouseIsEnteringTrigger =\n event.relatedTarget === this.targetContent;\n if (mouseIsEnteringTrigger) {\n return;\n }\n this.onTrigger(\n event as unknown as CustomEvent<LongpressEvent>\n );\n },\n { once: true }\n );\n return;\n }\n if (this.disabled) return;\n\n switch (event.type) {\n case 'mouseenter':\n case 'focusin':\n if (!this.open && this.hoverContent) {\n this.open = 'hover';\n }\n return;\n case 'mouseleave':\n case 'focusout':\n if (this.open === 'hover') {\n this.handleClose();\n }\n return;\n case 'click':\n if (this.clickContent) {\n this.open = event.type;\n }\n return;\n case 'longpress':\n if (this.longpressContent) {\n this._longpressEvent = event;\n this.open = event.type;\n }\n return;\n }\n }\n\n private prepareToFocusOverlayContent(overlayContent: HTMLElement): void {\n if (this.type !== 'modal') {\n return;\n }\n const firstFocusable = firstFocusableIn(overlayContent);\n if (!firstFocusable) {\n overlayContent.tabIndex = 0;\n }\n }\n\n public async onTriggerClick(): Promise<void> {\n if (\n !this.targetContent ||\n !this.clickContent ||\n this.closeClickOverlay\n ) {\n return;\n }\n const { targetContent, clickContent } = this;\n this.closeAllOverlays();\n this.prepareToFocusOverlayContent(clickContent);\n if (window.__swc.DEBUG) {\n window.__swc.ignoreWarningLevels.deprecation = true;\n }\n this.closeClickOverlay = this.openOverlay(\n targetContent,\n this.type ? this.type : 'click',\n clickContent,\n this.overlayOptions\n );\n if (window.__swc.DEBUG) {\n window.__swc.ignoreWarningLevels.deprecation = false;\n }\n }\n\n private _longpressEvent?: CustomEvent<LongpressEvent>;\n\n private async onTriggerLongpress(): Promise<void> {\n if (\n !this.targetContent ||\n !this.longpressContent ||\n this.closeLongpressOverlay\n ) {\n return;\n }\n const { targetContent, longpressContent } = this;\n this.closeAllOverlays();\n this.prepareToFocusOverlayContent(longpressContent);\n const notImmediatelyClosable =\n this._longpressEvent?.detail?.source !== 'keyboard';\n if (window.__swc.DEBUG) {\n window.__swc.ignoreWarningLevels.deprecation = true;\n }\n this.closeLongpressOverlay = this.openOverlay(\n targetContent,\n this.type ? this.type : 'longpress',\n longpressContent,\n {\n ...this.overlayOptions,\n receivesFocus: 'auto',\n notImmediatelyClosable,\n }\n );\n if (window.__swc.DEBUG) {\n window.__swc.ignoreWarningLevels.deprecation = false;\n }\n this._longpressEvent = undefined;\n }\n\n private abortOverlay: (cancelled: boolean) => void = () => {\n return;\n };\n\n public async onTriggerMouseEnter(): Promise<void> {\n if (\n !this.targetContent ||\n !this.hoverContent ||\n this.closeHoverOverlay\n ) {\n return;\n }\n const abortPromise: Promise<boolean> = new Promise((res) => {\n this.abortOverlay = res;\n });\n const { targetContent, hoverContent } = this;\n if (window.__swc.DEBUG) {\n window.__swc.ignoreWarningLevels.deprecation = true;\n }\n this.closeHoverOverlay = this.openOverlay(\n targetContent,\n 'hover',\n hoverContent,\n {\n abortPromise,\n ...this.overlayOptions,\n }\n );\n if (window.__swc.DEBUG) {\n window.__swc.ignoreWarningLevels.deprecation = false;\n }\n }\n\n private onClickSlotChange(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.clickContent = this.extractSlotContentFromEvent(event);\n this.manageOpen();\n }\n\n private onLongpressSlotChange(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.longpressContent = this.extractSlotContentFromEvent(event);\n this.hasLongpressContent =\n !!this.longpressContent || !!this.closeLongpressOverlay;\n this.manageOpen();\n }\n\n private onHoverSlotChange(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.hoverContent = this.extractSlotContentFromEvent(event);\n this.manageOpen();\n }\n\n private onTargetSlotChange(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.targetContent = this.extractSlotContentFromEvent(event);\n }\n\n private extractSlotContentFromEvent(event: Event): HTMLElement | undefined {\n const slot = event.target as HTMLSlotElement;\n const nodes = slot.assignedNodes({ flatten: true });\n return nodes.find((node) => node instanceof HTMLElement) as HTMLElement;\n }\n\n private openStatePromise = Promise.resolve();\n private openStateResolver!: () => void;\n\n protected override async getUpdateComplete(): Promise<boolean> {\n const complete = (await super.getUpdateComplete()) as boolean;\n await this.openStatePromise;\n return complete;\n }\n\n public override disconnectedCallback(): void {\n this.closeAllOverlays();\n super.disconnectedCallback();\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["event"]
7
7
  }
@@ -1,4 +1,4 @@
1
- "use strict";var c=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var n=(p,i,e,t)=>{for(var o=t>1?void 0:t?v(i,e):i,s=p.length-1,r;s>=0;s--)(r=p[s])&&(o=(t?r(i,e,o):r(o))||o);return t&&o&&c(i,e,o),o};import{html as h,SpectrumElement as g}from"@spectrum-web-components/base";import{property as l,state as d}from"@spectrum-web-components/base/src/decorators.js";import{firstFocusableIn as m}from"@spectrum-web-components/shared/src/first-focusable-in.js";import{isAndroid as u,isIOS as y}from"@spectrum-web-components/shared/src/platform.js";import{openOverlay as C}from"./loader.js";import f from"./overlay-trigger.css.js";export const LONGPRESS_INSTRUCTIONS={touch:"Double tap and long press for additional options",keyboard:"Press Space or Alt+Down Arrow for additional options",mouse:"Click and hold for additional options"};const a=class extends g{constructor(){super(...arguments);this.placement="bottom";this.offset=6;this.disabled=!1;this.hasLongpressContent=!1;this._longpressId="longpress-describedby-descriptor";this.abortOverlay=()=>{};this.openStatePromise=Promise.resolve()}static get styles(){return[f]}handleClose(e){e&&e.detail.interaction!==this.open&&e.detail.interaction!==this.type||this.removeAttribute("open")}render(){return h`
1
+ "use strict";var c=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var r=(p,i,e,t)=>{for(var o=t>1?void 0:t?v(i,e):i,s=p.length-1,n;s>=0;s--)(n=p[s])&&(o=(t?n(i,e,o):n(o))||o);return t&&o&&c(i,e,o),o};import{html as h,SpectrumElement as d}from"@spectrum-web-components/base";import{property as l,state as g}from"@spectrum-web-components/base/src/decorators.js";import{firstFocusableIn as m}from"@spectrum-web-components/shared/src/first-focusable-in.js";import{isAndroid as u,isIOS as y}from"@spectrum-web-components/shared/src/platform.js";import{openOverlay as C}from"./loader.js";import f from"./overlay-trigger.css.js";export const LONGPRESS_INSTRUCTIONS={touch:"Double tap and long press for additional options",keyboard:"Press Space or Alt+Down Arrow for additional options",mouse:"Click and hold for additional options"};const a=class extends d{constructor(){super(...arguments);this.placement="bottom";this.offset=6;this.disabled=!1;this.hasLongpressContent=!1;this._longpressId="longpress-describedby-descriptor";this.abortOverlay=()=>{};this.openStatePromise=Promise.resolve()}static get styles(){return[f]}handleClose(e){e&&e.detail.interaction!==this.open&&e.detail.interaction!==this.type||this.removeAttribute("open")}render(){return h`
2
2
  <slot
3
3
  id="trigger"
4
4
  @click=${this.onTrigger}
@@ -26,5 +26,5 @@
26
26
  ></slot>
27
27
  <slot name=${this._longpressId}></slot>
28
28
  </div>
29
- `}updated(e){if(super.updated(e),this.disabled&&e.has("disabled")){this.closeAllOverlays();return}e.has("open")&&this.manageOpen(),e.has("hasLongpressContent")&&this.manageLongpressDescriptor()}manageLongpressDescriptor(){const e=this.querySelector('[slot="trigger"]'),t=e.getAttribute("aria-describedby");let o=t?t.split(/\s+/):[];if(this.hasLongpressContent){this.longpressDescriptor||(this.longpressDescriptor=document.createElement("div"),this.longpressDescriptor.id=this._longpressId,this.longpressDescriptor.slot=this._longpressId);const s=y()||u()?"touch":"keyboard";this.longpressDescriptor.textContent=LONGPRESS_INSTRUCTIONS[s],this.appendChild(this.longpressDescriptor),o.push(this._longpressId)}else this.longpressDescriptor&&this.longpressDescriptor.remove(),o=o.filter(s=>s!==this._longpressId);o.length?e.setAttribute("aria-describedby",o.join(" ")):e.removeAttribute("aria-describedby")}closeAllOverlays(){this.abortOverlay&&this.abortOverlay(!0),["closeClickOverlay","closeHoverOverlay","closeLongpressOverlay"].forEach(async e=>{const t=this[e];t!=null&&(delete this[e],(await t)())}),this.overlaidContent=void 0}manageOpen(){var t;({click:()=>this.onTriggerClick(),hover:()=>this.onTriggerMouseEnter(),longpress:()=>this.onTriggerLongpress(),none:()=>this.closeAllOverlays()})[(t=this.open)!=null?t:"none"]()}async openOverlay(e,t,o,s){return this.openStatePromise=new Promise(r=>this.openStateResolver=r),this.addEventListener("sp-opened",()=>{this.openStateResolver()},{once:!0}),this.overlaidContent=o,a.openOverlay(e,t,o,s)}get overlayOptions(){return{offset:this.offset,placement:this.placement,receivesFocus:!this.type||this.type==="inline"||this.open==="hover"?void 0:"auto"}}onTrigger(e){if(e.type==="mouseleave"&&this.open==="hover"&&e.relatedTarget===this.overlaidContent&&this.overlaidContent){this.overlaidContent.addEventListener("mouseleave",o=>{o.relatedTarget!==this.targetContent&&this.onTrigger(o)},{once:!0});return}if(!this.disabled)switch(e.type){case"mouseenter":case"focusin":!this.open&&this.hoverContent&&(this.open="hover");return;case"mouseleave":case"focusout":this.open==="hover"&&this.handleClose();return;case"click":this.clickContent&&(this.open=e.type);return;case"longpress":this.longpressContent&&(this._longpressEvent=e,this.open=e.type);return}}prepareToFocusOverlayContent(e){if(this.type!=="modal")return;m(e)||(e.tabIndex=0)}async onTriggerClick(){if(!this.targetContent||!this.clickContent||this.closeClickOverlay)return;const{targetContent:e,clickContent:t}=this;this.closeAllOverlays(),this.prepareToFocusOverlayContent(t),this.closeClickOverlay=this.openOverlay(e,this.type?this.type:"click",t,this.overlayOptions)}async onTriggerLongpress(){var s,r;if(!this.targetContent||!this.longpressContent||this.closeLongpressOverlay)return;const{targetContent:e,longpressContent:t}=this;this.closeAllOverlays(),this.prepareToFocusOverlayContent(t);const o=((r=(s=this._longpressEvent)==null?void 0:s.detail)==null?void 0:r.source)!=="keyboard";this.closeLongpressOverlay=this.openOverlay(e,this.type?this.type:"longpress",t,{...this.overlayOptions,receivesFocus:"auto",notImmediatelyClosable:o}),this._longpressEvent=void 0}async onTriggerMouseEnter(){if(!this.targetContent||!this.hoverContent||this.closeHoverOverlay)return;const e=new Promise(s=>{this.abortOverlay=s}),{targetContent:t,hoverContent:o}=this;this.closeHoverOverlay=this.openOverlay(t,"hover",o,{abortPromise:e,...this.overlayOptions})}onClickSlotChange(e){this.clickContent=this.extractSlotContentFromEvent(e),this.manageOpen()}onLongpressSlotChange(e){this.longpressContent=this.extractSlotContentFromEvent(e),this.hasLongpressContent=!!this.longpressContent||!!this.closeLongpressOverlay,this.manageOpen()}onHoverSlotChange(e){this.hoverContent=this.extractSlotContentFromEvent(e),this.manageOpen()}onTargetSlotChange(e){this.targetContent=this.extractSlotContentFromEvent(e)}extractSlotContentFromEvent(e){return e.target.assignedNodes({flatten:!0}).find(s=>s instanceof HTMLElement)}async getUpdateComplete(){const e=await super.getUpdateComplete();return await this.openStatePromise,e}disconnectedCallback(){this.closeAllOverlays(),super.disconnectedCallback()}};export let OverlayTrigger=a;OverlayTrigger.openOverlay=async(e,t,o,s)=>C(e,t,o,s),n([l({reflect:!0})],OverlayTrigger.prototype,"placement",2),n([l()],OverlayTrigger.prototype,"type",2),n([l({type:Number,reflect:!0})],OverlayTrigger.prototype,"offset",2),n([l({reflect:!0})],OverlayTrigger.prototype,"open",2),n([l({type:Boolean,reflect:!0})],OverlayTrigger.prototype,"disabled",2),n([d()],OverlayTrigger.prototype,"hasLongpressContent",2);
29
+ `}updated(e){if(super.updated(e),this.disabled&&e.has("disabled")){this.closeAllOverlays();return}e.has("open")&&this.manageOpen(),e.has("hasLongpressContent")&&this.manageLongpressDescriptor()}manageLongpressDescriptor(){const e=this.querySelector('[slot="trigger"]'),t=e.getAttribute("aria-describedby");let o=t?t.split(/\s+/):[];if(this.hasLongpressContent){this.longpressDescriptor||(this.longpressDescriptor=document.createElement("div"),this.longpressDescriptor.id=this._longpressId,this.longpressDescriptor.slot=this._longpressId);const s=y()||u()?"touch":"keyboard";this.longpressDescriptor.textContent=LONGPRESS_INSTRUCTIONS[s],this.appendChild(this.longpressDescriptor),o.push(this._longpressId)}else this.longpressDescriptor&&this.longpressDescriptor.remove(),o=o.filter(s=>s!==this._longpressId);o.length?e.setAttribute("aria-describedby",o.join(" ")):e.removeAttribute("aria-describedby")}closeAllOverlays(){this.abortOverlay&&this.abortOverlay(!0),["closeClickOverlay","closeHoverOverlay","closeLongpressOverlay"].forEach(async e=>{const t=this[e];t!=null&&(delete this[e],(await t)())}),this.overlaidContent=void 0}manageOpen(){var t;({click:()=>this.onTriggerClick(),hover:()=>this.onTriggerMouseEnter(),longpress:()=>this.onTriggerLongpress(),none:()=>this.closeAllOverlays()})[(t=this.open)!=null?t:"none"]()}async openOverlay(e,t,o,s){return this.openStatePromise=new Promise(n=>this.openStateResolver=n),this.addEventListener("sp-opened",()=>{this.openStateResolver()},{once:!0}),this.overlaidContent=o,a.openOverlay(e,t,o,s)}get overlayOptions(){return{offset:this.offset,placement:this.placement,receivesFocus:!this.type||this.type==="inline"||this.open==="hover"?void 0:"auto"}}onTrigger(e){if(e.type==="mouseleave"&&this.open==="hover"&&e.relatedTarget===this.overlaidContent&&this.overlaidContent){this.overlaidContent.addEventListener("mouseleave",o=>{o.relatedTarget!==this.targetContent&&this.onTrigger(o)},{once:!0});return}if(!this.disabled)switch(e.type){case"mouseenter":case"focusin":!this.open&&this.hoverContent&&(this.open="hover");return;case"mouseleave":case"focusout":this.open==="hover"&&this.handleClose();return;case"click":this.clickContent&&(this.open=e.type);return;case"longpress":this.longpressContent&&(this._longpressEvent=e,this.open=e.type);return}}prepareToFocusOverlayContent(e){if(this.type!=="modal")return;m(e)||(e.tabIndex=0)}async onTriggerClick(){if(!this.targetContent||!this.clickContent||this.closeClickOverlay)return;const{targetContent:e,clickContent:t}=this;this.closeAllOverlays(),this.prepareToFocusOverlayContent(t),this.closeClickOverlay=this.openOverlay(e,this.type?this.type:"click",t,this.overlayOptions)}async onTriggerLongpress(){var s,n;if(!this.targetContent||!this.longpressContent||this.closeLongpressOverlay)return;const{targetContent:e,longpressContent:t}=this;this.closeAllOverlays(),this.prepareToFocusOverlayContent(t);const o=((n=(s=this._longpressEvent)==null?void 0:s.detail)==null?void 0:n.source)!=="keyboard";this.closeLongpressOverlay=this.openOverlay(e,this.type?this.type:"longpress",t,{...this.overlayOptions,receivesFocus:"auto",notImmediatelyClosable:o}),this._longpressEvent=void 0}async onTriggerMouseEnter(){if(!this.targetContent||!this.hoverContent||this.closeHoverOverlay)return;const e=new Promise(s=>{this.abortOverlay=s}),{targetContent:t,hoverContent:o}=this;this.closeHoverOverlay=this.openOverlay(t,"hover",o,{abortPromise:e,...this.overlayOptions})}onClickSlotChange(e){this.clickContent=this.extractSlotContentFromEvent(e),this.manageOpen()}onLongpressSlotChange(e){this.longpressContent=this.extractSlotContentFromEvent(e),this.hasLongpressContent=!!this.longpressContent||!!this.closeLongpressOverlay,this.manageOpen()}onHoverSlotChange(e){this.hoverContent=this.extractSlotContentFromEvent(e),this.manageOpen()}onTargetSlotChange(e){this.targetContent=this.extractSlotContentFromEvent(e)}extractSlotContentFromEvent(e){return e.target.assignedNodes({flatten:!0}).find(s=>s instanceof HTMLElement)}async getUpdateComplete(){const e=await super.getUpdateComplete();return await this.openStatePromise,e}disconnectedCallback(){this.closeAllOverlays(),super.disconnectedCallback()}};export let OverlayTrigger=a;OverlayTrigger.openOverlay=async(e,t,o,s)=>C(e,t,o,s),r([l({reflect:!0})],OverlayTrigger.prototype,"placement",2),r([l()],OverlayTrigger.prototype,"type",2),r([l({type:Number,reflect:!0})],OverlayTrigger.prototype,"offset",2),r([l({reflect:!0})],OverlayTrigger.prototype,"open",2),r([l({type:Boolean,reflect:!0})],OverlayTrigger.prototype,"disabled",2),r([g()],OverlayTrigger.prototype,"hasLongpressContent",2);
30
30
  //# 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 state,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport type { LongpressEvent } from '@spectrum-web-components/action-button';\nimport { firstFocusableIn } from '@spectrum-web-components/shared/src/first-focusable-in.js';\nimport {\n isAndroid,\n isIOS,\n} from '@spectrum-web-components/shared/src/platform.js';\n\nimport {\n OverlayOpenCloseDetail,\n OverlayOptions,\n OverlayTriggerInteractions,\n Placement,\n TriggerInteractions,\n} from './overlay-types';\nimport { openOverlay } from './loader.js';\nimport overlayTriggerStyles from './overlay-trigger.css.js';\n\nexport type OverlayContentTypes = 'click' | 'hover' | 'longpress';\n\ntype closeOverlay =\n | 'closeClickOverlay'\n | 'closeHoverOverlay'\n | 'closeLongpressOverlay';\n\nexport const LONGPRESS_INSTRUCTIONS = {\n touch: 'Double tap and long press for additional options',\n keyboard: 'Press Space or Alt+Down Arrow for additional options',\n mouse: 'Click and hold for additional options',\n};\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 private closeClickOverlay?: Promise<() => void>;\n private closeLongpressOverlay?: Promise<() => void>;\n private closeHoverOverlay?: Promise<() => void>;\n\n public static override get styles(): CSSResultArray {\n return [overlayTriggerStyles];\n }\n\n /**\n * @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\"}\n * @attr\n */\n @property({ reflect: true })\n public placement: Placement = 'bottom';\n\n @property()\n public type?: OverlayTriggerInteractions;\n\n @property({ type: Number, reflect: true })\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 @state()\n public hasLongpressContent = false;\n\n private longpressDescriptor?: HTMLElement;\n private clickContent?: HTMLElement;\n private longpressContent?: HTMLElement;\n private hoverContent?: HTMLElement;\n private targetContent?: HTMLElement;\n private overlaidContent?: HTMLElement;\n\n private _longpressId = `longpress-describedby-descriptor`;\n\n private handleClose(event?: CustomEvent<OverlayOpenCloseDetail>): void {\n if (\n event &&\n event.detail.interaction !== this.open &&\n event.detail.interaction !== this.type\n ) {\n return;\n }\n this.removeAttribute('open');\n }\n\n protected override render(): TemplateResult {\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 @click=${this.onTrigger}\n @longpress=${this.onTrigger}\n @mouseenter=${this.onTrigger}\n @mouseleave=${this.onTrigger}\n @focusin=${this.onTrigger}\n @focusout=${this.onTrigger}\n @sp-closed=${this.handleClose}\n @slotchange=${this.onTargetSlotChange}\n name=\"trigger\"\n ></slot>\n <div id=\"overlay-content\">\n <slot\n @slotchange=${this.onClickSlotChange}\n name=\"click-content\"\n ></slot>\n <slot\n @slotchange=${this.onLongpressSlotChange}\n name=\"longpress-content\"\n ></slot>\n <slot\n @slotchange=${this.onHoverSlotChange}\n name=\"hover-content\"\n ></slot>\n <slot name=${this._longpressId}></slot>\n </div>\n `;\n /* eslint-enable lit-a11y/click-events-have-key-events */\n }\n\n protected override updated(changes: PropertyValues<this>): void {\n super.updated(changes);\n if (this.disabled && changes.has('disabled')) {\n this.closeAllOverlays();\n return;\n }\n if (changes.has('open')) {\n this.manageOpen();\n }\n if (changes.has('hasLongpressContent')) {\n this.manageLongpressDescriptor();\n }\n }\n\n protected manageLongpressDescriptor(): void {\n const trigger = this.querySelector(\n '[slot=\"trigger\"]'\n ) as SpectrumElement;\n const ariaDescribedby = trigger.getAttribute('aria-describedby');\n let descriptors = ariaDescribedby ? ariaDescribedby.split(/\\s+/) : [];\n\n if (this.hasLongpressContent) {\n if (!this.longpressDescriptor) {\n this.longpressDescriptor = document.createElement(\n 'div'\n ) as HTMLElement;\n\n this.longpressDescriptor.id = this._longpressId;\n this.longpressDescriptor.slot = this._longpressId;\n }\n const messageType = isIOS() || isAndroid() ? 'touch' : 'keyboard';\n this.longpressDescriptor.textContent =\n LONGPRESS_INSTRUCTIONS[messageType];\n this.appendChild(this.longpressDescriptor);\n descriptors.push(this._longpressId);\n } else {\n if (this.longpressDescriptor) this.longpressDescriptor.remove();\n descriptors = descriptors.filter(\n (descriptor) => descriptor !== this._longpressId\n );\n }\n if (descriptors.length) {\n trigger.setAttribute('aria-describedby', descriptors.join(' '));\n } else {\n trigger.removeAttribute('aria-describedby');\n }\n }\n\n private closeAllOverlays(): void {\n if (this.abortOverlay) this.abortOverlay(true);\n (\n [\n 'closeClickOverlay',\n 'closeHoverOverlay',\n 'closeLongpressOverlay',\n ] as closeOverlay[]\n ).forEach(async (name) => {\n const canClose = this[name] as Promise<() => void>;\n if (canClose == null) return;\n delete this[name];\n (await canClose)();\n });\n this.overlaidContent = undefined;\n }\n\n private manageOpen(): void {\n const openHandlers: Record<OverlayContentTypes | 'none', () => void> = {\n click: () => this.onTriggerClick(),\n hover: () => this.onTriggerMouseEnter(),\n longpress: () => this.onTriggerLongpress(),\n none: () => this.closeAllOverlays(),\n };\n openHandlers[this.open ?? 'none']();\n }\n\n private async openOverlay(\n target: HTMLElement,\n interaction: TriggerInteractions,\n content: HTMLElement,\n options: OverlayOptions\n ): Promise<() => void> {\n this.openStatePromise = new Promise(\n (res) => (this.openStateResolver = res)\n );\n this.addEventListener(\n 'sp-opened',\n () => {\n this.openStateResolver();\n },\n { once: true }\n );\n this.overlaidContent = content;\n return OverlayTrigger.openOverlay(\n target,\n interaction,\n content,\n options\n );\n }\n\n public static openOverlay = async (\n target: HTMLElement,\n interaction: TriggerInteractions,\n content: HTMLElement,\n options: OverlayOptions\n ): Promise<() => void> => {\n return openOverlay(target, interaction, content, options);\n };\n\n private get overlayOptions(): OverlayOptions {\n return {\n offset: this.offset,\n placement: this.placement,\n receivesFocus:\n !this.type || this.type === 'inline' || this.open === 'hover'\n ? undefined\n : 'auto',\n };\n }\n\n private onTrigger(event: CustomEvent<LongpressEvent>): void {\n const mouseIsEnteringHoverContent =\n event.type === 'mouseleave' &&\n this.open === 'hover' &&\n (event as unknown as MouseEvent).relatedTarget ===\n this.overlaidContent;\n if (mouseIsEnteringHoverContent && this.overlaidContent) {\n this.overlaidContent.addEventListener(\n 'mouseleave',\n (event: MouseEvent) => {\n const mouseIsEnteringTrigger =\n event.relatedTarget === this.targetContent;\n if (mouseIsEnteringTrigger) {\n return;\n }\n this.onTrigger(\n event as unknown as CustomEvent<LongpressEvent>\n );\n },\n { once: true }\n );\n return;\n }\n if (this.disabled) return;\n\n switch (event.type) {\n case 'mouseenter':\n case 'focusin':\n if (!this.open && this.hoverContent) {\n this.open = 'hover';\n }\n return;\n case 'mouseleave':\n case 'focusout':\n if (this.open === 'hover') {\n this.handleClose();\n }\n return;\n case 'click':\n if (this.clickContent) {\n this.open = event.type;\n }\n return;\n case 'longpress':\n if (this.longpressContent) {\n this._longpressEvent = event;\n this.open = event.type;\n }\n return;\n }\n }\n\n private prepareToFocusOverlayContent(overlayContent: HTMLElement): void {\n if (this.type !== 'modal') {\n return;\n }\n const firstFocusable = firstFocusableIn(overlayContent);\n if (!firstFocusable) {\n overlayContent.tabIndex = 0;\n }\n }\n\n public async onTriggerClick(): Promise<void> {\n if (\n !this.targetContent ||\n !this.clickContent ||\n this.closeClickOverlay\n ) {\n return;\n }\n const { targetContent, clickContent } = this;\n this.closeAllOverlays();\n this.prepareToFocusOverlayContent(clickContent);\n this.closeClickOverlay = this.openOverlay(\n targetContent,\n this.type ? this.type : 'click',\n clickContent,\n this.overlayOptions\n );\n }\n\n private _longpressEvent?: CustomEvent<LongpressEvent>;\n\n private async onTriggerLongpress(): Promise<void> {\n if (\n !this.targetContent ||\n !this.longpressContent ||\n this.closeLongpressOverlay\n ) {\n return;\n }\n const { targetContent, longpressContent } = this;\n this.closeAllOverlays();\n this.prepareToFocusOverlayContent(longpressContent);\n const notImmediatelyClosable =\n this._longpressEvent?.detail?.source !== 'keyboard';\n this.closeLongpressOverlay = this.openOverlay(\n targetContent,\n this.type ? this.type : 'longpress',\n longpressContent,\n {\n ...this.overlayOptions,\n receivesFocus: 'auto',\n notImmediatelyClosable,\n }\n );\n this._longpressEvent = undefined;\n }\n\n private abortOverlay: (cancelled: boolean) => void = () => {\n return;\n };\n\n public async onTriggerMouseEnter(): Promise<void> {\n if (\n !this.targetContent ||\n !this.hoverContent ||\n this.closeHoverOverlay\n ) {\n return;\n }\n const abortPromise: Promise<boolean> = new Promise((res) => {\n this.abortOverlay = res;\n });\n const { targetContent, hoverContent } = this;\n this.closeHoverOverlay = this.openOverlay(\n targetContent,\n 'hover',\n hoverContent,\n {\n abortPromise,\n ...this.overlayOptions,\n }\n );\n }\n\n private onClickSlotChange(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.clickContent = this.extractSlotContentFromEvent(event);\n this.manageOpen();\n }\n\n private onLongpressSlotChange(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.longpressContent = this.extractSlotContentFromEvent(event);\n this.hasLongpressContent =\n !!this.longpressContent || !!this.closeLongpressOverlay;\n this.manageOpen();\n }\n\n private onHoverSlotChange(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.hoverContent = this.extractSlotContentFromEvent(event);\n this.manageOpen();\n }\n\n private onTargetSlotChange(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.targetContent = this.extractSlotContentFromEvent(event);\n }\n\n private extractSlotContentFromEvent(event: Event): HTMLElement | undefined {\n const slot = event.target as HTMLSlotElement;\n const nodes = slot.assignedNodes({ flatten: true });\n return nodes.find((node) => node instanceof HTMLElement) as HTMLElement;\n }\n\n private openStatePromise = Promise.resolve();\n private openStateResolver!: () => void;\n\n protected override async getUpdateComplete(): Promise<boolean> {\n const complete = (await super.getUpdateComplete()) as boolean;\n await this.openStatePromise;\n return complete;\n }\n\n public override disconnectedCallback(): void {\n this.closeAllOverlays();\n super.disconnectedCallback();\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 state,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport type { LongpressEvent } from '@spectrum-web-components/action-button';\nimport { firstFocusableIn } from '@spectrum-web-components/shared/src/first-focusable-in.js';\nimport {\n isAndroid,\n isIOS,\n} from '@spectrum-web-components/shared/src/platform.js';\n\nimport {\n OverlayOpenCloseDetail,\n OverlayOptions,\n OverlayTriggerInteractions,\n Placement,\n TriggerInteractions,\n} from './overlay-types';\nimport { openOverlay } from './loader.js';\nimport overlayTriggerStyles from './overlay-trigger.css.js';\n\nexport type OverlayContentTypes = 'click' | 'hover' | 'longpress';\n\ntype closeOverlay =\n | 'closeClickOverlay'\n | 'closeHoverOverlay'\n | 'closeLongpressOverlay';\n\nexport const LONGPRESS_INSTRUCTIONS = {\n touch: 'Double tap and long press for additional options',\n keyboard: 'Press Space or Alt+Down Arrow for additional options',\n mouse: 'Click and hold for additional options',\n};\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 private closeClickOverlay?: Promise<() => void>;\n private closeLongpressOverlay?: Promise<() => void>;\n private closeHoverOverlay?: Promise<() => void>;\n\n public static override get styles(): CSSResultArray {\n return [overlayTriggerStyles];\n }\n\n /**\n * @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\"}\n * @attr\n */\n @property({ reflect: true })\n public placement: Placement = 'bottom';\n\n @property()\n public type?: OverlayTriggerInteractions;\n\n @property({ type: Number, reflect: true })\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 @state()\n public hasLongpressContent = false;\n\n private longpressDescriptor?: HTMLElement;\n private clickContent?: HTMLElement;\n private longpressContent?: HTMLElement;\n private hoverContent?: HTMLElement;\n private targetContent?: HTMLElement;\n private overlaidContent?: HTMLElement;\n\n private _longpressId = `longpress-describedby-descriptor`;\n\n private handleClose(event?: CustomEvent<OverlayOpenCloseDetail>): void {\n if (\n event &&\n event.detail.interaction !== this.open &&\n event.detail.interaction !== this.type\n ) {\n return;\n }\n this.removeAttribute('open');\n }\n\n protected override render(): TemplateResult {\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 @click=${this.onTrigger}\n @longpress=${this.onTrigger}\n @mouseenter=${this.onTrigger}\n @mouseleave=${this.onTrigger}\n @focusin=${this.onTrigger}\n @focusout=${this.onTrigger}\n @sp-closed=${this.handleClose}\n @slotchange=${this.onTargetSlotChange}\n name=\"trigger\"\n ></slot>\n <div id=\"overlay-content\">\n <slot\n @slotchange=${this.onClickSlotChange}\n name=\"click-content\"\n ></slot>\n <slot\n @slotchange=${this.onLongpressSlotChange}\n name=\"longpress-content\"\n ></slot>\n <slot\n @slotchange=${this.onHoverSlotChange}\n name=\"hover-content\"\n ></slot>\n <slot name=${this._longpressId}></slot>\n </div>\n `;\n /* eslint-enable lit-a11y/click-events-have-key-events */\n }\n\n protected override updated(changes: PropertyValues<this>): void {\n super.updated(changes);\n if (this.disabled && changes.has('disabled')) {\n this.closeAllOverlays();\n return;\n }\n if (changes.has('open')) {\n this.manageOpen();\n }\n if (changes.has('hasLongpressContent')) {\n this.manageLongpressDescriptor();\n }\n }\n\n protected manageLongpressDescriptor(): void {\n const trigger = this.querySelector(\n '[slot=\"trigger\"]'\n ) as SpectrumElement;\n const ariaDescribedby = trigger.getAttribute('aria-describedby');\n let descriptors = ariaDescribedby ? ariaDescribedby.split(/\\s+/) : [];\n\n if (this.hasLongpressContent) {\n if (!this.longpressDescriptor) {\n this.longpressDescriptor = document.createElement(\n 'div'\n ) as HTMLElement;\n\n this.longpressDescriptor.id = this._longpressId;\n this.longpressDescriptor.slot = this._longpressId;\n }\n const messageType = isIOS() || isAndroid() ? 'touch' : 'keyboard';\n this.longpressDescriptor.textContent =\n LONGPRESS_INSTRUCTIONS[messageType];\n this.appendChild(this.longpressDescriptor);\n descriptors.push(this._longpressId);\n } else {\n if (this.longpressDescriptor) this.longpressDescriptor.remove();\n descriptors = descriptors.filter(\n (descriptor) => descriptor !== this._longpressId\n );\n }\n if (descriptors.length) {\n trigger.setAttribute('aria-describedby', descriptors.join(' '));\n } else {\n trigger.removeAttribute('aria-describedby');\n }\n }\n\n private closeAllOverlays(): void {\n if (this.abortOverlay) this.abortOverlay(true);\n (\n [\n 'closeClickOverlay',\n 'closeHoverOverlay',\n 'closeLongpressOverlay',\n ] as closeOverlay[]\n ).forEach(async (name) => {\n const canClose = this[name] as Promise<() => void>;\n if (canClose == null) return;\n delete this[name];\n (await canClose)();\n });\n this.overlaidContent = undefined;\n }\n\n private manageOpen(): void {\n const openHandlers: Record<OverlayContentTypes | 'none', () => void> = {\n click: () => this.onTriggerClick(),\n hover: () => this.onTriggerMouseEnter(),\n longpress: () => this.onTriggerLongpress(),\n none: () => this.closeAllOverlays(),\n };\n openHandlers[this.open ?? 'none']();\n }\n\n private async openOverlay(\n target: HTMLElement,\n interaction: TriggerInteractions,\n content: HTMLElement,\n options: OverlayOptions\n ): Promise<() => void> {\n this.openStatePromise = new Promise(\n (res) => (this.openStateResolver = res)\n );\n this.addEventListener(\n 'sp-opened',\n () => {\n this.openStateResolver();\n },\n { once: true }\n );\n this.overlaidContent = content;\n return OverlayTrigger.openOverlay(\n target,\n interaction,\n content,\n options\n );\n }\n\n public static openOverlay = async (\n target: HTMLElement,\n interaction: TriggerInteractions,\n content: HTMLElement,\n options: OverlayOptions\n ): Promise<() => void> => {\n return openOverlay(target, interaction, content, options);\n };\n\n private get overlayOptions(): OverlayOptions {\n return {\n offset: this.offset,\n placement: this.placement,\n receivesFocus:\n !this.type || this.type === 'inline' || this.open === 'hover'\n ? undefined\n : 'auto',\n };\n }\n\n private onTrigger(event: CustomEvent<LongpressEvent>): void {\n const mouseIsEnteringHoverContent =\n event.type === 'mouseleave' &&\n this.open === 'hover' &&\n (event as unknown as MouseEvent).relatedTarget ===\n this.overlaidContent;\n if (mouseIsEnteringHoverContent && this.overlaidContent) {\n this.overlaidContent.addEventListener(\n 'mouseleave',\n (event: MouseEvent) => {\n const mouseIsEnteringTrigger =\n event.relatedTarget === this.targetContent;\n if (mouseIsEnteringTrigger) {\n return;\n }\n this.onTrigger(\n event as unknown as CustomEvent<LongpressEvent>\n );\n },\n { once: true }\n );\n return;\n }\n if (this.disabled) return;\n\n switch (event.type) {\n case 'mouseenter':\n case 'focusin':\n if (!this.open && this.hoverContent) {\n this.open = 'hover';\n }\n return;\n case 'mouseleave':\n case 'focusout':\n if (this.open === 'hover') {\n this.handleClose();\n }\n return;\n case 'click':\n if (this.clickContent) {\n this.open = event.type;\n }\n return;\n case 'longpress':\n if (this.longpressContent) {\n this._longpressEvent = event;\n this.open = event.type;\n }\n return;\n }\n }\n\n private prepareToFocusOverlayContent(overlayContent: HTMLElement): void {\n if (this.type !== 'modal') {\n return;\n }\n const firstFocusable = firstFocusableIn(overlayContent);\n if (!firstFocusable) {\n overlayContent.tabIndex = 0;\n }\n }\n\n public async onTriggerClick(): Promise<void> {\n if (\n !this.targetContent ||\n !this.clickContent ||\n this.closeClickOverlay\n ) {\n return;\n }\n const { targetContent, clickContent } = this;\n this.closeAllOverlays();\n this.prepareToFocusOverlayContent(clickContent);\n if (window.__swc.DEBUG) {\n window.__swc.ignoreWarningLevels.deprecation = true;\n }\n this.closeClickOverlay = this.openOverlay(\n targetContent,\n this.type ? this.type : 'click',\n clickContent,\n this.overlayOptions\n );\n if (window.__swc.DEBUG) {\n window.__swc.ignoreWarningLevels.deprecation = false;\n }\n }\n\n private _longpressEvent?: CustomEvent<LongpressEvent>;\n\n private async onTriggerLongpress(): Promise<void> {\n if (\n !this.targetContent ||\n !this.longpressContent ||\n this.closeLongpressOverlay\n ) {\n return;\n }\n const { targetContent, longpressContent } = this;\n this.closeAllOverlays();\n this.prepareToFocusOverlayContent(longpressContent);\n const notImmediatelyClosable =\n this._longpressEvent?.detail?.source !== 'keyboard';\n if (window.__swc.DEBUG) {\n window.__swc.ignoreWarningLevels.deprecation = true;\n }\n this.closeLongpressOverlay = this.openOverlay(\n targetContent,\n this.type ? this.type : 'longpress',\n longpressContent,\n {\n ...this.overlayOptions,\n receivesFocus: 'auto',\n notImmediatelyClosable,\n }\n );\n if (window.__swc.DEBUG) {\n window.__swc.ignoreWarningLevels.deprecation = false;\n }\n this._longpressEvent = undefined;\n }\n\n private abortOverlay: (cancelled: boolean) => void = () => {\n return;\n };\n\n public async onTriggerMouseEnter(): Promise<void> {\n if (\n !this.targetContent ||\n !this.hoverContent ||\n this.closeHoverOverlay\n ) {\n return;\n }\n const abortPromise: Promise<boolean> = new Promise((res) => {\n this.abortOverlay = res;\n });\n const { targetContent, hoverContent } = this;\n if (window.__swc.DEBUG) {\n window.__swc.ignoreWarningLevels.deprecation = true;\n }\n this.closeHoverOverlay = this.openOverlay(\n targetContent,\n 'hover',\n hoverContent,\n {\n abortPromise,\n ...this.overlayOptions,\n }\n );\n if (window.__swc.DEBUG) {\n window.__swc.ignoreWarningLevels.deprecation = false;\n }\n }\n\n private onClickSlotChange(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.clickContent = this.extractSlotContentFromEvent(event);\n this.manageOpen();\n }\n\n private onLongpressSlotChange(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.longpressContent = this.extractSlotContentFromEvent(event);\n this.hasLongpressContent =\n !!this.longpressContent || !!this.closeLongpressOverlay;\n this.manageOpen();\n }\n\n private onHoverSlotChange(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.hoverContent = this.extractSlotContentFromEvent(event);\n this.manageOpen();\n }\n\n private onTargetSlotChange(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.targetContent = this.extractSlotContentFromEvent(event);\n }\n\n private extractSlotContentFromEvent(event: Event): HTMLElement | undefined {\n const slot = event.target as HTMLSlotElement;\n const nodes = slot.assignedNodes({ flatten: true });\n return nodes.find((node) => node instanceof HTMLElement) as HTMLElement;\n }\n\n private openStatePromise = Promise.resolve();\n private openStateResolver!: () => void;\n\n protected override async getUpdateComplete(): Promise<boolean> {\n const complete = (await super.getUpdateComplete()) as boolean;\n await this.openStatePromise;\n return complete;\n }\n\n public override disconnectedCallback(): void {\n this.closeAllOverlays();\n super.disconnectedCallback();\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["html", "SpectrumElement", "property", "state", "firstFocusableIn", "isAndroid", "isIOS", "openOverlay", "overlayTriggerStyles", "_OverlayTrigger", "event", "changes", "trigger", "ariaDescribedby", "descriptors", "messageType", "descriptor", "name", "canClose", "_a", "target", "interaction", "content", "options", "res", "overlayContent", "targetContent", "clickContent", "_b", "longpressContent", "notImmediatelyClosable", "abortPromise", "hoverContent", "node", "complete", "__decorateClass"]
7
7
  }
package/src/loader.dev.js CHANGED
@@ -1,6 +1,21 @@
1
1
  "use strict";
2
2
  export const openOverlay = async (target, interaction, content, options) => {
3
+ if (true) {
4
+ var ignoreDeprecations = window.__swc.ignoreWarningLevels.deprecation;
5
+ }
3
6
  const { Overlay } = await import("@spectrum-web-components/overlay/src/overlay.js");
7
+ if (true) {
8
+ if (
9
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
10
+ // @ts-ignore
11
+ ignoreDeprecations && !window.__swc.ignoreWarningLevels.deprecation
12
+ ) {
13
+ window.__swc.ignoreWarningLevels.deprecation = ignoreDeprecations;
14
+ requestAnimationFrame(() => {
15
+ window.__swc.ignoreWarningLevels.deprecation = false;
16
+ });
17
+ }
18
+ }
4
19
  return Overlay.open(target, interaction, content, options);
5
20
  };
6
21
  //# sourceMappingURL=loader.dev.js.map