@radix-ng/primitives 1.0.0-beta.2 → 1.0.0-beta.3

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 (45) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +76 -6
  3. package/fesm2022/radix-ng-primitives-alert-dialog.mjs +30 -24
  4. package/fesm2022/radix-ng-primitives-alert-dialog.mjs.map +1 -1
  5. package/fesm2022/radix-ng-primitives-autocomplete.mjs +1786 -0
  6. package/fesm2022/radix-ng-primitives-autocomplete.mjs.map +1 -0
  7. package/fesm2022/radix-ng-primitives-combobox.mjs +107 -47
  8. package/fesm2022/radix-ng-primitives-combobox.mjs.map +1 -1
  9. package/fesm2022/radix-ng-primitives-dialog.mjs +43 -45
  10. package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
  11. package/fesm2022/radix-ng-primitives-drawer.mjs +153 -63
  12. package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -1
  13. package/fesm2022/radix-ng-primitives-menu.mjs +40 -20
  14. package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
  15. package/fesm2022/radix-ng-primitives-navigation-menu.mjs +38 -54
  16. package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
  17. package/fesm2022/radix-ng-primitives-popover.mjs +35 -50
  18. package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
  19. package/fesm2022/radix-ng-primitives-popper.mjs +11 -5
  20. package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
  21. package/fesm2022/radix-ng-primitives-portal.mjs +107 -17
  22. package/fesm2022/radix-ng-primitives-portal.mjs.map +1 -1
  23. package/fesm2022/radix-ng-primitives-presence.mjs +262 -79
  24. package/fesm2022/radix-ng-primitives-presence.mjs.map +1 -1
  25. package/fesm2022/radix-ng-primitives-preview-card.mjs +36 -50
  26. package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -1
  27. package/fesm2022/radix-ng-primitives-select.mjs +106 -92
  28. package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
  29. package/fesm2022/radix-ng-primitives-tooltip.mjs +37 -40
  30. package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
  31. package/package.json +5 -1
  32. package/types/radix-ng-primitives-alert-dialog.d.ts +17 -11
  33. package/types/radix-ng-primitives-autocomplete.d.ts +596 -0
  34. package/types/radix-ng-primitives-combobox.d.ts +61 -16
  35. package/types/radix-ng-primitives-dialog.d.ts +32 -25
  36. package/types/radix-ng-primitives-drawer.d.ts +49 -22
  37. package/types/radix-ng-primitives-menu.d.ts +19 -10
  38. package/types/radix-ng-primitives-navigation-menu.d.ts +24 -26
  39. package/types/radix-ng-primitives-popover.d.ts +23 -23
  40. package/types/radix-ng-primitives-popper.d.ts +7 -1
  41. package/types/radix-ng-primitives-portal.d.ts +53 -8
  42. package/types/radix-ng-primitives-presence.d.ts +98 -17
  43. package/types/radix-ng-primitives-preview-card.d.ts +24 -23
  44. package/types/radix-ng-primitives-select.d.ts +52 -55
  45. package/types/radix-ng-primitives-tooltip.d.ts +26 -19
