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