@radix-ng/primitives 0.51.0 → 1.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/radix-ng-primitives-accordion.mjs +105 -38
- package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-alert-dialog.mjs +221 -129
- package/fesm2022/radix-ng-primitives-alert-dialog.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-arrow.mjs +20 -4
- package/fesm2022/radix-ng-primitives-arrow.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-aspect-ratio.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-avatar.mjs +54 -61
- package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-button.mjs +123 -0
- package/fesm2022/radix-ng-primitives-button.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-calendar.mjs +95 -83
- package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-checkbox.mjs +378 -54
- package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-collapsible.mjs +182 -81
- package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-collection.mjs +40 -57
- package/fesm2022/radix-ng-primitives-collection.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-config.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-context-menu.mjs +140 -424
- package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-core.mjs +845 -744
- package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-cropper.mjs +288 -308
- package/fesm2022/radix-ng-primitives-cropper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-date-field.mjs +104 -58
- package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-dialog.mjs +655 -327
- package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-dismissable-layer.mjs +70 -46
- package/fesm2022/radix-ng-primitives-dismissable-layer.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-drawer.mjs +960 -0
- package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-editable.mjs +304 -23
- package/fesm2022/radix-ng-primitives-editable.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-field.mjs +363 -0
- package/fesm2022/radix-ng-primitives-field.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-fieldset.mjs +79 -0
- package/fesm2022/radix-ng-primitives-fieldset.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-focus-scope.mjs +23 -8
- package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-input.mjs +172 -0
- package/fesm2022/radix-ng-primitives-input.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-label.mjs +6 -6
- package/fesm2022/radix-ng-primitives-label.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menu.mjs +1907 -363
- package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menubar.mjs +290 -162
- package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-meter.mjs +271 -0
- package/fesm2022/radix-ng-primitives-meter.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs +1052 -1553
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-number-field.mjs +1102 -367
- package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-pagination.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popover.mjs +978 -989
- package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popper.mjs +111 -44
- package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-portal.mjs +34 -10
- package/fesm2022/radix-ng-primitives-portal.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-presence.mjs +134 -246
- package/fesm2022/radix-ng-primitives-presence.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-preview-card.mjs +997 -0
- package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-progress.mjs +223 -84
- package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-radio.mjs +191 -51
- package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-roving-focus.mjs +96 -50
- package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-scroll-area.mjs +923 -0
- package/fesm2022/radix-ng-primitives-scroll-area.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-select.mjs +791 -509
- package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-separator.mjs +12 -35
- package/fesm2022/radix-ng-primitives-separator.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-slider.mjs +969 -717
- package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-stepper.mjs +15 -19
- package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-switch.mjs +125 -113
- package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tabs.mjs +390 -108
- package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-time-field.mjs +55 -46
- package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toast.mjs +839 -0
- package/fesm2022/radix-ng-primitives-toast.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-toggle-group.mjs +121 -247
- package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle.mjs +98 -61
- package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toolbar.mjs +303 -92
- package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tooltip.mjs +699 -1072
- package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-visually-hidden.mjs +25 -66
- package/fesm2022/radix-ng-primitives-visually-hidden.mjs.map +1 -1
- package/meter/README.md +3 -0
- package/navigation-menu/README.md +2 -1
- package/package.json +39 -18
- package/portal/README.md +2 -0
- package/preview-card/README.md +3 -0
- package/schematics/collection.json +1 -0
- package/schematics/ng-add/index.d.ts +3 -2
- package/schematics/ng-add/index.js +62 -31
- package/schematics/ng-add/index.js.map +1 -1
- package/schematics/ng-add/package-config.d.ts +4 -2
- package/schematics/ng-add/package-config.js +10 -2
- package/schematics/ng-add/package-config.js.map +1 -1
- package/schematics/ng-add/schema.d.ts +3 -0
- package/schematics/ng-add/schema.js +3 -0
- package/schematics/ng-add/schema.js.map +1 -0
- package/schematics/ng-add/schema.json +14 -0
- package/select/README.md +2 -0
- package/types/radix-ng-primitives-accordion.d.ts +51 -16
- package/types/radix-ng-primitives-alert-dialog.d.ts +95 -38
- package/types/radix-ng-primitives-arrow.d.ts +1 -1
- package/types/radix-ng-primitives-aspect-ratio.d.ts +1 -1
- package/types/radix-ng-primitives-avatar.d.ts +7 -11
- package/types/radix-ng-primitives-button.d.ts +73 -0
- package/types/radix-ng-primitives-calendar.d.ts +39 -20
- package/types/radix-ng-primitives-checkbox.d.ts +204 -35
- package/types/radix-ng-primitives-collapsible.d.ts +114 -40
- package/types/radix-ng-primitives-collection.d.ts +38 -34
- package/types/radix-ng-primitives-config.d.ts +1 -1
- package/types/radix-ng-primitives-context-menu.d.ts +61 -116
- package/types/radix-ng-primitives-core.d.ts +345 -235
- package/types/radix-ng-primitives-cropper.d.ts +89 -56
- package/types/radix-ng-primitives-date-field.d.ts +49 -28
- package/types/radix-ng-primitives-dialog.d.ts +283 -165
- package/types/radix-ng-primitives-dismissable-layer.d.ts +15 -7
- package/types/radix-ng-primitives-drawer.d.ts +426 -0
- package/types/radix-ng-primitives-editable.d.ts +91 -14
- package/types/radix-ng-primitives-field.d.ts +374 -0
- package/types/radix-ng-primitives-fieldset.d.ts +49 -0
- package/types/radix-ng-primitives-focus-scope.d.ts +15 -6
- package/types/radix-ng-primitives-input.d.ts +87 -0
- package/types/radix-ng-primitives-label.d.ts +0 -1
- package/types/radix-ng-primitives-menu.d.ts +584 -99
- package/types/radix-ng-primitives-menubar.d.ts +61 -50
- package/types/radix-ng-primitives-meter.d.ts +194 -0
- package/types/radix-ng-primitives-navigation-menu.d.ts +422 -340
- package/types/radix-ng-primitives-number-field.d.ts +405 -145
- package/types/radix-ng-primitives-pagination.d.ts +2 -2
- package/types/radix-ng-primitives-popover.d.ts +366 -351
- package/types/radix-ng-primitives-popper.d.ts +68 -11
- package/types/radix-ng-primitives-portal.d.ts +14 -6
- package/types/radix-ng-primitives-presence.d.ts +28 -76
- package/types/radix-ng-primitives-preview-card.d.ts +359 -0
- package/types/radix-ng-primitives-progress.d.ts +175 -48
- package/types/radix-ng-primitives-radio.d.ts +55 -25
- package/types/radix-ng-primitives-roving-focus.d.ts +33 -23
- package/types/radix-ng-primitives-scroll-area.d.ts +253 -0
- package/types/radix-ng-primitives-select.d.ts +475 -177
- package/types/radix-ng-primitives-separator.d.ts +7 -32
- package/types/radix-ng-primitives-slider.d.ts +315 -201
- package/types/radix-ng-primitives-stepper.d.ts +5 -7
- package/types/radix-ng-primitives-switch.d.ts +86 -71
- package/types/radix-ng-primitives-tabs.d.ts +213 -79
- package/types/radix-ng-primitives-time-field.d.ts +42 -27
- package/types/radix-ng-primitives-toast.d.ts +378 -0
- package/types/radix-ng-primitives-toggle-group.d.ts +86 -164
- package/types/radix-ng-primitives-toggle.d.ts +43 -53
- package/types/radix-ng-primitives-toolbar.d.ts +164 -38
- package/types/radix-ng-primitives-tooltip.d.ts +348 -384
- package/types/radix-ng-primitives-visually-hidden.d.ts +19 -19
- package/dropdown-menu/README.md +0 -1
- package/fesm2022/radix-ng-primitives-dropdown-menu.mjs +0 -581
- package/fesm2022/radix-ng-primitives-dropdown-menu.mjs.map +0 -1
- package/fesm2022/radix-ng-primitives-hover-card.mjs +0 -1238
- package/fesm2022/radix-ng-primitives-hover-card.mjs.map +0 -1
- package/fesm2022/radix-ng-primitives-select2.mjs +0 -897
- package/fesm2022/radix-ng-primitives-select2.mjs.map +0 -1
- package/fesm2022/radix-ng-primitives-tooltip2.mjs +0 -735
- package/fesm2022/radix-ng-primitives-tooltip2.mjs.map +0 -1
- package/hover-card/README.md +0 -3
- package/select2/README.md +0 -3
- package/tooltip2/README.md +0 -3
- package/types/radix-ng-primitives-dropdown-menu.d.ts +0 -171
- package/types/radix-ng-primitives-hover-card.d.ts +0 -471
- package/types/radix-ng-primitives-select2.d.ts +0 -511
- package/types/radix-ng-primitives-tooltip2.d.ts +0 -325
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radix-ng-primitives-navigation-menu.mjs","sources":["../../../packages/primitives/navigation-menu/src/navigation-menu-a11y.component.ts","../../../packages/primitives/navigation-menu/src/navigation-menu.token.ts","../../../packages/primitives/navigation-menu/src/navigation-menu.types.ts","../../../packages/primitives/navigation-menu/src/utils.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-item.directive.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-content.directive.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-indicator.directive.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-link.directive.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-list.directive.ts","../../../packages/primitives/navigation-menu/src/navigation-menu.directive.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-sub.directive.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-trigger.directive.ts","../../../packages/primitives/navigation-menu/src/navigation-menu-viewport.directive.ts","../../../packages/primitives/navigation-menu/index.ts","../../../packages/primitives/navigation-menu/radix-ng-primitives-navigation-menu.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { RdxVisuallyHiddenDirective } from '@radix-ng/primitives/visually-hidden';\n\n@Component({\n selector: 'rdx-navigation-menu-focus-proxy',\n template: `\n <span\n [attr.tabindex]=\"0\"\n [attr.aria-hidden]=\"true\"\n (focus)=\"onFocus($event)\"\n rdxVisuallyHidden\n feature=\"focusable\"\n ></span>\n `,\n imports: [RdxVisuallyHiddenDirective]\n})\nexport class RdxNavigationMenuFocusProxyComponent {\n @Input() triggerElement: HTMLElement | null = null;\n @Input() contentElement: HTMLElement | null = null;\n @Output() proxyFocus = new EventEmitter<'start' | 'end'>();\n\n onFocus(event: Event): void {\n const focusEvent = event as FocusEvent;\n const prevFocusedElement = focusEvent.relatedTarget as HTMLElement | null;\n const wasTriggerFocused = prevFocusedElement === this.triggerElement;\n const wasFocusFromContent = this.contentElement ? this.contentElement.contains(prevFocusedElement) : false;\n\n if (wasTriggerFocused || !wasFocusFromContent) {\n this.proxyFocus.emit(wasTriggerFocused ? 'start' : 'end');\n }\n }\n}\n\n@Component({\n selector: 'rdx-navigation-menu-aria-owns',\n template: `\n <span [attr.aria-owns]=\"contentId\" rdxVisuallyHidden feature=\"fully-hidden\"></span>\n `,\n imports: [RdxVisuallyHiddenDirective]\n})\nexport class RdxNavigationMenuAriaOwnsComponent {\n @Input() contentId: string = '';\n}\n","import { inject, InjectionToken, Provider, Type } from '@angular/core';\nimport { RdxNavigationMenuSubDirective } from './navigation-menu-sub.directive';\nimport { RdxNavigationMenuDirective } from './navigation-menu.directive';\n\nexport interface NavigationMenuContext {\n isRootMenu: boolean;\n value: () => string;\n previousValue: () => string;\n baseId: string;\n dir: 'ltr' | 'rtl';\n orientation: 'horizontal' | 'vertical';\n loop: boolean;\n rootNavigationMenu: () => HTMLElement | null;\n\n indicatorTrack?: () => HTMLElement | null;\n onIndicatorTrackChange?: (track: HTMLElement | null) => void;\n userDismissedByClick?: () => boolean;\n resetUserDismissed?: () => void;\n viewport?: () => HTMLElement | null;\n onViewportChange?: (viewport: HTMLElement | null) => void;\n viewportContent?: () => Map<string, any>;\n onViewportContentChange?: (contentValue: string, contentData: any) => void;\n onViewportContentRemove?: (contentValue: string) => void;\n onTriggerEnter?: (itemValue: string) => void;\n onTriggerLeave?: () => void;\n onContentEnter?: () => void;\n onContentLeave?: () => void;\n onItemSelect?: (itemValue: string) => void;\n onItemDismiss?: () => void;\n handleClose?: (force?: boolean) => void;\n setTriggerPointerState?: (isOver: boolean) => void;\n setContentPointerState?: (isOver: boolean) => void;\n isPointerInSystem?: () => boolean;\n}\n\nexport const RDX_NAVIGATION_MENU_TOKEN = new InjectionToken<NavigationMenuContext>('RdxNavigationMenuToken');\n\nexport function injectNavigationMenu(): NavigationMenuContext {\n return inject(RDX_NAVIGATION_MENU_TOKEN);\n}\n\nexport function isRootNavigationMenu(context: NavigationMenuContext): boolean {\n return context.isRootMenu;\n}\n\nexport function provideNavigationMenuContext(\n provider: Type<RdxNavigationMenuDirective | RdxNavigationMenuSubDirective>\n): Provider {\n return {\n provide: RDX_NAVIGATION_MENU_TOKEN,\n useExisting: provider\n };\n}\n","import { FocusableOption } from '@angular/cdk/a11y';\n\nexport enum RdxNavigationMenuAnimationStatus {\n OPEN_STARTED = 'open_started',\n OPEN_ENDED = 'open_ended',\n CLOSED_STARTED = 'closed_started',\n CLOSED_ENDED = 'closed_ended'\n}\n\n/**\n * A stub class solely used to query a single type of focusable element in the navigation menu.\n */\nexport abstract class RdxNavigationMenuFocusableOption implements FocusableOption {\n focus(): void {\n throw new Error('Method not implemented.');\n }\n}\n","export type NavigationMenuOrientation = 'horizontal' | 'vertical';\nexport type NavigationMenuDirection = 'ltr' | 'rtl';\nexport type MotionAttribute = 'to-start' | 'to-end' | 'from-start' | 'from-end';\n\nexport const ROOT_CONTENT_DISMISS = 'navigationMenu.rootContentDismiss';\n\n/**\n * Generate a unique ID\n */\nexport function generateId(): string {\n return Math.random().toString(36).substring(2, 11);\n}\n\n/**\n * Get the open state for data-state attribute\n */\nexport function getOpenStateLabel(open: boolean): 'open' | 'closed' {\n return open ? 'open' : 'closed';\n}\n\n/**\n * Create a trigger ID from base ID and value\n */\nexport function makeTriggerId(baseId: string, value: string): string {\n return `${baseId}-trigger-${value}`;\n}\n\n/**\n * Create a content ID from base ID and value\n */\nexport function makeContentId(baseId: string, value: string): string {\n return `${baseId}-content-${value}`;\n}\n\n/**\n * Get the motion attribute for animations\n */\nexport function getMotionAttribute(\n currentValue: string | null,\n previousValue: string | null,\n itemValue: string,\n itemValues: string[],\n dir: NavigationMenuDirection\n): MotionAttribute | null {\n // reverse values in RTL\n const values = dir === 'rtl' ? [...itemValues].reverse() : itemValues;\n\n const currentIndex = currentValue !== null ? values.indexOf(currentValue) : -1;\n const prevIndex = previousValue !== null ? values.indexOf(previousValue) : -1;\n\n const isSelected = itemValue === currentValue;\n const wasSelected = itemValue === previousValue && previousValue !== null;\n\n // Preserve motion attribute for items not directly involved in the transition\n // (This matches React's behaviour, using a ref/signal might be needed\n // in the component using this function to fully replicate React's prevMotionAttributeRef)\n // For now, returning null if not involved, as per the original code's intent here.\n if (!isSelected && !wasSelected) {\n return null;\n }\n\n // handle transitions between items\n if (currentIndex !== -1 && prevIndex !== -1) {\n // if moving to this item (isSelected)\n if (isSelected) {\n return currentIndex > prevIndex ? 'from-end' : 'from-start';\n }\n // if moving away from this item (wasSelected)\n if (wasSelected) {\n return currentIndex > prevIndex ? 'to-start' : 'to-end';\n }\n }\n\n // handle initial open (prevIndex is -1, currentIndex is valid)\n if (isSelected && prevIndex === -1) {\n return null;\n }\n\n // handle closing entirely (currentIndex is -1, prevIndex is valid)\n if (wasSelected && currentIndex === -1) {\n return null;\n }\n\n // fallback if none of the above conditions met (should ideally not happen with clear states)\n return null;\n}\n\n/**\n * Focus the first element in a list of candidates\n * @param candidates Array of elements that can receive focus\n * @param preventScroll Whether to prevent scrolling when focusing\n * @param activateKeyboardNav Whether to dispatch a dummy keydown event to activate keyboard navigation handlers\n * @returns Whether focus was successfully moved\n */\nexport function focusFirst(candidates: HTMLElement[], preventScroll = false, activateKeyboardNav = true): boolean {\n const prevFocusedElement = document.activeElement;\n\n // sort candidates by tabindex to ensure proper order\n const sortedCandidates = [...candidates].sort((a, b) => {\n const aIndex = a.tabIndex || 0;\n const bIndex = b.tabIndex || 0;\n return aIndex - bIndex;\n });\n\n const success = sortedCandidates.some((candidate) => {\n // if focus is already where we want it, do nothing\n if (candidate === prevFocusedElement) return true;\n\n try {\n candidate.focus({ preventScroll });\n return document.activeElement !== prevFocusedElement;\n } catch (e) {\n console.error('Error focusing element:', e);\n return false;\n }\n });\n\n // if focus was moved successfully and we want to activate keyboard navigation,\n // dispatch a dummy keypress to ensure keyboard handlers are activated\n if (success && activateKeyboardNav && document.activeElement !== prevFocusedElement) {\n try {\n // dispatch a no-op keydown event to activate any keyboard handlers\n document.activeElement?.dispatchEvent(\n new KeyboardEvent('keydown', {\n bubbles: true,\n cancelable: true,\n key: 'Tab',\n code: 'Tab'\n })\n );\n } catch (e) {\n console.error('Error dispatching keyboard event:', e);\n }\n }\n\n return success;\n}\n\n/**\n * Get all tabbable candidates in a container\n */\nexport function getTabbableCandidates(container: HTMLElement): HTMLElement[] {\n if (!container || !container.querySelectorAll) return [];\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 // use querySelector for better browser support\n const elements = Array.from(container.querySelectorAll(TABBABLE_SELECTOR)) as HTMLElement[];\n\n // filter out elements that are hidden, have display:none, etc.\n return elements.filter((element) => {\n if (element.tabIndex < 0) return false;\n if (element.hasAttribute('disabled')) return false;\n if (element.hasAttribute('aria-hidden') && element.getAttribute('aria-hidden') === 'true') return false;\n\n // Check if element or any parent is hidden\n let current: HTMLElement | null = element;\n while (current) {\n const style = window.getComputedStyle(current);\n if (style.display === 'none' || style.visibility === 'hidden' || style.opacity === '0') {\n return false;\n }\n current = current.parentElement;\n }\n\n return true;\n });\n}\n\n/**\n * Remove elements from tab order and return a function to restore them\n */\nexport function removeFromTabOrder(candidates: HTMLElement[]): () => void {\n const originalValues = new Map<HTMLElement, string | null>();\n\n candidates.forEach((candidate) => {\n // Store original tabindex\n originalValues.set(candidate, candidate.getAttribute('tabindex'));\n\n // Set to -1 to remove from tab order\n candidate.setAttribute('tabindex', '-1');\n });\n\n // Return restore function\n return () => {\n candidates.forEach((candidate) => {\n const originalValue = originalValues.get(candidate);\n if (originalValue == null) {\n candidate.removeAttribute('tabindex');\n } else {\n candidate.setAttribute('tabindex', originalValue);\n }\n });\n };\n}\n\n/**\n * Wrap array around itself at given start index\n */\nexport function wrapArray<T>(array: T[], startIndex: number): T[] {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\n","import { FocusableOption } from '@angular/cdk/a11y';\nimport { contentChild, Directive, ElementRef, inject, input, Signal, signal } from '@angular/core';\nimport { injectNavigationMenu, isRootNavigationMenu } from './navigation-menu.token';\nimport { RdxNavigationMenuFocusableOption } from './navigation-menu.types';\nimport { focusFirst, getTabbableCandidates, removeFromTabOrder } from './utils';\n\n@Directive({\n selector: '[rdxNavigationMenuItem]',\n host: {\n '[attr.value]': 'value()'\n },\n exportAs: 'rdxNavigationMenuItem'\n})\nexport class RdxNavigationMenuItemDirective implements FocusableOption {\n readonly elementRef = inject(ElementRef);\n private readonly context = injectNavigationMenu();\n\n readonly value = input('');\n\n /**\n * @ignore\n */\n readonly triggerOrLink = contentChild(RdxNavigationMenuFocusableOption);\n\n readonly triggerRef = signal<HTMLElement | null>(null);\n readonly contentRef = signal<HTMLElement | null>(null);\n readonly focusProxyRef = signal<HTMLElement | null>(null);\n readonly wasEscapeCloseRef = signal(false);\n\n private readonly _restoreContentTabOrderRef = signal<(() => void) | null>(null);\n\n get restoreContentTabOrderRef(): Signal<(() => void) | null> {\n return this._restoreContentTabOrderRef;\n }\n\n /**\n * Handle keyboard entry into content from trigger\n */\n onEntryKeyDown() {\n // Check if we're using a viewport in a root menu\n if (isRootNavigationMenu(this.context) && this.context.viewport && this.context.viewport()) {\n const viewport = this.context.viewport();\n if (viewport) {\n // find tabbable elements in the viewport\n const candidates = getTabbableCandidates(viewport);\n if (candidates.length) {\n this.ensureTabOrder();\n\n // focus the first element\n focusFirst(candidates);\n return;\n }\n }\n }\n\n // fallback to content if no viewport or no tabbable elements in viewport\n if (this.contentRef()) {\n // restore tab order if needed\n const restoreFn = this._restoreContentTabOrderRef();\n if (restoreFn) restoreFn();\n\n // find and focus first tabbable element\n const candidates = getTabbableCandidates(this.contentRef()!);\n if (candidates.length) {\n focusFirst(candidates);\n }\n }\n }\n\n focus(): void {\n this.triggerOrLink()?.focus();\n }\n\n /**\n * Ensure elements are in the tab order by restoring any previously removed tabindex values\n */\n private ensureTabOrder(): void {\n const restoreFn = this._restoreContentTabOrderRef();\n if (restoreFn) {\n restoreFn();\n this._restoreContentTabOrderRef.set(null);\n }\n }\n\n /**\n * Handle focus coming from the focus proxy element\n * @param side Which side the focus is coming from (start = from trigger, end = from after content)\n */\n onFocusProxyEnter(side: 'start' | 'end' = 'start') {\n // check for viewport first\n if (isRootNavigationMenu(this.context) && this.context.viewport && this.context.viewport()) {\n const viewport = this.context.viewport();\n if (viewport) {\n const candidates = getTabbableCandidates(viewport);\n if (candidates.length) {\n this.ensureTabOrder();\n\n // focus first or last element depending on direction\n focusFirst(side === 'start' ? candidates : [...candidates].reverse());\n return;\n }\n }\n }\n\n // fallback to content\n if (this.contentRef()) {\n // restore tab order if needed\n const restoreFn = this._restoreContentTabOrderRef();\n if (restoreFn) restoreFn();\n\n // find and focus appropriate element based on direction\n const candidates = getTabbableCandidates(this.contentRef()!);\n if (candidates.length) {\n // Focus first or last element depending on which direction we're coming from\n focusFirst(side === 'start' ? candidates : [...candidates].reverse());\n }\n }\n }\n\n /**\n * Handle focus moving outside of the content\n * Remove elements from tab order when not focused\n */\n onContentFocusOutside() {\n // get all tabbable elements from both viewport and content\n let allCandidates: HTMLElement[] = [];\n\n // check viewport first\n if (isRootNavigationMenu(this.context) && this.context.viewport && this.context.viewport()) {\n const viewport = this.context.viewport();\n if (viewport) {\n allCandidates = getTabbableCandidates(viewport);\n }\n }\n\n // ... also check direct content\n if (this.contentRef()) {\n const contentCandidates = getTabbableCandidates(this.contentRef()!);\n allCandidates = [...allCandidates, ...contentCandidates];\n }\n\n // remove from tab order and store restore function\n if (allCandidates.length) {\n this._restoreContentTabOrderRef.set(removeFromTabOrder(allCandidates));\n }\n }\n\n /**\n * Handle content being closed from root menu\n */\n onRootContentClose() {\n this.onContentFocusOutside();\n }\n}\n","import {\n booleanAttribute,\n Directive,\n ElementRef,\n inject,\n Input,\n input,\n NgZone,\n OnDestroy,\n OnInit,\n TemplateRef\n} from '@angular/core';\nimport { ESCAPE, injectDocument } from '@radix-ng/primitives/core';\nimport { RdxNavigationMenuItemDirective } from './navigation-menu-item.directive';\nimport { injectNavigationMenu, isRootNavigationMenu } from './navigation-menu.token';\nimport { getMotionAttribute, makeContentId, makeTriggerId } from './utils';\n\n@Directive({\n selector: '[rdxNavigationMenuContent]'\n})\nexport class RdxNavigationMenuContentDirective implements OnInit, OnDestroy {\n private readonly elementRef = inject(ElementRef);\n private readonly ngZone = inject(NgZone);\n private readonly template = inject(TemplateRef);\n private readonly document = injectDocument();\n private readonly item = inject(RdxNavigationMenuItemDirective);\n private readonly context = injectNavigationMenu();\n\n @Input({ transform: booleanAttribute })\n set rdxNavigationMenuContent(value: boolean) {\n // structural directive requires this input even if unused\n }\n\n /**\n * Used to keep the content rendered and available in the DOM, even when closed.\n * Useful for animations or SEO.\n * @default false\n */\n readonly forceMount = input(false, { transform: booleanAttribute });\n\n /** @ignore */\n readonly contentId = makeContentId(this.context.baseId, this.item.value());\n /** @ignore */\n readonly triggerId = makeTriggerId(this.context.baseId, this.item.value());\n\n private escapeHandler: ((e: KeyboardEvent) => void) | null = null;\n\n /** @ignore */\n ngOnInit() {\n this.item.contentRef.set(this.elementRef.nativeElement);\n\n // register template with viewport in root menu via context\n if (isRootNavigationMenu(this.context) && this.context.onViewportContentChange) {\n this.context.onViewportContentChange(this.item.value(), {\n ref: this.elementRef,\n templateRef: this.template,\n forceMount: this.forceMount(),\n value: this.item.value(),\n getMotionAttribute: this.getMotionAttribute.bind(this),\n additionalAttrs: {\n id: this.contentId,\n 'aria-labelledby': this.triggerId,\n role: 'menu'\n }\n });\n }\n\n // add Escape key handler\n this.escapeHandler = (event: KeyboardEvent) => {\n if (event.key === ESCAPE && this.context.value() === this.item.value()) {\n // mark that this close was triggered by Escape\n this.item.wasEscapeCloseRef.set(true);\n\n // close the content\n if (this.context.onItemDismiss) {\n this.context.onItemDismiss();\n }\n\n // refocus the trigger\n setTimeout(() => {\n const trigger = this.item.triggerRef();\n if (trigger) trigger.focus();\n }, 0);\n\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n this.ngZone.runOutsideAngular(() => {\n if (this.escapeHandler) {\n this.document.addEventListener('keydown', this.escapeHandler);\n }\n });\n }\n\n /** @ignore */\n ngOnDestroy() {\n // unregister from viewport\n if (isRootNavigationMenu(this.context) && this.context.onViewportContentRemove) {\n this.context.onViewportContentRemove(this.item.value());\n }\n\n // remove escape key handler\n if (this.escapeHandler) {\n this.document.removeEventListener('keydown', this.escapeHandler);\n this.escapeHandler = null;\n }\n }\n\n /** @ignore - Compute motion attribute for animations */\n getMotionAttribute(): string | null {\n if (!isRootNavigationMenu(this.context)) return null;\n\n const itemValues = Array.from(this.context.viewportContent?.() ?? new Map()).map(([value]) => value);\n\n return getMotionAttribute(\n this.context.value(),\n this.context.previousValue(),\n this.item.value(),\n itemValues,\n this.context.dir\n );\n }\n}\n","import {\n booleanAttribute,\n computed,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n OnDestroy,\n Renderer2,\n runInInjectionContext,\n signal,\n untracked\n} from '@angular/core';\nimport { injectNavigationMenu, isRootNavigationMenu } from './navigation-menu.token';\n\n@Directive({\n selector: '[rdxNavigationMenuIndicator]',\n host: {\n '[attr.data-state]': 'isVisible() ? \"visible\" : \"hidden\"',\n '[attr.data-orientation]': 'context.orientation',\n '[style.display]': 'isVisible() ? null : \"none\"',\n 'aria-hidden': 'true'\n }\n})\nexport class RdxNavigationMenuIndicatorDirective implements OnDestroy {\n protected readonly context = injectNavigationMenu();\n private readonly elementRef = inject(ElementRef);\n private readonly renderer = inject(Renderer2);\n\n /**\n * Used to keep the indicator rendered and available in the DOM, even when hidden.\n * Useful for animations.\n * @default false\n */\n readonly forceMount = input(false, { transform: booleanAttribute });\n\n /** @ignore */\n private readonly _position = signal<{ size: number; offset: number } | null>(null);\n /** @ignore */\n private readonly _activeTrigger = signal<HTMLElement | null>(null);\n /** @ignore */\n private readonly _resizeObserver = new ResizeObserver(() => this.updatePosition());\n\n readonly isVisible = computed(() => Boolean(this.context.value() || this.forceMount()));\n\n constructor() {\n // set up effect for tracking active trigger and position\n effect(() => {\n // this effect runs when the current value changes\n const value = this.context.value();\n\n untracked(() => {\n if (value && isRootNavigationMenu(this.context)) {\n this.findAndSetActiveTrigger();\n }\n });\n });\n\n // initialize observers for position tracking\n runInInjectionContext(this.context as any, () => {\n if (isRootNavigationMenu(this.context) && this.context.indicatorTrack) {\n const track = this.context.indicatorTrack();\n if (track) {\n // observe size changes on the track\n this._resizeObserver.observe(track);\n }\n\n // initial position update if menu is open\n if (this.context.value()) {\n setTimeout(() => this.findAndSetActiveTrigger(), 0);\n }\n }\n });\n }\n\n /** @ignore */\n ngOnDestroy() {\n this._resizeObserver.disconnect();\n }\n\n /** @ignore */\n private findAndSetActiveTrigger(): void {\n if (!isRootNavigationMenu(this.context) || !this.context.indicatorTrack) return;\n\n const track = this.context.indicatorTrack();\n if (!track) return;\n\n // find all triggers within the track\n const triggers = Array.from(track.querySelectorAll('[rdxNavigationMenuTrigger]')) as HTMLElement[];\n\n // find the active trigger based on the current menu value\n const activeTrigger = triggers.find((trigger) => {\n const item = trigger.closest('[rdxNavigationMenuItem]');\n if (!item) return false;\n\n const value = item.getAttribute('value');\n return value === this.context.value();\n });\n\n if (activeTrigger && activeTrigger !== this._activeTrigger()) {\n this._activeTrigger.set(activeTrigger);\n this.updatePosition();\n }\n }\n\n /** @ignore */\n private updatePosition(): void {\n const trigger = this._activeTrigger();\n if (!trigger) return;\n\n const isHorizontal = this.context.orientation === 'horizontal';\n\n // calculate new position\n const newPosition = {\n size: isHorizontal ? trigger.offsetWidth : trigger.offsetHeight,\n offset: isHorizontal ? trigger.offsetLeft : trigger.offsetTop\n };\n\n // only update if position has changed\n if (JSON.stringify(newPosition) !== JSON.stringify(this._position())) {\n this._position.set(newPosition);\n\n // apply position styles\n const styles = isHorizontal\n ? {\n position: 'absolute',\n left: '0',\n width: `${newPosition.size}px`,\n transform: `translateX(${newPosition.offset}px)`\n }\n : {\n position: 'absolute',\n top: '0',\n height: `${newPosition.size}px`,\n transform: `translateY(${newPosition.offset}px)`\n };\n\n Object.entries(styles).forEach(([key, value]) => {\n this.renderer.setStyle(this.elementRef.nativeElement, key, value);\n });\n }\n }\n}\n","import { booleanAttribute, Directive, ElementRef, inject, input, OnInit } from '@angular/core';\nimport { ENTER, SPACE } from '@radix-ng/primitives/core';\nimport { RdxRovingFocusItemDirective } from '@radix-ng/primitives/roving-focus';\nimport { RdxNavigationMenuFocusableOption } from './navigation-menu.types';\nimport { generateId } from './utils';\n\nconst LINK_SELECT = 'navigationMenu.linkSelect';\nconst ROOT_CONTENT_DISMISS = 'navigationMenu.rootContentDismiss';\n\n@Directive({\n selector: '[rdxNavigationMenuLink]',\n hostDirectives: [{ directive: RdxRovingFocusItemDirective, inputs: ['focusable'] }],\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 providers: [{ provide: RdxNavigationMenuFocusableOption, useExisting: RdxNavigationMenuLinkDirective }]\n})\nexport class RdxNavigationMenuLinkDirective extends RdxNavigationMenuFocusableOption implements OnInit {\n private readonly rovingFocusItem = inject(RdxRovingFocusItemDirective, { self: true });\n private readonly uniqueId = generateId();\n readonly active = input(false, { transform: booleanAttribute });\n readonly onSelect = input<(event: Event) => void>();\n readonly elementRef = inject(ElementRef);\n\n ngOnInit(): void {\n this.rovingFocusItem.setTabStopId(this.elementRef.nativeElement.id || `link-${this.uniqueId}`);\n }\n\n override focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n onClick(event: Event) {\n const mouseEvent = event as MouseEvent;\n const target = event.target as HTMLElement;\n\n // dispatch link select event\n const linkSelectEvent = new CustomEvent(LINK_SELECT, {\n bubbles: true,\n cancelable: true\n });\n\n // add one-time listener for onSelect handler\n const onSelect = this.onSelect();\n if (onSelect) {\n target.addEventListener(LINK_SELECT, onSelect, { once: true });\n }\n\n // dispatch event\n target.dispatchEvent(linkSelectEvent);\n\n // if not prevented and not meta key, dismiss content\n if (!linkSelectEvent.defaultPrevented && !mouseEvent.metaKey) {\n const dismissEvent = new CustomEvent(ROOT_CONTENT_DISMISS, {\n bubbles: true,\n cancelable: true\n });\n target.dispatchEvent(dismissEvent);\n }\n }\n\n onKeydown(event: Event): void {\n const keyEvent = event as KeyboardEvent;\n // activate link on Enter or Space\n if (keyEvent.key === ENTER || keyEvent.key === SPACE) {\n // prevent default behavior like scrolling (Space) or form submission (Enter) BEFORE simulating the click.\n event.preventDefault();\n\n // simulate a click event on the link element itself\n const clickEvent = new MouseEvent('click', { bubbles: true, cancelable: true });\n this.elementRef.nativeElement.dispatchEvent(clickEvent);\n\n return;\n }\n }\n}\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport {\n AfterContentInit,\n AfterViewInit,\n contentChildren,\n Directive,\n ElementRef,\n forwardRef,\n inject,\n Renderer2\n} from '@angular/core';\nimport { TAB } from '@radix-ng/primitives/core';\nimport { RdxRovingFocusGroupDirective } from '@radix-ng/primitives/roving-focus'; // Import Roving Focus Group\nimport { RdxNavigationMenuItemDirective } from './navigation-menu-item.directive';\nimport { injectNavigationMenu, isRootNavigationMenu } from './navigation-menu.token';\n\n@Directive({\n selector: '[rdxNavigationMenuList]',\n hostDirectives: [RdxRovingFocusGroupDirective],\n host: {\n role: 'menubar',\n '(keydown)': 'onKeydown($event)'\n }\n})\nexport class RdxNavigationMenuListDirective implements AfterContentInit, AfterViewInit {\n private readonly context = injectNavigationMenu();\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n private readonly renderer = inject(Renderer2);\n private readonly rovingFocusGroup = inject(RdxRovingFocusGroupDirective, { self: true });\n\n /**\n * @private\n * @ignore\n */\n readonly items = contentChildren(\n forwardRef(() => RdxNavigationMenuItemDirective),\n { descendants: true }\n );\n\n /**\n * @ignore\n */\n protected keyManager: FocusKeyManager<RdxNavigationMenuItemDirective>;\n\n /**\n * @ignore\n */\n ngAfterContentInit(): void {\n const items = this.items();\n this.keyManager = new FocusKeyManager(items);\n\n if (this.context.orientation === 'horizontal') {\n this.keyManager.withHorizontalOrientation(this.context.dir || 'ltr');\n } else {\n this.keyManager.withVerticalOrientation();\n }\n }\n\n /**\n * @ignore\n */\n ngAfterViewInit() {\n this.rovingFocusGroup.setOrientation(this.context.orientation);\n this.rovingFocusGroup.setDir(this.context.dir);\n\n // looping typically only applies to the root menu bar\n if (isRootNavigationMenu(this.context)) {\n this.rovingFocusGroup.setLoop(this.context.loop ?? false);\n } else {\n this.rovingFocusGroup.setLoop(false);\n }\n\n if (isRootNavigationMenu(this.context) && this.context.onIndicatorTrackChange) {\n const listElement = this.elementRef.nativeElement;\n const parent = listElement.parentNode;\n\n // ensure parent exists and list hasn't already been wrapped\n if (parent && !listElement.parentElement?.hasAttribute('data-radix-navigation-menu-list-wrapper')) {\n // create a wrapper div with relative positioning\n const wrapper = this.renderer.createElement('div');\n this.renderer.setAttribute(wrapper, 'data-radix-navigation-menu-list-wrapper', ''); // Add marker\n this.renderer.setStyle(wrapper, 'position', 'relative');\n\n // insert the wrapper before the list element in the parent\n this.renderer.insertBefore(parent, wrapper, listElement);\n\n // move the list element inside the new wrapper\n this.renderer.appendChild(wrapper, listElement);\n\n // register the wrapper element as the track for the indicator positioning\n this.context.onIndicatorTrackChange(wrapper);\n } else if (listElement.parentElement?.hasAttribute('data-radix-navigation-menu-list-wrapper')) {\n // if wrapper somehow already exists, ensure context has the correct reference\n this.context.onIndicatorTrackChange(listElement.parentElement);\n }\n }\n }\n\n /**\n * @ignore\n */\n onKeydown(event: Event) {\n const keyEvent = event as KeyboardEvent;\n if (!this.keyManager.activeItem) {\n this.keyManager.setFirstItemActive();\n }\n\n if (keyEvent.key === TAB && keyEvent.shiftKey) {\n if (this.keyManager.activeItemIndex === 0) return;\n this.keyManager.setPreviousItemActive();\n event.preventDefault();\n } else if (keyEvent.key === TAB) {\n const items = this.items();\n if (this.keyManager.activeItemIndex === items.length - 1) {\n return;\n }\n this.keyManager.setNextItemActive();\n event.preventDefault();\n } else {\n this.keyManager.onKeydown(keyEvent);\n }\n }\n\n /**\n * @ignore\n */\n setActiveItem(item: RdxNavigationMenuItemDirective) {\n this.keyManager.setActiveItem(item);\n }\n}\n","import {\n booleanAttribute,\n Directive,\n effect,\n ElementRef,\n inject,\n Input,\n numberAttribute,\n OnDestroy,\n signal,\n WritableSignal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { injectDocument, injectWindow } from '@radix-ng/primitives/core';\nimport { debounce, map, Subject, tap, timer } from 'rxjs';\nimport { provideNavigationMenuContext } from './navigation-menu.token';\nimport { RdxNavigationMenuAnimationStatus } from './navigation-menu.types';\nimport { generateId } from './utils';\n\n// define action types for clearer intent\nexport enum RdxNavigationMenuAction {\n OPEN = 'open',\n CLOSE = 'close'\n}\n\n@Directive({\n selector: '[rdxNavigationMenu]',\n providers: [provideNavigationMenuContext(RdxNavigationMenuDirective)],\n host: {\n '[attr.data-orientation]': 'orientation',\n '[attr.dir]': 'dir',\n 'aria-label': 'Main',\n role: 'navigation'\n },\n exportAs: 'rdxNavigationMenu'\n})\nexport class RdxNavigationMenuDirective implements OnDestroy {\n private readonly elementRef = inject(ElementRef);\n private readonly document = injectDocument();\n private readonly window = injectWindow();\n\n // State\n readonly #value = signal<string>('');\n readonly #previousValue = signal<string>('');\n readonly baseId = `rdx-nav-menu-${generateId()}`;\n readonly #indicatorTrack = signal<HTMLElement | null>(null);\n readonly #viewport = signal<HTMLElement | null>(null);\n readonly #viewportContent = signal<Map<string, any>>(new Map());\n readonly #rootNavigationMenu = signal<HTMLElement | null>(this.elementRef.nativeElement);\n\n readonly #userDismissedByClick = signal(false);\n userDismissedByClick = () => this.#userDismissedByClick();\n resetUserDismissed = () => this.#userDismissedByClick.set(false);\n\n // delay timers\n private openTimerRef = 0;\n private closeTimerRef = 0;\n private skipDelayTimerRef = 0;\n private recentlyActivatedTimerRef = 0;\n private readonly recentlyActivatedItem = signal<string | null>(null);\n readonly #isOpenDelayed = signal(true);\n\n // pointer tracking\n readonly #isPointerOverContent = signal(false);\n readonly #isPointerOverTrigger = signal(false);\n private documentMouseLeaveHandler: ((e: Event) => void) | null = null;\n\n readonly actionSubject$ = new Subject<{ action: RdxNavigationMenuAction; itemValue?: string }>();\n\n @Input() orientation: 'horizontal' | 'vertical' = 'horizontal';\n @Input() dir: 'ltr' | 'rtl' = 'ltr';\n @Input({ transform: numberAttribute }) clickIgnoreDuration = 250;\n @Input({ transform: numberAttribute }) delayDuration = 200;\n @Input({ transform: numberAttribute }) skipDelayDuration = 300;\n @Input({ transform: booleanAttribute }) loop = false;\n @Input({ transform: booleanAttribute }) cssAnimation = false;\n @Input({ transform: booleanAttribute }) cssOpeningAnimation = false;\n @Input({ transform: booleanAttribute }) cssClosingAnimation = false;\n\n readonly isRootMenu = true;\n readonly cssAnimationStatus: WritableSignal<RdxNavigationMenuAnimationStatus | null> = signal(null);\n\n // exposed state as functions for the token\n value = () => this.#value();\n previousValue = () => this.#previousValue();\n rootNavigationMenu = () => this.#rootNavigationMenu();\n indicatorTrack = () => this.#indicatorTrack();\n viewport = () => this.#viewport();\n viewportContent = () => this.#viewportContent();\n\n // exposed pointer state\n setTriggerPointerState = (isOver: boolean) => this.#isPointerOverTrigger.set(isOver);\n setContentPointerState = (isOver: boolean) => this.#isPointerOverContent.set(isOver);\n isPointerInSystem = () => this.#isPointerOverContent() || this.#isPointerOverTrigger();\n\n // exposed animation state\n getCssAnimation = () => this.cssAnimation;\n getCssOpeningAnimation = () => this.cssOpeningAnimation;\n getCssClosingAnimation = () => this.cssClosingAnimation;\n\n constructor() {\n effect(() => {\n const value = this.#value();\n if (value) {\n this.window.clearTimeout(this.skipDelayTimerRef);\n if (this.skipDelayDuration > 0) {\n this.#isOpenDelayed.set(false);\n }\n } else {\n // menu is closed, start skip delay timer\n this.window.clearTimeout(this.skipDelayTimerRef);\n this.skipDelayTimerRef = this.window.setTimeout(() => {\n this.#isOpenDelayed.set(true);\n }, this.skipDelayDuration);\n }\n });\n\n this.actionSubject$\n .pipe(\n map((config) => {\n // different delays for open vs close (better ux)\n const duration = config.action === RdxNavigationMenuAction.OPEN ? this.delayDuration : 150;\n return { ...config, duration };\n }),\n debounce((config) => timer(config.duration)),\n tap((config) => {\n switch (config.action) {\n case RdxNavigationMenuAction.OPEN:\n if (config.itemValue) {\n this.setValue(config.itemValue);\n }\n break;\n case RdxNavigationMenuAction.CLOSE:\n // only close if not hovering over any part of the system\n if (!this.isPointerInSystem()) {\n this.setValue('');\n }\n break;\n }\n }),\n takeUntilDestroyed()\n )\n .subscribe();\n\n // set up document mouseleave handler to close menu when mouse leaves window\n this.documentMouseLeaveHandler = () => this.handleClose();\n this.document.addEventListener('mouseleave', this.documentMouseLeaveHandler);\n }\n\n ngOnDestroy() {\n this.window.clearTimeout(this.openTimerRef);\n this.window.clearTimeout(this.closeTimerRef);\n this.window.clearTimeout(this.skipDelayTimerRef);\n this.window.clearTimeout(this.recentlyActivatedTimerRef);\n\n // clean up document event listener\n if (this.documentMouseLeaveHandler) {\n document.removeEventListener('mouseleave', this.documentMouseLeaveHandler);\n }\n }\n\n onIndicatorTrackChange(track: HTMLElement | null) {\n this.#indicatorTrack.set(track);\n }\n\n onViewportChange(viewport: HTMLElement | null) {\n this.#viewport.set(viewport);\n }\n\n onTriggerEnter(itemValue: string) {\n // skip opening if user explicitly dismissed this menu\n if (this.#userDismissedByClick() && itemValue === this.#previousValue()) {\n return;\n }\n\n this.window.clearTimeout(this.openTimerRef);\n this.window.clearTimeout(this.closeTimerRef);\n\n if (this.#isOpenDelayed()) {\n this.handleDelayedOpen(itemValue);\n } else {\n this.handleOpen(itemValue);\n }\n }\n\n onTriggerLeave() {\n this.window.clearTimeout(this.openTimerRef);\n this.startCloseTimer();\n }\n\n onContentEnter() {\n this.window.clearTimeout(this.closeTimerRef);\n }\n\n onContentLeave() {\n this.startCloseTimer();\n }\n\n handleClose() {\n this.actionSubject$.next({ action: RdxNavigationMenuAction.CLOSE });\n }\n\n onItemSelect(itemValue: string) {\n const wasOpen = this.#value() === itemValue;\n\n // if this item just opened and the click would close it,\n // ignore the click during the brief protection window\n if (this.recentlyActivatedItem() === itemValue && wasOpen) {\n return;\n }\n\n const newValue = wasOpen ? '' : itemValue;\n\n // if user is closing an open menu, mark as user-dismissed\n if (wasOpen) {\n this.#userDismissedByClick.set(true);\n } else {\n this.#userDismissedByClick.set(false);\n }\n\n this.setValue(newValue);\n }\n\n onItemDismiss() {\n this.setValue('');\n }\n\n onViewportContentChange(contentValue: string, contentData: any) {\n const newMap = new Map(this.#viewportContent());\n newMap.set(contentValue, contentData);\n this.#viewportContent.set(newMap);\n }\n\n onViewportContentRemove(contentValue: string) {\n const newMap = new Map(this.#viewportContent());\n if (newMap.has(contentValue)) {\n newMap.delete(contentValue);\n this.#viewportContent.set(newMap);\n }\n }\n\n private setValue(value: string) {\n const previousValue = this.#value();\n\n if (value && value !== previousValue) {\n this.window.clearTimeout(this.recentlyActivatedTimerRef);\n\n this.recentlyActivatedItem.set(value);\n\n this.recentlyActivatedTimerRef = this.window.setTimeout(() => {\n this.recentlyActivatedItem.set(null);\n }, this.clickIgnoreDuration);\n }\n\n // store previous value before changing\n this.#previousValue.set(previousValue);\n this.#value.set(value);\n }\n\n private startCloseTimer() {\n this.window.clearTimeout(this.closeTimerRef);\n this.closeTimerRef = this.window.setTimeout(() => {\n // only close if not hovering over any part of the system\n if (!this.isPointerInSystem()) {\n this.setValue('');\n }\n }, 150);\n }\n\n private handleOpen(itemValue: string) {\n this.window.clearTimeout(this.closeTimerRef);\n this.setValue(itemValue);\n }\n\n private handleDelayedOpen(itemValue: string) {\n const isOpenItem = this.#value() === itemValue;\n if (isOpenItem) {\n // if the item is already open, clear close timer\n this.window.clearTimeout(this.closeTimerRef);\n } else {\n // otherwise, start the open timer\n this.openTimerRef = this.window.setTimeout(() => {\n this.window.clearTimeout(this.closeTimerRef);\n this.setValue(itemValue);\n }, this.delayDuration);\n }\n }\n}\n","import { Directive, inject, Input, input, output, signal } from '@angular/core';\nimport { RdxNavigationMenuDirective } from './navigation-menu.directive';\nimport { provideNavigationMenuContext } from './navigation-menu.token';\nimport { generateId } from './utils';\n\n@Directive({\n selector: '[rdxNavigationMenuSub]',\n providers: [provideNavigationMenuContext(RdxNavigationMenuSubDirective)],\n host: {\n '[attr.data-orientation]': 'orientation()'\n }\n})\nexport class RdxNavigationMenuSubDirective {\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n @Input() set defaultValue(val: string) {\n if (val) this.value.set(val);\n }\n\n readonly valueChange = output<string>();\n\n readonly value = signal<string>('');\n readonly previousValue = signal<string>('');\n readonly baseId = `rdx-nav-menu-sub-${generateId()}`;\n readonly isRootMenu = false;\n\n private readonly parent = inject(RdxNavigationMenuDirective, { optional: true });\n\n get dir(): 'ltr' | 'rtl' {\n if (!this.parent) {\n return 'ltr';\n }\n\n return this.parent.dir || 'ltr';\n }\n\n get rootNavigationMenu(): HTMLElement | null {\n return this.parent?.rootNavigationMenu() || null;\n }\n\n onTriggerEnter(itemValue: string) {\n this.setValue(itemValue);\n }\n\n onItemSelect(itemValue: string) {\n this.setValue(itemValue);\n }\n\n onItemDismiss() {\n this.setValue('');\n }\n\n private setValue(value: string) {\n this.previousValue.set(this.value());\n this.value.set(value);\n this.valueChange.emit(value);\n }\n}\n","import {\n booleanAttribute,\n ComponentRef,\n computed,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n OnDestroy,\n OnInit,\n untracked,\n ViewContainerRef\n} from '@angular/core';\nimport { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, ENTER, SPACE, TAB } from '@radix-ng/primitives/core';\nimport { RdxRovingFocusItemDirective } from '@radix-ng/primitives/roving-focus';\nimport {\n RdxNavigationMenuAriaOwnsComponent,\n RdxNavigationMenuFocusProxyComponent\n} from './navigation-menu-a11y.component';\nimport { RdxNavigationMenuItemDirective } from './navigation-menu-item.directive';\nimport { RdxNavigationMenuListDirective } from './navigation-menu-list.directive';\nimport { injectNavigationMenu, isRootNavigationMenu } from './navigation-menu.token';\nimport { RdxNavigationMenuFocusableOption } from './navigation-menu.types';\nimport { getTabbableCandidates, makeContentId, makeTriggerId } from './utils';\n\n@Directive({\n selector: '[rdxNavigationMenuTrigger]',\n hostDirectives: [RdxRovingFocusItemDirective],\n host: {\n '[id]': 'triggerId',\n '[attr.data-state]': 'open() ? \"open\" : \"closed\"',\n '[attr.data-orientation]': 'context.orientation',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined',\n '[attr.disabled]': 'disabled() ? \"\" : undefined',\n '[attr.aria-expanded]': 'open()',\n '[attr.aria-controls]': 'contentId',\n '[attr.aria-haspopup]': '\"menu\"',\n '(pointerenter)': 'onPointerEnter()',\n '(pointermove)': 'onPointerMove($event)',\n '(pointerleave)': 'onPointerLeave($event)',\n '(click)': 'onClick()',\n '(keydown)': 'onKeydown($event)',\n type: 'button'\n },\n providers: [{ provide: RdxNavigationMenuFocusableOption, useExisting: RdxNavigationMenuTriggerDirective }]\n})\nexport class RdxNavigationMenuTriggerDirective extends RdxNavigationMenuFocusableOption implements OnInit, OnDestroy {\n protected readonly context = injectNavigationMenu()!;\n private readonly item = inject(RdxNavigationMenuItemDirective);\n private readonly list = inject(RdxNavigationMenuListDirective);\n private readonly rovingFocusItem = inject(RdxRovingFocusItemDirective, { self: true });\n private readonly elementRef = inject(ElementRef);\n private readonly viewContainerRef = inject(ViewContainerRef);\n\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly openOnHover = input(true, { transform: booleanAttribute });\n\n readonly triggerId = makeTriggerId(this.context.baseId, this.item.value());\n readonly contentId = makeContentId(this.context.baseId, this.item.value());\n readonly open = computed(() => {\n return this.item.value() === this.context.value();\n });\n\n private focusProxyRef: ComponentRef<RdxNavigationMenuFocusProxyComponent> | null = null;\n private ariaOwnsRef: ComponentRef<RdxNavigationMenuAriaOwnsComponent> | null = null;\n\n private hasPointerMoveOpened = false;\n private wasClickClose = false;\n\n constructor() {\n super();\n\n effect(() => {\n this.rovingFocusItem.setFocusable(!this.disabled());\n });\n\n effect(() => {\n const isOpen = this.open();\n\n untracked(() => {\n // handle focus proxy and aria-owns when open state changes\n if (isOpen) {\n this.createAccessibilityComponents();\n } else {\n this.removeAccessibilityComponents();\n\n if (!this.item.wasEscapeCloseRef()) {\n this.item.onRootContentClose();\n }\n\n this.hasPointerMoveOpened = false;\n }\n });\n });\n }\n\n ngOnInit() {\n this.item.triggerRef.set(this.elementRef.nativeElement);\n\n // configure the static part of the roving focus item directive instance\n this.rovingFocusItem.setTabStopId(this.item.value());\n }\n\n ngOnDestroy() {\n this.removeAccessibilityComponents();\n }\n\n override focus() {\n this.elementRef.nativeElement.focus();\n }\n\n private createAccessibilityComponents(): void {\n if (this.focusProxyRef || this.ariaOwnsRef) {\n return;\n }\n\n // create focus proxy component\n this.focusProxyRef = this.viewContainerRef.createComponent(RdxNavigationMenuFocusProxyComponent);\n this.focusProxyRef.instance.triggerElement = this.elementRef.nativeElement;\n this.focusProxyRef.instance.contentElement = this.item.contentRef();\n this.focusProxyRef.instance.proxyFocus.subscribe((direction: 'start' | 'end') => {\n this.item.onFocusProxyEnter(direction);\n });\n\n // store reference in item directive\n this.item.focusProxyRef.set(this.focusProxyRef.location.nativeElement);\n\n // only add aria-owns component if using viewport\n if (isRootNavigationMenu(this.context) && this.context.viewport && this.context.viewport()) {\n this.ariaOwnsRef = this.viewContainerRef.createComponent(RdxNavigationMenuAriaOwnsComponent);\n this.ariaOwnsRef.instance.contentId = this.contentId;\n }\n }\n\n private removeAccessibilityComponents(): void {\n if (this.focusProxyRef) {\n this.focusProxyRef.destroy();\n this.focusProxyRef = null;\n this.item.focusProxyRef.set(null);\n }\n\n if (this.ariaOwnsRef) {\n this.ariaOwnsRef.destroy();\n this.ariaOwnsRef = null;\n }\n }\n\n onPointerEnter(): void {\n // ignore if disabled or not the root menu\n if (this.disabled() || !isRootNavigationMenu(this.context)) return;\n\n this.wasClickClose = false; // Reset click close flag on enter\n this.item.wasEscapeCloseRef.set(false); // Reset escape flag\n this.context.setTriggerPointerState?.(true); // Update context state\n\n // if the menu isn't already open for this item, trigger the enter logic\n if (!this.open()) {\n if (this.openOnHover() || this.context.value() !== '') {\n this.context.onTriggerEnter?.(this.item.value());\n }\n }\n }\n\n onPointerMove(event: Event): void {\n const pointerEvent = event as PointerEvent;\n // ignore if not a mouse event, disabled, closed by click/escape, or already opened by this move\n if (\n pointerEvent.pointerType !== 'mouse' ||\n this.disabled() ||\n this.wasClickClose ||\n this.item.wasEscapeCloseRef() ||\n this.hasPointerMoveOpened ||\n !isRootNavigationMenu(this.context)\n ) {\n return;\n }\n this.hasPointerMoveOpened = true;\n }\n\n onPointerLeave(event: Event): void {\n const pointerEvent = event as PointerEvent;\n // ignore if not a mouse event or disabled\n if (pointerEvent.pointerType !== 'mouse' || this.disabled() || !isRootNavigationMenu(this.context)) {\n return;\n }\n\n this.context.setTriggerPointerState?.(false); // Update context state\n this.context.onTriggerLeave?.(); // Trigger leave logic (handles delays)\n this.hasPointerMoveOpened = false; // Reset flag\n\n // reset user dismissal flag if pointer leaves the whole system (trigger + content)\n if (this.context.resetUserDismissed) {\n // relay slightly to allow pointer movement to content area without resetting dismissal state\n setTimeout(() => {\n if (!this.context.isPointerInSystem?.()) {\n this.context.resetUserDismissed?.();\n }\n }, 50); // small delay for tolerance\n }\n }\n\n onClick(): void {\n if (this.disabled()) return;\n\n // manually set the `KeyManager` active item to this trigger\n this.list.setActiveItem(this.item);\n\n if (this.context.onItemSelect) {\n this.context.onItemSelect(this.item.value());\n // track if this click action resulted in closing the menu\n this.wasClickClose = !this.open();\n // reset escape flag if menu was opened by click\n if (this.open()) {\n this.item.wasEscapeCloseRef.set(false);\n }\n }\n }\n\n onKeydown(event: Event): void {\n const keyEvent = event as KeyboardEvent;\n if (this.disabled()) return;\n\n if (keyEvent.key === ENTER || keyEvent.key === SPACE) {\n event.preventDefault(); // prevent default button behavior\n this.onClick();\n\n // if menu was opened by this keypress, move focus into the content\n if (this.open()) {\n // defer focus slightly to ensure content is ready\n setTimeout(() => this.item.onEntryKeyDown(), 0);\n }\n return;\n }\n\n const isHorizontal = this.context.orientation === 'horizontal';\n const isRTL = this.context.dir === 'rtl';\n\n // handle `ArrowDown` specifically for viewport navigation\n if (keyEvent.key === ARROW_DOWN || keyEvent.key === TAB) {\n if (keyEvent.key === ARROW_DOWN) {\n event.preventDefault();\n }\n\n // if the menu is open, focus into the content\n if (this.open()) {\n if (keyEvent.key === TAB) {\n // needed to ensure that the `keyManager` on the list directive does not activate\n // any focus updates, shifting focus to the subsequent focusable list item\n event.stopImmediatePropagation();\n }\n\n // direct focus handling for viewport case\n if (isRootNavigationMenu(this.context) && this.context.viewport && this.context.viewport()) {\n // get the viewport element\n const viewport = this.context.viewport();\n if (viewport) {\n // find all tabbable elements in the viewport\n const tabbables = getTabbableCandidates(viewport);\n if (tabbables.length > 0) {\n // focus the first tabbable element directly\n setTimeout(() => {\n tabbables[0].focus();\n }, 0);\n return;\n }\n }\n }\n\n // fallback to the standard entry key down approach\n setTimeout(() => this.item.onEntryKeyDown(), 0);\n return;\n }\n\n // if not open but in horizontal orientation, emulate right key navigation\n if (isHorizontal) {\n const nextEvent = new KeyboardEvent('keydown', {\n key: isRTL ? ARROW_LEFT : ARROW_RIGHT,\n bubbles: true\n });\n this.elementRef.nativeElement.dispatchEvent(nextEvent);\n return;\n }\n }\n\n // handle ArrowUp in horizontal orientation\n if (isHorizontal && keyEvent.key === ARROW_UP) {\n event.preventDefault();\n\n // emulate a left key press to move to the previous item\n const nextEvent = new KeyboardEvent('keydown', {\n key: isRTL ? ARROW_RIGHT : ARROW_LEFT,\n bubbles: true\n });\n this.elementRef.nativeElement.dispatchEvent(nextEvent);\n return;\n }\n\n // handle vertical navigation and entry into content\n const verticalEntryKey = isRTL ? ARROW_LEFT : ARROW_RIGHT;\n const entryKey = isHorizontal ? ARROW_DOWN : verticalEntryKey;\n\n if (this.item.contentRef() && keyEvent.key === entryKey && keyEvent.key !== ARROW_DOWN) {\n // Skip if it's ArrowDown as we already handled it above\n event.preventDefault();\n\n if (!this.open()) {\n // if closed, open the menu first\n this.context.onItemSelect?.(this.item.value());\n // defer focus movement into content until after state update and render\n setTimeout(() => this.item.onEntryKeyDown(), 0);\n } else {\n // if already open, just move focus into the content\n this.item.onEntryKeyDown();\n }\n return;\n }\n }\n}\n","import {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n EmbeddedViewRef,\n inject,\n input,\n NgZone,\n OnDestroy,\n OnInit,\n Renderer2,\n signal,\n untracked,\n ViewContainerRef\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ARROW_DOWN, ARROW_UP, injectDocument, injectWindow } from '@radix-ng/primitives/core';\nimport { TransitionOptions, TransitionStartFn, usePresence } from '@radix-ng/primitives/presence';\nimport { Subscription } from 'rxjs';\nimport { injectNavigationMenu, isRootNavigationMenu } from './navigation-menu.token';\nimport { getOpenStateLabel, getTabbableCandidates } from './utils';\n\ninterface ContentNode {\n embeddedView: EmbeddedViewRef<unknown>;\n element: HTMLElement;\n contentValue: string;\n state: 'open' | 'closed';\n transitionSubscription?: Subscription | null;\n}\n\n@Directive({\n selector: '[rdxNavigationMenuViewport]',\n host: {\n '[attr.data-state]': 'dataState()',\n '[attr.data-orientation]': 'context.orientation',\n '[style.--radix-navigation-menu-viewport-width.px]': 'viewportSize()?.width',\n '[style.--radix-navigation-menu-viewport-height.px]': 'viewportSize()?.height',\n '(keydown)': 'onKeydown($event)',\n '(pointerenter)': 'onPointerEnter()',\n '(pointerleave)': 'onPointerLeave()'\n }\n})\nexport class RdxNavigationMenuViewportDirective implements OnInit, OnDestroy {\n protected readonly context = injectNavigationMenu();\n private readonly document = injectDocument();\n private readonly window = injectWindow();\n private readonly elementRef = inject(ElementRef);\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly renderer = inject(Renderer2);\n private readonly zone = inject(NgZone);\n private readonly destroyRef = inject(DestroyRef);\n\n /**\n * Used to keep the viewport rendered and available in the DOM, even when closed.\n * Useful for animations.\n * @default false\n */\n readonly forceMount = input(false, { transform: booleanAttribute });\n\n private readonly _contentNodes = signal(new Map<string, ContentNode>());\n private readonly _activeContentNode = signal<ContentNode | null>(null);\n private readonly _leavingContentNode = signal<ContentNode | null>(null);\n private readonly _viewportSize = signal<{ width: number; height: number } | null>(null);\n\n readonly activeContentValue = computed(() => {\n if (!isRootNavigationMenu(this.context)) return null;\n return this.context.value() || this.context.previousValue();\n });\n readonly isOpen = computed(() => {\n if (!isRootNavigationMenu(this.context)) return false;\n return Boolean(this.context.value() || this.forceMount());\n });\n readonly dataState = computed(() => getOpenStateLabel(this.isOpen()));\n readonly viewportSize = computed(() => this._viewportSize());\n\n private readonly _resizeObserver = new ResizeObserver(() => this.updateSize());\n\n constructor() {\n this.setupViewportEffect();\n }\n\n ngOnInit() {\n if (isRootNavigationMenu(this.context) && this.context.onViewportChange) {\n this.context.onViewportChange(this.elementRef.nativeElement);\n }\n }\n\n ngOnDestroy() {\n this._resizeObserver.disconnect();\n // clean up any remaining nodes/views/subscriptions\n this._contentNodes().forEach((node) => this.cleanupAfterLeave(node));\n if (isRootNavigationMenu(this.context) && this.context.onViewportChange) {\n this.context.onViewportChange(null);\n }\n }\n\n onKeydown(event: Event): void {\n const keyEvent = event as KeyboardEvent;\n if (!this.isOpen()) return;\n const tabbableElements = getTabbableCandidates(this.elementRef.nativeElement);\n if (!tabbableElements.length) return;\n const activeElement = this.document.activeElement as HTMLElement | null;\n const currentIndex = tabbableElements.findIndex((el) => el === activeElement);\n\n if (keyEvent.key === ARROW_DOWN) {\n event.preventDefault();\n const nextIndex = currentIndex >= 0 && currentIndex < tabbableElements.length - 1 ? currentIndex + 1 : 0;\n tabbableElements[nextIndex]?.focus();\n } else if (keyEvent.key === ARROW_UP) {\n event.preventDefault();\n const prevIndex = currentIndex > 0 ? currentIndex - 1 : tabbableElements.length - 1;\n tabbableElements[prevIndex]?.focus();\n }\n }\n\n onPointerEnter(): void {\n if (isRootNavigationMenu(this.context) && this.context.onContentEnter) {\n this.context.onContentEnter();\n }\n if (isRootNavigationMenu(this.context) && this.context.setContentPointerState) {\n this.context.setContentPointerState(true);\n }\n }\n\n onPointerLeave(): void {\n if (isRootNavigationMenu(this.context) && this.context.onContentLeave) {\n this.context.onContentLeave();\n }\n if (isRootNavigationMenu(this.context) && this.context.setContentPointerState) {\n this.context.setContentPointerState(false);\n }\n }\n\n private setupViewportEffect(): void {\n effect(() => {\n const currentActiveValue = this.context.value();\n const previousActiveValue = this.context.previousValue();\n const forceMount = this.forceMount();\n\n untracked(() => {\n // ensure context is root before proceeding\n if (!isRootNavigationMenu(this.context) || !this.context.viewportContent) {\n return;\n }\n\n const allContentData = this.context.viewportContent();\n const currentNodesMap = this._contentNodes();\n let enteringNode: ContentNode | null = null;\n let leavingNode = this._leavingContentNode(); // get potentially already leaving node\n\n // 1. Identify Entering Node\n if (currentActiveValue && allContentData.has(currentActiveValue)) {\n enteringNode = this.getOrCreateContentNode(currentActiveValue);\n }\n\n // 2. Identify Leaving Node\n const nodeThatWasActive = previousActiveValue ? currentNodesMap.get(previousActiveValue) : null;\n // if there was a previously active node, it's different from the entering one,\n // and it's not already leaving, mark it for removal.\n if (nodeThatWasActive && nodeThatWasActive !== enteringNode && nodeThatWasActive !== leavingNode) {\n // if another node was already leaving, force complete its transition\n if (leavingNode) {\n this.forceCompleteLeaveTransition(leavingNode);\n }\n leavingNode = nodeThatWasActive;\n this._leavingContentNode.set(leavingNode);\n }\n\n // 3. Handle Entering Node\n if (enteringNode) {\n // cancel any pending leave transition for this node if it was leaving\n if (enteringNode === leavingNode) {\n this.cancelLeaveTransition(enteringNode);\n leavingNode = null;\n this._leavingContentNode.set(null);\n }\n // ensure it's in the DOM and set state to open\n this.addNodeToDOM(enteringNode);\n this.setNodeState(enteringNode, 'open'); // Triggers enter animation via data-state\n this._activeContentNode.set(enteringNode);\n this.updateSize(); // Update size based on the entering node\n } else {\n // no node entering, clear active node state\n this._activeContentNode.set(null);\n }\n\n // 4. Handle Leaving Node\n if (leavingNode) {\n if (forceMount) {\n // if forceMount, just mark as closed, don't trigger removal animation\n this.setNodeState(leavingNode, 'closed');\n this._leavingContentNode.set(null); // No longer considered \"leaving\"\n } else {\n // start the leave transition (usePresence handles DOM removal)\n this.startLeaveTransition(leavingNode);\n }\n }\n });\n });\n }\n\n // gets or creates the ContentNode (wrapper + view)\n private getOrCreateContentNode(contentValue: string): ContentNode | null {\n const existingNode = this._contentNodes().get(contentValue);\n if (existingNode && !existingNode.embeddedView.destroyed) {\n return existingNode;\n }\n\n // create if doesn't exist or view was destroyed\n if (!isRootNavigationMenu(this.context) || !this.context.viewportContent) return null;\n const allContentData = this.context.viewportContent();\n const contentData = allContentData.get(contentValue);\n const templateRef = contentData?.templateRef;\n\n if (!templateRef) {\n console.error(`No templateRef found for content value: ${contentValue}`);\n return null;\n }\n\n try {\n const embeddedView = this.viewContainerRef.createEmbeddedView(templateRef);\n const container = this.renderer.createElement('div');\n this.renderer.setAttribute(container, 'class', 'NavigationMenuContentWrapper');\n this.renderer.setAttribute(container, 'data-content-value', contentValue);\n embeddedView.rootNodes.forEach((node: Node) => this.renderer.appendChild(container, node));\n\n const newNode: ContentNode = {\n embeddedView,\n element: container,\n contentValue,\n state: 'closed'\n };\n\n const newMap = new Map(this._contentNodes());\n newMap.set(contentValue, newNode);\n this._contentNodes.set(newMap);\n return newNode;\n } catch (error) {\n console.error(`Error creating content node for ${contentValue}:`, error);\n return null;\n }\n }\n\n // adds node element to viewport DOM if not already present\n private addNodeToDOM(node: ContentNode): void {\n if (!this.elementRef.nativeElement.contains(node.element)) {\n this.renderer.appendChild(this.elementRef.nativeElement, node.element);\n // observe size only when added to DOM\n this._resizeObserver.observe(node.element);\n }\n }\n\n // removes node element from viewport DOM\n private removeNodeFromDOM(node: ContentNode): void {\n if (this.elementRef.nativeElement.contains(node.element)) {\n this._resizeObserver.unobserve(node.element); // stop observing before removal\n this.renderer.removeChild(this.elementRef.nativeElement, node.element);\n }\n }\n\n // updates the data-state and motion attributes\n private setNodeState(node: ContentNode, state: 'open' | 'closed'): void {\n if (node.state === state) return; // avoid redundant updates\n\n node.state = state;\n this.renderer.setAttribute(node.element, 'data-state', state);\n\n // apply motion attribute based on context\n if (isRootNavigationMenu(this.context) && this.context.viewportContent) {\n const contentData = this.context.viewportContent().get(node.contentValue);\n if (contentData?.getMotionAttribute) {\n // get motion based on current state transition\n const motionAttr = contentData.getMotionAttribute();\n if (motionAttr) {\n this.renderer.setAttribute(node.element, 'data-motion', motionAttr);\n } else {\n this.renderer.removeAttribute(node.element, 'data-motion');\n }\n } else {\n this.renderer.removeAttribute(node.element, 'data-motion');\n }\n }\n\n // apply A11y attributes (might only be needed on open?)\n if (state === 'open') {\n this.applyA11yAttributes(node);\n }\n }\n\n // apply A11y attributes to the first child element\n private applyA11yAttributes(node: ContentNode): void {\n if (!isRootNavigationMenu(this.context) || !this.context.viewportContent) return;\n const contentData = this.context.viewportContent().get(node.contentValue);\n if (contentData?.additionalAttrs && node.embeddedView.rootNodes.length > 0) {\n const firstRootNode = node.embeddedView.rootNodes[0] as Element;\n if (firstRootNode) {\n Object.entries(contentData.additionalAttrs).forEach(([attr, value]) => {\n this.renderer.setAttribute(firstRootNode, attr, value as string);\n });\n }\n }\n }\n\n private startLeaveTransition(node: ContentNode): void {\n // ensure node exists and isn't already leaving with an active subscription\n if (!node || node.transitionSubscription) {\n node.transitionSubscription?.unsubscribe();\n return;\n }\n\n const startFn: TransitionStartFn<null> = () => {\n this.setNodeState(node, 'closed');\n return () => this.cleanupAfterLeave(node);\n };\n\n const options: TransitionOptions<null> = {\n animation: true, // assuming CSS animations/transitions handle the exit\n state: 'continue' // start the leave process\n };\n\n node.transitionSubscription = usePresence(this.zone, node.element, startFn, options)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n complete: () => {\n this.cleanupAfterLeave(node);\n }\n });\n }\n\n /**\n * Cleanup function called after leave animation finishes\n * @param node The node that is leaving\n */\n private cleanupAfterLeave(node: ContentNode): void {\n // check if this node is still marked as the one leaving\n if (this._leavingContentNode() === node) {\n this.removeNodeFromDOM(node);\n if (!this.forceMount() && node.embeddedView && !node.embeddedView.destroyed) {\n node.embeddedView.destroy();\n // Remove from cache if destroyed\n const newMap = new Map(this._contentNodes());\n newMap.delete(node.contentValue);\n this._contentNodes.set(newMap);\n }\n\n node.transitionSubscription = null;\n this._leavingContentNode.set(null);\n\n if (!this._activeContentNode() && !this.forceMount()) {\n this._viewportSize.set(null);\n }\n } else {\n // if this node is NOT the one currently marked as leaving, it means\n // a new transition started before this one finished. Just clean up DOM/Sub.\n this.removeNodeFromDOM(node);\n node.transitionSubscription?.unsubscribe();\n node.transitionSubscription = null;\n }\n }\n\n /**\n * Cancels an ongoing leave transition (e.g., if user hovers back)\n * @param node The node that is leaving\n */\n private cancelLeaveTransition(node: ContentNode): void {\n node.transitionSubscription?.unsubscribe();\n node.transitionSubscription = null;\n }\n\n /**\n * Force completes a leave transition (e.g., if another leave starts)\n * @param node The node that is leaving\n */\n private forceCompleteLeaveTransition(node: ContentNode): void {\n if (node && node.transitionSubscription) {\n node.transitionSubscription.unsubscribe();\n\n // perform cleanup immediately\n this.cleanupAfterLeave(node);\n }\n }\n\n private updateSize() {\n const activeNode = this._activeContentNode()?.element; // measure the currently active node\n if (!activeNode || !activeNode.isConnected) return;\n\n const firstChild = activeNode.firstChild as HTMLElement;\n if (!firstChild) return;\n\n this.window.requestAnimationFrame(() => {\n // keep rAF here for measurement stability\n activeNode.getBoundingClientRect(); // force layout\n const width = Math.ceil(firstChild.offsetWidth);\n const height = Math.ceil(firstChild.offsetHeight);\n\n if (width !== 0 || height !== 0) {\n const currentSize = this._viewportSize();\n if (!currentSize || currentSize.width !== width || currentSize.height !== height) {\n this._viewportSize.set({ width, height });\n }\n } else if (this._viewportSize() !== null) {\n this._viewportSize.set(null);\n }\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport {\n RdxNavigationMenuAriaOwnsComponent,\n RdxNavigationMenuFocusProxyComponent\n} from './src/navigation-menu-a11y.component';\nimport { RdxNavigationMenuContentDirective } from './src/navigation-menu-content.directive';\nimport { RdxNavigationMenuIndicatorDirective } from './src/navigation-menu-indicator.directive';\nimport { RdxNavigationMenuItemDirective } from './src/navigation-menu-item.directive';\nimport { RdxNavigationMenuLinkDirective } from './src/navigation-menu-link.directive';\nimport { RdxNavigationMenuListDirective } from './src/navigation-menu-list.directive';\nimport { RdxNavigationMenuSubDirective } from './src/navigation-menu-sub.directive';\nimport { RdxNavigationMenuTriggerDirective } from './src/navigation-menu-trigger.directive';\nimport { RdxNavigationMenuViewportDirective } from './src/navigation-menu-viewport.directive';\nimport { RdxNavigationMenuDirective } from './src/navigation-menu.directive';\n\nexport * from './src/navigation-menu-a11y.component';\nexport * from './src/navigation-menu-content.directive';\nexport * from './src/navigation-menu-indicator.directive';\nexport * from './src/navigation-menu-item.directive';\nexport * from './src/navigation-menu-link.directive';\nexport * from './src/navigation-menu-list.directive';\nexport * from './src/navigation-menu-sub.directive';\nexport * from './src/navigation-menu-trigger.directive';\nexport * from './src/navigation-menu-viewport.directive';\nexport * from './src/navigation-menu.directive';\nexport * from './src/navigation-menu.token';\nexport * from './src/navigation-menu.types';\n\nconst _imports = [\n RdxNavigationMenuDirective,\n RdxNavigationMenuSubDirective,\n RdxNavigationMenuListDirective,\n RdxNavigationMenuItemDirective,\n RdxNavigationMenuTriggerDirective,\n RdxNavigationMenuLinkDirective,\n RdxNavigationMenuIndicatorDirective,\n RdxNavigationMenuContentDirective,\n RdxNavigationMenuViewportDirective,\n RdxNavigationMenuFocusProxyComponent,\n RdxNavigationMenuAriaOwnsComponent\n];\n\n@NgModule({\n imports: [..._imports],\n exports: [..._imports]\n})\nexport class RdxNavigationMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["ROOT_CONTENT_DISMISS"],"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-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');\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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"}
|