@@ -1 +1 @@
1
- {"version":3,"file":"radix-ng-primitives-navigation-menu.mjs","sources":["../../../packages/primitives/navigation-menu/src/navigation-menu-root-context.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-arrow.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-backdrop.ts","../../../packages/primitives/navigation-menu/src/utils.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-item.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-content.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-icon.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-link.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-list.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-popup.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-portal.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-portal-presence.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-positioner.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-root.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-trigger.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-viewport.ts","../../../packages/primitives/navigation-menu/index.ts","../../../packages/primitives/navigation-menu/radix-ng-primitives-navigation-menu.ts"],"sourcesContent":["import { Signal, TemplateRef } from '@angular/core';\nimport { createContext, RdxTransitionStatus } from '@radix-ng/primitives/core';\n\nexport type NavigationMenuOrientation = 'horizontal' | 'vertical';\nexport type NavigationMenuDirection = 'ltr' | 'rtl';\n\nexport type RdxNavigationMenuOpenChangeReason =\n | 'trigger-hover'\n | 'trigger-focus'\n | 'trigger-press'\n | 'outside-press'\n | 'focus-out'\n | 'escape-key'\n | 'link-select'\n | 'list-leave'\n | 'none';\n\nexport interface RdxNavigationMenuOpenChange {\n value: string | null;\n open: boolean;\n reason: RdxNavigationMenuOpenChangeReason;\n event: Event;\n}\n\n/**\n * A registered item content template, rendered into the shared viewport when its item is active.\n */\nexport interface RdxNavigationMenuContentEntry {\n value: string;\n contentId: string;\n triggerId: string;\n templateRef: TemplateRef<unknown>;\n forceMount: Signal<boolean>;\n}\n\nexport interface RdxNavigationMenuRootContext {\n /** Whether this menu is nested inside another navigation menu's content. */\n readonly nested: boolean;\n readonly baseId: string;\n readonly orientation: Signal<NavigationMenuOrientation>;\n readonly dir: Signal<NavigationMenuDirection>;\n readonly loop: Signal<boolean>;\n\n /** Value of the currently open item, or `null` when closed. */\n readonly value: Signal<string | null>;\n /** Value of the previously open item (used for slide-direction morphing). */\n readonly previousValue: Signal<string | null>;\n readonly isOpen: Signal<boolean>;\n readonly instant: Signal<boolean>;\n readonly transitionStatus: Signal<RdxTransitionStatus>;\n\n /** The active trigger element the popup is anchored to. */\n readonly trigger: Signal<HTMLElement | undefined>;\n readonly triggers: Signal<HTMLElement[]>;\n readonly activeContent: Signal<RdxNavigationMenuContentEntry | undefined>;\n\n contentId(value: string): string;\n triggerId(value: string): string;\n\n setValue(value: string | null, reason?: RdxNavigationMenuOpenChangeReason, event?: Event): void;\n open(value: string, trigger: HTMLElement, reason?: RdxNavigationMenuOpenChangeReason, event?: Event): void;\n close(reason?: RdxNavigationMenuOpenChangeReason, event?: Event): void;\n toggle(value: string, trigger: HTMLElement, event?: Event): void;\n openOnHover(value: string, trigger: HTMLElement, event: PointerEvent): void;\n closeOnHover(): void;\n cancelHoverOpen(): void;\n cancelHoverClose(): void;\n\n registerTrigger(value: string, trigger: HTMLElement): () => void;\n registerContent(entry: RdxNavigationMenuContentEntry): () => void;\n registerTransitionElement(element: HTMLElement): () => void;\n registerViewport(onTriggerChange: (previous: HTMLElement, next: HTMLElement) => void): () => void;\n}\n\nexport const [injectNavigationMenuRootContext, provideNavigationMenuRootContext] =\n createContext<RdxNavigationMenuRootContext>('RdxNavigationMenuRootContext', 'components/navigation-menu');\n","import { computed, Directive, inject } from '@angular/core';\nimport { RdxPopperArrow, RdxPopperContentWrapper } from '@radix-ng/primitives/popper';\nimport { injectNavigationMenuRootContext } from './navigation-menu-root-context';\n\n/**\n * An optional arrow element pointing toward the active trigger.\n */\n@Directive({\n selector: '[rdxNavigationMenuArrow]',\n hostDirectives: [RdxPopperArrow],\n host: {\n '[attr.data-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[attr.data-closed]': 'rootContext.isOpen() ? undefined : \"\"',\n '[attr.data-side]': 'side()',\n '[attr.data-align]': 'align()',\n '[attr.data-uncentered]': 'uncentered() ? \"\" : undefined'\n }\n})\nexport class RdxNavigationMenuArrow {\n protected readonly rootContext = injectNavigationMenuRootContext();\n private readonly wrapper = inject(RdxPopperContentWrapper, { optional: true });\n\n protected readonly side = computed(() => this.wrapper?.placedSide());\n protected readonly align = computed(() => this.wrapper?.placedAlign());\n protected readonly uncentered = computed(() => this.wrapper?.arrowUncentered() ?? false);\n}\n","import { Directive } from '@angular/core';\nimport { injectNavigationMenuRootContext } from './navigation-menu-root-context';\n\n/**\n * An optional backdrop rendered behind the popup.\n */\n@Directive({\n selector: '[rdxNavigationMenuBackdrop]',\n host: {\n '[attr.data-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[attr.data-closed]': 'rootContext.isOpen() ? undefined : \"\"',\n '[attr.data-starting-style]': 'rootContext.transitionStatus() === \"starting\" ? \"\" : undefined',\n '[attr.data-ending-style]': 'rootContext.transitionStatus() === \"ending\" ? \"\" : undefined',\n '[attr.data-instant]': 'rootContext.instant() ? \"\" : undefined',\n '[attr.data-state]': 'rootContext.isOpen() ? \"open\" : \"closed\"'\n }\n})\nexport class RdxNavigationMenuBackdrop {\n protected readonly rootContext = injectNavigationMenuRootContext();\n}\n","/**\n * Generate a short unique id segment.\n */\nexport function generateId(): string {\n return Math.random().toString(36).substring(2, 11);\n}\n\n/**\n * Collect the tabbable elements inside a container, in DOM order, skipping hidden ones.\n */\nexport function getTabbableCandidates(container: HTMLElement): HTMLElement[] {\n if (!container || !container.querySelectorAll) {\n return [];\n }\n\n const TABBABLE_SELECTOR =\n 'a[href], button:not([disabled]), input:not([disabled]):not([type=\"hidden\"]), ' +\n 'select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"]), ' +\n '[contenteditable=\"true\"]:not([tabindex=\"-1\"])';\n\n const elements = Array.from(container.querySelectorAll(TABBABLE_SELECTOR)) as HTMLElement[];\n\n return elements.filter((element) => {\n if (element.tabIndex < 0) {\n return false;\n }\n\n if (element.hasAttribute('disabled')) {\n return false;\n }\n\n if (element.getAttribute('aria-hidden') === 'true') {\n return false;\n }\n\n let current: HTMLElement | null = element;\n\n while (current) {\n const style = window.getComputedStyle(current);\n\n if (style.display === 'none' || style.visibility === 'hidden') {\n return false;\n }\n\n current = current.parentElement;\n }\n\n return true;\n });\n}\n\n/**\n * Focus the first focusable candidate, returning whether focus moved.\n */\nexport function focusFirst(candidates: HTMLElement[], preventScroll = false): boolean {\n const previouslyFocused = document.activeElement;\n\n return candidates.some((candidate) => {\n if (candidate === previouslyFocused) {\n return true;\n }\n\n candidate.focus({ preventScroll });\n return document.activeElement !== previouslyFocused;\n });\n}\n\n/**\n * Derive a slide direction (e.g. `\"left\"`, `\"right up\"`) from the relative position of two triggers.\n * Used by the viewport to animate content as the active item changes.\n */\nexport function getActivationDirection(previous: HTMLElement, next: HTMLElement): string | undefined {\n const previousCenter = getCenter(previous.getBoundingClientRect());\n const nextCenter = getCenter(next.getBoundingClientRect());\n const directions: string[] = [];\n\n if (nextCenter.x < previousCenter.x) {\n directions.push('left');\n } else if (nextCenter.x > previousCenter.x) {\n directions.push('right');\n }\n\n if (nextCenter.y < previousCenter.y) {\n directions.push('up');\n } else if (nextCenter.y > previousCenter.y) {\n directions.push('down');\n }\n\n return directions.join(' ') || undefined;\n}\n\n/**\n * Remove `id` from an element and all its descendants (used when cloning content for an exit\n * animation, to avoid duplicate ids in the document).\n */\nexport function removeIds(element: HTMLElement): void {\n element.removeAttribute('id');\n element.querySelectorAll('[id]').forEach((child) => child.removeAttribute('id'));\n}\n\nfunction getCenter(rect: DOMRect) {\n return { x: rect.left + rect.width / 2, y: rect.top + rect.height / 2 };\n}\n","import { computed, Directive, input, signal } from '@angular/core';\nimport { injectNavigationMenuRootContext } from './navigation-menu-root-context';\nimport { generateId } from './utils';\n\n/**\n * A single navigation menu item. Holds a trigger + content pair, or a standalone link.\n */\n@Directive({\n selector: '[rdxNavigationMenuItem]',\n exportAs: 'rdxNavigationMenuItem'\n})\nexport class RdxNavigationMenuItem {\n private readonly rootContext = injectNavigationMenuRootContext();\n\n /**\n * A unique value that identifies the item. Falls back to a generated id.\n */\n readonly value = input<string, string | undefined>('', {\n transform: (value) => value || `item-${generateId()}`\n });\n\n /** The trigger element, set by the trigger directive. */\n readonly triggerRef = signal<HTMLElement | null>(null);\n\n /** Whether this item is the currently open one. */\n readonly isOpen = computed(() => this.rootContext.value() === this.value());\n\n readonly triggerId = computed(() => this.rootContext.triggerId(this.value()));\n readonly contentId = computed(() => this.rootContext.contentId(this.value()));\n}\n","import { booleanAttribute, Directive, effect, inject, input, TemplateRef, untracked } from '@angular/core';\nimport { RdxNavigationMenuItem } from './navigation-menu-item';\nimport { injectNavigationMenuRootContext } from './navigation-menu-root-context';\n\n/**\n * The content shown when its item is open. Used as a structural directive; its template is rendered\n * into the shared {@link RdxNavigationMenuViewport}.\n *\n * ```html\n * <ng-container *rdxNavigationMenuContent>…</ng-container>\n * ```\n */\n@Directive({\n selector: '[rdxNavigationMenuContent]'\n})\nexport class RdxNavigationMenuContent {\n private readonly rootContext = injectNavigationMenuRootContext();\n private readonly item = inject(RdxNavigationMenuItem);\n private readonly templateRef = inject<TemplateRef<unknown>>(TemplateRef);\n\n /**\n * Required by the structural directive syntax; the value is unused.\n */\n readonly rdxNavigationMenuContent = input(false, { transform: booleanAttribute });\n\n /**\n * Keep the content mounted in the viewport even when its item is closed.\n */\n readonly forceMount = input(false, { transform: booleanAttribute });\n\n constructor() {\n effect((onCleanup) => {\n const value = this.item.value();\n\n // Register untracked so reading/writing the root's `contents` map inside registerContent\n // doesn't make this effect re-run when other items register.\n const unregister = untracked(() =>\n this.rootContext.registerContent({\n value,\n contentId: this.rootContext.contentId(value),\n triggerId: this.rootContext.triggerId(value),\n templateRef: this.templateRef,\n forceMount: this.forceMount\n })\n );\n\n onCleanup(unregister);\n });\n }\n}\n","import { computed, Directive, inject } from '@angular/core';\nimport { RdxNavigationMenuItem } from './navigation-menu-item';\n\n/**\n * A visual indicator (e.g. a caret) rendered inside a trigger. Exposes the open state so the icon\n * can rotate when its item opens.\n */\n@Directive({\n selector: '[rdxNavigationMenuIcon]',\n host: {\n 'aria-hidden': 'true',\n '[attr.data-state]': 'open() ? \"open\" : \"closed\"'\n }\n})\nexport class RdxNavigationMenuIcon {\n private readonly item = inject(RdxNavigationMenuItem);\n\n protected readonly open = computed(() => this.item.isOpen());\n}\n","import { booleanAttribute, Directive, ElementRef, inject, input, output } from '@angular/core';\nimport { ENTER, SPACE } from '@radix-ng/primitives/core';\nimport { injectNavigationMenuRootContext } from './navigation-menu-root-context';\n\n/**\n * A navigation link. Closes the menu on selection unless prevented.\n *\n * Used both as a top-level menubar item and inside content. It is a plain tabbable anchor (not part\n * of the menubar's arrow-key roving), matching Base UI.\n */\n@Directive({\n selector: '[rdxNavigationMenuLink]',\n host: {\n '[attr.data-active]': 'active() ? \"\" : undefined',\n '[attr.aria-current]': 'active() ? \"page\" : undefined',\n '(click)': 'onClick($event)',\n '(keydown)': 'onKeydown($event)'\n }\n})\nexport class RdxNavigationMenuLink {\n private readonly rootContext = injectNavigationMenuRootContext();\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Whether the link represents the current page.\n */\n readonly active = input(false, { transform: booleanAttribute });\n\n /**\n * Whether selecting the link should close the menu.\n */\n readonly closeOnClick = input(true, { transform: booleanAttribute });\n\n /**\n * Emits when the link is selected. Call `preventDefault()` to keep the menu open.\n */\n readonly onSelect = output<Event>();\n\n protected onClick(event: Event) {\n this.onSelect.emit(event);\n\n if (this.closeOnClick() && !event.defaultPrevented) {\n this.rootContext.close('link-select', event);\n }\n }\n\n protected onKeydown(event: KeyboardEvent) {\n if (event.key === ENTER || event.key === SPACE) {\n event.preventDefault();\n this.elementRef.nativeElement.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true }));\n }\n }\n}\n","import { Directive, effect, inject } from '@angular/core';\nimport { RdxRovingFocusGroupDirective } from '@radix-ng/primitives/roving-focus';\nimport { injectNavigationMenuRootContext } from './navigation-menu-root-context';\n\n/**\n * Contains the navigation menu items. Renders as a menubar with roving keyboard focus.\n */\n@Directive({\n selector: '[rdxNavigationMenuList]',\n hostDirectives: [RdxRovingFocusGroupDirective],\n host: {\n role: 'menubar',\n '[attr.data-orientation]': 'rootContext.orientation()',\n '(pointerleave)': 'onPointerLeave($event)'\n }\n})\nexport class RdxNavigationMenuList {\n protected readonly rootContext = injectNavigationMenuRootContext();\n private readonly rovingFocusGroup = inject(RdxRovingFocusGroupDirective, { self: true });\n\n constructor() {\n effect(() => {\n this.rovingFocusGroup.setOrientation(this.rootContext.orientation());\n this.rovingFocusGroup.setDir(this.rootContext.dir());\n this.rovingFocusGroup.setLoop(this.rootContext.loop());\n });\n }\n\n protected onPointerLeave(event: PointerEvent) {\n if (event.pointerType === 'touch') {\n return;\n }\n\n this.rootContext.closeOnHover();\n }\n}\n","import { computed, DestroyRef, Directive, effect, ElementRef, inject, untracked } from '@angular/core';\nimport { outputFromObservable, outputToObservable } from '@angular/core/rxjs-interop';\nimport { ARROW_DOWN, ARROW_UP, END, HOME } from '@radix-ng/primitives/core';\nimport { RdxDismissableLayer, RdxDismissableLayersContextToken } from '@radix-ng/primitives/dismissable-layer';\nimport { RdxPopperContent, RdxPopperContentWrapper } from '@radix-ng/primitives/popper';\nimport { injectNavigationMenuRootContext, RdxNavigationMenuOpenChangeReason } from './navigation-menu-root-context';\nimport { focusFirst, getTabbableCandidates } from './utils';\n\n/**\n * The shared container for the active item's content.\n */\n@Directive({\n selector: '[rdxNavigationMenuPopup]',\n hostDirectives: [RdxPopperContent, RdxDismissableLayer],\n host: {\n role: 'menu',\n tabindex: '-1',\n '[attr.aria-labelledby]': 'labelledBy()',\n '[attr.data-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[attr.data-closed]': 'rootContext.isOpen() ? undefined : \"\"',\n '[attr.data-starting-style]': 'rootContext.transitionStatus() === \"starting\" ? \"\" : undefined',\n '[attr.data-ending-style]': 'rootContext.transitionStatus() === \"ending\" ? \"\" : undefined',\n '[attr.data-instant]': 'rootContext.instant() ? \"\" : undefined',\n '[attr.data-state]': 'rootContext.isOpen() ? \"open\" : \"closed\"',\n '[attr.data-side]': 'side()',\n '[attr.data-align]': 'align()',\n '(pointerenter)': 'rootContext.cancelHoverClose()',\n '(pointerleave)': 'onPointerLeave($event)',\n '(keydown)': 'onKeydown($event)'\n }\n})\nexport class RdxNavigationMenuPopup {\n protected readonly rootContext = injectNavigationMenuRootContext();\n private readonly dismissableLayer = inject(RdxDismissableLayer);\n private readonly wrapper = inject(RdxPopperContentWrapper, { optional: true });\n private readonly layersContext = inject(RdxDismissableLayersContextToken);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n protected readonly side = computed(() => this.wrapper?.placedSide());\n protected readonly align = computed(() => this.wrapper?.placedAlign());\n\n /** Names the menu after the active trigger so the `role=\"menu\"` element has an accessible name. */\n protected readonly labelledBy = computed(() => {\n const value = this.rootContext.value() ?? this.rootContext.previousValue();\n return value ? this.rootContext.triggerId(value) : undefined;\n });\n\n private dismissReason: RdxNavigationMenuOpenChangeReason = 'none';\n private dismissEvent: Event = new Event('navigation-menu.dismiss');\n\n /**\n * Event handler called when the escape key is down. Can be prevented.\n */\n readonly escapeKeyDown = outputFromObservable(outputToObservable(this.dismissableLayer.escapeKeyDown));\n\n /**\n * Event handler called when a pointerdown event happens outside the popup. Can be prevented.\n */\n readonly pointerDownOutside = outputFromObservable(outputToObservable(this.dismissableLayer.pointerDownOutside));\n\n /**\n * Event handler called when focus moves outside the popup. Can be prevented.\n */\n readonly focusOutside = outputFromObservable(outputToObservable(this.dismissableLayer.focusOutside));\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n const unregisterTransitionElement = this.rootContext.registerTransitionElement(this.elementRef.nativeElement);\n\n destroyRef.onDestroy(unregisterTransitionElement);\n\n // Register the triggers as dismissable-layer branches so a pointer-down or (async) focus move\n // onto a trigger counts as \"inside\" — otherwise focusing a sibling trigger to switch items,\n // or returning focus to the trigger, would dismiss the menu. See dismissable-layer gotcha.\n effect(() => {\n const triggers = this.rootContext.triggers();\n\n untracked(() =>\n this.layersContext.branches.update((branches) => {\n const next = new Set(branches);\n triggers.forEach((trigger) => next.add(trigger));\n return [...next];\n })\n );\n });\n\n destroyRef.onDestroy(() => {\n const triggers = this.rootContext.triggers();\n this.layersContext.branches.update((branches) => branches.filter((el) => !triggers.includes(el)));\n });\n\n this.dismissableLayer.escapeKeyDown.subscribe((event) => {\n this.dismissReason = 'escape-key';\n this.dismissEvent = event;\n });\n\n this.dismissableLayer.pointerDownOutside.subscribe((event) => {\n this.dismissReason = 'outside-press';\n this.dismissEvent = event;\n });\n\n this.dismissableLayer.focusOutside.subscribe((event) => {\n this.dismissReason = 'focus-out';\n this.dismissEvent = event;\n });\n\n this.dismissableLayer.dismiss.subscribe(() => {\n const reason = this.dismissReason;\n const event = this.dismissEvent;\n this.dismissReason = 'none';\n this.dismissEvent = new Event('navigation-menu.dismiss');\n\n this.rootContext.close(reason, event);\n\n // Return focus to the trigger after an Escape dismissal.\n if (reason === 'escape-key') {\n this.rootContext.trigger()?.focus();\n }\n });\n }\n\n protected onPointerLeave(event: PointerEvent) {\n if (event.pointerType === 'touch') {\n return;\n }\n\n this.rootContext.closeOnHover();\n }\n\n /**\n * Keyboard navigation inside the open panel: Down/Up move between the panel's focusable items in\n * DOM order, Home/End jump to the first/last, and Up from the first item returns focus to the\n * trigger. (Tab keeps working natively; Escape is handled by the dismissable layer.)\n */\n protected onKeydown(event: KeyboardEvent) {\n if (event.key !== ARROW_DOWN && event.key !== ARROW_UP && event.key !== HOME && event.key !== END) {\n return;\n }\n\n // If the key originates from a nested navigation menu rendered inside this popup, let that\n // menu's own roving group / popup handle it — otherwise both react and focus jumps/skips.\n const nestedRoot = (event.target as HTMLElement).closest('[rdxNavigationMenuRoot]');\n\n if (nestedRoot && this.elementRef.nativeElement.contains(nestedRoot)) {\n return;\n }\n\n const candidates = getTabbableCandidates(this.elementRef.nativeElement);\n\n if (candidates.length === 0) {\n return;\n }\n\n event.preventDefault();\n\n const currentIndex = candidates.indexOf(document.activeElement as HTMLElement);\n\n if (event.key === HOME) {\n focusFirst([candidates[0]]);\n return;\n }\n\n if (event.key === END) {\n focusFirst([candidates[candidates.length - 1]]);\n return;\n }\n\n if (event.key === ARROW_DOWN) {\n const next = currentIndex < candidates.length - 1 ? currentIndex + 1 : 0;\n focusFirst([candidates[next]]);\n return;\n }\n\n // ArrowUp: from the first item, return focus to the trigger; otherwise move to the previous.\n if (currentIndex <= 0) {\n this.rootContext.trigger()?.focus();\n } else {\n focusFirst([candidates[currentIndex - 1]]);\n }\n }\n}\n","import { Directive, input } from '@angular/core';\nimport { RdxPortal, RdxPortalContainer } from '@radix-ng/primitives/portal';\nimport { injectNavigationMenuRootContext } from './navigation-menu-root-context';\n\n/**\n * Moves the navigation menu popup to a different part of the DOM (by default `document.body`).\n */\n@Directive({\n selector: '[rdxNavigationMenuPortal]',\n hostDirectives: [\n {\n directive: RdxPortal,\n inputs: ['container']\n }\n ],\n host: {\n '[attr.data-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[attr.data-closed]': 'rootContext.isOpen() ? undefined : \"\"',\n '[attr.data-state]': 'rootContext.isOpen() ? \"open\" : \"closed\"'\n }\n})\nexport class RdxNavigationMenuPortal {\n protected readonly rootContext = injectNavigationMenuRootContext();\n\n /**\n * Optional container to portal the popup into. Defaults to `document.body`.\n */\n readonly container = input<RdxPortalContainer>();\n}\n","import { Directive } from '@angular/core';\nimport { provideRdxPresenceContext, RdxPresenceDirective } from '@radix-ng/primitives/presence';\nimport { injectNavigationMenuRootContext } from './navigation-menu-root-context';\n\n/**\n * Mounts the popup while the menu is open and waits for CSS exit keyframes before unmounting.\n *\n * ```html\n * <ng-template rdxNavigationMenuPortalPresence>…</ng-template>\n * ```\n */\n@Directive({\n selector: 'ng-template[rdxNavigationMenuPortalPresence]',\n hostDirectives: [RdxPresenceDirective],\n providers: [\n provideRdxPresenceContext(() => {\n const context = injectNavigationMenuRootContext();\n\n return { present: context.isOpen };\n })\n ]\n})\nexport class RdxNavigationMenuPortalPresence {}\n","import { booleanAttribute, Directive, effect, ElementRef, inject, input, numberAttribute, signal } from '@angular/core';\nimport { BooleanInput, NumberInput, useGraceArea } from '@radix-ng/primitives/core';\nimport {\n Align,\n provideRdxPopperContentConfig,\n RdxPopperAnchorElement,\n RdxPopperContentWrapper,\n Side\n} from '@radix-ng/primitives/popper';\nimport { injectNavigationMenuRootContext } from './navigation-menu-root-context';\n\n/**\n * Positions the shared popup against the active trigger.\n */\n@Directive({\n selector: '[rdxNavigationMenuPositioner]',\n providers: [\n provideRdxPopperContentConfig({ arrowPadding: 5, collisionPadding: 5, updatePositionStrategy: 'always' })\n ],\n hostDirectives: [\n {\n directive: RdxPopperContentWrapper,\n inputs: [\n 'anchor',\n 'side',\n 'sideOffset',\n 'align',\n 'alignOffset',\n 'arrowPadding',\n 'avoidCollisions',\n 'collisionBoundary',\n 'collisionPadding',\n 'sticky',\n 'hideWhenDetached',\n 'positionStrategy',\n 'updatePositionStrategy'\n ]\n }\n ],\n host: {\n '[attr.data-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[attr.data-closed]': 'rootContext.isOpen() ? undefined : \"\"',\n '[attr.data-anchor-hidden]': 'wrapper.anchorHidden() ? \"\" : undefined',\n '[attr.data-align]': 'wrapper.placedAlign()',\n '[attr.data-side]': 'wrapper.placedSide()',\n '[attr.data-instant]': 'rootContext.instant() ? \"\" : undefined',\n '[style]': `{\n '--anchor-width': 'var(--radix-popper-anchor-width)',\n '--anchor-height': 'var(--radix-popper-anchor-height)',\n '--available-width': 'var(--radix-popper-available-width)',\n '--available-height': 'var(--radix-popper-available-height)',\n '--positioner-width': 'var(--radix-popper-content-wrapper-width)',\n '--positioner-height': 'var(--radix-popper-content-wrapper-height)',\n '--transform-origin': 'var(--radix-popper-transform-origin)'\n }`\n }\n})\nexport class RdxNavigationMenuPositioner {\n protected readonly rootContext = injectNavigationMenuRootContext();\n protected readonly wrapper = inject(RdxPopperContentWrapper);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly triggerEl = signal<HTMLElement | null>(null);\n private readonly containerEl = signal<HTMLElement | null>(this.elementRef.nativeElement);\n private readonly graceArea = useGraceArea(this.triggerEl, this.containerEl);\n\n /**\n * An element to position the popup against. Defaults to the active trigger.\n */\n readonly anchor = input<RdxPopperAnchorElement>();\n\n /**\n * The preferred side of the trigger to render against when open.\n */\n readonly side = input<Side>('bottom');\n\n /**\n * Distance between the trigger and the popup in pixels.\n */\n readonly sideOffset = input<number, NumberInput>(0, { transform: numberAttribute });\n\n /**\n * How to align the popup relative to the specified side.\n */\n readonly align = input<Align>('center');\n\n /**\n * An offset in pixels from the `start` or `end` alignment options.\n */\n readonly alignOffset = input<number, NumberInput>(0, { transform: numberAttribute });\n\n /**\n * Minimum distance to maintain between the arrow and the edges of the popup.\n */\n readonly arrowPadding = input<number, NumberInput>(5, { transform: numberAttribute });\n\n /**\n * Whether to override side and alignment preferences to prevent collisions.\n */\n readonly avoidCollisions = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /**\n * The element used as the collision boundary.\n */\n readonly collisionBoundary = input<ElementRef<HTMLElement> | ElementRef<HTMLElement>[]>();\n\n /**\n * Distance in pixels from the boundary edges where collision detection should occur.\n */\n readonly collisionPadding = input<number | Partial<Record<Side, number>>>(5);\n\n /**\n * The sticky behavior on the alignment axis.\n */\n readonly sticky = input<'partial' | 'always'>('partial');\n\n /**\n * Whether to hide the popup when the trigger becomes fully occluded.\n */\n readonly hideWhenDetached = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * The CSS position strategy used by Floating UI.\n */\n readonly positionStrategy = input<'fixed' | 'absolute'>('fixed');\n\n /**\n * Whether to update position on every animation frame.\n */\n readonly updatePositionStrategy = input<'optimized' | 'always'>('always');\n\n constructor() {\n effect(() => this.triggerEl.set(this.rootContext.trigger() ?? null));\n\n // Keep the menu open while the pointer travels from the trigger to the popup; close once it\n // leaves the grace area between them.\n this.graceArea.onPointerExit(() => this.rootContext.closeOnHover());\n }\n}\n","import {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n inject,\n input,\n model,\n numberAttribute,\n output,\n signal,\n untracked\n} from '@angular/core';\nimport { BooleanInput, NumberInput, useTransitionStatus } from '@radix-ng/primitives/core';\nimport { RdxPopper } from '@radix-ng/primitives/popper';\nimport {\n NavigationMenuDirection,\n NavigationMenuOrientation,\n provideNavigationMenuRootContext,\n RdxNavigationMenuContentEntry,\n RdxNavigationMenuOpenChange,\n RdxNavigationMenuOpenChangeReason,\n RdxNavigationMenuRootContext\n} from './navigation-menu-root-context';\nimport { generateId } from './utils';\n\nconst context = () => contextFor(inject(RdxNavigationMenuRoot));\n\n/**\n * Groups all parts of the navigation menu.\n *\n * Holds the shared open state: `value` identifies the currently open item, and the menu is open\n * whenever `value` is non-null. A single popup (Portal → Positioner → Popup → Viewport) is shared\n * between every item and anchored to the active trigger.\n */\n@Directive({\n selector: '[rdxNavigationMenuRoot]',\n exportAs: 'rdxNavigationMenuRoot',\n providers: [provideNavigationMenuRootContext(context)],\n hostDirectives: [RdxPopper],\n host: {\n role: 'navigation',\n 'aria-label': 'Main',\n '[attr.data-orientation]': 'orientation()',\n '[attr.dir]': 'dir()'\n }\n})\nexport class RdxNavigationMenuRoot {\n private readonly popper = inject(RdxPopper);\n private readonly destroyRef = inject(DestroyRef);\n private readonly parentRoot = inject(RdxNavigationMenuRoot, { optional: true, skipSelf: true });\n\n /** Whether this root is nested inside another navigation menu's content. */\n readonly nested = !!this.parentRoot;\n readonly baseId = `rdx-nav-menu-${generateId()}`;\n\n /**\n * The value of the navigation menu item that should be currently open.\n */\n readonly value = model<string | null>(null);\n\n /**\n * The uncontrolled value of the item that should be initially open.\n */\n readonly defaultValue = input<string | null>(null);\n\n /**\n * The orientation of the navigation menu.\n */\n readonly orientation = input<NavigationMenuOrientation>('horizontal');\n\n /**\n * The reading direction of the navigation menu.\n */\n readonly dir = input<NavigationMenuDirection>('ltr');\n\n /**\n * Whether keyboard navigation loops from the last item back to the first and vice versa.\n */\n readonly loop = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * How long to wait before opening the menu on hover, in milliseconds.\n */\n readonly delay = input<number, NumberInput>(50, { transform: numberAttribute });\n\n /**\n * How long to wait before closing the menu after the pointer leaves, in milliseconds.\n */\n readonly closeDelay = input<number, NumberInput>(50, { transform: numberAttribute });\n\n /**\n * Emits when the open item changes.\n */\n readonly onValueChange = output<string | null>();\n\n /**\n * Emits whenever the menu opens or closes.\n */\n readonly onOpenChange = output<RdxNavigationMenuOpenChange>();\n\n /**\n * Emits after any enter/exit transition completes.\n */\n readonly onOpenChangeComplete = output<boolean>();\n\n private hasAppliedDefaultValue = false;\n private openTimer: ReturnType<typeof setTimeout> | undefined;\n private closeTimer: ReturnType<typeof setTimeout> | undefined;\n private instantFrame: number | undefined;\n\n private readonly transition = useTransitionStatus((open) => {\n this.instant.set(false);\n this.onOpenChangeComplete.emit(open);\n });\n\n readonly instant = signal(false);\n readonly transitionStatus = this.transition.status;\n readonly previousValue = signal<string | null>(null);\n readonly isOpen = computed(() => this.value() !== null);\n readonly trigger = signal<HTMLElement | undefined>(undefined);\n readonly triggers = signal<HTMLElement[]>([]);\n readonly contents = signal<Map<string, RdxNavigationMenuContentEntry>>(new Map());\n\n readonly activeContent = computed(() => {\n const value = this.value() ?? this.previousValue();\n return value ? this.contents().get(value) : undefined;\n });\n\n private readonly registeredTriggers = new Map<string, HTMLElement>();\n private readonly viewportTriggerChange = new Set<(previous: HTMLElement, next: HTMLElement) => void>();\n\n constructor() {\n let previousOpen = this.isOpen();\n\n effect(() => {\n const defaultValue = this.defaultValue();\n\n if (!this.hasAppliedDefaultValue && defaultValue !== null) {\n this.hasAppliedDefaultValue = true;\n this.value.set(defaultValue);\n }\n });\n\n effect(() => {\n const open = this.isOpen();\n\n if (open !== previousOpen) {\n previousOpen = open;\n untracked(() => this.transition.start(open));\n }\n });\n\n // Anchor the shared popper to the active trigger.\n effect(() => this.popper.anchorOverride.set(this.trigger()));\n\n this.destroyRef.onDestroy(() => {\n this.clearHoverTimers();\n\n if (this.instantFrame !== undefined) {\n cancelAnimationFrame(this.instantFrame);\n }\n });\n }\n\n contentId(value: string) {\n return `${this.baseId}-content-${value}`;\n }\n\n triggerId(value: string) {\n return `${this.baseId}-trigger-${value}`;\n }\n\n setValue(\n value: string | null,\n reason: RdxNavigationMenuOpenChangeReason = 'none',\n event = new Event('navigation-menu.value-change')\n ) {\n const previous = this.value();\n\n if (previous === value) {\n return;\n }\n\n const previousTrigger = this.trigger();\n const nextTrigger = value ? this.registeredTriggers.get(value) : undefined;\n const changedTriggerWhileOpen = previous !== null && value !== null && previousTrigger !== nextTrigger;\n\n this.instant.set(changedTriggerWhileOpen || reason === 'trigger-focus');\n\n if (changedTriggerWhileOpen) {\n this.scheduleInstantReset();\n\n if (previousTrigger && nextTrigger) {\n this.viewportTriggerChange.forEach((notify) => notify(previousTrigger, nextTrigger));\n }\n }\n\n if (nextTrigger) {\n this.trigger.set(nextTrigger);\n }\n\n this.previousValue.set(previous);\n this.value.set(value);\n this.onValueChange.emit(value);\n this.onOpenChange.emit({ value, open: value !== null, reason, event });\n }\n\n open(value: string, trigger: HTMLElement, reason: RdxNavigationMenuOpenChangeReason = 'none', event?: Event) {\n this.clearHoverTimers();\n // Register the anchor in case this value hasn't been seen yet, but DON'T set `this.trigger`\n // here: setValue must still read the *previous* trigger to detect a trigger switch and drive\n // the viewport morph. It sets `this.trigger` from the registry after that comparison.\n if (!this.registeredTriggers.has(value)) {\n this.registeredTriggers.set(value, trigger);\n }\n\n this.setValue(value, reason, event);\n }\n\n close(reason: RdxNavigationMenuOpenChangeReason = 'none', event?: Event) {\n this.clearHoverTimers();\n\n if (!this.isOpen()) {\n return;\n }\n\n this.instant.set(reason !== 'none' && reason !== 'trigger-hover' && reason !== 'list-leave');\n this.setValue(null, reason, event);\n }\n\n toggle(value: string, trigger: HTMLElement, event?: Event) {\n this.clearHoverTimers();\n\n if (this.value() === value) {\n this.close('trigger-press', event);\n return;\n }\n\n this.open(value, trigger, 'trigger-press', event);\n }\n\n openOnHover(value: string, trigger: HTMLElement, event: PointerEvent) {\n this.clearHoverTimers();\n\n // Switching between already-open items happens instantly.\n if (this.isOpen()) {\n this.open(value, trigger, 'trigger-hover', event);\n return;\n }\n\n this.openTimer = setTimeout(() => this.open(value, trigger, 'trigger-hover', event), this.delay());\n }\n\n closeOnHover() {\n this.clearOpenTimer();\n this.clearCloseTimer();\n this.closeTimer = setTimeout(\n () => this.close('list-leave', new Event('navigation-menu.hover-close')),\n this.closeDelay()\n );\n }\n\n cancelHoverOpen() {\n this.clearOpenTimer();\n }\n\n cancelHoverClose() {\n this.clearCloseTimer();\n }\n\n registerTrigger(value: string, trigger: HTMLElement) {\n this.registeredTriggers.set(value, trigger);\n this.triggers.update((triggers) => (triggers.includes(trigger) ? triggers : [...triggers, trigger]));\n\n if (this.value() === value) {\n this.trigger.set(trigger);\n }\n\n return () => {\n if (this.registeredTriggers.get(value) === trigger) {\n this.registeredTriggers.delete(value);\n }\n\n this.triggers.update((triggers) => triggers.filter((candidate) => candidate !== trigger));\n\n if (this.destroyRef.destroyed || this.value() !== value) {\n return;\n }\n\n // Defer the close: when an item's `value` changes, the trigger's registration effect\n // unregisters the old value and synchronously re-registers the same element under the new\n // value. Closing immediately would collapse the menu mid-rename, so only close if the\n // element is truly gone (not re-registered under any value) on the next microtask.\n queueMicrotask(() => {\n if (this.destroyRef.destroyed || this.value() !== value) {\n return;\n }\n\n const stillRegistered = [...this.registeredTriggers.values()].includes(trigger);\n\n if (!stillRegistered) {\n this.close();\n }\n });\n };\n }\n\n registerContent(entry: RdxNavigationMenuContentEntry) {\n this.contents.update((contents) => new Map(contents).set(entry.value, entry));\n\n return () => {\n this.contents.update((contents) => {\n if (contents.get(entry.value) !== entry) {\n return contents;\n }\n\n const next = new Map(contents);\n next.delete(entry.value);\n return next;\n });\n };\n }\n\n registerTransitionElement(element: HTMLElement) {\n return this.transition.registerElement(element);\n }\n\n registerViewport(onTriggerChange: (previous: HTMLElement, next: HTMLElement) => void) {\n this.viewportTriggerChange.add(onTriggerChange);\n return () => this.viewportTriggerChange.delete(onTriggerChange);\n }\n\n private scheduleInstantReset() {\n if (this.instantFrame !== undefined) {\n cancelAnimationFrame(this.instantFrame);\n }\n\n this.instantFrame = requestAnimationFrame(() => {\n this.instantFrame = undefined;\n\n if (!this.destroyRef.destroyed && this.isOpen()) {\n this.instant.set(false);\n }\n });\n }\n\n private clearHoverTimers() {\n this.clearOpenTimer();\n this.clearCloseTimer();\n }\n\n private clearOpenTimer() {\n if (this.openTimer !== undefined) {\n clearTimeout(this.openTimer);\n this.openTimer = undefined;\n }\n }\n\n private clearCloseTimer() {\n if (this.closeTimer !== undefined) {\n clearTimeout(this.closeTimer);\n this.closeTimer = undefined;\n }\n }\n}\n\nfunction contextFor(root: RdxNavigationMenuRoot): RdxNavigationMenuRootContext {\n return {\n nested: root.nested,\n baseId: root.baseId,\n orientation: root.orientation,\n dir: root.dir,\n loop: root.loop,\n value: root.value,\n previousValue: root.previousValue.asReadonly(),\n isOpen: root.isOpen,\n instant: root.instant.asReadonly(),\n transitionStatus: root.transitionStatus,\n trigger: root.trigger.asReadonly(),\n triggers: root.triggers.asReadonly(),\n activeContent: root.activeContent,\n contentId: (value) => root.contentId(value),\n triggerId: (value) => root.triggerId(value),\n setValue: (value, reason, event) => root.setValue(value, reason, event),\n open: (value, trigger, reason, event) => root.open(value, trigger, reason, event),\n close: (reason, event) => root.close(reason, event),\n toggle: (value, trigger, event) => root.toggle(value, trigger, event),\n openOnHover: (value, trigger, event) => root.openOnHover(value, trigger, event),\n closeOnHover: () => root.closeOnHover(),\n cancelHoverOpen: () => root.cancelHoverOpen(),\n cancelHoverClose: () => root.cancelHoverClose(),\n registerTrigger: (value, trigger) => root.registerTrigger(value, trigger),\n registerContent: (entry) => root.registerContent(entry),\n registerTransitionElement: (element) => root.registerTransitionElement(element),\n registerViewport: (onTriggerChange) => root.registerViewport(onTriggerChange)\n };\n}\n","import { booleanAttribute, computed, Directive, effect, ElementRef, inject, input, untracked } from '@angular/core';\nimport { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ENTER, injectDocument, SPACE } from '@radix-ng/primitives/core';\nimport { RdxRovingFocusItemDirective } from '@radix-ng/primitives/roving-focus';\nimport { RdxNavigationMenuItem } from './navigation-menu-item';\nimport { injectNavigationMenuRootContext } from './navigation-menu-root-context';\nimport { focusFirst, getTabbableCandidates } from './utils';\n\n/**\n * A button that opens its item's content in the shared popup.\n */\n@Directive({\n selector: 'button[rdxNavigationMenuTrigger]',\n hostDirectives: [RdxRovingFocusItemDirective],\n host: {\n type: 'button',\n '[id]': 'item.triggerId()',\n '[attr.aria-controls]': 'item.contentId()',\n '[attr.aria-expanded]': 'open()',\n '[attr.aria-haspopup]': '\"menu\"',\n '[attr.data-state]': 'open() ? \"open\" : \"closed\"',\n '[attr.data-popup-open]': 'open() ? \"\" : undefined',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined',\n '[attr.disabled]': 'disabled() ? \"\" : undefined',\n '(click)': 'onClick($event)',\n '(pointerenter)': 'onPointerEnter($event)',\n '(pointerleave)': 'onPointerLeave($event)',\n '(keydown)': 'onKeydown($event)',\n '(focus)': 'onFocus()'\n }\n})\nexport class RdxNavigationMenuTrigger {\n protected readonly item = inject(RdxNavigationMenuItem);\n private readonly rootContext = injectNavigationMenuRootContext();\n private readonly rovingFocusItem = inject(RdxRovingFocusItemDirective, { self: true });\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly document = injectDocument();\n\n /**\n * Whether the trigger should ignore user interaction.\n */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n /**\n * Whether the content should also open when the trigger is hovered.\n */\n readonly openOnHover = input(true, { transform: booleanAttribute });\n\n protected readonly open = computed(() => this.item.isOpen());\n\n constructor() {\n // Host element is available in the constructor; the trigger ref does not depend on inputs.\n this.item.triggerRef.set(this.elementRef.nativeElement);\n\n effect(() => this.rovingFocusItem.setFocusable(!this.disabled()));\n\n // `value` is an input on the item, so read it in an effect (kept in sync if it ever changes).\n effect(() => this.rovingFocusItem.setTabStopId(this.item.value()));\n\n effect((onCleanup) => {\n const value = this.item.value();\n const element = this.elementRef.nativeElement;\n // Register untracked: registerTrigger reads root state internally, and we must not make\n // this effect re-run (and tear down the registration) when the open value changes.\n onCleanup(untracked(() => this.rootContext.registerTrigger(value, element)));\n });\n }\n\n protected onClick(event: MouseEvent) {\n if (this.disabled()) {\n return;\n }\n\n this.rootContext.toggle(this.item.value(), this.elementRef.nativeElement, event);\n }\n\n protected onPointerEnter(event: PointerEvent) {\n if (this.disabled() || event.pointerType === 'touch' || !this.openOnHover()) {\n return;\n }\n\n this.rootContext.cancelHoverClose();\n this.rootContext.openOnHover(this.item.value(), this.elementRef.nativeElement, event);\n }\n\n protected onPointerLeave(event: PointerEvent) {\n if (event.pointerType === 'touch' || !this.openOnHover()) {\n return;\n }\n\n this.rootContext.cancelHoverOpen();\n }\n\n /**\n * Open-follows-focus: while the menu is already open, moving keyboard focus (arrow keys via\n * roving) to another trigger switches the shared popup to that item — matching Base UI, so the\n * open menu visibly responds to arrow-key navigation. Focus never *opens* a closed menu.\n */\n protected onFocus() {\n if (this.disabled() || !this.rootContext.isOpen() || this.open()) {\n return;\n }\n\n this.rootContext.open(this.item.value(), this.elementRef.nativeElement, 'trigger-focus');\n }\n\n protected onKeydown(event: KeyboardEvent) {\n if (this.disabled()) {\n return;\n }\n\n const entryKey = this.entryKey();\n\n if (event.key === ENTER || event.key === SPACE) {\n event.preventDefault();\n this.rootContext.toggle(this.item.value(), this.elementRef.nativeElement, event);\n\n if (this.open()) {\n this.focusContent();\n }\n\n return;\n }\n\n if (event.key === entryKey) {\n event.preventDefault();\n\n if (!this.open()) {\n this.rootContext.open(this.item.value(), this.elementRef.nativeElement, 'trigger-press', event);\n }\n\n this.focusContent();\n }\n }\n\n /** The key that moves focus from the trigger into the open content, based on orientation/dir. */\n private entryKey(): string {\n if (this.rootContext.orientation() === 'horizontal') {\n return ARROW_DOWN;\n }\n\n return this.rootContext.dir() === 'rtl' ? ARROW_LEFT : ARROW_RIGHT;\n }\n\n private focusContent() {\n // Content is rendered into the shared popup, which mounts through Presence + Portal and is\n // then positioned asynchronously by floating-ui. Until it is positioned the popper keeps it\n // `visibility: hidden`, so its tabbables aren't focusable yet. Poll across animation frames\n // until focus actually lands inside the panel (don't give up just because the element exists).\n const contentId = this.item.contentId();\n let attempts = 0;\n\n const tryFocus = () => {\n const content = this.document.getElementById(contentId);\n const candidates = content ? getTabbableCandidates(content) : [];\n\n if (candidates.length && focusFirst(candidates)) {\n return;\n }\n\n if (attempts++ < 15) {\n requestAnimationFrame(tryFocus);\n } else if (content) {\n // Fallback: no tabbable content — focus the panel container itself.\n content.focus();\n }\n };\n\n requestAnimationFrame(tryFocus);\n }\n}\n","import {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n EmbeddedViewRef,\n inject,\n input,\n Renderer2,\n signal,\n untracked,\n ViewContainerRef\n} from '@angular/core';\nimport { getMaxTransitionDuration } from '@radix-ng/primitives/core';\nimport { injectNavigationMenuRootContext, RdxNavigationMenuContentEntry } from './navigation-menu-root-context';\nimport { getActivationDirection, removeIds } from './utils';\n\ninterface RenderedContent {\n value: string;\n view: EmbeddedViewRef<unknown>;\n /** The `data-current` wrapper appended to the viewport (stretches to the viewport box). */\n element: HTMLElement;\n /** The content's own root element, measured for the size morph (sizes to its content). */\n measureTarget: HTMLElement;\n}\n\n/**\n * Clips and animates the active item's content. A single viewport is shared between all items; when\n * the active item changes the outgoing content is retained as `data-previous` until its CSS\n * animation/transition completes, and the new content is marked `data-current`.\n */\n@Directive({\n selector: '[rdxNavigationMenuViewport]',\n host: {\n '[attr.data-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[attr.data-closed]': 'rootContext.isOpen() ? undefined : \"\"',\n '[attr.data-state]': 'rootContext.isOpen() ? \"open\" : \"closed\"',\n '[attr.data-orientation]': 'rootContext.orientation()',\n '[attr.data-activation-direction]': 'activationDirection()',\n '[attr.data-transitioning]': 'transitioning() ? \"\" : undefined',\n '[style.--popup-width.px]': 'size()?.width',\n '[style.--popup-height.px]': 'size()?.height'\n }\n})\nexport class RdxNavigationMenuViewport {\n protected readonly rootContext = injectNavigationMenuRootContext();\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly renderer = inject(Renderer2);\n\n /**\n * Keep the viewport mounted even when the menu is closed.\n */\n readonly forceMount = input(false, { transform: booleanAttribute });\n\n protected readonly activationDirection = signal<string | undefined>(undefined);\n protected readonly transitioning = signal(false);\n protected readonly size = signal<{ width: number; height: number } | null>(null);\n\n private current: RenderedContent | null = null;\n private previousElement: HTMLElement | null = null;\n private pendingDirection: string | undefined;\n private cleanupTimer: ReturnType<typeof setTimeout> | undefined;\n private readonly resizeObserver =\n typeof ResizeObserver !== 'undefined' ? new ResizeObserver(() => this.measure()) : null;\n\n private readonly activeContent = computed(() => this.rootContext.activeContent());\n\n constructor() {\n const unregister = this.rootContext.registerViewport((previous, next) => {\n this.pendingDirection = getActivationDirection(previous, next);\n });\n\n effect(() => {\n const entry = this.activeContent();\n untracked(() => this.render(entry));\n });\n\n inject(DestroyRef).onDestroy(() => {\n unregister();\n this.resizeObserver?.disconnect();\n this.clearCleanupTimer();\n this.removePrevious();\n this.current?.view.destroy();\n });\n }\n\n private render(entry: RdxNavigationMenuContentEntry | undefined) {\n if (!entry) {\n return;\n }\n\n if (this.current?.value === entry.value) {\n return;\n }\n\n // Snapshot the outgoing content so it can animate out as `data-previous`.\n if (this.current) {\n this.resizeObserver?.unobserve(this.current.measureTarget);\n this.startLeave(this.current.element);\n this.current.view.destroy();\n }\n\n const view = this.viewContainerRef.createEmbeddedView(entry.templateRef);\n view.detectChanges();\n\n const element = this.renderer.createElement('div') as HTMLElement;\n this.renderer.setAttribute(element, 'data-current', '');\n this.renderer.setAttribute(element, 'id', entry.contentId);\n this.renderer.setAttribute(element, 'aria-labelledby', entry.triggerId);\n // Make the panel a valid focus target for keyboard entry when it has no tabbable content.\n this.renderer.setAttribute(element, 'tabindex', '-1');\n view.rootNodes.forEach((node: Node) => this.renderer.appendChild(element, node));\n this.renderer.appendChild(this.elementRef.nativeElement, element);\n\n // Measure the content's own root element, not the wrapper: the wrapper is `display: block`\n // and stretches to the viewport, so measuring it would feed the viewport its own width back\n // and the popup would balloon to fill the page. The content root sizes to its content.\n const measureTarget = (element.firstElementChild as HTMLElement | null) ?? element;\n\n this.current = { value: entry.value, view, element, measureTarget };\n this.resizeObserver?.observe(measureTarget);\n this.measure();\n }\n\n private startLeave(element: HTMLElement) {\n this.removePrevious();\n\n const previous = element.cloneNode(true) as HTMLElement;\n previous.removeAttribute('data-current');\n previous.setAttribute('data-previous', '');\n previous.setAttribute('aria-hidden', 'true');\n previous.setAttribute('inert', '');\n removeIds(previous);\n\n this.activationDirection.set(this.pendingDirection);\n this.pendingDirection = undefined;\n this.previousElement = previous;\n this.transitioning.set(true);\n this.renderer.appendChild(this.elementRef.nativeElement, previous);\n\n const onEnd = () => this.removePrevious();\n previous.addEventListener('animationend', onEnd, { once: true });\n previous.addEventListener('transitionend', onEnd, { once: true });\n\n const duration = getMaxTransitionDuration(previous);\n this.cleanupTimer = setTimeout(onEnd, duration > 0 ? duration + 50 : 0);\n }\n\n private removePrevious() {\n this.clearCleanupTimer();\n this.previousElement?.remove();\n this.previousElement = null;\n this.transitioning.set(false);\n }\n\n private clearCleanupTimer() {\n if (this.cleanupTimer !== undefined) {\n clearTimeout(this.cleanupTimer);\n this.cleanupTimer = undefined;\n }\n }\n\n private measure() {\n const target = this.current?.measureTarget;\n\n if (!target || !target.isConnected) {\n return;\n }\n\n const width = Math.ceil(target.offsetWidth);\n const height = Math.ceil(target.offsetHeight);\n\n if (width === 0 && height === 0) {\n return;\n }\n\n const size = this.size();\n\n if (!size || size.width !== width || size.height !== height) {\n this.size.set({ width, height });\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RdxNavigationMenuArrow } from './src/navigation-menu-arrow';\nimport { RdxNavigationMenuBackdrop } from './src/navigation-menu-backdrop';\nimport { RdxNavigationMenuContent } from './src/navigation-menu-content';\nimport { RdxNavigationMenuIcon } from './src/navigation-menu-icon';\nimport { RdxNavigationMenuItem } from './src/navigation-menu-item';\nimport { RdxNavigationMenuLink } from './src/navigation-menu-link';\nimport { RdxNavigationMenuList } from './src/navigation-menu-list';\nimport { RdxNavigationMenuPopup } from './src/navigation-menu-popup';\nimport { RdxNavigationMenuPortal } from './src/navigation-menu-portal';\nimport { RdxNavigationMenuPortalPresence } from './src/navigation-menu-portal-presence';\nimport { RdxNavigationMenuPositioner } from './src/navigation-menu-positioner';\nimport { RdxNavigationMenuRoot } from './src/navigation-menu-root';\nimport { RdxNavigationMenuTrigger } from './src/navigation-menu-trigger';\nimport { RdxNavigationMenuViewport } from './src/navigation-menu-viewport';\n\nexport * from './src/navigation-menu-arrow';\nexport * from './src/navigation-menu-backdrop';\nexport * from './src/navigation-menu-content';\nexport * from './src/navigation-menu-icon';\nexport * from './src/navigation-menu-item';\nexport * from './src/navigation-menu-link';\nexport * from './src/navigation-menu-list';\nexport * from './src/navigation-menu-popup';\nexport * from './src/navigation-menu-portal';\nexport * from './src/navigation-menu-portal-presence';\nexport * from './src/navigation-menu-positioner';\nexport * from './src/navigation-menu-root';\nexport * from './src/navigation-menu-root-context';\nexport * from './src/navigation-menu-trigger';\nexport * from './src/navigation-menu-viewport';\n\nexport const navigationMenuImports = [\n RdxNavigationMenuRoot,\n RdxNavigationMenuList,\n RdxNavigationMenuItem,\n RdxNavigationMenuTrigger,\n RdxNavigationMenuIcon,\n RdxNavigationMenuContent,\n RdxNavigationMenuLink,\n RdxNavigationMenuPortal,\n RdxNavigationMenuPortalPresence,\n RdxNavigationMenuBackdrop,\n RdxNavigationMenuPositioner,\n RdxNavigationMenuPopup,\n RdxNavigationMenuArrow,\n RdxNavigationMenuViewport\n];\n\n@NgModule({\n imports: [...navigationMenuImports],\n exports: [...navigationMenuImports]\n})\nexport class RdxNavigationMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"radix-ng-primitives-navigation-menu.mjs","sources":["../../../packages/primitives/navigation-menu/src/navigation-menu-root-context.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-arrow.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-backdrop.ts","../../../packages/primitives/navigation-menu/src/utils.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-item.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-content.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-icon.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-link.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-list.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-popup.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-portal.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-positioner.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-root.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-trigger.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-viewport.ts","../../../packages/primitives/navigation-menu/index.ts","../../../packages/primitives/navigation-menu/radix-ng-primitives-navigation-menu.ts"],"sourcesContent":["import { Signal, TemplateRef } from '@angular/core';\nimport { createContext, RdxTransitionStatus } from '@radix-ng/primitives/core';\n\nexport type NavigationMenuOrientation = 'horizontal' | 'vertical';\nexport type NavigationMenuDirection = 'ltr' | 'rtl';\n\nexport type RdxNavigationMenuOpenChangeReason =\n | 'trigger-hover'\n | 'trigger-focus'\n | 'trigger-press'\n | 'outside-press'\n | 'focus-out'\n | 'escape-key'\n | 'link-select'\n | 'list-leave'\n | 'none';\n\nexport interface RdxNavigationMenuOpenChange {\n value: string | null;\n open: boolean;\n reason: RdxNavigationMenuOpenChangeReason;\n event: Event;\n}\n\n/**\n * A registered item content template, rendered into the shared viewport when its item is active.\n */\nexport interface RdxNavigationMenuContentEntry {\n value: string;\n contentId: string;\n triggerId: string;\n templateRef: TemplateRef<unknown>;\n forceMount: Signal<boolean>;\n}\n\nexport interface RdxNavigationMenuRootContext {\n /** Whether this menu is nested inside another navigation menu's content. */\n readonly nested: boolean;\n readonly baseId: string;\n readonly orientation: Signal<NavigationMenuOrientation>;\n readonly dir: Signal<NavigationMenuDirection>;\n readonly loop: Signal<boolean>;\n\n /** Value of the currently open item, or `null` when closed. */\n readonly value: Signal<string | null>;\n /** Value of the previously open item (used for slide-direction morphing). */\n readonly previousValue: Signal<string | null>;\n readonly isOpen: Signal<boolean>;\n readonly instant: Signal<boolean>;\n readonly transitionStatus: Signal<RdxTransitionStatus>;\n\n /** The active trigger element the popup is anchored to. */\n readonly trigger: Signal<HTMLElement | undefined>;\n readonly triggers: Signal<HTMLElement[]>;\n readonly activeContent: Signal<RdxNavigationMenuContentEntry | undefined>;\n\n contentId(value: string): string;\n triggerId(value: string): string;\n\n setValue(value: string | null, reason?: RdxNavigationMenuOpenChangeReason, event?: Event): void;\n open(value: string, trigger: HTMLElement, reason?: RdxNavigationMenuOpenChangeReason, event?: Event): void;\n close(reason?: RdxNavigationMenuOpenChangeReason, event?: Event): void;\n toggle(value: string, trigger: HTMLElement, event?: Event): void;\n openOnHover(value: string, trigger: HTMLElement, event: PointerEvent): void;\n closeOnHover(): void;\n cancelHoverOpen(): void;\n cancelHoverClose(): void;\n\n registerTrigger(value: string, trigger: HTMLElement): () => void;\n registerContent(entry: RdxNavigationMenuContentEntry): () => void;\n registerTransitionElement(element: HTMLElement): () => void;\n registerViewport(onTriggerChange: (previous: HTMLElement, next: HTMLElement) => void): () => void;\n}\n\nexport const [injectNavigationMenuRootContext, provideNavigationMenuRootContext] =\n createContext<RdxNavigationMenuRootContext>('RdxNavigationMenuRootContext', 'components/navigation-menu');\n","import { computed, Directive, inject } from '@angular/core';\nimport { RdxPopperArrow, RdxPopperContentWrapper } from '@radix-ng/primitives/popper';\nimport { injectNavigationMenuRootContext } from './navigation-menu-root-context';\n\n/**\n * An optional arrow element pointing toward the active trigger.\n */\n@Directive({\n selector: '[rdxNavigationMenuArrow]',\n hostDirectives: [RdxPopperArrow],\n host: {\n '[attr.data-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[attr.data-closed]': 'rootContext.isOpen() ? undefined : \"\"',\n '[attr.data-side]': 'side()',\n '[attr.data-align]': 'align()',\n '[attr.data-uncentered]': 'uncentered() ? \"\" : undefined'\n }\n})\nexport class RdxNavigationMenuArrow {\n protected readonly rootContext = injectNavigationMenuRootContext();\n private readonly wrapper = inject(RdxPopperContentWrapper, { optional: true });\n\n protected readonly side = computed(() => this.wrapper?.placedSide());\n protected readonly align = computed(() => this.wrapper?.placedAlign());\n protected readonly uncentered = computed(() => this.wrapper?.arrowUncentered() ?? false);\n}\n","import { Directive } from '@angular/core';\nimport { injectNavigationMenuRootContext } from './navigation-menu-root-context';\n\n/**\n * An optional backdrop rendered behind the popup.\n */\n@Directive({\n selector: '[rdxNavigationMenuBackdrop]',\n host: {\n '[attr.data-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[attr.data-closed]': 'rootContext.isOpen() ? undefined : \"\"',\n '[attr.data-starting-style]': 'rootContext.transitionStatus() === \"starting\" ? \"\" : undefined',\n '[attr.data-ending-style]': 'rootContext.transitionStatus() === \"ending\" ? \"\" : undefined',\n '[attr.data-instant]': 'rootContext.instant() ? \"\" : undefined',\n '[attr.data-state]': 'rootContext.isOpen() ? \"open\" : \"closed\"'\n }\n})\nexport class RdxNavigationMenuBackdrop {\n protected readonly rootContext = injectNavigationMenuRootContext();\n}\n","/**\n * Generate a short unique id segment.\n */\nexport function generateId(): string {\n return Math.random().toString(36).substring(2, 11);\n}\n\n/**\n * Collect the tabbable elements inside a container, in DOM order, skipping hidden ones.\n */\nexport function getTabbableCandidates(container: HTMLElement): HTMLElement[] {\n if (!container || !container.querySelectorAll) {\n return [];\n }\n\n const TABBABLE_SELECTOR =\n 'a[href], button:not([disabled]), input:not([disabled]):not([type=\"hidden\"]), ' +\n 'select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"]), ' +\n '[contenteditable=\"true\"]:not([tabindex=\"-1\"])';\n\n const elements = Array.from(container.querySelectorAll(TABBABLE_SELECTOR)) as HTMLElement[];\n\n return elements.filter((element) => {\n if (element.tabIndex < 0) {\n return false;\n }\n\n if (element.hasAttribute('disabled')) {\n return false;\n }\n\n if (element.getAttribute('aria-hidden') === 'true') {\n return false;\n }\n\n let current: HTMLElement | null = element;\n\n while (current) {\n const style = window.getComputedStyle(current);\n\n if (style.display === 'none' || style.visibility === 'hidden') {\n return false;\n }\n\n current = current.parentElement;\n }\n\n return true;\n });\n}\n\n/**\n * Focus the first focusable candidate, returning whether focus moved.\n */\nexport function focusFirst(candidates: HTMLElement[], preventScroll = false): boolean {\n const previouslyFocused = document.activeElement;\n\n return candidates.some((candidate) => {\n if (candidate === previouslyFocused) {\n return true;\n }\n\n candidate.focus({ preventScroll });\n return document.activeElement !== previouslyFocused;\n });\n}\n\n/**\n * Derive a slide direction (e.g. `\"left\"`, `\"right up\"`) from the relative position of two triggers.\n * Used by the viewport to animate content as the active item changes.\n */\nexport function getActivationDirection(previous: HTMLElement, next: HTMLElement): string | undefined {\n const previousCenter = getCenter(previous.getBoundingClientRect());\n const nextCenter = getCenter(next.getBoundingClientRect());\n const directions: string[] = [];\n\n if (nextCenter.x < previousCenter.x) {\n directions.push('left');\n } else if (nextCenter.x > previousCenter.x) {\n directions.push('right');\n }\n\n if (nextCenter.y < previousCenter.y) {\n directions.push('up');\n } else if (nextCenter.y > previousCenter.y) {\n directions.push('down');\n }\n\n return directions.join(' ') || undefined;\n}\n\n/**\n * Remove `id` from an element and all its descendants (used when cloning content for an exit\n * animation, to avoid duplicate ids in the document).\n */\nexport function removeIds(element: HTMLElement): void {\n element.removeAttribute('id');\n element.querySelectorAll('[id]').forEach((child) => child.removeAttribute('id'));\n}\n\nfunction getCenter(rect: DOMRect) {\n return { x: rect.left + rect.width / 2, y: rect.top + rect.height / 2 };\n}\n","import { computed, Directive, input, signal } from '@angular/core';\nimport { injectNavigationMenuRootContext } from './navigation-menu-root-context';\nimport { generateId } from './utils';\n\n/**\n * A single navigation menu item. Holds a trigger + content pair, or a standalone link.\n */\n@Directive({\n selector: '[rdxNavigationMenuItem]',\n exportAs: 'rdxNavigationMenuItem'\n})\nexport class RdxNavigationMenuItem {\n private readonly rootContext = injectNavigationMenuRootContext();\n\n /**\n * A unique value that identifies the item. Falls back to a generated id.\n */\n readonly value = input<string, string | undefined>('', {\n transform: (value) => value || `item-${generateId()}`\n });\n\n /** The trigger element, set by the trigger directive. */\n readonly triggerRef = signal<HTMLElement | null>(null);\n\n /** Whether this item is the currently open one. */\n readonly isOpen = computed(() => this.rootContext.value() === this.value());\n\n readonly triggerId = computed(() => this.rootContext.triggerId(this.value()));\n readonly contentId = computed(() => this.rootContext.contentId(this.value()));\n}\n","import { booleanAttribute, Directive, effect, inject, input, TemplateRef, untracked } from '@angular/core';\nimport { RdxNavigationMenuItem } from './navigation-menu-item';\nimport { injectNavigationMenuRootContext } from './navigation-menu-root-context';\n\n/**\n * The content shown when its item is open. Used as a structural directive; its template is rendered\n * into the shared {@link RdxNavigationMenuViewport}.\n *\n * ```html\n * <ng-container *rdxNavigationMenuContent>…</ng-container>\n * ```\n */\n@Directive({\n selector: '[rdxNavigationMenuContent]'\n})\nexport class RdxNavigationMenuContent {\n private readonly rootContext = injectNavigationMenuRootContext();\n private readonly item = inject(RdxNavigationMenuItem);\n private readonly templateRef = inject<TemplateRef<unknown>>(TemplateRef);\n\n /**\n * Required by the structural directive syntax; the value is unused.\n */\n readonly rdxNavigationMenuContent = input(false, { transform: booleanAttribute });\n\n /**\n * Keep the content mounted in the viewport even when its item is closed.\n */\n readonly forceMount = input(false, { transform: booleanAttribute });\n\n constructor() {\n effect((onCleanup) => {\n const value = this.item.value();\n\n // Register untracked so reading/writing the root's `contents` map inside registerContent\n // doesn't make this effect re-run when other items register.\n const unregister = untracked(() =>\n this.rootContext.registerContent({\n value,\n contentId: this.rootContext.contentId(value),\n triggerId: this.rootContext.triggerId(value),\n templateRef: this.templateRef,\n forceMount: this.forceMount\n })\n );\n\n onCleanup(unregister);\n });\n }\n}\n","import { computed, Directive, inject } from '@angular/core';\nimport { RdxNavigationMenuItem } from './navigation-menu-item';\n\n/**\n * A visual indicator (e.g. a caret) rendered inside a trigger. Exposes the open state so the icon\n * can rotate when its item opens.\n */\n@Directive({\n selector: '[rdxNavigationMenuIcon]',\n host: {\n 'aria-hidden': 'true',\n '[attr.data-state]': 'open() ? \"open\" : \"closed\"'\n }\n})\nexport class RdxNavigationMenuIcon {\n private readonly item = inject(RdxNavigationMenuItem);\n\n protected readonly open = computed(() => this.item.isOpen());\n}\n","import { booleanAttribute, Directive, ElementRef, inject, input, output } from '@angular/core';\nimport { ENTER, SPACE } from '@radix-ng/primitives/core';\nimport { injectNavigationMenuRootContext } from './navigation-menu-root-context';\n\n/**\n * A navigation link. Closes the menu on selection unless prevented.\n *\n * Used both as a top-level menubar item and inside content. It is a plain tabbable anchor (not part\n * of the menubar's arrow-key roving), matching Base UI.\n */\n@Directive({\n selector: '[rdxNavigationMenuLink]',\n host: {\n '[attr.data-active]': 'active() ? \"\" : undefined',\n '[attr.aria-current]': 'active() ? \"page\" : undefined',\n '(click)': 'onClick($event)',\n '(keydown)': 'onKeydown($event)'\n }\n})\nexport class RdxNavigationMenuLink {\n private readonly rootContext = injectNavigationMenuRootContext();\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Whether the link represents the current page.\n */\n readonly active = input(false, { transform: booleanAttribute });\n\n /**\n * Whether selecting the link should close the menu.\n */\n readonly closeOnClick = input(true, { transform: booleanAttribute });\n\n /**\n * Emits when the link is selected. Call `preventDefault()` to keep the menu open.\n */\n readonly onSelect = output<Event>();\n\n protected onClick(event: Event) {\n this.onSelect.emit(event);\n\n if (this.closeOnClick() && !event.defaultPrevented) {\n this.rootContext.close('link-select', event);\n }\n }\n\n protected onKeydown(event: KeyboardEvent) {\n if (event.key === ENTER || event.key === SPACE) {\n event.preventDefault();\n this.elementRef.nativeElement.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true }));\n }\n }\n}\n","import { Directive, effect, inject } from '@angular/core';\nimport { RdxRovingFocusGroupDirective } from '@radix-ng/primitives/roving-focus';\nimport { injectNavigationMenuRootContext } from './navigation-menu-root-context';\n\n/**\n * Contains the navigation menu items. Renders as a menubar with roving keyboard focus.\n */\n@Directive({\n selector: '[rdxNavigationMenuList]',\n hostDirectives: [RdxRovingFocusGroupDirective],\n host: {\n role: 'menubar',\n '[attr.data-orientation]': 'rootContext.orientation()',\n '(pointerleave)': 'onPointerLeave($event)'\n }\n})\nexport class RdxNavigationMenuList {\n protected readonly rootContext = injectNavigationMenuRootContext();\n private readonly rovingFocusGroup = inject(RdxRovingFocusGroupDirective, { self: true });\n\n constructor() {\n effect(() => {\n this.rovingFocusGroup.setOrientation(this.rootContext.orientation());\n this.rovingFocusGroup.setDir(this.rootContext.dir());\n this.rovingFocusGroup.setLoop(this.rootContext.loop());\n });\n }\n\n protected onPointerLeave(event: PointerEvent) {\n if (event.pointerType === 'touch') {\n return;\n }\n\n this.rootContext.closeOnHover();\n }\n}\n","import { computed, DestroyRef, Directive, effect, ElementRef, inject, untracked } from '@angular/core';\nimport { outputFromObservable, outputToObservable } from '@angular/core/rxjs-interop';\nimport { ARROW_DOWN, ARROW_UP, END, HOME } from '@radix-ng/primitives/core';\nimport { RdxDismissableLayer, RdxDismissableLayersContextToken } from '@radix-ng/primitives/dismissable-layer';\nimport { RdxPopperContent, RdxPopperContentWrapper } from '@radix-ng/primitives/popper';\nimport { injectNavigationMenuRootContext, RdxNavigationMenuOpenChangeReason } from './navigation-menu-root-context';\nimport { focusFirst, getTabbableCandidates } from './utils';\n\n/**\n * The shared container for the active item's content.\n */\n@Directive({\n selector: '[rdxNavigationMenuPopup]',\n hostDirectives: [RdxPopperContent, RdxDismissableLayer],\n host: {\n role: 'menu',\n tabindex: '-1',\n '[attr.aria-labelledby]': 'labelledBy()',\n '[attr.data-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[attr.data-closed]': 'rootContext.isOpen() ? undefined : \"\"',\n '[attr.data-starting-style]': 'rootContext.transitionStatus() === \"starting\" ? \"\" : undefined',\n '[attr.data-ending-style]': 'rootContext.transitionStatus() === \"ending\" ? \"\" : undefined',\n '[attr.data-instant]': 'rootContext.instant() ? \"\" : undefined',\n '[attr.data-state]': 'rootContext.isOpen() ? \"open\" : \"closed\"',\n '[attr.data-side]': 'side()',\n '[attr.data-align]': 'align()',\n '(pointerenter)': 'rootContext.cancelHoverClose()',\n '(pointerleave)': 'onPointerLeave($event)',\n '(keydown)': 'onKeydown($event)'\n }\n})\nexport class RdxNavigationMenuPopup {\n protected readonly rootContext = injectNavigationMenuRootContext();\n private readonly dismissableLayer = inject(RdxDismissableLayer);\n private readonly wrapper = inject(RdxPopperContentWrapper, { optional: true });\n private readonly layersContext = inject(RdxDismissableLayersContextToken);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n protected readonly side = computed(() => this.wrapper?.placedSide());\n protected readonly align = computed(() => this.wrapper?.placedAlign());\n\n /** Names the menu after the active trigger so the `role=\"menu\"` element has an accessible name. */\n protected readonly labelledBy = computed(() => {\n const value = this.rootContext.value() ?? this.rootContext.previousValue();\n return value ? this.rootContext.triggerId(value) : undefined;\n });\n\n private dismissReason: RdxNavigationMenuOpenChangeReason = 'none';\n private dismissEvent: Event = new Event('navigation-menu.dismiss');\n\n /**\n * Event handler called when the escape key is down. Can be prevented.\n */\n readonly escapeKeyDown = outputFromObservable(outputToObservable(this.dismissableLayer.escapeKeyDown));\n\n /**\n * Event handler called when a pointerdown event happens outside the popup. Can be prevented.\n */\n readonly pointerDownOutside = outputFromObservable(outputToObservable(this.dismissableLayer.pointerDownOutside));\n\n /**\n * Event handler called when focus moves outside the popup. Can be prevented.\n */\n readonly focusOutside = outputFromObservable(outputToObservable(this.dismissableLayer.focusOutside));\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n const unregisterTransitionElement = this.rootContext.registerTransitionElement(this.elementRef.nativeElement);\n\n destroyRef.onDestroy(unregisterTransitionElement);\n\n // Register the triggers as dismissable-layer branches so a pointer-down or (async) focus move\n // onto a trigger counts as \"inside\" — otherwise focusing a sibling trigger to switch items,\n // or returning focus to the trigger, would dismiss the menu. See dismissable-layer gotcha.\n effect(() => {\n const triggers = this.rootContext.triggers();\n\n untracked(() =>\n this.layersContext.branches.update((branches) => {\n const next = new Set(branches);\n triggers.forEach((trigger) => next.add(trigger));\n return [...next];\n })\n );\n });\n\n destroyRef.onDestroy(() => {\n const triggers = this.rootContext.triggers();\n this.layersContext.branches.update((branches) => branches.filter((el) => !triggers.includes(el)));\n });\n\n this.dismissableLayer.escapeKeyDown.subscribe((event) => {\n this.dismissReason = 'escape-key';\n this.dismissEvent = event;\n });\n\n this.dismissableLayer.pointerDownOutside.subscribe((event) => {\n this.dismissReason = 'outside-press';\n this.dismissEvent = event;\n });\n\n this.dismissableLayer.focusOutside.subscribe((event) => {\n this.dismissReason = 'focus-out';\n this.dismissEvent = event;\n });\n\n this.dismissableLayer.dismiss.subscribe(() => {\n const reason = this.dismissReason;\n const event = this.dismissEvent;\n this.dismissReason = 'none';\n this.dismissEvent = new Event('navigation-menu.dismiss');\n\n this.rootContext.close(reason, event);\n\n // Return focus to the trigger after an Escape dismissal.\n if (reason === 'escape-key') {\n this.rootContext.trigger()?.focus();\n }\n });\n }\n\n protected onPointerLeave(event: PointerEvent) {\n if (event.pointerType === 'touch') {\n return;\n }\n\n this.rootContext.closeOnHover();\n }\n\n /**\n * Keyboard navigation inside the open panel: Down/Up move between the panel's focusable items in\n * DOM order, Home/End jump to the first/last, and Up from the first item returns focus to the\n * trigger. (Tab keeps working natively; Escape is handled by the dismissable layer.)\n */\n protected onKeydown(event: KeyboardEvent) {\n if (event.key !== ARROW_DOWN && event.key !== ARROW_UP && event.key !== HOME && event.key !== END) {\n return;\n }\n\n // If the key originates from a nested navigation menu rendered inside this popup, let that\n // menu's own roving group / popup handle it — otherwise both react and focus jumps/skips.\n const nestedRoot = (event.target as HTMLElement).closest('[rdxNavigationMenuRoot]');\n\n if (nestedRoot && this.elementRef.nativeElement.contains(nestedRoot)) {\n return;\n }\n\n const candidates = getTabbableCandidates(this.elementRef.nativeElement);\n\n if (candidates.length === 0) {\n return;\n }\n\n event.preventDefault();\n\n const currentIndex = candidates.indexOf(document.activeElement as HTMLElement);\n\n if (event.key === HOME) {\n focusFirst([candidates[0]]);\n return;\n }\n\n if (event.key === END) {\n focusFirst([candidates[candidates.length - 1]]);\n return;\n }\n\n if (event.key === ARROW_DOWN) {\n const next = currentIndex < candidates.length - 1 ? currentIndex + 1 : 0;\n focusFirst([candidates[next]]);\n return;\n }\n\n // ArrowUp: from the first item, return focus to the trigger; otherwise move to the previous.\n if (currentIndex <= 0) {\n this.rootContext.trigger()?.focus();\n } else {\n focusFirst([candidates[currentIndex - 1]]);\n }\n }\n}\n","import { Directive, isDevMode } from '@angular/core';\nimport { RdxPortalPresence } from '@radix-ng/primitives/portal';\nimport { provideRdxPresenceContext } from '@radix-ng/primitives/presence';\nimport { injectNavigationMenuRootContext } from './navigation-menu-root-context';\n\n/**\n * Structural directive that teleports the navigation menu popup into a container (default\n * `document.body`) while the menu is open, and keeps it mounted until any CSS exit `@keyframes`\n * finishes.\n *\n * Apply it with the `*` microsyntax on the positioner —\n * `<div *rdxNavigationMenuPortal rdxNavigationMenuPositioner>` — or as an explicit\n * `<ng-template rdxNavigationMenuPortal>`. For a custom container use the explicit form with\n * `[container]`.\n */\n@Directive({\n selector: 'ng-template[rdxNavigationMenuPortal]',\n exportAs: 'rdxNavigationMenuPortal',\n hostDirectives: [{ directive: RdxPortalPresence, inputs: ['container'] }],\n providers: [provideRdxPresenceContext(() => ({ present: injectNavigationMenuRootContext().isOpen }))]\n})\nexport class RdxNavigationMenuPortal {}\n\n/**\n * Dev-mode guard: `rdxNavigationMenuPortal` used to be an attribute directive on a `<div>`. It is now\n * structural, so the old `<div rdxNavigationMenuPortal>` markup would silently stop portaling — fail\n * loudly instead.\n */\n@Directive({\n selector: '[rdxNavigationMenuPortal]:not(ng-template)'\n})\nexport class RdxNavigationMenuPortalMisuseGuard {\n constructor() {\n if (isDevMode()) {\n throw new Error(\n '[rdxNavigationMenuPortal] is now a structural directive. ' +\n 'Use `*rdxNavigationMenuPortal` on the positioner element or ' +\n '`<ng-template rdxNavigationMenuPortal>`. rdxNavigationMenuPortalPresence has been removed. ' +\n 'See https://radix-ng.com/components/navigation-menu.md'\n );\n }\n }\n}\n","import { booleanAttribute, Directive, effect, ElementRef, inject, input, numberAttribute, signal } from '@angular/core';\nimport { BooleanInput, NumberInput, useGraceArea } from '@radix-ng/primitives/core';\nimport {\n Align,\n provideRdxPopperContentConfig,\n RdxPopperAnchorElement,\n RdxPopperContentWrapper,\n Side\n} from '@radix-ng/primitives/popper';\nimport { injectNavigationMenuRootContext } from './navigation-menu-root-context';\n\n/**\n * Positions the shared popup against the active trigger.\n */\n@Directive({\n selector: '[rdxNavigationMenuPositioner]',\n providers: [\n provideRdxPopperContentConfig({ arrowPadding: 5, collisionPadding: 5, updatePositionStrategy: 'always' })\n ],\n hostDirectives: [\n {\n directive: RdxPopperContentWrapper,\n inputs: [\n 'anchor',\n 'side',\n 'sideOffset',\n 'align',\n 'alignOffset',\n 'arrowPadding',\n 'avoidCollisions',\n 'collisionBoundary',\n 'collisionPadding',\n 'sticky',\n 'hideWhenDetached',\n 'positionStrategy',\n 'updatePositionStrategy'\n ]\n }\n ],\n host: {\n '[attr.data-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[attr.data-closed]': 'rootContext.isOpen() ? undefined : \"\"',\n '[attr.data-anchor-hidden]': 'wrapper.anchorHidden() ? \"\" : undefined',\n '[attr.data-align]': 'wrapper.placedAlign()',\n '[attr.data-side]': 'wrapper.placedSide()',\n '[attr.data-instant]': 'rootContext.instant() ? \"\" : undefined',\n '[style]': `{\n '--anchor-width': 'var(--radix-popper-anchor-width)',\n '--anchor-height': 'var(--radix-popper-anchor-height)',\n '--available-width': 'var(--radix-popper-available-width)',\n '--available-height': 'var(--radix-popper-available-height)',\n '--positioner-width': 'var(--radix-popper-content-wrapper-width)',\n '--positioner-height': 'var(--radix-popper-content-wrapper-height)',\n '--transform-origin': 'var(--radix-popper-transform-origin)'\n }`\n }\n})\nexport class RdxNavigationMenuPositioner {\n protected readonly rootContext = injectNavigationMenuRootContext();\n protected readonly wrapper = inject(RdxPopperContentWrapper);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly triggerEl = signal<HTMLElement | null>(null);\n private readonly containerEl = signal<HTMLElement | null>(this.elementRef.nativeElement);\n private readonly graceArea = useGraceArea(this.triggerEl, this.containerEl);\n\n /**\n * An element to position the popup against. Defaults to the active trigger.\n */\n readonly anchor = input<RdxPopperAnchorElement>();\n\n /**\n * The preferred side of the trigger to render against when open.\n */\n readonly side = input<Side>('bottom');\n\n /**\n * Distance between the trigger and the popup in pixels.\n */\n readonly sideOffset = input<number, NumberInput>(0, { transform: numberAttribute });\n\n /**\n * How to align the popup relative to the specified side.\n */\n readonly align = input<Align>('center');\n\n /**\n * An offset in pixels from the `start` or `end` alignment options.\n */\n readonly alignOffset = input<number, NumberInput>(0, { transform: numberAttribute });\n\n /**\n * Minimum distance to maintain between the arrow and the edges of the popup.\n */\n readonly arrowPadding = input<number, NumberInput>(5, { transform: numberAttribute });\n\n /**\n * Whether to override side and alignment preferences to prevent collisions.\n */\n readonly avoidCollisions = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /**\n * The element used as the collision boundary.\n */\n readonly collisionBoundary = input<ElementRef<HTMLElement> | ElementRef<HTMLElement>[]>();\n\n /**\n * Distance in pixels from the boundary edges where collision detection should occur.\n */\n readonly collisionPadding = input<number | Partial<Record<Side, number>>>(5);\n\n /**\n * The sticky behavior on the alignment axis.\n */\n readonly sticky = input<'partial' | 'always'>('partial');\n\n /**\n * Whether to hide the popup when the trigger becomes fully occluded.\n */\n readonly hideWhenDetached = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * The CSS position strategy used by Floating UI.\n */\n readonly positionStrategy = input<'fixed' | 'absolute'>('fixed');\n\n /**\n * Whether to update position on every animation frame.\n */\n readonly updatePositionStrategy = input<'optimized' | 'always'>('always');\n\n constructor() {\n effect(() => this.triggerEl.set(this.rootContext.trigger() ?? null));\n\n // Keep the menu open while the pointer travels from the trigger to the popup; close once it\n // leaves the grace area between them.\n this.graceArea.onPointerExit(() => this.rootContext.closeOnHover());\n }\n}\n","import {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n inject,\n input,\n model,\n numberAttribute,\n output,\n signal,\n untracked\n} from '@angular/core';\nimport { BooleanInput, NumberInput, useTransitionStatus } from '@radix-ng/primitives/core';\nimport { RdxPopper } from '@radix-ng/primitives/popper';\nimport {\n NavigationMenuDirection,\n NavigationMenuOrientation,\n provideNavigationMenuRootContext,\n RdxNavigationMenuContentEntry,\n RdxNavigationMenuOpenChange,\n RdxNavigationMenuOpenChangeReason,\n RdxNavigationMenuRootContext\n} from './navigation-menu-root-context';\nimport { generateId } from './utils';\n\nconst context = () => contextFor(inject(RdxNavigationMenuRoot));\n\n/**\n * Groups all parts of the navigation menu.\n *\n * Holds the shared open state: `value` identifies the currently open item, and the menu is open\n * whenever `value` is non-null. A single popup (Portal → Positioner → Popup → Viewport) is shared\n * between every item and anchored to the active trigger.\n */\n@Directive({\n selector: '[rdxNavigationMenuRoot]',\n exportAs: 'rdxNavigationMenuRoot',\n providers: [provideNavigationMenuRootContext(context)],\n hostDirectives: [RdxPopper],\n host: {\n role: 'navigation',\n 'aria-label': 'Main',\n '[attr.data-orientation]': 'orientation()',\n '[attr.dir]': 'dir()'\n }\n})\nexport class RdxNavigationMenuRoot {\n private readonly popper = inject(RdxPopper);\n private readonly destroyRef = inject(DestroyRef);\n private readonly parentRoot = inject(RdxNavigationMenuRoot, { optional: true, skipSelf: true });\n\n /** Whether this root is nested inside another navigation menu's content. */\n readonly nested = !!this.parentRoot;\n readonly baseId = `rdx-nav-menu-${generateId()}`;\n\n /**\n * The value of the navigation menu item that should be currently open.\n */\n readonly value = model<string | null>(null);\n\n /**\n * The uncontrolled value of the item that should be initially open.\n */\n readonly defaultValue = input<string | null>(null);\n\n /**\n * The orientation of the navigation menu.\n */\n readonly orientation = input<NavigationMenuOrientation>('horizontal');\n\n /**\n * The reading direction of the navigation menu.\n */\n readonly dir = input<NavigationMenuDirection>('ltr');\n\n /**\n * Whether keyboard navigation loops from the last item back to the first and vice versa.\n */\n readonly loop = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * How long to wait before opening the menu on hover, in milliseconds.\n */\n readonly delay = input<number, NumberInput>(50, { transform: numberAttribute });\n\n /**\n * How long to wait before closing the menu after the pointer leaves, in milliseconds.\n */\n readonly closeDelay = input<number, NumberInput>(50, { transform: numberAttribute });\n\n /**\n * Emits when the open item changes.\n */\n readonly onValueChange = output<string | null>();\n\n /**\n * Emits whenever the menu opens or closes.\n */\n readonly onOpenChange = output<RdxNavigationMenuOpenChange>();\n\n /**\n * Emits after any enter/exit transition completes.\n */\n readonly onOpenChangeComplete = output<boolean>();\n\n private hasAppliedDefaultValue = false;\n private openTimer: ReturnType<typeof setTimeout> | undefined;\n private closeTimer: ReturnType<typeof setTimeout> | undefined;\n private instantFrame: number | undefined;\n\n private readonly transition = useTransitionStatus((open) => {\n this.instant.set(false);\n this.onOpenChangeComplete.emit(open);\n });\n\n readonly instant = signal(false);\n readonly transitionStatus = this.transition.status;\n readonly previousValue = signal<string | null>(null);\n readonly isOpen = computed(() => this.value() !== null);\n readonly trigger = signal<HTMLElement | undefined>(undefined);\n readonly triggers = signal<HTMLElement[]>([]);\n readonly contents = signal<Map<string, RdxNavigationMenuContentEntry>>(new Map());\n\n readonly activeContent = computed(() => {\n const value = this.value() ?? this.previousValue();\n return value ? this.contents().get(value) : undefined;\n });\n\n private readonly registeredTriggers = new Map<string, HTMLElement>();\n private readonly viewportTriggerChange = new Set<(previous: HTMLElement, next: HTMLElement) => void>();\n\n constructor() {\n let previousOpen = this.isOpen();\n\n effect(() => {\n const defaultValue = this.defaultValue();\n\n if (!this.hasAppliedDefaultValue && defaultValue !== null) {\n this.hasAppliedDefaultValue = true;\n this.value.set(defaultValue);\n }\n });\n\n effect(() => {\n const open = this.isOpen();\n\n if (open !== previousOpen) {\n previousOpen = open;\n untracked(() => this.transition.start(open));\n }\n });\n\n // Anchor the shared popper to the active trigger.\n effect(() => this.popper.anchorOverride.set(this.trigger()));\n\n this.destroyRef.onDestroy(() => {\n this.clearHoverTimers();\n\n if (this.instantFrame !== undefined) {\n cancelAnimationFrame(this.instantFrame);\n }\n });\n }\n\n contentId(value: string) {\n return `${this.baseId}-content-${value}`;\n }\n\n triggerId(value: string) {\n return `${this.baseId}-trigger-${value}`;\n }\n\n setValue(\n value: string | null,\n reason: RdxNavigationMenuOpenChangeReason = 'none',\n event = new Event('navigation-menu.value-change')\n ) {\n const previous = this.value();\n\n if (previous === value) {\n return;\n }\n\n const previousTrigger = this.trigger();\n const nextTrigger = value ? this.registeredTriggers.get(value) : undefined;\n const changedTriggerWhileOpen = previous !== null && value !== null && previousTrigger !== nextTrigger;\n\n this.instant.set(changedTriggerWhileOpen || reason === 'trigger-focus');\n\n if (changedTriggerWhileOpen) {\n this.scheduleInstantReset();\n\n if (previousTrigger && nextTrigger) {\n this.viewportTriggerChange.forEach((notify) => notify(previousTrigger, nextTrigger));\n }\n }\n\n if (nextTrigger) {\n this.trigger.set(nextTrigger);\n }\n\n this.previousValue.set(previous);\n this.value.set(value);\n this.onValueChange.emit(value);\n this.onOpenChange.emit({ value, open: value !== null, reason, event });\n }\n\n open(value: string, trigger: HTMLElement, reason: RdxNavigationMenuOpenChangeReason = 'none', event?: Event) {\n this.clearHoverTimers();\n // Register the anchor in case this value hasn't been seen yet, but DON'T set `this.trigger`\n // here: setValue must still read the *previous* trigger to detect a trigger switch and drive\n // the viewport morph. It sets `this.trigger` from the registry after that comparison.\n if (!this.registeredTriggers.has(value)) {\n this.registeredTriggers.set(value, trigger);\n }\n\n this.setValue(value, reason, event);\n }\n\n close(reason: RdxNavigationMenuOpenChangeReason = 'none', event?: Event) {\n this.clearHoverTimers();\n\n if (!this.isOpen()) {\n return;\n }\n\n this.instant.set(reason !== 'none' && reason !== 'trigger-hover' && reason !== 'list-leave');\n this.setValue(null, reason, event);\n }\n\n toggle(value: string, trigger: HTMLElement, event?: Event) {\n this.clearHoverTimers();\n\n if (this.value() === value) {\n this.close('trigger-press', event);\n return;\n }\n\n this.open(value, trigger, 'trigger-press', event);\n }\n\n openOnHover(value: string, trigger: HTMLElement, event: PointerEvent) {\n this.clearHoverTimers();\n\n // Switching between already-open items happens instantly.\n if (this.isOpen()) {\n this.open(value, trigger, 'trigger-hover', event);\n return;\n }\n\n this.openTimer = setTimeout(() => this.open(value, trigger, 'trigger-hover', event), this.delay());\n }\n\n closeOnHover() {\n this.clearOpenTimer();\n this.clearCloseTimer();\n this.closeTimer = setTimeout(\n () => this.close('list-leave', new Event('navigation-menu.hover-close')),\n this.closeDelay()\n );\n }\n\n cancelHoverOpen() {\n this.clearOpenTimer();\n }\n\n cancelHoverClose() {\n this.clearCloseTimer();\n }\n\n registerTrigger(value: string, trigger: HTMLElement) {\n this.registeredTriggers.set(value, trigger);\n this.triggers.update((triggers) => (triggers.includes(trigger) ? triggers : [...triggers, trigger]));\n\n if (this.value() === value) {\n this.trigger.set(trigger);\n }\n\n return () => {\n if (this.registeredTriggers.get(value) === trigger) {\n this.registeredTriggers.delete(value);\n }\n\n this.triggers.update((triggers) => triggers.filter((candidate) => candidate !== trigger));\n\n if (this.destroyRef.destroyed || this.value() !== value) {\n return;\n }\n\n // Defer the close: when an item's `value` changes, the trigger's registration effect\n // unregisters the old value and synchronously re-registers the same element under the new\n // value. Closing immediately would collapse the menu mid-rename, so only close if the\n // element is truly gone (not re-registered under any value) on the next microtask.\n queueMicrotask(() => {\n if (this.destroyRef.destroyed || this.value() !== value) {\n return;\n }\n\n const stillRegistered = [...this.registeredTriggers.values()].includes(trigger);\n\n if (!stillRegistered) {\n this.close();\n }\n });\n };\n }\n\n registerContent(entry: RdxNavigationMenuContentEntry) {\n this.contents.update((contents) => new Map(contents).set(entry.value, entry));\n\n return () => {\n this.contents.update((contents) => {\n if (contents.get(entry.value) !== entry) {\n return contents;\n }\n\n const next = new Map(contents);\n next.delete(entry.value);\n return next;\n });\n };\n }\n\n registerTransitionElement(element: HTMLElement) {\n return this.transition.registerElement(element);\n }\n\n registerViewport(onTriggerChange: (previous: HTMLElement, next: HTMLElement) => void) {\n this.viewportTriggerChange.add(onTriggerChange);\n return () => this.viewportTriggerChange.delete(onTriggerChange);\n }\n\n private scheduleInstantReset() {\n if (this.instantFrame !== undefined) {\n cancelAnimationFrame(this.instantFrame);\n }\n\n this.instantFrame = requestAnimationFrame(() => {\n this.instantFrame = undefined;\n\n if (!this.destroyRef.destroyed && this.isOpen()) {\n this.instant.set(false);\n }\n });\n }\n\n private clearHoverTimers() {\n this.clearOpenTimer();\n this.clearCloseTimer();\n }\n\n private clearOpenTimer() {\n if (this.openTimer !== undefined) {\n clearTimeout(this.openTimer);\n this.openTimer = undefined;\n }\n }\n\n private clearCloseTimer() {\n if (this.closeTimer !== undefined) {\n clearTimeout(this.closeTimer);\n this.closeTimer = undefined;\n }\n }\n}\n\nfunction contextFor(root: RdxNavigationMenuRoot): RdxNavigationMenuRootContext {\n return {\n nested: root.nested,\n baseId: root.baseId,\n orientation: root.orientation,\n dir: root.dir,\n loop: root.loop,\n value: root.value,\n previousValue: root.previousValue.asReadonly(),\n isOpen: root.isOpen,\n instant: root.instant.asReadonly(),\n transitionStatus: root.transitionStatus,\n trigger: root.trigger.asReadonly(),\n triggers: root.triggers.asReadonly(),\n activeContent: root.activeContent,\n contentId: (value) => root.contentId(value),\n triggerId: (value) => root.triggerId(value),\n setValue: (value, reason, event) => root.setValue(value, reason, event),\n open: (value, trigger, reason, event) => root.open(value, trigger, reason, event),\n close: (reason, event) => root.close(reason, event),\n toggle: (value, trigger, event) => root.toggle(value, trigger, event),\n openOnHover: (value, trigger, event) => root.openOnHover(value, trigger, event),\n closeOnHover: () => root.closeOnHover(),\n cancelHoverOpen: () => root.cancelHoverOpen(),\n cancelHoverClose: () => root.cancelHoverClose(),\n registerTrigger: (value, trigger) => root.registerTrigger(value, trigger),\n registerContent: (entry) => root.registerContent(entry),\n registerTransitionElement: (element) => root.registerTransitionElement(element),\n registerViewport: (onTriggerChange) => root.registerViewport(onTriggerChange)\n };\n}\n","import { booleanAttribute, computed, Directive, effect, ElementRef, inject, input, untracked } from '@angular/core';\nimport { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ENTER, injectDocument, SPACE } from '@radix-ng/primitives/core';\nimport { RdxRovingFocusItemDirective } from '@radix-ng/primitives/roving-focus';\nimport { RdxNavigationMenuItem } from './navigation-menu-item';\nimport { injectNavigationMenuRootContext } from './navigation-menu-root-context';\nimport { focusFirst, getTabbableCandidates } from './utils';\n\n/**\n * A button that opens its item's content in the shared popup.\n */\n@Directive({\n selector: 'button[rdxNavigationMenuTrigger]',\n hostDirectives: [RdxRovingFocusItemDirective],\n host: {\n type: 'button',\n '[id]': 'item.triggerId()',\n '[attr.aria-controls]': 'item.contentId()',\n '[attr.aria-expanded]': 'open()',\n '[attr.aria-haspopup]': '\"menu\"',\n '[attr.data-state]': 'open() ? \"open\" : \"closed\"',\n '[attr.data-popup-open]': 'open() ? \"\" : undefined',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined',\n '[attr.disabled]': 'disabled() ? \"\" : undefined',\n '(click)': 'onClick($event)',\n '(pointerenter)': 'onPointerEnter($event)',\n '(pointerleave)': 'onPointerLeave($event)',\n '(keydown)': 'onKeydown($event)',\n '(focus)': 'onFocus()'\n }\n})\nexport class RdxNavigationMenuTrigger {\n protected readonly item = inject(RdxNavigationMenuItem);\n private readonly rootContext = injectNavigationMenuRootContext();\n private readonly rovingFocusItem = inject(RdxRovingFocusItemDirective, { self: true });\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly document = injectDocument();\n\n /**\n * Whether the trigger should ignore user interaction.\n */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n /**\n * Whether the content should also open when the trigger is hovered.\n */\n readonly openOnHover = input(true, { transform: booleanAttribute });\n\n protected readonly open = computed(() => this.item.isOpen());\n\n constructor() {\n // Host element is available in the constructor; the trigger ref does not depend on inputs.\n this.item.triggerRef.set(this.elementRef.nativeElement);\n\n effect(() => this.rovingFocusItem.setFocusable(!this.disabled()));\n\n // `value` is an input on the item, so read it in an effect (kept in sync if it ever changes).\n effect(() => this.rovingFocusItem.setTabStopId(this.item.value()));\n\n effect((onCleanup) => {\n const value = this.item.value();\n const element = this.elementRef.nativeElement;\n // Register untracked: registerTrigger reads root state internally, and we must not make\n // this effect re-run (and tear down the registration) when the open value changes.\n onCleanup(untracked(() => this.rootContext.registerTrigger(value, element)));\n });\n }\n\n protected onClick(event: MouseEvent) {\n if (this.disabled()) {\n return;\n }\n\n this.rootContext.toggle(this.item.value(), this.elementRef.nativeElement, event);\n }\n\n protected onPointerEnter(event: PointerEvent) {\n if (this.disabled() || event.pointerType === 'touch' || !this.openOnHover()) {\n return;\n }\n\n this.rootContext.cancelHoverClose();\n this.rootContext.openOnHover(this.item.value(), this.elementRef.nativeElement, event);\n }\n\n protected onPointerLeave(event: PointerEvent) {\n if (event.pointerType === 'touch' || !this.openOnHover()) {\n return;\n }\n\n this.rootContext.cancelHoverOpen();\n }\n\n /**\n * Open-follows-focus: while the menu is already open, moving keyboard focus (arrow keys via\n * roving) to another trigger switches the shared popup to that item — matching Base UI, so the\n * open menu visibly responds to arrow-key navigation. Focus never *opens* a closed menu.\n */\n protected onFocus() {\n if (this.disabled() || !this.rootContext.isOpen() || this.open()) {\n return;\n }\n\n this.rootContext.open(this.item.value(), this.elementRef.nativeElement, 'trigger-focus');\n }\n\n protected onKeydown(event: KeyboardEvent) {\n if (this.disabled()) {\n return;\n }\n\n const entryKey = this.entryKey();\n\n if (event.key === ENTER || event.key === SPACE) {\n event.preventDefault();\n this.rootContext.toggle(this.item.value(), this.elementRef.nativeElement, event);\n\n if (this.open()) {\n this.focusContent();\n }\n\n return;\n }\n\n if (event.key === entryKey) {\n event.preventDefault();\n\n if (!this.open()) {\n this.rootContext.open(this.item.value(), this.elementRef.nativeElement, 'trigger-press', event);\n }\n\n this.focusContent();\n }\n }\n\n /** The key that moves focus from the trigger into the open content, based on orientation/dir. */\n private entryKey(): string {\n if (this.rootContext.orientation() === 'horizontal') {\n return ARROW_DOWN;\n }\n\n return this.rootContext.dir() === 'rtl' ? ARROW_LEFT : ARROW_RIGHT;\n }\n\n private focusContent() {\n // Content is rendered into the shared popup, which mounts through Presence + Portal and is\n // then positioned asynchronously by floating-ui. Until it is positioned the popper keeps it\n // `visibility: hidden`, so its tabbables aren't focusable yet. Poll across animation frames\n // until focus actually lands inside the panel (don't give up just because the element exists).\n const contentId = this.item.contentId();\n let attempts = 0;\n\n const tryFocus = () => {\n const content = this.document.getElementById(contentId);\n const candidates = content ? getTabbableCandidates(content) : [];\n\n if (candidates.length && focusFirst(candidates)) {\n return;\n }\n\n if (attempts++ < 15) {\n requestAnimationFrame(tryFocus);\n } else if (content) {\n // Fallback: no tabbable content — focus the panel container itself.\n content.focus();\n }\n };\n\n requestAnimationFrame(tryFocus);\n }\n}\n","import {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n EmbeddedViewRef,\n inject,\n input,\n Renderer2,\n signal,\n untracked,\n ViewContainerRef\n} from '@angular/core';\nimport { getMaxTransitionDuration } from '@radix-ng/primitives/core';\nimport { injectNavigationMenuRootContext, RdxNavigationMenuContentEntry } from './navigation-menu-root-context';\nimport { getActivationDirection, removeIds } from './utils';\n\ninterface RenderedContent {\n value: string;\n view: EmbeddedViewRef<unknown>;\n /** The `data-current` wrapper appended to the viewport (stretches to the viewport box). */\n element: HTMLElement;\n /** The content's own root element, measured for the size morph (sizes to its content). */\n measureTarget: HTMLElement;\n}\n\n/**\n * Clips and animates the active item's content. A single viewport is shared between all items; when\n * the active item changes the outgoing content is retained as `data-previous` until its CSS\n * animation/transition completes, and the new content is marked `data-current`.\n */\n@Directive({\n selector: '[rdxNavigationMenuViewport]',\n host: {\n '[attr.data-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[attr.data-closed]': 'rootContext.isOpen() ? undefined : \"\"',\n '[attr.data-state]': 'rootContext.isOpen() ? \"open\" : \"closed\"',\n '[attr.data-orientation]': 'rootContext.orientation()',\n '[attr.data-activation-direction]': 'activationDirection()',\n '[attr.data-transitioning]': 'transitioning() ? \"\" : undefined',\n '[style.--popup-width.px]': 'size()?.width',\n '[style.--popup-height.px]': 'size()?.height'\n }\n})\nexport class RdxNavigationMenuViewport {\n protected readonly rootContext = injectNavigationMenuRootContext();\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly renderer = inject(Renderer2);\n\n /**\n * Keep the viewport mounted even when the menu is closed.\n */\n readonly forceMount = input(false, { transform: booleanAttribute });\n\n protected readonly activationDirection = signal<string | undefined>(undefined);\n protected readonly transitioning = signal(false);\n protected readonly size = signal<{ width: number; height: number } | null>(null);\n\n private current: RenderedContent | null = null;\n private previousElement: HTMLElement | null = null;\n private pendingDirection: string | undefined;\n private cleanupTimer: ReturnType<typeof setTimeout> | undefined;\n private readonly resizeObserver =\n typeof ResizeObserver !== 'undefined' ? new ResizeObserver(() => this.measure()) : null;\n\n private readonly activeContent = computed(() => this.rootContext.activeContent());\n\n constructor() {\n const unregister = this.rootContext.registerViewport((previous, next) => {\n this.pendingDirection = getActivationDirection(previous, next);\n });\n\n effect(() => {\n const entry = this.activeContent();\n untracked(() => this.render(entry));\n });\n\n inject(DestroyRef).onDestroy(() => {\n unregister();\n this.resizeObserver?.disconnect();\n this.clearCleanupTimer();\n this.removePrevious();\n this.current?.view.destroy();\n });\n }\n\n private render(entry: RdxNavigationMenuContentEntry | undefined) {\n if (!entry) {\n return;\n }\n\n if (this.current?.value === entry.value) {\n return;\n }\n\n // Snapshot the outgoing content so it can animate out as `data-previous`.\n if (this.current) {\n this.resizeObserver?.unobserve(this.current.measureTarget);\n this.startLeave(this.current.element);\n this.current.view.destroy();\n }\n\n const view = this.viewContainerRef.createEmbeddedView(entry.templateRef);\n view.detectChanges();\n\n const element = this.renderer.createElement('div') as HTMLElement;\n this.renderer.setAttribute(element, 'data-current', '');\n this.renderer.setAttribute(element, 'id', entry.contentId);\n this.renderer.setAttribute(element, 'aria-labelledby', entry.triggerId);\n // Make the panel a valid focus target for keyboard entry when it has no tabbable content.\n this.renderer.setAttribute(element, 'tabindex', '-1');\n view.rootNodes.forEach((node: Node) => this.renderer.appendChild(element, node));\n this.renderer.appendChild(this.elementRef.nativeElement, element);\n\n // Measure the content's own root element, not the wrapper: the wrapper is `display: block`\n // and stretches to the viewport, so measuring it would feed the viewport its own width back\n // and the popup would balloon to fill the page. The content root sizes to its content.\n const measureTarget = (element.firstElementChild as HTMLElement | null) ?? element;\n\n this.current = { value: entry.value, view, element, measureTarget };\n this.resizeObserver?.observe(measureTarget);\n this.measure();\n }\n\n private startLeave(element: HTMLElement) {\n this.removePrevious();\n\n const previous = element.cloneNode(true) as HTMLElement;\n previous.removeAttribute('data-current');\n previous.setAttribute('data-previous', '');\n previous.setAttribute('aria-hidden', 'true');\n previous.setAttribute('inert', '');\n removeIds(previous);\n\n this.activationDirection.set(this.pendingDirection);\n this.pendingDirection = undefined;\n this.previousElement = previous;\n this.transitioning.set(true);\n this.renderer.appendChild(this.elementRef.nativeElement, previous);\n\n const onEnd = () => this.removePrevious();\n previous.addEventListener('animationend', onEnd, { once: true });\n previous.addEventListener('transitionend', onEnd, { once: true });\n\n const duration = getMaxTransitionDuration(previous);\n this.cleanupTimer = setTimeout(onEnd, duration > 0 ? duration + 50 : 0);\n }\n\n private removePrevious() {\n this.clearCleanupTimer();\n this.previousElement?.remove();\n this.previousElement = null;\n this.transitioning.set(false);\n }\n\n private clearCleanupTimer() {\n if (this.cleanupTimer !== undefined) {\n clearTimeout(this.cleanupTimer);\n this.cleanupTimer = undefined;\n }\n }\n\n private measure() {\n const target = this.current?.measureTarget;\n\n if (!target || !target.isConnected) {\n return;\n }\n\n const width = Math.ceil(target.offsetWidth);\n const height = Math.ceil(target.offsetHeight);\n\n if (width === 0 && height === 0) {\n return;\n }\n\n const size = this.size();\n\n if (!size || size.width !== width || size.height !== height) {\n this.size.set({ width, height });\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RdxNavigationMenuArrow } from './src/navigation-menu-arrow';\nimport { RdxNavigationMenuBackdrop } from './src/navigation-menu-backdrop';\nimport { RdxNavigationMenuContent } from './src/navigation-menu-content';\nimport { RdxNavigationMenuIcon } from './src/navigation-menu-icon';\nimport { RdxNavigationMenuItem } from './src/navigation-menu-item';\nimport { RdxNavigationMenuLink } from './src/navigation-menu-link';\nimport { RdxNavigationMenuList } from './src/navigation-menu-list';\nimport { RdxNavigationMenuPopup } from './src/navigation-menu-popup';\nimport { RdxNavigationMenuPortal, RdxNavigationMenuPortalMisuseGuard } from './src/navigation-menu-portal';\nimport { RdxNavigationMenuPositioner } from './src/navigation-menu-positioner';\nimport { RdxNavigationMenuRoot } from './src/navigation-menu-root';\nimport { RdxNavigationMenuTrigger } from './src/navigation-menu-trigger';\nimport { RdxNavigationMenuViewport } from './src/navigation-menu-viewport';\n\nexport * from './src/navigation-menu-arrow';\nexport * from './src/navigation-menu-backdrop';\nexport * from './src/navigation-menu-content';\nexport * from './src/navigation-menu-icon';\nexport * from './src/navigation-menu-item';\nexport * from './src/navigation-menu-link';\nexport * from './src/navigation-menu-list';\nexport * from './src/navigation-menu-popup';\nexport * from './src/navigation-menu-portal';\nexport * from './src/navigation-menu-positioner';\nexport * from './src/navigation-menu-root';\nexport * from './src/navigation-menu-root-context';\nexport * from './src/navigation-menu-trigger';\nexport * from './src/navigation-menu-viewport';\n\nexport const navigationMenuImports = [\n RdxNavigationMenuRoot,\n RdxNavigationMenuList,\n RdxNavigationMenuItem,\n RdxNavigationMenuTrigger,\n RdxNavigationMenuIcon,\n RdxNavigationMenuContent,\n RdxNavigationMenuLink,\n RdxNavigationMenuPortal,\n RdxNavigationMenuPortalMisuseGuard,\n RdxNavigationMenuBackdrop,\n RdxNavigationMenuPositioner,\n RdxNavigationMenuPopup,\n RdxNavigationMenuArrow,\n RdxNavigationMenuViewport\n];\n\n@NgModule({\n imports: [...navigationMenuImports],\n exports: [...navigationMenuImports]\n})\nexport class RdxNavigationMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}