@aquera/nile-elements 1.8.0 → 1.8.1

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.
Files changed (51) hide show
  1. package/README.md +3 -0
  2. package/dist/index-6faafdf4.cjs.js +2 -0
  3. package/dist/index-6faafdf4.cjs.js.map +1 -0
  4. package/dist/index-9931b440.esm.js +1 -0
  5. package/dist/index.cjs.js +1 -1
  6. package/dist/index.esm.js +1 -1
  7. package/dist/index.js +283 -283
  8. package/dist/nile-combobox/index.cjs.js +1 -1
  9. package/dist/nile-combobox/index.esm.js +1 -1
  10. package/dist/nile-combobox/nile-combobox.cjs.js +1 -1
  11. package/dist/nile-combobox/nile-combobox.esm.js +1 -1
  12. package/dist/nile-context-menu/nile-context-menu.cjs.js +1 -1
  13. package/dist/nile-context-menu/nile-context-menu.cjs.js.map +1 -1
  14. package/dist/nile-context-menu/nile-context-menu.esm.js +2 -2
  15. package/dist/nile-context-menu-item/nile-context-menu-item.cjs.js +1 -1
  16. package/dist/nile-context-menu-item/nile-context-menu-item.cjs.js.map +1 -1
  17. package/dist/nile-context-menu-item/nile-context-menu-item.esm.js +3 -3
  18. package/dist/nile-context-submenu/nile-context-submenu.cjs.js +1 -1
  19. package/dist/nile-context-submenu/nile-context-submenu.cjs.js.map +1 -1
  20. package/dist/nile-context-submenu/nile-context-submenu.esm.js +2 -2
  21. package/dist/nile-detail/index.cjs.js +1 -1
  22. package/dist/nile-detail/index.esm.js +1 -1
  23. package/dist/nile-detail/nile-detail.cjs.js +1 -1
  24. package/dist/nile-detail/nile-detail.esm.js +1 -1
  25. package/dist/nile-floating-panel/nile-floating-panel.cjs.js +1 -1
  26. package/dist/nile-floating-panel/nile-floating-panel.cjs.js.map +1 -1
  27. package/dist/nile-floating-panel/nile-floating-panel.esm.js +1 -1
  28. package/dist/src/nile-context-menu/nile-context-menu.d.ts +10 -1
  29. package/dist/src/nile-context-menu/nile-context-menu.js +85 -5
  30. package/dist/src/nile-context-menu/nile-context-menu.js.map +1 -1
  31. package/dist/src/nile-context-menu-item/nile-context-menu-item.d.ts +1 -0
  32. package/dist/src/nile-context-menu-item/nile-context-menu-item.js +5 -1
  33. package/dist/src/nile-context-menu-item/nile-context-menu-item.js.map +1 -1
  34. package/dist/src/nile-context-submenu/nile-context-submenu.d.ts +9 -0
  35. package/dist/src/nile-context-submenu/nile-context-submenu.js +100 -16
  36. package/dist/src/nile-context-submenu/nile-context-submenu.js.map +1 -1
  37. package/dist/src/nile-floating-panel/nile-floating-panel.d.ts +2 -0
  38. package/dist/src/nile-floating-panel/nile-floating-panel.js +4 -0
  39. package/dist/src/nile-floating-panel/nile-floating-panel.js.map +1 -1
  40. package/dist/src/version.js +1 -1
  41. package/dist/src/version.js.map +1 -1
  42. package/dist/tsconfig.tsbuildinfo +1 -1
  43. package/package.json +1 -1
  44. package/src/nile-context-menu/nile-context-menu.ts +86 -8
  45. package/src/nile-context-menu-item/nile-context-menu-item.ts +3 -1
  46. package/src/nile-context-submenu/nile-context-submenu.ts +97 -12
  47. package/src/nile-floating-panel/nile-floating-panel.ts +5 -0
  48. package/vscode-html-custom-data.json +13 -3
  49. package/dist/index-644974d4.esm.js +0 -1
  50. package/dist/index-dd2af8ec.cjs.js +0 -2
  51. package/dist/index-dd2af8ec.cjs.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"nile-context-menu.js","sourceRoot":"","sources":["../../../src/nile-context-menu/nile-context-menu.ts"],"names":[],"mappings":"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","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"]}
