dap-design-system 0.61.10 → 0.61.11
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/dist/components/navigation-menu/submenu-controller.js +1 -1
- package/dist/components/navigation-menu/submenu-controller.js.map +1 -1
- package/dist/manifest/types/vue/index.d.ts +313 -313
- package/dist/manifest/vscode.html-custom-data.json +237 -237
- package/dist/manifest/web-types.json +643 -643
- package/dist/react/index.d.ts +10 -10
- package/dist/react-types.ts +11 -11
- package/dist/react.js +48 -48
- package/package.json +1 -1
|
@@ -35,7 +35,7 @@ class o {
|
|
|
35
35
|
var t;
|
|
36
36
|
e.target === this.host ? (e.preventDefault(), e.stopPropagation()) : e.target instanceof Element && (e.target.tagName.toLowerCase() === "dap-ds-navigation-menu-item" || (t = e.target.getAttribute("role")) != null && t.startsWith("menuitem")) && this.disableSubmenu();
|
|
37
37
|
}, this.handleFocusOut = (e) => {
|
|
38
|
-
e.relatedTarget && e.relatedTarget instanceof Element && this.host.contains(e.relatedTarget) || this.disableSubmenu();
|
|
38
|
+
e.relatedTarget && (e.relatedTarget instanceof Element && this.host.contains(e.relatedTarget) || this.disableSubmenu());
|
|
39
39
|
}, this.updateSafeTriangle = () => {
|
|
40
40
|
const e = this.host.popup;
|
|
41
41
|
if (!e || !this.host.opened)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submenu-controller.js","sources":["../../../src/components/navigation-menu/submenu-controller.ts"],"sourcesContent":["import type { ReactiveController, ReactiveControllerHost } from 'lit'\n\nimport type DapDSNavigationMenuItem from './navigation-menu-item.component'\n\n/** A reactive controller to manage submenu opening/closing with hover delay and safe triangle */\nexport class SubmenuController implements ReactiveController {\n private host: ReactiveControllerHost & DapDSNavigationMenuItem\n private enableSubmenuTimer = -1\n private isConnected = false\n private readonly submenuOpenDelay = 100\n\n constructor(host: ReactiveControllerHost & DapDSNavigationMenuItem) {\n ;(this.host = host).addController(this)\n }\n\n hostConnected() {\n if (this.hasSubmenu() && !this.host.disabled) {\n this.addListeners()\n }\n }\n\n hostDisconnected() {\n this.removeListeners()\n }\n\n hostUpdated() {\n if (this.hasSubmenu() && !this.host.disabled) {\n this.addListeners()\n } else {\n this.removeListeners()\n }\n }\n\n private hasSubmenu(): boolean {\n return this.host.hasNestedItems || this.host.hasContent\n }\n\n private addListeners() {\n if (!this.isConnected) {\n this.host.addEventListener('mousemove', this.handleMouseMove)\n this.host.addEventListener('mouseover', this.handleMouseOver)\n this.host.addEventListener('keydown', this.handleKeyDown)\n this.host.addEventListener('click', this.handleClick)\n this.host.addEventListener('focusout', this.handleFocusOut)\n this.isConnected = true\n }\n }\n\n private removeListeners() {\n if (this.isConnected) {\n this.host.removeEventListener('mousemove', this.handleMouseMove)\n this.host.removeEventListener('mouseover', this.handleMouseOver)\n this.host.removeEventListener('keydown', this.handleKeyDown)\n this.host.removeEventListener('click', this.handleClick)\n this.host.removeEventListener('focusout', this.handleFocusOut)\n this.isConnected = false\n }\n }\n\n // Set the safe triangle cursor position\n private handleMouseMove = (event: MouseEvent) => {\n this.host.style.setProperty(\n '--safe-triangle-cursor-x',\n `${event.clientX}px`,\n )\n this.host.style.setProperty(\n '--safe-triangle-cursor-y',\n `${event.clientY}px`,\n )\n }\n\n private handleMouseOver = () => {\n if (this.hasSubmenu()) {\n this.enableSubmenu(true) // With delay for mouse\n }\n }\n\n private handleSubmenuEntry(event: KeyboardEvent) {\n if (!this.hasSubmenu()) return\n\n // Open the submenu (if not open), and set focus to first menuitem\n event.preventDefault()\n event.stopPropagation()\n\n if (this.host.opened) {\n this.host.focusFirstDropdownChild()\n } else {\n this.enableSubmenu(false) // Instant for keyboard\n this.host.updateComplete.then(() => {\n this.host.focusFirstDropdownChild()\n })\n }\n }\n\n // Focus on the first menu-item of a submenu\n private handleKeyDown = (event: KeyboardEvent) => {\n const target = event.target as HTMLElement\n\n // Check if the event is coming from a nested navigation-menu-item\n // If so, don't handle it - let the nested item handle it\n const closestNavItem = target.closest('dap-ds-navigation-menu-item')\n if (closestNavItem && closestNavItem !== this.host) {\n // This is a nested item, don't handle the event\n return\n }\n\n switch (event.key) {\n case 'Escape':\n event.preventDefault()\n event.stopPropagation()\n this.disableSubmenu()\n this.host.focus()\n break\n case 'Tab':\n this.disableSubmenu()\n break\n case 'ArrowLeft':\n // Either focus is currently on the host element or a child\n if (event.target !== this.host) {\n event.preventDefault()\n event.stopPropagation()\n this.host.focus()\n this.disableSubmenu()\n }\n break\n case 'ArrowRight':\n // Only handle ArrowRight for nested items (level > 0)\n // For top-level items (level 0), let parent handle navigation\n if (this.host.level > 0) {\n this.handleSubmenuEntry(event)\n }\n break\n case 'Enter':\n case ' ':\n // Only handle Enter/Space when focus is on the host's trigger element\n // Not when focus is on nested items or links inside nested items\n // Check if target is the host or is inside the host but not in a nested item\n if (\n target === this.host ||\n (this.host.contains(target) &&\n !target.closest('dap-ds-navigation-menu-item'))\n ) {\n this.handleSubmenuEntry(event)\n }\n break\n default:\n break\n }\n }\n\n private handleClick = (event: MouseEvent) => {\n // Clicking on the item which heads the menu does nothing, otherwise hide submenu and propagate\n if (event.target === this.host) {\n event.preventDefault()\n event.stopPropagation()\n } else if (\n event.target instanceof Element &&\n (event.target.tagName.toLowerCase() === 'dap-ds-navigation-menu-item' ||\n event.target.getAttribute('role')?.startsWith('menuitem'))\n ) {\n this.disableSubmenu()\n }\n }\n\n // Close this submenu on focus outside of the parent or any descendants\n private handleFocusOut = (event: FocusEvent) => {\n if (\n event.relatedTarget &&\n event.relatedTarget instanceof Element &&\n this.host.contains(event.relatedTarget)\n ) {\n return\n }\n this.disableSubmenu()\n }\n\n // Set the safe triangle values for the submenu when the position changes\n updateSafeTriangle = () => {\n const popup = this.host.popup\n if (!popup || !this.host.opened) {\n return\n }\n\n const { left, top, height } = popup.getBoundingClientRect()\n\n this.host.style.setProperty('--safe-triangle-submenu-start-x', `${left}px`)\n this.host.style.setProperty('--safe-triangle-submenu-start-y', `${top}px`)\n this.host.style.setProperty('--safe-triangle-submenu-end-x', `${left}px`)\n this.host.style.setProperty(\n '--safe-triangle-submenu-end-y',\n `${top + height}px`,\n )\n }\n\n private setSubmenuState(state: boolean, byHover = false) {\n if (state !== this.host.opened) {\n if (state) {\n this.host.showDropDown(byHover)\n // Update safe triangle after opening\n this.host.updateComplete.then(() => {\n this.updateSafeTriangle()\n })\n } else {\n this.host.hideDropDown()\n }\n }\n }\n\n // Shows the submenu. Supports disabling the opening delay for keyboard events\n private enableSubmenu(delay = true) {\n if (delay) {\n window.clearTimeout(this.enableSubmenuTimer)\n this.enableSubmenuTimer = window.setTimeout(() => {\n // Mark as opened by hover when using delay (mouse hover)\n this.setSubmenuState(true, true)\n }, this.submenuOpenDelay)\n } else {\n // Keyboard navigation - not opened by hover\n this.setSubmenuState(true, false)\n }\n }\n\n private disableSubmenu() {\n window.clearTimeout(this.enableSubmenuTimer)\n this.setSubmenuState(false)\n }\n\n // Public method to cancel pending submenu opening timer\n // Used when closing siblings to prevent race conditions\n public cancelPendingOpen() {\n window.clearTimeout(this.enableSubmenuTimer)\n }\n}\n"],"names":["SubmenuController","host","event","target","closestNavItem","_a","popup","left","top","height","state","byHover","delay"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"submenu-controller.js","sources":["../../../src/components/navigation-menu/submenu-controller.ts"],"sourcesContent":["import type { ReactiveController, ReactiveControllerHost } from 'lit'\n\nimport type DapDSNavigationMenuItem from './navigation-menu-item.component'\n\n/** A reactive controller to manage submenu opening/closing with hover delay and safe triangle */\nexport class SubmenuController implements ReactiveController {\n private host: ReactiveControllerHost & DapDSNavigationMenuItem\n private enableSubmenuTimer = -1\n private isConnected = false\n private readonly submenuOpenDelay = 100\n\n constructor(host: ReactiveControllerHost & DapDSNavigationMenuItem) {\n ;(this.host = host).addController(this)\n }\n\n hostConnected() {\n if (this.hasSubmenu() && !this.host.disabled) {\n this.addListeners()\n }\n }\n\n hostDisconnected() {\n this.removeListeners()\n }\n\n hostUpdated() {\n if (this.hasSubmenu() && !this.host.disabled) {\n this.addListeners()\n } else {\n this.removeListeners()\n }\n }\n\n private hasSubmenu(): boolean {\n return this.host.hasNestedItems || this.host.hasContent\n }\n\n private addListeners() {\n if (!this.isConnected) {\n this.host.addEventListener('mousemove', this.handleMouseMove)\n this.host.addEventListener('mouseover', this.handleMouseOver)\n this.host.addEventListener('keydown', this.handleKeyDown)\n this.host.addEventListener('click', this.handleClick)\n this.host.addEventListener('focusout', this.handleFocusOut)\n this.isConnected = true\n }\n }\n\n private removeListeners() {\n if (this.isConnected) {\n this.host.removeEventListener('mousemove', this.handleMouseMove)\n this.host.removeEventListener('mouseover', this.handleMouseOver)\n this.host.removeEventListener('keydown', this.handleKeyDown)\n this.host.removeEventListener('click', this.handleClick)\n this.host.removeEventListener('focusout', this.handleFocusOut)\n this.isConnected = false\n }\n }\n\n // Set the safe triangle cursor position\n private handleMouseMove = (event: MouseEvent) => {\n this.host.style.setProperty(\n '--safe-triangle-cursor-x',\n `${event.clientX}px`,\n )\n this.host.style.setProperty(\n '--safe-triangle-cursor-y',\n `${event.clientY}px`,\n )\n }\n\n private handleMouseOver = () => {\n if (this.hasSubmenu()) {\n this.enableSubmenu(true) // With delay for mouse\n }\n }\n\n private handleSubmenuEntry(event: KeyboardEvent) {\n if (!this.hasSubmenu()) return\n\n // Open the submenu (if not open), and set focus to first menuitem\n event.preventDefault()\n event.stopPropagation()\n\n if (this.host.opened) {\n this.host.focusFirstDropdownChild()\n } else {\n this.enableSubmenu(false) // Instant for keyboard\n this.host.updateComplete.then(() => {\n this.host.focusFirstDropdownChild()\n })\n }\n }\n\n // Focus on the first menu-item of a submenu\n private handleKeyDown = (event: KeyboardEvent) => {\n const target = event.target as HTMLElement\n\n // Check if the event is coming from a nested navigation-menu-item\n // If so, don't handle it - let the nested item handle it\n const closestNavItem = target.closest('dap-ds-navigation-menu-item')\n if (closestNavItem && closestNavItem !== this.host) {\n // This is a nested item, don't handle the event\n return\n }\n\n switch (event.key) {\n case 'Escape':\n event.preventDefault()\n event.stopPropagation()\n this.disableSubmenu()\n this.host.focus()\n break\n case 'Tab':\n this.disableSubmenu()\n break\n case 'ArrowLeft':\n // Either focus is currently on the host element or a child\n if (event.target !== this.host) {\n event.preventDefault()\n event.stopPropagation()\n this.host.focus()\n this.disableSubmenu()\n }\n break\n case 'ArrowRight':\n // Only handle ArrowRight for nested items (level > 0)\n // For top-level items (level 0), let parent handle navigation\n if (this.host.level > 0) {\n this.handleSubmenuEntry(event)\n }\n break\n case 'Enter':\n case ' ':\n // Only handle Enter/Space when focus is on the host's trigger element\n // Not when focus is on nested items or links inside nested items\n // Check if target is the host or is inside the host but not in a nested item\n if (\n target === this.host ||\n (this.host.contains(target) &&\n !target.closest('dap-ds-navigation-menu-item'))\n ) {\n this.handleSubmenuEntry(event)\n }\n break\n default:\n break\n }\n }\n\n private handleClick = (event: MouseEvent) => {\n // Clicking on the item which heads the menu does nothing, otherwise hide submenu and propagate\n if (event.target === this.host) {\n event.preventDefault()\n event.stopPropagation()\n } else if (\n event.target instanceof Element &&\n (event.target.tagName.toLowerCase() === 'dap-ds-navigation-menu-item' ||\n event.target.getAttribute('role')?.startsWith('menuitem'))\n ) {\n this.disableSubmenu()\n }\n }\n\n // Close this submenu on focus outside of the parent or any descendants\n private handleFocusOut = (event: FocusEvent) => {\n if (!event.relatedTarget) {\n return\n }\n\n if (\n event.relatedTarget instanceof Element &&\n this.host.contains(event.relatedTarget)\n ) {\n return\n }\n this.disableSubmenu()\n }\n\n // Set the safe triangle values for the submenu when the position changes\n updateSafeTriangle = () => {\n const popup = this.host.popup\n if (!popup || !this.host.opened) {\n return\n }\n\n const { left, top, height } = popup.getBoundingClientRect()\n\n this.host.style.setProperty('--safe-triangle-submenu-start-x', `${left}px`)\n this.host.style.setProperty('--safe-triangle-submenu-start-y', `${top}px`)\n this.host.style.setProperty('--safe-triangle-submenu-end-x', `${left}px`)\n this.host.style.setProperty(\n '--safe-triangle-submenu-end-y',\n `${top + height}px`,\n )\n }\n\n private setSubmenuState(state: boolean, byHover = false) {\n if (state !== this.host.opened) {\n if (state) {\n this.host.showDropDown(byHover)\n // Update safe triangle after opening\n this.host.updateComplete.then(() => {\n this.updateSafeTriangle()\n })\n } else {\n this.host.hideDropDown()\n }\n }\n }\n\n // Shows the submenu. Supports disabling the opening delay for keyboard events\n private enableSubmenu(delay = true) {\n if (delay) {\n window.clearTimeout(this.enableSubmenuTimer)\n this.enableSubmenuTimer = window.setTimeout(() => {\n // Mark as opened by hover when using delay (mouse hover)\n this.setSubmenuState(true, true)\n }, this.submenuOpenDelay)\n } else {\n // Keyboard navigation - not opened by hover\n this.setSubmenuState(true, false)\n }\n }\n\n private disableSubmenu() {\n window.clearTimeout(this.enableSubmenuTimer)\n this.setSubmenuState(false)\n }\n\n // Public method to cancel pending submenu opening timer\n // Used when closing siblings to prevent race conditions\n public cancelPendingOpen() {\n window.clearTimeout(this.enableSubmenuTimer)\n }\n}\n"],"names":["SubmenuController","host","event","target","closestNavItem","_a","popup","left","top","height","state","byHover","delay"],"mappings":"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"}
|