@spectrum-web-components/overlay 0.19.2-overlay.33 → 0.19.2
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/custom-elements.json +1212 -0
- package/package.json +6 -57
- package/src/OverlayTrigger.d.ts +31 -18
- package/src/OverlayTrigger.dev.js +245 -137
- package/src/OverlayTrigger.dev.js.map +3 -3
- package/src/OverlayTrigger.js +22 -54
- package/src/OverlayTrigger.js.map +3 -3
- 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/stories/overlay-story-components.js +2 -1
- package/stories/overlay-story-components.js.map +2 -2
- package/stories/overlay.stories.js +637 -652
- package/stories/overlay.stories.js.map +2 -2
- package/sync/overlay-trigger.d.ts +0 -4
- package/sync/overlay-trigger.dev.js +3 -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/index.js +3 -3
- package/test/index.js.map +2 -2
- package/test/overlay-lifecycle.test.js +61 -15
- package/test/overlay-lifecycle.test.js.map +2 -2
- package/test/overlay-trigger-click.test.js +2 -3
- package/test/overlay-trigger-click.test.js.map +2 -2
- package/test/overlay-trigger-extended.test.js +1 -1
- package/test/overlay-trigger-extended.test.js.map +2 -2
- package/test/overlay-trigger-hover-click.test.js +1 -1
- package/test/overlay-trigger-hover-click.test.js.map +2 -2
- package/test/overlay-trigger-hover.test.js +2 -2
- package/test/overlay-trigger-hover.test.js.map +2 -2
- package/test/overlay-trigger-longpress.test.js +1 -1
- package/test/overlay-trigger-longpress.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 +3 -3
- package/test/overlay.test.js.map +2 -2
- package/sp-overlay.d.ts +0 -11
- package/sp-overlay.dev.js +0 -14
- package/sp-overlay.dev.js.map +0 -7
- package/sp-overlay.js +0 -2
- package/sp-overlay.js.map +0 -7
- package/src/OverlayBase.d.ts +0 -91
- package/src/OverlayBase.dev.js +0 -521
- package/src/OverlayBase.dev.js.map +0 -7
- package/src/OverlayBase.js +0 -16
- package/src/OverlayBase.js.map +0 -7
- package/src/OverlayDialog.d.ts +0 -8
- package/src/OverlayDialog.dev.js +0 -43
- package/src/OverlayDialog.dev.js.map +0 -7
- package/src/OverlayDialog.js +0 -2
- package/src/OverlayDialog.js.map +0 -7
- package/src/OverlayElement.d.ts +0 -66
- package/src/OverlayElement.dev.js +0 -371
- package/src/OverlayElement.dev.js.map +0 -7
- package/src/OverlayElement.js +0 -9
- package/src/OverlayElement.js.map +0 -7
- package/src/OverlayNoPopover.d.ts +0 -8
- package/src/OverlayNoPopover.dev.js +0 -63
- 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 -37
- 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 -113
- 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 -35
- package/src/PlacementController.dev.js +0 -172
- 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.d.ts +0 -2
- 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/overlay-element.css.d.ts +0 -2
- package/src/overlay-element.css.dev.js +0 -7
- package/src/overlay-element.css.dev.js.map +0 -7
- package/src/overlay-element.css.js +0 -4
- package/src/overlay-element.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/sizePlugin.d.ts +0 -12
- package/src/sizePlugin.dev.js +0 -18
- package/src/sizePlugin.dev.js.map +0 -7
- package/src/sizePlugin.js +0 -2
- package/src/sizePlugin.js.map +0 -7
- package/src/topLayerOverTransforms.d.ts +0 -22
- package/src/topLayerOverTransforms.dev.js +0 -161
- 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 -216
- 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 -739
- package/test/overlay-element.test.js.map +0 -7
package/src/OverlayBase.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["OverlayBase.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 type { Placement } from '@floating-ui/dom';\nimport {\n html,\n PropertyValues,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport {\n property,\n query,\n queryAssignedElements,\n state,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport { conditionAttributeWithId } from '@spectrum-web-components/base/src/condition-attribute-with-id.js';\nimport {\n ElementResolutionController,\n elementResolverUpdatedSymbol,\n} from '@spectrum-web-components/reactive-controllers/src/ElementResolution.js';\nimport type { VirtualTrigger } from './VirtualTrigger.js';\nimport {\n ifDefined,\n styleMap,\n} from '@spectrum-web-components/base/src/directives.js';\nimport styles from './overlay-base.css.js';\nimport { overlayStack } from './OverlayStack.js';\nimport { PlacementController } from './PlacementController.js';\n\nexport type OpenableElement = HTMLElement & {\n open: boolean;\n tipElement?: HTMLElement;\n updateComplete?: Promise<void>;\n};\n\nexport type OverlayTypes = 'auto' | 'hint' | 'manual' | 'modal' | 'page';\n\nconst LONGPRESS_DURATION = 300;\n\nexport type LongpressEvent = {\n source: 'pointer' | 'keyboard';\n};\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\nexport class BeforetoggleClosedEvent extends Event {\n currentState = 'open';\n newState = 'closed';\n constructor() {\n super('beforetoggle', {\n bubbles: false,\n composed: false,\n });\n }\n}\n\nexport class BeforetoggleOpenEvent extends Event {\n currentState = 'closed';\n newState = 'open';\n constructor() {\n super('beforetoggle', {\n bubbles: false,\n composed: false,\n });\n }\n}\n\nexport class OverlayBase extends SpectrumElement {\n static override styles = [styles];\n\n @query('dialog')\n dialogEl!: HTMLDialogElement & {\n showPopover(): void;\n hidePopover(): void;\n };\n\n @property({ type: Boolean })\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(disabled: boolean) {\n this._disabled = disabled;\n if (disabled) {\n this.wasOpen = this.open;\n this.open = false;\n } else {\n this.open = this.open || this.wasOpen;\n this.wasOpen = false;\n }\n }\n\n private _disabled = false;\n\n @queryAssignedElements({ flatten: true })\n elements!: OpenableElement[];\n\n public parentOverlayToForceClose?: OverlayBase;\n\n protected longpressed = false;\n\n private longressTimeout!: ReturnType<typeof setTimeout>;\n\n @property()\n offset: number | [number, number] = 6;\n\n public placementController = new PlacementController(this);\n\n @property({ type: Boolean, reflect: true })\n get open(): boolean {\n return this._open;\n }\n\n set open(open: boolean) {\n if (open && this.disabled) return;\n if (open === this.open) return;\n this._open = open;\n this.requestUpdate('open', !this.open);\n }\n\n private _open = false;\n\n static openCount = 1;\n\n @property()\n placement?: Placement;\n\n @property({ attribute: 'receives-focus' })\n receivesFocus: 'true' | 'false' | 'auto' = 'auto';\n\n private releaseAriaDescribedby = (): void => {\n return;\n };\n\n @query('slot')\n slotEl!: HTMLSlotElement;\n\n @property()\n trigger?: string;\n\n @state()\n triggerElement: HTMLElement | VirtualTrigger | null = null;\n\n @state()\n triggerInteraction?: 'click' | 'longpress' | 'hover';\n\n @property()\n type: OverlayTypes = 'hint';\n\n protected wasOpen = false;\n\n private elementResolver = new ElementResolutionController(this);\n\n private get usesDialog(): boolean {\n return this.type === 'modal' || this.type === 'page';\n }\n\n private get popoverValue(): 'auto' | 'manual' | undefined {\n switch (this.type) {\n case 'modal':\n case 'page':\n return undefined;\n case 'hint':\n return 'manual';\n default:\n return this.type;\n }\n }\n\n protected manageChildren(open: boolean): void {\n const eventName = open ? 'sp-opened' : 'sp-closed';\n let announced = false;\n this.elements.forEach((el) => {\n if (typeof el.open !== 'undefined') {\n el.open = open;\n el.dispatchEvent(\n new Event(eventName, {\n bubbles: false,\n composed: false,\n })\n );\n }\n if (!announced) {\n this.dispatchEvent(\n new Event(eventName, {\n bubbles: true,\n composed: true,\n })\n );\n announced = true;\n }\n });\n }\n\n protected async manageDialogOpen(): Promise<void> {\n console.warn(\n 'Implement the `manageDialogOpen` method in a class extension.'\n );\n }\n\n protected async managePopoverOpen(): Promise<void> {\n console.warn(\n 'Implement the `managePopoverOpen` method in a class extension.'\n );\n }\n\n protected get requiresPosition(): boolean {\n // Do no position \"page\" overlays as they should block the entrie UI.\n if (this.type === 'page' || !this.open) return false;\n // Do not position content without a trigger element, what would you position it in relation to?\n // Do not automaticallyu position contnent, unless it is a \"hint\".\n if (!this.triggerElement || (!this.placement && this.type !== 'hint'))\n return false;\n return true;\n }\n\n protected managePosition(): void {\n if (!this.requiresPosition) return;\n\n const offset = this.offset || 0;\n const trigger = this.triggerElement as HTMLElement;\n const placement = (this.placement as Placement) || 'right';\n\n this.placementController.placeOverlay(this.dialogEl, {\n // delayed?: boolean,\n offset,\n placement,\n // notImmediatelyClosable?: boolean, // rename or place behind other API options\n // receivesFocus?: 'auto';\n // root?: HTMLElement;\n trigger,\n type: this.type,\n });\n }\n\n protected async manageOpen(): Promise<void> {\n if (!this.isConnected) return;\n\n if (!this.hasUpdated) {\n await this.updateComplete;\n }\n\n if (this.open) {\n overlayStack.add(this);\n } else {\n overlayStack.remove(this);\n }\n\n if (this.usesDialog) {\n this.manageDialogOpen();\n } else {\n this.managePopoverOpen();\n }\n if (this.open) {\n OverlayBase.openCount += 1;\n // this.manageChildren(this.open);\n // this.managePosition();\n } else {\n // If the focus remains inside of the overlay or\n // a slotted descendent of the overlay you need to return\n // focus back to the trigger.\n const getAncestors = (): HTMLElement[] => {\n const ancestors: HTMLElement[] = [];\n // eslint-disable-next-line @spectrum-web-components/document-active-element\n let currentNode = document.activeElement;\n while (\n currentNode?.shadowRoot &&\n currentNode.shadowRoot.activeElement\n ) {\n currentNode = currentNode.shadowRoot.activeElement;\n }\n while (currentNode) {\n const ancestor =\n currentNode.assignedSlot ||\n currentNode.parentElement ||\n (currentNode.getRootNode() as ShadowRoot)?.host;\n if (ancestor) {\n ancestors.push(ancestor as HTMLElement);\n }\n currentNode = ancestor;\n }\n return ancestors;\n };\n if (\n (this.triggerElement as HTMLElement)?.focus &&\n (this.contains(\n (this.getRootNode() as Document).activeElement\n ) ||\n !!getAncestors().find((el) => el === this))\n ) {\n (this.triggerElement as HTMLElement).focus();\n }\n }\n }\n\n protected manageTriggerElement(triggerElement: HTMLElement | null): void {\n if (triggerElement) {\n triggerElement.removeEventListener('click', this.handleClick);\n triggerElement.removeEventListener('focusin', this.handleFocusin);\n triggerElement.removeEventListener('focusout', this.handleFocusout);\n triggerElement.removeEventListener(\n 'pointerenter',\n this.handlePointerenter\n );\n triggerElement.removeEventListener(\n 'pointerleave',\n this.handlePointerleave\n );\n triggerElement.addEventListener(\n 'pointerdown',\n this.handlePointerdown\n );\n triggerElement.removeEventListener('keydown', this.handleKeydown);\n triggerElement.removeEventListener('keyup', this.handleKeyup);\n triggerElement.removeEventListener(\n 'longpress',\n this.handleLongpress\n );\n this.releaseAriaDescribedby();\n }\n if (\n !this.triggerElement ||\n !!(this.triggerElement as VirtualTrigger).updateBoundingClientRect\n )\n return;\n const nextTriggerElement = this.triggerElement as HTMLElement;\n switch (this.triggerInteraction) {\n case 'click':\n nextTriggerElement.addEventListener('click', this.handleClick);\n return;\n case 'longpress':\n nextTriggerElement.addEventListener(\n 'pointerdown',\n this.handlePointerdown\n );\n nextTriggerElement.addEventListener(\n 'keydown',\n this.handleKeydown\n );\n nextTriggerElement.addEventListener('keyup', this.handleKeyup);\n nextTriggerElement.addEventListener(\n 'longpress',\n this.handleLongpress\n );\n return;\n case 'hover':\n nextTriggerElement.addEventListener(\n 'focusin',\n this.handleFocusin\n );\n nextTriggerElement.addEventListener(\n 'focusout',\n this.handleFocusout\n );\n nextTriggerElement.addEventListener(\n 'pointerenter',\n this.handlePointerenter\n );\n nextTriggerElement.addEventListener(\n 'pointerleave',\n this.handlePointerleave\n );\n if (this.receivesFocus === 'true') return;\n\n const releaseAriaDescribedby = conditionAttributeWithId(\n nextTriggerElement,\n 'aria-describedby',\n [this.id]\n );\n this.releaseAriaDescribedby = () => {\n releaseAriaDescribedby();\n this.releaseAriaDescribedby = () => {\n return;\n };\n };\n return;\n }\n }\n\n private handlePointerdown = (event: PointerEvent): void => {\n if (!this.triggerElement) return;\n if (event.button !== 0) return;\n const triggerElement = this.triggerElement as HTMLElement;\n this.longpressed = false;\n triggerElement.addEventListener('pointerup', this.handlePointerup);\n triggerElement.addEventListener('pointercancel', this.handlePointerup);\n this.longressTimeout = setTimeout(() => {\n if (!triggerElement) return;\n triggerElement.dispatchEvent(\n new CustomEvent<LongpressEvent>('longpress', {\n bubbles: true,\n composed: true,\n detail: {\n source: 'pointer',\n },\n })\n );\n }, LONGPRESS_DURATION);\n };\n\n private handlePointerup = (): void => {\n clearTimeout(this.longressTimeout);\n if (!this.triggerElement) return;\n if (this.longpressed) {\n this.open = true;\n }\n setTimeout(() => {\n this.longpressed = false;\n });\n const triggerElement = this.triggerElement as HTMLElement;\n triggerElement.removeEventListener('pointerup', this.handlePointerup);\n triggerElement.removeEventListener(\n 'pointercancel',\n this.handlePointerup\n );\n };\n\n /**\n * @private\n */\n protected handleKeydown = (event: KeyboardEvent): void => {\n const { code, altKey } = event;\n if (code === 'Space' || (altKey && code === 'ArrowDown')) {\n if (code === 'ArrowDown') {\n event.stopPropagation();\n event.stopImmediatePropagation();\n }\n }\n };\n\n protected handleKeyup = (event: KeyboardEvent): void => {\n const { code, altKey } = event;\n if (code === 'Space' || (altKey && code === 'ArrowDown')) {\n event.stopPropagation();\n this.dispatchEvent(\n new CustomEvent<LongpressEvent>('longpress', {\n bubbles: true,\n composed: true,\n detail: {\n source: 'keyboard',\n },\n })\n );\n }\n };\n\n protected handleClick = (): void => {\n if (this.longpressed) return;\n this.open = !this.open;\n };\n\n private focusedin = false;\n\n protected handleFocusin = (): void => {\n this.open = true;\n this.focusedin = true;\n };\n\n protected handleFocusout = (): void => {\n this.focusedin = false;\n if (this.pointerentered) return;\n this.open = false;\n };\n\n private pointerentered = false;\n\n protected handlePointerenter = (): void => {\n this.open = true;\n this.pointerentered = true;\n };\n\n protected handlePointerleave = (): void => {\n this.pointerentered = false;\n const triggerElement = this.triggerElement as HTMLElement;\n if (this.focusedin && triggerElement.matches(':focus-visible')) return;\n this.open = false;\n };\n\n protected handleLongpress = (): void => {\n this.open = true;\n this.longpressed = true;\n };\n\n protected handleBeforetoggle({\n newState: open,\n }: Event & { newState: string }): void {\n if (open === 'open') {\n this.handlePopovershow();\n } else {\n this.handlePopoverhide();\n }\n }\n\n protected handlePopoverhide(): void {\n this.open = false;\n this.dispatchEvent(new BeforetoggleClosedEvent());\n // const triggerElement = this.triggerElement as HTMLElement;\n // if (this.triggerInteraction === 'click') {\n // requestAnimationFrame(() => {\n // triggerElement.addEventListener('click', this.handleClick);\n // });\n // }\n }\n\n protected handlePopovershow(): void {\n this.dispatchEvent(new BeforetoggleOpenEvent());\n }\n\n override willUpdate(changes: PropertyValues): void {\n if (!this.hasAttribute('id')) {\n this.setAttribute(\n 'id',\n `${this.tagName.toLowerCase()}-${crypto\n .randomUUID()\n .slice(0, 8)}`\n );\n }\n if (\n changes.has('open') &&\n (typeof changes.get('open') !== 'undefined' || this.open)\n ) {\n this.manageOpen();\n }\n if (changes.has('trigger')) {\n const [id, interaction] = this.trigger?.split('@') || [];\n this.elementResolver.selector = id ? `#${id}` : '';\n this.triggerInteraction = interaction as\n | 'click'\n | 'longpress'\n | 'hover'\n | undefined;\n }\n const oldTrigger = this.triggerElement as HTMLElement;\n if (changes.has(elementResolverUpdatedSymbol)) {\n this.triggerElement = this.elementResolver.element;\n this.manageTriggerElement(oldTrigger);\n }\n if (changes.has('triggerElement')) {\n this.manageTriggerElement(changes.get('triggerElement'));\n }\n }\n\n protected override updated(changes: PropertyValues): void {\n super.updated(changes);\n if (changes.has('placement')) {\n if (this.placement) {\n this.dialogEl.setAttribute('actual-placement', this.placement);\n } else {\n this.dialogEl.removeAttribute('actual-placement');\n }\n if (typeof changes.get('placement') !== 'undefined') {\n this.managePosition();\n }\n }\n }\n\n public override render(): TemplateResult {\n const hasPopoverAttribute = 'popover' in this;\n const popoverValue = hasPopoverAttribute\n ? this.popoverValue\n : undefined;\n return html`\n <dialog\n part=\"dialog\"\n popover=${ifDefined(popoverValue)}\n @close=${() => {\n this.open = false;\n }}\n @cancel=${() => {\n this.open = false;\n }}\n @beforetoggle=${this.handleBeforetoggle}\n @popovershow=${this.handlePopovershow}\n style=${styleMap({\n '--swc-overlay-z-index': OverlayBase.openCount.toString(),\n })}\n >\n <div part=\"content\">\n <slot></slot>\n </div>\n </dialog>\n `;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n // this.manageOpen();\n this.addEventListener('close', () => {\n this.open = false;\n });\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["html", "SpectrumElement", "property", "query", "queryAssignedElements", "state", "conditionAttributeWithId", "ElementResolutionController", "elementResolverUpdatedSymbol", "ifDefined", "styleMap", "styles", "overlayStack", "PlacementController", "LONGPRESS_DURATION", "_OverlayBase", "event", "triggerElement", "code", "altKey", "disabled", "open", "eventName", "announced", "el", "offset", "trigger", "placement", "_a", "getAncestors", "ancestors", "currentNode", "ancestor", "nextTriggerElement", "releaseAriaDescribedby", "changes", "id", "interaction", "oldTrigger", "popoverValue", "__decorateClass"]
|
|
7
|
-
}
|
package/src/OverlayDialog.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { ReactiveElement } from 'lit';
|
|
2
|
-
import { OverlayBase } from './OverlayBase.js';
|
|
3
|
-
declare type Constructor<T = Record<string, unknown>> = {
|
|
4
|
-
new (...args: any[]): T;
|
|
5
|
-
prototype: T;
|
|
6
|
-
};
|
|
7
|
-
export declare function OverlayDialog<T extends Constructor<OverlayBase>>(constructor: T): T & Constructor<ReactiveElement>;
|
|
8
|
-
export {};
|
package/src/OverlayDialog.dev.js
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
export function OverlayDialog(constructor) {
|
|
3
|
-
class OverlayWithDialog extends constructor {
|
|
4
|
-
async manageDialogOpen() {
|
|
5
|
-
if (this.open) {
|
|
6
|
-
await this.managePosition();
|
|
7
|
-
requestAnimationFrame(() => {
|
|
8
|
-
requestAnimationFrame(() => {
|
|
9
|
-
this.manageChildren(true);
|
|
10
|
-
requestAnimationFrame(() => {
|
|
11
|
-
if (this.isConnected && !this.dialogEl.open)
|
|
12
|
-
this.dialogEl.showModal();
|
|
13
|
-
});
|
|
14
|
-
});
|
|
15
|
-
});
|
|
16
|
-
} else {
|
|
17
|
-
let hasSelfManagedChild = false;
|
|
18
|
-
const close = (event) => {
|
|
19
|
-
var _a, _b;
|
|
20
|
-
(_a = event == null ? void 0 : event.target) == null ? void 0 : _a.removeEventListener("transitionend", close);
|
|
21
|
-
(_b = event == null ? void 0 : event.target) == null ? void 0 : _b.removeEventListener("close", close);
|
|
22
|
-
this.dialogEl.close();
|
|
23
|
-
this.manageChildren(false);
|
|
24
|
-
};
|
|
25
|
-
this.elements.forEach((element) => {
|
|
26
|
-
if (typeof element.open !== "undefined") {
|
|
27
|
-
if (element.open) {
|
|
28
|
-
element.addEventListener("transitionend", close);
|
|
29
|
-
element.addEventListener("close", close);
|
|
30
|
-
hasSelfManagedChild = true;
|
|
31
|
-
element.open = false;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
if (!hasSelfManagedChild) {
|
|
36
|
-
close();
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
return OverlayWithDialog;
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=OverlayDialog.dev.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["OverlayDialog.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*/\nimport { ReactiveElement } from 'lit';\nimport { OpenableElement, OverlayBase } from './OverlayBase.dev.js'\n\ntype Constructor<T = Record<string, unknown>> = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n new (...args: any[]): T;\n prototype: T;\n};\n\nexport function OverlayDialog<T extends Constructor<OverlayBase>>(\n constructor: T\n): T & Constructor<ReactiveElement> {\n class OverlayWithDialog extends constructor {\n protected override async manageDialogOpen(): Promise<void> {\n if (this.open) {\n await this.managePosition();\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n this.manageChildren(true);\n requestAnimationFrame(() => {\n // Ensure that child content is fully \"on the DOM\" before showing the modal.\n // This allow for that content to be available to the focus algorithm of that process.\n if (this.isConnected && !this.dialogEl.open)\n this.dialogEl.showModal();\n });\n });\n });\n } else {\n let hasSelfManagedChild = false;\n const close = (event?: Event): void => {\n event?.target?.removeEventListener('transitionend', close);\n event?.target?.removeEventListener('close', close);\n this.dialogEl.close();\n this.manageChildren(false);\n };\n this.elements.forEach((element: OpenableElement): void => {\n if (typeof element.open !== 'undefined') {\n if (element.open) {\n element.addEventListener('transitionend', close);\n element.addEventListener('close', close);\n hasSelfManagedChild = true;\n element.open = false;\n }\n }\n });\n if (!hasSelfManagedChild) {\n close();\n }\n }\n }\n }\n return OverlayWithDialog;\n}\n"],
|
|
5
|
-
"mappings": ";AAoBO,gBAAS,cACZ,aACgC;AAChC,QAAM,0BAA0B,YAAY;AAAA,IACxC,MAAyB,mBAAkC;AACvD,UAAI,KAAK,MAAM;AACX,cAAM,KAAK,eAAe;AAC1B,8BAAsB,MAAM;AACxB,gCAAsB,MAAM;AACxB,iBAAK,eAAe,IAAI;AACxB,kCAAsB,MAAM;AAGxB,kBAAI,KAAK,eAAe,CAAC,KAAK,SAAS;AACnC,qBAAK,SAAS,UAAU;AAAA,YAChC,CAAC;AAAA,UACL,CAAC;AAAA,QACL,CAAC;AAAA,MACL,OAAO;AACH,YAAI,sBAAsB;AAC1B,cAAM,QAAQ,CAAC,UAAwB;AAxCvD;AAyCoB,+CAAO,WAAP,mBAAe,oBAAoB,iBAAiB;AACpD,+CAAO,WAAP,mBAAe,oBAAoB,SAAS;AAC5C,eAAK,SAAS,MAAM;AACpB,eAAK,eAAe,KAAK;AAAA,QAC7B;AACA,aAAK,SAAS,QAAQ,CAAC,YAAmC;AACtD,cAAI,OAAO,QAAQ,SAAS,aAAa;AACrC,gBAAI,QAAQ,MAAM;AACd,sBAAQ,iBAAiB,iBAAiB,KAAK;AAC/C,sBAAQ,iBAAiB,SAAS,KAAK;AACvC,oCAAsB;AACtB,sBAAQ,OAAO;AAAA,YACnB;AAAA,UACJ;AAAA,QACJ,CAAC;AACD,YAAI,CAAC,qBAAqB;AACtB,gBAAM;AAAA,QACV;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACA,SAAO;AACX;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/src/OverlayDialog.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";export function OverlayDialog(n){class r extends n{async manageDialogOpen(){if(this.open)await this.managePosition(),requestAnimationFrame(()=>{requestAnimationFrame(()=>{this.manageChildren(!0),requestAnimationFrame(()=>{this.isConnected&&!this.dialogEl.open&&this.dialogEl.showModal()})})});else{let t=!1;const i=e=>{var o,a;(o=e==null?void 0:e.target)==null||o.removeEventListener("transitionend",i),(a=e==null?void 0:e.target)==null||a.removeEventListener("close",i),this.dialogEl.close(),this.manageChildren(!1)};this.elements.forEach(e=>{typeof e.open!="undefined"&&e.open&&(e.addEventListener("transitionend",i),e.addEventListener("close",i),t=!0,e.open=!1)}),t||i()}}}return r}
|
|
2
|
-
//# sourceMappingURL=OverlayDialog.js.map
|
package/src/OverlayDialog.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["OverlayDialog.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*/\nimport { ReactiveElement } from 'lit';\nimport { OpenableElement, OverlayBase } from './OverlayBase.js';\n\ntype Constructor<T = Record<string, unknown>> = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n new (...args: any[]): T;\n prototype: T;\n};\n\nexport function OverlayDialog<T extends Constructor<OverlayBase>>(\n constructor: T\n): T & Constructor<ReactiveElement> {\n class OverlayWithDialog extends constructor {\n protected override async manageDialogOpen(): Promise<void> {\n if (this.open) {\n await this.managePosition();\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n this.manageChildren(true);\n requestAnimationFrame(() => {\n // Ensure that child content is fully \"on the DOM\" before showing the modal.\n // This allow for that content to be available to the focus algorithm of that process.\n if (this.isConnected && !this.dialogEl.open)\n this.dialogEl.showModal();\n });\n });\n });\n } else {\n let hasSelfManagedChild = false;\n const close = (event?: Event): void => {\n event?.target?.removeEventListener('transitionend', close);\n event?.target?.removeEventListener('close', close);\n this.dialogEl.close();\n this.manageChildren(false);\n };\n this.elements.forEach((element: OpenableElement): void => {\n if (typeof element.open !== 'undefined') {\n if (element.open) {\n element.addEventListener('transitionend', close);\n element.addEventListener('close', close);\n hasSelfManagedChild = true;\n element.open = false;\n }\n }\n });\n if (!hasSelfManagedChild) {\n close();\n }\n }\n }\n }\n return OverlayWithDialog;\n}\n"],
|
|
5
|
-
"mappings": "aAoBO,gBAAS,cACZA,EACgC,CAChC,MAAMC,UAA0BD,CAAY,CACxC,MAAyB,kBAAkC,CACvD,GAAI,KAAK,KACL,MAAM,KAAK,eAAe,EAC1B,sBAAsB,IAAM,CACxB,sBAAsB,IAAM,CACxB,KAAK,eAAe,EAAI,EACxB,sBAAsB,IAAM,CAGpB,KAAK,aAAe,CAAC,KAAK,SAAS,MACnC,KAAK,SAAS,UAAU,CAChC,CAAC,CACL,CAAC,CACL,CAAC,MACE,CACH,IAAIE,EAAsB,GAC1B,MAAMC,EAASC,GAAwB,CAxCvD,IAAAC,EAAAC,GAyCoBD,EAAAD,GAAA,YAAAA,EAAO,SAAP,MAAAC,EAAe,oBAAoB,gBAAiBF,IACpDG,EAAAF,GAAA,YAAAA,EAAO,SAAP,MAAAE,EAAe,oBAAoB,QAASH,GAC5C,KAAK,SAAS,MAAM,EACpB,KAAK,eAAe,EAAK,CAC7B,EACA,KAAK,SAAS,QAASI,GAAmC,CAClD,OAAOA,EAAQ,MAAS,aACpBA,EAAQ,OACRA,EAAQ,iBAAiB,gBAAiBJ,CAAK,EAC/CI,EAAQ,iBAAiB,QAASJ,CAAK,EACvCD,EAAsB,GACtBK,EAAQ,KAAO,GAG3B,CAAC,EACIL,GACDC,EAAM,CAEd,CACJ,CACJ,CACA,OAAOF,CACX",
|
|
6
|
-
"names": ["constructor", "OverlayWithDialog", "hasSelfManagedChild", "close", "event", "_a", "_b", "element"]
|
|
7
|
-
}
|
package/src/OverlayElement.d.ts
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { Placement } from '@floating-ui/dom';
|
|
2
|
-
import { PropertyValues, SpectrumElement } from '@spectrum-web-components/base';
|
|
3
|
-
export declare const supportTopLayer: boolean;
|
|
4
|
-
export declare type LongpressEvent = {
|
|
5
|
-
source: 'pointer' | 'keyboard';
|
|
6
|
-
};
|
|
7
|
-
export declare const LONGPRESS_INSTRUCTIONS: {
|
|
8
|
-
touch: string;
|
|
9
|
-
keyboard: string;
|
|
10
|
-
mouse: string;
|
|
11
|
-
};
|
|
12
|
-
declare type OpenableElement = HTMLElement & {
|
|
13
|
-
open: boolean;
|
|
14
|
-
tipElement?: HTMLElement;
|
|
15
|
-
updateComplete?: Promise<void>;
|
|
16
|
-
};
|
|
17
|
-
export declare class Overlay extends SpectrumElement {
|
|
18
|
-
static styles: import("@spectrum-web-components/base").CSSResult[];
|
|
19
|
-
delayed: boolean;
|
|
20
|
-
dialogEl: HTMLDialogElement & {
|
|
21
|
-
showPopover(): void;
|
|
22
|
-
hidePopover(): void;
|
|
23
|
-
};
|
|
24
|
-
elements: OpenableElement[];
|
|
25
|
-
id: string;
|
|
26
|
-
protected longpressed: boolean;
|
|
27
|
-
offset: number | [number, number];
|
|
28
|
-
open: boolean;
|
|
29
|
-
placement?: Placement;
|
|
30
|
-
receivesFocus: 'true' | 'false' | 'auto';
|
|
31
|
-
slotEl: HTMLSlotElement;
|
|
32
|
-
trigger?: string;
|
|
33
|
-
triggerElement: HTMLElement | null;
|
|
34
|
-
triggerInteraction?: 'click' | 'longpress' | 'hover';
|
|
35
|
-
type: 'auto' | 'hint' | 'manual' | 'modal' | 'page';
|
|
36
|
-
private elementResolver;
|
|
37
|
-
private get usesDialog();
|
|
38
|
-
private get popoverValue();
|
|
39
|
-
protected manageChildren(open: boolean): void;
|
|
40
|
-
protected manageDialogOpen(): void;
|
|
41
|
-
protected managePopoverOpen(): void;
|
|
42
|
-
protected get requiresPosition(): boolean;
|
|
43
|
-
protected managePosition(): void;
|
|
44
|
-
protected manageOpen(): Promise<void>;
|
|
45
|
-
private releaseAriaDescribedby;
|
|
46
|
-
protected manageTriggerElement(triggerElement: HTMLElement | null): void;
|
|
47
|
-
private handlePointerdown;
|
|
48
|
-
private handlePointerup;
|
|
49
|
-
/**
|
|
50
|
-
* @private
|
|
51
|
-
*/
|
|
52
|
-
protected handleKeydown: (event: KeyboardEvent) => void;
|
|
53
|
-
protected handleKeyup: (event: KeyboardEvent) => void;
|
|
54
|
-
protected handleClick: () => void;
|
|
55
|
-
private focusedin;
|
|
56
|
-
protected handleFocusin: () => void;
|
|
57
|
-
protected handleFocusout: () => void;
|
|
58
|
-
private pointerentered;
|
|
59
|
-
protected handlePointerenter: () => void;
|
|
60
|
-
protected handlePointerleave: () => void;
|
|
61
|
-
protected handleLongpress: () => void;
|
|
62
|
-
protected handlePopoverhide(): void;
|
|
63
|
-
willUpdate(changes: PropertyValues): void;
|
|
64
|
-
render(): import("lit-html").TemplateResult<1>;
|
|
65
|
-
}
|
|
66
|
-
export {};
|
|
@@ -1,371 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __decorateClass = (decorators, target, key, kind) => {
|
|
5
|
-
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
6
|
-
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
7
|
-
if (decorator = decorators[i])
|
|
8
|
-
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
9
|
-
if (kind && result)
|
|
10
|
-
__defProp(target, key, result);
|
|
11
|
-
return result;
|
|
12
|
-
};
|
|
13
|
-
import { html, SpectrumElement } from "@spectrum-web-components/base";
|
|
14
|
-
import { property, query, queryAssignedElements, state } from "@spectrum-web-components/base/src/decorators.js";
|
|
15
|
-
import { ifDefined, styleMap } from "@spectrum-web-components/base/src/directives.js";
|
|
16
|
-
import { ElementResolutionController, elementResolverUpdatedSymbol } from "@spectrum-web-components/reactive-controllers/src/ElementResolution.js";
|
|
17
|
-
import {
|
|
18
|
-
conditionAttributeWithId
|
|
19
|
-
} from "@spectrum-web-components/base/src/condition-attribute-with-id.js";
|
|
20
|
-
import styles from "./overlay-element.css.js";
|
|
21
|
-
import { updateOverlayPosition } from "./placement.dev.js";
|
|
22
|
-
export const supportTopLayer = CSS.supports("selector(:open)");
|
|
23
|
-
const LONGPRESS_DURATION = 300;
|
|
24
|
-
let LONGPRESS_TIMEOUT;
|
|
25
|
-
export const LONGPRESS_INSTRUCTIONS = {
|
|
26
|
-
touch: "Double tap and long press for additional options",
|
|
27
|
-
keyboard: "Press Space or Alt+Down Arrow for additional options",
|
|
28
|
-
mouse: "Click and hold for additional options"
|
|
29
|
-
};
|
|
30
|
-
const _Overlay = class extends SpectrumElement {
|
|
31
|
-
constructor() {
|
|
32
|
-
super(...arguments);
|
|
33
|
-
this.delayed = false;
|
|
34
|
-
this.id = "";
|
|
35
|
-
this.longpressed = false;
|
|
36
|
-
this.offset = 6;
|
|
37
|
-
this.open = false;
|
|
38
|
-
this.receivesFocus = "auto";
|
|
39
|
-
this.triggerElement = null;
|
|
40
|
-
this.type = "hint";
|
|
41
|
-
this.elementResolver = new ElementResolutionController(this);
|
|
42
|
-
this.releaseAriaDescribedby = () => {
|
|
43
|
-
return;
|
|
44
|
-
};
|
|
45
|
-
this.handlePointerdown = (event) => {
|
|
46
|
-
if (!this.triggerElement)
|
|
47
|
-
return;
|
|
48
|
-
if (event.button !== 0)
|
|
49
|
-
return;
|
|
50
|
-
this.longpressed = false;
|
|
51
|
-
this.triggerElement.addEventListener("pointerup", this.handlePointerup);
|
|
52
|
-
this.triggerElement.addEventListener("pointercancel", this.handlePointerup);
|
|
53
|
-
LONGPRESS_TIMEOUT = setTimeout(() => {
|
|
54
|
-
if (!this.triggerElement)
|
|
55
|
-
return;
|
|
56
|
-
this.triggerElement.dispatchEvent(
|
|
57
|
-
new CustomEvent("longpress", {
|
|
58
|
-
bubbles: true,
|
|
59
|
-
composed: true,
|
|
60
|
-
detail: {
|
|
61
|
-
source: "pointer"
|
|
62
|
-
}
|
|
63
|
-
})
|
|
64
|
-
);
|
|
65
|
-
}, LONGPRESS_DURATION);
|
|
66
|
-
};
|
|
67
|
-
this.handlePointerup = () => {
|
|
68
|
-
clearTimeout(LONGPRESS_TIMEOUT);
|
|
69
|
-
if (!this.triggerElement)
|
|
70
|
-
return;
|
|
71
|
-
if (this.longpressed) {
|
|
72
|
-
this.open = true;
|
|
73
|
-
}
|
|
74
|
-
this.longpressed = false;
|
|
75
|
-
this.triggerElement.removeEventListener("pointerup", this.handlePointerup);
|
|
76
|
-
this.triggerElement.removeEventListener("pointercancel", this.handlePointerup);
|
|
77
|
-
};
|
|
78
|
-
this.handleKeydown = (event) => {
|
|
79
|
-
const { code, altKey } = event;
|
|
80
|
-
if (code === "Space" || altKey && code === "ArrowDown") {
|
|
81
|
-
if (code === "ArrowDown") {
|
|
82
|
-
event.stopPropagation();
|
|
83
|
-
event.stopImmediatePropagation();
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
};
|
|
87
|
-
this.handleKeyup = (event) => {
|
|
88
|
-
const { code, altKey } = event;
|
|
89
|
-
if (code === "Space" || altKey && code === "ArrowDown") {
|
|
90
|
-
event.stopPropagation();
|
|
91
|
-
this.dispatchEvent(
|
|
92
|
-
new CustomEvent("longpress", {
|
|
93
|
-
bubbles: true,
|
|
94
|
-
composed: true,
|
|
95
|
-
detail: {
|
|
96
|
-
source: "keyboard"
|
|
97
|
-
}
|
|
98
|
-
})
|
|
99
|
-
);
|
|
100
|
-
}
|
|
101
|
-
};
|
|
102
|
-
this.handleClick = () => {
|
|
103
|
-
var _a;
|
|
104
|
-
this.open = true;
|
|
105
|
-
(_a = this.triggerElement) == null ? void 0 : _a.removeEventListener("click", this.handleClick);
|
|
106
|
-
};
|
|
107
|
-
this.focusedin = false;
|
|
108
|
-
this.handleFocusin = () => {
|
|
109
|
-
this.open = true;
|
|
110
|
-
this.focusedin = true;
|
|
111
|
-
};
|
|
112
|
-
this.handleFocusout = () => {
|
|
113
|
-
this.focusedin = false;
|
|
114
|
-
if (this.pointerentered)
|
|
115
|
-
return;
|
|
116
|
-
this.open = false;
|
|
117
|
-
};
|
|
118
|
-
this.pointerentered = false;
|
|
119
|
-
this.handlePointerenter = () => {
|
|
120
|
-
this.open = true;
|
|
121
|
-
this.pointerentered = true;
|
|
122
|
-
};
|
|
123
|
-
this.handlePointerleave = () => {
|
|
124
|
-
var _a;
|
|
125
|
-
this.pointerentered = false;
|
|
126
|
-
if (this.focusedin && ((_a = this.triggerElement) == null ? void 0 : _a.matches(":focus-visible")))
|
|
127
|
-
return;
|
|
128
|
-
this.open = false;
|
|
129
|
-
};
|
|
130
|
-
this.handleLongpress = () => {
|
|
131
|
-
this.open = true;
|
|
132
|
-
this.longpressed = true;
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
get usesDialog() {
|
|
136
|
-
return this.type === "modal" || this.type === "page";
|
|
137
|
-
}
|
|
138
|
-
get popoverValue() {
|
|
139
|
-
switch (this.type) {
|
|
140
|
-
case "modal":
|
|
141
|
-
case "page":
|
|
142
|
-
return void 0;
|
|
143
|
-
case "hint":
|
|
144
|
-
return "manual";
|
|
145
|
-
default:
|
|
146
|
-
return this.type;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
manageChildren(open) {
|
|
150
|
-
this.elements.forEach((el) => {
|
|
151
|
-
if (typeof el.open !== "undefined") {
|
|
152
|
-
el.open = open;
|
|
153
|
-
}
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
manageDialogOpen() {
|
|
157
|
-
}
|
|
158
|
-
managePopoverOpen() {
|
|
159
|
-
const doClose = (cb = () => {
|
|
160
|
-
return;
|
|
161
|
-
}) => {
|
|
162
|
-
var _a;
|
|
163
|
-
(_a = this.elements[0]) == null ? void 0 : _a.addEventListener("transitionend", cb, {
|
|
164
|
-
once: true
|
|
165
|
-
});
|
|
166
|
-
this.manageChildren(false);
|
|
167
|
-
};
|
|
168
|
-
if (supportTopLayer) {
|
|
169
|
-
if (this.open) {
|
|
170
|
-
if (!this.dialogEl.matches(":open")) {
|
|
171
|
-
this.dialogEl.showPopover();
|
|
172
|
-
}
|
|
173
|
-
} else {
|
|
174
|
-
if (this.dialogEl.matches(":open")) {
|
|
175
|
-
doClose(() => {
|
|
176
|
-
if (!this.open) {
|
|
177
|
-
this.dialogEl.hidePopover();
|
|
178
|
-
}
|
|
179
|
-
});
|
|
180
|
-
} else {
|
|
181
|
-
doClose();
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
} else {
|
|
185
|
-
if (this.open) {
|
|
186
|
-
} else {
|
|
187
|
-
doClose();
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
get requiresPosition() {
|
|
192
|
-
console.log(this.type, this.open, this.triggerElement, this.placement);
|
|
193
|
-
if (this.type === "page" || !this.open)
|
|
194
|
-
return false;
|
|
195
|
-
if (!this.triggerElement || !this.placement && this.type !== "hint")
|
|
196
|
-
return false;
|
|
197
|
-
return true;
|
|
198
|
-
}
|
|
199
|
-
managePosition() {
|
|
200
|
-
var _a;
|
|
201
|
-
if (!this.requiresPosition)
|
|
202
|
-
return;
|
|
203
|
-
const offset = this.offset || 0;
|
|
204
|
-
const trigger = this.triggerElement;
|
|
205
|
-
const placement = this.placement || "right";
|
|
206
|
-
const tipElement = (_a = this.elements.find(
|
|
207
|
-
(el) => el.tipElement
|
|
208
|
-
)) == null ? void 0 : _a.tipElement;
|
|
209
|
-
updateOverlayPosition(
|
|
210
|
-
this.dialogEl,
|
|
211
|
-
{
|
|
212
|
-
offset,
|
|
213
|
-
placement,
|
|
214
|
-
trigger,
|
|
215
|
-
type: this.type
|
|
216
|
-
},
|
|
217
|
-
{
|
|
218
|
-
elements: this.elements,
|
|
219
|
-
tipElement
|
|
220
|
-
}
|
|
221
|
-
);
|
|
222
|
-
}
|
|
223
|
-
async manageOpen() {
|
|
224
|
-
if (!this.hasUpdated) {
|
|
225
|
-
await this.updateComplete;
|
|
226
|
-
}
|
|
227
|
-
if (this.usesDialog) {
|
|
228
|
-
this.manageDialogOpen();
|
|
229
|
-
} else {
|
|
230
|
-
this.managePopoverOpen();
|
|
231
|
-
}
|
|
232
|
-
if (this.open) {
|
|
233
|
-
_Overlay.openCount += 1;
|
|
234
|
-
this.manageChildren(this.open);
|
|
235
|
-
this.managePosition();
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
manageTriggerElement(triggerElement) {
|
|
239
|
-
if (triggerElement) {
|
|
240
|
-
triggerElement.removeEventListener("click", this.handleClick);
|
|
241
|
-
triggerElement.removeEventListener("focusin", this.handleFocusin);
|
|
242
|
-
triggerElement.removeEventListener("focusout", this.handleFocusout);
|
|
243
|
-
triggerElement.removeEventListener("pointerenter", this.handlePointerenter);
|
|
244
|
-
triggerElement.removeEventListener("pointerleave", this.handlePointerleave);
|
|
245
|
-
triggerElement.addEventListener("pointerdown", this.handlePointerdown);
|
|
246
|
-
triggerElement.addEventListener("keydown", this.handleKeydown);
|
|
247
|
-
triggerElement.addEventListener("keyup", this.handleKeyup);
|
|
248
|
-
triggerElement.addEventListener("longpress", this.handleLongpress);
|
|
249
|
-
this.releaseAriaDescribedby();
|
|
250
|
-
}
|
|
251
|
-
if (!this.triggerElement)
|
|
252
|
-
return;
|
|
253
|
-
switch (this.triggerInteraction) {
|
|
254
|
-
case "click":
|
|
255
|
-
this.triggerElement.addEventListener("click", this.handleClick);
|
|
256
|
-
return;
|
|
257
|
-
case "longpress":
|
|
258
|
-
this.triggerElement.addEventListener("pointerdown", this.handlePointerdown);
|
|
259
|
-
this.triggerElement.addEventListener("keydown", this.handleKeydown);
|
|
260
|
-
this.triggerElement.addEventListener("keyup", this.handleKeyup);
|
|
261
|
-
this.triggerElement.addEventListener("longpress", this.handleLongpress);
|
|
262
|
-
return;
|
|
263
|
-
case "hover":
|
|
264
|
-
this.triggerElement.addEventListener("focusin", this.handleFocusin);
|
|
265
|
-
this.triggerElement.addEventListener("focusout", this.handleFocusout);
|
|
266
|
-
this.triggerElement.addEventListener("pointerenter", this.handlePointerenter);
|
|
267
|
-
this.triggerElement.addEventListener("pointerleave", this.handlePointerleave);
|
|
268
|
-
if (this.receivesFocus === "true")
|
|
269
|
-
return;
|
|
270
|
-
const releaseAriaDescribedby = conditionAttributeWithId(this.triggerElement, "aria-describedby", [
|
|
271
|
-
this.id
|
|
272
|
-
]);
|
|
273
|
-
this.releaseAriaDescribedby = () => {
|
|
274
|
-
releaseAriaDescribedby();
|
|
275
|
-
this.releaseAriaDescribedby = () => {
|
|
276
|
-
return;
|
|
277
|
-
};
|
|
278
|
-
};
|
|
279
|
-
return;
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
handlePopoverhide() {
|
|
283
|
-
this.open = false;
|
|
284
|
-
this.dispatchEvent(new Event("popoverhide"));
|
|
285
|
-
if (this.triggerInteraction === "click") {
|
|
286
|
-
requestAnimationFrame(() => {
|
|
287
|
-
var _a;
|
|
288
|
-
(_a = this.triggerElement) == null ? void 0 : _a.addEventListener("click", this.handleClick);
|
|
289
|
-
});
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
handlePopovershow() {
|
|
293
|
-
this.dispatchEvent(new Event("popovershow"));
|
|
294
|
-
}
|
|
295
|
-
willUpdate(changes) {
|
|
296
|
-
var _a;
|
|
297
|
-
if (!this.hasAttribute("id")) {
|
|
298
|
-
this.setAttribute(
|
|
299
|
-
"id",
|
|
300
|
-
`${this.tagName.toLowerCase()}-${crypto.randomUUID().slice(0, 8)}`
|
|
301
|
-
);
|
|
302
|
-
}
|
|
303
|
-
if (changes.has("open") && (typeof changes.get("open") !== "undefined" || this.open)) {
|
|
304
|
-
this.manageOpen();
|
|
305
|
-
}
|
|
306
|
-
if (changes.has("trigger")) {
|
|
307
|
-
const [id, interaction] = ((_a = this.trigger) == null ? void 0 : _a.split("@")) || [];
|
|
308
|
-
this.elementResolver.selector = id ? `#${id}` : "";
|
|
309
|
-
this.triggerInteraction = interaction;
|
|
310
|
-
}
|
|
311
|
-
if (changes.has(elementResolverUpdatedSymbol)) {
|
|
312
|
-
this.triggerElement = this.elementResolver.element;
|
|
313
|
-
this.manageTriggerElement(changes.get("triggerElement"));
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
render() {
|
|
317
|
-
return html`
|
|
318
|
-
<dialog
|
|
319
|
-
@popoverhide=${this.handlePopoverhide}
|
|
320
|
-
@popovershow=${this.handlePopovershow}
|
|
321
|
-
popover=${ifDefined(this.popoverValue)}
|
|
322
|
-
style=${styleMap({
|
|
323
|
-
"--swc-overlay-z-index": _Overlay.openCount.toString()
|
|
324
|
-
})}
|
|
325
|
-
><slot></slot></dialog>
|
|
326
|
-
`;
|
|
327
|
-
}
|
|
328
|
-
};
|
|
329
|
-
export let Overlay = _Overlay;
|
|
330
|
-
Overlay.styles = [styles];
|
|
331
|
-
Overlay.openCount = 1;
|
|
332
|
-
__decorateClass([
|
|
333
|
-
property({ type: Boolean })
|
|
334
|
-
], Overlay.prototype, "delayed", 2);
|
|
335
|
-
__decorateClass([
|
|
336
|
-
query("dialog")
|
|
337
|
-
], Overlay.prototype, "dialogEl", 2);
|
|
338
|
-
__decorateClass([
|
|
339
|
-
queryAssignedElements({ flatten: true })
|
|
340
|
-
], Overlay.prototype, "elements", 2);
|
|
341
|
-
__decorateClass([
|
|
342
|
-
property({ type: String })
|
|
343
|
-
], Overlay.prototype, "id", 2);
|
|
344
|
-
__decorateClass([
|
|
345
|
-
property()
|
|
346
|
-
], Overlay.prototype, "offset", 2);
|
|
347
|
-
__decorateClass([
|
|
348
|
-
property({ type: Boolean })
|
|
349
|
-
], Overlay.prototype, "open", 2);
|
|
350
|
-
__decorateClass([
|
|
351
|
-
property()
|
|
352
|
-
], Overlay.prototype, "placement", 2);
|
|
353
|
-
__decorateClass([
|
|
354
|
-
property({ attribute: "receives-focus" })
|
|
355
|
-
], Overlay.prototype, "receivesFocus", 2);
|
|
356
|
-
__decorateClass([
|
|
357
|
-
query("slot")
|
|
358
|
-
], Overlay.prototype, "slotEl", 2);
|
|
359
|
-
__decorateClass([
|
|
360
|
-
property()
|
|
361
|
-
], Overlay.prototype, "trigger", 2);
|
|
362
|
-
__decorateClass([
|
|
363
|
-
state()
|
|
364
|
-
], Overlay.prototype, "triggerElement", 2);
|
|
365
|
-
__decorateClass([
|
|
366
|
-
state()
|
|
367
|
-
], Overlay.prototype, "triggerInteraction", 2);
|
|
368
|
-
__decorateClass([
|
|
369
|
-
property()
|
|
370
|
-
], Overlay.prototype, "type", 2);
|
|
371
|
-
//# sourceMappingURL=OverlayElement.dev.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["OverlayElement.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 { Placement } from '@floating-ui/dom';\nimport { html, PropertyValues, SpectrumElement } from '@spectrum-web-components/base';\nimport { property, query, queryAssignedElements, state } from '@spectrum-web-components/base/src/decorators.js';\nimport { ifDefined, styleMap } from '@spectrum-web-components/base/src/directives.js';\nimport { ElementResolutionController, elementResolverUpdatedSymbol } from '@spectrum-web-components/reactive-controllers/src/ElementResolution.js';\nimport {\n conditionAttributeWithId,\n} from '@spectrum-web-components/base/src/condition-attribute-with-id.js';\n\nimport styles from './overlay-element.css.js';\nimport { updateOverlayPosition } from './placement.dev.js'\nimport { VirtualTrigger } from './VirtualTrigger.dev.js'\n\nexport const supportTopLayer = CSS.supports('selector(:open)');\nconst LONGPRESS_DURATION = 300;\nlet LONGPRESS_TIMEOUT: ReturnType<typeof setTimeout>;\n\nexport type LongpressEvent = {\n source: 'pointer' | 'keyboard';\n};\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\ntype OpenableElement = HTMLElement & {\n open: boolean;\n tipElement?: HTMLElement;\n updateComplete?: Promise<void>;\n};\n\nexport class Overlay extends SpectrumElement {\n static override styles = [styles];\n @property({type: Boolean})\n delayed = false;\n\n @query('dialog')\n dialogEl!: HTMLDialogElement & { \n showPopover(): void;\n hidePopover(): void;\n };\n\n @queryAssignedElements({ flatten: true })\n elements!: OpenableElement[];\n\n @property({ type: String })\n public override id = '';\n\n protected longpressed = false;\n\n @property()\n offset: number | [ number, number ] = 6;\n\n @property({type: Boolean})\n open = false;\n\n static openCount = 1;\n\n @property()\n placement?: Placement;\n\n @property({ attribute: 'receives-focus' })\n receivesFocus: 'true' | 'false' | 'auto' = 'auto';\n\n @query('slot')\n slotEl!: HTMLSlotElement;\n\n @property()\n trigger?: string;\n\n @state()\n triggerElement: HTMLElement | VirtualTrigger | null = null;\n\n @state()\n triggerInteraction?: 'click' | 'longpress' | 'hover';\n\n @property()\n type: 'auto' | 'hint' | 'manual' | 'modal' | 'page' = 'hint';\n\n private elementResolver = new ElementResolutionController(this);\n\n private get usesDialog(): boolean {\n return this.type === 'modal' || this.type === 'page';\n }\n\n private get popoverValue(): 'auto' | 'manual' | undefined {\n switch (this.type) {\n case 'modal':\n case 'page':\n return undefined;\n case 'hint':\n return 'manual';\n default:\n return this.type;\n }\n }\n\n protected manageChildren(open: boolean): void {\n this.elements.forEach(el => {\n if (typeof el.open !== 'undefined') {\n el.open = open;\n }\n });\n }\n\n protected manageDialogOpen(): void {\n\n }\n\n protected managePopoverOpen(): void {\n const doClose = (cb = () => { return; }): void => {\n this.elements[0]?.addEventListener('transitionend', cb, {\n once: true\n });\n this.manageChildren(false);\n }\n if (supportTopLayer) {\n if (this.open) {\n if (!this.dialogEl.matches(':open')) {\n this.dialogEl.showPopover();\n }\n } else {\n if (this.dialogEl.matches(':open')) {\n doClose(() => {\n if (!this.open) {\n this.dialogEl.hidePopover();\n }\n });\n } else {\n doClose();\n }\n }\n } else {\n if (this.open) {\n\n } else {\n doClose();\n }\n }\n }\n\n protected get requiresPosition(): boolean {\n console.log(this.type, this.open, this.triggerElement, this.placement);\n if (this.type === 'page' || !this.open) return false;\n if (!this.triggerElement || (!this.placement && this.type !== 'hint')) return false;\n return true;\n }\n\n protected managePosition(): void {\n if (!this.requiresPosition) return;\n\n const offset = this.offset || 0;\n const trigger = this.triggerElement as HTMLElement;\n const placement = this.placement as Placement || 'right';\n const tipElement = this.elements.find(\n (el) => el.tipElement\n )?.tipElement;\n\n updateOverlayPosition(\n this.dialogEl,\n {\n // delayed?: boolean,\n offset,\n placement,\n // notImmediatelyClosable?: boolean, // rename or place behind other API options\n // receivesFocus?: 'auto';\n // root?: HTMLElement;\n trigger,\n type: this.type,\n },\n {\n elements: this.elements,\n tipElement,\n }\n );\n }\n\n protected async manageOpen(): Promise<void> {\n if (!this.hasUpdated) {\n await this.updateComplete;\n }\n if (this.usesDialog) {\n this.manageDialogOpen();\n } else {\n this.managePopoverOpen();\n }\n if (this.open) {\n Overlay.openCount += 1;\n this.manageChildren(this.open);\n this.managePosition();\n }\n }\n\n private releaseAriaDescribedby = () => { return; };\n\n protected manageTriggerElement(triggerElement: HTMLElement | null): void {\n if (triggerElement) {\n triggerElement.removeEventListener('click', this.handleClick);\n triggerElement.removeEventListener('focusin', this.handleFocusin);\n triggerElement.removeEventListener('focusout', this.handleFocusout);\n triggerElement.removeEventListener('pointerenter', this.handlePointerenter);\n triggerElement.removeEventListener('pointerleave', this.handlePointerleave);\n triggerElement.addEventListener('pointerdown', this.handlePointerdown);\n triggerElement.addEventListener('keydown', this.handleKeydown);\n triggerElement.addEventListener('keyup', this.handleKeyup);\n triggerElement.addEventListener('longpress', this.handleLongpress);\n this.releaseAriaDescribedby();\n }\n if (!this.triggerElement) return;\n switch (this.triggerInteraction) {\n case 'click':\n this.triggerElement.addEventListener('click', this.handleClick);\n return;\n case 'longpress':\n this.triggerElement.addEventListener('pointerdown', this.handlePointerdown);\n this.triggerElement.addEventListener('keydown', this.handleKeydown);\n this.triggerElement.addEventListener('keyup', this.handleKeyup);\n this.triggerElement.addEventListener('longpress', this.handleLongpress);\n return;\n case 'hover':\n this.triggerElement.addEventListener('focusin', this.handleFocusin);\n this.triggerElement.addEventListener('focusout', this.handleFocusout);\n this.triggerElement.addEventListener('pointerenter', this.handlePointerenter);\n this.triggerElement.addEventListener('pointerleave', this.handlePointerleave);\n if (this.receivesFocus === 'true') return;\n\n const releaseAriaDescribedby = conditionAttributeWithId(this.triggerElement, 'aria-describedby', [\n this.id,\n ]);\n this.releaseAriaDescribedby = () => {\n releaseAriaDescribedby();\n this.releaseAriaDescribedby = () => { return; };\n }\n return;\n }\n }\n\n private handlePointerdown = (event: PointerEvent): void => {\n if (!this.triggerElement) return;\n if (event.button !== 0) return;\n this.longpressed = false;\n this.triggerElement.addEventListener('pointerup', this.handlePointerup);\n this.triggerElement.addEventListener('pointercancel', this.handlePointerup);\n LONGPRESS_TIMEOUT = setTimeout(() => {\n if (!this.triggerElement) return;\n this.triggerElement.dispatchEvent(\n new CustomEvent<LongpressEvent>('longpress', {\n bubbles: true,\n composed: true,\n detail: {\n source: 'pointer',\n },\n })\n );\n }, LONGPRESS_DURATION);\n }\n\n private handlePointerup = (): void => {\n clearTimeout(LONGPRESS_TIMEOUT);\n if (!this.triggerElement) return;\n if (this.longpressed) {\n this.open = true;\n }\n this.longpressed = false;\n this.triggerElement.removeEventListener('pointerup', this.handlePointerup);\n this.triggerElement.removeEventListener('pointercancel', this.handlePointerup);\n }\n\n /**\n * @private\n */\n protected handleKeydown = (event: KeyboardEvent): void => {\n const { code, altKey } = event;\n if (code === 'Space' || (altKey && code === 'ArrowDown')) {\n if (code === 'ArrowDown') {\n event.stopPropagation();\n event.stopImmediatePropagation();\n }\n }\n }\n\n protected handleKeyup = (event: KeyboardEvent): void => {\n const { code, altKey } = event;\n if (code === 'Space' || (altKey && code === 'ArrowDown')) {\n event.stopPropagation();\n this.dispatchEvent(\n new CustomEvent<LongpressEvent>('longpress', {\n bubbles: true,\n composed: true,\n detail: {\n source: 'keyboard',\n },\n })\n );\n }\n }\n\n protected handleClick = (): void => {\n this.open = true;\n this.triggerElement?.removeEventListener('click', this.handleClick);\n }\n\n private focusedin = false;\n\n protected handleFocusin = (): void => {\n this.open = true;\n this.focusedin = true;\n }\n\n protected handleFocusout = (): void => {\n this.focusedin = false;\n if (this.pointerentered) return;\n this.open = false;\n }\n\n private pointerentered = false;\n\n protected handlePointerenter = (): void => {\n this.open = true;\n this.pointerentered = true;\n }\n\n protected handlePointerleave = (): void => {\n this.pointerentered = false;\n if (this.focusedin && this.triggerElement?.matches(':focus-visible')) return;\n this.open = false;\n }\n\n protected handleLongpress = (): void => {\n this.open = true;\n this.longpressed = true;\n }\n\n protected handlePopoverhide(): void {\n this.open = false;\n this.dispatchEvent(new Event('popoverhide'));\n if (this.triggerInteraction === 'click') {\n requestAnimationFrame(() => {\n this.triggerElement?.addEventListener('click', this.handleClick);\n });\n }\n }\n\n protected handlePopovershow(): void {\n this.dispatchEvent(new Event('popovershow'));\n }\n\n override willUpdate(changes: PropertyValues): void {\n if (!this.hasAttribute('id')) {\n this.setAttribute(\n 'id',\n `${this.tagName.toLowerCase()}-${crypto.randomUUID().slice(0,8)}`\n );\n }\n if (changes.has('open') && (typeof changes.get('open') !== 'undefined' || this.open)) {\n this.manageOpen();\n }\n if (changes.has('trigger')) {\n const [id, interaction] = this.trigger?.split('@') || [];\n this.elementResolver.selector = id ? `#${id}` : '';\n this.triggerInteraction = interaction as \"click\" | \"longpress\" | \"hover\" | undefined;\n }\n if (changes.has(elementResolverUpdatedSymbol)) {\n this.triggerElement = this.elementResolver.element;\n this.manageTriggerElement(changes.get('triggerElement'));\n }\n }\n\n override render() {\n return html`\n <dialog\n @popoverhide=${this.handlePopoverhide}\n @popovershow=${this.handlePopovershow}\n popover=${ifDefined(this.popoverValue)}\n style=${styleMap({\n '--swc-overlay-z-index': Overlay.openCount.toString()\n })}\n ><slot></slot></dialog>\n `;\n }\n}"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|