@aquera/nile-elements 1.8.0 → 1.8.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/README.md +6 -0
- package/dist/index-6faafdf4.cjs.js +2 -0
- package/dist/index-6faafdf4.cjs.js.map +1 -0
- package/dist/index-9931b440.esm.js +1 -0
- package/dist/index.cjs.js +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.js +375 -226
- package/dist/nile-combobox/index.cjs.js +1 -1
- package/dist/nile-combobox/index.esm.js +1 -1
- package/dist/nile-combobox/nile-combobox.cjs.js +1 -1
- package/dist/nile-combobox/nile-combobox.esm.js +1 -1
- package/dist/nile-context-menu/nile-context-menu.cjs.js +1 -1
- package/dist/nile-context-menu/nile-context-menu.cjs.js.map +1 -1
- package/dist/nile-context-menu/nile-context-menu.esm.js +2 -2
- package/dist/nile-context-menu-item/nile-context-menu-item.cjs.js +1 -1
- package/dist/nile-context-menu-item/nile-context-menu-item.cjs.js.map +1 -1
- package/dist/nile-context-menu-item/nile-context-menu-item.esm.js +3 -3
- package/dist/nile-context-submenu/nile-context-submenu.cjs.js +1 -1
- package/dist/nile-context-submenu/nile-context-submenu.cjs.js.map +1 -1
- package/dist/nile-context-submenu/nile-context-submenu.esm.js +2 -2
- package/dist/nile-detail/index.cjs.js +1 -1
- package/dist/nile-detail/index.esm.js +1 -1
- package/dist/nile-detail/nile-detail.cjs.js +1 -1
- package/dist/nile-detail/nile-detail.esm.js +1 -1
- package/dist/nile-floating-panel/nile-floating-panel.cjs.js +1 -1
- package/dist/nile-floating-panel/nile-floating-panel.cjs.js.map +1 -1
- package/dist/nile-floating-panel/nile-floating-panel.esm.js +1 -1
- package/dist/nile-slider/nile-slider.cjs.js +1 -1
- package/dist/nile-slider/nile-slider.cjs.js.map +1 -1
- package/dist/nile-slider/nile-slider.css.cjs.js +1 -1
- package/dist/nile-slider/nile-slider.css.cjs.js.map +1 -1
- package/dist/nile-slider/nile-slider.css.esm.js +162 -41
- package/dist/nile-slider/nile-slider.esm.js +5 -3
- package/dist/nile-slider/nile-slider.template.cjs.js +1 -1
- package/dist/nile-slider/nile-slider.template.cjs.js.map +1 -1
- package/dist/nile-slider/nile-slider.template.esm.js +49 -23
- package/dist/nile-slider/utils/nile-slider.utils.cjs.js +1 -1
- package/dist/nile-slider/utils/nile-slider.utils.cjs.js.map +1 -1
- package/dist/nile-slider/utils/nile-slider.utils.esm.js +1 -1
- package/dist/src/nile-context-menu/nile-context-menu.d.ts +10 -1
- package/dist/src/nile-context-menu/nile-context-menu.js +85 -5
- package/dist/src/nile-context-menu/nile-context-menu.js.map +1 -1
- package/dist/src/nile-context-menu-item/nile-context-menu-item.d.ts +1 -0
- package/dist/src/nile-context-menu-item/nile-context-menu-item.js +5 -1
- package/dist/src/nile-context-menu-item/nile-context-menu-item.js.map +1 -1
- package/dist/src/nile-context-submenu/nile-context-submenu.d.ts +9 -0
- package/dist/src/nile-context-submenu/nile-context-submenu.js +100 -16
- package/dist/src/nile-context-submenu/nile-context-submenu.js.map +1 -1
- package/dist/src/nile-floating-panel/nile-floating-panel.d.ts +2 -0
- package/dist/src/nile-floating-panel/nile-floating-panel.js +4 -0
- package/dist/src/nile-floating-panel/nile-floating-panel.js.map +1 -1
- package/dist/src/nile-slider/nile-slider.css.js +160 -39
- package/dist/src/nile-slider/nile-slider.css.js.map +1 -1
- package/dist/src/nile-slider/nile-slider.d.ts +5 -1
- package/dist/src/nile-slider/nile-slider.js +23 -1
- package/dist/src/nile-slider/nile-slider.js.map +1 -1
- package/dist/src/nile-slider/nile-slider.template.d.ts +2 -0
- package/dist/src/nile-slider/nile-slider.template.js +38 -1
- package/dist/src/nile-slider/nile-slider.template.js.map +1 -1
- package/dist/src/nile-slider/types/nile-slider.types.d.ts +1 -0
- package/dist/src/nile-slider/types/nile-slider.types.js.map +1 -1
- package/dist/src/nile-slider/utils/nile-slider.utils.js +4 -0
- package/dist/src/nile-slider/utils/nile-slider.utils.js.map +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/nile-context-menu/nile-context-menu.ts +86 -8
- package/src/nile-context-menu-item/nile-context-menu-item.ts +3 -1
- package/src/nile-context-submenu/nile-context-submenu.ts +97 -12
- package/src/nile-floating-panel/nile-floating-panel.ts +5 -0
- package/src/nile-slider/nile-slider.css.ts +160 -39
- package/src/nile-slider/nile-slider.template.ts +45 -2
- package/src/nile-slider/nile-slider.ts +11 -3
- package/src/nile-slider/types/nile-slider.types.ts +2 -0
- package/src/nile-slider/utils/nile-slider.utils.ts +2 -0
- package/vscode-html-custom-data.json +51 -12
- package/dist/index-644974d4.esm.js +0 -1
- package/dist/index-dd2af8ec.cjs.js +0 -2
- package/dist/index-dd2af8ec.cjs.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nile-context-menu.cjs.js","sources":["../../../src/nile-context-menu/nile-context-menu.ts"],"sourcesContent":["/**\n * Copyright Aquera Inc 2026\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { html, CSSResultArray, TemplateResult } from 'lit';\nimport type { PropertyValues } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { styles } from './nile-context-menu.css';\nimport NileElement from '../internal/nile-element';\nimport type { NileContextMenuItem } from '../nile-context-menu-item';\nimport type { NileContextMenuGroup } from '../nile-context-menu-group';\nimport '../nile-floating-panel';\nimport '../nile-context-menu-group';\nimport '../nile-context-menu-item';\nimport '../nile-context-submenu';\n\n// Data-driven menu entry\nexport interface NileContextMenuItemData {\n type: 'item';\n id: string;\n label: string;\n value?: string;\n disabled?: boolean;\n icon?: string;\n iconSet?: string;\n iconSize?: string;\n iconMethod?: 'fill' | 'stroke' | string;\n iconColor?: string;\n submenu?: NileContextMenuData[];\n}\n\nexport interface NileContextMenuGroupData {\n type: 'group';\n name?: string;\n data: NileContextMenuItemData[];\n}\n\nexport type NileContextMenuData = NileContextMenuGroupData;\n\nconst ITEM_TAG = 'nile-context-menu-item';\nconst SUBMENU_TAG = 'nile-context-submenu';\nconst MENU_CONTAINER_CLASS = 'nile-context-menu__menu';\nconst OBSERVED_ITEM_ATTRS = ['value', 'disabled'];\n\nexport type NileContextMenuTrigger = 'right' | 'left' | 'both' | 'manual' | 'global';\n\nexport interface NileContextMenuOpenOptions {\n x: number;\n y: number;\n target?: Element;\n originalEvent?: Event;\n}\n\nexport type NileContextMenuCloseReason =\n | 'select'\n | 'outside-click'\n | 'escape'\n | 'programmatic';\n\ninterface NileContextMenuOpenContext {\n x: number;\n y: number;\n target: Element | null;\n originalEvent: Event | null;\n}\n\nlet proxyIdSeq = 0;\n\n/**\n * Nile context-menu component.\n *\n * @tag nile-context-menu\n *\n * @slot Default menu content.\n *\n * @event nile-change Fired on menu lifecycle and selection. `detail.type` is one of\n * `'open'`, `'click'`, or `'close'`; remaining fields depend on the type.\n */\n@customElement('nile-context-menu')\nexport class NileContextMenu extends NileElement {\n public static get styles(): CSSResultArray {\n return [styles];\n }\n\n \n @property({ attribute: true, type: String, reflect: true }) for = '';\n \n @property({ attribute: true, type: String, reflect: true }) trigger: NileContextMenuTrigger = 'right';\n \n @property({ attribute: true, type: String, reflect: true }) skipOn = '';\n \n @property({ attribute: true, type: Number, reflect: true }) zIndex = 9999;\n \n @property({ attribute: false }) public items: NileContextMenuData[] = [];\n \n private get _isDataMode(): boolean {\n return Array.isArray(this.items) && this.items.length > 0;\n }\n @query('nile-floating-panel') private _floatingPanel?: HTMLElement;\n \n @state() private _items: NileContextMenuItem[] = [];\n \n @state() private _open = false;\n \n protected _openContext: NileContextMenuOpenContext | null = null;\n \n protected _targetEl: Element | null = null;\n \n private _previouslyFocused: HTMLElement | null = null;\n \n private static _openInstances = new Set<NileContextMenu>();\n \n private _detachTriggers?: () => void;\n private _lightObserver?: MutationObserver;\n private _menuObserver?: MutationObserver;\n \n private _proxyEl?: HTMLDivElement;\n private readonly _proxyId = `nile-context-menu-anchor-${++proxyIdSeq}`;\n \n private _wasDataMode = false;\n\n public override connectedCallback(): void {\n super.connectedCallback();\n this._ensureProxy();\n this._resolveTarget();\n this._attachTriggers();\n this._lightObserver = new MutationObserver(() => {\n if (this._isDataMode) return;\n this._relocateLightChildren();\n });\n this._lightObserver.observe(this, { childList: true });\n }\n\n protected override updated(changed: PropertyValues): void {\n super.updated(changed);\n if ((changed.has('for') || changed.has('trigger') || changed.has('skipOn')) && this._open) {\n this.close('programmatic');\n }\n if (changed.has('for')) {\n this._resolveTarget();\n this._attachTriggers();\n } else if (changed.has('trigger') || changed.has('skipOn')) {\n this._attachTriggers();\n }\n if (changed.has('items') && this._menuContainerRef) {\n if (this._isDataMode) {\n this._renderDataItems();\n this._wasDataMode = true;\n } else if (this._wasDataMode) {\n this._renderDataItems();\n this._wasDataMode = false;\n }\n }\n }\n\n private _resolveTarget(): void {\n const value = this.for?.trim();\n if (!value) {\n this._targetEl = null;\n return;\n }\n const root = (this.getRootNode() as Document | ShadowRoot) ?? document;\n if (/^[#.\\[:]/.test(value)) {\n this._targetEl = (root as ParentNode).querySelector(value);\n } else if ('getElementById' in root) {\n this._targetEl = (root as Document | ShadowRoot).getElementById(value);\n } else {\n this._targetEl = document.getElementById(value);\n }\n }\n\n public get targetElement(): Element | null {\n return this._targetEl;\n }\n\n private _attachTriggers(): void {\n this._detachTriggers?.();\n this._detachTriggers = undefined;\n\n const trigger = this.trigger;\n if (trigger === 'manual') return;\n\n const cleanups: Array<() => void> = [];\n\n if (trigger === 'global') {\n const skipSelector = this.skipOn?.trim() ?? '';\n const isInteractive = (el: Element | null): boolean => {\n if (!el || !skipSelector) return false;\n return !!el.closest(skipSelector);\n };\n const handler = (e: Event) => {\n const me = e as MouseEvent;\n if (isInteractive(me.target as Element | null)) return;\n me.preventDefault();\n if (this._open) return;\n this.open({\n x: me.clientX,\n y: me.clientY,\n target: (me.target as Element | null) ?? undefined,\n originalEvent: me,\n });\n };\n window.addEventListener('contextmenu', handler, true);\n cleanups.push(() => window.removeEventListener('contextmenu', handler, true));\n this._detachTriggers = () => cleanups.forEach(fn => fn());\n return;\n }\n\n const target = this._targetEl;\n if (!target) return;\n\n const wantsContext = trigger === 'right' || trigger === 'both';\n const wantsClick = trigger === 'left' || trigger === 'both';\n\n if (wantsContext) {\n const handler = (e: Event) => {\n const me = e as MouseEvent;\n me.preventDefault();\n this.open({\n x: me.clientX,\n y: me.clientY,\n target,\n originalEvent: me,\n });\n };\n target.addEventListener('contextmenu', handler);\n cleanups.push(() => target.removeEventListener('contextmenu', handler));\n }\n\n if (wantsClick) {\n const handler = (e: Event) => {\n const me = e as MouseEvent;\n this.open({\n x: me.clientX,\n y: me.clientY,\n target,\n originalEvent: me,\n });\n };\n target.addEventListener('click', handler);\n cleanups.push(() => target.removeEventListener('click', handler));\n }\n\n if (cleanups.length === 0) return;\n this._detachTriggers = () => cleanups.forEach(fn => fn());\n }\n\n public override disconnectedCallback(): void {\n super.disconnectedCallback();\n NileContextMenu._openInstances.delete(this);\n this._open = false;\n this._detachTriggers?.();\n this._detachTriggers = undefined;\n this._lightObserver?.disconnect();\n this._lightObserver = undefined;\n this._menuObserver?.disconnect();\n this._menuObserver = undefined;\n this._menuContainerRef?.removeEventListener('click', this._onMenuClick);\n this._menuContainerRef?.removeEventListener('mouseover', this._onMenuMouseOver);\n this._menuContainerRef?.removeEventListener(\n 'nile-change',\n this._onDescendantSelect as EventListener,\n );\n document.removeEventListener('pointerdown', this._onOutsidePointer, true);\n document.removeEventListener('keydown', this._onKeydown, true);\n window.removeEventListener('scroll', this._onScroll, true);\n this._proxyEl?.remove();\n this._proxyEl = undefined;\n }\n\n private _menuContainerRef: HTMLDivElement | null = null;\n\n protected override firstUpdated(): void {\n this._menuContainerRef = this.renderRoot.querySelector('.nile-context-menu__menu') as HTMLDivElement | null;\n if (this._isDataMode) {\n this._renderDataItems();\n this._wasDataMode = true;\n } else {\n this._relocateLightChildren();\n }\n if (this._menuContainerRef) {\n this._menuObserver = new MutationObserver(() => this._parseChildren());\n this._menuObserver.observe(this._menuContainerRef, {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: OBSERVED_ITEM_ATTRS,\n });\n this._menuContainerRef.addEventListener('click', this._onMenuClick);\n this._menuContainerRef.addEventListener('mouseover', this._onMenuMouseOver);\n this._menuContainerRef.addEventListener(\n 'nile-change',\n this._onDescendantSelect as EventListener,\n );\n }\n this._parseChildren();\n }\n\n private _ensureProxy(): void {\n if (this._proxyEl) return;\n const el = document.createElement('div');\n el.id = this._proxyId;\n el.setAttribute('aria-hidden', 'true');\n el.style.cssText =\n 'position: fixed; top: 0; left: 0; width: 0; height: 0; pointer-events: none;';\n document.body.appendChild(el);\n this._proxyEl = el;\n }\n\n private _positionProxyAt(x: number, y: number): void {\n if (!this._proxyEl) return;\n this._proxyEl.style.left = `${x}px`;\n this._proxyEl.style.top = `${y}px`;\n }\n\n private _relocateLightChildren(): void {\n if (!this._menuContainerRef) return;\n const kids = Array.from(this.children);\n if (kids.length === 0) return;\n for (const kid of kids) {\n this._menuContainerRef.appendChild(kid);\n }\n }\n\n private _renderDataItems(): void {\n const container = this._menuContainerRef;\n if (!container) return;\n while (container.firstChild) container.removeChild(container.firstChild);\n for (const entry of this.items) {\n const node = this._createDataNode(entry);\n if (node) container.appendChild(node);\n }\n }\n\n private _createDataNode(entry: NileContextMenuData): HTMLElement | null {\n if (entry.type === 'group') {\n const group = document.createElement('nile-context-menu-group') as NileContextMenuGroup;\n if (entry.name) group.label = entry.name;\n for (const item of entry.data ?? []) {\n group.appendChild(this._createItemNode(item));\n }\n return group;\n }\n return null;\n }\n\n private _createItemNode(data: NileContextMenuItemData): NileContextMenuItem {\n const item = document.createElement('nile-context-menu-item') as NileContextMenuItem;\n if (data.id) item.id = data.id;\n item.value = data.value ?? data.id ?? '';\n if (data.disabled) item.disabled = true;\n if (data.icon) {\n const glyph = document.createElement('nile-glyph');\n glyph.setAttribute('slot', 'icon');\n glyph.setAttribute('name', data.icon);\n if (data.iconSet) glyph.setAttribute('set', data.iconSet);\n if (data.iconSize) glyph.setAttribute('size', data.iconSize);\n if (data.iconMethod) glyph.setAttribute('method', data.iconMethod);\n if (data.iconColor) glyph.setAttribute('color', data.iconColor);\n item.appendChild(glyph);\n }\n item.appendChild(document.createTextNode(data.label));\n if (data.submenu && data.submenu.length > 0) {\n const submenu = document.createElement('nile-context-submenu');\n for (const entry of data.submenu) {\n const node = this._createDataNode(entry);\n if (node) submenu.appendChild(node);\n }\n item.appendChild(submenu);\n }\n return item;\n }\n\n private _parseChildren(): void {\n const root: Element = this._menuContainerRef ?? this;\n const all = Array.from(root.querySelectorAll(ITEM_TAG)) as NileContextMenuItem[];\n this._items = all.filter(item => !this._isInsideDescendantSubmenu(item, root));\n }\n\n private _isInsideDescendantSubmenu(item: Element, container: Element): boolean {\n let cur: Element | null = item.parentElement;\n while (cur && cur !== container) {\n if (cur.tagName.toLowerCase() === SUBMENU_TAG) return true;\n cur = cur.parentElement;\n }\n return false;\n }\n\n public get menuItems(): readonly NileContextMenuItem[] {\n return this._items;\n }\n\n public getItemByValue(value: string): NileContextMenuItem | undefined {\n return this._items.find(item => item.value === value);\n }\n\n public get isOpen(): boolean {\n return this._open;\n }\n\n public open(options: NileContextMenuOpenOptions): void {\n if (this._open) return;\n for (const other of NileContextMenu._openInstances) {\n if (other !== this) other.close('programmatic');\n }\n this._previouslyFocused = document.activeElement as HTMLElement | null;\n this._openContext = {\n x: options.x,\n y: options.y,\n target: options.target ?? null,\n originalEvent: options.originalEvent ?? null,\n };\n this._ensureProxy();\n this._positionProxyAt(options.x, options.y);\n this._open = true;\n NileContextMenu._openInstances.add(this);\n document.addEventListener('pointerdown', this._onOutsidePointer, true);\n document.addEventListener('keydown', this._onKeydown, true);\n requestAnimationFrame(() => {\n if (this._open) window.addEventListener('scroll', this._onScroll, true);\n });\n this.emit('nile-change', { type: 'open', ...this._openContext });\n }\n\n public close(reason: NileContextMenuCloseReason = 'programmatic'): void {\n if (!this._open) return;\n this._open = false;\n this._openContext = null;\n NileContextMenu._openInstances.delete(this);\n const subs = this._menuContainerRef?.querySelectorAll(SUBMENU_TAG);\n subs?.forEach(s => (s as unknown as { closeSubmenu?: () => void }).closeSubmenu?.());\n document.removeEventListener('pointerdown', this._onOutsidePointer, true);\n document.removeEventListener('keydown', this._onKeydown, true);\n window.removeEventListener('scroll', this._onScroll, true);\n const active = document.activeElement;\n const focusInMenu =\n active === this ||\n this._items.some(item => item === active || item.shadowRoot?.contains(active as Node));\n if (focusInMenu) {\n this._previouslyFocused?.focus?.();\n }\n this._previouslyFocused = null;\n this.emit('nile-change', { type: 'close', reason });\n }\n\n private _enabledItems(): NileContextMenuItem[] {\n return this._items.filter(item => !item.disabled);\n }\n\n private _getFocusedItem(): NileContextMenuItem | null {\n const active = document.activeElement;\n for (const item of this._items) {\n if (item === active || item.shadowRoot?.contains(active as Node)) return item;\n }\n return null;\n }\n\n private _getFocusedItemAnyLevel(): {\n item: NileContextMenuItem | null;\n container: Element | null;\n } {\n let node: Element | null = document.activeElement as Element | null;\n while (node && node.tagName?.toLowerCase() !== ITEM_TAG) {\n const root = node.getRootNode();\n node = root instanceof ShadowRoot ? root.host : node.parentElement;\n }\n if (!node) return { item: null, container: null };\n const container = node.closest(`.${MENU_CONTAINER_CLASS}`);\n return { item: node as NileContextMenuItem, container };\n }\n\n private _enabledItemsIn(container: Element): NileContextMenuItem[] {\n const all = Array.from(container.querySelectorAll(ITEM_TAG)) as NileContextMenuItem[];\n return all.filter(item => {\n if (item.disabled) return false;\n return !this._isInsideDescendantSubmenu(item, container);\n });\n }\n\n private _focusFirstEnabled(): void {\n const enabled = this._enabledItems();\n enabled[0]?.focus();\n }\n\n private _moveFocus(delta: number): void {\n const { item: focused, container } = this._getFocusedItemAnyLevel();\n const root: Element = container ?? this._menuContainerRef ?? this;\n const enabled = this._enabledItemsIn(root);\n if (enabled.length === 0) return;\n const current = focused ? enabled.indexOf(focused) : -1;\n const next = current + delta;\n const wrapped = ((next % enabled.length) + enabled.length) % enabled.length;\n enabled[wrapped].focus();\n }\n\n private _onKeydown = (e: KeyboardEvent): void => {\n if (!this._open) return;\n switch (e.key) {\n case 'Escape':\n e.preventDefault();\n this.close('escape');\n return;\n case 'Tab':\n this.close('programmatic');\n return;\n case 'ArrowDown':\n e.preventDefault();\n this._moveFocus(1);\n return;\n case 'ArrowUp':\n e.preventDefault();\n this._moveFocus(-1);\n return;\n case 'ArrowRight': {\n const { item } = this._getFocusedItemAnyLevel();\n const sub = item?.querySelector(`:scope > ${SUBMENU_TAG}`) as\n | (HTMLElement & { openSubmenu?: () => void })\n | null;\n if (!sub) return;\n e.preventDefault();\n sub.openSubmenu?.();\n requestAnimationFrame(() => {\n (sub as unknown as { focusFirstItem?: () => void }).focusFirstItem?.();\n });\n return;\n }\n case 'ArrowLeft': {\n const { item, container } = this._getFocusedItemAnyLevel();\n if (!item || !container) return;\n const sub = this._findSubmenuOwning(container);\n if (!sub) return;\n e.preventDefault();\n sub.closeSubmenu?.();\n sub.parentItem?.focus();\n return;\n }\n case 'Enter':\n case ' ': {\n e.preventDefault();\n const { item } = this._getFocusedItemAnyLevel();\n if (!item || item.disabled) return;\n const sub = item.querySelector(`:scope > ${SUBMENU_TAG}`) as\n | (HTMLElement & { openSubmenu?: () => void })\n | null;\n if (sub) {\n sub.openSubmenu?.();\n requestAnimationFrame(() => {\n const panel = sub.shadowRoot?.querySelector(`.${MENU_CONTAINER_CLASS}`);\n const first = panel\n ? (this._enabledItemsIn(panel)[0] as NileContextMenuItem | undefined)\n : undefined;\n first?.focus();\n });\n return;\n }\n this._selectItem(item);\n return;\n }\n }\n };\n\n private _findSubmenuOwning(container: Element):\n | (HTMLElement & { closeSubmenu?: () => void; parentItem?: NileContextMenuItem | null })\n | null {\n type SubCtor = {\n findByContainer?: (c: Element) => HTMLElement & {\n closeSubmenu?: () => void;\n parentItem?: NileContextMenuItem | null;\n } | null;\n };\n const customElements = window.customElements;\n const ctor = customElements.get(SUBMENU_TAG) as unknown as SubCtor | undefined;\n return ctor?.findByContainer?.(container) ?? null;\n }\n\n private _onScroll = (e: Event): void => {\n if (!this._open) return;\n const path = e.composedPath();\n // Scroll inside the root menu container?\n if (this._menuContainerRef && path.includes(this._menuContainerRef)) return;\n // Scroll inside any descendant submenu's portaled panel?\n for (const node of path) {\n if (node instanceof HTMLElement && node.classList?.contains(MENU_CONTAINER_CLASS)) {\n return;\n }\n }\n this.close('programmatic');\n };\n\n private _onOutsidePointer = (e: Event): void => {\n if (!this._open) return;\n const path = e.composedPath();\n if (this._menuContainerRef && path.includes(this._menuContainerRef)) return;\n for (const node of path) {\n if (\n node instanceof HTMLElement &&\n node.classList?.contains(MENU_CONTAINER_CLASS)\n ) {\n return;\n }\n }\n this.close('outside-click');\n };\n\n private _onDescendantSelect = (e: CustomEvent): void => {\n if (e.detail?.type !== 'click') return;\n this.close('select');\n };\n private _stop(e: Event): void {\n e.stopPropagation();\n }\n\n private _onPanelShown = (e: Event): void => {\n e.stopPropagation();\n };\n\n private _onMenuMouseOver = (e: MouseEvent): void => {\n const item = e\n .composedPath()\n .find(\n node =>\n node instanceof HTMLElement &&\n node.tagName.toLowerCase() === ITEM_TAG\n ) as NileContextMenuItem | undefined;\n if (!item || item.disabled) return;\n item.focus();\n };\n\n private _onMenuClick = (e: MouseEvent): void => {\n const item = e\n .composedPath()\n .find(\n node =>\n node instanceof HTMLElement &&\n node.tagName.toLowerCase() === ITEM_TAG\n ) as NileContextMenuItem | undefined;\n\n if (!item || item.disabled) return;\n if (item.querySelector(`:scope > ${SUBMENU_TAG}`)) return;\n this._selectItem(item);\n };\n\n private _selectItem(item: NileContextMenuItem): void {\n const detail = {\n id: item.id,\n value: item.value,\n name: (item.textContent ?? '').trim(),\n target: this._openContext?.target ?? null,\n originalEvent: this._openContext?.originalEvent ?? null,\n };\n try {\n item.onSelect?.(detail);\n } catch (err) {\n console.error('[nile-context-menu] onSelect callback threw:', err);\n }\n this.emit('nile-change', { type: 'click', ...detail });\n this.close('select');\n }\n\n public render(): TemplateResult {\n return html`\n <nile-floating-panel\n for=${this._proxyId}\n trigger=\"manual\"\n placement=\"bottom-start\"\n panelClass=\"nile-context-menu-panel\"\n .zIndex=${this.zIndex}\n ?open=${this._open}\n .interactive=${true}\n .hideOnClick=${false}\n .closeOnEscape=${false}\n .arrow=${'none'}\n .distance=${0}\n @nile-init=${this._stop}\n @nile-destroy=${this._stop}\n @nile-show=${this._stop}\n @nile-hide=${this._stop}\n @nile-after-show=${this._onPanelShown}\n @nile-after-hide=${this._stop}\n @nile-toggle=${this._stop}\n @nile-visibility-change=${this._stop}\n >\n <div class=\"nile-context-menu__menu\" role=\"menu\"></div>\n </nile-floating-panel>\n `;\n }\n}\n\nexport default NileContextMenu;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-context-menu': NileContextMenu;\n }\n}\n"],"names":["ITEM_TAG","SUBMENU_TAG","MENU_CONTAINER_CLASS","OBSERVED_ITEM_ATTRS","proxyIdSeq","NileContextMenu","NileContextMenu_1","c","this","trigger","skipOn","zIndex","items","_items","_open","_openContext","_targetEl","_previouslyFocused","_proxyId","_wasDataMode","_menuContainerRef","_onKeydown","e","key","preventDefault","close","_moveFocus","_e$openSubmenu","_this$_getFocusedItem","_getFocusedItemAnyLevel","sub","item","querySelector","concat","openSubmenu","requestAnimationFrame","focusFirstItem","_s$closeSubmenu","_s$parentItem","_this$_getFocusedItem2","container","_findSubmenuOwning","closeSubmenu","parentItem","focus","_e3$openSubmenu","_this$_getFocusedItem3","disabled","_e3$shadowRoot","panel","shadowRoot","first","_enabledItemsIn","undefined","_selectItem","_onScroll","path","composedPath","includes","_iterator","_createForOfIteratorHelper","_step","s","n","done","_t$classList","node","HTMLElement","classList","contains","_onOutsidePointer","_iterator2","_step2","_t2$classList","_onDescendantSelect","_t$detail","detail","type","_onPanelShown","stopPropagation","_onMenuMouseOver","find","tagName","toLowerCase","_onMenuClick","_this","_inherits","_h","_createClass","get","Array","isArray","length","value","connectedCallback","super","_ensureProxy","_resolveTarget","_attachTriggers","_lightObserver","MutationObserver","_isDataMode","_relocateLightChildren","observe","childList","updated","changed","has","_renderDataItems","trim","root","getRootNode","document","test","getElementById","targetElement","_detachTriggers","cleanups","_this$skipOn$trim","_this$skipOn","skipSelector","isInteractive","el","closest","handler","me","target","open","x","clientX","y","clientY","originalEvent","window","addEventListener","push","removeEventListener","forEach","fn","wantsClick","disconnectedCallback","_openInstances","disconnect","_menuObserver","_this$_proxyEl","_proxyEl","remove","firstUpdated","renderRoot","_parseChildren","subtree","attributes","attributeFilter","createElement","id","setAttribute","style","cssText","body","appendChild","_positionProxyAt","left","top","kids","from","children","_iterator3","_step3","kid","err","f","firstChild","removeChild","_iterator4","_step4","entry","_createDataNode","_t$data","group","name","label","_iterator5","data","_step5","_createItemNode","icon","glyph","iconSet","iconSize","iconMethod","iconColor","createTextNode","submenu","_iterator6","_step6","_this$_menuContainerR4","_this5","all","querySelectorAll","filter","_isInsideDescendantSubmenu","cur","parentElement","menuItems","getItemByValue","options","_t$target","_t$originalEvent","_iterator7","_step7","other","activeElement","add","emit","_this$_menuContainerR5","_this$_previouslyFocu","_this$_previouslyFocu2","reason","arguments","delete","subs","active","some","_enabledItems","_getFocusedItem","_iterator8","_step8","_i8$shadowRoot","_t$tagName","ShadowRoot","host","_focusFirstEnabled","enabled","_t$","delta","_ref2","_this$_getFocusedItem4","focused","current","indexOf","ctor","customElements","_i$findByContainer","findByContainer","_stop","_t$textContent","_this$_openContext$ta","_this$_openContext","_this$_openContext$or","_this$_openContext2","textContent","onSelect","console","error","_objectSpread","render","html","_templateObject","_taggedTemplateLiteral","styles","NileElement","Set","__decorate","property","attribute","String","reflect","prototype","Number","query","state","customElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nile-context-menu.cjs.js","sources":["../../../src/nile-context-menu/nile-context-menu.ts"],"sourcesContent":["/**\n * Copyright Aquera Inc 2026\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { html, CSSResultArray, TemplateResult } from 'lit';\nimport type { PropertyValues } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { styles } from './nile-context-menu.css';\nimport NileElement from '../internal/nile-element';\nimport type { NileContextMenuItem } from '../nile-context-menu-item';\nimport type { NileContextMenuGroup } from '../nile-context-menu-group';\nimport '../nile-floating-panel';\nimport '../nile-context-menu-group';\nimport '../nile-context-menu-item';\nimport '../nile-context-submenu';\n\n// Data-driven menu entry\nexport interface NileContextMenuItemData {\n type: 'item';\n id: string;\n label: string;\n value?: string;\n disabled?: boolean;\n icon?: string;\n iconSet?: string;\n iconSize?: string;\n iconMethod?: 'fill' | 'stroke' | string;\n iconColor?: string;\n submenu?: NileContextMenuData[];\n open?: boolean;\n}\n\nexport interface NileContextMenuGroupData {\n type: 'group';\n name?: string;\n data: NileContextMenuItemData[];\n}\n\nexport type NileContextMenuData = NileContextMenuGroupData;\n\nconst ITEM_TAG = 'nile-context-menu-item';\nconst SUBMENU_TAG = 'nile-context-submenu';\nconst MENU_CONTAINER_CLASS = 'nile-context-menu__menu';\nconst OBSERVED_ITEM_ATTRS = ['value', 'disabled'];\n\nexport type NileContextMenuTrigger = 'right' | 'left' | 'both' | 'manual' | 'global';\n\nexport interface NileContextMenuOpenOptions {\n x: number;\n y: number;\n target?: Element;\n originalEvent?: Event;\n}\n\nexport type NileContextMenuCloseReason =\n | 'select'\n | 'outside-click'\n | 'escape'\n | 'programmatic';\n\ninterface NileContextMenuOpenContext {\n x: number;\n y: number;\n target: Element | null;\n originalEvent: Event | null;\n}\n\nlet proxyIdSeq = 0;\n\n/**\n * Nile context-menu component.\n *\n * @tag nile-context-menu\n *\n * @slot Default menu content.\n *\n * @event nile-change Fired on menu lifecycle and selection. `detail.type` is one of\n * `'open'`, `'click'`, or `'close'`; remaining fields depend on the type.\n */\n@customElement('nile-context-menu')\nexport class NileContextMenu extends NileElement {\n public static get styles(): CSSResultArray {\n return [styles];\n }\n\n \n @property({ attribute: true, type: String, reflect: true }) for = '';\n \n @property({ attribute: true, type: String, reflect: true }) trigger: NileContextMenuTrigger = 'right';\n \n @property({ attribute: true, type: String, reflect: true }) skipOn = '';\n \n @property({ attribute: true, type: Number, reflect: true }) zIndex = 9999;\n\n @property({ attribute: true, type: Boolean, reflect: true }) open = false;\n\n @property({ attribute: false }) public items: NileContextMenuData[] = [];\n \n private get _isDataMode(): boolean {\n return Array.isArray(this.items) && this.items.length > 0;\n }\n @query('nile-floating-panel') private _floatingPanel?: HTMLElement;\n \n @state() private _items: NileContextMenuItem[] = [];\n\n @state() private _open = false;\n\n private _pinned = false;\n\n protected _openContext: NileContextMenuOpenContext | null = null;\n \n protected _targetEl: Element | null = null;\n \n private _previouslyFocused: HTMLElement | null = null;\n \n private static _openInstances = new Set<NileContextMenu>();\n \n private _detachTriggers?: () => void;\n private _lightObserver?: MutationObserver;\n private _menuObserver?: MutationObserver;\n \n private _proxyEl?: HTMLDivElement;\n private readonly _proxyId = `nile-context-menu-anchor-${++proxyIdSeq}`;\n \n private _wasDataMode = false;\n\n public override connectedCallback(): void {\n super.connectedCallback();\n this._ensureProxy();\n this._resolveTarget();\n this._attachTriggers();\n this._lightObserver = new MutationObserver(() => {\n if (this._isDataMode) return;\n this._relocateLightChildren();\n });\n this._lightObserver.observe(this, { childList: true });\n // Restore a declaratively-opened menu after a disconnect/reconnect.\n if (this.open && !this._open) {\n this.updateComplete.then(() => {\n if (this.isConnected && this.open && !this._open) {\n this._pinned = true;\n this._openAtTarget();\n }\n });\n }\n }\n\n protected override updated(changed: PropertyValues): void {\n super.updated(changed);\n if ((changed.has('for') || changed.has('trigger') || changed.has('skipOn')) && this._open) {\n this.close('programmatic');\n }\n if (changed.has('for')) {\n this._resolveTarget();\n this._attachTriggers();\n } else if (changed.has('trigger') || changed.has('skipOn')) {\n this._attachTriggers();\n }\n if (changed.has('items') && this._menuContainerRef) {\n if (this._isDataMode) {\n this._renderDataItems();\n this._wasDataMode = true;\n } else if (this._wasDataMode) {\n this._renderDataItems();\n this._wasDataMode = false;\n }\n }\n if (changed.has('open')) {\n if (this.open && !this._open) {\n this._pinned = true;\n this._openAtTarget();\n } else if (!this.open && this._open) {\n this.close('programmatic');\n }\n }\n }\n\n /** Open anchored to the `for` target (used when the `open` property is set). */\n private _openAtTarget(): void {\n const rect = this._targetEl?.getBoundingClientRect();\n this.openAt({\n x: rect ? rect.left : 0,\n y: rect ? rect.bottom : 0,\n target: this._targetEl ?? undefined,\n });\n }\n\n /** Re-anchor a pinned menu to its target after layout changes. */\n private _onPinnedReposition = (): void => {\n if (!this._open || !this._pinned || !this._targetEl) return;\n const rect = this._targetEl.getBoundingClientRect();\n this._positionProxyAt(rect.left, rect.bottom);\n };\n\n private _resolveTarget(): void {\n const value = this.for?.trim();\n if (!value) {\n this._targetEl = null;\n return;\n }\n const root = (this.getRootNode() as Document | ShadowRoot) ?? document;\n if (/^[#.\\[:]/.test(value)) {\n this._targetEl = (root as ParentNode).querySelector(value);\n } else if ('getElementById' in root) {\n this._targetEl = (root as Document | ShadowRoot).getElementById(value);\n } else {\n this._targetEl = document.getElementById(value);\n }\n }\n\n public get targetElement(): Element | null {\n return this._targetEl;\n }\n\n private _attachTriggers(): void {\n this._detachTriggers?.();\n this._detachTriggers = undefined;\n\n const trigger = this.trigger;\n if (trigger === 'manual') return;\n\n const cleanups: Array<() => void> = [];\n\n if (trigger === 'global') {\n const skipSelector = this.skipOn?.trim() ?? '';\n const isInteractive = (el: Element | null): boolean => {\n if (!el || !skipSelector) return false;\n return !!el.closest(skipSelector);\n };\n const handler = (e: Event) => {\n const me = e as MouseEvent;\n if (isInteractive(me.target as Element | null)) return;\n me.preventDefault();\n if (this._open) return;\n this.openAt({\n x: me.clientX,\n y: me.clientY,\n target: (me.target as Element | null) ?? undefined,\n originalEvent: me,\n });\n };\n window.addEventListener('contextmenu', handler, true);\n cleanups.push(() => window.removeEventListener('contextmenu', handler, true));\n this._detachTriggers = () => cleanups.forEach(fn => fn());\n return;\n }\n\n const target = this._targetEl;\n if (!target) return;\n\n const wantsContext = trigger === 'right' || trigger === 'both';\n const wantsClick = trigger === 'left' || trigger === 'both';\n\n if (wantsContext) {\n const handler = (e: Event) => {\n const me = e as MouseEvent;\n me.preventDefault();\n this.openAt({\n x: me.clientX,\n y: me.clientY,\n target,\n originalEvent: me,\n });\n };\n target.addEventListener('contextmenu', handler);\n cleanups.push(() => target.removeEventListener('contextmenu', handler));\n }\n\n if (wantsClick) {\n const handler = (e: Event) => {\n const me = e as MouseEvent;\n this.openAt({\n x: me.clientX,\n y: me.clientY,\n target,\n originalEvent: me,\n });\n };\n target.addEventListener('click', handler);\n cleanups.push(() => target.removeEventListener('click', handler));\n }\n\n if (cleanups.length === 0) return;\n this._detachTriggers = () => cleanups.forEach(fn => fn());\n }\n\n public override disconnectedCallback(): void {\n super.disconnectedCallback();\n NileContextMenu._openInstances.delete(this);\n this._open = false;\n this._detachTriggers?.();\n this._detachTriggers = undefined;\n this._lightObserver?.disconnect();\n this._lightObserver = undefined;\n this._menuObserver?.disconnect();\n this._menuObserver = undefined;\n this._menuContainerRef?.removeEventListener('click', this._onMenuClick);\n this._menuContainerRef?.removeEventListener('mouseover', this._onMenuMouseOver);\n this._menuContainerRef?.removeEventListener(\n 'nile-change',\n this._onDescendantSelect as EventListener,\n );\n document.removeEventListener('pointerdown', this._onOutsidePointer, true);\n document.removeEventListener('keydown', this._onKeydown, true);\n window.removeEventListener('scroll', this._onScroll, true);\n window.removeEventListener('resize', this._onPinnedReposition);\n this._proxyEl?.remove();\n this._proxyEl = undefined;\n }\n\n private _menuContainerRef: HTMLDivElement | null = null;\n\n protected override firstUpdated(): void {\n this._menuContainerRef = this.renderRoot.querySelector('.nile-context-menu__menu') as HTMLDivElement | null;\n if (this._isDataMode) {\n this._renderDataItems();\n this._wasDataMode = true;\n } else {\n this._relocateLightChildren();\n }\n if (this._menuContainerRef) {\n this._menuObserver = new MutationObserver(() => this._parseChildren());\n this._menuObserver.observe(this._menuContainerRef, {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: OBSERVED_ITEM_ATTRS,\n });\n this._menuContainerRef.addEventListener('click', this._onMenuClick);\n this._menuContainerRef.addEventListener('mouseover', this._onMenuMouseOver);\n this._menuContainerRef.addEventListener(\n 'nile-change',\n this._onDescendantSelect as EventListener,\n );\n }\n this._parseChildren();\n }\n\n private _ensureProxy(): void {\n if (this._proxyEl) return;\n const el = document.createElement('div');\n el.id = this._proxyId;\n el.setAttribute('aria-hidden', 'true');\n el.style.cssText =\n 'position: fixed; top: 0; left: 0; width: 0; height: 0; pointer-events: none;';\n document.body.appendChild(el);\n this._proxyEl = el;\n }\n\n private _positionProxyAt(x: number, y: number): void {\n if (!this._proxyEl) return;\n if (this._pinned && this._targetEl) {\n // menu attaches below it pinned menus (or flips cleanly above it)\n const rect = this._targetEl.getBoundingClientRect();\n this._proxyEl.style.position = 'absolute';\n this._proxyEl.style.left = `${rect.left + window.scrollX}px`;\n this._proxyEl.style.top = `${rect.top + window.scrollY}px`;\n this._proxyEl.style.width = `${rect.width}px`;\n this._proxyEl.style.height = `${rect.height}px`;\n return;\n }\n this._proxyEl.style.position = 'fixed';\n this._proxyEl.style.left = `${x}px`;\n this._proxyEl.style.top = `${y}px`;\n this._proxyEl.style.width = '0';\n this._proxyEl.style.height = '0';\n }\n\n private _relocateLightChildren(): void {\n if (!this._menuContainerRef) return;\n const kids = Array.from(this.children);\n if (kids.length === 0) return;\n for (const kid of kids) {\n this._menuContainerRef.appendChild(kid);\n }\n }\n\n private _renderDataItems(): void {\n const container = this._menuContainerRef;\n if (!container) return;\n while (container.firstChild) container.removeChild(container.firstChild);\n for (const entry of this.items) {\n const node = this._createDataNode(entry);\n if (node) container.appendChild(node);\n }\n }\n\n private _createDataNode(entry: NileContextMenuData): HTMLElement | null {\n if (entry.type === 'group') {\n const group = document.createElement('nile-context-menu-group') as NileContextMenuGroup;\n if (entry.name) group.label = entry.name;\n for (const item of entry.data ?? []) {\n group.appendChild(this._createItemNode(item));\n }\n return group;\n }\n return null;\n }\n\n private _createItemNode(data: NileContextMenuItemData): NileContextMenuItem {\n const item = document.createElement('nile-context-menu-item') as NileContextMenuItem;\n if (data.id) item.id = data.id;\n item.value = data.value ?? data.id ?? '';\n if (data.disabled) item.disabled = true;\n if (data.open) item.open = true;\n if (data.icon) {\n const glyph = document.createElement('nile-glyph');\n glyph.setAttribute('slot', 'icon');\n glyph.setAttribute('name', data.icon);\n if (data.iconSet) glyph.setAttribute('set', data.iconSet);\n if (data.iconSize) glyph.setAttribute('size', data.iconSize);\n if (data.iconMethod) glyph.setAttribute('method', data.iconMethod);\n if (data.iconColor) glyph.setAttribute('color', data.iconColor);\n item.appendChild(glyph);\n }\n item.appendChild(document.createTextNode(data.label));\n if (data.submenu && data.submenu.length > 0) {\n const submenu = document.createElement('nile-context-submenu');\n for (const entry of data.submenu) {\n const node = this._createDataNode(entry);\n if (node) submenu.appendChild(node);\n }\n item.appendChild(submenu);\n }\n return item;\n }\n\n private _parseChildren(): void {\n const root: Element = this._menuContainerRef ?? this;\n const all = Array.from(root.querySelectorAll(ITEM_TAG)) as NileContextMenuItem[];\n this._items = all.filter(item => !this._isInsideDescendantSubmenu(item, root));\n }\n\n private _isInsideDescendantSubmenu(item: Element, container: Element): boolean {\n let cur: Element | null = item.parentElement;\n while (cur && cur !== container) {\n if (cur.tagName.toLowerCase() === SUBMENU_TAG) return true;\n cur = cur.parentElement;\n }\n return false;\n }\n\n public get menuItems(): readonly NileContextMenuItem[] {\n return this._items;\n }\n\n public getItemByValue(value: string): NileContextMenuItem | undefined {\n return this._items.find(item => item.value === value);\n }\n\n public get isOpen(): boolean {\n return this._open;\n }\n\n public openAt(options: NileContextMenuOpenOptions): void {\n if (this._open) return;\n for (const other of NileContextMenu._openInstances) {\n if (other !== this) other.close('programmatic');\n }\n this._previouslyFocused = document.activeElement as HTMLElement | null;\n this._openContext = {\n x: options.x,\n y: options.y,\n target: options.target ?? null,\n originalEvent: options.originalEvent ?? null,\n };\n this._ensureProxy();\n this._positionProxyAt(options.x, options.y);\n this._open = true;\n this.open = true;\n NileContextMenu._openInstances.add(this);\n document.addEventListener('pointerdown', this._onOutsidePointer, true);\n document.addEventListener('keydown', this._onKeydown, true);\n if (this._pinned) window.addEventListener('resize', this._onPinnedReposition);\n requestAnimationFrame(() => {\n if (this._open) window.addEventListener('scroll', this._onScroll, true);\n requestAnimationFrame(() => this._openPinnedSubmenus());\n });\n this.emit('nile-change', { type: 'open', ...this._openContext });\n }\n\n public close(reason: NileContextMenuCloseReason = 'programmatic'): void {\n if (!this._open) return;\n this._open = false;\n this.open = false;\n this._pinned = false;\n this._openContext = null;\n NileContextMenu._openInstances.delete(this);\n const subs = this._menuContainerRef?.querySelectorAll(SUBMENU_TAG);\n subs?.forEach(s => (s as unknown as { closeSubmenu?: () => void }).closeSubmenu?.());\n document.removeEventListener('pointerdown', this._onOutsidePointer, true);\n document.removeEventListener('keydown', this._onKeydown, true);\n window.removeEventListener('scroll', this._onScroll, true);\n window.removeEventListener('resize', this._onPinnedReposition);\n const active = document.activeElement;\n const focusInMenu =\n active === this ||\n this._items.some(item => item === active || item.shadowRoot?.contains(active as Node));\n if (focusInMenu) {\n this._previouslyFocused?.focus?.();\n }\n this._previouslyFocused = null;\n this.emit('nile-change', { type: 'close', reason });\n }\n\n private _enabledItems(): NileContextMenuItem[] {\n return this._items.filter(item => !item.disabled);\n }\n\n private _getFocusedItem(): NileContextMenuItem | null {\n const active = document.activeElement;\n for (const item of this._items) {\n if (item === active || item.shadowRoot?.contains(active as Node)) return item;\n }\n return null;\n }\n\n private _getFocusedItemAnyLevel(): {\n item: NileContextMenuItem | null;\n container: Element | null;\n } {\n let node: Element | null = document.activeElement as Element | null;\n while (node && node.tagName?.toLowerCase() !== ITEM_TAG) {\n const root = node.getRootNode();\n node = root instanceof ShadowRoot ? root.host : node.parentElement;\n }\n if (!node) return { item: null, container: null };\n const container = node.closest(`.${MENU_CONTAINER_CLASS}`);\n return { item: node as NileContextMenuItem, container };\n }\n\n private _enabledItemsIn(container: Element): NileContextMenuItem[] {\n const all = Array.from(container.querySelectorAll(ITEM_TAG)) as NileContextMenuItem[];\n return all.filter(item => {\n if (item.disabled) return false;\n return !this._isInsideDescendantSubmenu(item, container);\n });\n }\n\n private _focusFirstEnabled(): void {\n const enabled = this._enabledItems();\n enabled[0]?.focus();\n }\n\n private _moveFocus(delta: number): void {\n const { item: focused, container } = this._getFocusedItemAnyLevel();\n const root: Element = container ?? this._menuContainerRef ?? this;\n const enabled = this._enabledItemsIn(root);\n if (enabled.length === 0) return;\n const current = focused ? enabled.indexOf(focused) : -1;\n const next = current + delta;\n const wrapped = ((next % enabled.length) + enabled.length) % enabled.length;\n enabled[wrapped].focus();\n }\n\n private _onKeydown = (e: KeyboardEvent): void => {\n if (!this._open) return;\n switch (e.key) {\n case 'Escape':\n e.preventDefault();\n this.close('escape');\n return;\n case 'Tab':\n this.close('programmatic');\n return;\n case 'ArrowDown':\n e.preventDefault();\n this._moveFocus(1);\n return;\n case 'ArrowUp':\n e.preventDefault();\n this._moveFocus(-1);\n return;\n case 'ArrowRight': {\n const { item } = this._getFocusedItemAnyLevel();\n const sub = item?.querySelector(`:scope > ${SUBMENU_TAG}`) as\n | (HTMLElement & { openSubmenu?: () => void })\n | null;\n if (!sub) return;\n e.preventDefault();\n sub.openSubmenu?.();\n requestAnimationFrame(() => {\n (sub as unknown as { focusFirstItem?: () => void }).focusFirstItem?.();\n });\n return;\n }\n case 'ArrowLeft': {\n const { item, container } = this._getFocusedItemAnyLevel();\n if (!item || !container) return;\n const sub = this._findSubmenuOwning(container);\n if (!sub) return;\n e.preventDefault();\n // Pinned submenus (parent item has `open`) stay open; just move focus.\n if (!sub.parentItem?.open) sub.closeSubmenu?.();\n sub.parentItem?.focus();\n return;\n }\n case 'Enter':\n case ' ': {\n e.preventDefault();\n const { item } = this._getFocusedItemAnyLevel();\n if (!item || item.disabled) return;\n const sub = item.querySelector(`:scope > ${SUBMENU_TAG}`) as\n | (HTMLElement & { openSubmenu?: () => void })\n | null;\n if (sub) {\n sub.openSubmenu?.();\n requestAnimationFrame(() => {\n const panel = sub.shadowRoot?.querySelector(`.${MENU_CONTAINER_CLASS}`);\n const first = panel\n ? (this._enabledItemsIn(panel)[0] as NileContextMenuItem | undefined)\n : undefined;\n first?.focus();\n });\n return;\n }\n this._selectItem(item);\n return;\n }\n }\n };\n\n private _findSubmenuOwning(container: Element):\n | (HTMLElement & { closeSubmenu?: () => void; parentItem?: NileContextMenuItem | null })\n | null {\n type SubCtor = {\n findByContainer?: (c: Element) => HTMLElement & {\n closeSubmenu?: () => void;\n parentItem?: NileContextMenuItem | null;\n } | null;\n };\n const customElements = window.customElements;\n const ctor = customElements.get(SUBMENU_TAG) as unknown as SubCtor | undefined;\n return ctor?.findByContainer?.(container) ?? null;\n }\n\n private _onScroll = (e: Event): void => {\n if (!this._open) return;\n if (this._pinned) {\n this._onPinnedReposition();\n return;\n }\n const path = e.composedPath();\n // Scroll inside the root menu container?\n if (this._menuContainerRef && path.includes(this._menuContainerRef)) return;\n // Scroll inside any descendant submenu's portaled panel?\n for (const node of path) {\n if (node instanceof HTMLElement && node.classList?.contains(MENU_CONTAINER_CLASS)) {\n return;\n }\n }\n this.close('programmatic');\n };\n\n private _onOutsidePointer = (e: Event): void => {\n if (!this._open) return;\n const path = e.composedPath();\n if (this._menuContainerRef && path.includes(this._menuContainerRef)) return;\n for (const node of path) {\n if (\n node instanceof HTMLElement &&\n node.classList?.contains(MENU_CONTAINER_CLASS)\n ) {\n return;\n }\n }\n this.close('outside-click');\n };\n\n private _onDescendantSelect = (e: CustomEvent): void => {\n if (e.detail?.type !== 'click') return;\n this.close('select');\n };\n private _stop(e: Event): void {\n e.stopPropagation();\n }\n\n private _onPanelShown = (e: Event): void => {\n e.stopPropagation();\n this._openPinnedSubmenus();\n };\n\n /** Open the submenu of every top-level item carrying the `open` attribute. */\n private _openPinnedSubmenus(): void {\n if (!this._open || !this._menuContainerRef) return;\n for (const item of this._items) {\n if (!item.open || item.disabled) continue;\n const sub = item.querySelector(`:scope > ${SUBMENU_TAG}`) as\n | (HTMLElement & { openSubmenu?: () => void })\n | null;\n sub?.openSubmenu?.();\n }\n }\n\n private _onMenuMouseOver = (e: MouseEvent): void => {\n const item = e\n .composedPath()\n .find(\n node =>\n node instanceof HTMLElement &&\n node.tagName.toLowerCase() === ITEM_TAG\n ) as NileContextMenuItem | undefined;\n if (!item || item.disabled) return;\n item.focus();\n };\n\n private _onMenuClick = (e: MouseEvent): void => {\n const item = e\n .composedPath()\n .find(\n node =>\n node instanceof HTMLElement &&\n node.tagName.toLowerCase() === ITEM_TAG\n ) as NileContextMenuItem | undefined;\n\n if (!item || item.disabled) return;\n if (item.querySelector(`:scope > ${SUBMENU_TAG}`)) return;\n this._selectItem(item);\n };\n\n private _selectItem(item: NileContextMenuItem): void {\n const detail = {\n id: item.id,\n value: item.value,\n name: (item.textContent ?? '').trim(),\n target: this._openContext?.target ?? null,\n originalEvent: this._openContext?.originalEvent ?? null,\n };\n try {\n item.onSelect?.(detail);\n } catch (err) {\n console.error('[nile-context-menu] onSelect callback threw:', err);\n }\n this.emit('nile-change', { type: 'click', ...detail });\n this.close('select');\n }\n\n public render(): TemplateResult {\n return html`\n <nile-floating-panel\n for=${this._proxyId}\n trigger=\"manual\"\n placement=\"bottom-start\"\n panelClass=\"nile-context-menu-panel\"\n .zIndex=${this.zIndex}\n ?open=${this._open}\n .interactive=${true}\n .hideOnClick=${false}\n .closeOnEscape=${false}\n .arrow=${'none'}\n .distance=${0}\n @nile-init=${this._stop}\n @nile-destroy=${this._stop}\n @nile-show=${this._stop}\n @nile-hide=${this._stop}\n @nile-after-show=${this._onPanelShown}\n @nile-after-hide=${this._stop}\n @nile-toggle=${this._stop}\n @nile-visibility-change=${this._stop}\n >\n <div class=\"nile-context-menu__menu\" role=\"menu\"></div>\n </nile-floating-panel>\n `;\n }\n}\n\nexport default NileContextMenu;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-context-menu': NileContextMenu;\n }\n}\n"],"names":["ITEM_TAG","SUBMENU_TAG","MENU_CONTAINER_CLASS","OBSERVED_ITEM_ATTRS","proxyIdSeq","NileContextMenu","NileContextMenu_1","c","constructor","this","trigger","skipOn","zIndex","open","items","_items","_open","_pinned","_openContext","_targetEl","_previouslyFocused","_proxyId","_wasDataMode","_onPinnedReposition","rect","getBoundingClientRect","_positionProxyAt","left","bottom","_menuContainerRef","_onKeydown","e","key","preventDefault","close","_moveFocus","_e$openSubmenu","_this$_getFocusedItem","_getFocusedItemAnyLevel","sub","item","querySelector","concat","openSubmenu","requestAnimationFrame","_e$focusFirstItem","focusFirstItem","_s$parentItem","_s$closeSubmenu","_s$parentItem2","_this$_getFocusedItem2","container","_findSubmenuOwning","parentItem","closeSubmenu","focus","_e3$openSubmenu","_this$_getFocusedItem3","disabled","_e3$shadowRoot","panel","shadowRoot","first","_enabledItemsIn","undefined","_selectItem","_onScroll","path","composedPath","includes","_iterator","_createForOfIteratorHelper","_step","s","n","done","_t$classList","node","HTMLElement","classList","contains","_onOutsidePointer","_iterator2","_step2","_t2$classList","_onDescendantSelect","_t$detail","detail","type","_onPanelShown","stopPropagation","_openPinnedSubmenus","_onMenuMouseOver","find","tagName","toLowerCase","_onMenuClick","_this","_inherits","_h","_createClass","get","Array","isArray","length","value","connectedCallback","super","_ensureProxy","_resolveTarget","_attachTriggers","_lightObserver","MutationObserver","_isDataMode","_relocateLightChildren","observe","childList","updateComplete","then","isConnected","_openAtTarget","updated","changed","has","_renderDataItems","openAt","x","y","target","_this$for","_this$getRootNode","trim","root","getRootNode","document","test","getElementById","_detachTriggers","cleanups","_this$skipOn$trim","_this$skipOn","skipSelector","isInteractive","el","closest","handler","me","clientX","clientY","originalEvent","window","addEventListener","push","removeEventListener","forEach","fn","wantsClick","disconnectedCallback","_openInstances","_this$_detachTriggers2","disconnect","_menuObserver","_proxyEl","remove","firstUpdated","renderRoot","_parseChildren","subtree","attributes","attributeFilter","createElement","id","setAttribute","style","cssText","body","appendChild","position","scrollX","top","scrollY","width","height","kids","from","children","_iterator3","_step3","kid","err","f","firstChild","removeChild","_iterator4","_step4","entry","_createDataNode","_t$data","group","name","label","_iterator5","data","_step5","_createItemNode","icon","glyph","iconSet","iconSize","iconMethod","iconColor","createTextNode","submenu","_iterator6","_step6","_this$_menuContainerR4","_this5","all","querySelectorAll","filter","_isInsideDescendantSubmenu","cur","parentElement","menuItems","getItemByValue","options","_this6","_t$target","_t$originalEvent","_iterator7","other","_step7","activeElement","add","emit","_objectSpread","_this$_menuContainerR5","_this$_previouslyFocu","_this$_previouslyFocu2","reason","arguments","delete","subs","active","some","t","_enabledItems","_getFocusedItem","_iterator8","_step8","_i8$shadowRoot","_t$tagName","ShadowRoot","host","_this7","_focusFirstEnabled","enabled","delta","_ref2","_this$_getFocusedItem4","focused","current","indexOf","_i$findByContainer","_i$findByContainer2","ctor","customElements","findByContainer","_stop","_step9","_iterator9","_i10$openSubmenu","textContent","_this$_openContext$ta","onSelect","console","error","render","html","_templateObject","_taggedTemplateLiteral","styles","NileElement","Set","__decorate","property","attribute","String","reflect","prototype","Number","Boolean","query","state","_export","customElement"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{__decorate as t}from"tslib";import{html as i}from"lit";import{property as e,query as s,state as n,customElement as o}from"lit/decorators.js";import{s as r}from"./nile-context-menu.css.esm.js";import{N as h}from"../internal/nile-element.esm.js";import"../nile-floating-panel/nile-floating-panel.esm.js";import"../nile-context-menu-group/nile-context-menu-group.esm.js";import"../nile-context-menu-item/nile-context-menu-item.esm.js";import"../nile-context-submenu/nile-context-submenu.esm.js";import"../internal/accessibility/a11y.state.enum.esm.js";import"../internal/accessibility/a11y.property.enum.esm.js";import"../internal/accessibility/role.enum.esm.js";import"../nile-floating-panel/nile-floating-panel.css.esm.js";import"../tippy.esm-57628c2b.esm.js";import"../nile-lite-tooltip/utils.esm.js";import"../utilities/visibility-manager.esm.js";import"../nile-context-menu-group/nile-context-menu-group.css.esm.js";import"../nile-context-menu-item/nile-context-menu-item.css.esm.js";var c;const l="nile-context-menu-item",u="nile-context-submenu",a="nile-context-menu__menu",m=["value","disabled"];let d=0,p=c=class extends h{constructor(){super(...arguments),this.for="",this.trigger="right",this.skipOn="",this.zIndex=9999,this.items=[],this._items=[],this._open=!1,this._openContext=null,this._targetEl=null,this._previouslyFocused=null,this._proxyId="nile-context-menu-anchor-"+ ++d,this._wasDataMode=!1,this._menuContainerRef=null,this._onKeydown=t=>{if(this._open)switch(t.key){case"Escape":return t.preventDefault(),void this.close("escape");case"Tab":return void this.close("programmatic");case"ArrowDown":return t.preventDefault(),void this._moveFocus(1);case"ArrowUp":return t.preventDefault(),void this._moveFocus(-1);case"ArrowRight":{const{item:i}=this._getFocusedItemAnyLevel(),e=i?.querySelector(`:scope > ${u}`);if(!e)return;return t.preventDefault(),e.openSubmenu?.(),void requestAnimationFrame((()=>{e.focusFirstItem?.()}))}case"ArrowLeft":{const{item:i,container:e}=this._getFocusedItemAnyLevel();if(!i||!e)return;const s=this._findSubmenuOwning(e);if(!s)return;return t.preventDefault(),s.closeSubmenu?.(),void s.parentItem?.focus()}case"Enter":case" ":{t.preventDefault();const{item:i}=this._getFocusedItemAnyLevel();if(!i||i.disabled)return;const e=i.querySelector(`:scope > ${u}`);return e?(e.openSubmenu?.(),void requestAnimationFrame((()=>{const t=e.shadowRoot?.querySelector(`.${a}`),i=t?this._enabledItemsIn(t)[0]:void 0;i?.focus()}))):void this._selectItem(i)}}},this._onScroll=t=>{if(!this._open)return;const i=t.composedPath();if(!this._menuContainerRef||!i.includes(this._menuContainerRef)){for(const t of i)if(t instanceof HTMLElement&&t.classList?.contains(a))return;this.close("programmatic")}},this._onOutsidePointer=t=>{if(!this._open)return;const i=t.composedPath();if(!this._menuContainerRef||!i.includes(this._menuContainerRef)){for(const t of i)if(t instanceof HTMLElement&&t.classList?.contains(a))return;this.close("outside-click")}},this._onDescendantSelect=t=>{"click"===t.detail?.type&&this.close("select")},this._onPanelShown=t=>{t.stopPropagation()},this._onMenuMouseOver=t=>{const i=t.composedPath().find((t=>t instanceof HTMLElement&&t.tagName.toLowerCase()===l));i&&!i.disabled&&i.focus()},this._onMenuClick=t=>{const i=t.composedPath().find((t=>t instanceof HTMLElement&&t.tagName.toLowerCase()===l));i&&!i.disabled&&(i.querySelector(`:scope > ${u}`)||this._selectItem(i))}}static get styles(){return[r]}get _isDataMode(){return Array.isArray(this.items)&&this.items.length>0}connectedCallback(){super.connectedCallback(),this._ensureProxy(),this._resolveTarget(),this._attachTriggers(),this._lightObserver=new MutationObserver((()=>{this._isDataMode||this._relocateLightChildren()})),this._lightObserver.observe(this,{childList:!0})}updated(t){super.updated(t),(t.has("for")||t.has("trigger")||t.has("skipOn"))&&this._open&&this.close("programmatic"),t.has("for")?(this._resolveTarget(),this._attachTriggers()):(t.has("trigger")||t.has("skipOn"))&&this._attachTriggers(),t.has("items")&&this._menuContainerRef&&(this._isDataMode?(this._renderDataItems(),this._wasDataMode=!0):this._wasDataMode&&(this._renderDataItems(),this._wasDataMode=!1))}_resolveTarget(){const t=this.for?.trim();if(!t)return void(this._targetEl=null);const i=this.getRootNode()??document;/^[#.\[:]/.test(t)?this._targetEl=i.querySelector(t):this._targetEl="getElementById"in i?i.getElementById(t):document.getElementById(t)}get targetElement(){return this._targetEl}_attachTriggers(){this._detachTriggers?.(),this._detachTriggers=void 0;const t=this.trigger;if("manual"===t)return;const i=[];if("global"===t){const t=this.skipOn?.trim()??"",e=i=>!(!i||!t)&&!!i.closest(t),s=t=>{const i=t;e(i.target)||(i.preventDefault(),this._open||this.open({x:i.clientX,y:i.clientY,target:i.target??void 0,originalEvent:i}))};return window.addEventListener("contextmenu",s,!0),i.push((()=>window.removeEventListener("contextmenu",s,!0))),void(this._detachTriggers=()=>i.forEach((t=>t())))}const e=this._targetEl;if(!e)return;const s="left"===t||"both"===t;if("right"===t||"both"===t){const t=t=>{const i=t;i.preventDefault(),this.open({x:i.clientX,y:i.clientY,target:e,originalEvent:i})};e.addEventListener("contextmenu",t),i.push((()=>e.removeEventListener("contextmenu",t)))}if(s){const t=t=>{const i=t;this.open({x:i.clientX,y:i.clientY,target:e,originalEvent:i})};e.addEventListener("click",t),i.push((()=>e.removeEventListener("click",t)))}0!==i.length&&(this._detachTriggers=()=>i.forEach((t=>t())))}disconnectedCallback(){super.disconnectedCallback(),c._openInstances.delete(this),this._open=!1,this._detachTriggers?.(),this._detachTriggers=void 0,this._lightObserver?.disconnect(),this._lightObserver=void 0,this._menuObserver?.disconnect(),this._menuObserver=void 0,this._menuContainerRef?.removeEventListener("click",this._onMenuClick),this._menuContainerRef?.removeEventListener("mouseover",this._onMenuMouseOver),this._menuContainerRef?.removeEventListener("nile-change",this._onDescendantSelect),document.removeEventListener("pointerdown",this._onOutsidePointer,!0),document.removeEventListener("keydown",this._onKeydown,!0),window.removeEventListener("scroll",this._onScroll,!0),this._proxyEl?.remove(),this._proxyEl=void 0}firstUpdated(){this._menuContainerRef=this.renderRoot.querySelector(".nile-context-menu__menu"),this._isDataMode?(this._renderDataItems(),this._wasDataMode=!0):this._relocateLightChildren(),this._menuContainerRef&&(this._menuObserver=new MutationObserver((()=>this._parseChildren())),this._menuObserver.observe(this._menuContainerRef,{childList:!0,subtree:!0,attributes:!0,attributeFilter:m}),this._menuContainerRef.addEventListener("click",this._onMenuClick),this._menuContainerRef.addEventListener("mouseover",this._onMenuMouseOver),this._menuContainerRef.addEventListener("nile-change",this._onDescendantSelect)),this._parseChildren()}_ensureProxy(){if(this._proxyEl)return;const t=document.createElement("div");t.id=this._proxyId,t.setAttribute("aria-hidden","true"),t.style.cssText="position: fixed; top: 0; left: 0; width: 0; height: 0; pointer-events: none;",document.body.appendChild(t),this._proxyEl=t}_positionProxyAt(t,i){this._proxyEl&&(this._proxyEl.style.left=`${t}px`,this._proxyEl.style.top=`${i}px`)}_relocateLightChildren(){if(!this._menuContainerRef)return;const t=Array.from(this.children);if(0!==t.length)for(const i of t)this._menuContainerRef.appendChild(i)}_renderDataItems(){const t=this._menuContainerRef;if(t){for(;t.firstChild;)t.removeChild(t.firstChild);for(const i of this.items){const e=this._createDataNode(i);e&&t.appendChild(e)}}}_createDataNode(t){if("group"===t.type){const i=document.createElement("nile-context-menu-group");t.name&&(i.label=t.name);for(const e of t.data??[])i.appendChild(this._createItemNode(e));return i}return null}_createItemNode(t){const i=document.createElement("nile-context-menu-item");if(t.id&&(i.id=t.id),i.value=t.value??t.id??"",t.disabled&&(i.disabled=!0),t.icon){const e=document.createElement("nile-glyph");e.setAttribute("slot","icon"),e.setAttribute("name",t.icon),t.iconSet&&e.setAttribute("set",t.iconSet),t.iconSize&&e.setAttribute("size",t.iconSize),t.iconMethod&&e.setAttribute("method",t.iconMethod),t.iconColor&&e.setAttribute("color",t.iconColor),i.appendChild(e)}if(i.appendChild(document.createTextNode(t.label)),t.submenu&&t.submenu.length>0){const e=document.createElement("nile-context-submenu");for(const i of t.submenu){const t=this._createDataNode(i);t&&e.appendChild(t)}i.appendChild(e)}return i}_parseChildren(){const t=this._menuContainerRef??this,i=Array.from(t.querySelectorAll(l));this._items=i.filter((i=>!this._isInsideDescendantSubmenu(i,t)))}_isInsideDescendantSubmenu(t,i){let e=t.parentElement;for(;e&&e!==i;){if(e.tagName.toLowerCase()===u)return!0;e=e.parentElement}return!1}get menuItems(){return this._items}getItemByValue(t){return this._items.find((i=>i.value===t))}get isOpen(){return this._open}open(t){if(!this._open){for(const t of c._openInstances)t!==this&&t.close("programmatic");this._previouslyFocused=document.activeElement,this._openContext={x:t.x,y:t.y,target:t.target??null,originalEvent:t.originalEvent??null},this._ensureProxy(),this._positionProxyAt(t.x,t.y),this._open=!0,c._openInstances.add(this),document.addEventListener("pointerdown",this._onOutsidePointer,!0),document.addEventListener("keydown",this._onKeydown,!0),requestAnimationFrame((()=>{this._open&&window.addEventListener("scroll",this._onScroll,!0)})),this.emit("nile-change",{type:"open",...this._openContext})}}close(t="programmatic"){if(!this._open)return;this._open=!1,this._openContext=null,c._openInstances.delete(this);const i=this._menuContainerRef?.querySelectorAll(u);i?.forEach((t=>t.closeSubmenu?.())),document.removeEventListener("pointerdown",this._onOutsidePointer,!0),document.removeEventListener("keydown",this._onKeydown,!0),window.removeEventListener("scroll",this._onScroll,!0);const e=document.activeElement;(e===this||this._items.some((t=>t===e||t.shadowRoot?.contains(e))))&&this._previouslyFocused?.focus?.(),this._previouslyFocused=null,this.emit("nile-change",{type:"close",reason:t})}_enabledItems(){return this._items.filter((t=>!t.disabled))}_getFocusedItem(){const t=document.activeElement;for(const i of this._items)if(i===t||i.shadowRoot?.contains(t))return i;return null}_getFocusedItemAnyLevel(){let t=document.activeElement;for(;t&&t.tagName?.toLowerCase()!==l;){const i=t.getRootNode();t=i instanceof ShadowRoot?i.host:t.parentElement}if(!t)return{item:null,container:null};const i=t.closest(`.${a}`);return{item:t,container:i}}_enabledItemsIn(t){return Array.from(t.querySelectorAll(l)).filter((i=>!i.disabled&&!this._isInsideDescendantSubmenu(i,t)))}_focusFirstEnabled(){const t=this._enabledItems();t[0]?.focus()}_moveFocus(t){const{item:i,container:e}=this._getFocusedItemAnyLevel(),s=e??this._menuContainerRef??this,n=this._enabledItemsIn(s);if(0===n.length)return;const o=i?n.indexOf(i):-1;n[((o+t)%n.length+n.length)%n.length].focus()}_findSubmenuOwning(t){const i=window.customElements.get(u);return i?.findByContainer?.(t)??null}_stop(t){t.stopPropagation()}_selectItem(t){const i={id:t.id,value:t.value,name:(t.textContent??"").trim(),target:this._openContext?.target??null,originalEvent:this._openContext?.originalEvent??null};try{t.onSelect?.(i)}catch(t){console.error("[nile-context-menu] onSelect callback threw:",t)}this.emit("nile-change",{type:"click",...i}),this.close("select")}render(){return i`
|
|
1
|
+
import{__decorate as t}from"tslib";import{html as i}from"lit";import{property as e,query as s,state as n,customElement as o}from"lit/decorators.js";import{s as r}from"./nile-context-menu.css.esm.js";import{N as h}from"../internal/nile-element.esm.js";import"../nile-floating-panel/nile-floating-panel.esm.js";import"../nile-context-menu-group/nile-context-menu-group.esm.js";import"../nile-context-menu-item/nile-context-menu-item.esm.js";import"../nile-context-submenu/nile-context-submenu.esm.js";import"../internal/accessibility/a11y.state.enum.esm.js";import"../internal/accessibility/a11y.property.enum.esm.js";import"../internal/accessibility/role.enum.esm.js";import"../nile-floating-panel/nile-floating-panel.css.esm.js";import"../tippy.esm-57628c2b.esm.js";import"../nile-lite-tooltip/utils.esm.js";import"../utilities/visibility-manager.esm.js";import"../nile-context-menu-group/nile-context-menu-group.css.esm.js";import"../nile-context-menu-item/nile-context-menu-item.css.esm.js";var c;const l="nile-context-menu-item",u="nile-context-submenu",a="nile-context-menu__menu",m=["value","disabled"];let d=0,p=c=class extends h{constructor(){super(...arguments),this.for="",this.trigger="right",this.skipOn="",this.zIndex=9999,this.open=!1,this.items=[],this._items=[],this._open=!1,this._pinned=!1,this._openContext=null,this._targetEl=null,this._previouslyFocused=null,this._proxyId="nile-context-menu-anchor-"+ ++d,this._wasDataMode=!1,this._onPinnedReposition=()=>{if(!this._open||!this._pinned||!this._targetEl)return;const t=this._targetEl.getBoundingClientRect();this._positionProxyAt(t.left,t.bottom)},this._menuContainerRef=null,this._onKeydown=t=>{if(this._open)switch(t.key){case"Escape":return t.preventDefault(),void this.close("escape");case"Tab":return void this.close("programmatic");case"ArrowDown":return t.preventDefault(),void this._moveFocus(1);case"ArrowUp":return t.preventDefault(),void this._moveFocus(-1);case"ArrowRight":{const{item:i}=this._getFocusedItemAnyLevel(),e=i?.querySelector(`:scope > ${u}`);if(!e)return;return t.preventDefault(),e.openSubmenu?.(),void requestAnimationFrame((()=>{e.focusFirstItem?.()}))}case"ArrowLeft":{const{item:i,container:e}=this._getFocusedItemAnyLevel();if(!i||!e)return;const s=this._findSubmenuOwning(e);if(!s)return;return t.preventDefault(),s.parentItem?.open||s.closeSubmenu?.(),void s.parentItem?.focus()}case"Enter":case" ":{t.preventDefault();const{item:i}=this._getFocusedItemAnyLevel();if(!i||i.disabled)return;const e=i.querySelector(`:scope > ${u}`);return e?(e.openSubmenu?.(),void requestAnimationFrame((()=>{const t=e.shadowRoot?.querySelector(`.${a}`),i=t?this._enabledItemsIn(t)[0]:void 0;i?.focus()}))):void this._selectItem(i)}}},this._onScroll=t=>{if(!this._open)return;if(this._pinned)return void this._onPinnedReposition();const i=t.composedPath();if(!this._menuContainerRef||!i.includes(this._menuContainerRef)){for(const t of i)if(t instanceof HTMLElement&&t.classList?.contains(a))return;this.close("programmatic")}},this._onOutsidePointer=t=>{if(!this._open)return;const i=t.composedPath();if(!this._menuContainerRef||!i.includes(this._menuContainerRef)){for(const t of i)if(t instanceof HTMLElement&&t.classList?.contains(a))return;this.close("outside-click")}},this._onDescendantSelect=t=>{"click"===t.detail?.type&&this.close("select")},this._onPanelShown=t=>{t.stopPropagation(),this._openPinnedSubmenus()},this._onMenuMouseOver=t=>{const i=t.composedPath().find((t=>t instanceof HTMLElement&&t.tagName.toLowerCase()===l));i&&!i.disabled&&i.focus()},this._onMenuClick=t=>{const i=t.composedPath().find((t=>t instanceof HTMLElement&&t.tagName.toLowerCase()===l));i&&!i.disabled&&(i.querySelector(`:scope > ${u}`)||this._selectItem(i))}}static get styles(){return[r]}get _isDataMode(){return Array.isArray(this.items)&&this.items.length>0}connectedCallback(){super.connectedCallback(),this._ensureProxy(),this._resolveTarget(),this._attachTriggers(),this._lightObserver=new MutationObserver((()=>{this._isDataMode||this._relocateLightChildren()})),this._lightObserver.observe(this,{childList:!0}),this.open&&!this._open&&this.updateComplete.then((()=>{this.isConnected&&this.open&&!this._open&&(this._pinned=!0,this._openAtTarget())}))}updated(t){super.updated(t),(t.has("for")||t.has("trigger")||t.has("skipOn"))&&this._open&&this.close("programmatic"),t.has("for")?(this._resolveTarget(),this._attachTriggers()):(t.has("trigger")||t.has("skipOn"))&&this._attachTriggers(),t.has("items")&&this._menuContainerRef&&(this._isDataMode?(this._renderDataItems(),this._wasDataMode=!0):this._wasDataMode&&(this._renderDataItems(),this._wasDataMode=!1)),t.has("open")&&(this.open&&!this._open?(this._pinned=!0,this._openAtTarget()):!this.open&&this._open&&this.close("programmatic"))}_openAtTarget(){const t=this._targetEl?.getBoundingClientRect();this.openAt({x:t?t.left:0,y:t?t.bottom:0,target:this._targetEl??void 0})}_resolveTarget(){const t=this.for?.trim();if(!t)return void(this._targetEl=null);const i=this.getRootNode()??document;/^[#.\[:]/.test(t)?this._targetEl=i.querySelector(t):this._targetEl="getElementById"in i?i.getElementById(t):document.getElementById(t)}get targetElement(){return this._targetEl}_attachTriggers(){this._detachTriggers?.(),this._detachTriggers=void 0;const t=this.trigger;if("manual"===t)return;const i=[];if("global"===t){const t=this.skipOn?.trim()??"",e=i=>!(!i||!t)&&!!i.closest(t),s=t=>{const i=t;e(i.target)||(i.preventDefault(),this._open||this.openAt({x:i.clientX,y:i.clientY,target:i.target??void 0,originalEvent:i}))};return window.addEventListener("contextmenu",s,!0),i.push((()=>window.removeEventListener("contextmenu",s,!0))),void(this._detachTriggers=()=>i.forEach((t=>t())))}const e=this._targetEl;if(!e)return;const s="left"===t||"both"===t;if("right"===t||"both"===t){const t=t=>{const i=t;i.preventDefault(),this.openAt({x:i.clientX,y:i.clientY,target:e,originalEvent:i})};e.addEventListener("contextmenu",t),i.push((()=>e.removeEventListener("contextmenu",t)))}if(s){const t=t=>{const i=t;this.openAt({x:i.clientX,y:i.clientY,target:e,originalEvent:i})};e.addEventListener("click",t),i.push((()=>e.removeEventListener("click",t)))}0!==i.length&&(this._detachTriggers=()=>i.forEach((t=>t())))}disconnectedCallback(){super.disconnectedCallback(),c._openInstances.delete(this),this._open=!1,this._detachTriggers?.(),this._detachTriggers=void 0,this._lightObserver?.disconnect(),this._lightObserver=void 0,this._menuObserver?.disconnect(),this._menuObserver=void 0,this._menuContainerRef?.removeEventListener("click",this._onMenuClick),this._menuContainerRef?.removeEventListener("mouseover",this._onMenuMouseOver),this._menuContainerRef?.removeEventListener("nile-change",this._onDescendantSelect),document.removeEventListener("pointerdown",this._onOutsidePointer,!0),document.removeEventListener("keydown",this._onKeydown,!0),window.removeEventListener("scroll",this._onScroll,!0),window.removeEventListener("resize",this._onPinnedReposition),this._proxyEl?.remove(),this._proxyEl=void 0}firstUpdated(){this._menuContainerRef=this.renderRoot.querySelector(".nile-context-menu__menu"),this._isDataMode?(this._renderDataItems(),this._wasDataMode=!0):this._relocateLightChildren(),this._menuContainerRef&&(this._menuObserver=new MutationObserver((()=>this._parseChildren())),this._menuObserver.observe(this._menuContainerRef,{childList:!0,subtree:!0,attributes:!0,attributeFilter:m}),this._menuContainerRef.addEventListener("click",this._onMenuClick),this._menuContainerRef.addEventListener("mouseover",this._onMenuMouseOver),this._menuContainerRef.addEventListener("nile-change",this._onDescendantSelect)),this._parseChildren()}_ensureProxy(){if(this._proxyEl)return;const t=document.createElement("div");t.id=this._proxyId,t.setAttribute("aria-hidden","true"),t.style.cssText="position: fixed; top: 0; left: 0; width: 0; height: 0; pointer-events: none;",document.body.appendChild(t),this._proxyEl=t}_positionProxyAt(t,i){if(this._proxyEl){if(this._pinned&&this._targetEl){const t=this._targetEl.getBoundingClientRect();return this._proxyEl.style.position="absolute",this._proxyEl.style.left=`${t.left+window.scrollX}px`,this._proxyEl.style.top=`${t.top+window.scrollY}px`,this._proxyEl.style.width=`${t.width}px`,void(this._proxyEl.style.height=`${t.height}px`)}this._proxyEl.style.position="fixed",this._proxyEl.style.left=`${t}px`,this._proxyEl.style.top=`${i}px`,this._proxyEl.style.width="0",this._proxyEl.style.height="0"}}_relocateLightChildren(){if(!this._menuContainerRef)return;const t=Array.from(this.children);if(0!==t.length)for(const i of t)this._menuContainerRef.appendChild(i)}_renderDataItems(){const t=this._menuContainerRef;if(t){for(;t.firstChild;)t.removeChild(t.firstChild);for(const i of this.items){const e=this._createDataNode(i);e&&t.appendChild(e)}}}_createDataNode(t){if("group"===t.type){const i=document.createElement("nile-context-menu-group");t.name&&(i.label=t.name);for(const e of t.data??[])i.appendChild(this._createItemNode(e));return i}return null}_createItemNode(t){const i=document.createElement("nile-context-menu-item");if(t.id&&(i.id=t.id),i.value=t.value??t.id??"",t.disabled&&(i.disabled=!0),t.open&&(i.open=!0),t.icon){const e=document.createElement("nile-glyph");e.setAttribute("slot","icon"),e.setAttribute("name",t.icon),t.iconSet&&e.setAttribute("set",t.iconSet),t.iconSize&&e.setAttribute("size",t.iconSize),t.iconMethod&&e.setAttribute("method",t.iconMethod),t.iconColor&&e.setAttribute("color",t.iconColor),i.appendChild(e)}if(i.appendChild(document.createTextNode(t.label)),t.submenu&&t.submenu.length>0){const e=document.createElement("nile-context-submenu");for(const i of t.submenu){const t=this._createDataNode(i);t&&e.appendChild(t)}i.appendChild(e)}return i}_parseChildren(){const t=this._menuContainerRef??this,i=Array.from(t.querySelectorAll(l));this._items=i.filter((i=>!this._isInsideDescendantSubmenu(i,t)))}_isInsideDescendantSubmenu(t,i){let e=t.parentElement;for(;e&&e!==i;){if(e.tagName.toLowerCase()===u)return!0;e=e.parentElement}return!1}get menuItems(){return this._items}getItemByValue(t){return this._items.find((i=>i.value===t))}get isOpen(){return this._open}openAt(t){if(!this._open){for(const t of c._openInstances)t!==this&&t.close("programmatic");this._previouslyFocused=document.activeElement,this._openContext={x:t.x,y:t.y,target:t.target??null,originalEvent:t.originalEvent??null},this._ensureProxy(),this._positionProxyAt(t.x,t.y),this._open=!0,this.open=!0,c._openInstances.add(this),document.addEventListener("pointerdown",this._onOutsidePointer,!0),document.addEventListener("keydown",this._onKeydown,!0),this._pinned&&window.addEventListener("resize",this._onPinnedReposition),requestAnimationFrame((()=>{this._open&&window.addEventListener("scroll",this._onScroll,!0),requestAnimationFrame((()=>this._openPinnedSubmenus()))})),this.emit("nile-change",{type:"open",...this._openContext})}}close(t="programmatic"){if(!this._open)return;this._open=!1,this.open=!1,this._pinned=!1,this._openContext=null,c._openInstances.delete(this);const i=this._menuContainerRef?.querySelectorAll(u);i?.forEach((t=>t.closeSubmenu?.())),document.removeEventListener("pointerdown",this._onOutsidePointer,!0),document.removeEventListener("keydown",this._onKeydown,!0),window.removeEventListener("scroll",this._onScroll,!0),window.removeEventListener("resize",this._onPinnedReposition);const e=document.activeElement;(e===this||this._items.some((t=>t===e||t.shadowRoot?.contains(e))))&&this._previouslyFocused?.focus?.(),this._previouslyFocused=null,this.emit("nile-change",{type:"close",reason:t})}_enabledItems(){return this._items.filter((t=>!t.disabled))}_getFocusedItem(){const t=document.activeElement;for(const i of this._items)if(i===t||i.shadowRoot?.contains(t))return i;return null}_getFocusedItemAnyLevel(){let t=document.activeElement;for(;t&&t.tagName?.toLowerCase()!==l;){const i=t.getRootNode();t=i instanceof ShadowRoot?i.host:t.parentElement}if(!t)return{item:null,container:null};const i=t.closest(`.${a}`);return{item:t,container:i}}_enabledItemsIn(t){return Array.from(t.querySelectorAll(l)).filter((i=>!i.disabled&&!this._isInsideDescendantSubmenu(i,t)))}_focusFirstEnabled(){const t=this._enabledItems();t[0]?.focus()}_moveFocus(t){const{item:i,container:e}=this._getFocusedItemAnyLevel(),s=e??this._menuContainerRef??this,n=this._enabledItemsIn(s);if(0===n.length)return;const o=i?n.indexOf(i):-1;n[((o+t)%n.length+n.length)%n.length].focus()}_findSubmenuOwning(t){const i=window.customElements.get(u);return i?.findByContainer?.(t)??null}_stop(t){t.stopPropagation()}_openPinnedSubmenus(){if(this._open&&this._menuContainerRef)for(const t of this._items){if(!t.open||t.disabled)continue;const i=t.querySelector(`:scope > ${u}`);i?.openSubmenu?.()}}_selectItem(t){const i={id:t.id,value:t.value,name:(t.textContent??"").trim(),target:this._openContext?.target??null,originalEvent:this._openContext?.originalEvent??null};try{t.onSelect?.(i)}catch(t){console.error("[nile-context-menu] onSelect callback threw:",t)}this.emit("nile-change",{type:"click",...i}),this.close("select")}render(){return i`
|
|
2
2
|
<nile-floating-panel
|
|
3
3
|
for=${this._proxyId}
|
|
4
4
|
trigger="manual"
|
|
@@ -22,4 +22,4 @@ import{__decorate as t}from"tslib";import{html as i}from"lit";import{property as
|
|
|
22
22
|
>
|
|
23
23
|
<div class="nile-context-menu__menu" role="menu"></div>
|
|
24
24
|
</nile-floating-panel>
|
|
25
|
-
`}};p._openInstances=new Set,t([e({attribute:!0,type:String,reflect:!0})],p.prototype,"for",void 0),t([e({attribute:!0,type:String,reflect:!0})],p.prototype,"trigger",void 0),t([e({attribute:!0,type:String,reflect:!0})],p.prototype,"skipOn",void 0),t([e({attribute:!0,type:Number,reflect:!0})],p.prototype,"zIndex",void 0),t([e({attribute:!1})],p.prototype,"items",void 0),t([s("nile-floating-panel")],p.prototype,"_floatingPanel",void 0),t([n()],p.prototype,"_items",void 0),t([n()],p.prototype,"_open",void 0),p=c=t([o("nile-context-menu")],p);export{p as N};
|
|
25
|
+
`}};p._openInstances=new Set,t([e({attribute:!0,type:String,reflect:!0})],p.prototype,"for",void 0),t([e({attribute:!0,type:String,reflect:!0})],p.prototype,"trigger",void 0),t([e({attribute:!0,type:String,reflect:!0})],p.prototype,"skipOn",void 0),t([e({attribute:!0,type:Number,reflect:!0})],p.prototype,"zIndex",void 0),t([e({attribute:!0,type:Boolean,reflect:!0})],p.prototype,"open",void 0),t([e({attribute:!1})],p.prototype,"items",void 0),t([s("nile-floating-panel")],p.prototype,"_floatingPanel",void 0),t([n()],p.prototype,"_items",void 0),t([n()],p.prototype,"_open",void 0),p=c=t([o("nile-context-menu")],p);export{p as N};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o;}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o;},_typeof(o);}System.register(["tslib","lit","lit/decorators.js","./nile-context-menu-item.css.cjs.js","../internal/nile-element.cjs.js","../internal/accessibility/a11y.state.enum.cjs.js","../internal/accessibility/a11y.property.enum.cjs.js","../internal/accessibility/role.enum.cjs.js"],function(_export,_context){"use strict";var t,e,s,i,a,n,r,o,_templateObject,_templateObject2,l;function _taggedTemplateLiteral(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}));}function _classCallCheck(a,n){if(!(a instanceof n))throw new TypeError("Cannot call a class as a function");}function _defineProperties(e,r){for(var t=0;t<r.length;t++){var o=r[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,_toPropertyKey(o.key),o);}}function _createClass(e,r,t){return r&&_defineProperties(e.prototype,r),t&&_defineProperties(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e;}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==_typeof(i)?i:i+"";}function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.");}return("string"===r?String:Number)(t);}function _callSuper(t,o,e){return o=_getPrototypeOf(o),_possibleConstructorReturn(t,_isNativeReflectConstruct()?Reflect.construct(o,e||[],_getPrototypeOf(t).constructor):o.apply(t,e));}function _possibleConstructorReturn(t,e){if(e&&("object"==_typeof(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(t);}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e;}function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));}catch(t){}return(_isNativeReflectConstruct=function _isNativeReflectConstruct(){return!!t;})();}function _getPrototypeOf(t){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t);},_getPrototypeOf(t);}function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&_setPrototypeOf(t,e);}function _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t;},_setPrototypeOf(t,e);}return{setters:[function(_tslib){t=_tslib.__decorate;},function(_lit){e=_lit.html;s=_lit.nothing;},function(_litDecoratorsJs){i=_litDecoratorsJs.property;a=_litDecoratorsJs.state;n=_litDecoratorsJs.customElement;},function(_nileContextMenuItemCssCjsJs){r=_nileContextMenuItemCssCjsJs.s;},function(_internalNileElementCjsJs){o=_internalNileElementCjsJs.N;},function(_internalAccessibilityA11yStateEnumCjsJs){},function(_internalAccessibilityA11yPropertyEnumCjsJs){},function(_internalAccessibilityRoleEnumCjsJs){}],execute:function execute(){_export("N",l=/*#__PURE__*/function(_o){function l(){var _this;_classCallCheck(this,l);_this=_callSuper(this,l,arguments),_this.value="",_this.disabled=!1,_this._hasSubmenu=!1,_this._hasIcon=!1,_this._submenuExpanded=!1,_this._onSlotChange=function(t){var e=t.target.assignedElements({flatten:!0});_this._hasSubmenu=e.some(function(t){return"nile-context-submenu"===t.tagName.toLowerCase();});},_this._onIconSlotChange=function(t){var e=t.target;_this._hasIcon=e.assignedNodes({flatten:!0}).some(function(t){var _t$textContent;return t.nodeType===Node.ELEMENT_NODE||""!==((_t$textContent=t.textContent)!==null&&_t$textContent!==void 0?_t$textContent:"").trim();});};return _this;}_inherits(l,_o);return _createClass(l,[{key:"setSubmenuExpanded",value:function setSubmenuExpanded(t){this._submenuExpanded=t;}},{key:"focus",value:function focus(t){var _this$shadowRoot;var e=(_this$shadowRoot=this.shadowRoot)===null||_this$shadowRoot===void 0?void 0:_this$shadowRoot.querySelector(".item");e===null||e===void 0||e.focus(t);}},{key:"hasSubmenu",get:function get(){return this._hasSubmenu;}},{key:"render",value:function render(){return e(_templateObject||(_templateObject=_taggedTemplateLiteral(["\n <div\n part=\"item\"\n class=\"item\"\n role=\"menuitem\"\n tabindex=\"-1\"\n aria-disabled=","\n aria-haspopup=","\n aria-expanded=","\n data-has-submenu=","\n >\n <span part=\"icon\" class=\"icon\" data-empty=",">\n <slot name=\"icon\" @slotchange=","></slot>\n </span>\n <span part=\"label\" class=\"label\"><slot @slotchange=","></slot></span>\n ","\n </div>\n "])),this.disabled?"true":"false",this._hasSubmenu?"menu":s,this._hasSubmenu?String(this._submenuExpanded):s,this._hasSubmenu?"true":"false",this._hasIcon?"false":"true",this._onIconSlotChange,this._onSlotChange,this._hasSubmenu?e(_templateObject2||(_templateObject2=_taggedTemplateLiteral(["<span part=\"chevron\" class=\"chevron\" aria-hidden=\"true\">\n <nile-glyph name=\"ng-chevron-right\" size=\"16\"></nile-glyph>\n </span>"]))):"");}}],[{key:"styles",get:function get(){return[r];}}]);}(o));t([i({attribute:!0,type:String,reflect:!0})],l.prototype,"value",void 0),t([i({attribute:!0,type:Boolean,reflect:!0})],l.prototype,"disabled",void 0),t([a()],l.prototype,"_hasSubmenu",void 0),t([a()],l.prototype,"_hasIcon",void 0),t([a()],l.prototype,"_submenuExpanded",void 0),_export("N",l=t([n("nile-context-menu-item")],l));}};});
|
|
1
|
+
function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o;}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o;},_typeof(o);}System.register(["tslib","lit","lit/decorators.js","./nile-context-menu-item.css.cjs.js","../internal/nile-element.cjs.js","../internal/accessibility/a11y.state.enum.cjs.js","../internal/accessibility/a11y.property.enum.cjs.js","../internal/accessibility/role.enum.cjs.js"],function(_export,_context){"use strict";var t,e,s,i,a,n,r,o,_templateObject,_templateObject2,l;function _taggedTemplateLiteral(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}));}function _classCallCheck(a,n){if(!(a instanceof n))throw new TypeError("Cannot call a class as a function");}function _defineProperties(e,r){for(var t=0;t<r.length;t++){var o=r[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,_toPropertyKey(o.key),o);}}function _createClass(e,r,t){return r&&_defineProperties(e.prototype,r),t&&_defineProperties(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e;}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==_typeof(i)?i:i+"";}function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.");}return("string"===r?String:Number)(t);}function _callSuper(t,o,e){return o=_getPrototypeOf(o),_possibleConstructorReturn(t,_isNativeReflectConstruct()?Reflect.construct(o,e||[],_getPrototypeOf(t).constructor):o.apply(t,e));}function _possibleConstructorReturn(t,e){if(e&&("object"==_typeof(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(t);}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e;}function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));}catch(t){}return(_isNativeReflectConstruct=function _isNativeReflectConstruct(){return!!t;})();}function _getPrototypeOf(t){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t);},_getPrototypeOf(t);}function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&_setPrototypeOf(t,e);}function _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t;},_setPrototypeOf(t,e);}return{setters:[function(_tslib){t=_tslib.__decorate;},function(_lit){e=_lit.html;s=_lit.nothing;},function(_litDecoratorsJs){i=_litDecoratorsJs.property;a=_litDecoratorsJs.state;n=_litDecoratorsJs.customElement;},function(_nileContextMenuItemCssCjsJs){r=_nileContextMenuItemCssCjsJs.s;},function(_internalNileElementCjsJs){o=_internalNileElementCjsJs.N;},function(_internalAccessibilityA11yStateEnumCjsJs){},function(_internalAccessibilityA11yPropertyEnumCjsJs){},function(_internalAccessibilityRoleEnumCjsJs){}],execute:function execute(){_export("N",l=/*#__PURE__*/function(_o){function l(){var _this;_classCallCheck(this,l);_this=_callSuper(this,l,arguments),_this.value="",_this.disabled=!1,_this.open=!1,_this._hasSubmenu=!1,_this._hasIcon=!1,_this._submenuExpanded=!1,_this._onSlotChange=function(t){var e=t.target.assignedElements({flatten:!0});_this._hasSubmenu=e.some(function(t){return"nile-context-submenu"===t.tagName.toLowerCase();});},_this._onIconSlotChange=function(t){var e=t.target;_this._hasIcon=e.assignedNodes({flatten:!0}).some(function(t){var _t$textContent;return t.nodeType===Node.ELEMENT_NODE||""!==((_t$textContent=t.textContent)!==null&&_t$textContent!==void 0?_t$textContent:"").trim();});};return _this;}_inherits(l,_o);return _createClass(l,[{key:"setSubmenuExpanded",value:function setSubmenuExpanded(t){this._submenuExpanded=t;}},{key:"focus",value:function focus(t){var _this$shadowRoot;var e=(_this$shadowRoot=this.shadowRoot)===null||_this$shadowRoot===void 0?void 0:_this$shadowRoot.querySelector(".item");e===null||e===void 0||e.focus(t);}},{key:"hasSubmenu",get:function get(){return this._hasSubmenu;}},{key:"render",value:function render(){return e(_templateObject||(_templateObject=_taggedTemplateLiteral(["\n <div\n part=\"item\"\n class=\"item\"\n role=\"menuitem\"\n tabindex=\"-1\"\n aria-disabled=","\n aria-haspopup=","\n aria-expanded=","\n data-has-submenu=","\n >\n <span part=\"icon\" class=\"icon\" data-empty=",">\n <slot name=\"icon\" @slotchange=","></slot>\n </span>\n <span part=\"label\" class=\"label\"><slot @slotchange=","></slot></span>\n ","\n </div>\n "])),this.disabled?"true":"false",this._hasSubmenu?"menu":s,this._hasSubmenu?String(this._submenuExpanded):s,this._hasSubmenu?"true":"false",this._hasIcon?"false":"true",this._onIconSlotChange,this._onSlotChange,this._hasSubmenu?e(_templateObject2||(_templateObject2=_taggedTemplateLiteral(["<span part=\"chevron\" class=\"chevron\" aria-hidden=\"true\">\n <nile-glyph name=\"ng-chevron-right\" size=\"16\" method=\"stroke\"></nile-glyph>\n </span>"]))):"");}}],[{key:"styles",get:function get(){return[r];}}]);}(o));t([i({attribute:!0,type:String,reflect:!0})],l.prototype,"value",void 0),t([i({attribute:!0,type:Boolean,reflect:!0})],l.prototype,"disabled",void 0),t([i({attribute:!0,type:Boolean,reflect:!0})],l.prototype,"open",void 0),t([a()],l.prototype,"_hasSubmenu",void 0),t([a()],l.prototype,"_hasIcon",void 0),t([a()],l.prototype,"_submenuExpanded",void 0),_export("N",l=t([n("nile-context-menu-item")],l));}};});
|
|
2
2
|
//# sourceMappingURL=nile-context-menu-item.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nile-context-menu-item.cjs.js","sources":["../../../src/nile-context-menu-item/nile-context-menu-item.ts"],"sourcesContent":["/**\n * Copyright Aquera Inc 2026\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { html, CSSResultArray, TemplateResult, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { styles } from './nile-context-menu-item.css';\nimport NileElement from '../internal/nile-element';\n\n//Data passed to an item's `onSelect` callback. Matches the `nile-context-menu:select` event detail.\nexport interface NileContextMenuItemSelectDetail {\n id: string;\n value: string;\n name: string;\n target: Element | null;\n originalEvent: Event | null;\n}\n\nexport type NileContextMenuItemSelectHandler = (\n detail: NileContextMenuItemSelectDetail\n) => void;\n\n/**\n * Nile context-menu item. A clickable entry inside `nile-context-menu`.\n *\n * @tag nile-context-menu-item\n *\n * @slot - Default slot for the visible label.\n * @slot icon - Optional leading icon (e.g. a `<nile-glyph slot=\"icon\">`).\n */\n@customElement('nile-context-menu-item')\nexport class NileContextMenuItem extends NileElement {\n public static get styles(): CSSResultArray {\n return [styles];\n }\n\n @property({ attribute: true, type: String, reflect: true }) value = '';\n\n @property({ attribute: true, type: Boolean, reflect: true }) disabled = false;\n\n public onSelect?: NileContextMenuItemSelectHandler;\n\n @state() private _hasSubmenu = false;\n\n @state() private _hasIcon = false;\n\n @state() private _submenuExpanded = false;\n\n public setSubmenuExpanded(expanded: boolean): void {\n this._submenuExpanded = expanded;\n }\n\n public override focus(options?: FocusOptions): void {\n const inner = this.shadowRoot?.querySelector('.item') as HTMLElement | null;\n inner?.focus(options);\n }\n\n public get hasSubmenu(): boolean {\n return this._hasSubmenu;\n }\n\n private _onSlotChange = (e: Event): void => {\n const slot = e.target as HTMLSlotElement;\n const nodes = slot.assignedElements({ flatten: true });\n this._hasSubmenu = nodes.some(\n n => n.tagName.toLowerCase() === 'nile-context-submenu'\n );\n };\n\n private _onIconSlotChange = (e: Event): void => {\n const slot = e.target as HTMLSlotElement;\n this._hasIcon = slot.assignedNodes({ flatten: true }).some(\n n => n.nodeType === Node.ELEMENT_NODE || (n.textContent ?? '').trim() !== ''\n );\n };\n\n public render(): TemplateResult {\n return html`\n <div\n part=\"item\"\n class=\"item\"\n role=\"menuitem\"\n tabindex=\"-1\"\n aria-disabled=${this.disabled ? 'true' : 'false'}\n aria-haspopup=${this._hasSubmenu ? 'menu' : nothing}\n aria-expanded=${this._hasSubmenu ? String(this._submenuExpanded) : nothing}\n data-has-submenu=${this._hasSubmenu ? 'true' : 'false'}\n >\n <span part=\"icon\" class=\"icon\" data-empty=${this._hasIcon ? 'false' : 'true'}>\n <slot name=\"icon\" @slotchange=${this._onIconSlotChange}></slot>\n </span>\n <span part=\"label\" class=\"label\"><slot @slotchange=${this._onSlotChange}></slot></span>\n ${this._hasSubmenu\n ? html`<span part=\"chevron\" class=\"chevron\" aria-hidden=\"true\">\n <nile-glyph name=\"ng-chevron-right\" size=\"16\"></nile-glyph>\n </span>`\n : ''}\n </div>\n `;\n }\n}\n\nexport default NileContextMenuItem;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-context-menu-item': NileContextMenuItem;\n }\n}\n"],"names":["NileContextMenuItem","
|
|
1
|
+
{"version":3,"file":"nile-context-menu-item.cjs.js","sources":["../../../src/nile-context-menu-item/nile-context-menu-item.ts"],"sourcesContent":["/**\n * Copyright Aquera Inc 2026\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { html, CSSResultArray, TemplateResult, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { styles } from './nile-context-menu-item.css';\nimport NileElement from '../internal/nile-element';\n\n//Data passed to an item's `onSelect` callback. Matches the `nile-context-menu:select` event detail.\nexport interface NileContextMenuItemSelectDetail {\n id: string;\n value: string;\n name: string;\n target: Element | null;\n originalEvent: Event | null;\n}\n\nexport type NileContextMenuItemSelectHandler = (\n detail: NileContextMenuItemSelectDetail\n) => void;\n\n/**\n * Nile context-menu item. A clickable entry inside `nile-context-menu`.\n *\n * @tag nile-context-menu-item\n *\n * @slot - Default slot for the visible label.\n * @slot icon - Optional leading icon (e.g. a `<nile-glyph slot=\"icon\">`).\n */\n@customElement('nile-context-menu-item')\nexport class NileContextMenuItem extends NileElement {\n public static get styles(): CSSResultArray {\n return [styles];\n }\n\n @property({ attribute: true, type: String, reflect: true }) value = '';\n\n @property({ attribute: true, type: Boolean, reflect: true }) disabled = false;\n\n @property({ attribute: true, type: Boolean, reflect: true }) open = false;\n\n public onSelect?: NileContextMenuItemSelectHandler;\n\n @state() private _hasSubmenu = false;\n\n @state() private _hasIcon = false;\n\n @state() private _submenuExpanded = false;\n\n public setSubmenuExpanded(expanded: boolean): void {\n this._submenuExpanded = expanded;\n }\n\n public override focus(options?: FocusOptions): void {\n const inner = this.shadowRoot?.querySelector('.item') as HTMLElement | null;\n inner?.focus(options);\n }\n\n public get hasSubmenu(): boolean {\n return this._hasSubmenu;\n }\n\n private _onSlotChange = (e: Event): void => {\n const slot = e.target as HTMLSlotElement;\n const nodes = slot.assignedElements({ flatten: true });\n this._hasSubmenu = nodes.some(\n n => n.tagName.toLowerCase() === 'nile-context-submenu'\n );\n };\n\n private _onIconSlotChange = (e: Event): void => {\n const slot = e.target as HTMLSlotElement;\n this._hasIcon = slot.assignedNodes({ flatten: true }).some(\n n => n.nodeType === Node.ELEMENT_NODE || (n.textContent ?? '').trim() !== ''\n );\n };\n\n public render(): TemplateResult {\n return html`\n <div\n part=\"item\"\n class=\"item\"\n role=\"menuitem\"\n tabindex=\"-1\"\n aria-disabled=${this.disabled ? 'true' : 'false'}\n aria-haspopup=${this._hasSubmenu ? 'menu' : nothing}\n aria-expanded=${this._hasSubmenu ? String(this._submenuExpanded) : nothing}\n data-has-submenu=${this._hasSubmenu ? 'true' : 'false'}\n >\n <span part=\"icon\" class=\"icon\" data-empty=${this._hasIcon ? 'false' : 'true'}>\n <slot name=\"icon\" @slotchange=${this._onIconSlotChange}></slot>\n </span>\n <span part=\"label\" class=\"label\"><slot @slotchange=${this._onSlotChange}></slot></span>\n ${this._hasSubmenu\n ? html`<span part=\"chevron\" class=\"chevron\" aria-hidden=\"true\">\n <nile-glyph name=\"ng-chevron-right\" size=\"16\" method=\"stroke\"></nile-glyph>\n </span>`\n : ''}\n </div>\n `;\n }\n}\n\nexport default NileContextMenuItem;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-context-menu-item': NileContextMenuItem;\n }\n}\n"],"names":["NileContextMenuItem","_o","l","this","value","disabled","open","_hasSubmenu","_hasIcon","_submenuExpanded","_onSlotChange","e","nodes","target","assignedElements","flatten","some","n","tagName","toLowerCase","_onIconSlotChange","slot","assignedNodes","nodeType","Node","ELEMENT_NODE","textContent","_t$textContent","trim","_this","_inherits","_createClass","key","setSubmenuExpanded","expanded","focus","options","_this$shadowRoot","inner","shadowRoot","querySelector","get","render","html","_templateObject","_taggedTemplateLiteral","nothing","String","_templateObject2","styles","NileElement","__decorate","property","attribute","type","reflect","prototype","Boolean","state","_export","customElement"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{__decorate as t}from"tslib";import{html as e,nothing as s}from"lit";import{property as i,state as a,customElement as n}from"lit/decorators.js";import{s as r}from"./nile-context-menu-item.css.esm.js";import{N as o}from"../internal/nile-element.esm.js";import"../internal/accessibility/a11y.state.enum.esm.js";import"../internal/accessibility/a11y.property.enum.esm.js";import"../internal/accessibility/role.enum.esm.js";let l=class extends o{constructor(){super(...arguments),this.value="",this.disabled=!1,this._hasSubmenu=!1,this._hasIcon=!1,this._submenuExpanded=!1,this._onSlotChange=t=>{const e=t.target.assignedElements({flatten:!0});this._hasSubmenu=e.some((t=>"nile-context-submenu"===t.tagName.toLowerCase()))},this._onIconSlotChange=t=>{const e=t.target;this._hasIcon=e.assignedNodes({flatten:!0}).some((t=>t.nodeType===Node.ELEMENT_NODE||""!==(t.textContent??"").trim()))}}static get styles(){return[r]}setSubmenuExpanded(t){this._submenuExpanded=t}focus(t){const e=this.shadowRoot?.querySelector(".item");e?.focus(t)}get hasSubmenu(){return this._hasSubmenu}render(){return e`
|
|
1
|
+
import{__decorate as t}from"tslib";import{html as e,nothing as s}from"lit";import{property as i,state as a,customElement as n}from"lit/decorators.js";import{s as r}from"./nile-context-menu-item.css.esm.js";import{N as o}from"../internal/nile-element.esm.js";import"../internal/accessibility/a11y.state.enum.esm.js";import"../internal/accessibility/a11y.property.enum.esm.js";import"../internal/accessibility/role.enum.esm.js";let l=class extends o{constructor(){super(...arguments),this.value="",this.disabled=!1,this.open=!1,this._hasSubmenu=!1,this._hasIcon=!1,this._submenuExpanded=!1,this._onSlotChange=t=>{const e=t.target.assignedElements({flatten:!0});this._hasSubmenu=e.some((t=>"nile-context-submenu"===t.tagName.toLowerCase()))},this._onIconSlotChange=t=>{const e=t.target;this._hasIcon=e.assignedNodes({flatten:!0}).some((t=>t.nodeType===Node.ELEMENT_NODE||""!==(t.textContent??"").trim()))}}static get styles(){return[r]}setSubmenuExpanded(t){this._submenuExpanded=t}focus(t){const e=this.shadowRoot?.querySelector(".item");e?.focus(t)}get hasSubmenu(){return this._hasSubmenu}render(){return e`
|
|
2
2
|
<div
|
|
3
3
|
part="item"
|
|
4
4
|
class="item"
|
|
@@ -14,7 +14,7 @@ import{__decorate as t}from"tslib";import{html as e,nothing as s}from"lit";impor
|
|
|
14
14
|
</span>
|
|
15
15
|
<span part="label" class="label"><slot @slotchange=${this._onSlotChange}></slot></span>
|
|
16
16
|
${this._hasSubmenu?e`<span part="chevron" class="chevron" aria-hidden="true">
|
|
17
|
-
<nile-glyph name="ng-chevron-right" size="16"></nile-glyph>
|
|
17
|
+
<nile-glyph name="ng-chevron-right" size="16" method="stroke"></nile-glyph>
|
|
18
18
|
</span>`:""}
|
|
19
19
|
</div>
|
|
20
|
-
`}};t([i({attribute:!0,type:String,reflect:!0})],l.prototype,"value",void 0),t([i({attribute:!0,type:Boolean,reflect:!0})],l.prototype,"disabled",void 0),t([a()],l.prototype,"_hasSubmenu",void 0),t([a()],l.prototype,"_hasIcon",void 0),t([a()],l.prototype,"_submenuExpanded",void 0),l=t([n("nile-context-menu-item")],l);export{l as N};
|
|
20
|
+
`}};t([i({attribute:!0,type:String,reflect:!0})],l.prototype,"value",void 0),t([i({attribute:!0,type:Boolean,reflect:!0})],l.prototype,"disabled",void 0),t([i({attribute:!0,type:Boolean,reflect:!0})],l.prototype,"open",void 0),t([a()],l.prototype,"_hasSubmenu",void 0),t([a()],l.prototype,"_hasIcon",void 0),t([a()],l.prototype,"_submenuExpanded",void 0),l=t([n("nile-context-menu-item")],l);export{l as N};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o;}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o;},_typeof(o);}System.register(["tslib","lit","lit/decorators.js","../internal/nile-element.cjs.js","../nile-floating-panel/nile-floating-panel.cjs.js","../internal/accessibility/a11y.state.enum.cjs.js","../internal/accessibility/a11y.property.enum.cjs.js","../internal/accessibility/role.enum.cjs.js","../nile-floating-panel/nile-floating-panel.css.cjs.js","../tippy.esm-78baa8f2.cjs.js","../nile-lite-tooltip/utils.cjs.js","../utilities/visibility-manager.cjs.js"],function(_export,_context){"use strict";var t,i,s,e,n,h,o,_templateObject,_templateObject2,_r,l,c,u,a;function _createForOfIteratorHelper(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var n=0,F=function F(){};return{s:F,n:function(_n){function n(){return _n.apply(this,arguments);}n.toString=function(){return _n.toString();};return n;}(function(){return n>=r.length?{done:!0}:{done:!1,value:r[n++]};}),e:function e(r){throw r;},f:F};}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}var o,a=!0,u=!1;return{s:function s(){t=t.call(r);},n:function n(){var r=t.next();return a=r.done,r;},e:function e(r){u=!0,o=r;},f:function f(){try{a||null==t["return"]||t["return"]();}finally{if(u)throw o;}}};}function _taggedTemplateLiteral(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}));}function _toConsumableArray(r){return _arrayWithoutHoles(r)||_iterableToArray(r)||_unsupportedIterableToArray(r)||_nonIterableSpread();}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0;}}function _iterableToArray(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r);}function _arrayWithoutHoles(r){if(Array.isArray(r))return _arrayLikeToArray(r);}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n;}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable;})),t.push.apply(t,o);}return t;}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty(e,r,t[r]);}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r));});}return e;}function _defineProperty(e,r,t){return(r=_toPropertyKey(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e;}function _classCallCheck(a,n){if(!(a instanceof n))throw new TypeError("Cannot call a class as a function");}function _defineProperties(e,r){for(var t=0;t<r.length;t++){var o=r[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,_toPropertyKey(o.key),o);}}function _createClass(e,r,t){return r&&_defineProperties(e.prototype,r),t&&_defineProperties(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e;}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==_typeof(i)?i:i+"";}function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.");}return("string"===r?String:Number)(t);}function _callSuper(t,o,e){return o=_getPrototypeOf(o),_possibleConstructorReturn(t,_isNativeReflectConstruct()?Reflect.construct(o,e||[],_getPrototypeOf(t).constructor):o.apply(t,e));}function _possibleConstructorReturn(t,e){if(e&&("object"==_typeof(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(t);}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e;}function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));}catch(t){}return(_isNativeReflectConstruct=function _isNativeReflectConstruct(){return!!t;})();}function _superPropGet(t,o,e,r){var p=_get(_getPrototypeOf(1&r?t.prototype:t),o,e);return 2&r&&"function"==typeof p?function(t){return p.apply(e,t);}:p;}function _get(){return _get="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,r){var p=_superPropBase(e,t);if(p){var n=Object.getOwnPropertyDescriptor(p,t);return n.get?n.get.call(arguments.length<3?e:r):n.value;}},_get.apply(null,arguments);}function _superPropBase(t,o){for(;!{}.hasOwnProperty.call(t,o)&&null!==(t=_getPrototypeOf(t)););return t;}function _getPrototypeOf(t){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t);},_getPrototypeOf(t);}function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&_setPrototypeOf(t,e);}function _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t;},_setPrototypeOf(t,e);}return{setters:[function(_tslib){t=_tslib.__decorate;},function(_lit){i=_lit.css;s=_lit.html;},function(_litDecoratorsJs){e=_litDecoratorsJs.property;n=_litDecoratorsJs.state;h=_litDecoratorsJs.customElement;},function(_internalNileElementCjsJs){o=_internalNileElementCjsJs.N;},function(_nileFloatingPanelNileFloatingPanelCjsJs){},function(_internalAccessibilityA11yStateEnumCjsJs){},function(_internalAccessibilityA11yPropertyEnumCjsJs){},function(_internalAccessibilityRoleEnumCjsJs){},function(_nileFloatingPanelNileFloatingPanelCssCjsJs){},function(_tippyEsm006CjsJs){},function(_nileLiteTooltipUtilsCjsJs){},function(_utilitiesVisibilityManagerCjsJs){}],execute:function execute(){l="nile-context-menu-item",c="nile-context-submenu";u=0,_export("N",a=_r=/*#__PURE__*/function(_o){function r(){var _this;_classCallCheck(this,r);_this=_callSuper(this,r,arguments),_this.zIndex=9999,_this._open=!1,_this._parentItem=null,_this._proxyId="nile-context-submenu-anchor-"+ ++u,_this._menuContainerRef=null,_this._setupDone=!1,_this._onParentEnter=function(){var _this$_parentItem;((_this$_parentItem=_this._parentItem)===null||_this$_parentItem===void 0?void 0:_this$_parentItem.disabled)||(_this._clearTimers(),_this._open||(_this._openTimer=window.setTimeout(function(){return _this.openSubmenu();},100)));},_this._onParentLeave=function(){null!=_this._openTimer&&(clearTimeout(_this._openTimer),_this._openTimer=void 0),_this._open&&(_this._closeTimer=window.setTimeout(function(){return _this.closeSubmenu();},300));},_this._onParentClick=function(t){var _this$_parentItem2;t.stopPropagation(),((_this$_parentItem2=_this._parentItem)===null||_this$_parentItem2===void 0?void 0:_this$_parentItem2.disabled)||(_this._clearTimers(),_this._open?_this.closeSubmenu():_this.openSubmenu());},_this._onPanelEnter=function(){_this._clearTimers();},_this._onPanelLeave=function(){_this._open&&(_this._closeTimer=window.setTimeout(function(){_r.openStack.some(function(t){var _this$_menuContainerR;return t!==_assertThisInitialized(_this)&&((_this$_menuContainerR=_this._menuContainerRef)===null||_this$_menuContainerR===void 0?void 0:_this$_menuContainerR.contains(t));})||_this.closeSubmenu();},300));},_this._onMenuMouseOver=function(t){var i=t.composedPath().find(function(t){return t instanceof HTMLElement&&t.tagName.toLowerCase()===l;});i&&!i.disabled&&i.focus();},_this._onNestedSelect=function(t){var _t$detail;t.target!==_assertThisInitialized(_this)&&"click"===((_t$detail=t.detail)===null||_t$detail===void 0?void 0:_t$detail.type)&&_this.emit("nile-change",t.detail);},_this._onMenuClick=function(t){var _i$textContent;var i=t.composedPath().find(function(t){return t instanceof HTMLElement&&t.tagName.toLowerCase()===l;});if(!i||i.disabled)return;if(i.querySelector(":scope > ".concat(c)))return;var s={id:i.id,value:i.value,name:((_i$textContent=i.textContent)!==null&&_i$textContent!==void 0?_i$textContent:"").trim(),target:null,originalEvent:t};try{var _i$onSelect;(_i$onSelect=i.onSelect)===null||_i$onSelect===void 0||_i$onSelect.call(i,s);}catch(t){console.error("[nile-context-submenu] onSelect callback threw:",t);}_this.emit("nile-change",_objectSpread({type:"click"},s));};return _this;}_inherits(r,_o);return _createClass(r,[{key:"connectedCallback",value:function connectedCallback(){var _this$_parentItem$set,_this$_parentItem3;_superPropGet(r,"connectedCallback",this,3)([]);var t=this.parentElement;for(;t&&t.tagName.toLowerCase()!==l;)t=t.parentElement;this._parentItem=t,this._ensureProxy(),this._parentItem&&((_this$_parentItem$set=(_this$_parentItem3=this._parentItem).setSubmenuExpanded)!==null&&_this$_parentItem$set!==void 0&&_this$_parentItem$set.call(_this$_parentItem3,!1),this._parentItem.addEventListener("mouseenter",this._onParentEnter),this._parentItem.addEventListener("mouseleave",this._onParentLeave),this._parentItem.addEventListener("click",this._onParentClick,!0)),this._ensureBodyPanel();}},{key:"_ensureProxy",value:function _ensureProxy(){if(this._proxyEl)return;var t=document.createElement("div");t.id=this._proxyId,t.setAttribute("aria-hidden","true"),t.style.cssText="position: fixed; top: 0; left: 0; width: 0; height: 0; pointer-events: none;",document.body.appendChild(t),this._proxyEl=t;}},{key:"_syncProxyToParent",value:function _syncProxyToParent(){if(!this._proxyEl||!this._parentItem)return;var t=this._parentItem.getBoundingClientRect();this._proxyEl.style.left="".concat(t.left,"px"),this._proxyEl.style.top="".concat(t.top,"px"),this._proxyEl.style.width="".concat(t.width,"px"),this._proxyEl.style.height="".concat(t.height,"px");}},{key:"disconnectedCallback",value:function disconnectedCallback(){var _this2=this;_superPropGet(r,"disconnectedCallback",this,3)([]),this._parentItem&&(this._parentItem.removeEventListener("mouseenter",this._onParentEnter),this._parentItem.removeEventListener("mouseleave",this._onParentLeave),this._parentItem.removeEventListener("click",this._onParentClick,!0)),this._clearTimers(),this._open&&this.closeSubmenu(),this._teardownBodyArtifacts(),_r.openStack=_r.openStack.filter(function(t){return t!==_this2;});}},{key:"_teardownBodyArtifacts",value:function _teardownBodyArtifacts(){var _this$_floatingPanelE,_this$_proxyEl;var t=this._menuContainerRef;if(t)for(t.removeEventListener("click",this._onMenuClick),t.removeEventListener("mouseover",this._onMenuMouseOver),t.removeEventListener("mouseenter",this._onPanelEnter),t.removeEventListener("mouseleave",this._onPanelLeave),t.removeEventListener("nile-change",this._onNestedSelect);t.firstChild;)this.appendChild(t.firstChild);(_this$_floatingPanelE=this._floatingPanelEl)!==null&&_this$_floatingPanelE!==void 0&&_this$_floatingPanelE.remove(),this._floatingPanelEl=void 0,this._menuContainerRef=null,this._setupDone=!1,(_this$_proxyEl=this._proxyEl)!==null&&_this$_proxyEl!==void 0&&_this$_proxyEl.remove(),this._proxyEl=void 0;}},{key:"_ensureBodyPanel",value:function _ensureBodyPanel(){if(this._setupDone)return;var t=document.createElement("nile-floating-panel");t.setAttribute("for",this._proxyId),t.setAttribute("trigger","manual"),t.setAttribute("placement","right-start"),t.panelClass="nile-context-menu-panel",t.zIndex=this.zIndex,t.interactive=!0,t.hideOnClick=!1,t.closeOnEscape=!1,t.arrow="none",t.distance=0;var i=document.createElement("div");i.className="nile-context-menu__menu",i.setAttribute("role","menu"),t.appendChild(i),document.body.appendChild(t),this._floatingPanelEl=t,this._menuContainerRef=i,i.addEventListener("click",this._onMenuClick),i.addEventListener("mouseover",this._onMenuMouseOver),i.addEventListener("mouseenter",this._onPanelEnter),i.addEventListener("mouseleave",this._onPanelLeave),i.addEventListener("nile-change",this._onNestedSelect),this._relocateLightChildren(),this._setupDone=!0;}},{key:"firstUpdated",value:function firstUpdated(){this._relocateLightChildren();}},{key:"_relocateLightChildren",value:function _relocateLightChildren(){if(this._menuContainerRef)for(var _i=0,_Array$from=Array.from(this.children);_i<_Array$from.length;_i++){var _t=_Array$from[_i];this._menuContainerRef.appendChild(_t);}}},{key:"_clearTimers",value:function _clearTimers(){null!=this._openTimer&&(clearTimeout(this._openTimer),this._openTimer=void 0),null!=this._closeTimer&&(clearTimeout(this._closeTimer),this._closeTimer=void 0);}},{key:"openSubmenu",value:function openSubmenu(){var _this$_parentItem4,_this$_parentItem5,_this$_parentItem5$se;this._open||((_this$_parentItem4=this._parentItem)===null||_this$_parentItem4===void 0?void 0:_this$_parentItem4.disabled)||(this._closeSiblingSubmenus(),this._ensureProxy(),this._ensureBodyPanel(),this._syncProxyToParent(),this._open=!0,this._floatingPanelEl&&(this._floatingPanelEl.open=!0),_r.openStack.push(this),(_this$_parentItem5=this._parentItem)===null||_this$_parentItem5===void 0||(_this$_parentItem5$se=_this$_parentItem5.setSubmenuExpanded)===null||_this$_parentItem5$se===void 0?void 0:_this$_parentItem5$se.call(_this$_parentItem5,!0));}},{key:"closeSubmenu",value:function closeSubmenu(){var _this3=this;if(this._open){var _this$_parentItem6,_this$_parentItem6$se;for(var _i2=0,_arr=_toConsumableArray(_r.openStack);_i2<_arr.length;_i2++){var _this$_menuContainerR2;var _t2=_arr[_i2];_t2!==this&&((_this$_menuContainerR2=this._menuContainerRef)===null||_this$_menuContainerR2===void 0?void 0:_this$_menuContainerR2.contains(_t2))&&_t2.closeSubmenu();}this._open=!1,this._floatingPanelEl&&(this._floatingPanelEl.open=!1),_r.openStack=_r.openStack.filter(function(t){return t!==_this3;}),this._clearTimers(),(_this$_parentItem6=this._parentItem)===null||_this$_parentItem6===void 0||(_this$_parentItem6$se=_this$_parentItem6.setSubmenuExpanded)===null||_this$_parentItem6$se===void 0?void 0:_this$_parentItem6$se.call(_this$_parentItem6,!1);}}},{key:"isOpen",get:function get(){return this._open;}},{key:"parentItem",get:function get(){return this._parentItem;}},{key:"focusFirstItem",value:function focusFirstItem(){if(!this._menuContainerRef)return;var t=Array.from(this._menuContainerRef.querySelectorAll(l));for(var _i3=0,_t3=t;_i3<_t3.length;_i3++){var _i4=_t3[_i3];var _t4=_i4.parentElement,_s=!1;for(;_t4&&_t4!==this._menuContainerRef;){if(_t4.tagName.toLowerCase()===c){_s=!0;break;}_t4=_t4.parentElement;}if(!_s&&!_i4.disabled)return void _i4.focus();}}},{key:"_closeSiblingSubmenus",value:function _closeSiblingSubmenus(){var t=this._parentLevel();for(var _i5=0,_arr2=_toConsumableArray(_r.openStack);_i5<_arr2.length;_i5++){var _i6=_arr2[_i5];_i6!==this&&_i6._parentLevel()===t&&_i6.closeSubmenu();}}},{key:"_parentLevel",value:function _parentLevel(){var _t$parentElement$clos,_t$parentElement;var t=this._parentItem;return t?(_t$parentElement$clos=(_t$parentElement=t.parentElement)===null||_t$parentElement===void 0?void 0:_t$parentElement.closest(".nile-context-menu__menu"))!==null&&_t$parentElement$clos!==void 0?_t$parentElement$clos:null:null;}},{key:"render",value:function render(){return s(_templateObject||(_templateObject=_taggedTemplateLiteral([""])));}}],[{key:"styles",get:function get(){return[i(_templateObject2||(_templateObject2=_taggedTemplateLiteral(["\n :host { display: contents; }\n "])))];}},{key:"findByContainer",value:function findByContainer(t){var _iterator=_createForOfIteratorHelper(_r.openStack),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var _i7=_step.value;if(_i7._menuContainerRef===t)return _i7;}}catch(err){_iterator.e(err);}finally{_iterator.f();}return null;}}]);}(o));a.openStack=[],t([e({attribute:!0,type:Number,reflect:!0})],a.prototype,"zIndex",void 0),t([n()],a.prototype,"_open",void 0),_export("N",a=_r=t([h("nile-context-submenu")],a));}};});
|
|
1
|
+
function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o;}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o;},_typeof(o);}System.register(["tslib","lit","lit/decorators.js","../internal/nile-element.cjs.js","../nile-floating-panel/nile-floating-panel.cjs.js","../internal/accessibility/a11y.state.enum.cjs.js","../internal/accessibility/a11y.property.enum.cjs.js","../internal/accessibility/role.enum.cjs.js","../nile-floating-panel/nile-floating-panel.css.cjs.js","../tippy.esm-78baa8f2.cjs.js","../nile-lite-tooltip/utils.cjs.js","../utilities/visibility-manager.cjs.js"],function(_export,_context){"use strict";var t,i,s,e,n,h,o,_templateObject,_templateObject2,_r,l,c,u,a;function _createForOfIteratorHelper(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var n=0,F=function F(){};return{s:F,n:function(_n){function n(){return _n.apply(this,arguments);}n.toString=function(){return _n.toString();};return n;}(function(){return n>=r.length?{done:!0}:{done:!1,value:r[n++]};}),e:function e(r){throw r;},f:F};}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}var o,a=!0,u=!1;return{s:function s(){t=t.call(r);},n:function n(){var r=t.next();return a=r.done,r;},e:function e(r){u=!0,o=r;},f:function f(){try{a||null==t["return"]||t["return"]();}finally{if(u)throw o;}}};}function _taggedTemplateLiteral(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}));}function _toConsumableArray(r){return _arrayWithoutHoles(r)||_iterableToArray(r)||_unsupportedIterableToArray(r)||_nonIterableSpread();}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0;}}function _iterableToArray(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r);}function _arrayWithoutHoles(r){if(Array.isArray(r))return _arrayLikeToArray(r);}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n;}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable;})),t.push.apply(t,o);}return t;}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty(e,r,t[r]);}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r));});}return e;}function _defineProperty(e,r,t){return(r=_toPropertyKey(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e;}function _classCallCheck(a,n){if(!(a instanceof n))throw new TypeError("Cannot call a class as a function");}function _defineProperties(e,r){for(var t=0;t<r.length;t++){var o=r[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,_toPropertyKey(o.key),o);}}function _createClass(e,r,t){return r&&_defineProperties(e.prototype,r),t&&_defineProperties(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e;}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==_typeof(i)?i:i+"";}function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.");}return("string"===r?String:Number)(t);}function _callSuper(t,o,e){return o=_getPrototypeOf(o),_possibleConstructorReturn(t,_isNativeReflectConstruct()?Reflect.construct(o,e||[],_getPrototypeOf(t).constructor):o.apply(t,e));}function _possibleConstructorReturn(t,e){if(e&&("object"==_typeof(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(t);}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e;}function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));}catch(t){}return(_isNativeReflectConstruct=function _isNativeReflectConstruct(){return!!t;})();}function _superPropGet(t,o,e,r){var p=_get(_getPrototypeOf(1&r?t.prototype:t),o,e);return 2&r&&"function"==typeof p?function(t){return p.apply(e,t);}:p;}function _get(){return _get="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,r){var p=_superPropBase(e,t);if(p){var n=Object.getOwnPropertyDescriptor(p,t);return n.get?n.get.call(arguments.length<3?e:r):n.value;}},_get.apply(null,arguments);}function _superPropBase(t,o){for(;!{}.hasOwnProperty.call(t,o)&&null!==(t=_getPrototypeOf(t)););return t;}function _getPrototypeOf(t){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t);},_getPrototypeOf(t);}function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&_setPrototypeOf(t,e);}function _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t;},_setPrototypeOf(t,e);}return{setters:[function(_tslib){t=_tslib.__decorate;},function(_lit){i=_lit.css;s=_lit.html;},function(_litDecoratorsJs){e=_litDecoratorsJs.property;n=_litDecoratorsJs.state;h=_litDecoratorsJs.customElement;},function(_internalNileElementCjsJs){o=_internalNileElementCjsJs.N;},function(_nileFloatingPanelNileFloatingPanelCjsJs){},function(_internalAccessibilityA11yStateEnumCjsJs){},function(_internalAccessibilityA11yPropertyEnumCjsJs){},function(_internalAccessibilityRoleEnumCjsJs){},function(_nileFloatingPanelNileFloatingPanelCssCjsJs){},function(_tippyEsm006CjsJs){},function(_nileLiteTooltipUtilsCjsJs){},function(_utilitiesVisibilityManagerCjsJs){}],execute:function execute(){l="nile-context-menu-item",c="nile-context-submenu";u=0,_export("N",a=_r=/*#__PURE__*/function(_o){function r(){var _this;_classCallCheck(this,r);_this=_callSuper(this,r,arguments),_this.zIndex=9999,_this._open=!1,_this._parentItem=null,_this._proxyId="nile-context-submenu-anchor-"+ ++u,_this._menuContainerRef=null,_this._setupDone=!1,_this._repositionQueued=!1,_this._onParentEnter=function(){var _this$_parentItem;((_this$_parentItem=_this._parentItem)===null||_this$_parentItem===void 0?void 0:_this$_parentItem.disabled)||(_this._clearTimers(),_this._open||(_this._openTimer=window.setTimeout(function(){return _this.openSubmenu();},100)));},_this._onParentLeave=function(){null!=_this._openTimer&&(clearTimeout(_this._openTimer),_this._openTimer=void 0),_this._pinnedOpen||_this._open&&(_this._closeTimer=window.setTimeout(function(){return _this.closeSubmenu();},300));},_this._onParentClick=function(t){var _this$_parentItem2;t.stopPropagation(),((_this$_parentItem2=_this._parentItem)===null||_this$_parentItem2===void 0?void 0:_this$_parentItem2.disabled)||(_this._clearTimers(),_this._open?_this._pinnedOpen||_this.closeSubmenu():_this.openSubmenu());},_this._onPanelEnter=function(){_this._clearTimers();},_this._onReposition=function(){!_this._repositionQueued&&_this._open&&(_this._repositionQueued=!0,requestAnimationFrame(function(){var _this$_floatingPanelE;_this._repositionQueued=!1,_this._open&&(_this._syncProxyToParent(),(_this$_floatingPanelE=_this._floatingPanelEl)===null||_this$_floatingPanelE===void 0?void 0:_this$_floatingPanelE.reposition());}));},_this._onPanelLeave=function(){_this._pinnedOpen||_this._open&&(_this._closeTimer=window.setTimeout(function(){_r.openStack.some(function(t){var _this$_menuContainerR;return t!==_assertThisInitialized(_this)&&((_this$_menuContainerR=_this._menuContainerRef)===null||_this$_menuContainerR===void 0?void 0:_this$_menuContainerR.contains(t));})||_this.closeSubmenu();},300));},_this._onMenuMouseOver=function(t){var i=t.composedPath().find(function(t){return t instanceof HTMLElement&&t.tagName.toLowerCase()===l;});i&&!i.disabled&&i.focus();},_this._onNestedSelect=function(t){var _t$detail;t.target!==_assertThisInitialized(_this)&&"click"===((_t$detail=t.detail)===null||_t$detail===void 0?void 0:_t$detail.type)&&_this.emit("nile-change",t.detail);},_this._onMenuClick=function(t){var _i$textContent;var i=t.composedPath().find(function(t){return t instanceof HTMLElement&&t.tagName.toLowerCase()===l;});if(!i||i.disabled)return;if(i.querySelector(":scope > ".concat(c)))return;var s={id:i.id,value:i.value,name:((_i$textContent=i.textContent)!==null&&_i$textContent!==void 0?_i$textContent:"").trim(),target:null,originalEvent:t};try{var _i$onSelect;(_i$onSelect=i.onSelect)===null||_i$onSelect===void 0||_i$onSelect.call(i,s);}catch(t){console.error("[nile-context-submenu] onSelect callback threw:",t);}_this.emit("nile-change",_objectSpread({type:"click"},s));};return _this;}_inherits(r,_o);return _createClass(r,[{key:"_pinnedOpen",get:function get(){var _this$_parentItem3;return!(!((_this$_parentItem3=this._parentItem)!==null&&_this$_parentItem3!==void 0&&_this$_parentItem3.open)||this._parentItem.disabled);}},{key:"connectedCallback",value:function connectedCallback(){var _this$_parentItem$set,_this$_parentItem4,_this2=this;_superPropGet(r,"connectedCallback",this,3)([]);var t=this.parentElement;for(;t&&t.tagName.toLowerCase()!==l;)t=t.parentElement;this._parentItem=t,this._ensureProxy(),this._parentItem&&((_this$_parentItem$set=(_this$_parentItem4=this._parentItem).setSubmenuExpanded)!==null&&_this$_parentItem$set!==void 0&&_this$_parentItem$set.call(_this$_parentItem4,!1),this._parentItem.addEventListener("mouseenter",this._onParentEnter),this._parentItem.addEventListener("mouseleave",this._onParentLeave),this._parentItem.addEventListener("click",this._onParentClick,!0),this._parentObserver=new MutationObserver(function(){_this2._pinnedOpen?_this2._isParentVisible()&&_this2.openSubmenu():_this2._open&&_this2.closeSubmenu();}),this._parentObserver.observe(this._parentItem,{attributes:!0,attributeFilter:["open"]})),this._ensureBodyPanel();}},{key:"_isParentVisible",value:function _isParentVisible(){var _this$_parentItem5;var t=(_this$_parentItem5=this._parentItem)===null||_this$_parentItem5===void 0?void 0:_this$_parentItem5.getBoundingClientRect();return!!t&&t.width>0&&t.height>0;}},{key:"_ensureProxy",value:function _ensureProxy(){if(this._proxyEl)return;var t=document.createElement("div");t.id=this._proxyId,t.setAttribute("aria-hidden","true"),t.style.cssText="position: fixed; top: 0; left: 0; width: 0; height: 0; pointer-events: none;",document.body.appendChild(t),this._proxyEl=t;}},{key:"_syncProxyToParent",value:function _syncProxyToParent(){if(!this._proxyEl||!this._parentItem)return;var t=this._parentItem.getBoundingClientRect();this._pinnedOpen?(this._proxyEl.style.position="absolute",this._proxyEl.style.left="".concat(t.left+window.scrollX,"px"),this._proxyEl.style.top="".concat(t.top+window.scrollY,"px")):(this._proxyEl.style.position="fixed",this._proxyEl.style.left="".concat(t.left,"px"),this._proxyEl.style.top="".concat(t.top,"px")),this._proxyEl.style.width="".concat(t.width,"px"),this._proxyEl.style.height="".concat(t.height,"px");}},{key:"disconnectedCallback",value:function disconnectedCallback(){var _this$_parentObserver,_this3=this;_superPropGet(r,"disconnectedCallback",this,3)([]),this._parentItem&&(this._parentItem.removeEventListener("mouseenter",this._onParentEnter),this._parentItem.removeEventListener("mouseleave",this._onParentLeave),this._parentItem.removeEventListener("click",this._onParentClick,!0)),(_this$_parentObserver=this._parentObserver)!==null&&_this$_parentObserver!==void 0&&_this$_parentObserver.disconnect(),this._parentObserver=void 0,this._clearTimers(),this._open&&this.closeSubmenu(),this._teardownBodyArtifacts(),_r.openStack=_r.openStack.filter(function(t){return t!==_this3;});}},{key:"_teardownBodyArtifacts",value:function _teardownBodyArtifacts(){var _this$_floatingPanelE2,_this$_proxyEl;var t=this._menuContainerRef;if(t)for(t.removeEventListener("click",this._onMenuClick),t.removeEventListener("mouseover",this._onMenuMouseOver),t.removeEventListener("mouseenter",this._onPanelEnter),t.removeEventListener("mouseleave",this._onPanelLeave),t.removeEventListener("nile-change",this._onNestedSelect);t.firstChild;)this.appendChild(t.firstChild);(_this$_floatingPanelE2=this._floatingPanelEl)!==null&&_this$_floatingPanelE2!==void 0&&_this$_floatingPanelE2.remove(),this._floatingPanelEl=void 0,this._menuContainerRef=null,this._setupDone=!1,(_this$_proxyEl=this._proxyEl)!==null&&_this$_proxyEl!==void 0&&_this$_proxyEl.remove(),this._proxyEl=void 0;}},{key:"_ensureBodyPanel",value:function _ensureBodyPanel(){if(this._setupDone)return;var t=document.createElement("nile-floating-panel");t.setAttribute("for",this._proxyId),t.setAttribute("trigger","manual"),t.setAttribute("placement","right-start"),t.panelClass="nile-context-menu-panel",t.zIndex=this.zIndex,t.interactive=!0,t.hideOnClick=!1,t.closeOnEscape=!1,t.arrow="none",t.distance=0;var i=document.createElement("div");i.className="nile-context-menu__menu",i.setAttribute("role","menu"),t.appendChild(i),document.body.appendChild(t),this._floatingPanelEl=t,this._menuContainerRef=i,i.addEventListener("click",this._onMenuClick),i.addEventListener("mouseover",this._onMenuMouseOver),i.addEventListener("mouseenter",this._onPanelEnter),i.addEventListener("mouseleave",this._onPanelLeave),i.addEventListener("nile-change",this._onNestedSelect),this._relocateLightChildren(),this._setupDone=!0;}},{key:"firstUpdated",value:function firstUpdated(){this._relocateLightChildren();}},{key:"_relocateLightChildren",value:function _relocateLightChildren(){if(this._menuContainerRef)for(var _i=0,_Array$from=Array.from(this.children);_i<_Array$from.length;_i++){var _t=_Array$from[_i];this._menuContainerRef.appendChild(_t);}}},{key:"_clearTimers",value:function _clearTimers(){null!=this._openTimer&&(clearTimeout(this._openTimer),this._openTimer=void 0),null!=this._closeTimer&&(clearTimeout(this._closeTimer),this._closeTimer=void 0);}},{key:"openSubmenu",value:function openSubmenu(){var _this$_parentItem6,_this4=this,_this$_parentItem7,_this$_parentItem7$se;this._open||((_this$_parentItem6=this._parentItem)===null||_this$_parentItem6===void 0?void 0:_this$_parentItem6.disabled)||(this._closeSiblingSubmenus(),this._ensureProxy(),this._ensureBodyPanel(),this._syncProxyToParent(),this._open=!0,this._floatingPanelEl&&(this._floatingPanelEl.addEventListener("nile-after-show",function(){_this4._open&&_this4._openPinnedDescendants();},{once:!0}),this._floatingPanelEl.open=!0),_r.openStack.push(this),window.addEventListener("scroll",this._onReposition,!0),window.addEventListener("resize",this._onReposition),requestAnimationFrame(function(){return requestAnimationFrame(function(){_this4._open&&_this4._openPinnedDescendants();});}),(_this$_parentItem7=this._parentItem)===null||_this$_parentItem7===void 0||(_this$_parentItem7$se=_this$_parentItem7.setSubmenuExpanded)===null||_this$_parentItem7$se===void 0?void 0:_this$_parentItem7$se.call(_this$_parentItem7,!0));}},{key:"_openPinnedDescendants",value:function _openPinnedDescendants(){if(!this._menuContainerRef)return;var t=Array.from(this._menuContainerRef.querySelectorAll(l));for(var _i2=0,_t2=t;_i2<_t2.length;_i2++){var _i3=_t2[_i2];if(!this._isDirectChildItem(_i3))continue;if(!_i3.open||_i3.disabled)continue;var _t3=_i3.querySelector(":scope > ".concat(c));_t3===null||_t3===void 0||_t3.openSubmenu();}}},{key:"_isDirectChildItem",value:function _isDirectChildItem(t){var i=t.parentElement;for(;i&&i!==this._menuContainerRef;){if(i.tagName.toLowerCase()===c)return!1;i=i.parentElement;}return!0;}},{key:"closeSubmenu",value:function closeSubmenu(){var _this5=this;if(this._open){var _this$_parentItem8,_this$_parentItem8$se;for(var _i4=0,_arr=_toConsumableArray(_r.openStack);_i4<_arr.length;_i4++){var _this$_menuContainerR2;var _t4=_arr[_i4];_t4!==this&&((_this$_menuContainerR2=this._menuContainerRef)===null||_this$_menuContainerR2===void 0?void 0:_this$_menuContainerR2.contains(_t4))&&_t4.closeSubmenu();}this._open=!1,this._floatingPanelEl&&(this._floatingPanelEl.open=!1),window.removeEventListener("scroll",this._onReposition,!0),window.removeEventListener("resize",this._onReposition),_r.openStack=_r.openStack.filter(function(t){return t!==_this5;}),this._clearTimers(),(_this$_parentItem8=this._parentItem)===null||_this$_parentItem8===void 0||(_this$_parentItem8$se=_this$_parentItem8.setSubmenuExpanded)===null||_this$_parentItem8$se===void 0?void 0:_this$_parentItem8$se.call(_this$_parentItem8,!1);}}},{key:"isOpen",get:function get(){return this._open;}},{key:"parentItem",get:function get(){return this._parentItem;}},{key:"focusFirstItem",value:function focusFirstItem(){if(!this._menuContainerRef)return;var t=Array.from(this._menuContainerRef.querySelectorAll(l));for(var _i5=0,_t5=t;_i5<_t5.length;_i5++){var _i6=_t5[_i5];if(this._isDirectChildItem(_i6)&&!_i6.disabled)return void _i6.focus();}}},{key:"_closeSiblingSubmenus",value:function _closeSiblingSubmenus(){var t=this._parentLevel();for(var _i7=0,_arr2=_toConsumableArray(_r.openStack);_i7<_arr2.length;_i7++){var _i8=_arr2[_i7];_i8!==this&&(_i8._pinnedOpen||_i8._parentLevel()===t&&_i8.closeSubmenu());}}},{key:"_parentLevel",value:function _parentLevel(){var _t$parentElement$clos,_t$parentElement;var t=this._parentItem;return t?(_t$parentElement$clos=(_t$parentElement=t.parentElement)===null||_t$parentElement===void 0?void 0:_t$parentElement.closest(".nile-context-menu__menu"))!==null&&_t$parentElement$clos!==void 0?_t$parentElement$clos:null:null;}},{key:"render",value:function render(){return s(_templateObject||(_templateObject=_taggedTemplateLiteral([""])));}}],[{key:"styles",get:function get(){return[i(_templateObject2||(_templateObject2=_taggedTemplateLiteral(["\n :host { display: contents; }\n "])))];}},{key:"findByContainer",value:function findByContainer(t){var _iterator=_createForOfIteratorHelper(_r.openStack),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var _i9=_step.value;if(_i9._menuContainerRef===t)return _i9;}}catch(err){_iterator.e(err);}finally{_iterator.f();}return null;}}]);}(o));a.openStack=[],t([e({attribute:!0,type:Number,reflect:!0})],a.prototype,"zIndex",void 0),t([n()],a.prototype,"_open",void 0),_export("N",a=_r=t([h("nile-context-submenu")],a));}};});
|
|
2
2
|
//# sourceMappingURL=nile-context-submenu.cjs.js.map
|