1
+ {"version":3,"file":"nile-context-menu.js","sourceRoot":"","sources":["../../../src/nile-context-menu/nile-context-menu.ts"],"names":[],"mappings":"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","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"]}
@@ -26,6 +26,7 @@ export declare class NileContextMenuItem extends NileElement {
26
26
  static get styles(): CSSResultArray;
27
27
  value: string;
28
28
  disabled: boolean;
29
+ open: boolean;
29
30
  onSelect?: NileContextMenuItemSelectHandler;
30
31
  private _hasSubmenu;
31
32
  private _hasIcon;
@@ -22,6 +22,7 @@ let NileContextMenuItem = class NileContextMenuItem extends NileElement {
22
22
  super(...arguments);
23
23
  this.value = '';
24
24
  this.disabled = false;
25
+ this.open = false;
25
26
  this._hasSubmenu = false;
26
27
  this._hasIcon = false;
27
28
  this._submenuExpanded = false;
@@ -66,7 +67,7 @@ let NileContextMenuItem = class NileContextMenuItem extends NileElement {
66
67
  <span part="label" class="label"><slot @slotchange=${this._onSlotChange}></slot></span>
67
68
  ${this._hasSubmenu
68
69
  ? html `<span part="chevron" class="chevron" aria-hidden="true">
69
- <nile-glyph name="ng-chevron-right" size="16"></nile-glyph>
70
+ <nile-glyph name="ng-chevron-right" size="16" method="stroke"></nile-glyph>
70
71
  </span>`
71
72
  : ''}
72
73
  </div>
@@ -79,6 +80,9 @@ __decorate([
79
80
  __decorate([
80
81
  property({ attribute: true, type: Boolean, reflect: true })
81
82
  ], NileContextMenuItem.prototype, "disabled", void 0);
83
+ __decorate([
84
+ property({ attribute: true, type: Boolean, reflect: true })
85
+ ], NileContextMenuItem.prototype, "open", void 0);
82
86
  __decorate([
83
87
  state()
84
88
  ], NileContextMenuItem.prototype, "_hasSubmenu", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"nile-context-menu-item.js","sourceRoot":"","sources":["../../../src/nile-context-menu-item/nile-context-menu-item.ts"],"names":[],"mappings":"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","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"]}
1
+ {"version":3,"file":"nile-context-menu-item.js","sourceRoot":"","sources":["../../../src/nile-context-menu-item/nile-context-menu-item.ts"],"names":[],"mappings":"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","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"]}
@@ -25,7 +25,11 @@ export declare class NileContextSubmenu extends NileElement {
25
25
  private _openTimer?;
26
26
  private _closeTimer?;
27
27
  private _setupDone;
28
+ private _parentObserver?;
29
+ private _repositionQueued;
30
+ private get _pinnedOpen();
28
31
  connectedCallback(): void;
32
+ private _isParentVisible;
29
33
  private _ensureProxy;
30
34
  private _syncProxyToParent;
31
35
  disconnectedCallback(): void;
@@ -38,8 +42,13 @@ export declare class NileContextSubmenu extends NileElement {
38
42
  private _onParentLeave;
39
43
  private _onParentClick;
40
44
  private _onPanelEnter;
45
+ private _onReposition;
41
46
  private _onPanelLeave;
42
47
  openSubmenu(): void;
48
+ /** Open the submenu of every direct child item carrying the `open` attribute. */
49
+ private _openPinnedDescendants;
50
+ /** True if `item` sits at this submenu's own level (not inside a deeper submenu). */
51
+ private _isDirectChildItem;
43
52
  closeSubmenu(): void;
44
53
  get isOpen(): boolean;
45
54
  static findByContainer(container: Element): NileContextSubmenu | null;
@@ -28,6 +28,7 @@ let NileContextSubmenu = NileContextSubmenu_1 = class NileContextSubmenu extends
28
28
  this._proxyId = `nile-context-submenu-anchor-${++submenuIdSeq}`;
29
29
  this._menuContainerRef = null;
30
30
  this._setupDone = false;
31
+ this._repositionQueued = false;
31
32
  this._onParentEnter = () => {
32
33
  if (this._parentItem?.disabled)
33
34
  return;
@@ -41,6 +42,8 @@ let NileContextSubmenu = NileContextSubmenu_1 = class NileContextSubmenu extends
41
42
  clearTimeout(this._openTimer);
42
43
  this._openTimer = undefined;
43
44
  }
45
+ if (this._pinnedOpen)
46
+ return;
44
47
  if (this._open) {
45
48
  this._closeTimer = window.setTimeout(() => this.closeSubmenu(), HOVER_CLOSE_DELAY);
46
49
  }
@@ -50,15 +53,33 @@ let NileContextSubmenu = NileContextSubmenu_1 = class NileContextSubmenu extends
50
53
  if (this._parentItem?.disabled)
51
54
  return;
52
55
  this._clearTimers();
53
- if (this._open)
54
- this.closeSubmenu();
55
- else
56
+ if (this._open) {
57
+ if (!this._pinnedOpen)
58
+ this.closeSubmenu();
59
+ }
60
+ else {
56
61
  this.openSubmenu();
62
+ }
57
63
  };
58
64
  this._onPanelEnter = () => {
59
65
  this._clearTimers();
60
66
  };
67
+ //Re-anchor to the parent item after scroll/resize
68
+ this._onReposition = () => {
69
+ if (this._repositionQueued || !this._open)
70
+ return;
71
+ this._repositionQueued = true;
72
+ requestAnimationFrame(() => {
73
+ this._repositionQueued = false;
74
+ if (!this._open)
75
+ return;
76
+ this._syncProxyToParent();
77
+ this._floatingPanelEl?.reposition();
78
+ });
79
+ };
61
80
  this._onPanelLeave = () => {
81
+ if (this._pinnedOpen)
82
+ return;
62
83
  if (this._open) {
63
84
  this._closeTimer = window.setTimeout(() => {
64
85
  const hasOpenDescendant = NileContextSubmenu_1.openStack.some(sub => sub !== this && this._menuContainerRef?.contains(sub));
@@ -110,6 +131,9 @@ let NileContextSubmenu = NileContextSubmenu_1 = class NileContextSubmenu extends
110
131
  `,
111
132
  ];
112
133
  }
134
+ get _pinnedOpen() {
135
+ return !!(this._parentItem?.open && !this._parentItem.disabled);
136
+ }
113
137
  connectedCallback() {
114
138
  super.connectedCallback();
115
139
  let p = this.parentElement;
@@ -122,9 +146,27 @@ let NileContextSubmenu = NileContextSubmenu_1 = class NileContextSubmenu extends
122
146
  this._parentItem.addEventListener('mouseenter', this._onParentEnter);
123
147
  this._parentItem.addEventListener('mouseleave', this._onParentLeave);
124
148
  this._parentItem.addEventListener('click', this._onParentClick, true);
149
+ // Open/close the submenu when the parent item's `open` attribute changes.
150
+ this._parentObserver = new MutationObserver(() => {
151
+ if (this._pinnedOpen) {
152
+ if (this._isParentVisible())
153
+ this.openSubmenu();
154
+ }
155
+ else if (this._open) {
156
+ this.closeSubmenu();
157
+ }
158
+ });
159
+ this._parentObserver.observe(this._parentItem, {
160
+ attributes: true,
161
+ attributeFilter: ['open'],
162
+ });
125
163
  }
126
164
  this._ensureBodyPanel();
127
165
  }
166
+ _isParentVisible() {
167
+ const rect = this._parentItem?.getBoundingClientRect();
168
+ return !!rect && rect.width > 0 && rect.height > 0;
169
+ }
128
170
  _ensureProxy() {
129
171
  if (this._proxyEl)
130
172
  return;
@@ -140,8 +182,17 @@ let NileContextSubmenu = NileContextSubmenu_1 = class NileContextSubmenu extends
140
182
  if (!this._proxyEl || !this._parentItem)
141
183
  return;
142
184
  const rect = this._parentItem.getBoundingClientRect();
143
- this._proxyEl.style.left = `${rect.left}px`;
144
- this._proxyEl.style.top = `${rect.top}px`;
185
+ if (this._pinnedOpen) {
186
+ // Pinned submenus anchor in document coordinates.
187
+ this._proxyEl.style.position = 'absolute';
188
+ this._proxyEl.style.left = `${rect.left + window.scrollX}px`;
189
+ this._proxyEl.style.top = `${rect.top + window.scrollY}px`;
190
+ }
191
+ else {
192
+ this._proxyEl.style.position = 'fixed';
193
+ this._proxyEl.style.left = `${rect.left}px`;
194
+ this._proxyEl.style.top = `${rect.top}px`;
195
+ }
145
196
  this._proxyEl.style.width = `${rect.width}px`;
146
197
  this._proxyEl.style.height = `${rect.height}px`;
147
198
  }
@@ -152,6 +203,8 @@ let NileContextSubmenu = NileContextSubmenu_1 = class NileContextSubmenu extends
152
203
  this._parentItem.removeEventListener('mouseleave', this._onParentLeave);
153
204
  this._parentItem.removeEventListener('click', this._onParentClick, true);
154
205
  }
206
+ this._parentObserver?.disconnect();
207
+ this._parentObserver = undefined;
155
208
  this._clearTimers();
156
209
  if (this._open)
157
210
  this.closeSubmenu();
@@ -235,11 +288,47 @@ let NileContextSubmenu = NileContextSubmenu_1 = class NileContextSubmenu extends
235
288
  this._ensureBodyPanel();
236
289
  this._syncProxyToParent();
237
290
  this._open = true;
238
- if (this._floatingPanelEl)
291
+ if (this._floatingPanelEl) {
292
+ // open pinned descendants only once this panel is fully shown
293
+ this._floatingPanelEl.addEventListener('nile-after-show', () => {
294
+ if (this._open)
295
+ this._openPinnedDescendants();
296
+ }, { once: true });
239
297
  this._floatingPanelEl.open = true;
298
+ }
240
299
  NileContextSubmenu_1.openStack.push(this);
300
+ window.addEventListener('scroll', this._onReposition, true);
301
+ window.addEventListener('resize', this._onReposition);
302
+ requestAnimationFrame(() => requestAnimationFrame(() => {
303
+ if (this._open)
304
+ this._openPinnedDescendants();
305
+ }));
241
306
  this._parentItem?.setSubmenuExpanded?.(true);
242
307
  }
308
+ /** Open the submenu of every direct child item carrying the `open` attribute. */
309
+ _openPinnedDescendants() {
310
+ if (!this._menuContainerRef)
311
+ return;
312
+ const items = Array.from(this._menuContainerRef.querySelectorAll(ITEM_TAG));
313
+ for (const item of items) {
314
+ if (!this._isDirectChildItem(item))
315
+ continue;
316
+ if (!item.open || item.disabled)
317
+ continue;
318
+ const sub = item.querySelector(`:scope > ${SUBMENU_TAG}`);
319
+ sub?.openSubmenu();
320
+ }
321
+ }
322
+ /** True if `item` sits at this submenu's own level (not inside a deeper submenu). */
323
+ _isDirectChildItem(item) {
324
+ let cur = item.parentElement;
325
+ while (cur && cur !== this._menuContainerRef) {
326
+ if (cur.tagName.toLowerCase() === SUBMENU_TAG)
327
+ return false;
328
+ cur = cur.parentElement;
329
+ }
330
+ return true;
331
+ }
243
332
  closeSubmenu() {
244
333
  if (!this._open)
245
334
  return;
@@ -251,6 +340,8 @@ let NileContextSubmenu = NileContextSubmenu_1 = class NileContextSubmenu extends
251
340
  this._open = false;
252
341
  if (this._floatingPanelEl)
253
342
  this._floatingPanelEl.open = false;
343
+ window.removeEventListener('scroll', this._onReposition, true);
344
+ window.removeEventListener('resize', this._onReposition);
254
345
  NileContextSubmenu_1.openStack = NileContextSubmenu_1.openStack.filter(s => s !== this);
255
346
  this._clearTimers();
256
347
  this._parentItem?.setSubmenuExpanded?.(false);
@@ -273,16 +364,7 @@ let NileContextSubmenu = NileContextSubmenu_1 = class NileContextSubmenu extends
273
364
  return;
274
365
  const items = Array.from(this._menuContainerRef.querySelectorAll(ITEM_TAG));
275
366
  for (const item of items) {
276
- let cur = item.parentElement;
277
- let inDeeperSub = false;
278
- while (cur && cur !== this._menuContainerRef) {
279
- if (cur.tagName.toLowerCase() === SUBMENU_TAG) {
280
- inDeeperSub = true;
281
- break;
282
- }
283
- cur = cur.parentElement;
284
- }
285
- if (inDeeperSub)
367
+ if (!this._isDirectChildItem(item))
286
368
  continue;
287
369
  if (!item.disabled) {
288
370
  item.focus();
@@ -295,6 +377,8 @@ let NileContextSubmenu = NileContextSubmenu_1 = class NileContextSubmenu extends
295
377
  for (const sub of [...NileContextSubmenu_1.openStack]) {
296
378
  if (sub === this)
297
379
  continue;
380
+ if (sub._pinnedOpen)
381
+ continue;
298
382
  if (sub._parentLevel() === myLevel)
299
383
  sub.closeSubmenu();
300
384
  }