@radix-ng/primitives 1.0.0-beta.2 → 1.0.0-beta.4
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/LICENSE +1 -1
- package/README.md +76 -6
- package/fesm2022/radix-ng-primitives-accordion.mjs +5 -3
- package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-alert-dialog.mjs +31 -24
- package/fesm2022/radix-ng-primitives-alert-dialog.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-autocomplete.mjs +1744 -0
- package/fesm2022/radix-ng-primitives-autocomplete.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-calendar.mjs +5 -3
- package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-combobox.mjs +1399 -606
- package/fesm2022/radix-ng-primitives-combobox.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-config.mjs +13 -4
- package/fesm2022/radix-ng-primitives-config.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-context-menu.mjs +51 -10
- package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-core.mjs +1345 -64
- package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-date-field.mjs +5 -3
- package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-dialog.mjs +271 -145
- package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-direction-provider.mjs +70 -0
- package/fesm2022/radix-ng-primitives-direction-provider.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-dismissable-layer.mjs +519 -184
- package/fesm2022/radix-ng-primitives-dismissable-layer.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-drawer.mjs +154 -64
- package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-field.mjs +3 -2
- package/fesm2022/radix-ng-primitives-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs +517 -0
- package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-focus-scope.mjs +296 -70
- package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menu.mjs +894 -299
- package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menubar.mjs +32 -4
- package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs +176 -207
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popover.mjs +250 -250
- package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popper.mjs +94 -45
- package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-portal.mjs +107 -17
- package/fesm2022/radix-ng-primitives-portal.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-presence.mjs +262 -79
- package/fesm2022/radix-ng-primitives-presence.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-preview-card.mjs +172 -218
- package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-roving-focus.mjs +4 -2
- package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-scroll-area.mjs +5 -4
- package/fesm2022/radix-ng-primitives-scroll-area.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-select.mjs +303 -234
- package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-slider.mjs +5 -3
- package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-stepper.mjs +5 -3
- package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-time-field.mjs +5 -3
- package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toast.mjs +15 -36
- package/fesm2022/radix-ng-primitives-toast.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle-group.mjs +5 -3
- package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toolbar.mjs +5 -3
- package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tooltip.mjs +105 -145
- package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
- package/package.json +14 -1
- package/types/radix-ng-primitives-accordion.d.ts +4 -3
- package/types/radix-ng-primitives-alert-dialog.d.ts +17 -11
- package/types/radix-ng-primitives-autocomplete.d.ts +661 -0
- package/types/radix-ng-primitives-calendar.d.ts +5 -3
- package/types/radix-ng-primitives-combobox.d.ts +727 -293
- package/types/radix-ng-primitives-config.d.ts +1 -1
- package/types/radix-ng-primitives-context-menu.d.ts +15 -5
- package/types/radix-ng-primitives-core.d.ts +762 -14
- package/types/radix-ng-primitives-date-field.d.ts +3 -2
- package/types/radix-ng-primitives-dialog.d.ts +107 -55
- package/types/radix-ng-primitives-direction-provider.d.ts +41 -0
- package/types/radix-ng-primitives-dismissable-layer.d.ts +147 -99
- package/types/radix-ng-primitives-drawer.d.ts +49 -22
- package/types/radix-ng-primitives-field.d.ts +1 -0
- package/types/radix-ng-primitives-floating-focus-manager.d.ts +175 -0
- package/types/radix-ng-primitives-focus-scope.d.ts +132 -1
- package/types/radix-ng-primitives-menu.d.ts +204 -112
- package/types/radix-ng-primitives-navigation-menu.d.ts +61 -101
- package/types/radix-ng-primitives-popover.d.ts +82 -115
- package/types/radix-ng-primitives-popper.d.ts +46 -10
- package/types/radix-ng-primitives-portal.d.ts +53 -8
- package/types/radix-ng-primitives-presence.d.ts +98 -17
- package/types/radix-ng-primitives-preview-card.d.ts +63 -95
- package/types/radix-ng-primitives-roving-focus.d.ts +7 -6
- package/types/radix-ng-primitives-scroll-area.d.ts +2 -2
- package/types/radix-ng-primitives-select.d.ts +192 -158
- package/types/radix-ng-primitives-slider.d.ts +5 -4
- package/types/radix-ng-primitives-stepper.d.ts +4 -3
- package/types/radix-ng-primitives-time-field.d.ts +3 -2
- package/types/radix-ng-primitives-toast.d.ts +7 -7
- package/types/radix-ng-primitives-toggle-group.d.ts +5 -4
- package/types/radix-ng-primitives-toolbar.d.ts +3 -2
- package/types/radix-ng-primitives-tooltip.d.ts +48 -84
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radix-ng-primitives-menu.mjs","sources":["../../../packages/primitives/menu/src/menu-root.ts","../../../packages/primitives/menu/src/menu-arrow.ts","../../../packages/primitives/menu/src/menu-backdrop.ts","../../../packages/primitives/menu/src/menu-utils.ts","../../../packages/primitives/menu/src/menu-checkbox-item.ts","../../../packages/primitives/menu/src/menu-checkbox-item-indicator.ts","../../../packages/primitives/menu/src/menu-group.ts","../../../packages/primitives/menu/src/menu-group-label.ts","../../../packages/primitives/menu/src/menu-item.ts","../../../packages/primitives/menu/src/menu-link-item.ts","../../../packages/primitives/menu/src/menu-popup.ts","../../../packages/primitives/menu/src/menu-portal.ts","../../../packages/primitives/menu/src/menu-positioner.ts","../../../packages/primitives/menu/src/menu-radio-group.ts","../../../packages/primitives/menu/src/menu-radio-item.ts","../../../packages/primitives/menu/src/menu-radio-item-indicator.ts","../../../packages/primitives/menu/src/menu-separator.ts","../../../packages/primitives/menu/src/menu-safe-polygon.ts","../../../packages/primitives/menu/src/menu-sub-trigger.ts","../../../packages/primitives/menu/src/menu-trigger.ts","../../../packages/primitives/menu/src/menu-viewport.ts","../../../packages/primitives/menu/index.ts","../../../packages/primitives/menu/radix-ng-primitives-menu.ts"],"sourcesContent":["import {\n booleanAttribute,\n computed,\n Directive,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n Signal,\n untracked\n} from '@angular/core';\nimport { BooleanInput, createContext, useTransitionStatus } from '@radix-ng/primitives/core';\nimport { RdxPopper } from '@radix-ng/primitives/popper';\n\nexport type RdxMenuTransitionStatus = 'starting' | 'ending' | undefined;\n/**\n * How focus moves into the popup when it opens.\n * - `'first'` / `'last'` — focus and highlight the first / last item (keyboard opening).\n * - `'popup'` — focus the popup container without highlighting any item (pointer opening, e.g. a\n * context menu opened by right click).\n * - `false` — leave focus on the trigger.\n */\nexport type RdxMenuAutoFocus = 'first' | 'last' | 'popup' | false;\nexport type RdxMenuAutoFocusInput = boolean | RdxMenuAutoFocus;\nexport type RdxMenuOrientation = 'horizontal' | 'vertical';\n\nexport interface RdxMenuRootContext {\n isOpen: Signal<boolean>;\n disabled: Signal<boolean>;\n modal: Signal<boolean>;\n loopFocus: Signal<boolean>;\n highlightItemOnHover: Signal<boolean>;\n orientation: Signal<RdxMenuOrientation>;\n closeParentOnEsc: Signal<boolean>;\n /** Whether the popup should focus its first item when it opens. */\n autoFocus: Signal<RdxMenuAutoFocus>;\n isSubmenu: Signal<boolean>;\n hasTriggerInteractionHandler: Signal<boolean>;\n trigger: Signal<HTMLElement | undefined>;\n /** The popup element, once mounted. Used by submenu safe-polygon geometry. */\n popupElement: Signal<HTMLElement | undefined>;\n transitionStatus: Signal<RdxMenuTransitionStatus>;\n close: () => void;\n toggle: () => void;\n show: (autoFocus?: RdxMenuAutoFocusInput) => void;\n /** Open the menu without moving focus into the popup (used for menubar hover-switching). */\n showWithoutAutoFocus: () => void;\n registerTrigger: (el: HTMLElement) => () => void;\n registerPopup: (el: HTMLElement) => () => void;\n registerTransitionElement: (element: HTMLElement) => () => void;\n registerPopupArrowNavigationHandler: (handler: (offset: 1 | -1) => boolean) => () => void;\n registerTriggerInteractionHandler: (handler: RdxMenuTriggerInteractionHandler) => () => void;\n markAsSubmenu: () => void;\n closeParent: () => void;\n handlePopupArrowNavigation: (offset: 1 | -1) => boolean;\n handleTriggerInteraction: (interaction: RdxMenuTriggerInteraction) => boolean;\n}\n\nexport type RdxMenuTriggerInteraction =\n | { type: 'click' }\n | { type: 'pointerenter'; event: PointerEvent }\n | { type: 'arrowdown'; event: Event }\n | { type: 'arrowup'; event: Event }\n | { type: 'arrowleft'; event: Event }\n | { type: 'arrowright'; event: Event }\n | { type: 'home'; event: Event }\n | { type: 'end'; event: Event }\n | { type: 'escape'; event: Event };\n\nexport type RdxMenuTriggerInteractionHandler = (interaction: RdxMenuTriggerInteraction) => boolean;\n\nexport const [injectRdxMenuRootContext, provideRdxMenuRootContext] = createContext<RdxMenuRootContext>(\n 'RdxMenuRootContext',\n 'components/menu'\n);\n\nfunction buildContext(instance: RdxMenuRoot): RdxMenuRootContext {\n return {\n isOpen: instance.open,\n disabled: instance.disabled,\n modal: instance.modal,\n loopFocus: instance.loopFocus,\n highlightItemOnHover: instance.highlightItemOnHover,\n orientation: instance.orientation,\n closeParentOnEsc: instance.closeParentOnEsc,\n autoFocus: instance.autoFocus.asReadonly(),\n isSubmenu: instance.isSubmenu.asReadonly(),\n hasTriggerInteractionHandler: instance.hasTriggerInteractionHandler.asReadonly(),\n trigger: instance.trigger.asReadonly(),\n popupElement: instance.popupElement.asReadonly(),\n transitionStatus: instance.transitionStatus,\n close: () => instance.close(),\n toggle: () => instance.toggle(),\n show: (autoFocus) => instance.show(autoFocus),\n showWithoutAutoFocus: () => instance.show(false),\n registerTrigger: (el) => instance.registerTrigger(el),\n registerPopup: (el) => instance.registerPopup(el),\n registerTransitionElement: (el) => instance.registerTransitionElement(el),\n registerPopupArrowNavigationHandler: (handler) => instance.registerPopupArrowNavigationHandler(handler),\n registerTriggerInteractionHandler: (handler) => instance.registerTriggerInteractionHandler(handler),\n markAsSubmenu: () => instance.markAsSubmenu(),\n closeParent: () => instance.closeParent(),\n handlePopupArrowNavigation: (offset) => instance.handlePopupArrowNavigation(offset),\n handleTriggerInteraction: (interaction) => instance.handleTriggerInteraction(interaction)\n };\n}\n\nconst contextFactory = () => buildContext(inject(RdxMenuRoot));\n\n/**\n * Groups all parts of a menu.\n */\n@Directive({\n selector: '[rdxMenuRoot],[rdxMenuSubmenuRoot]',\n exportAs: 'rdxMenuRoot',\n providers: [provideRdxMenuRootContext(contextFactory)],\n hostDirectives: [RdxPopper]\n})\nexport class RdxMenuRoot {\n private readonly popper = inject(RdxPopper);\n\n /** Shared open/close transition state machine (completes on the real animationend). */\n private readonly transition = useTransitionStatus((open) => this.onOpenChangeComplete.emit(open));\n\n private registeredTrigger: HTMLElement | undefined;\n private popupArrowNavigationHandler: ((offset: 1 | -1) => boolean) | undefined;\n private triggerInteractionHandler: RdxMenuTriggerInteractionHandler | undefined;\n private hasAppliedDefaultOpen = false;\n\n /** Whether the menu is currently open. */\n readonly open = model(false);\n\n /** Whether the menu is initially open. */\n readonly defaultOpen = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Whether interactions with the menu are disabled. */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Whether the menu should block outside interactions. */\n readonly modal = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Whether keyboard navigation wraps at list boundaries. */\n readonly loopFocus = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /** Whether moving the pointer over items should highlight them. */\n readonly highlightItemOnHover = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /** The menu orientation. */\n readonly orientation = input<RdxMenuOrientation>('vertical');\n\n /** Whether pressing Escape inside a submenu closes the whole menu chain. */\n readonly closeParentOnEsc = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Emits when the open state changes. */\n readonly onOpenChange = output<boolean>();\n\n /** Emits when the open/close CSS transition or animation finishes. */\n readonly onOpenChangeComplete = output<boolean>();\n\n readonly trigger = signal<HTMLElement | undefined>(undefined);\n readonly popupElement = signal<HTMLElement | undefined>(undefined);\n readonly transitionStatus = this.transition.status;\n /** Whether the popup grabs focus when it opens. Set false for menubar hover-switching. */\n readonly autoFocus = signal<RdxMenuAutoFocus>('first');\n readonly isSubmenu = signal(false);\n readonly hasTriggerInteractionHandler = signal(false);\n readonly state = computed(() => (this.open() ? 'open' : 'closed'));\n\n constructor() {\n effect(() => {\n const defaultOpen = this.defaultOpen();\n\n if (!this.hasAppliedDefaultOpen && defaultOpen) {\n this.hasAppliedDefaultOpen = true;\n this.open.set(defaultOpen);\n }\n });\n\n effect(() => this.popper.anchorOverride.set(this.trigger()));\n\n let previousOpen = this.open();\n effect(() => {\n const open = this.open();\n if (open !== previousOpen) {\n previousOpen = open;\n untracked(() => this.transition.start(open));\n }\n });\n }\n\n show(autoFocus: RdxMenuAutoFocusInput = 'first') {\n if (this.disabled()) {\n return;\n }\n\n this.autoFocus.set(autoFocus === true ? 'first' : autoFocus);\n if (!this.open()) {\n this.open.set(true);\n this.onOpenChange.emit(true);\n }\n }\n\n close() {\n if (this.open()) {\n this.open.set(false);\n this.onOpenChange.emit(false);\n }\n }\n\n toggle() {\n if (this.disabled()) {\n return;\n }\n\n if (this.open()) {\n this.close();\n } else {\n this.show();\n }\n }\n\n registerTrigger(el: HTMLElement): () => void {\n this.registeredTrigger = el;\n this.trigger.set(el);\n return () => {\n if (this.registeredTrigger === el) {\n this.registeredTrigger = undefined;\n this.trigger.set(undefined);\n }\n };\n }\n\n registerPopup(el: HTMLElement): () => void {\n this.popupElement.set(el);\n return () => {\n if (this.popupElement() === el) {\n this.popupElement.set(undefined);\n }\n };\n }\n\n registerTransitionElement(element: HTMLElement): () => void {\n return this.transition.registerElement(element);\n }\n\n registerPopupArrowNavigationHandler(handler: (offset: 1 | -1) => boolean): () => void {\n this.popupArrowNavigationHandler = handler;\n\n return () => {\n if (this.popupArrowNavigationHandler === handler) {\n this.popupArrowNavigationHandler = undefined;\n }\n };\n }\n\n handlePopupArrowNavigation(offset: 1 | -1): boolean {\n return this.popupArrowNavigationHandler?.(offset) ?? false;\n }\n\n registerTriggerInteractionHandler(handler: RdxMenuTriggerInteractionHandler): () => void {\n this.triggerInteractionHandler = handler;\n this.hasTriggerInteractionHandler.set(true);\n\n return () => {\n if (this.triggerInteractionHandler === handler) {\n this.triggerInteractionHandler = undefined;\n this.hasTriggerInteractionHandler.set(false);\n }\n };\n }\n\n handleTriggerInteraction(interaction: RdxMenuTriggerInteraction): boolean {\n return this.triggerInteractionHandler?.(interaction) ?? false;\n }\n\n markAsSubmenu(): void {\n this.isSubmenu.set(true);\n }\n\n closeParent(): void {\n this.trigger()?.dispatchEvent(new CustomEvent('rdx-menu-close-parent', { bubbles: true }));\n }\n}\n","import { computed, Directive, inject } from '@angular/core';\nimport { RdxPopperArrow, RdxPopperContentWrapper } from '@radix-ng/primitives/popper';\nimport { injectRdxMenuRootContext } from './menu-root';\n\n/**\n * An optional visual arrow connecting the popup to its trigger.\n * Place it inside `rdxMenuPopup`. Positioning is handled by the shared Popper Arrow primitive.\n */\n@Directive({\n selector: '[rdxMenuArrow]',\n exportAs: 'rdxMenuArrow',\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 RdxMenuArrow {\n protected readonly rootContext = injectRdxMenuRootContext();\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 { injectRdxMenuRootContext } from './menu-root';\n\n/**\n * An optional overlay rendered behind the menu popup.\n * Style it with `position: fixed; inset: 0` and use `data-open` / `data-closed`\n * for CSS animations.\n */\n@Directive({\n selector: '[rdxMenuBackdrop]',\n exportAs: 'rdxMenuBackdrop',\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-starting-style]': 'rootContext.transitionStatus() === \"starting\" ? \"\" : undefined',\n '[attr.data-ending-style]': 'rootContext.transitionStatus() === \"ending\" ? \"\" : undefined'\n }\n})\nexport class RdxMenuBackdrop {\n protected readonly rootContext = injectRdxMenuRootContext();\n}\n","export type CheckedState = boolean | 'indeterminate';\n\nexport function isIndeterminate(checked?: CheckedState): checked is 'indeterminate' {\n return checked === 'indeterminate';\n}\n\nexport function getCheckedState(checked: CheckedState): 'checked' | 'unchecked' | 'indeterminate' {\n return isIndeterminate(checked) ? 'indeterminate' : checked ? 'checked' : 'unchecked';\n}\n","import {\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n Signal\n} from '@angular/core';\nimport { BooleanInput, createContext } from '@radix-ng/primitives/core';\nimport { injectRdxMenuRootContext } from './menu-root';\nimport { CheckedState, getCheckedState, isIndeterminate } from './menu-utils';\n\nexport interface RdxMenuCheckboxItemContext {\n checked: Signal<CheckedState>;\n}\n\nexport const [injectRdxMenuCheckboxItemContext, provideRdxMenuCheckboxItemContext] =\n createContext<RdxMenuCheckboxItemContext>('RdxMenuCheckboxItemContext', 'components/menu');\n\nconst checkboxItemContextFactory = (): RdxMenuCheckboxItemContext => {\n const instance = inject(RdxMenuCheckboxItem);\n return {\n checked: instance.checked\n };\n};\n\n/**\n * A menu item that can be checked or unchecked.\n */\n@Directive({\n selector: '[rdxMenuCheckboxItem]',\n exportAs: 'rdxMenuCheckboxItem',\n providers: [provideRdxMenuCheckboxItemContext(checkboxItemContextFactory)],\n host: {\n role: 'menuitemcheckbox',\n tabindex: '-1',\n '[attr.aria-checked]': 'isIndeterminate(checked()) ? \"mixed\" : checked()',\n '[attr.data-state]': 'getCheckedState(checked())',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined',\n '[attr.aria-disabled]': 'disabled() ? true : undefined',\n '[attr.data-highlighted]': 'highlighted() ? \"\" : undefined',\n '[attr.data-label]': 'label() ?? undefined',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '(pointermove)': 'onPointerMove($event)',\n '(pointerleave)': 'onPointerLeave($event)',\n '(click)': 'onItemClick()',\n '(keydown.enter)': 'onActivate($event)',\n '(keydown.space)': 'onActivate($event)'\n }\n})\nexport class RdxMenuCheckboxItem {\n private readonly rootContext = injectRdxMenuRootContext(true);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly isFocused = signal(false);\n\n /** Whether this item is disabled. */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Whether toggling closes the menu. Defaults to false — checkbox items stay open. */\n readonly closeOnClick = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Explicit typeahead label. When set, overrides textContent for character search. */\n readonly label = input<string | undefined>(undefined);\n\n /** The checked state of the item. */\n readonly checked = model<CheckedState>(false);\n\n /** Emits when the checked state changes. */\n readonly onCheckedChange = output<CheckedState>();\n\n protected readonly highlighted = computed(() => this.isFocused());\n\n // Expose helpers for host bindings\n protected readonly isIndeterminate = isIndeterminate;\n protected readonly getCheckedState = getCheckedState;\n\n onFocus(): void {\n if (!this.disabled()) {\n this.isFocused.set(true);\n }\n }\n\n onBlur(): void {\n this.isFocused.set(false);\n }\n\n onPointerMove(event: PointerEvent): void {\n if (event.defaultPrevented || event.pointerType !== 'mouse' || this.disabled()) {\n return;\n }\n if (this.rootContext && !this.rootContext.highlightItemOnHover()) {\n return;\n }\n if (document.activeElement !== this.elementRef.nativeElement) {\n this.elementRef.nativeElement.focus({ preventScroll: true });\n }\n }\n\n onPointerLeave(event: PointerEvent): void {\n if (event.pointerType !== 'mouse') {\n return;\n }\n if (document.activeElement === this.elementRef.nativeElement) {\n this.elementRef.nativeElement.closest<HTMLElement>('[rdxMenuPopup]')?.focus({ preventScroll: true });\n }\n }\n\n onItemClick(): void {\n if (this.disabled()) return;\n this.toggleChecked();\n if (this.closeOnClick()) this.rootContext?.close();\n }\n\n protected onActivate(event: Event): void {\n if (this.disabled()) return;\n event.preventDefault();\n this.toggleChecked();\n if (this.closeOnClick()) this.rootContext?.close();\n }\n\n private toggleChecked(): void {\n const next = isIndeterminate(this.checked()) ? true : !this.checked();\n this.checked.set(next);\n this.onCheckedChange.emit(next);\n }\n}\n","import { booleanAttribute, computed, Directive, input } from '@angular/core';\nimport { BooleanInput } from '@radix-ng/primitives/core';\nimport { injectRdxMenuCheckboxItemContext } from './menu-checkbox-item';\nimport { getCheckedState, isIndeterminate } from './menu-utils';\n\n/**\n * Renders when the parent checkbox item is checked or indeterminate.\n * Set `keepMounted` to keep the element in the DOM when unchecked (enables CSS animations).\n */\n@Directive({\n selector: '[rdxMenuCheckboxItemIndicator]',\n exportAs: 'rdxMenuCheckboxItemIndicator',\n host: {\n '[attr.data-state]': 'dataState()',\n '[attr.data-starting-style]': 'isVisible() ? \"\" : undefined',\n '[attr.data-ending-style]': '!isVisible() ? \"\" : undefined',\n '[style.display]': '!keepMounted() && !isVisible() ? \"none\" : null'\n }\n})\nexport class RdxMenuCheckboxItemIndicator {\n private readonly itemContext = injectRdxMenuCheckboxItemContext();\n\n /** Keep the indicator in the DOM when unchecked so CSS exit animations can play. */\n readonly keepMounted = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n protected readonly dataState = computed(() => getCheckedState(this.itemContext.checked()));\n protected readonly isVisible = computed(\n () => isIndeterminate(this.itemContext.checked()) || this.itemContext.checked() === true\n );\n}\n","import { Directive } from '@angular/core';\n\n/**\n * Groups related menu items together.\n */\n@Directive({\n selector: '[rdxMenuGroup]',\n exportAs: 'rdxMenuGroup',\n host: {\n role: 'group'\n }\n})\nexport class RdxMenuGroup {}\n","import { Directive } from '@angular/core';\n\n/**\n * A label for a menu group.\n */\n@Directive({\n selector: '[rdxMenuGroupLabel]',\n exportAs: 'rdxMenuGroupLabel'\n})\nexport class RdxMenuGroupLabel {}\n","import { booleanAttribute, computed, Directive, ElementRef, inject, input, output, signal } from '@angular/core';\nimport { BooleanInput } from '@radix-ng/primitives/core';\nimport { injectRdxMenuRootContext } from './menu-root';\n\n/**\n * An individual menu item.\n */\n@Directive({\n selector: '[rdxMenuItem]',\n exportAs: 'rdxMenuItem',\n host: {\n role: 'menuitem',\n tabindex: '-1',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined',\n '[attr.aria-disabled]': 'disabled() ? true : undefined',\n '[attr.data-highlighted]': 'highlighted() ? \"\" : undefined',\n '[attr.data-label]': 'label() ?? undefined',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '(pointermove)': 'onPointerMove($event)',\n '(pointerleave)': 'onPointerLeave($event)',\n '(click)': 'onItemClick()',\n '(keydown.enter)': 'onActivate($event)',\n '(keydown.space)': 'onActivate($event)'\n }\n})\nexport class RdxMenuItem {\n private readonly rootContext = injectRdxMenuRootContext(true);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly isFocused = signal(false);\n\n /** Whether this item is disabled. */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Whether selecting this item closes the menu. */\n readonly closeOnClick = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /** Explicit typeahead label. When set, overrides textContent for character search. */\n readonly label = input<string | undefined>(undefined);\n\n /** Emits when the item is selected. */\n readonly onSelect = output<void>();\n\n protected readonly highlighted = computed(() => this.isFocused());\n\n onFocus(): void {\n if (!this.disabled()) {\n this.isFocused.set(true);\n }\n }\n\n onBlur(): void {\n this.isFocused.set(false);\n }\n\n onPointerMove(event: PointerEvent): void {\n if (event.defaultPrevented || event.pointerType !== 'mouse' || this.disabled()) {\n return;\n }\n if (this.rootContext && !this.rootContext.highlightItemOnHover()) {\n return;\n }\n if (document.activeElement !== this.elementRef.nativeElement) {\n this.elementRef.nativeElement.focus({ preventScroll: true });\n }\n }\n\n onPointerLeave(event: PointerEvent): void {\n if (event.pointerType !== 'mouse') {\n return;\n }\n // Clear highlight when the pointer leaves: move focus back to the popup. A subsequent\n // pointermove on a sibling item re-focuses it, so moving between items still works.\n if (document.activeElement === this.elementRef.nativeElement) {\n this.elementRef.nativeElement.closest<HTMLElement>('[rdxMenuPopup]')?.focus({ preventScroll: true });\n }\n }\n\n onItemClick(): void {\n if (this.disabled()) return;\n this.onSelect.emit();\n if (this.closeOnClick()) this.rootContext?.close();\n }\n\n protected onActivate(event: Event): void {\n if (this.disabled()) return;\n event.preventDefault();\n this.onSelect.emit();\n if (this.closeOnClick()) this.rootContext?.close();\n }\n}\n","import { booleanAttribute, computed, Directive, ElementRef, inject, input, output, signal } from '@angular/core';\nimport { BooleanInput } from '@radix-ng/primitives/core';\nimport { injectRdxMenuRootContext } from './menu-root';\n\n/**\n * A menu item that renders as a link.\n */\n@Directive({\n selector: 'a[rdxMenuLinkItem]',\n exportAs: 'rdxMenuLinkItem',\n host: {\n role: 'menuitem',\n tabindex: '-1',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined',\n '[attr.aria-disabled]': 'disabled() ? true : undefined',\n '[attr.data-highlighted]': 'highlighted() ? \"\" : undefined',\n '[attr.data-label]': 'label() ?? undefined',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '(pointermove)': 'onPointerMove($event)',\n '(pointerleave)': 'onPointerLeave($event)',\n '(click)': 'onItemClick($event)',\n '(keydown.enter)': 'onActivate($event)'\n }\n})\nexport class RdxMenuLinkItem {\n private readonly rootContext = injectRdxMenuRootContext(true);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly isFocused = signal(false);\n\n /** Whether this item is disabled. */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Whether selecting this item closes the menu. Defaults to false — links navigate by default. */\n readonly closeOnClick = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Explicit typeahead label. When set, overrides textContent for character search. */\n readonly label = input<string | undefined>(undefined);\n\n /** Emits when the item is selected. */\n readonly onSelect = output<void>();\n\n protected readonly highlighted = computed(() => this.isFocused());\n\n onFocus(): void {\n if (!this.disabled()) {\n this.isFocused.set(true);\n }\n }\n\n onBlur(): void {\n this.isFocused.set(false);\n }\n\n onPointerMove(event: PointerEvent): void {\n if (event.defaultPrevented || event.pointerType !== 'mouse' || this.disabled()) {\n return;\n }\n if (this.rootContext && !this.rootContext.highlightItemOnHover()) {\n return;\n }\n if (document.activeElement !== this.elementRef.nativeElement) {\n this.elementRef.nativeElement.focus({ preventScroll: true });\n }\n }\n\n onPointerLeave(event: PointerEvent): void {\n if (event.pointerType !== 'mouse') {\n return;\n }\n if (document.activeElement === this.elementRef.nativeElement) {\n this.elementRef.nativeElement.closest<HTMLElement>('[rdxMenuPopup]')?.focus({ preventScroll: true });\n }\n }\n\n onItemClick(event: MouseEvent): void {\n if (this.disabled()) {\n event.preventDefault();\n return;\n }\n this.onSelect.emit();\n if (this.closeOnClick()) this.rootContext?.close();\n }\n\n protected onActivate(event: Event): void {\n if (this.disabled()) {\n event.preventDefault();\n return;\n }\n this.onSelect.emit();\n if (this.closeOnClick()) this.rootContext?.close();\n }\n}\n","import { computed, DestroyRef, Directive, effect, ElementRef, inject, signal } from '@angular/core';\nimport { outputFromObservable, outputToObservable } from '@angular/core/rxjs-interop';\nimport {\n provideRdxDismissableLayerConfig,\n RdxDismissableLayer,\n RdxDismissableLayersContextToken\n} from '@radix-ng/primitives/dismissable-layer';\nimport { provideRdxFocusScopeConfig, RdxFocusScope } from '@radix-ng/primitives/focus-scope';\nimport { RdxPopperContent, RdxPopperContentWrapper } from '@radix-ng/primitives/popper';\nimport { injectRdxMenuRootContext } from './menu-root';\n\n/** Selector for focusable menu items within the popup. */\nconst ITEM_SELECTOR = [\n '[rdxMenuItem]:not([data-disabled])',\n '[rdxMenuCheckboxItem]:not([data-disabled])',\n '[rdxMenuRadioItem]:not([data-disabled])',\n '[rdxMenuLinkItem]:not([data-disabled])',\n '[rdxMenuSubTrigger]:not([data-disabled])'\n].join(',');\n\nfunction getFocusableItems(popup: HTMLElement): HTMLElement[] {\n // Exclude items that belong to a nested child popup (submenu).\n return Array.from(popup.querySelectorAll<HTMLElement>(ITEM_SELECTOR)).filter(\n (item) => item.closest('[rdxMenuPopup]') === popup\n );\n}\n\n/**\n * A container for the menu contents.\n */\n@Directive({\n selector: '[rdxMenuPopup]',\n exportAs: 'rdxMenuPopup',\n hostDirectives: [RdxPopperContent, RdxDismissableLayer, RdxFocusScope],\n providers: [\n provideRdxDismissableLayerConfig(() => {\n const rootContext = injectRdxMenuRootContext();\n return {\n disableOutsidePointerEvents: computed(() => rootContext.modal())\n };\n }),\n provideRdxFocusScopeConfig(() => ({\n trapped: signal(false)\n }))\n ],\n host: {\n role: 'menu',\n tabindex: '-1',\n '[attr.aria-orientation]': 'rootContext.orientation()',\n '[attr.data-closed]': 'rootContext.isOpen() ? undefined : \"\"',\n '[attr.data-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[attr.data-state]': 'rootContext.isOpen() ? \"open\" : \"closed\"',\n '[attr.data-starting-style]': 'rootContext.transitionStatus() === \"starting\" ? \"\" : undefined',\n '[attr.data-ending-style]': 'rootContext.transitionStatus() === \"ending\" ? \"\" : undefined',\n '[attr.data-align]': 'align()',\n '[attr.data-side]': 'side()',\n '(keydown)': 'handleKeydown($event)',\n '(rdx-menu-close-parent)': 'handleCloseParent($event)'\n }\n})\nexport class RdxMenuPopup {\n protected readonly rootContext = injectRdxMenuRootContext();\n private readonly dismissableLayer = inject(RdxDismissableLayer);\n private readonly focusScope = inject(RdxFocusScope);\n private readonly wrapper = inject(RdxPopperContentWrapper, { optional: true });\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly dismissableLayersContext = inject(RdxDismissableLayersContextToken);\n private search = '';\n private searchTimer: ReturnType<typeof setTimeout> | undefined;\n\n protected readonly align = computed(() => this.wrapper?.placedAlign());\n protected readonly side = computed(() => this.wrapper?.placedSide());\n\n /**\n * Event handler called when the escape key is pressed. Can be prevented.\n */\n readonly escapeKeyDown = outputFromObservable(outputToObservable(this.dismissableLayer.escapeKeyDown));\n\n /**\n * Event handler called when a pointerdown event happens outside of the popup. Can be prevented.\n */\n readonly pointerDownOutside = outputFromObservable(outputToObservable(this.dismissableLayer.pointerDownOutside));\n\n /**\n * Event handler called when focus moves outside of the popup. Can be prevented.\n */\n readonly focusOutside = outputFromObservable(outputToObservable(this.dismissableLayer.focusOutside));\n\n /**\n * Event handler called when an interaction happens outside of the popup. Can be prevented.\n */\n readonly interactOutside = outputFromObservable(outputToObservable(this.dismissableLayer.interactOutside));\n\n /**\n * Event handler called before focus moves into the popup. Can be prevented.\n */\n readonly openAutoFocus = outputFromObservable(outputToObservable(this.focusScope.mountAutoFocus));\n\n /**\n * Event handler called before focus returns after the popup is removed. Can be prevented.\n */\n readonly closeAutoFocus = outputFromObservable(outputToObservable(this.focusScope.unmountAutoFocus));\n\n constructor() {\n const unregister = this.rootContext.registerTransitionElement(this.elementRef.nativeElement);\n const unregisterPopup = this.rootContext.registerPopup(this.elementRef.nativeElement);\n inject(DestroyRef).onDestroy(() => {\n unregister();\n unregisterPopup();\n clearTimeout(this.searchTimer);\n });\n\n effect((onCleanup) => {\n if (!this.rootContext.isSubmenu()) {\n return;\n }\n\n const element = this.elementRef.nativeElement;\n this.dismissableLayersContext.branches.update((branches) => [...branches, element]);\n onCleanup(() => {\n this.dismissableLayersContext.branches.update((branches) =>\n branches.filter((branch) => branch !== element)\n );\n });\n });\n\n this.dismissableLayer.dismiss.subscribe(() => {\n this.rootContext.close();\n });\n\n // Move focus into the popup when the menu opens — unless the opener suppressed it\n // (e.g. menubar hover-switching, where focus stays on the trigger).\n effect(() => {\n const autoFocus = this.rootContext.autoFocus();\n if (this.rootContext.isOpen() && autoFocus) {\n requestAnimationFrame(() => {\n // `'popup'` focuses the container without highlighting an item (pointer opening).\n if (autoFocus === 'popup') {\n this.elementRef.nativeElement.focus({ preventScroll: true });\n return;\n }\n\n const items = getFocusableItems(this.elementRef.nativeElement);\n const item = autoFocus === 'last' ? items[items.length - 1] : items[0];\n item?.focus({ preventScroll: true });\n });\n }\n });\n }\n\n protected handleCloseParent(event: Event): void {\n event.stopPropagation();\n this.rootContext.close();\n\n if (this.rootContext.isSubmenu() && this.rootContext.closeParentOnEsc()) {\n this.rootContext.closeParent();\n }\n }\n\n protected handleKeydown(event: KeyboardEvent): void {\n const el = this.elementRef.nativeElement;\n const items = getFocusableItems(el);\n const current = document.activeElement as HTMLElement;\n const currentIndex = items.indexOf(current);\n\n switch (event.key) {\n case 'ArrowDown': {\n event.preventDefault();\n event.stopPropagation();\n const atEnd = currentIndex >= items.length - 1;\n const next = atEnd\n ? this.rootContext.loopFocus()\n ? items[0]\n : items[items.length - 1]\n : items[currentIndex + 1];\n next?.focus({ preventScroll: true });\n break;\n }\n case 'ArrowUp': {\n event.preventDefault();\n event.stopPropagation();\n const atStart = currentIndex <= 0;\n const prev = atStart\n ? this.rootContext.loopFocus()\n ? items[items.length - 1]\n : items[0]\n : items[currentIndex - 1];\n prev?.focus({ preventScroll: true });\n break;\n }\n case 'Home': {\n event.preventDefault();\n event.stopPropagation();\n items[0]?.focus({ preventScroll: true });\n break;\n }\n case 'End': {\n event.preventDefault();\n event.stopPropagation();\n items[items.length - 1]?.focus({ preventScroll: true });\n break;\n }\n case 'ArrowLeft': {\n const trigger = this.rootContext.trigger();\n if (!trigger?.hasAttribute('rdxMenuSubTrigger')) {\n if (this.rootContext.handlePopupArrowNavigation(-1)) {\n event.preventDefault();\n event.stopPropagation();\n }\n break;\n }\n\n // Close this popup and return focus to the trigger (used by submenus).\n event.preventDefault();\n event.stopPropagation();\n this.rootContext.close();\n trigger.focus({ preventScroll: true });\n break;\n }\n case 'ArrowRight': {\n if (this.rootContext.handlePopupArrowNavigation(1)) {\n event.preventDefault();\n event.stopPropagation();\n }\n break;\n }\n case 'Escape': {\n event.preventDefault();\n event.stopPropagation();\n this.rootContext.close();\n if (this.rootContext.isSubmenu() && this.rootContext.closeParentOnEsc()) {\n this.rootContext.closeParent();\n }\n this.rootContext.trigger()?.focus({ preventScroll: true });\n break;\n }\n case 'Tab': {\n // Close on tab to allow natural tab navigation\n this.rootContext.close();\n break;\n }\n default: {\n // Typeahead\n if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) {\n event.preventDefault();\n const char = event.key.toLowerCase();\n this.search += char;\n clearTimeout(this.searchTimer);\n this.searchTimer = setTimeout(() => {\n this.search = '';\n this.searchTimer = undefined;\n }, 1000);\n\n const query =\n this.search.length > 1 && [...this.search].every((c) => c === char) ? char : this.search;\n const startIndex = currentIndex >= 0 ? currentIndex + 1 : 0;\n const rotated = [...items.slice(startIndex), ...items.slice(0, startIndex)];\n const match = rotated.find((item) => {\n const text = (item.dataset['label'] ?? item.textContent?.trim() ?? '').toLowerCase();\n return text.startsWith(query);\n });\n match?.focus({ preventScroll: true });\n }\n break;\n }\n }\n }\n}\n","import { Directive, input } from '@angular/core';\nimport { RdxPortal, RdxPortalContainer } from '@radix-ng/primitives/portal';\n\n/**\n * Moves the menu to a different part of the DOM.\n * Applied on ng-template — no host bindings (ng-template is not a real DOM node).\n */\n@Directive({\n selector: '[rdxMenuPortal]',\n exportAs: 'rdxMenuPortal',\n hostDirectives: [\n {\n directive: RdxPortal,\n inputs: ['container']\n }\n ]\n})\nexport class RdxMenuPortal {\n /**\n * Optional container to portal the content into. Defaults to `document.body`.\n */\n readonly container = input<RdxPortalContainer>();\n}\n","import { booleanAttribute, Directive, ElementRef, inject, input, numberAttribute } from '@angular/core';\nimport { outputFromObservable, outputToObservable } from '@angular/core/rxjs-interop';\nimport { BooleanInput, NumberInput } from '@radix-ng/primitives/core';\nimport {\n Align,\n provideRdxPopperContentConfig,\n RdxPopperAnchorElement,\n RdxPopperContentWrapper,\n Side\n} from '@radix-ng/primitives/popper';\nimport { injectRdxMenuRootContext } from './menu-root';\n\n/**\n * Positions the menu against its trigger.\n */\n@Directive({\n selector: '[rdxMenuPositioner]',\n exportAs: 'rdxMenuPositioner',\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 '[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 '--radix-menu-content-transform-origin': 'var(--radix-popper-transform-origin)',\n '--radix-menu-content-available-width': 'var(--radix-popper-available-width)',\n '--radix-menu-content-available-height': 'var(--radix-popper-available-height)',\n '--radix-menu-trigger-width': 'var(--radix-popper-anchor-width)',\n '--radix-menu-trigger-height': 'var(--radix-popper-anchor-height)'\n }`\n }\n})\nexport class RdxMenuPositioner {\n protected readonly rootContext = injectRdxMenuRootContext();\n protected readonly wrapper = inject(RdxPopperContentWrapper);\n\n /**\n * An element to position the popup against. Defaults to the 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>('start');\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 /**\n * Emits when the popup has been placed.\n */\n readonly placed = outputFromObservable(outputToObservable(inject(RdxPopperContentWrapper).placed));\n}\n","import { Directive, inject, model, output, Signal } from '@angular/core';\nimport { createContext } from '@radix-ng/primitives/core';\n\nexport interface RdxMenuRadioGroupContext {\n value: Signal<string | undefined>;\n selectValue: (value: string) => void;\n}\n\nexport const [injectRdxMenuRadioGroupContext, provideRdxMenuRadioGroupContext] =\n createContext<RdxMenuRadioGroupContext>('RdxMenuRadioGroupContext', 'components/menu');\n\nconst radioGroupContextFactory = (): RdxMenuRadioGroupContext => {\n const instance = inject(RdxMenuRadioGroup);\n return {\n value: instance.value,\n selectValue: (v) => instance.selectValue(v)\n };\n};\n\n/**\n * Groups radio items in a menu.\n */\n@Directive({\n selector: '[rdxMenuRadioGroup]',\n exportAs: 'rdxMenuRadioGroup',\n providers: [provideRdxMenuRadioGroupContext(radioGroupContextFactory)],\n host: {\n role: 'group'\n }\n})\nexport class RdxMenuRadioGroup {\n /**\n * The currently selected value.\n */\n readonly value = model<string | undefined>(undefined);\n\n /**\n * Emits when the selected value changes.\n */\n readonly onValueChange = output<string>();\n\n selectValue(newValue: string): void {\n this.value.set(newValue);\n this.onValueChange.emit(newValue);\n }\n}\n","import {\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n output,\n signal,\n Signal\n} from '@angular/core';\nimport { BooleanInput, createContext } from '@radix-ng/primitives/core';\nimport { injectRdxMenuRadioGroupContext } from './menu-radio-group';\nimport { injectRdxMenuRootContext } from './menu-root';\nimport { getCheckedState } from './menu-utils';\n\nexport interface RdxMenuRadioItemContext {\n checked: Signal<boolean>;\n}\n\nexport const [injectRdxMenuRadioItemContext, provideRdxMenuRadioItemContext] = createContext<RdxMenuRadioItemContext>(\n 'RdxMenuRadioItemContext',\n 'components/menu'\n);\n\nconst radioItemContextFactory = (): RdxMenuRadioItemContext => {\n const instance = inject(RdxMenuRadioItem);\n return {\n checked: instance.checked\n };\n};\n\n/**\n * A radio item within a menu radio group.\n */\n@Directive({\n selector: '[rdxMenuRadioItem]',\n exportAs: 'rdxMenuRadioItem',\n providers: [provideRdxMenuRadioItemContext(radioItemContextFactory)],\n host: {\n role: 'menuitemradio',\n tabindex: '-1',\n '[attr.aria-checked]': 'checked()',\n '[attr.data-state]': 'getCheckedState(checked())',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined',\n '[attr.aria-disabled]': 'disabled() ? true : undefined',\n '[attr.data-highlighted]': 'highlighted() ? \"\" : undefined',\n '[attr.data-label]': 'label() ?? undefined',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '(pointermove)': 'onPointerMove($event)',\n '(pointerleave)': 'onPointerLeave($event)',\n '(click)': 'onItemClick()',\n '(keydown.enter)': 'onActivate($event)',\n '(keydown.space)': 'onActivate($event)'\n }\n})\nexport class RdxMenuRadioItem {\n private readonly rootContext = injectRdxMenuRootContext(true);\n private readonly radioGroupContext = injectRdxMenuRadioGroupContext();\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly isFocused = signal(false);\n\n /** The value of this radio item. */\n readonly value = input.required<string>();\n\n /** Whether this item is disabled. */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Whether selecting closes the menu. Defaults to false — radio items stay open. */\n readonly closeOnClick = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Explicit typeahead label. When set, overrides textContent for character search. */\n readonly label = input<string | undefined>(undefined);\n\n /** Emits when this item is selected. */\n readonly onSelect = output<string>();\n\n readonly checked = computed(() => this.radioGroupContext.value() === this.value());\n\n protected readonly highlighted = computed(() => this.isFocused());\n protected readonly getCheckedState = getCheckedState;\n\n onFocus(): void {\n if (!this.disabled()) {\n this.isFocused.set(true);\n }\n }\n\n onBlur(): void {\n this.isFocused.set(false);\n }\n\n onPointerMove(event: PointerEvent): void {\n if (event.defaultPrevented || event.pointerType !== 'mouse' || this.disabled()) {\n return;\n }\n if (this.rootContext && !this.rootContext.highlightItemOnHover()) {\n return;\n }\n if (document.activeElement !== this.elementRef.nativeElement) {\n this.elementRef.nativeElement.focus({ preventScroll: true });\n }\n }\n\n onPointerLeave(event: PointerEvent): void {\n if (event.pointerType !== 'mouse') {\n return;\n }\n if (document.activeElement === this.elementRef.nativeElement) {\n this.elementRef.nativeElement.closest<HTMLElement>('[rdxMenuPopup]')?.focus({ preventScroll: true });\n }\n }\n\n onItemClick(): void {\n if (this.disabled()) {\n return;\n }\n this.selectItem();\n }\n\n protected onActivate(event: Event): void {\n if (this.disabled()) {\n return;\n }\n event.preventDefault();\n this.selectItem();\n }\n\n private selectItem(): void {\n const v = this.value();\n this.radioGroupContext.selectValue(v);\n this.onSelect.emit(v);\n if (this.closeOnClick()) this.rootContext?.close();\n }\n}\n","import { booleanAttribute, computed, Directive, input } from '@angular/core';\nimport { BooleanInput } from '@radix-ng/primitives/core';\nimport { injectRdxMenuRadioItemContext } from './menu-radio-item';\nimport { getCheckedState } from './menu-utils';\n\n/**\n * Renders when the parent radio item is selected.\n * Set `keepMounted` to keep the element in the DOM when unselected (enables CSS animations).\n */\n@Directive({\n selector: '[rdxMenuRadioItemIndicator]',\n exportAs: 'rdxMenuRadioItemIndicator',\n host: {\n '[attr.data-state]': 'dataState()',\n '[attr.data-starting-style]': 'isVisible() ? \"\" : undefined',\n '[attr.data-ending-style]': '!isVisible() ? \"\" : undefined',\n '[style.display]': '!keepMounted() && !isVisible() ? \"none\" : null'\n }\n})\nexport class RdxMenuRadioItemIndicator {\n private readonly itemContext = injectRdxMenuRadioItemContext();\n\n /** Keep the indicator in the DOM when unselected so CSS exit animations can play. */\n readonly keepMounted = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n protected readonly dataState = computed(() => getCheckedState(this.itemContext.checked()));\n protected readonly isVisible = computed(() => this.itemContext.checked() === true);\n}\n","import { Directive } from '@angular/core';\n\n/**\n * A visual separator between groups of menu items.\n */\n@Directive({\n selector: '[rdxMenuSeparator]',\n exportAs: 'rdxMenuSeparator',\n host: {\n role: 'separator',\n '[attr.aria-orientation]': '\"horizontal\"'\n }\n})\nexport class RdxMenuSeparator {}\n","/**\n * Submenu \"safe polygon\" — a faithful port of Floating UI's `safePolygon` algorithm\n * (https://floating-ui.com/docs/useHover#safepolygon), adapted to this library.\n *\n * While a submenu is open by hover, the parent submenu owns the decision to close itself: a\n * document-level `mousemove` handler keeps it open as long as the cursor is heading toward the\n * popup inside a safe quadrilateral (built from the cursor's exit point and the popup rect), and\n * closes it once the cursor leaves that area. Combined with the pointer-events \"tunnel\" below\n * (`applyPointerTunnel`), siblings cannot steal the open submenu during a diagonal traversal.\n *\n * Differences from the upstream implementation:\n * - `elements.domReference` / `elements.floating` → `reference` / `floating` (plain elements).\n * - `placement.split('-')[0]` → the `side` option (read live from the popup's `data-side`).\n * - the Floating UI tree (`tree` / `nodeId`) → the `hasOpenChild` callback, backed by the\n * module-level open-submenu registry.\n *\n * This deliberately does NOT reuse the core `useGraceArea` composable (tooltip / navigation-menu /\n * popover): that one is a simpler convex-hull grace area with no velocity gating, trough handling, or\n * pointer-events tunnel — none of which it needs, but all of which the submenu does to match Base UI\n * and to stop sibling triggers from stealing the open submenu mid-traversal.\n */\n\nexport type MenuSide = 'top' | 'bottom' | 'left' | 'right';\n\nconst CURSOR_SPEED_THRESHOLD = 0.1;\nconst CURSOR_SPEED_THRESHOLD_SQUARED = CURSOR_SPEED_THRESHOLD * CURSOR_SPEED_THRESHOLD;\nconst POLYGON_BUFFER = 0.5;\n/** Re-check delay when the cursor is inside the polygon but has not landed on the popup yet. */\nconst REST_CHECK_MS = 40;\n\nexport interface SafePolygonOptions {\n /** The submenu trigger (Floating UI's reference element). */\n reference: HTMLElement;\n /** The submenu popup (Floating UI's floating element). */\n floating: HTMLElement;\n /**\n * Placed side of the popup relative to the trigger, read live on every move. Floating UI\n * resolves placement asynchronously (and may flip it on collision), so this must be a getter,\n * not a value captured at open time — otherwise left/top/bottom submenus get right-side geometry.\n */\n side: () => MenuSide;\n /** Cursor X at the moment it left the trigger. */\n x: number;\n /** Cursor Y at the moment it left the trigger. */\n y: number;\n /** Close the submenu (callers apply their own close delay). */\n onClose: () => void;\n /** Cancel a pending close — called on every move that decides to stay open. */\n cancelClose: () => void;\n /** Whether a descendant submenu is open; if so, never close (mirrors Floating UI's tree check). */\n hasOpenChild: () => boolean;\n /** Called the first time the cursor reaches the popup, so the caller can drop the tunnel. */\n onLanded?: () => void;\n}\n\nfunction hasIntersectingEdge(pointX: number, pointY: number, xi: number, yi: number, xj: number, yj: number): boolean {\n return yi >= pointY !== yj >= pointY && pointX <= ((xj - xi) * (pointY - yi)) / (yj - yi) + xi;\n}\n\nexport function isPointInQuadrilateral(\n pointX: number,\n pointY: number,\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n x3: number,\n y3: number,\n x4: number,\n y4: number\n): boolean {\n let inside = false;\n if (hasIntersectingEdge(pointX, pointY, x1, y1, x2, y2)) inside = !inside;\n if (hasIntersectingEdge(pointX, pointY, x2, y2, x3, y3)) inside = !inside;\n if (hasIntersectingEdge(pointX, pointY, x3, y3, x4, y4)) inside = !inside;\n if (hasIntersectingEdge(pointX, pointY, x4, y4, x1, y1)) inside = !inside;\n return inside;\n}\n\nfunction isInsideRect(pointX: number, pointY: number, rect: DOMRect): boolean {\n return pointX >= rect.left && pointX <= rect.right && pointY >= rect.top && pointY <= rect.bottom;\n}\n\nfunction isInsideAxisAlignedRect(\n pointX: number,\n pointY: number,\n x1: number,\n y1: number,\n x2: number,\n y2: number\n): boolean {\n const minX = Math.min(x1, x2);\n const maxX = Math.max(x1, x2);\n const minY = Math.min(y1, y2);\n const maxY = Math.max(y1, y2);\n return pointX >= minX && pointX <= maxX && pointY >= minY && pointY <= maxY;\n}\n\nfunction getTarget(event: MouseEvent): Element | null {\n const path = event.composedPath?.();\n return (path?.[0] as Element | undefined) ?? (event.target as Element | null);\n}\n\nexport interface SafePolygonHandler {\n /** Attach to `document.addEventListener('mousemove', …)`. */\n handler: (event: MouseEvent) => void;\n /** Clear any pending internal timer; call from the listener's teardown. */\n dispose: () => void;\n}\n\n/**\n * Builds the `mousemove` handler that decides whether the open submenu should stay open, plus a\n * `dispose()` that clears its internal rest-check timer (so a pending close can't fire after the\n * listener is removed).\n */\nexport function createSafePolygonHandler(options: SafePolygonOptions): SafePolygonHandler {\n const { reference, floating, side: sideOf, x, y, onClose, cancelClose, hasOpenChild, onLanded } = options;\n\n let hasLanded = false;\n let lastX: number | null = null;\n let lastY: number | null = null;\n let lastCursorTime = typeof performance !== 'undefined' ? performance.now() : 0;\n let restTimer: ReturnType<typeof setTimeout> | undefined;\n\n function isCursorMovingSlowly(nextX: number, nextY: number): boolean {\n const currentTime = typeof performance !== 'undefined' ? performance.now() : 0;\n const elapsedTime = currentTime - lastCursorTime;\n\n if (lastX === null || lastY === null || elapsedTime === 0) {\n lastX = nextX;\n lastY = nextY;\n lastCursorTime = currentTime;\n return false;\n }\n\n const deltaX = nextX - lastX;\n const deltaY = nextY - lastY;\n const distanceSquared = deltaX * deltaX + deltaY * deltaY;\n const thresholdSquared = elapsedTime * elapsedTime * CURSOR_SPEED_THRESHOLD_SQUARED;\n\n lastX = nextX;\n lastY = nextY;\n lastCursorTime = currentTime;\n\n return distanceSquared < thresholdSquared;\n }\n\n function closeIfNoOpenChild(): void {\n if (!hasOpenChild()) {\n onClose();\n }\n }\n\n function onMouseMove(event: MouseEvent): void {\n cancelClose();\n clearTimeout(restTimer);\n\n const { clientX, clientY } = event;\n const target = getTarget(event);\n const isOverFloatingEl = !!target && floating.contains(target);\n const isOverReferenceEl = !!target && reference.contains(target);\n\n // This handler is bound only to document `mousemove` (never `mouseleave`), so Floating UI's\n // leave-specific paths — the overlapping-element `relatedTarget` guard and the `!isLeave`\n // guards — are omitted: they could never run here.\n\n if (isOverFloatingEl) {\n // \"Landed\" tracks reaching the popup only — not the trigger. Setting it on the trigger\n // would close as soon as the cursor enters the gap (no leave event resets it).\n if (!hasLanded) {\n hasLanded = true;\n onLanded?.();\n }\n return;\n }\n\n if (isOverReferenceEl) {\n // Over the trigger — stay open; the polygon/trough logic resumes once in the gap.\n return;\n }\n\n // If any nested child submenu is open, never close the parent.\n if (hasOpenChild()) return;\n\n // Read the placed side live — it may have been unresolved at open time, or flipped since.\n const side = sideOf();\n const refRect = reference.getBoundingClientRect();\n const rect = floating.getBoundingClientRect();\n const cursorLeaveFromRight = x > rect.right - rect.width / 2;\n const cursorLeaveFromBottom = y > rect.bottom - rect.height / 2;\n const isFloatingWider = rect.width > refRect.width;\n const isFloatingTaller = rect.height > refRect.height;\n const left = (isFloatingWider ? refRect : rect).left;\n const right = (isFloatingWider ? refRect : rect).right;\n const top = (isFloatingTaller ? refRect : rect).top;\n const bottom = (isFloatingTaller ? refRect : rect).bottom;\n\n // Leaving from the opposite side: the buffer logic would otherwise keep it open — close.\n if (\n (side === 'top' && y >= refRect.bottom - 1) ||\n (side === 'bottom' && y <= refRect.top + 1) ||\n (side === 'left' && x >= refRect.right - 1) ||\n (side === 'right' && x <= refRect.left + 1)\n ) {\n closeIfNoOpenChild();\n return;\n }\n\n // Stay open while the cursor is within the rectangular trough between the two elements.\n let isInsideTroughRect = false;\n switch (side) {\n case 'top':\n isInsideTroughRect = isInsideAxisAlignedRect(\n clientX,\n clientY,\n left,\n refRect.top + 1,\n right,\n rect.bottom - 1\n );\n break;\n case 'bottom':\n isInsideTroughRect = isInsideAxisAlignedRect(\n clientX,\n clientY,\n left,\n rect.top + 1,\n right,\n refRect.bottom - 1\n );\n break;\n case 'left':\n isInsideTroughRect = isInsideAxisAlignedRect(\n clientX,\n clientY,\n rect.right - 1,\n bottom,\n refRect.left + 1,\n top\n );\n break;\n case 'right':\n isInsideTroughRect = isInsideAxisAlignedRect(\n clientX,\n clientY,\n refRect.right - 1,\n bottom,\n rect.left + 1,\n top\n );\n break;\n }\n if (isInsideTroughRect) return;\n\n if (hasLanded && !isInsideRect(clientX, clientY, refRect)) {\n closeIfNoOpenChild();\n return;\n }\n\n if (isCursorMovingSlowly(clientX, clientY)) {\n closeIfNoOpenChild();\n return;\n }\n\n let isInsidePolygon = false;\n switch (side) {\n case 'top': {\n const cursorXOffset = isFloatingWider ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4;\n const cursorPointOneX = isFloatingWider\n ? x + cursorXOffset\n : cursorLeaveFromRight\n ? x + cursorXOffset\n : x - cursorXOffset;\n const cursorPointTwoX = isFloatingWider\n ? x - cursorXOffset\n : cursorLeaveFromRight\n ? x + cursorXOffset\n : x - cursorXOffset;\n const cursorPointY = y + POLYGON_BUFFER + 1;\n const commonYLeft = cursorLeaveFromRight\n ? rect.bottom - POLYGON_BUFFER\n : isFloatingWider\n ? rect.bottom - POLYGON_BUFFER\n : rect.top;\n const commonYRight = cursorLeaveFromRight\n ? isFloatingWider\n ? rect.bottom - POLYGON_BUFFER\n : rect.top\n : rect.bottom - POLYGON_BUFFER;\n isInsidePolygon = isPointInQuadrilateral(\n clientX,\n clientY,\n cursorPointOneX,\n cursorPointY,\n cursorPointTwoX,\n cursorPointY,\n rect.left,\n commonYLeft,\n rect.right,\n commonYRight\n );\n break;\n }\n case 'bottom': {\n const cursorXOffset = isFloatingWider ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4;\n const cursorPointOneX = isFloatingWider\n ? x + cursorXOffset\n : cursorLeaveFromRight\n ? x + cursorXOffset\n : x - cursorXOffset;\n const cursorPointTwoX = isFloatingWider\n ? x - cursorXOffset\n : cursorLeaveFromRight\n ? x + cursorXOffset\n : x - cursorXOffset;\n const cursorPointY = y - POLYGON_BUFFER;\n const commonYLeft = cursorLeaveFromRight\n ? rect.top + POLYGON_BUFFER\n : isFloatingWider\n ? rect.top + POLYGON_BUFFER\n : rect.bottom;\n const commonYRight = cursorLeaveFromRight\n ? isFloatingWider\n ? rect.top + POLYGON_BUFFER\n : rect.bottom\n : rect.top + POLYGON_BUFFER;\n isInsidePolygon = isPointInQuadrilateral(\n clientX,\n clientY,\n cursorPointOneX,\n cursorPointY,\n cursorPointTwoX,\n cursorPointY,\n rect.left,\n commonYLeft,\n rect.right,\n commonYRight\n );\n break;\n }\n case 'left': {\n const cursorYOffset = isFloatingTaller ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4;\n const cursorPointOneY = isFloatingTaller\n ? y + cursorYOffset\n : cursorLeaveFromBottom\n ? y + cursorYOffset\n : y - cursorYOffset;\n const cursorPointTwoY = isFloatingTaller\n ? y - cursorYOffset\n : cursorLeaveFromBottom\n ? y + cursorYOffset\n : y - cursorYOffset;\n const cursorPointX = x + POLYGON_BUFFER + 1;\n const commonXTop = cursorLeaveFromBottom\n ? rect.right - POLYGON_BUFFER\n : isFloatingTaller\n ? rect.right - POLYGON_BUFFER\n : rect.left;\n const commonXBottom = cursorLeaveFromBottom\n ? isFloatingTaller\n ? rect.right - POLYGON_BUFFER\n : rect.left\n : rect.right - POLYGON_BUFFER;\n isInsidePolygon = isPointInQuadrilateral(\n clientX,\n clientY,\n commonXTop,\n rect.top,\n commonXBottom,\n rect.bottom,\n cursorPointX,\n cursorPointOneY,\n cursorPointX,\n cursorPointTwoY\n );\n break;\n }\n case 'right': {\n const cursorYOffset = isFloatingTaller ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4;\n const cursorPointOneY = isFloatingTaller\n ? y + cursorYOffset\n : cursorLeaveFromBottom\n ? y + cursorYOffset\n : y - cursorYOffset;\n const cursorPointTwoY = isFloatingTaller\n ? y - cursorYOffset\n : cursorLeaveFromBottom\n ? y + cursorYOffset\n : y - cursorYOffset;\n const cursorPointX = x - POLYGON_BUFFER;\n const commonXTop = cursorLeaveFromBottom\n ? rect.left + POLYGON_BUFFER\n : isFloatingTaller\n ? rect.left + POLYGON_BUFFER\n : rect.right;\n const commonXBottom = cursorLeaveFromBottom\n ? isFloatingTaller\n ? rect.left + POLYGON_BUFFER\n : rect.right\n : rect.left + POLYGON_BUFFER;\n isInsidePolygon = isPointInQuadrilateral(\n clientX,\n clientY,\n cursorPointX,\n cursorPointOneY,\n cursorPointX,\n cursorPointTwoY,\n commonXTop,\n rect.top,\n commonXBottom,\n rect.bottom\n );\n break;\n }\n }\n\n if (!isInsidePolygon) {\n closeIfNoOpenChild();\n } else if (!hasLanded) {\n // Inside the polygon but not landed: if the cursor halts here (no further moves),\n // close shortly after so a stationary cursor in the gap doesn't keep it open.\n restTimer = setTimeout(closeIfNoOpenChild, REST_CHECK_MS);\n }\n }\n\n return { handler: onMouseMove, dispose: () => clearTimeout(restTimer) };\n}\n\n/**\n * Pointer-events \"tunnel\" used while a submenu opened by hover is being traversed. Disables pointer\n * events on `scope` (the parent popup or `document.body`) while keeping the `reference` and\n * `floating` interactive, so sibling items cannot react until the cursor lands or the submenu\n * closes. Returns a cleanup that restores the exact previous inline values.\n */\nexport function applyPointerTunnel(scope: HTMLElement, reference: HTMLElement, floating: HTMLElement): () => void {\n const saved: Array<[HTMLElement, string]> = [\n [scope, scope.style.pointerEvents],\n [reference, reference.style.pointerEvents],\n [floating, floating.style.pointerEvents]\n ];\n scope.style.pointerEvents = 'none';\n reference.style.pointerEvents = 'auto';\n floating.style.pointerEvents = 'auto';\n\n let cleaned = false;\n return () => {\n if (cleaned) return;\n cleaned = true;\n saved.forEach(([el, prev]) => (el.style.pointerEvents = prev));\n };\n}\n\n/** Registry of submenus currently open, keyed by their trigger element. */\nconst openSubmenus = new Map<HTMLElement, HTMLElement>();\n\n/** Marks `trigger`'s submenu (with popup `popup`) as open. Returns a cleanup to unmark it. */\nexport function registerOpenSubmenu(trigger: HTMLElement, popup: HTMLElement): () => void {\n openSubmenus.set(trigger, popup);\n return () => {\n if (openSubmenus.get(trigger) === popup) {\n openSubmenus.delete(trigger);\n }\n };\n}\n\n/**\n * Whether any *other* open submenu is a descendant of `floating` (a nested child is open).\n *\n * Portal-safe: `RdxMenuPortal` only teleports a submenu's positioner/popup template, never the\n * sub-trigger (which stays in its parent popup), and a portaled popup carries its descendant\n * triggers with it — so `floating.contains(childTrigger)` holds whether or not portals are used.\n */\nexport function hasOpenChildSubmenu(reference: HTMLElement, floating: HTMLElement): boolean {\n for (const trigger of openSubmenus.keys()) {\n if (trigger !== reference && floating.contains(trigger)) {\n return true;\n }\n }\n return false;\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n numberAttribute,\n PLATFORM_ID,\n signal\n} from '@angular/core';\nimport { BooleanInput, NumberInput } from '@radix-ng/primitives/core';\nimport { RdxDismissableLayerBranch } from '@radix-ng/primitives/dismissable-layer';\nimport { RdxPopperAnchor } from '@radix-ng/primitives/popper';\nimport { injectRdxMenuRootContext, RdxMenuRoot } from './menu-root';\nimport {\n applyPointerTunnel,\n createSafePolygonHandler,\n hasOpenChildSubmenu,\n MenuSide,\n registerOpenSubmenu\n} from './menu-safe-polygon';\n\nconst numberOrUndefined = (value: NumberInput | undefined) => (value == null ? undefined : numberAttribute(value));\nconst submenuRootsByTrigger = new WeakMap<HTMLElement, RdxMenuRoot>();\n\n/**\n * An item inside a parent menu that opens a nested submenu.\n *\n * Place this inside `ng-container rdxMenuRoot` that wraps both the trigger\n * and the submenu positioner. The inner root provides the submenu context;\n * the outer popup discovers this element via `[rdxMenuSubTrigger]` in its\n * ITEM_SELECTOR and includes it in keyboard navigation.\n */\n@Directive({\n selector: '[rdxMenuSubTrigger]',\n exportAs: 'rdxMenuSubTrigger',\n hostDirectives: [RdxPopperAnchor, RdxDismissableLayerBranch],\n host: {\n '[attr.type]': 'nativeButtonState() ? \"button\" : undefined',\n role: 'menuitem',\n tabindex: '-1',\n '[attr.aria-haspopup]': '\"menu\"',\n '[attr.aria-expanded]': 'submenuContext.isOpen()',\n '[attr.aria-disabled]': 'disabled() ? true : undefined',\n '[attr.disabled]': 'nativeButtonState() && disabled() ? \"\" : undefined',\n '[attr.data-state]': 'submenuContext.isOpen() ? \"open\" : \"closed\"',\n '[attr.data-popup-open]': 'submenuContext.isOpen() ? \"\" : undefined',\n '[attr.data-highlighted]': 'highlighted() ? \"\" : undefined',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined',\n '[attr.data-label]': 'label() ?? undefined',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '(click)': 'onClick()',\n '(keydown.arrowright)': 'onArrowRight($event)',\n '(pointermove)': 'onPointerMove($event)',\n '(pointerleave)': 'onPointerLeave()',\n '(rdx-menu-subtrigger-clear-highlight)': 'clearHighlight()'\n }\n})\nexport class RdxMenuSubTrigger {\n protected readonly submenuContext = injectRdxMenuRootContext();\n private readonly submenuRoot = inject(RdxMenuRoot);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n private readonly isFocused = signal(false);\n private openTimer: ReturnType<typeof setTimeout> | undefined;\n private closeTimer: ReturnType<typeof setTimeout> | undefined;\n /** Cursor position from the last pointer move over the trigger (safe-polygon apex). */\n private lastPointer: { x: number; y: number } | null = null;\n /** Whether the current open was initiated by hover (vs keyboard / click). */\n private openedByHover = false;\n\n /** Whether this trigger (and therefore the submenu) is disabled. */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Whether this trigger should be treated as a native button. Auto-detected for `<button>`. */\n readonly nativeButton = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Whether hovering the trigger opens the submenu. */\n readonly openOnHover = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /** Delay before hover opens the submenu, in milliseconds. */\n readonly delay = input<number | undefined, NumberInput | undefined>(100, { transform: numberOrUndefined });\n\n /** Delay before a pending hover close runs, in milliseconds. */\n readonly closeDelay = input<number | undefined, NumberInput | undefined>(0, { transform: numberOrUndefined });\n\n /** Explicit typeahead label. When set, overrides textContent for character search. */\n readonly label = input<string | undefined>(undefined);\n\n /** Highlighted when focused OR while the submenu is open. */\n protected readonly highlighted = computed(() => this.isFocused() || this.submenuContext.isOpen());\n protected readonly nativeButtonState = computed(\n () => this.nativeButton() || this.elementRef.nativeElement.tagName === 'BUTTON'\n );\n\n constructor() {\n this.submenuContext.markAsSubmenu();\n\n effect((onCleanup) => {\n const el = this.elementRef.nativeElement;\n const unregister = this.submenuContext.registerTrigger(el);\n submenuRootsByTrigger.set(el, this.submenuRoot);\n\n onCleanup(() => {\n unregister();\n submenuRootsByTrigger.delete(el);\n });\n });\n\n // While this submenu is open by hover, it owns the decision to close itself: a document\n // `mousemove` handler keeps it open while the cursor traverses the safe polygon toward the\n // popup, and a pointer-events tunnel stops siblings from stealing it mid-traversal.\n effect((onCleanup) => {\n const open = this.submenuContext.isOpen();\n const popup = this.submenuContext.popupElement();\n\n // Once closed, forget how this open started so the next (possibly keyboard / programmatic)\n // open doesn't re-arm the hover tunnel from a stale flag.\n if (!open) {\n this.openedByHover = false;\n this.lastPointer = null;\n return;\n }\n\n if (!popup || !this.openedByHover || !this.lastPointer || !this.isBrowser) {\n return;\n }\n\n const reference = this.elementRef.nativeElement;\n const scope = reference.closest<HTMLElement>('[rdxMenuPopup]') ?? document.body;\n const unregisterOpen = registerOpenSubmenu(reference, popup);\n let removeTunnel: (() => void) | undefined = applyPointerTunnel(scope, reference, popup);\n\n const { handler, dispose } = createSafePolygonHandler({\n reference,\n floating: popup,\n // Live getter: `data-side` may be unresolved at open time and can flip on collision.\n side: () => (popup.getAttribute('data-side') as MenuSide) ?? 'right',\n x: this.lastPointer.x,\n y: this.lastPointer.y,\n onClose: () => this.scheduleClose(),\n cancelClose: () => clearTimeout(this.closeTimer),\n hasOpenChild: () => hasOpenChildSubmenu(reference, popup),\n onLanded: () => {\n removeTunnel?.();\n removeTunnel = undefined;\n }\n });\n\n document.addEventListener('mousemove', handler);\n onCleanup(() => {\n document.removeEventListener('mousemove', handler);\n dispose();\n removeTunnel?.();\n unregisterOpen();\n clearTimeout(this.closeTimer);\n });\n });\n\n this.destroyRef.onDestroy(() => {\n clearTimeout(this.openTimer);\n clearTimeout(this.closeTimer);\n });\n }\n\n private scheduleClose(): void {\n clearTimeout(this.closeTimer);\n const delay = this.closeDelay() ?? 0;\n if (delay <= 0) {\n this.submenuContext.close();\n } else {\n this.closeTimer = setTimeout(() => this.submenuContext.close(), delay);\n }\n }\n\n protected onFocus(): void {\n if (!this.disabled()) {\n this.clearSiblingHighlights();\n this.isFocused.set(true);\n }\n }\n\n protected onBlur(): void {\n this.isFocused.set(false);\n }\n\n protected onClick(): void {\n if (this.disabled()) return;\n this.openedByHover = false;\n this.clearSiblingHighlights();\n if (!this.submenuContext.isOpen()) {\n this.closeSiblingSubmenus();\n }\n this.submenuContext.toggle();\n }\n\n protected onArrowRight(event: Event): void {\n if (this.disabled()) return;\n event.preventDefault();\n event.stopPropagation();\n this.openedByHover = false;\n this.clearSiblingHighlights();\n if (!this.submenuContext.isOpen()) {\n this.closeSiblingSubmenus();\n this.submenuContext.show();\n }\n }\n\n protected onPointerMove(event: PointerEvent): void {\n if (event.pointerType !== 'mouse' || this.disabled() || !this.openOnHover()) return;\n\n this.lastPointer = { x: event.clientX, y: event.clientY };\n this.clearSiblingHighlights();\n if (this.submenuContext.highlightItemOnHover() && document.activeElement !== this.elementRef.nativeElement) {\n this.elementRef.nativeElement.focus({ preventScroll: true });\n }\n\n if (!this.submenuContext.isOpen()) {\n clearTimeout(this.openTimer);\n this.closeSiblingSubmenus();\n this.openTimer = setTimeout(() => {\n this.openedByHover = true;\n this.submenuContext.show(false);\n }, this.delay() ?? 100);\n }\n }\n\n protected onPointerLeave(): void {\n clearTimeout(this.openTimer);\n }\n\n protected clearHighlight(): void {\n this.isFocused.set(false);\n }\n\n private closeSiblingSubmenus(): void {\n const currentTrigger = this.elementRef.nativeElement;\n const parentPopup = currentTrigger.closest<HTMLElement>('[rdxMenuPopup]');\n\n if (!parentPopup) return;\n\n parentPopup.querySelectorAll<HTMLElement>('[rdxMenuSubTrigger]').forEach((trigger) => {\n if (trigger === currentTrigger || trigger.closest('[rdxMenuPopup]') !== parentPopup) {\n return;\n }\n\n submenuRootsByTrigger.get(trigger)?.close();\n trigger.dispatchEvent(new CustomEvent('rdx-menu-subtrigger-clear-highlight'));\n });\n }\n\n private clearSiblingHighlights(): void {\n const currentTrigger = this.elementRef.nativeElement;\n const parentPopup = currentTrigger.closest<HTMLElement>('[rdxMenuPopup]');\n\n if (!parentPopup) return;\n\n parentPopup.querySelectorAll<HTMLElement>('[rdxMenuSubTrigger]').forEach((trigger) => {\n if (trigger === currentTrigger || trigger.closest('[rdxMenuPopup]') !== parentPopup) {\n return;\n }\n\n trigger.dispatchEvent(new CustomEvent('rdx-menu-subtrigger-clear-highlight'));\n });\n }\n}\n","import {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n numberAttribute\n} from '@angular/core';\nimport { BooleanInput, NumberInput } from '@radix-ng/primitives/core';\nimport { RdxDismissableLayersContextToken } from '@radix-ng/primitives/dismissable-layer';\nimport { RdxPopperAnchor } from '@radix-ng/primitives/popper';\nimport { injectRdxMenuRootContext } from './menu-root';\n\nconst numberOrUndefined = (value: NumberInput | undefined) => (value == null ? undefined : numberAttribute(value));\n\n/**\n * A button that opens the menu.\n */\n@Directive({\n selector: '[rdxMenuTrigger]',\n exportAs: 'rdxMenuTrigger',\n hostDirectives: [RdxPopperAnchor],\n host: {\n '[attr.type]': 'nativeButtonState() ? \"button\" : undefined',\n '[attr.role]':\n 'rootContext.hasTriggerInteractionHandler() ? \"menuitem\" : nativeButtonState() ? undefined : \"button\"',\n '[attr.tabindex]': 'rootContext.hasTriggerInteractionHandler() ? \"-1\" : undefined',\n '[attr.aria-haspopup]': '\"menu\"',\n '[attr.aria-expanded]': 'rootContext.isOpen()',\n '[attr.aria-disabled]': 'isDisabled() ? true : undefined',\n '[attr.disabled]': 'nativeButtonState() && isDisabled() ? \"\" : undefined',\n '[attr.data-state]': 'rootContext.isOpen() ? \"open\" : \"closed\"',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : undefined',\n '[attr.data-popup-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '(click)': 'handleClick()',\n '(pointerenter)': 'handlePointerEnter($event)',\n '(pointerleave)': 'handlePointerLeave($event)',\n '(keydown.arrowdown)': 'handleArrowDown($event)',\n '(keydown.arrowup)': 'handleArrowUp($event)',\n '(keydown.arrowleft)': 'handleArrowLeft($event)',\n '(keydown.arrowright)': 'handleArrowRight($event)',\n '(keydown.home)': 'handleHome($event)',\n '(keydown.end)': 'handleEnd($event)',\n '(keydown.escape)': 'handleEscape($event)',\n '(keydown.enter)': 'handleKeyboardToggle($event)',\n '(keydown.space)': 'handleKeyboardToggle($event)'\n }\n})\nexport class RdxMenuTrigger {\n protected readonly rootContext = injectRdxMenuRootContext();\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly dismissableLayersContext = inject(RdxDismissableLayersContextToken);\n private openTimer: ReturnType<typeof setTimeout> | undefined;\n private closeTimer: ReturnType<typeof setTimeout> | undefined;\n\n /** Whether this trigger should be treated as a native button. Auto-detected for `<button>`. */\n readonly nativeButton = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Whether this trigger is disabled. */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Whether hovering the trigger opens the menu. */\n readonly openOnHover = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Delay before hover opens the menu, in milliseconds. */\n readonly delay = input<number | undefined, NumberInput | undefined>(undefined, { transform: numberOrUndefined });\n\n /** Delay before hover leave closes the menu, in milliseconds. */\n readonly closeDelay = input<number | undefined, NumberInput | undefined>(undefined, {\n transform: numberOrUndefined\n });\n\n protected readonly nativeButtonState = computed(\n () => this.nativeButton() || this.elementRef.nativeElement.tagName === 'BUTTON'\n );\n\n protected readonly isDisabled = computed(() => this.rootContext.disabled() || this.disabled());\n\n constructor() {\n effect((onCleanup) => {\n const el = this.elementRef.nativeElement;\n const unregister = this.rootContext.registerTrigger(el);\n onCleanup(unregister);\n });\n\n // When a coordinator (e.g. the menubar) drives this trigger, hover-switching focuses the\n // trigger and opens the popup without pulling focus inside it. Register the trigger as a\n // dismissable-layer branch so that focus/pointer interactions on it are treated as \"inside\"\n // and do not dismiss the just-opened popup.\n effect((onCleanup) => {\n if (!this.rootContext.hasTriggerInteractionHandler()) {\n return;\n }\n\n const el = this.elementRef.nativeElement;\n this.dismissableLayersContext.branches.update((branches) => [...branches, el]);\n onCleanup(() => {\n this.dismissableLayersContext.branches.update((branches) => branches.filter((b) => b !== el));\n });\n });\n\n this.destroyRef.onDestroy(() => {\n this.clearOpenTimer();\n this.clearCloseTimer();\n });\n }\n\n protected handleClick(): void {\n if (this.isDisabled()) {\n return;\n }\n\n if (this.rootContext.handleTriggerInteraction({ type: 'click' })) {\n return;\n }\n\n this.rootContext.toggle();\n }\n\n protected handleArrowDown(event: Event): void {\n if (this.rootContext.handleTriggerInteraction({ type: 'arrowdown', event })) {\n return;\n }\n\n event.preventDefault();\n if (!this.isDisabled() && !this.rootContext.isOpen()) {\n this.rootContext.show('first');\n }\n }\n\n protected handleArrowUp(event: Event): void {\n if (this.rootContext.handleTriggerInteraction({ type: 'arrowup', event })) {\n return;\n }\n\n event.preventDefault();\n if (!this.isDisabled() && !this.rootContext.isOpen()) {\n this.rootContext.show('last');\n }\n }\n\n protected handleArrowLeft(event: Event): void {\n this.rootContext.handleTriggerInteraction({ type: 'arrowleft', event });\n }\n\n protected handleArrowRight(event: Event): void {\n this.rootContext.handleTriggerInteraction({ type: 'arrowright', event });\n }\n\n protected handleHome(event: Event): void {\n this.rootContext.handleTriggerInteraction({ type: 'home', event });\n }\n\n protected handleEnd(event: Event): void {\n this.rootContext.handleTriggerInteraction({ type: 'end', event });\n }\n\n protected handleEscape(event: Event): void {\n this.rootContext.handleTriggerInteraction({ type: 'escape', event });\n }\n\n protected handleKeyboardToggle(event: Event): void {\n if (this.nativeButtonState()) {\n return;\n }\n\n event.preventDefault();\n this.handleClick();\n }\n\n protected handlePointerEnter(event: PointerEvent): void {\n if (this.rootContext.handleTriggerInteraction({ type: 'pointerenter', event })) {\n return;\n }\n\n if (event.pointerType === 'touch' || !this.openOnHover() || this.isDisabled()) {\n return;\n }\n\n this.clearCloseTimer();\n this.clearOpenTimer();\n\n const delay = this.delay() ?? 0;\n if (delay <= 0) {\n this.rootContext.show();\n return;\n }\n\n this.openTimer = setTimeout(() => {\n this.openTimer = undefined;\n this.rootContext.show();\n }, delay);\n }\n\n protected handlePointerLeave(event: PointerEvent): void {\n if (event.pointerType === 'touch' || !this.openOnHover()) {\n return;\n }\n\n this.clearOpenTimer();\n this.clearCloseTimer();\n\n const closeDelay = this.closeDelay() ?? 0;\n if (closeDelay <= 0) {\n this.rootContext.close();\n return;\n }\n\n this.closeTimer = setTimeout(() => {\n this.closeTimer = undefined;\n this.rootContext.close();\n }, closeDelay);\n }\n\n private clearOpenTimer(): void {\n clearTimeout(this.openTimer);\n this.openTimer = undefined;\n }\n\n private clearCloseTimer(): void {\n clearTimeout(this.closeTimer);\n this.closeTimer = undefined;\n }\n}\n","import { afterNextRender, DestroyRef, Directive, ElementRef, inject, signal } from '@angular/core';\nimport { getMaxTransitionDuration } from '@radix-ng/primitives/core';\n\n/**\n * A viewport that smoothly animates the popup size when its content changes\n * (e.g. switching menubar menus of different sizes, or expanding a section).\n *\n * It measures its content with a `ResizeObserver` and exposes the current size\n * as `--popup-width` / `--popup-height` CSS variables on the host. Drive the\n * animation from the consumer side, for example:\n *\n * ```css\n * [rdxMenuPopup] {\n * width: var(--popup-width);\n * height: var(--popup-height);\n * transition: width 200ms, height 200ms;\n * }\n * ```\n *\n * `data-transitioning` is present while a size change is in flight.\n */\n@Directive({\n selector: '[rdxMenuViewport]',\n exportAs: 'rdxMenuViewport',\n host: {\n '[attr.data-transitioning]': 'transitioning() ? \"\" : undefined',\n '[style.--popup-width.px]': 'width()',\n '[style.--popup-height.px]': 'height()'\n }\n})\nexport class RdxMenuViewport {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly destroyRef = inject(DestroyRef);\n private observer: ResizeObserver | undefined;\n private transitionTimer: ReturnType<typeof setTimeout> | undefined;\n\n protected readonly width = signal<number | undefined>(undefined);\n protected readonly height = signal<number | undefined>(undefined);\n protected readonly transitioning = signal(false);\n\n constructor() {\n afterNextRender(() => {\n const el = this.elementRef.nativeElement;\n\n // Seed the initial size without marking a transition.\n this.width.set(el.offsetWidth);\n this.height.set(el.offsetHeight);\n\n if (typeof ResizeObserver === 'undefined') {\n return;\n }\n\n this.observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n if (!entry) {\n return;\n }\n\n const nextWidth = Math.round(entry.contentRect.width);\n const nextHeight = Math.round(entry.contentRect.height);\n\n if (nextWidth === this.width() && nextHeight === this.height()) {\n return;\n }\n\n this.width.set(nextWidth);\n this.height.set(nextHeight);\n this.markTransitioning();\n });\n\n this.observer.observe(el);\n });\n\n this.destroyRef.onDestroy(() => {\n this.observer?.disconnect();\n clearTimeout(this.transitionTimer);\n });\n }\n\n private markTransitioning(): void {\n this.transitioning.set(true);\n clearTimeout(this.transitionTimer);\n\n const duration = getMaxTransitionDuration(this.elementRef.nativeElement);\n this.transitionTimer = setTimeout(() => this.transitioning.set(false), duration > 0 ? duration + 50 : 0);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RdxMenuArrow } from './src/menu-arrow';\nimport { RdxMenuBackdrop } from './src/menu-backdrop';\nimport { RdxMenuCheckboxItem } from './src/menu-checkbox-item';\nimport { RdxMenuCheckboxItemIndicator } from './src/menu-checkbox-item-indicator';\nimport { RdxMenuGroup } from './src/menu-group';\nimport { RdxMenuGroupLabel } from './src/menu-group-label';\nimport { RdxMenuItem } from './src/menu-item';\nimport { RdxMenuLinkItem } from './src/menu-link-item';\nimport { RdxMenuPopup } from './src/menu-popup';\nimport { RdxMenuPortal } from './src/menu-portal';\nimport { RdxMenuPositioner } from './src/menu-positioner';\nimport { RdxMenuRadioGroup } from './src/menu-radio-group';\nimport { RdxMenuRadioItem } from './src/menu-radio-item';\nimport { RdxMenuRadioItemIndicator } from './src/menu-radio-item-indicator';\nimport { RdxMenuRoot } from './src/menu-root';\nimport { RdxMenuSeparator } from './src/menu-separator';\nimport { RdxMenuSubTrigger } from './src/menu-sub-trigger';\nimport { RdxMenuTrigger } from './src/menu-trigger';\nimport { RdxMenuViewport } from './src/menu-viewport';\n\nexport * from './src/menu-arrow';\nexport * from './src/menu-backdrop';\nexport * from './src/menu-checkbox-item';\nexport * from './src/menu-checkbox-item-indicator';\nexport * from './src/menu-group';\nexport * from './src/menu-group-label';\nexport * from './src/menu-item';\nexport * from './src/menu-link-item';\nexport * from './src/menu-popup';\nexport * from './src/menu-portal';\nexport * from './src/menu-positioner';\nexport * from './src/menu-radio-group';\nexport * from './src/menu-radio-item';\nexport * from './src/menu-radio-item-indicator';\nexport * from './src/menu-root';\nexport * from './src/menu-separator';\nexport * from './src/menu-sub-trigger';\nexport * from './src/menu-trigger';\nexport * from './src/menu-utils';\nexport * from './src/menu-viewport';\n\nconst menuImports = [\n RdxMenuRoot,\n RdxMenuTrigger,\n RdxMenuSubTrigger,\n RdxMenuPortal,\n RdxMenuPositioner,\n RdxMenuPopup,\n RdxMenuViewport,\n RdxMenuBackdrop,\n RdxMenuArrow,\n RdxMenuItem,\n RdxMenuLinkItem,\n RdxMenuGroup,\n RdxMenuGroupLabel,\n RdxMenuSeparator,\n RdxMenuCheckboxItem,\n RdxMenuCheckboxItemIndicator,\n RdxMenuRadioGroup,\n RdxMenuRadioItem,\n RdxMenuRadioItemIndicator\n];\n\n@NgModule({\n imports: [...menuImports],\n exports: [...menuImports]\n})\nexport class RdxMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","numberOrUndefined"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"radix-ng-primitives-menu.mjs","sources":["../../../packages/primitives/menu/src/menu-root.ts","../../../packages/primitives/menu/src/menu-arrow.ts","../../../packages/primitives/menu/src/menu-backdrop.ts","../../../packages/primitives/menu/src/menu-utils.ts","../../../packages/primitives/menu/src/menu-checkbox-item.ts","../../../packages/primitives/menu/src/menu-checkbox-item-indicator.ts","../../../packages/primitives/menu/src/menu-group-context.ts","../../../packages/primitives/menu/src/menu-group.ts","../../../packages/primitives/menu/src/menu-group-label.ts","../../../packages/primitives/menu/src/menu-item.ts","../../../packages/primitives/menu/src/menu-link-item.ts","../../../packages/primitives/menu/src/menu-focus.ts","../../../packages/primitives/menu/src/menu-popup.ts","../../../packages/primitives/menu/src/menu-portal.ts","../../../packages/primitives/menu/src/menu-internal-backdrop.ts","../../../packages/primitives/menu/src/menu-positioner.ts","../../../packages/primitives/menu/src/menu-radio-group.ts","../../../packages/primitives/menu/src/menu-radio-item.ts","../../../packages/primitives/menu/src/menu-radio-item-indicator.ts","../../../packages/primitives/menu/src/menu-separator.ts","../../../packages/primitives/menu/src/menu-safe-polygon.ts","../../../packages/primitives/menu/src/menu-sub-trigger.ts","../../../packages/primitives/menu/src/menu-trigger.ts","../../../packages/primitives/menu/src/menu-viewport.ts","../../../packages/primitives/menu/index.ts","../../../packages/primitives/menu/radix-ng-primitives-menu.ts"],"sourcesContent":["import {\n booleanAttribute,\n computed,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n Signal,\n untracked\n} from '@angular/core';\nimport {\n BooleanInput,\n createCancelableChangeEventDetails,\n createContext,\n createFloatingRootContext,\n Direction,\n provideFloatingRootContext,\n provideFloatingTree,\n RdxCancelableChangeEventDetails,\n RdxFloatingRootContext,\n useTransitionStatus\n} from '@radix-ng/primitives/core';\nimport { injectDirection } from '@radix-ng/primitives/direction-provider';\nimport { getInteractionTypeFromEvent, RdxInteractionType } from '@radix-ng/primitives/floating-focus-manager';\nimport { RdxPopper } from '@radix-ng/primitives/popper';\n\nexport type RdxMenuTransitionStatus = 'starting' | 'ending' | undefined;\n/**\n * How focus moves into the popup when it opens.\n * - `'first'` / `'last'` — focus and highlight the first / last item (keyboard opening).\n * - `'popup'` — focus the popup container without highlighting any item (pointer opening, e.g. a\n * context menu opened by right click).\n * - `false` — leave focus on the trigger.\n */\nexport type RdxMenuAutoFocus = 'first' | 'last' | 'popup' | false;\nexport type RdxMenuAutoFocusInput = boolean | RdxMenuAutoFocus;\nexport type RdxMenuOrientation = 'horizontal' | 'vertical';\n\n/**\n * What kind of parent a menu has (Base UI `MenuParent.type`). Drives the per-kind dismissal / focus /\n * backdrop / scroll-lock policy:\n * - `'menu'` — a **submenu** (its parent is another menu).\n * - `'menubar'` — a menu coordinated by a `Menubar`.\n * - `'context-menu'` — the root of a `ContextMenu` (opened at the pointer).\n * - `undefined` — a standalone menu (a plain dropdown).\n */\nexport type RdxMenuParentType = 'menu' | 'menubar' | 'context-menu' | undefined;\n\n/**\n * Why a menu's open state changed (Base UI open-change `reason`). Read by the per-kind policy — e.g. a\n * `'trigger-hover'` open suppresses the modal backdrop / scroll-lock, and the dismissal reason decides\n * return-focus.\n */\nexport type RdxMenuOpenChangeReason =\n | 'trigger-press'\n | 'trigger-hover'\n | 'trigger-focus'\n | 'list-navigation'\n | 'sibling-open'\n | 'escape-key'\n | 'outside-press'\n | 'cancel-open'\n | 'focus-out'\n | 'none';\n\nexport type RdxMenuOpenChangeEventDetails = RdxCancelableChangeEventDetails<RdxMenuOpenChangeReason>;\n\nexport interface RdxMenuOpenChange {\n open: boolean;\n trigger: HTMLElement | undefined;\n reason: RdxMenuOpenChangeReason;\n event: Event;\n eventDetails: RdxMenuOpenChangeEventDetails;\n}\n\nexport interface RdxMenuRootContext {\n isOpen: Signal<boolean>;\n present: Signal<boolean>;\n disabled: Signal<boolean>;\n modal: Signal<boolean>;\n loopFocus: Signal<boolean>;\n highlightItemOnHover: Signal<boolean>;\n orientation: Signal<RdxMenuOrientation>;\n dir: Signal<Direction>;\n closeParentOnEsc: Signal<boolean>;\n /** Whether the popup should focus its first item when it opens. */\n autoFocus: Signal<RdxMenuAutoFocus>;\n isSubmenu: Signal<boolean>;\n /** What kind of parent this menu has (ADR 0015/0017 parity) — drives the per-kind policy. */\n parentType: Signal<RdxMenuParentType>;\n /** The reason for the most recent open-change (Base UI open-change `reason`). */\n lastOpenChangeReason: Signal<RdxMenuOpenChangeReason>;\n /** Whether a trigger-originated press may activate an item on the following mouseup. */\n allowMouseUpTrigger: Signal<boolean>;\n /** Whether the current open was initiated by touch (ADR 0016 §3 — gates the anchored scroll lock). */\n openedByTouch: Signal<boolean>;\n openInteractionType: Signal<RdxInteractionType>;\n closeInteractionType: Signal<RdxInteractionType>;\n hasTriggerInteractionHandler: Signal<boolean>;\n trigger: Signal<HTMLElement | undefined>;\n /** The popup element, once mounted. Used by submenu safe-polygon geometry. */\n popupElement: Signal<HTMLElement | undefined>;\n transitionStatus: Signal<RdxMenuTransitionStatus>;\n close: (reason?: RdxMenuOpenChangeReason, event?: Event) => void;\n /** Close this menu and every ancestor — used by item selection (the whole menu dismisses). */\n closeEntireMenu: (reason?: RdxMenuOpenChangeReason, event?: Event) => void;\n toggle: (reason?: RdxMenuOpenChangeReason, event?: Event) => void;\n show: (autoFocus?: RdxMenuAutoFocusInput, reason?: RdxMenuOpenChangeReason, event?: Event) => void;\n /** Open the menu without moving focus into the popup (used for menubar hover-switching). */\n showWithoutAutoFocus: (reason?: RdxMenuOpenChangeReason, event?: Event) => void;\n registerTrigger: (el: HTMLElement) => () => void;\n registerPopup: (el: HTMLElement) => () => void;\n registerTransitionElement: (element: HTMLElement) => () => void;\n registerPopupArrowNavigationHandler: (handler: (offset: 1 | -1) => boolean) => () => void;\n registerTriggerInteractionHandler: (handler: RdxMenuTriggerInteractionHandler) => () => void;\n markAsSubmenu: () => void;\n /** Marks this menu as the root of a Context Menu (called by `RdxContextMenuRoot`). */\n markAsContextMenu: () => void;\n setAllowMouseUpTrigger: (value: boolean) => void;\n closeParent: () => void;\n handlePopupArrowNavigation: (offset: 1 | -1) => boolean;\n handleTriggerInteraction: (interaction: RdxMenuTriggerInteraction) => boolean;\n}\n\nexport type RdxMenuTriggerInteraction =\n | { type: 'click' }\n | { type: 'enter'; event: Event }\n | { type: 'space'; event: Event }\n | { type: 'pointerenter'; event: PointerEvent }\n | { type: 'arrowdown'; event: Event }\n | { type: 'arrowup'; event: Event }\n | { type: 'arrowleft'; event: Event }\n | { type: 'arrowright'; event: Event }\n | { type: 'home'; event: Event }\n | { type: 'end'; event: Event }\n | { type: 'escape'; event: Event };\n\nexport type RdxMenuTriggerInteractionHandler = (interaction: RdxMenuTriggerInteraction) => boolean;\n\nexport const [injectRdxMenuRootContext, provideRdxMenuRootContext] = createContext<RdxMenuRootContext>(\n 'RdxMenuRootContext',\n 'components/menu'\n);\n\nfunction buildContext(instance: RdxMenuRoot): RdxMenuRootContext {\n return {\n isOpen: instance.open,\n present: instance.present,\n disabled: instance.effectiveDisabled,\n modal: instance.effectiveModal,\n loopFocus: instance.loopFocus,\n highlightItemOnHover: instance.highlightItemOnHover,\n orientation: instance.orientation,\n dir: instance.dir,\n closeParentOnEsc: instance.closeParentOnEsc,\n autoFocus: instance.autoFocus.asReadonly(),\n isSubmenu: instance.isSubmenu.asReadonly(),\n parentType: instance.parentType,\n lastOpenChangeReason: instance.lastOpenChangeReason.asReadonly(),\n allowMouseUpTrigger: instance.allowMouseUpTrigger,\n openedByTouch: instance.openedByTouch.asReadonly(),\n openInteractionType: instance.openInteractionType.asReadonly(),\n closeInteractionType: instance.closeInteractionType.asReadonly(),\n hasTriggerInteractionHandler: instance.hasTriggerInteractionHandler.asReadonly(),\n trigger: instance.trigger.asReadonly(),\n popupElement: instance.popupElement.asReadonly(),\n transitionStatus: instance.transitionStatus,\n close: (reason, event) => instance.close(reason, event),\n closeEntireMenu: (reason, event) => instance.closeEntireMenu(reason, event),\n toggle: (reason, event) => instance.toggle(reason, event),\n show: (autoFocus, reason, event) => instance.show(autoFocus, reason, event),\n showWithoutAutoFocus: (reason, event) => instance.show(false, reason, event),\n registerTrigger: (el) => instance.registerTrigger(el),\n registerPopup: (el) => instance.registerPopup(el),\n registerTransitionElement: (el) => instance.registerTransitionElement(el),\n registerPopupArrowNavigationHandler: (handler) => instance.registerPopupArrowNavigationHandler(handler),\n registerTriggerInteractionHandler: (handler) => instance.registerTriggerInteractionHandler(handler),\n markAsSubmenu: () => instance.markAsSubmenu(),\n markAsContextMenu: () => instance.markAsContextMenu(),\n setAllowMouseUpTrigger: (value) => instance.setAllowMouseUpTrigger(value),\n closeParent: () => instance.closeParent(),\n handlePopupArrowNavigation: (offset) => instance.handlePopupArrowNavigation(offset),\n handleTriggerInteraction: (interaction) => instance.handleTriggerInteraction(interaction)\n };\n}\n\nconst contextFactory = () => buildContext(inject(RdxMenuRoot));\n\n/**\n * Groups all parts of a menu.\n */\n@Directive({\n selector: '[rdxMenuRoot],[rdxMenuSubmenuRoot]',\n exportAs: 'rdxMenuRoot',\n providers: [\n provideRdxMenuRootContext(contextFactory),\n // New floating foundation (ADR 0015/0017). Inherit-or-create the tree so a submenu shares its\n // parent menu's tree; the per-popup root context bridges open / triggers / reference.\n provideFloatingTree(),\n provideFloatingRootContext(() => inject(RdxMenuRoot).floatingContext)\n ],\n hostDirectives: [RdxPopper]\n})\nexport class RdxMenuRoot {\n private readonly popper = inject(RdxPopper);\n private readonly parentRoot = inject(RdxMenuRoot, { optional: true, skipSelf: true });\n private readonly providedDirection = injectDirection();\n\n /**\n * The shared per-popup floating context (ADR 0015 §1) — `open` mirrors this menu's open state, the\n * trigger registry is bridged from {@link registerTrigger}, and the reference / floating elements are\n * set by the trigger / popup. The new dismissal engine reads this once the popup migrates.\n */\n readonly floatingContext: RdxFloatingRootContext = createFloatingRootContext({\n ownerDocument: inject(ElementRef).nativeElement.ownerDocument,\n open: () => this.open()\n });\n\n /** Shared open/close transition state machine (completes on the real animationend). */\n private readonly transition = useTransitionStatus((open) => this.onOpenChangeComplete.emit(open));\n\n private registeredTrigger: HTMLElement | undefined;\n private popupArrowNavigationHandler: ((offset: 1 | -1) => boolean) | undefined;\n private triggerInteractionHandler: RdxMenuTriggerInteractionHandler | undefined;\n private hasAppliedDefaultOpen = false;\n\n /** Whether the menu is currently open. */\n readonly open = model(false);\n\n /** Whether the menu is initially open. */\n readonly defaultOpen = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Whether interactions with the menu are disabled. */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Whether the menu should block outside interactions and page scrolling.\n * Nested menus are always non-modal.\n */\n readonly modal = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /** Whether keyboard navigation wraps at list boundaries. */\n readonly loopFocus = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /** Whether moving the pointer over items should highlight them. */\n readonly highlightItemOnHover = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /** The menu orientation. */\n readonly orientation = input<RdxMenuOrientation>('vertical');\n\n /** Text direction for submenu arrow-key behavior. Inherited by nested submenu roots. */\n readonly dirInput = input<Direction | undefined>(undefined, { alias: 'dir' });\n\n /** Whether pressing Escape inside a submenu closes the whole menu chain. */\n readonly closeParentOnEsc = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Emits when the open state changes. */\n readonly onOpenChange = output<RdxMenuOpenChange>();\n\n /** Emits when the open/close CSS transition or animation finishes. */\n readonly onOpenChangeComplete = output<boolean>();\n\n readonly trigger = signal<HTMLElement | undefined>(undefined);\n readonly popupElement = signal<HTMLElement | undefined>(undefined);\n readonly transitionStatus = this.transition.status;\n /** Whether the popup grabs focus when it opens. Set false for menubar hover-switching. */\n readonly autoFocus = signal<RdxMenuAutoFocus>('first');\n readonly isSubmenu = signal(false);\n /** Set by `RdxContextMenuRoot` (it composes this root) — distinguishes a context menu from a dropdown. */\n readonly isContextMenu = signal(false);\n readonly hasTriggerInteractionHandler = signal(false);\n private readonly preventUnmountOnClose = signal(false);\n\n /**\n * What kind of parent this menu has (Base UI `MenuParent.type`). A submenu wins over everything (its\n * parent is a menu); otherwise a context-menu marker, then a menubar (detected by the trigger\n * interaction handler the menubar registers), else a standalone dropdown.\n */\n readonly parentType: Signal<RdxMenuParentType> = computed(() => {\n if (this.isSubmenu()) {\n return 'menu';\n }\n if (this.isContextMenu()) {\n return 'context-menu';\n }\n if (this.hasTriggerInteractionHandler()) {\n return 'menubar';\n }\n return undefined;\n });\n\n /** The reason for the most recent open-change (Base UI open-change `reason`), for the per-kind policy. */\n readonly lastOpenChangeReason = signal<RdxMenuOpenChangeReason>('none');\n private readonly localAllowMouseUpTrigger = signal(false);\n readonly allowMouseUpTrigger: Signal<boolean> = computed(\n () => this.parentRoot?.allowMouseUpTrigger() ?? this.localAllowMouseUpTrigger()\n );\n\n /** Whether the current open was initiated by **touch** (ADR 0016 §3 — gates the anchored scroll lock). */\n readonly openedByTouch = signal(false);\n readonly openInteractionType = signal<RdxInteractionType>(null);\n readonly closeInteractionType = signal<RdxInteractionType>(null);\n\n readonly effectiveDisabled: Signal<boolean> = computed(\n () => this.disabled() || (this.parentRoot?.effectiveDisabled() ?? false)\n );\n readonly dir: Signal<Direction> = computed(() => {\n return this.dirInput() ?? this.parentRoot?.dir() ?? this.providedDirection();\n });\n readonly effectiveModal = computed(() => this.modal() && !this.isSubmenu());\n readonly state = computed(() => (this.open() ? 'open' : 'closed'));\n readonly present = computed(() => this.open() || this.preventUnmountOnClose());\n\n constructor() {\n effect(() => {\n const defaultOpen = this.defaultOpen();\n\n if (!this.hasAppliedDefaultOpen && defaultOpen) {\n this.hasAppliedDefaultOpen = true;\n this.open.set(defaultOpen);\n }\n });\n\n effect(() => this.popper.anchorOverride.set(this.trigger()));\n\n // Keep the dismissal reference (the active trigger) in sync so an outside-press / focus on the\n // trigger counts as \"inside\" and never dismisses (ADR 0015).\n effect(() => this.floatingContext.setReferenceElement(this.trigger() ?? null));\n\n effect(() => {\n if (this.open() && this.preventUnmountOnClose()) {\n this.preventUnmountOnClose.set(false);\n }\n });\n\n let previousOpen = this.open();\n effect(() => {\n const open = this.open();\n if (open !== previousOpen) {\n previousOpen = open;\n untracked(() => this.transition.start(open));\n }\n });\n }\n\n show(autoFocus: RdxMenuAutoFocusInput = 'first', reason: RdxMenuOpenChangeReason = 'none', event?: Event) {\n if (this.effectiveDisabled()) {\n return;\n }\n\n this.autoFocus.set(autoFocus === true ? 'first' : autoFocus);\n if (!this.open()) {\n const change = this.createOpenChangeEvent(true, reason, event);\n this.onOpenChange.emit(change.payload);\n\n if (change.eventDetails.isCanceled()) {\n return;\n }\n\n this.lastOpenChangeReason.set(reason);\n // Record whether this open came from touch (ADR 0016 §3). Hover / mouse / keyboard all resolve\n // to false (no `'touch'` pointer type), so only a genuine touch open gates the anchored lock.\n this.openedByTouch.set((event as PointerEvent | undefined)?.pointerType === 'touch');\n this.openInteractionType.set(getInteractionTypeFromEvent(event));\n this.preventUnmountOnClose.set(false);\n this.open.set(true);\n // Publish reason + native event on the per-popup floating channel (Base UI open-change) so the\n // dismissal / future focus policy can read why the menu opened (e.g. hover vs press).\n this.floatingContext.events.emit('openchange', { open: true, reason, event: change.eventDetails.event });\n }\n }\n\n close(reason: RdxMenuOpenChangeReason = 'none', event?: Event) {\n if (this.open()) {\n const change = this.createOpenChangeEvent(false, reason, event);\n this.onOpenChange.emit(change.payload);\n\n if (change.eventDetails.isCanceled()) {\n return;\n }\n\n this.setAllowMouseUpTrigger(false);\n this.lastOpenChangeReason.set(reason);\n this.closeInteractionType.set(getInteractionTypeFromEvent(event));\n this.preventUnmountOnClose.set(change.shouldPreventUnmountOnClose());\n this.open.set(false);\n this.floatingContext.events.emit('openchange', { open: false, reason, event: change.eventDetails.event });\n }\n }\n\n toggle(reason: RdxMenuOpenChangeReason = 'trigger-press', event?: Event) {\n if (this.effectiveDisabled()) {\n return;\n }\n\n if (this.open()) {\n this.close(reason, event);\n } else {\n this.show('first', reason, event);\n }\n }\n\n markAsContextMenu(): void {\n this.isContextMenu.set(true);\n }\n\n setAllowMouseUpTrigger(value: boolean): void {\n if (this.parentRoot) {\n this.parentRoot.setAllowMouseUpTrigger(value);\n return;\n }\n\n this.localAllowMouseUpTrigger.set(value);\n }\n\n /**\n * Close this menu **and every ancestor menu** in the chain. Selecting an item dismisses the whole\n * menu, not just the innermost submenu (a submenu's `close()` would leave its parents open).\n */\n closeEntireMenu(reason: RdxMenuOpenChangeReason = 'none', event?: Event): void {\n this.close(reason, event);\n this.parentRoot?.closeEntireMenu(reason, event);\n }\n\n registerTrigger(el: HTMLElement): () => void {\n this.registeredTrigger = el;\n this.trigger.set(el);\n this.floatingContext.triggers.add(el);\n return () => {\n this.floatingContext.triggers.delete(el);\n if (this.registeredTrigger === el) {\n this.registeredTrigger = undefined;\n this.trigger.set(undefined);\n }\n };\n }\n\n registerPopup(el: HTMLElement): () => void {\n this.popupElement.set(el);\n return () => {\n if (this.popupElement() === el) {\n this.popupElement.set(undefined);\n }\n };\n }\n\n registerTransitionElement(element: HTMLElement): () => void {\n return this.transition.registerElement(element);\n }\n\n registerPopupArrowNavigationHandler(handler: (offset: 1 | -1) => boolean): () => void {\n this.popupArrowNavigationHandler = handler;\n\n return () => {\n if (this.popupArrowNavigationHandler === handler) {\n this.popupArrowNavigationHandler = undefined;\n }\n };\n }\n\n handlePopupArrowNavigation(offset: 1 | -1): boolean {\n return this.popupArrowNavigationHandler?.(offset) ?? false;\n }\n\n registerTriggerInteractionHandler(handler: RdxMenuTriggerInteractionHandler): () => void {\n this.triggerInteractionHandler = handler;\n this.hasTriggerInteractionHandler.set(true);\n\n return () => {\n if (this.triggerInteractionHandler === handler) {\n this.triggerInteractionHandler = undefined;\n this.hasTriggerInteractionHandler.set(false);\n }\n };\n }\n\n handleTriggerInteraction(interaction: RdxMenuTriggerInteraction): boolean {\n return this.triggerInteractionHandler?.(interaction) ?? false;\n }\n\n markAsSubmenu(): void {\n this.isSubmenu.set(true);\n }\n\n closeParent(): void {\n this.trigger()?.dispatchEvent(new CustomEvent('rdx-menu-close-parent', { bubbles: true }));\n }\n\n private createOpenChangeEvent(open: boolean, reason: RdxMenuOpenChangeReason, event?: Event) {\n const change = createCancelableChangeEventDetails(\n reason,\n event ?? new Event('menu.open-change'),\n this.trigger()\n );\n\n return {\n eventDetails: change.eventDetails,\n shouldPreventUnmountOnClose: change.shouldPreventUnmountOnClose,\n payload: {\n open,\n trigger: change.eventDetails.trigger,\n reason: change.eventDetails.reason,\n event: change.eventDetails.event,\n eventDetails: change.eventDetails\n } satisfies RdxMenuOpenChange\n };\n }\n}\n","import { computed, Directive, inject } from '@angular/core';\nimport { RdxPopperArrow, RdxPopperContentWrapper } from '@radix-ng/primitives/popper';\nimport { injectRdxMenuRootContext } from './menu-root';\n\n/**\n * An optional visual arrow connecting the popup to its trigger.\n * Place it inside `rdxMenuPopup`. Positioning is handled by the shared Popper Arrow primitive.\n */\n@Directive({\n selector: '[rdxMenuArrow]',\n exportAs: 'rdxMenuArrow',\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 RdxMenuArrow {\n protected readonly rootContext = injectRdxMenuRootContext();\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 { injectRdxMenuRootContext } from './menu-root';\n\n/**\n * An optional overlay rendered behind the menu popup.\n * Style it with `position: fixed; inset: 0` and use `data-open` / `data-closed`\n * for CSS animations.\n */\n@Directive({\n selector: '[rdxMenuBackdrop]',\n exportAs: 'rdxMenuBackdrop',\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-starting-style]': 'rootContext.transitionStatus() === \"starting\" ? \"\" : undefined',\n '[attr.data-ending-style]': 'rootContext.transitionStatus() === \"ending\" ? \"\" : undefined'\n }\n})\nexport class RdxMenuBackdrop {\n protected readonly rootContext = injectRdxMenuRootContext();\n}\n","export type CheckedState = boolean | 'indeterminate';\n\nexport function isIndeterminate(checked?: CheckedState): checked is 'indeterminate' {\n return checked === 'indeterminate';\n}\n\nexport function getCheckedState(checked: CheckedState): 'checked' | 'unchecked' | 'indeterminate' {\n return isIndeterminate(checked) ? 'indeterminate' : checked ? 'checked' : 'unchecked';\n}\n","import {\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n Signal\n} from '@angular/core';\nimport { BooleanInput, createContext } from '@radix-ng/primitives/core';\nimport { injectRdxMenuRootContext } from './menu-root';\nimport { CheckedState, getCheckedState, isIndeterminate } from './menu-utils';\n\nexport interface RdxMenuCheckboxItemContext {\n checked: Signal<CheckedState>;\n}\n\nexport const [injectRdxMenuCheckboxItemContext, provideRdxMenuCheckboxItemContext] =\n createContext<RdxMenuCheckboxItemContext>('RdxMenuCheckboxItemContext', 'components/menu');\n\nconst checkboxItemContextFactory = (): RdxMenuCheckboxItemContext => {\n const instance = inject(RdxMenuCheckboxItem);\n return {\n checked: instance.checked\n };\n};\n\n/**\n * A menu item that can be checked or unchecked.\n */\n@Directive({\n selector: '[rdxMenuCheckboxItem]',\n exportAs: 'rdxMenuCheckboxItem',\n providers: [provideRdxMenuCheckboxItemContext(checkboxItemContextFactory)],\n host: {\n role: 'menuitemcheckbox',\n tabindex: '-1',\n '[attr.aria-checked]': 'isIndeterminate(checked()) ? \"mixed\" : checked()',\n '[attr.data-state]': 'getCheckedState(checked())',\n '[attr.data-disabled]': 'effectiveDisabled() ? \"\" : undefined',\n '[attr.aria-disabled]': 'effectiveDisabled() ? true : undefined',\n '[attr.data-highlighted]': 'highlighted() ? \"\" : undefined',\n '[attr.data-label]': 'label() ?? undefined',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '(pointermove)': 'onPointerMove($event)',\n '(pointerleave)': 'onPointerLeave($event)',\n '(mouseup)': 'onMouseUp($event)',\n '(click)': 'onItemClick()',\n '(keydown.enter)': 'onActivate($event)',\n '(keydown.space)': 'onActivate($event)'\n }\n})\nexport class RdxMenuCheckboxItem {\n private readonly rootContext = injectRdxMenuRootContext(true);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly isFocused = signal(false);\n\n /** Whether this item is disabled. */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Whether toggling closes the menu. Defaults to false — checkbox items stay open. */\n readonly closeOnClick = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Explicit typeahead label. When set, overrides textContent for character search. */\n readonly label = input<string | undefined>(undefined);\n\n /** The checked state of the item. */\n readonly checked = model<CheckedState>(false);\n\n /** Emits when the checked state changes. */\n readonly onCheckedChange = output<CheckedState>();\n\n protected readonly highlighted = computed(() => this.isFocused());\n protected readonly effectiveDisabled = computed(() => this.disabled() || (this.rootContext?.disabled() ?? false));\n\n // Expose helpers for host bindings\n protected readonly isIndeterminate = isIndeterminate;\n protected readonly getCheckedState = getCheckedState;\n\n onFocus(): void {\n if (!this.effectiveDisabled()) {\n this.isFocused.set(true);\n }\n }\n\n onBlur(): void {\n this.isFocused.set(false);\n }\n\n onPointerMove(event: PointerEvent): void {\n if (event.defaultPrevented || event.pointerType !== 'mouse' || this.effectiveDisabled()) {\n return;\n }\n if (this.rootContext && !this.rootContext.highlightItemOnHover()) {\n return;\n }\n if (this.elementRef.nativeElement.ownerDocument.activeElement !== this.elementRef.nativeElement) {\n this.elementRef.nativeElement.focus({ preventScroll: true });\n }\n }\n\n onPointerLeave(event: PointerEvent): void {\n if (event.pointerType !== 'mouse') {\n return;\n }\n if (this.elementRef.nativeElement.ownerDocument.activeElement === this.elementRef.nativeElement) {\n this.elementRef.nativeElement.closest<HTMLElement>('[rdxMenuPopup]')?.focus({ preventScroll: true });\n }\n }\n\n onItemClick(): void {\n if (this.effectiveDisabled()) return;\n this.toggleChecked();\n if (this.closeOnClick()) this.rootContext?.closeEntireMenu();\n }\n\n onMouseUp(event: MouseEvent): void {\n if (this.effectiveDisabled() || event.button !== 0 || !this.rootContext?.allowMouseUpTrigger()) {\n return;\n }\n\n this.rootContext.setAllowMouseUpTrigger(false);\n this.elementRef.nativeElement.click();\n }\n\n protected onActivate(event: Event): void {\n if (this.effectiveDisabled()) return;\n event.preventDefault();\n this.toggleChecked();\n if (this.closeOnClick()) this.rootContext?.closeEntireMenu();\n }\n\n private toggleChecked(): void {\n const next = isIndeterminate(this.checked()) ? true : !this.checked();\n this.checked.set(next);\n this.onCheckedChange.emit(next);\n }\n}\n","import { booleanAttribute, computed, Directive, input } from '@angular/core';\nimport { BooleanInput } from '@radix-ng/primitives/core';\nimport { injectRdxMenuCheckboxItemContext } from './menu-checkbox-item';\nimport { getCheckedState, isIndeterminate } from './menu-utils';\n\n/**\n * Renders when the parent checkbox item is checked or indeterminate.\n * Set `keepMounted` to keep the element in the DOM when unchecked (enables CSS animations).\n */\n@Directive({\n selector: '[rdxMenuCheckboxItemIndicator]',\n exportAs: 'rdxMenuCheckboxItemIndicator',\n host: {\n '[attr.data-state]': 'dataState()',\n '[attr.data-starting-style]': 'isVisible() ? \"\" : undefined',\n '[attr.data-ending-style]': '!isVisible() ? \"\" : undefined',\n '[style.display]': '!keepMounted() && !isVisible() ? \"none\" : null'\n }\n})\nexport class RdxMenuCheckboxItemIndicator {\n private readonly itemContext = injectRdxMenuCheckboxItemContext();\n\n /** Keep the indicator in the DOM when unchecked so CSS exit animations can play. */\n readonly keepMounted = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n protected readonly dataState = computed(() => getCheckedState(this.itemContext.checked()));\n protected readonly isVisible = computed(\n () => isIndeterminate(this.itemContext.checked()) || this.itemContext.checked() === true\n );\n}\n","import { WritableSignal } from '@angular/core';\nimport { createContext } from '@radix-ng/primitives/core';\n\nexport interface RdxMenuGroupContext {\n labelId: WritableSignal<string | undefined>;\n}\n\nexport const [injectRdxMenuGroupContext, provideRdxMenuGroupContext] = createContext<RdxMenuGroupContext>(\n 'RdxMenuGroupContext',\n 'components/menu'\n);\n","import { Directive, inject, signal } from '@angular/core';\nimport { provideRdxMenuGroupContext, RdxMenuGroupContext } from './menu-group-context';\n\nconst groupContextFactory = (): RdxMenuGroupContext => {\n const instance = inject(RdxMenuGroup);\n return { labelId: instance.labelId };\n};\n\n/**\n * Groups related menu items together.\n */\n@Directive({\n selector: '[rdxMenuGroup]',\n exportAs: 'rdxMenuGroup',\n providers: [provideRdxMenuGroupContext(groupContextFactory)],\n host: {\n role: 'group',\n '[attr.aria-labelledby]': 'labelId()'\n }\n})\nexport class RdxMenuGroup {\n readonly labelId = signal<string | undefined>(undefined);\n}\n","import { DestroyRef, Directive, inject } from '@angular/core';\nimport { injectId } from '@radix-ng/primitives/core';\nimport { injectRdxMenuGroupContext } from './menu-group-context';\n\n/**\n * A label for a menu group.\n */\n@Directive({\n selector: '[rdxMenuGroupLabel]',\n exportAs: 'rdxMenuGroupLabel',\n host: {\n '[attr.id]': 'id'\n }\n})\nexport class RdxMenuGroupLabel {\n private readonly groupContext = injectRdxMenuGroupContext();\n\n readonly id = injectId('rdx-menu-group-label-');\n\n constructor() {\n this.groupContext.labelId.set(this.id);\n inject(DestroyRef).onDestroy(() => {\n if (this.groupContext.labelId() === this.id) {\n this.groupContext.labelId.set(undefined);\n }\n });\n }\n}\n","import { booleanAttribute, computed, Directive, ElementRef, inject, input, output, signal } from '@angular/core';\nimport { BooleanInput } from '@radix-ng/primitives/core';\nimport { injectRdxMenuRootContext } from './menu-root';\n\n/**\n * An individual menu item.\n */\n@Directive({\n selector: '[rdxMenuItem]',\n exportAs: 'rdxMenuItem',\n host: {\n role: 'menuitem',\n tabindex: '-1',\n '[attr.data-disabled]': 'effectiveDisabled() ? \"\" : undefined',\n '[attr.aria-disabled]': 'effectiveDisabled() ? true : undefined',\n '[attr.data-highlighted]': 'highlighted() ? \"\" : undefined',\n '[attr.data-label]': 'label() ?? undefined',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '(pointermove)': 'onPointerMove($event)',\n '(pointerleave)': 'onPointerLeave($event)',\n '(mouseup)': 'onMouseUp($event)',\n '(click)': 'onItemClick()',\n '(keydown.enter)': 'onActivate($event)',\n '(keydown.space)': 'onActivate($event)'\n }\n})\nexport class RdxMenuItem {\n private readonly rootContext = injectRdxMenuRootContext(true);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly isFocused = signal(false);\n\n /** Whether this item is disabled. */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Whether selecting this item closes the menu. */\n readonly closeOnClick = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /** Explicit typeahead label. When set, overrides textContent for character search. */\n readonly label = input<string | undefined>(undefined);\n\n /** Emits when the item is selected. */\n readonly onSelect = output<void>();\n\n protected readonly highlighted = computed(() => this.isFocused());\n protected readonly effectiveDisabled = computed(() => this.disabled() || (this.rootContext?.disabled() ?? false));\n\n onFocus(): void {\n if (!this.effectiveDisabled()) {\n this.isFocused.set(true);\n }\n }\n\n onBlur(): void {\n this.isFocused.set(false);\n }\n\n onPointerMove(event: PointerEvent): void {\n if (event.defaultPrevented || event.pointerType !== 'mouse' || this.effectiveDisabled()) {\n return;\n }\n if (this.rootContext && !this.rootContext.highlightItemOnHover()) {\n return;\n }\n if (this.elementRef.nativeElement.ownerDocument.activeElement !== this.elementRef.nativeElement) {\n this.elementRef.nativeElement.focus({ preventScroll: true });\n }\n }\n\n onPointerLeave(event: PointerEvent): void {\n if (event.pointerType !== 'mouse') {\n return;\n }\n // Clear highlight when the pointer leaves: move focus back to the popup. A subsequent\n // pointermove on a sibling item re-focuses it, so moving between items still works.\n if (this.elementRef.nativeElement.ownerDocument.activeElement === this.elementRef.nativeElement) {\n this.elementRef.nativeElement.closest<HTMLElement>('[rdxMenuPopup]')?.focus({ preventScroll: true });\n }\n }\n\n onItemClick(): void {\n if (this.effectiveDisabled()) return;\n this.onSelect.emit();\n if (this.closeOnClick()) this.rootContext?.closeEntireMenu();\n }\n\n onMouseUp(event: MouseEvent): void {\n if (this.effectiveDisabled() || event.button !== 0 || !this.rootContext?.allowMouseUpTrigger()) {\n return;\n }\n\n this.rootContext.setAllowMouseUpTrigger(false);\n this.elementRef.nativeElement.click();\n }\n\n protected onActivate(event: Event): void {\n if (this.effectiveDisabled()) return;\n event.preventDefault();\n this.onSelect.emit();\n if (this.closeOnClick()) this.rootContext?.closeEntireMenu();\n }\n}\n","import { booleanAttribute, computed, Directive, ElementRef, inject, input, output, signal } from '@angular/core';\nimport { BooleanInput } from '@radix-ng/primitives/core';\nimport { injectRdxMenuRootContext } from './menu-root';\n\n/**\n * A menu item that renders as a link.\n */\n@Directive({\n selector: 'a[rdxMenuLinkItem]',\n exportAs: 'rdxMenuLinkItem',\n host: {\n role: 'menuitem',\n tabindex: '-1',\n '[attr.data-disabled]': 'effectiveDisabled() ? \"\" : undefined',\n '[attr.aria-disabled]': 'effectiveDisabled() ? true : undefined',\n '[attr.data-highlighted]': 'highlighted() ? \"\" : undefined',\n '[attr.data-label]': 'label() ?? undefined',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '(pointermove)': 'onPointerMove($event)',\n '(pointerleave)': 'onPointerLeave($event)',\n '(mouseup)': 'onMouseUp($event)',\n '(click)': 'onItemClick($event)',\n '(keydown.enter)': 'onActivate($event)'\n }\n})\nexport class RdxMenuLinkItem {\n private readonly rootContext = injectRdxMenuRootContext(true);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly isFocused = signal(false);\n\n /** Whether this item is disabled. */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Whether selecting this item closes the menu. Defaults to false — links navigate by default. */\n readonly closeOnClick = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Explicit typeahead label. When set, overrides textContent for character search. */\n readonly label = input<string | undefined>(undefined);\n\n /** Emits when the item is selected. */\n readonly onSelect = output<void>();\n\n protected readonly highlighted = computed(() => this.isFocused());\n protected readonly effectiveDisabled = computed(() => this.disabled() || (this.rootContext?.disabled() ?? false));\n\n onFocus(): void {\n if (!this.effectiveDisabled()) {\n this.isFocused.set(true);\n }\n }\n\n onBlur(): void {\n this.isFocused.set(false);\n }\n\n onPointerMove(event: PointerEvent): void {\n if (event.defaultPrevented || event.pointerType !== 'mouse' || this.effectiveDisabled()) {\n return;\n }\n if (this.rootContext && !this.rootContext.highlightItemOnHover()) {\n return;\n }\n if (this.elementRef.nativeElement.ownerDocument.activeElement !== this.elementRef.nativeElement) {\n this.elementRef.nativeElement.focus({ preventScroll: true });\n }\n }\n\n onPointerLeave(event: PointerEvent): void {\n if (event.pointerType !== 'mouse') {\n return;\n }\n if (this.elementRef.nativeElement.ownerDocument.activeElement === this.elementRef.nativeElement) {\n this.elementRef.nativeElement.closest<HTMLElement>('[rdxMenuPopup]')?.focus({ preventScroll: true });\n }\n }\n\n onItemClick(event: MouseEvent): void {\n if (this.effectiveDisabled()) {\n event.preventDefault();\n return;\n }\n this.onSelect.emit();\n if (this.closeOnClick()) this.rootContext?.closeEntireMenu();\n }\n\n onMouseUp(event: MouseEvent): void {\n if (this.effectiveDisabled() || event.button !== 0 || !this.rootContext?.allowMouseUpTrigger()) {\n return;\n }\n\n this.rootContext.setAllowMouseUpTrigger(false);\n this.elementRef.nativeElement.click();\n }\n\n protected onActivate(event: Event): void {\n if (this.effectiveDisabled()) {\n event.preventDefault();\n return;\n }\n this.onSelect.emit();\n if (this.closeOnClick()) this.rootContext?.closeEntireMenu();\n }\n}\n","/** Selector for focusable menu items within a popup. */\nexport const RDX_MENU_ITEM_SELECTOR = [\n '[rdxMenuItem]:not([data-disabled])',\n '[rdxMenuCheckboxItem]:not([data-disabled])',\n '[rdxMenuRadioItem]:not([data-disabled])',\n '[rdxMenuLinkItem]:not([data-disabled])',\n '[rdxMenuSubTrigger]:not([data-disabled])'\n].join(',');\n\nexport function getFocusableMenuItems(popup: HTMLElement): HTMLElement[] {\n return Array.from(popup.querySelectorAll<HTMLElement>(RDX_MENU_ITEM_SELECTOR)).filter(\n (item) => item.closest('[rdxMenuPopup]') === popup\n );\n}\n","import { computed, DestroyRef, Directive, effect, ElementRef, inject, output } from '@angular/core';\nimport { outputFromObservable, outputToObservable } from '@angular/core/rxjs-interop';\nimport {\n RDX_FLOATING_REGISTRATION,\n RDX_FLOATING_ROOT_CONTEXT,\n RdxFloatingNodeRegistration,\n useAnchoredScrollLock\n} from '@radix-ng/primitives/core';\nimport { RdxDismiss, RdxOutsidePressDomEvent } from '@radix-ng/primitives/dismissable-layer';\nimport {\n provideFloatingFocusManagerConfig,\n RdxFloatingFocusManager\n} from '@radix-ng/primitives/floating-focus-manager';\nimport { RdxFocusScope } from '@radix-ng/primitives/focus-scope';\nimport { RdxPopperContent, RdxPopperContentWrapper } from '@radix-ng/primitives/popper';\nimport { getFocusableMenuItems } from './menu-focus';\nimport { injectRdxMenuRootContext, RdxMenuOpenChangeReason } from './menu-root';\n\n/**\n * A container for the menu contents.\n */\n@Directive({\n selector: '[rdxMenuPopup]',\n exportAs: 'rdxMenuPopup',\n hostDirectives: [RdxPopperContent, RdxFloatingNodeRegistration, RdxFloatingFocusManager],\n providers: [\n provideFloatingFocusManagerConfig(() => {\n const rootContext = injectRdxMenuRootContext();\n const popup = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n return {\n // Only a (modal) **context menu** traps focus — Base UI's `FloatingFocusManager modal` is\n // true for `context-menu` alone. Other menus stay non-modal and close on focus-out.\n modal: () => rootContext.parentType() === 'context-menu',\n // The manager follows mounted/open lifecycle, not menu disabled state. Dismissal remains\n // disabled separately below; focus/marker policy should not disappear if a menu becomes\n // disabled while open, or if `preventUnmountOnClose()` keeps it mounted after close.\n enabled: () => rootContext.present(),\n // Base UI's submenu policy: a submenu mount does not steal focus from its trigger.\n // Root menus still choose first / last item vs popup container from the menu's own\n // open policy (`autoFocus`), but the decision now lives in the focus manager instead\n // of a separate popup effect.\n initialFocus: () => {\n if (!rootContext.isOpen() || rootContext.parentType() === 'menu') {\n return false;\n }\n\n const autoFocus = rootContext.autoFocus();\n\n if (autoFocus === false) {\n return false;\n }\n\n if (autoFocus === 'popup') {\n return popup;\n }\n\n return () => {\n const items = getFocusableMenuItems(popup);\n\n return autoFocus === 'last' ? (items.at(-1) ?? popup) : (items[0] ?? popup);\n };\n },\n returnFocus: () => {\n const parentType = rootContext.parentType();\n\n if (rootContext.trigger() || parentType === undefined || parentType === 'context-menu') {\n return true;\n }\n\n if (parentType === 'menubar' && rootContext.lastOpenChangeReason() !== 'outside-press') {\n return true;\n }\n\n return false;\n },\n openInteractionType: () => rootContext.openInteractionType(),\n closeInteractionType: () => rootContext.closeInteractionType()\n };\n })\n ],\n host: {\n role: 'menu',\n tabindex: '-1',\n '[attr.aria-orientation]': 'rootContext.orientation()',\n '[attr.data-closed]': 'rootContext.isOpen() ? undefined : \"\"',\n '[attr.data-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[attr.data-state]': 'rootContext.isOpen() ? \"open\" : \"closed\"',\n '[attr.data-starting-style]': 'rootContext.transitionStatus() === \"starting\" ? \"\" : undefined',\n '[attr.data-ending-style]': 'rootContext.transitionStatus() === \"ending\" ? \"\" : undefined',\n '[attr.data-align]': 'align()',\n '[attr.data-side]': 'side()',\n '(keydown)': 'handleKeydown($event)',\n '(rdx-menu-close-parent)': 'handleCloseParent($event)'\n }\n})\nexport class RdxMenuPopup {\n protected readonly rootContext = injectRdxMenuRootContext();\n private readonly floatingContext = inject(RDX_FLOATING_ROOT_CONTEXT);\n private readonly registration = inject(RDX_FLOATING_REGISTRATION, { optional: true });\n private readonly focusManager = inject(RdxFloatingFocusManager);\n private readonly focusScope = inject(RdxFocusScope);\n private readonly wrapper = inject(RdxPopperContentWrapper, { optional: true });\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private search = '';\n private searchTimer: ReturnType<typeof setTimeout> | undefined;\n\n protected readonly align = computed(() => this.wrapper?.placedAlign());\n protected readonly side = computed(() => this.wrapper?.placedSide());\n\n /**\n * Event handler called when the escape key is pressed. Can be prevented.\n */\n readonly escapeKeyDown = output<KeyboardEvent>();\n\n /**\n * Event handler called when a pointerdown event happens outside of the popup. Can be prevented.\n */\n readonly pointerDownOutside = output<RdxOutsidePressDomEvent>();\n\n /**\n * Event handler called when focus moves outside of the popup. Can be prevented.\n */\n readonly focusOutside = output<FocusEvent>();\n\n /**\n * Event handler called when an interaction happens outside of the popup. Can be prevented.\n */\n readonly interactOutside = output<RdxOutsidePressDomEvent | FocusEvent>();\n\n /**\n * Event handler called before focus moves into the popup. Can be prevented.\n */\n readonly openAutoFocus = outputFromObservable(outputToObservable(this.focusScope.mountAutoFocus));\n\n /**\n * Event handler called before focus returns after the popup is removed. Can be prevented.\n */\n readonly closeAutoFocus = outputFromObservable(outputToObservable(this.focusScope.unmountAutoFocus));\n\n constructor() {\n // Page scroll lock (Base UI `MenuPositioner`): only while **open** and **modal**, and a hover-open\n // dropdown / context menu does NOT lock (a menubar menu always does when modal). A submenu never\n // locks — its `modal` is already effectively false. For a **touch** open the anchored helper only\n // locks when the popup is effectively viewport-width (ADR 0016 §3), so a small menu stays\n // swipe-to-dismissable on mobile.\n useAnchoredScrollLock(\n computed(() => {\n if (!this.rootContext.isOpen() || !this.rootContext.modal()) {\n return false;\n }\n if (this.rootContext.parentType() === 'menubar') {\n return true;\n }\n return this.rootContext.lastOpenChangeReason() !== 'trigger-hover';\n }),\n {\n touchOpen: () => this.rootContext.openedByTouch(),\n element: () => this.elementRef.nativeElement\n }\n );\n\n // The popup is this layer's floating element (the inside-surface for containment checks). A\n // submenu is a child node in the shared tree, so the capability's logical containment treats an\n // open submenu as \"inside\" its parent automatically — replacing the legacy `branches` registry.\n this.floatingContext.setFloatingElement(this.elementRef.nativeElement);\n\n const unregister = this.rootContext.registerTransitionElement(this.elementRef.nativeElement);\n const unregisterPopup = this.rootContext.registerPopup(this.elementRef.nativeElement);\n inject(DestroyRef).onDestroy(() => {\n unregister();\n unregisterPopup();\n clearTimeout(this.searchTimer);\n });\n\n // Base UI moves focus into a keyboard-opened submenu via its list-navigation layer, not via the\n // focus manager (`initialFocus={false}` for submenus). In Angular, the popup itself is the first\n // point where the submenu DOM definitely exists, so complete the keyboard handoff here.\n effect(() => {\n if (\n !this.rootContext.isOpen() ||\n this.rootContext.parentType() !== 'menu' ||\n this.rootContext.openInteractionType() !== 'keyboard'\n ) {\n return;\n }\n\n this.scheduleSubmenuKeyboardFocus();\n });\n\n // Dismissal (ADR 0015): Escape, an outside press, or focus moving outside closes the menu.\n // Escape is owned by the capability (a document-level listener — it works regardless of where\n // focus currently sits, matching Base UI `useDismiss`). Deepest-first: a non-bubbling layer\n // yields to an open child, so Escape closes only the innermost menu — unless `closeParentOnEsc`\n // makes it bubble up the whole chain.\n new RdxDismiss(this.floatingContext, () => this.registration?.node() ?? null, {\n // A disabled menu does not dismiss (Base UI `useDismiss({ enabled: !disabled })`): if an open\n // menu becomes disabled it stays put rather than closing on Escape / outside-press / focus-out.\n enabled: () => !this.rootContext.disabled(),\n escapeKey: () => true,\n escapeKeyBubbles: () => this.rootContext.closeParentOnEsc(),\n outsidePress: () => true,\n focusOutside: () => false,\n onEscapeKeyDown: (event) => this.escapeKeyDown.emit(event),\n onPointerDownOutside: (event) => {\n this.pointerDownOutside.emit(event);\n this.interactOutside.emit(event);\n },\n onDismiss: (reason, event) => {\n // Forward the dismissal reason + native event into the menu's open-change channel.\n const menuReason: RdxMenuOpenChangeReason = reason === 'escape-key' ? 'escape-key' : 'outside-press';\n this.rootContext.close(menuReason, event);\n // Escape should restore focus synchronously to the trigger / submenu trigger so the\n // menu chain remains keyboard-stable even before the scope's queued unmount return-focus.\n if (reason === 'escape-key') {\n this.rootContext.trigger()?.focus({ preventScroll: true });\n }\n }\n });\n\n // Focus-out close is owned by the floating focus manager, matching Base UI's MenuPopup.\n this.focusManager.focusOut.subscribe((event) => {\n this.focusOutside.emit(event);\n this.interactOutside.emit(event);\n if (!event.defaultPrevented) {\n this.rootContext.close('focus-out', event);\n }\n });\n }\n\n protected handleCloseParent(event: Event): void {\n event.stopPropagation();\n this.rootContext.close();\n\n if (this.rootContext.isSubmenu() && this.rootContext.closeParentOnEsc()) {\n this.rootContext.closeParent();\n }\n }\n\n protected handleKeydown(event: KeyboardEvent): void {\n const el = this.elementRef.nativeElement;\n const items = getFocusableMenuItems(el);\n const current = el.ownerDocument.activeElement as HTMLElement;\n const currentIndex = items.indexOf(current);\n\n switch (event.key) {\n case 'ArrowDown': {\n event.preventDefault();\n event.stopPropagation();\n const atEnd = currentIndex >= items.length - 1;\n const next = atEnd\n ? this.rootContext.loopFocus()\n ? items[0]\n : items[items.length - 1]\n : items[currentIndex + 1];\n next?.focus({ preventScroll: true });\n break;\n }\n case 'ArrowUp': {\n event.preventDefault();\n event.stopPropagation();\n const atStart = currentIndex <= 0;\n const prev = atStart\n ? this.rootContext.loopFocus()\n ? items[items.length - 1]\n : items[0]\n : items[currentIndex - 1];\n prev?.focus({ preventScroll: true });\n break;\n }\n case 'Home': {\n event.preventDefault();\n event.stopPropagation();\n items[0]?.focus({ preventScroll: true });\n break;\n }\n case 'End': {\n event.preventDefault();\n event.stopPropagation();\n items[items.length - 1]?.focus({ preventScroll: true });\n break;\n }\n case 'ArrowLeft': {\n const trigger = this.rootContext.trigger();\n if (!trigger?.hasAttribute('rdxMenuSubTrigger')) {\n if (this.rootContext.handlePopupArrowNavigation(-1)) {\n event.preventDefault();\n event.stopPropagation();\n }\n break;\n }\n\n if (this.rootContext.dir() === 'rtl') {\n if (this.rootContext.handlePopupArrowNavigation(-1)) {\n event.preventDefault();\n event.stopPropagation();\n }\n break;\n }\n\n // Close this popup and return focus to the trigger (used by submenus).\n event.preventDefault();\n event.stopPropagation();\n this.rootContext.close();\n trigger.focus({ preventScroll: true });\n break;\n }\n case 'ArrowRight': {\n const trigger = this.rootContext.trigger();\n if (trigger?.hasAttribute('rdxMenuSubTrigger') && this.rootContext.dir() === 'rtl') {\n event.preventDefault();\n event.stopPropagation();\n this.rootContext.close();\n trigger.focus({ preventScroll: true });\n break;\n }\n\n if (this.rootContext.handlePopupArrowNavigation(1)) {\n event.preventDefault();\n event.stopPropagation();\n }\n break;\n }\n // Escape is owned by the dismissal capability (a document-level listener that works\n // regardless of focus position); it closes the menu, restores focus to the trigger, and\n // cascades up the chain when `closeParentOnEsc` is set.\n case 'Tab': {\n // Close on tab to allow natural tab navigation\n this.rootContext.close();\n break;\n }\n default: {\n // Typeahead\n if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) {\n event.preventDefault();\n const char = event.key.toLowerCase();\n this.search += char;\n clearTimeout(this.searchTimer);\n this.searchTimer = setTimeout(() => {\n this.search = '';\n this.searchTimer = undefined;\n }, 1000);\n\n const query =\n this.search.length > 1 && [...this.search].every((c) => c === char) ? char : this.search;\n const startIndex = currentIndex >= 0 ? currentIndex + 1 : 0;\n const rotated = [...items.slice(startIndex), ...items.slice(0, startIndex)];\n const match = rotated.find((item) => {\n const text = (item.dataset['label'] ?? item.textContent?.trim() ?? '').toLowerCase();\n return text.startsWith(query);\n });\n match?.focus({ preventScroll: true });\n }\n break;\n }\n }\n }\n\n private scheduleSubmenuKeyboardFocus(attempt = 0): void {\n const view = this.elementRef.nativeElement.ownerDocument.defaultView ?? globalThis;\n view.requestAnimationFrame(() => this.applySubmenuKeyboardFocus(attempt));\n }\n\n private applySubmenuKeyboardFocus(attempt: number): void {\n const maxAttempts = 10;\n const popup = this.elementRef.nativeElement;\n\n if (!this.rootContext.isOpen() || this.rootContext.parentType() !== 'menu') {\n return;\n }\n\n const activeElement = popup.ownerDocument.activeElement as HTMLElement | null;\n if (activeElement && popup.contains(activeElement)) {\n return;\n }\n\n const items = getFocusableMenuItems(popup);\n if (items.length === 0) {\n if (attempt < maxAttempts) {\n this.scheduleSubmenuKeyboardFocus(attempt + 1);\n }\n return;\n }\n\n items[0]?.focus({ preventScroll: true });\n }\n}\n","import { Directive, isDevMode } from '@angular/core';\nimport { rdxDevError } from '@radix-ng/primitives/core';\nimport { RdxPortalPresence } from '@radix-ng/primitives/portal';\nimport { provideRdxPresenceContext } from '@radix-ng/primitives/presence';\nimport { injectRdxMenuRootContext } from './menu-root';\n\n/**\n * Structural directive that teleports the menu popup into a container (default `document.body`) while\n * the menu is open, and keeps it mounted until any CSS exit `@keyframes` finishes.\n *\n * This replaces the consumer-owned `@if (root.open())` mount: it adds both teleporting *and*\n * exit-animation support. Apply it with the `*` microsyntax on the positioner —\n * `<div *rdxMenuPortal rdxMenuPositioner>` — or as an explicit `<ng-template rdxMenuPortal>`. For a\n * custom container, or a backdrop alongside the positioner (multi-root), use the explicit form.\n */\n@Directive({\n selector: 'ng-template[rdxMenuPortal]',\n exportAs: 'rdxMenuPortal',\n hostDirectives: [{ directive: RdxPortalPresence, inputs: ['container'] }],\n providers: [provideRdxPresenceContext(() => ({ present: injectRdxMenuRootContext().present }))]\n})\nexport class RdxMenuPortal {}\n\n/**\n * Dev-mode guard: `rdxMenuPortal` is a structural directive. The old `<div rdxMenuPortal>` markup\n * would silently stop portaling — fail loudly instead.\n */\n@Directive({\n selector: '[rdxMenuPortal]:not(ng-template)'\n})\nexport class RdxMenuPortalMisuseGuard {\n constructor() {\n if (isDevMode()) {\n rdxDevError(\n 'menu/portal-on-element',\n '`rdxMenuPortal` is a structural directive. ' +\n 'Use `*rdxMenuPortal` on the positioner element or `<ng-template rdxMenuPortal>`.',\n 'components/menu'\n );\n }\n }\n}\n","import { Injector } from '@angular/core';\nimport { setupInternalBackdrop } from '@radix-ng/primitives/core';\nimport { RdxMenuRootContext } from './menu-root';\n\n/** Marker attribute on the menu's internal backdrop element. */\nexport const MENU_INTERNAL_BACKDROP_ATTR = 'data-rdx-menu-internal-backdrop';\n\n/** The element that stays interactive through the backdrop (Base UI `backdropCutout`). */\nfunction cutoutElement(rootContext: RdxMenuRootContext): HTMLElement | null {\n const type = rootContext.parentType();\n const trigger = rootContext.trigger() ?? null;\n if (type === 'menubar') {\n // Keep the whole menubar interactive so hover/click switching between its menus still works.\n return trigger?.closest<HTMLElement>('[rdxMenubarRoot]') ?? trigger;\n }\n if (type === 'context-menu') {\n return null; // right-click anywhere — no cutout\n }\n return trigger; // standalone dropdown — keep its trigger clickable (toggle-close)\n}\n\n/**\n * The menu's modal **internal backdrop** (finding #1) — a thin wrapper over the shared\n * {@link setupInternalBackdrop}. Rendered for a modal Menu / Context Menu / Menubar menu (Base UI\n * `MenuPositioner.tsx`): never for a submenu, and not for a hover-opened dropdown / context menu.\n */\nexport function setupMenuInternalBackdrop(\n positioner: HTMLElement,\n rootContext: RdxMenuRootContext,\n injector: Injector\n): void {\n setupInternalBackdrop(positioner, injector, {\n marker: MENU_INTERNAL_BACKDROP_ATTR,\n isOpen: () => rootContext.isOpen(),\n cutout: () => cutoutElement(rootContext),\n shouldRender: () => {\n const type = rootContext.parentType();\n if (type === 'menu' || !rootContext.modal()) {\n return false; // submenus and non-modal menus get no backdrop\n }\n if (type === 'menubar') {\n return true; // a modal menubar menu always gets one (even on hover-switch)\n }\n // standalone / context menu: suppressed for a hover-open (Base UI excludes `triggerHover`).\n return rootContext.lastOpenChangeReason() !== 'trigger-hover';\n }\n });\n}\n","import { afterNextRender, Directive, ElementRef, inject, Injector } from '@angular/core';\nimport {\n legacyPopperVars,\n provideRdxPopperContentConfig,\n provideRdxPopperContentWrapper,\n RdxPopperContentWrapper\n} from '@radix-ng/primitives/popper';\nimport { setupMenuInternalBackdrop } from './menu-internal-backdrop';\nimport { injectRdxMenuRootContext } from './menu-root';\n\n/**\n * Positions the menu against its trigger.\n *\n * A \"thin\" positioner (ADR 0012): it inherits the popper positioning surface (inputs, `placed`\n * output, unified vars + placement attrs) from {@link RdxPopperContentWrapper} and adds the menu\n * defaults, the open/closed state attributes, and the deprecated `--radix-menu-*` aliases.\n */\n@Directive({\n selector: '[rdxMenuPositioner]',\n exportAs: 'rdxMenuPositioner',\n providers: [\n ...provideRdxPopperContentWrapper(RdxMenuPositioner),\n provideRdxPopperContentConfig({ arrowPadding: 5, collisionPadding: 5, updatePositionStrategy: 'always' })\n ],\n host: {\n '[attr.data-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[attr.data-closed]': 'rootContext.isOpen() ? undefined : \"\"',\n // `data-side`/`data-align`/`data-anchor-hidden` and the unified vars come from the inherited\n // wrapper (ADR 0012); only the deprecated `--radix-menu-*` aliases remain, for back-compat.\n '[style]': 'legacyVars'\n }\n})\nexport class RdxMenuPositioner extends RdxPopperContentWrapper {\n protected readonly rootContext = injectRdxMenuRootContext();\n protected readonly legacyVars = legacyPopperVars('menu');\n\n constructor() {\n super();\n const injector = inject(Injector);\n const host = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n // After the structural portal has relocated this positioner into the portal container, set up the\n // modal internal backdrop (finding #1) as a sibling before it.\n afterNextRender(() => setupMenuInternalBackdrop(host, this.rootContext, injector));\n }\n}\n","import { booleanAttribute, Directive, effect, inject, input, model, output, signal, Signal } from '@angular/core';\nimport { BooleanInput, createContext } from '@radix-ng/primitives/core';\nimport { provideRdxMenuGroupContext, RdxMenuGroupContext } from './menu-group-context';\n\nexport interface RdxMenuRadioGroupContext<T = unknown> {\n value: Signal<T | undefined>;\n disabled: Signal<boolean>;\n selectValue: (value: T) => void;\n}\n\nexport const [injectRdxMenuRadioGroupContext, provideRdxMenuRadioGroupContext] =\n createContext<RdxMenuRadioGroupContext>('RdxMenuRadioGroupContext', 'components/menu');\n\nconst radioGroupContextFactory = (): RdxMenuRadioGroupContext => {\n const instance = inject(RdxMenuRadioGroup);\n return {\n value: instance.value,\n disabled: instance.disabled,\n selectValue: (v) => instance.selectValue(v)\n };\n};\n\nconst groupContextFactory = (): RdxMenuGroupContext => {\n const instance = inject(RdxMenuRadioGroup);\n return { labelId: instance.labelId };\n};\n\n/**\n * Groups radio items in a menu.\n */\n@Directive({\n selector: '[rdxMenuRadioGroup]',\n exportAs: 'rdxMenuRadioGroup',\n providers: [\n provideRdxMenuRadioGroupContext(radioGroupContextFactory),\n provideRdxMenuGroupContext(groupContextFactory)\n ],\n host: {\n role: 'group',\n '[attr.aria-labelledby]': 'labelId()',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined'\n }\n})\nexport class RdxMenuRadioGroup<T = unknown> {\n private hasAppliedDefaultValue = false;\n\n /**\n * The currently selected value.\n */\n readonly value = model<T | undefined>(undefined);\n\n /** The initially selected value for uncontrolled usage. */\n readonly defaultValue = input<T | undefined>(undefined);\n\n /** Whether all radio items in the group are disabled. */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Emits when the selected value changes.\n */\n readonly onValueChange = output<T>();\n\n readonly labelId = signal<string | undefined>(undefined);\n\n constructor() {\n effect(() => {\n const defaultValue = this.defaultValue();\n if (!this.hasAppliedDefaultValue && defaultValue !== undefined) {\n this.hasAppliedDefaultValue = true;\n this.value.set(defaultValue);\n }\n });\n }\n\n selectValue(newValue: T): void {\n if (this.disabled()) {\n return;\n }\n this.value.set(newValue);\n this.onValueChange.emit(newValue);\n }\n}\n","import {\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n output,\n signal,\n Signal\n} from '@angular/core';\nimport { BooleanInput, createContext } from '@radix-ng/primitives/core';\nimport { injectRdxMenuRadioGroupContext } from './menu-radio-group';\nimport { injectRdxMenuRootContext } from './menu-root';\nimport { getCheckedState } from './menu-utils';\n\nexport interface RdxMenuRadioItemContext {\n checked: Signal<boolean>;\n}\n\nexport const [injectRdxMenuRadioItemContext, provideRdxMenuRadioItemContext] = createContext<RdxMenuRadioItemContext>(\n 'RdxMenuRadioItemContext',\n 'components/menu'\n);\n\nconst radioItemContextFactory = (): RdxMenuRadioItemContext => {\n const instance = inject(RdxMenuRadioItem);\n return {\n checked: instance.checked\n };\n};\n\n/**\n * A radio item within a menu radio group.\n */\n@Directive({\n selector: '[rdxMenuRadioItem]',\n exportAs: 'rdxMenuRadioItem',\n providers: [provideRdxMenuRadioItemContext(radioItemContextFactory)],\n host: {\n role: 'menuitemradio',\n tabindex: '-1',\n '[attr.aria-checked]': 'checked()',\n '[attr.data-state]': 'getCheckedState(checked())',\n '[attr.data-disabled]': 'effectiveDisabled() ? \"\" : undefined',\n '[attr.aria-disabled]': 'effectiveDisabled() ? true : undefined',\n '[attr.data-highlighted]': 'highlighted() ? \"\" : undefined',\n '[attr.data-label]': 'label() ?? undefined',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '(pointermove)': 'onPointerMove($event)',\n '(pointerleave)': 'onPointerLeave($event)',\n '(mouseup)': 'onMouseUp($event)',\n '(click)': 'onItemClick()',\n '(keydown.enter)': 'onActivate($event)',\n '(keydown.space)': 'onActivate($event)'\n }\n})\nexport class RdxMenuRadioItem<T = unknown> {\n private readonly rootContext = injectRdxMenuRootContext(true);\n private readonly radioGroupContext = injectRdxMenuRadioGroupContext();\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly isFocused = signal(false);\n\n /** The value of this radio item. */\n readonly value = input.required<T>();\n\n /** Whether this item is disabled. */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Whether selecting closes the menu. Defaults to false — radio items stay open. */\n readonly closeOnClick = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Explicit typeahead label. When set, overrides textContent for character search. */\n readonly label = input<string | undefined>(undefined);\n\n /** Emits when this item is selected. */\n readonly onSelect = output<T>();\n\n readonly checked = computed(() => this.radioGroupContext.value() === this.value());\n\n protected readonly highlighted = computed(() => this.isFocused());\n protected readonly effectiveDisabled = computed(\n () => this.disabled() || this.radioGroupContext.disabled() || (this.rootContext?.disabled() ?? false)\n );\n protected readonly getCheckedState = getCheckedState;\n\n onFocus(): void {\n if (!this.effectiveDisabled()) {\n this.isFocused.set(true);\n }\n }\n\n onBlur(): void {\n this.isFocused.set(false);\n }\n\n onPointerMove(event: PointerEvent): void {\n if (event.defaultPrevented || event.pointerType !== 'mouse' || this.effectiveDisabled()) {\n return;\n }\n if (this.rootContext && !this.rootContext.highlightItemOnHover()) {\n return;\n }\n if (this.elementRef.nativeElement.ownerDocument.activeElement !== this.elementRef.nativeElement) {\n this.elementRef.nativeElement.focus({ preventScroll: true });\n }\n }\n\n onPointerLeave(event: PointerEvent): void {\n if (event.pointerType !== 'mouse') {\n return;\n }\n if (this.elementRef.nativeElement.ownerDocument.activeElement === this.elementRef.nativeElement) {\n this.elementRef.nativeElement.closest<HTMLElement>('[rdxMenuPopup]')?.focus({ preventScroll: true });\n }\n }\n\n onItemClick(): void {\n if (this.effectiveDisabled()) {\n return;\n }\n this.selectItem();\n }\n\n onMouseUp(event: MouseEvent): void {\n if (this.effectiveDisabled() || event.button !== 0 || !this.rootContext?.allowMouseUpTrigger()) {\n return;\n }\n\n this.rootContext.setAllowMouseUpTrigger(false);\n this.elementRef.nativeElement.click();\n }\n\n protected onActivate(event: Event): void {\n if (this.effectiveDisabled()) {\n return;\n }\n event.preventDefault();\n this.selectItem();\n }\n\n private selectItem(): void {\n const v = this.value();\n this.radioGroupContext.selectValue(v);\n this.onSelect.emit(v);\n if (this.closeOnClick()) this.rootContext?.closeEntireMenu();\n }\n}\n","import { booleanAttribute, computed, Directive, input } from '@angular/core';\nimport { BooleanInput } from '@radix-ng/primitives/core';\nimport { injectRdxMenuRadioItemContext } from './menu-radio-item';\nimport { getCheckedState } from './menu-utils';\n\n/**\n * Renders when the parent radio item is selected.\n * Set `keepMounted` to keep the element in the DOM when unselected (enables CSS animations).\n */\n@Directive({\n selector: '[rdxMenuRadioItemIndicator]',\n exportAs: 'rdxMenuRadioItemIndicator',\n host: {\n '[attr.data-state]': 'dataState()',\n '[attr.data-starting-style]': 'isVisible() ? \"\" : undefined',\n '[attr.data-ending-style]': '!isVisible() ? \"\" : undefined',\n '[style.display]': '!keepMounted() && !isVisible() ? \"none\" : null'\n }\n})\nexport class RdxMenuRadioItemIndicator {\n private readonly itemContext = injectRdxMenuRadioItemContext();\n\n /** Keep the indicator in the DOM when unselected so CSS exit animations can play. */\n readonly keepMounted = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n protected readonly dataState = computed(() => getCheckedState(this.itemContext.checked()));\n protected readonly isVisible = computed(() => this.itemContext.checked() === true);\n}\n","import { Directive } from '@angular/core';\n\n/**\n * A visual separator between groups of menu items.\n */\n@Directive({\n selector: '[rdxMenuSeparator]',\n exportAs: 'rdxMenuSeparator',\n host: {\n role: 'separator',\n '[attr.aria-orientation]': '\"horizontal\"'\n }\n})\nexport class RdxMenuSeparator {}\n","/**\n * Submenu \"safe polygon\" — a faithful port of Floating UI's `safePolygon` algorithm\n * (https://floating-ui.com/docs/useHover#safepolygon), adapted to this library.\n *\n * While a submenu is open by hover, the parent submenu owns the decision to close itself: a\n * document-level `mousemove` handler keeps it open as long as the cursor is heading toward the\n * popup inside a safe quadrilateral (built from the cursor's exit point and the popup rect), and\n * closes it once the cursor leaves that area. Combined with the pointer-events \"tunnel\" below\n * (`applyPointerTunnel`), siblings cannot steal the open submenu during a diagonal traversal.\n *\n * Differences from the upstream implementation:\n * - `elements.domReference` / `elements.floating` → `reference` / `floating` (plain elements).\n * - `placement.split('-')[0]` → the `side` option (read live from the popup's `data-side`).\n * - the Floating UI tree (`tree` / `nodeId`) → the `hasOpenChild` callback, backed by the\n * module-level open-submenu registry.\n *\n * This deliberately does NOT reuse the core `useGraceArea` composable (tooltip / navigation-menu /\n * popover): that one is a simpler convex-hull grace area with no velocity gating, trough handling, or\n * pointer-events tunnel — none of which it needs, but all of which the submenu does to match Base UI\n * and to stop sibling triggers from stealing the open submenu mid-traversal.\n */\n\nexport type MenuSide = 'top' | 'bottom' | 'left' | 'right';\n\nconst CURSOR_SPEED_THRESHOLD = 0.1;\nconst CURSOR_SPEED_THRESHOLD_SQUARED = CURSOR_SPEED_THRESHOLD * CURSOR_SPEED_THRESHOLD;\nconst POLYGON_BUFFER = 0.5;\n/** Re-check delay when the cursor is inside the polygon but has not landed on the popup yet. */\nconst REST_CHECK_MS = 40;\n\nexport interface SafePolygonOptions {\n /** The submenu trigger (Floating UI's reference element). */\n reference: HTMLElement;\n /** The submenu popup (Floating UI's floating element). */\n floating: HTMLElement;\n /**\n * Placed side of the popup relative to the trigger, read live on every move. Floating UI\n * resolves placement asynchronously (and may flip it on collision), so this must be a getter,\n * not a value captured at open time — otherwise left/top/bottom submenus get right-side geometry.\n */\n side: () => MenuSide;\n /** Cursor X at the moment it left the trigger. */\n x: number;\n /** Cursor Y at the moment it left the trigger. */\n y: number;\n /** Close the submenu (callers apply their own close delay). */\n onClose: () => void;\n /** Cancel a pending close — called on every move that decides to stay open. */\n cancelClose: () => void;\n /** Whether a descendant submenu is open; if so, never close (mirrors Floating UI's tree check). */\n hasOpenChild: () => boolean;\n /** Called the first time the cursor reaches the popup, so the caller can drop the tunnel. */\n onLanded?: () => void;\n}\n\nfunction hasIntersectingEdge(pointX: number, pointY: number, xi: number, yi: number, xj: number, yj: number): boolean {\n return yi >= pointY !== yj >= pointY && pointX <= ((xj - xi) * (pointY - yi)) / (yj - yi) + xi;\n}\n\nexport function isPointInQuadrilateral(\n pointX: number,\n pointY: number,\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n x3: number,\n y3: number,\n x4: number,\n y4: number\n): boolean {\n let inside = false;\n if (hasIntersectingEdge(pointX, pointY, x1, y1, x2, y2)) inside = !inside;\n if (hasIntersectingEdge(pointX, pointY, x2, y2, x3, y3)) inside = !inside;\n if (hasIntersectingEdge(pointX, pointY, x3, y3, x4, y4)) inside = !inside;\n if (hasIntersectingEdge(pointX, pointY, x4, y4, x1, y1)) inside = !inside;\n return inside;\n}\n\nfunction isInsideRect(pointX: number, pointY: number, rect: DOMRect): boolean {\n return pointX >= rect.left && pointX <= rect.right && pointY >= rect.top && pointY <= rect.bottom;\n}\n\nfunction isInsideAxisAlignedRect(\n pointX: number,\n pointY: number,\n x1: number,\n y1: number,\n x2: number,\n y2: number\n): boolean {\n const minX = Math.min(x1, x2);\n const maxX = Math.max(x1, x2);\n const minY = Math.min(y1, y2);\n const maxY = Math.max(y1, y2);\n return pointX >= minX && pointX <= maxX && pointY >= minY && pointY <= maxY;\n}\n\nfunction getTarget(event: MouseEvent): Element | null {\n const path = event.composedPath?.();\n return (path?.[0] as Element | undefined) ?? (event.target as Element | null);\n}\n\nexport interface SafePolygonHandler {\n /** Attach to `document.addEventListener('mousemove', …)`. */\n handler: (event: MouseEvent) => void;\n /** Clear any pending internal timer; call from the listener's teardown. */\n dispose: () => void;\n}\n\n/**\n * Builds the `mousemove` handler that decides whether the open submenu should stay open, plus a\n * `dispose()` that clears its internal rest-check timer (so a pending close can't fire after the\n * listener is removed).\n */\nexport function createSafePolygonHandler(options: SafePolygonOptions): SafePolygonHandler {\n const { reference, floating, side: sideOf, x, y, onClose, cancelClose, hasOpenChild, onLanded } = options;\n\n let hasLanded = false;\n let lastX: number | null = null;\n let lastY: number | null = null;\n let lastCursorTime = typeof performance !== 'undefined' ? performance.now() : 0;\n let restTimer: ReturnType<typeof setTimeout> | undefined;\n\n function isCursorMovingSlowly(nextX: number, nextY: number): boolean {\n const currentTime = typeof performance !== 'undefined' ? performance.now() : 0;\n const elapsedTime = currentTime - lastCursorTime;\n\n if (lastX === null || lastY === null || elapsedTime === 0) {\n lastX = nextX;\n lastY = nextY;\n lastCursorTime = currentTime;\n return false;\n }\n\n const deltaX = nextX - lastX;\n const deltaY = nextY - lastY;\n const distanceSquared = deltaX * deltaX + deltaY * deltaY;\n const thresholdSquared = elapsedTime * elapsedTime * CURSOR_SPEED_THRESHOLD_SQUARED;\n\n lastX = nextX;\n lastY = nextY;\n lastCursorTime = currentTime;\n\n return distanceSquared < thresholdSquared;\n }\n\n function closeIfNoOpenChild(): void {\n if (!hasOpenChild()) {\n onClose();\n }\n }\n\n function onMouseMove(event: MouseEvent): void {\n cancelClose();\n clearTimeout(restTimer);\n\n const { clientX, clientY } = event;\n const target = getTarget(event);\n const isOverFloatingEl = !!target && floating.contains(target);\n const isOverReferenceEl = !!target && reference.contains(target);\n\n // This handler is bound only to document `mousemove` (never `mouseleave`), so Floating UI's\n // leave-specific paths — the overlapping-element `relatedTarget` guard and the `!isLeave`\n // guards — are omitted: they could never run here.\n\n if (isOverFloatingEl) {\n // \"Landed\" tracks reaching the popup only — not the trigger. Setting it on the trigger\n // would close as soon as the cursor enters the gap (no leave event resets it).\n if (!hasLanded) {\n hasLanded = true;\n onLanded?.();\n }\n return;\n }\n\n if (isOverReferenceEl) {\n // Over the trigger — stay open; the polygon/trough logic resumes once in the gap.\n return;\n }\n\n // If any nested child submenu is open, never close the parent.\n if (hasOpenChild()) return;\n\n // Read the placed side live — it may have been unresolved at open time, or flipped since.\n const side = sideOf();\n const refRect = reference.getBoundingClientRect();\n const rect = floating.getBoundingClientRect();\n const cursorLeaveFromRight = x > rect.right - rect.width / 2;\n const cursorLeaveFromBottom = y > rect.bottom - rect.height / 2;\n const isFloatingWider = rect.width > refRect.width;\n const isFloatingTaller = rect.height > refRect.height;\n const left = (isFloatingWider ? refRect : rect).left;\n const right = (isFloatingWider ? refRect : rect).right;\n const top = (isFloatingTaller ? refRect : rect).top;\n const bottom = (isFloatingTaller ? refRect : rect).bottom;\n\n // Leaving from the opposite side: the buffer logic would otherwise keep it open — close.\n if (\n (side === 'top' && y >= refRect.bottom - 1) ||\n (side === 'bottom' && y <= refRect.top + 1) ||\n (side === 'left' && x >= refRect.right - 1) ||\n (side === 'right' && x <= refRect.left + 1)\n ) {\n closeIfNoOpenChild();\n return;\n }\n\n // Stay open while the cursor is within the rectangular trough between the two elements.\n let isInsideTroughRect = false;\n switch (side) {\n case 'top':\n isInsideTroughRect = isInsideAxisAlignedRect(\n clientX,\n clientY,\n left,\n refRect.top + 1,\n right,\n rect.bottom - 1\n );\n break;\n case 'bottom':\n isInsideTroughRect = isInsideAxisAlignedRect(\n clientX,\n clientY,\n left,\n rect.top + 1,\n right,\n refRect.bottom - 1\n );\n break;\n case 'left':\n isInsideTroughRect = isInsideAxisAlignedRect(\n clientX,\n clientY,\n rect.right - 1,\n bottom,\n refRect.left + 1,\n top\n );\n break;\n case 'right':\n isInsideTroughRect = isInsideAxisAlignedRect(\n clientX,\n clientY,\n refRect.right - 1,\n bottom,\n rect.left + 1,\n top\n );\n break;\n }\n if (isInsideTroughRect) return;\n\n if (hasLanded && !isInsideRect(clientX, clientY, refRect)) {\n closeIfNoOpenChild();\n return;\n }\n\n if (isCursorMovingSlowly(clientX, clientY)) {\n closeIfNoOpenChild();\n return;\n }\n\n let isInsidePolygon = false;\n switch (side) {\n case 'top': {\n const cursorXOffset = isFloatingWider ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4;\n const cursorPointOneX = isFloatingWider\n ? x + cursorXOffset\n : cursorLeaveFromRight\n ? x + cursorXOffset\n : x - cursorXOffset;\n const cursorPointTwoX = isFloatingWider\n ? x - cursorXOffset\n : cursorLeaveFromRight\n ? x + cursorXOffset\n : x - cursorXOffset;\n const cursorPointY = y + POLYGON_BUFFER + 1;\n const commonYLeft = cursorLeaveFromRight\n ? rect.bottom - POLYGON_BUFFER\n : isFloatingWider\n ? rect.bottom - POLYGON_BUFFER\n : rect.top;\n const commonYRight = cursorLeaveFromRight\n ? isFloatingWider\n ? rect.bottom - POLYGON_BUFFER\n : rect.top\n : rect.bottom - POLYGON_BUFFER;\n isInsidePolygon = isPointInQuadrilateral(\n clientX,\n clientY,\n cursorPointOneX,\n cursorPointY,\n cursorPointTwoX,\n cursorPointY,\n rect.left,\n commonYLeft,\n rect.right,\n commonYRight\n );\n break;\n }\n case 'bottom': {\n const cursorXOffset = isFloatingWider ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4;\n const cursorPointOneX = isFloatingWider\n ? x + cursorXOffset\n : cursorLeaveFromRight\n ? x + cursorXOffset\n : x - cursorXOffset;\n const cursorPointTwoX = isFloatingWider\n ? x - cursorXOffset\n : cursorLeaveFromRight\n ? x + cursorXOffset\n : x - cursorXOffset;\n const cursorPointY = y - POLYGON_BUFFER;\n const commonYLeft = cursorLeaveFromRight\n ? rect.top + POLYGON_BUFFER\n : isFloatingWider\n ? rect.top + POLYGON_BUFFER\n : rect.bottom;\n const commonYRight = cursorLeaveFromRight\n ? isFloatingWider\n ? rect.top + POLYGON_BUFFER\n : rect.bottom\n : rect.top + POLYGON_BUFFER;\n isInsidePolygon = isPointInQuadrilateral(\n clientX,\n clientY,\n cursorPointOneX,\n cursorPointY,\n cursorPointTwoX,\n cursorPointY,\n rect.left,\n commonYLeft,\n rect.right,\n commonYRight\n );\n break;\n }\n case 'left': {\n const cursorYOffset = isFloatingTaller ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4;\n const cursorPointOneY = isFloatingTaller\n ? y + cursorYOffset\n : cursorLeaveFromBottom\n ? y + cursorYOffset\n : y - cursorYOffset;\n const cursorPointTwoY = isFloatingTaller\n ? y - cursorYOffset\n : cursorLeaveFromBottom\n ? y + cursorYOffset\n : y - cursorYOffset;\n const cursorPointX = x + POLYGON_BUFFER + 1;\n const commonXTop = cursorLeaveFromBottom\n ? rect.right - POLYGON_BUFFER\n : isFloatingTaller\n ? rect.right - POLYGON_BUFFER\n : rect.left;\n const commonXBottom = cursorLeaveFromBottom\n ? isFloatingTaller\n ? rect.right - POLYGON_BUFFER\n : rect.left\n : rect.right - POLYGON_BUFFER;\n isInsidePolygon = isPointInQuadrilateral(\n clientX,\n clientY,\n commonXTop,\n rect.top,\n commonXBottom,\n rect.bottom,\n cursorPointX,\n cursorPointOneY,\n cursorPointX,\n cursorPointTwoY\n );\n break;\n }\n case 'right': {\n const cursorYOffset = isFloatingTaller ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4;\n const cursorPointOneY = isFloatingTaller\n ? y + cursorYOffset\n : cursorLeaveFromBottom\n ? y + cursorYOffset\n : y - cursorYOffset;\n const cursorPointTwoY = isFloatingTaller\n ? y - cursorYOffset\n : cursorLeaveFromBottom\n ? y + cursorYOffset\n : y - cursorYOffset;\n const cursorPointX = x - POLYGON_BUFFER;\n const commonXTop = cursorLeaveFromBottom\n ? rect.left + POLYGON_BUFFER\n : isFloatingTaller\n ? rect.left + POLYGON_BUFFER\n : rect.right;\n const commonXBottom = cursorLeaveFromBottom\n ? isFloatingTaller\n ? rect.left + POLYGON_BUFFER\n : rect.right\n : rect.left + POLYGON_BUFFER;\n isInsidePolygon = isPointInQuadrilateral(\n clientX,\n clientY,\n cursorPointX,\n cursorPointOneY,\n cursorPointX,\n cursorPointTwoY,\n commonXTop,\n rect.top,\n commonXBottom,\n rect.bottom\n );\n break;\n }\n }\n\n if (!isInsidePolygon) {\n closeIfNoOpenChild();\n } else if (!hasLanded) {\n // Inside the polygon but not landed: if the cursor halts here (no further moves),\n // close shortly after so a stationary cursor in the gap doesn't keep it open.\n restTimer = setTimeout(closeIfNoOpenChild, REST_CHECK_MS);\n }\n }\n\n return { handler: onMouseMove, dispose: () => clearTimeout(restTimer) };\n}\n\n/**\n * Pointer-events \"tunnel\" used while a submenu opened by hover is being traversed. Disables pointer\n * events on `scope` (the parent popup or `document.body`) while keeping the `reference` and\n * `floating` interactive, so sibling items cannot react until the cursor lands or the submenu\n * closes. Returns a cleanup that restores the exact previous inline values.\n */\nexport function applyPointerTunnel(scope: HTMLElement, reference: HTMLElement, floating: HTMLElement): () => void {\n const saved: Array<[HTMLElement, string]> = [\n [scope, scope.style.pointerEvents],\n [reference, reference.style.pointerEvents],\n [floating, floating.style.pointerEvents]\n ];\n scope.style.pointerEvents = 'none';\n reference.style.pointerEvents = 'auto';\n floating.style.pointerEvents = 'auto';\n\n let cleaned = false;\n return () => {\n if (cleaned) return;\n cleaned = true;\n saved.forEach(([el, prev]) => (el.style.pointerEvents = prev));\n };\n}\n\n/** Registry of submenus currently open, keyed by their trigger element. */\nconst openSubmenus = new Map<HTMLElement, HTMLElement>();\n\n/** Marks `trigger`'s submenu (with popup `popup`) as open. Returns a cleanup to unmark it. */\nexport function registerOpenSubmenu(trigger: HTMLElement, popup: HTMLElement): () => void {\n openSubmenus.set(trigger, popup);\n return () => {\n if (openSubmenus.get(trigger) === popup) {\n openSubmenus.delete(trigger);\n }\n };\n}\n\n/**\n * Whether any *other* open submenu is a descendant of `floating` (a nested child is open).\n *\n * Portal-safe: `RdxMenuPortal` only teleports a submenu's positioner/popup template, never the\n * sub-trigger (which stays in its parent popup), and a portaled popup carries its descendant\n * triggers with it — so `floating.contains(childTrigger)` holds whether or not portals are used.\n */\nexport function hasOpenChildSubmenu(reference: HTMLElement, floating: HTMLElement): boolean {\n for (const trigger of openSubmenus.keys()) {\n if (trigger !== reference && floating.contains(trigger)) {\n return true;\n }\n }\n return false;\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n numberAttribute,\n PLATFORM_ID,\n signal\n} from '@angular/core';\nimport { BooleanInput, NumberInput } from '@radix-ng/primitives/core';\nimport { RdxPopperAnchor } from '@radix-ng/primitives/popper';\nimport { getFocusableMenuItems } from './menu-focus';\nimport { injectRdxMenuRootContext, RdxMenuRoot } from './menu-root';\nimport {\n applyPointerTunnel,\n createSafePolygonHandler,\n hasOpenChildSubmenu,\n MenuSide,\n registerOpenSubmenu\n} from './menu-safe-polygon';\n\nconst numberOrUndefined = (value: NumberInput | undefined) => (value == null ? undefined : numberAttribute(value));\nconst submenuRootsByTrigger = new WeakMap<HTMLElement, RdxMenuRoot>();\n\n/**\n * An item inside a parent menu that opens a nested submenu.\n *\n * Place this inside `ng-container rdxMenuRoot` that wraps both the trigger\n * and the submenu positioner. The inner root provides the submenu context;\n * the outer popup discovers this element via `[rdxMenuSubTrigger]` in its\n * ITEM_SELECTOR and includes it in keyboard navigation.\n */\n@Directive({\n selector: '[rdxMenuSubTrigger]',\n exportAs: 'rdxMenuSubTrigger',\n hostDirectives: [RdxPopperAnchor],\n host: {\n '[attr.type]': 'nativeButtonState() ? \"button\" : undefined',\n role: 'menuitem',\n tabindex: '-1',\n '[attr.aria-haspopup]': '\"menu\"',\n '[attr.aria-expanded]': 'submenuContext.isOpen()',\n '[attr.aria-disabled]': 'effectiveDisabled() ? true : undefined',\n '[attr.disabled]': 'nativeButtonState() && effectiveDisabled() ? \"\" : undefined',\n '[attr.data-state]': 'submenuContext.isOpen() ? \"open\" : \"closed\"',\n '[attr.data-popup-open]': 'submenuContext.isOpen() ? \"\" : undefined',\n '[attr.data-highlighted]': 'highlighted() ? \"\" : undefined',\n '[attr.data-disabled]': 'effectiveDisabled() ? \"\" : undefined',\n '[attr.data-label]': 'label() ?? undefined',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '(click)': 'onClick($event)',\n '(keydown.enter)': 'onEnter($event)',\n '(keydown.arrowleft)': 'onArrowLeft($event)',\n '(keydown.arrowright)': 'onArrowRight($event)',\n '(pointermove)': 'onPointerMove($event)',\n '(pointerleave)': 'onPointerLeave()',\n '(rdx-menu-subtrigger-clear-highlight)': 'clearHighlight()'\n }\n})\nexport class RdxMenuSubTrigger {\n protected readonly submenuContext = injectRdxMenuRootContext();\n private readonly submenuRoot = inject(RdxMenuRoot);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n private readonly isFocused = signal(false);\n private openTimer: ReturnType<typeof setTimeout> | undefined;\n private closeTimer: ReturnType<typeof setTimeout> | undefined;\n /** Cursor position from the last pointer move over the trigger (safe-polygon apex). */\n private lastPointer: { x: number; y: number } | null = null;\n /** Whether the current open was initiated by hover (vs keyboard / click). */\n private openedByHover = false;\n private ignoreNextKeyboardClick = false;\n\n /** Whether this trigger (and therefore the submenu) is disabled. */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Whether this trigger should be treated as a native button. Auto-detected for `<button>`. */\n readonly nativeButton = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Whether hovering the trigger opens the submenu. */\n readonly openOnHover = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /** Delay before hover opens the submenu, in milliseconds. */\n readonly delay = input<number | undefined, NumberInput | undefined>(100, { transform: numberOrUndefined });\n\n /** Delay before a pending hover close runs, in milliseconds. */\n readonly closeDelay = input<number | undefined, NumberInput | undefined>(0, { transform: numberOrUndefined });\n\n /** Explicit typeahead label. When set, overrides textContent for character search. */\n readonly label = input<string | undefined>(undefined);\n\n /** Highlighted when focused OR while the submenu is open. */\n protected readonly highlighted = computed(() => this.isFocused() || this.submenuContext.isOpen());\n protected readonly effectiveDisabled = computed(() => this.disabled() || this.submenuContext.disabled());\n protected readonly nativeButtonState = computed(\n () => this.nativeButton() || this.elementRef.nativeElement.tagName === 'BUTTON'\n );\n\n constructor() {\n this.submenuContext.markAsSubmenu();\n\n effect((onCleanup) => {\n const el = this.elementRef.nativeElement;\n const unregister = this.submenuContext.registerTrigger(el);\n submenuRootsByTrigger.set(el, this.submenuRoot);\n\n onCleanup(() => {\n unregister();\n submenuRootsByTrigger.delete(el);\n });\n });\n\n // While this submenu is open by hover, it owns the decision to close itself: a document\n // `mousemove` handler keeps it open while the cursor traverses the safe polygon toward the\n // popup, and a pointer-events tunnel stops siblings from stealing it mid-traversal.\n effect((onCleanup) => {\n const open = this.submenuContext.isOpen();\n const popup = this.submenuContext.popupElement();\n\n // Once closed, forget how this open started so the next (possibly keyboard / programmatic)\n // open doesn't re-arm the hover tunnel from a stale flag.\n if (!open) {\n this.openedByHover = false;\n this.lastPointer = null;\n return;\n }\n\n if (!popup || !this.openedByHover || !this.lastPointer || !this.isBrowser) {\n return;\n }\n\n const reference = this.elementRef.nativeElement;\n const ownerDocument = reference.ownerDocument;\n const scope = reference.closest<HTMLElement>('[rdxMenuPopup]') ?? ownerDocument.body;\n const unregisterOpen = registerOpenSubmenu(reference, popup);\n let removeTunnel: (() => void) | undefined = applyPointerTunnel(scope, reference, popup);\n\n const { handler, dispose } = createSafePolygonHandler({\n reference,\n floating: popup,\n // Live getter: `data-side` may be unresolved at open time and can flip on collision.\n side: () => (popup.getAttribute('data-side') as MenuSide) ?? 'right',\n x: this.lastPointer.x,\n y: this.lastPointer.y,\n onClose: () => this.scheduleClose(),\n cancelClose: () => clearTimeout(this.closeTimer),\n hasOpenChild: () => hasOpenChildSubmenu(reference, popup),\n onLanded: () => {\n removeTunnel?.();\n removeTunnel = undefined;\n }\n });\n\n ownerDocument.addEventListener('mousemove', handler);\n onCleanup(() => {\n ownerDocument.removeEventListener('mousemove', handler);\n dispose();\n removeTunnel?.();\n unregisterOpen();\n clearTimeout(this.closeTimer);\n });\n });\n\n this.destroyRef.onDestroy(() => {\n clearTimeout(this.openTimer);\n clearTimeout(this.closeTimer);\n });\n }\n\n private scheduleClose(): void {\n clearTimeout(this.closeTimer);\n const delay = this.closeDelay() ?? 0;\n if (delay <= 0) {\n this.submenuContext.close();\n } else {\n this.closeTimer = setTimeout(() => this.submenuContext.close(), delay);\n }\n }\n\n protected onFocus(): void {\n if (!this.effectiveDisabled()) {\n this.clearSiblingHighlights();\n this.isFocused.set(true);\n }\n }\n\n protected onBlur(): void {\n this.isFocused.set(false);\n }\n\n protected onClick(event: MouseEvent): void {\n if (this.effectiveDisabled()) return;\n\n if (this.ignoreNextKeyboardClick && event.detail === 0) {\n this.ignoreNextKeyboardClick = false;\n return;\n }\n\n const wasOpen = this.submenuContext.isOpen();\n // When the submenu opens on hover (default), hover owns its open/close, so a real **mouse** click\n // is ignored — otherwise it would toggle a just-hover-opened submenu shut (a visible flicker).\n // Base UI: `ignoreMouse: openOnHover`. A keyboard-activated click (`detail === 0`) still opens.\n const isMouseClick = event.detail > 0;\n if (this.openOnHover() && isMouseClick) {\n return;\n }\n\n this.openedByHover = false;\n this.clearSiblingHighlights();\n\n if (this.submenuContext.isOpen()) {\n // Toggle (close) only for a click-driven submenu (Base UI `toggle: !openOnHover`).\n if (!this.openOnHover()) {\n this.submenuContext.close();\n }\n return;\n }\n\n this.closeSiblingSubmenus();\n this.submenuContext.show('first', 'none', event);\n\n if (event.detail === 0 && !wasOpen && this.submenuContext.isOpen()) {\n this.focusFirstSubmenuItem();\n }\n }\n\n protected onEnter(event: Event): void {\n if (this.effectiveDisabled()) return;\n\n event.preventDefault();\n event.stopPropagation();\n this.ignoreNextKeyboardClick = true;\n this.openedByHover = false;\n this.clearSiblingHighlights();\n\n if (!this.submenuContext.isOpen()) {\n this.closeSiblingSubmenus();\n this.submenuContext.show('first', 'none', event);\n }\n\n this.focusFirstSubmenuItem();\n }\n\n protected onArrowRight(event: Event): void {\n if (this.submenuContext.dir() === 'rtl') {\n return;\n }\n\n if (this.effectiveDisabled()) return;\n event.preventDefault();\n event.stopPropagation();\n this.openedByHover = false;\n this.clearSiblingHighlights();\n if (!this.submenuContext.isOpen()) {\n this.closeSiblingSubmenus();\n this.submenuContext.show('first', 'none', event);\n this.focusFirstSubmenuItem();\n }\n }\n\n protected onArrowLeft(event: Event): void {\n if (this.submenuContext.dir() !== 'rtl') {\n return;\n }\n\n if (this.effectiveDisabled()) return;\n event.preventDefault();\n event.stopPropagation();\n this.openedByHover = false;\n this.clearSiblingHighlights();\n if (!this.submenuContext.isOpen()) {\n this.closeSiblingSubmenus();\n this.submenuContext.show('first', 'none', event);\n this.focusFirstSubmenuItem();\n }\n }\n\n protected onPointerMove(event: PointerEvent): void {\n if (event.pointerType !== 'mouse' || this.effectiveDisabled() || !this.openOnHover()) return;\n\n this.lastPointer = { x: event.clientX, y: event.clientY };\n this.clearSiblingHighlights();\n const el = this.elementRef.nativeElement;\n if (this.submenuContext.highlightItemOnHover() && el.ownerDocument.activeElement !== el) {\n el.focus({ preventScroll: true });\n }\n\n if (!this.submenuContext.isOpen()) {\n clearTimeout(this.openTimer);\n this.closeSiblingSubmenus();\n this.openTimer = setTimeout(() => {\n this.openedByHover = true;\n this.submenuContext.show(false, 'trigger-hover');\n }, this.delay() ?? 100);\n }\n }\n\n protected onPointerLeave(): void {\n clearTimeout(this.openTimer);\n }\n\n protected clearHighlight(): void {\n this.isFocused.set(false);\n }\n\n private closeSiblingSubmenus(): void {\n const currentTrigger = this.elementRef.nativeElement;\n const parentPopup = currentTrigger.closest<HTMLElement>('[rdxMenuPopup]');\n\n if (!parentPopup) return;\n\n parentPopup.querySelectorAll<HTMLElement>('[rdxMenuSubTrigger]').forEach((trigger) => {\n if (trigger === currentTrigger || trigger.closest('[rdxMenuPopup]') !== parentPopup) {\n return;\n }\n\n submenuRootsByTrigger.get(trigger)?.close();\n trigger.dispatchEvent(new CustomEvent('rdx-menu-subtrigger-clear-highlight'));\n });\n }\n\n private clearSiblingHighlights(): void {\n const currentTrigger = this.elementRef.nativeElement;\n const parentPopup = currentTrigger.closest<HTMLElement>('[rdxMenuPopup]');\n\n if (!parentPopup) return;\n\n parentPopup.querySelectorAll<HTMLElement>('[rdxMenuSubTrigger]').forEach((trigger) => {\n if (trigger === currentTrigger || trigger.closest('[rdxMenuPopup]') !== parentPopup) {\n return;\n }\n\n trigger.dispatchEvent(new CustomEvent('rdx-menu-subtrigger-clear-highlight'));\n });\n }\n\n private focusFirstSubmenuItem(attempt = 0): void {\n const maxAttempts = 10;\n const ownerDocument = this.elementRef.nativeElement.ownerDocument;\n\n const run = () => {\n if (!this.submenuContext.isOpen()) {\n return;\n }\n\n const popup = this.submenuContext.popupElement();\n if (!popup) {\n if (attempt < maxAttempts) {\n this.focusFirstSubmenuItem(attempt + 1);\n }\n return;\n }\n\n const items = getFocusableMenuItems(popup);\n if (items.length === 0) {\n if (attempt < maxAttempts) {\n this.focusFirstSubmenuItem(attempt + 1);\n }\n return;\n }\n\n const firstItem = items[0];\n if (ownerDocument.activeElement !== firstItem) {\n firstItem?.focus({ preventScroll: true });\n }\n };\n\n if (this.isBrowser) {\n requestAnimationFrame(run);\n } else {\n setTimeout(run);\n }\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n numberAttribute,\n PLATFORM_ID\n} from '@angular/core';\nimport { BooleanInput, NumberInput } from '@radix-ng/primitives/core';\nimport { RdxPopperAnchor } from '@radix-ng/primitives/popper';\nimport { getFocusableMenuItems } from './menu-focus';\nimport { injectRdxMenuRootContext } from './menu-root';\nimport { applyPointerTunnel, createSafePolygonHandler, hasOpenChildSubmenu, MenuSide } from './menu-safe-polygon';\n\nconst numberOrUndefined = (value: NumberInput | undefined) => (value == null ? undefined : numberAttribute(value));\n\n/**\n * A button that opens the menu.\n */\n@Directive({\n selector: '[rdxMenuTrigger]',\n exportAs: 'rdxMenuTrigger',\n hostDirectives: [RdxPopperAnchor],\n host: {\n '[attr.type]': 'nativeButtonState() ? \"button\" : undefined',\n '[attr.role]':\n 'rootContext.hasTriggerInteractionHandler() ? \"menuitem\" : nativeButtonState() ? undefined : \"button\"',\n '[attr.tabindex]': 'rootContext.hasTriggerInteractionHandler() ? \"-1\" : undefined',\n '[attr.aria-haspopup]': '\"menu\"',\n '[attr.aria-expanded]': 'rootContext.isOpen()',\n '[attr.aria-disabled]': 'isDisabled() ? true : undefined',\n '[attr.disabled]': 'nativeButtonState() && isDisabled() ? \"\" : undefined',\n '[attr.data-state]': 'rootContext.isOpen() ? \"open\" : \"closed\"',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : undefined',\n '[attr.data-popup-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[style.pointer-events]': 'rootContext.isOpen() && rootContext.modal() ? \"auto\" : undefined',\n '(mousedown)': 'handleMouseDown($event)',\n '(click)': 'handleClick($event)',\n '(pointerenter)': 'handlePointerEnter($event)',\n '(pointermove)': 'handlePointerMove($event)',\n '(pointerleave)': 'handlePointerLeave($event)',\n '(keydown.arrowdown)': 'handleArrowDown($event)',\n '(keydown.arrowup)': 'handleArrowUp($event)',\n '(keydown.arrowleft)': 'handleArrowLeft($event)',\n '(keydown.arrowright)': 'handleArrowRight($event)',\n '(keydown.home)': 'handleHome($event)',\n '(keydown.end)': 'handleEnd($event)',\n '(keydown.escape)': 'handleEscape($event)',\n '(keydown.enter)': 'handleKeyboardToggle($event)',\n '(keydown.space)': 'handleKeyboardToggle($event)'\n }\n})\nexport class RdxMenuTrigger {\n protected readonly rootContext = injectRdxMenuRootContext();\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n private openTimer: ReturnType<typeof setTimeout> | undefined;\n private closeTimer: ReturnType<typeof setTimeout> | undefined;\n private allowMouseUpTriggerTimer: ReturnType<typeof setTimeout> | undefined;\n private lastPointer: { x: number; y: number } | null = null;\n private openedByHover = false;\n private ignoreNextClick: 'mouse' | 'keyboard' | null = null;\n private readonly handleDocumentMouseUp = (event: MouseEvent): void => {\n this.allowMouseUpTriggerTimer = undefined;\n this.rootContext.setAllowMouseUpTrigger(false);\n\n const trigger = this.elementRef.nativeElement;\n const target = event.target as Node | null;\n const popup = this.rootContext.popupElement();\n\n if (target && (trigger.contains(target) || popup?.contains(target))) {\n return;\n }\n\n if (this.rootContext.isOpen()) {\n this.rootContext.close('cancel-open', event);\n }\n };\n\n /** Whether this trigger should be treated as a native button. Auto-detected for `<button>`. */\n readonly nativeButton = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Whether this trigger is disabled. */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Whether hovering the trigger opens the menu. */\n readonly openOnHover = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Delay before hover opens the menu, in milliseconds. */\n readonly delay = input<number | undefined, NumberInput | undefined>(100, { transform: numberOrUndefined });\n\n /** Delay before hover leave closes the menu, in milliseconds. */\n readonly closeDelay = input<number | undefined, NumberInput | undefined>(undefined, {\n transform: numberOrUndefined\n });\n\n protected readonly nativeButtonState = computed(\n () => this.nativeButton() || this.elementRef.nativeElement.tagName === 'BUTTON'\n );\n\n protected readonly isDisabled = computed(() => this.rootContext.disabled() || this.disabled());\n\n constructor() {\n effect((onCleanup) => {\n const el = this.elementRef.nativeElement;\n const unregister = this.rootContext.registerTrigger(el);\n onCleanup(unregister);\n });\n\n effect((onCleanup) => {\n const open = this.rootContext.isOpen();\n const popup = this.rootContext.popupElement();\n\n if (!open) {\n this.openedByHover = false;\n this.lastPointer = null;\n return;\n }\n\n if (!popup || !this.openedByHover || !this.lastPointer || !this.isBrowser) {\n return;\n }\n\n const trigger = this.elementRef.nativeElement;\n const ownerDocument = trigger.ownerDocument;\n let removeTunnel: (() => void) | undefined = applyPointerTunnel(ownerDocument.body, trigger, popup);\n const { handler, dispose } = createSafePolygonHandler({\n reference: trigger,\n floating: popup,\n side: () => (popup.getAttribute('data-side') as MenuSide) ?? 'bottom',\n x: this.lastPointer.x,\n y: this.lastPointer.y,\n onClose: () => this.scheduleClose(),\n cancelClose: () => this.clearCloseTimer(),\n hasOpenChild: () => hasOpenChildSubmenu(trigger, popup),\n onLanded: () => {\n removeTunnel?.();\n removeTunnel = undefined;\n }\n });\n\n ownerDocument.addEventListener('mousemove', handler);\n onCleanup(() => {\n ownerDocument.removeEventListener('mousemove', handler);\n dispose();\n removeTunnel?.();\n this.clearCloseTimer();\n });\n });\n\n // (A press/focus on the trigger no longer needs a dismissable-layer branch to avoid\n // self-dismissal: the trigger is registered in the menu's floating context, so the dismissal\n // capability already treats it as \"inside\" — ADR 0015 trigger registry replaces the branch.)\n\n this.destroyRef.onDestroy(() => {\n this.clearOpenTimer();\n this.clearCloseTimer();\n this.clearMouseUpGuard();\n });\n }\n\n protected handleMouseDown(event: MouseEvent): void {\n if (this.isDisabled() || event.button !== 0) {\n return;\n }\n\n if (this.rootContext.hasTriggerInteractionHandler()) {\n return;\n }\n\n if (\n this.openOnHover() &&\n this.rootContext.isOpen() &&\n this.rootContext.lastOpenChangeReason() === 'trigger-hover'\n ) {\n return;\n }\n\n const wasOpen = this.rootContext.isOpen();\n this.clearMouseUpGuard();\n this.ignoreNextClick = 'mouse';\n this.openedByHover = false;\n this.rootContext.toggle('trigger-press', event);\n\n if (!wasOpen && this.rootContext.isOpen()) {\n this.armMouseUpGuard(event.currentTarget as HTMLElement);\n }\n }\n\n protected handleClick(event: MouseEvent): void {\n if (this.isDisabled()) {\n return;\n }\n\n const wasOpen = this.rootContext.isOpen();\n\n if (this.rootContext.handleTriggerInteraction({ type: 'click' })) {\n if (event.detail === 0 && !wasOpen && this.rootContext.isOpen()) {\n this.restoreKeyboardPopupFocus();\n }\n return;\n }\n\n if (\n this.ignoreNextClick &&\n ((this.ignoreNextClick === 'mouse' && event.detail > 0) ||\n (this.ignoreNextClick === 'keyboard' && event.detail === 0))\n ) {\n if (this.ignoreNextClick === 'keyboard') {\n this.restoreKeyboardPopupFocus();\n }\n this.ignoreNextClick = null;\n return;\n }\n\n this.openedByHover = false;\n this.rootContext.toggle('trigger-press', event);\n if (event.detail === 0 && !wasOpen && this.rootContext.isOpen()) {\n this.restoreKeyboardPopupFocus();\n }\n }\n\n protected handleArrowDown(event: Event): void {\n if (this.rootContext.handleTriggerInteraction({ type: 'arrowdown', event })) {\n return;\n }\n\n event.preventDefault();\n if (!this.isDisabled() && !this.rootContext.isOpen()) {\n this.rootContext.show('first');\n }\n }\n\n protected handleArrowUp(event: Event): void {\n if (this.rootContext.handleTriggerInteraction({ type: 'arrowup', event })) {\n return;\n }\n\n event.preventDefault();\n if (!this.isDisabled() && !this.rootContext.isOpen()) {\n this.rootContext.show('last');\n }\n }\n\n protected handleArrowLeft(event: Event): void {\n this.rootContext.handleTriggerInteraction({ type: 'arrowleft', event });\n }\n\n protected handleArrowRight(event: Event): void {\n this.rootContext.handleTriggerInteraction({ type: 'arrowright', event });\n }\n\n protected handleHome(event: Event): void {\n this.rootContext.handleTriggerInteraction({ type: 'home', event });\n }\n\n protected handleEnd(event: Event): void {\n this.rootContext.handleTriggerInteraction({ type: 'end', event });\n }\n\n protected handleEscape(event: Event): void {\n this.rootContext.handleTriggerInteraction({ type: 'escape', event });\n }\n\n protected handleKeyboardToggle(event: Event): void {\n const wasOpen = this.rootContext.isOpen();\n const interactionType = event instanceof KeyboardEvent && event.key === ' ' ? 'space' : 'enter';\n\n if (this.nativeButtonState() && !this.rootContext.hasTriggerInteractionHandler()) {\n return;\n }\n\n if (this.rootContext.handleTriggerInteraction({ type: interactionType, event })) {\n event.preventDefault();\n this.ignoreNextClick = this.nativeButtonState() ? 'keyboard' : null;\n this.openedByHover = false;\n if (!wasOpen && this.rootContext.isOpen()) {\n this.restoreKeyboardPopupFocus();\n }\n return;\n }\n\n event.preventDefault();\n this.ignoreNextClick = this.nativeButtonState() ? 'keyboard' : null;\n this.openedByHover = false;\n this.rootContext.toggle('trigger-press', event);\n if (!wasOpen && this.rootContext.isOpen()) {\n this.restoreKeyboardPopupFocus();\n }\n }\n\n protected handlePointerEnter(event: PointerEvent): void {\n if (this.rootContext.handleTriggerInteraction({ type: 'pointerenter', event })) {\n return;\n }\n\n if (event.pointerType === 'touch' || !this.openOnHover() || this.isDisabled()) {\n return;\n }\n\n this.clearCloseTimer();\n this.clearOpenTimer();\n this.lastPointer = { x: event.clientX, y: event.clientY };\n\n const delay = this.delay() ?? 100;\n if (delay <= 0) {\n this.openedByHover = true;\n this.rootContext.show('first', 'trigger-hover');\n return;\n }\n\n this.openTimer = setTimeout(() => {\n this.openTimer = undefined;\n this.openedByHover = true;\n this.rootContext.show('first', 'trigger-hover');\n }, delay);\n }\n\n protected handlePointerLeave(event: PointerEvent): void {\n if (event.pointerType === 'touch' || !this.openOnHover()) {\n return;\n }\n\n this.clearOpenTimer();\n this.lastPointer = { x: event.clientX, y: event.clientY };\n\n if (!this.rootContext.isOpen() || !this.openedByHover) {\n this.scheduleClose();\n }\n }\n\n protected handlePointerMove(event: PointerEvent): void {\n if (event.pointerType !== 'touch' && this.openOnHover()) {\n this.lastPointer = { x: event.clientX, y: event.clientY };\n }\n }\n\n private scheduleClose(): void {\n this.clearCloseTimer();\n const closeDelay = this.closeDelay() ?? 0;\n this.closeTimer = setTimeout(() => {\n this.closeTimer = undefined;\n this.rootContext.close();\n }, closeDelay);\n }\n\n private clearOpenTimer(): void {\n clearTimeout(this.openTimer);\n this.openTimer = undefined;\n }\n\n private clearCloseTimer(): void {\n clearTimeout(this.closeTimer);\n this.closeTimer = undefined;\n }\n\n private armMouseUpGuard(trigger: HTMLElement): void {\n this.rootContext.setAllowMouseUpTrigger(false);\n this.allowMouseUpTriggerTimer = setTimeout(() => {\n this.allowMouseUpTriggerTimer = undefined;\n this.rootContext.setAllowMouseUpTrigger(true);\n }, 200);\n\n trigger.ownerDocument.addEventListener('mouseup', this.handleDocumentMouseUp, { once: true });\n }\n\n private clearMouseUpGuard(): void {\n clearTimeout(this.allowMouseUpTriggerTimer);\n this.allowMouseUpTriggerTimer = undefined;\n this.rootContext.setAllowMouseUpTrigger(false);\n this.elementRef.nativeElement.ownerDocument.removeEventListener('mouseup', this.handleDocumentMouseUp);\n }\n\n private restoreKeyboardPopupFocus(attempt = 0): void {\n const maxAttempts = 3;\n const ownerDocument = this.elementRef.nativeElement.ownerDocument;\n\n const run = () => {\n if (!this.rootContext.isOpen()) {\n return;\n }\n\n const popup = this.rootContext.popupElement();\n const activeElement = ownerDocument.activeElement;\n\n if (!popup || getFocusableMenuItems(popup).length === 0) {\n if (attempt < maxAttempts) {\n this.restoreKeyboardPopupFocus(attempt + 1);\n }\n return;\n }\n\n if (activeElement && popup.contains(activeElement)) {\n return;\n }\n\n const firstItem = getFocusableMenuItems(popup)[0];\n (firstItem ?? popup).focus({ preventScroll: true });\n };\n\n if (this.isBrowser) {\n requestAnimationFrame(run);\n } else {\n setTimeout(run);\n }\n }\n}\n","import { afterNextRender, DestroyRef, Directive, ElementRef, inject, signal } from '@angular/core';\nimport { getMaxTransitionDuration } from '@radix-ng/primitives/core';\n\n/**\n * A viewport that smoothly animates the popup size when its content changes\n * (e.g. switching menubar menus of different sizes, or expanding a section).\n *\n * It measures its content with a `ResizeObserver` and exposes the current size\n * as `--popup-width` / `--popup-height` CSS variables on the host. Drive the\n * animation from the consumer side, for example:\n *\n * ```css\n * [rdxMenuPopup] {\n * width: var(--popup-width);\n * height: var(--popup-height);\n * transition: width 200ms, height 200ms;\n * }\n * ```\n *\n * `data-transitioning` is present while a size change is in flight.\n */\n@Directive({\n selector: '[rdxMenuViewport]',\n exportAs: 'rdxMenuViewport',\n host: {\n '[attr.data-transitioning]': 'transitioning() ? \"\" : undefined',\n '[style.--popup-width.px]': 'width()',\n '[style.--popup-height.px]': 'height()'\n }\n})\nexport class RdxMenuViewport {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly destroyRef = inject(DestroyRef);\n private observer: ResizeObserver | undefined;\n private transitionTimer: ReturnType<typeof setTimeout> | undefined;\n\n protected readonly width = signal<number | undefined>(undefined);\n protected readonly height = signal<number | undefined>(undefined);\n protected readonly transitioning = signal(false);\n\n constructor() {\n afterNextRender(() => {\n const el = this.elementRef.nativeElement;\n\n // Seed the initial size without marking a transition.\n this.width.set(el.offsetWidth);\n this.height.set(el.offsetHeight);\n\n if (typeof ResizeObserver === 'undefined') {\n return;\n }\n\n this.observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n if (!entry) {\n return;\n }\n\n const nextWidth = Math.round(entry.contentRect.width);\n const nextHeight = Math.round(entry.contentRect.height);\n\n if (nextWidth === this.width() && nextHeight === this.height()) {\n return;\n }\n\n this.width.set(nextWidth);\n this.height.set(nextHeight);\n this.markTransitioning();\n });\n\n this.observer.observe(el);\n });\n\n this.destroyRef.onDestroy(() => {\n this.observer?.disconnect();\n clearTimeout(this.transitionTimer);\n });\n }\n\n private markTransitioning(): void {\n this.transitioning.set(true);\n clearTimeout(this.transitionTimer);\n\n const duration = getMaxTransitionDuration(this.elementRef.nativeElement);\n this.transitionTimer = setTimeout(() => this.transitioning.set(false), duration > 0 ? duration + 50 : 0);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RdxMenuArrow } from './src/menu-arrow';\nimport { RdxMenuBackdrop } from './src/menu-backdrop';\nimport { RdxMenuCheckboxItem } from './src/menu-checkbox-item';\nimport { RdxMenuCheckboxItemIndicator } from './src/menu-checkbox-item-indicator';\nimport { RdxMenuGroup } from './src/menu-group';\nimport { RdxMenuGroupLabel } from './src/menu-group-label';\nimport { RdxMenuItem } from './src/menu-item';\nimport { RdxMenuLinkItem } from './src/menu-link-item';\nimport { RdxMenuPopup } from './src/menu-popup';\nimport { RdxMenuPortal, RdxMenuPortalMisuseGuard } from './src/menu-portal';\nimport { RdxMenuPositioner } from './src/menu-positioner';\nimport { RdxMenuRadioGroup } from './src/menu-radio-group';\nimport { RdxMenuRadioItem } from './src/menu-radio-item';\nimport { RdxMenuRadioItemIndicator } from './src/menu-radio-item-indicator';\nimport { RdxMenuRoot } from './src/menu-root';\nimport { RdxMenuSeparator } from './src/menu-separator';\nimport { RdxMenuSubTrigger } from './src/menu-sub-trigger';\nimport { RdxMenuTrigger } from './src/menu-trigger';\nimport { RdxMenuViewport } from './src/menu-viewport';\n\nexport * from './src/menu-arrow';\nexport * from './src/menu-backdrop';\nexport * from './src/menu-checkbox-item';\nexport * from './src/menu-checkbox-item-indicator';\nexport * from './src/menu-group';\nexport * from './src/menu-group-context';\nexport * from './src/menu-group-label';\nexport * from './src/menu-item';\nexport * from './src/menu-link-item';\nexport * from './src/menu-popup';\nexport * from './src/menu-portal';\nexport * from './src/menu-positioner';\nexport * from './src/menu-radio-group';\nexport * from './src/menu-radio-item';\nexport * from './src/menu-radio-item-indicator';\nexport * from './src/menu-root';\nexport * from './src/menu-separator';\nexport * from './src/menu-sub-trigger';\nexport * from './src/menu-trigger';\nexport * from './src/menu-utils';\nexport * from './src/menu-viewport';\n\nconst menuImports = [\n RdxMenuRoot,\n RdxMenuTrigger,\n RdxMenuSubTrigger,\n RdxMenuPortal,\n RdxMenuPortalMisuseGuard,\n RdxMenuPositioner,\n RdxMenuPopup,\n RdxMenuViewport,\n RdxMenuBackdrop,\n RdxMenuArrow,\n RdxMenuItem,\n RdxMenuLinkItem,\n RdxMenuGroup,\n RdxMenuGroupLabel,\n RdxMenuSeparator,\n RdxMenuCheckboxItem,\n RdxMenuCheckboxItemIndicator,\n RdxMenuRadioGroup,\n RdxMenuRadioItem,\n RdxMenuRadioItemIndicator\n];\n\n@NgModule({\n imports: [...menuImports],\n exports: [...menuImports]\n})\nexport class RdxMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["groupContextFactory","i1","numberOrUndefined"],"mappings":"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"}
|