ng-primitives 0.120.4 → 0.121.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/example-theme/index.css +9 -0
  2. package/fesm2022/ng-primitives-a11y.mjs +5 -5
  3. package/fesm2022/ng-primitives-a11y.mjs.map +1 -1
  4. package/fesm2022/ng-primitives-accordion.mjs +34 -51
  5. package/fesm2022/ng-primitives-accordion.mjs.map +1 -1
  6. package/fesm2022/ng-primitives-ai.mjs +39 -52
  7. package/fesm2022/ng-primitives-ai.mjs.map +1 -1
  8. package/fesm2022/ng-primitives-autofill.mjs +4 -4
  9. package/fesm2022/ng-primitives-autofill.mjs.map +1 -1
  10. package/fesm2022/ng-primitives-avatar.mjs +14 -17
  11. package/fesm2022/ng-primitives-avatar.mjs.map +1 -1
  12. package/fesm2022/ng-primitives-breadcrumbs.mjs +21 -21
  13. package/fesm2022/ng-primitives-breadcrumbs.mjs.map +1 -1
  14. package/fesm2022/ng-primitives-button.mjs +7 -9
  15. package/fesm2022/ng-primitives-button.mjs.map +1 -1
  16. package/fesm2022/ng-primitives-checkbox.mjs +15 -30
  17. package/fesm2022/ng-primitives-checkbox.mjs.map +1 -1
  18. package/fesm2022/ng-primitives-combobox.mjs +60 -92
  19. package/fesm2022/ng-primitives-combobox.mjs.map +1 -1
  20. package/fesm2022/ng-primitives-common.mjs +4 -4
  21. package/fesm2022/ng-primitives-common.mjs.map +1 -1
  22. package/fesm2022/ng-primitives-context-menu.mjs +68 -121
  23. package/fesm2022/ng-primitives-context-menu.mjs.map +1 -1
  24. package/fesm2022/ng-primitives-date-picker.mjs +91 -115
  25. package/fesm2022/ng-primitives-date-picker.mjs.map +1 -1
  26. package/fesm2022/ng-primitives-dialog.mjs +35 -51
  27. package/fesm2022/ng-primitives-dialog.mjs.map +1 -1
  28. package/fesm2022/ng-primitives-file-upload.mjs +26 -53
  29. package/fesm2022/ng-primitives-file-upload.mjs.map +1 -1
  30. package/fesm2022/ng-primitives-focus-trap.mjs +5 -8
  31. package/fesm2022/ng-primitives-focus-trap.mjs.map +1 -1
  32. package/fesm2022/ng-primitives-form-field.mjs +39 -44
  33. package/fesm2022/ng-primitives-form-field.mjs.map +1 -1
  34. package/fesm2022/ng-primitives-input-otp.mjs +30 -43
  35. package/fesm2022/ng-primitives-input-otp.mjs.map +1 -1
  36. package/fesm2022/ng-primitives-input.mjs +6 -8
  37. package/fesm2022/ng-primitives-input.mjs.map +1 -1
  38. package/fesm2022/ng-primitives-interactions.mjs +31 -48
  39. package/fesm2022/ng-primitives-interactions.mjs.map +1 -1
  40. package/fesm2022/ng-primitives-internal.mjs +39 -35
  41. package/fesm2022/ng-primitives-internal.mjs.map +1 -1
  42. package/fesm2022/ng-primitives-listbox.mjs +34 -48
  43. package/fesm2022/ng-primitives-listbox.mjs.map +1 -1
  44. package/fesm2022/ng-primitives-menu.mjs +85 -151
  45. package/fesm2022/ng-primitives-menu.mjs.map +1 -1
  46. package/fesm2022/ng-primitives-meter.mjs +25 -36
  47. package/fesm2022/ng-primitives-meter.mjs.map +1 -1
  48. package/fesm2022/ng-primitives-navigation-menu.mjs +60 -108
  49. package/fesm2022/ng-primitives-navigation-menu.mjs.map +1 -1
  50. package/fesm2022/ng-primitives-number-field.mjs +35 -59
  51. package/fesm2022/ng-primitives-number-field.mjs.map +1 -1
  52. package/fesm2022/ng-primitives-pagination.mjs +270 -297
  53. package/fesm2022/ng-primitives-pagination.mjs.map +1 -1
  54. package/fesm2022/ng-primitives-popover.mjs +209 -223
  55. package/fesm2022/ng-primitives-popover.mjs.map +1 -1
  56. package/fesm2022/ng-primitives-portal.mjs +88 -59
  57. package/fesm2022/ng-primitives-portal.mjs.map +1 -1
  58. package/fesm2022/ng-primitives-progress.mjs +30 -41
  59. package/fesm2022/ng-primitives-progress.mjs.map +1 -1
  60. package/fesm2022/ng-primitives-radio.mjs +20 -30
  61. package/fesm2022/ng-primitives-radio.mjs.map +1 -1
  62. package/fesm2022/ng-primitives-resize.mjs +3 -3
  63. package/fesm2022/ng-primitives-resize.mjs.map +1 -1
  64. package/fesm2022/ng-primitives-roving-focus.mjs +20 -34
  65. package/fesm2022/ng-primitives-roving-focus.mjs.map +1 -1
  66. package/fesm2022/ng-primitives-search.mjs +9 -9
  67. package/fesm2022/ng-primitives-search.mjs.map +1 -1
  68. package/fesm2022/ng-primitives-select.mjs +720 -620
  69. package/fesm2022/ng-primitives-select.mjs.map +1 -1
  70. package/fesm2022/ng-primitives-separator.mjs +4 -6
  71. package/fesm2022/ng-primitives-separator.mjs.map +1 -1
  72. package/fesm2022/ng-primitives-slider.mjs +63 -100
  73. package/fesm2022/ng-primitives-slider.mjs.map +1 -1
  74. package/fesm2022/ng-primitives-state.mjs +3 -3
  75. package/fesm2022/ng-primitives-state.mjs.map +1 -1
  76. package/fesm2022/ng-primitives-switch.mjs +15 -21
  77. package/fesm2022/ng-primitives-switch.mjs.map +1 -1
  78. package/fesm2022/ng-primitives-tabs.mjs +31 -41
  79. package/fesm2022/ng-primitives-tabs.mjs.map +1 -1
  80. package/fesm2022/ng-primitives-textarea.mjs +5 -7
  81. package/fesm2022/ng-primitives-textarea.mjs.map +1 -1
  82. package/fesm2022/ng-primitives-toast.mjs +30 -23
  83. package/fesm2022/ng-primitives-toast.mjs.map +1 -1
  84. package/fesm2022/ng-primitives-toggle-group.mjs +20 -36
  85. package/fesm2022/ng-primitives-toggle-group.mjs.map +1 -1
  86. package/fesm2022/ng-primitives-toggle.mjs +10 -19
  87. package/fesm2022/ng-primitives-toggle.mjs.map +1 -1
  88. package/fesm2022/ng-primitives-toolbar.mjs +4 -6
  89. package/fesm2022/ng-primitives-toolbar.mjs.map +1 -1
  90. package/fesm2022/ng-primitives-tooltip.mjs +401 -402
  91. package/fesm2022/ng-primitives-tooltip.mjs.map +1 -1
  92. package/fesm2022/ng-primitives-utils.mjs +5 -4
  93. package/fesm2022/ng-primitives-utils.mjs.map +1 -1
  94. package/package.json +56 -55
  95. package/schematics/ng-generate/templates/select/select.__fileSuffix@dasherize__.ts.template +48 -48
  96. package/{a11y/index.d.ts → types/ng-primitives-a11y.d.ts} +18 -24
  97. package/{accordion/index.d.ts → types/ng-primitives-accordion.d.ts} +85 -98
  98. package/{autofill/index.d.ts → types/ng-primitives-autofill.d.ts} +3 -10
  99. package/{avatar/index.d.ts → types/ng-primitives-avatar.d.ts} +7 -30
  100. package/{breadcrumbs/index.d.ts → types/ng-primitives-breadcrumbs.d.ts} +15 -70
  101. package/{button/index.d.ts → types/ng-primitives-button.d.ts} +23 -29
  102. package/{checkbox/index.d.ts → types/ng-primitives-checkbox.d.ts} +68 -74
  103. package/{combobox/index.d.ts → types/ng-primitives-combobox.d.ts} +35 -35
  104. package/{context-menu/index.d.ts → types/ng-primitives-context-menu.d.ts} +2 -1
  105. package/{date-picker/index.d.ts → types/ng-primitives-date-picker.d.ts} +2 -2
  106. package/{dialog/index.d.ts → types/ng-primitives-dialog.d.ts} +7 -2
  107. package/{file-upload/index.d.ts → types/ng-primitives-file-upload.d.ts} +5 -20
  108. package/{focus-trap/index.d.ts → types/ng-primitives-focus-trap.d.ts} +3 -10
  109. package/{form-field/index.d.ts → types/ng-primitives-form-field.d.ts} +9 -40
  110. package/{input/index.d.ts → types/ng-primitives-input.d.ts} +3 -10
  111. package/{menu/index.d.ts → types/ng-primitives-menu.d.ts} +17 -63
  112. package/{navigation-menu/index.d.ts → types/ng-primitives-navigation-menu.d.ts} +15 -70
  113. package/{number-field/index.d.ts → types/ng-primitives-number-field.d.ts} +80 -110
  114. package/types/ng-primitives-pagination.d.ts +502 -0
  115. package/{popover/index.d.ts → types/ng-primitives-popover.d.ts} +244 -57
  116. package/{portal/index.d.ts → types/ng-primitives-portal.d.ts} +22 -13
  117. package/{progress/index.d.ts → types/ng-primitives-progress.d.ts} +3 -10
  118. package/{roving-focus/index.d.ts → types/ng-primitives-roving-focus.d.ts} +65 -79
  119. package/types/ng-primitives-select.d.ts +687 -0
  120. package/{separator/index.d.ts → types/ng-primitives-separator.d.ts} +3 -10
  121. package/{slider/index.d.ts → types/ng-primitives-slider.d.ts} +76 -138
  122. package/{state/index.d.ts → types/ng-primitives-state.d.ts} +26 -21
  123. package/{switch/index.d.ts → types/ng-primitives-switch.d.ts} +50 -64
  124. package/{tabs/index.d.ts → types/ng-primitives-tabs.d.ts} +9 -40
  125. package/{textarea/index.d.ts → types/ng-primitives-textarea.d.ts} +3 -10
  126. package/{toast/index.d.ts → types/ng-primitives-toast.d.ts} +13 -1
  127. package/{toggle-group/index.d.ts → types/ng-primitives-toggle-group.d.ts} +75 -89
  128. package/{toggle/index.d.ts → types/ng-primitives-toggle.d.ts} +50 -56
  129. package/{toolbar/index.d.ts → types/ng-primitives-toolbar.d.ts} +3 -10
  130. package/types/ng-primitives-tooltip.d.ts +691 -0
  131. package/pagination/index.d.ts +0 -211
  132. package/select/index.d.ts +0 -396
  133. package/tooltip/index.d.ts +0 -384
  134. /package/{ai/index.d.ts → types/ng-primitives-ai.d.ts} +0 -0
  135. /package/{common/index.d.ts → types/ng-primitives-common.d.ts} +0 -0
  136. /package/{date-time-luxon/index.d.ts → types/ng-primitives-date-time-luxon.d.ts} +0 -0
  137. /package/{date-time/index.d.ts → types/ng-primitives-date-time.d.ts} +0 -0
  138. /package/{input-otp/index.d.ts → types/ng-primitives-input-otp.d.ts} +0 -0
  139. /package/{interactions/index.d.ts → types/ng-primitives-interactions.d.ts} +0 -0
  140. /package/{internal/index.d.ts → types/ng-primitives-internal.d.ts} +0 -0
  141. /package/{listbox/index.d.ts → types/ng-primitives-listbox.d.ts} +0 -0
  142. /package/{meter/index.d.ts → types/ng-primitives-meter.d.ts} +0 -0
  143. /package/{radio/index.d.ts → types/ng-primitives-radio.d.ts} +0 -0
  144. /package/{resize/index.d.ts → types/ng-primitives-resize.d.ts} +0 -0
  145. /package/{search/index.d.ts → types/ng-primitives-search.d.ts} +0 -0
  146. /package/{utils/index.d.ts → types/ng-primitives-utils.d.ts} +0 -0
  147. /package/{index.d.ts → types/ng-primitives.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ng-primitives-navigation-menu.mjs","sources":["../../../../packages/ng-primitives/navigation-menu/src/config/navigation-menu-config.ts","../../../../packages/ng-primitives/navigation-menu/src/navigation-menu/navigation-menu-state.ts","../../../../packages/ng-primitives/navigation-menu/src/navigation-menu-item/navigation-menu-item-state.ts","../../../../packages/ng-primitives/navigation-menu/src/navigation-menu-trigger/navigation-menu-trigger-state.ts","../../../../packages/ng-primitives/navigation-menu/src/navigation-menu-content/navigation-menu-content-state.ts","../../../../packages/ng-primitives/navigation-menu/src/navigation-menu-content/navigation-menu-content.ts","../../../../packages/ng-primitives/navigation-menu/src/navigation-menu-content-item/navigation-menu-content-item-state.ts","../../../../packages/ng-primitives/navigation-menu/src/navigation-menu-content-item/navigation-menu-content-item.ts","../../../../packages/ng-primitives/navigation-menu/src/navigation-menu-item/navigation-menu-item.ts","../../../../packages/ng-primitives/navigation-menu/src/navigation-menu-link/navigation-menu-link-state.ts","../../../../packages/ng-primitives/navigation-menu/src/navigation-menu-link/navigation-menu-link.ts","../../../../packages/ng-primitives/navigation-menu/src/navigation-menu-list/navigation-menu-list-state.ts","../../../../packages/ng-primitives/navigation-menu/src/navigation-menu-list/navigation-menu-list.ts","../../../../packages/ng-primitives/navigation-menu/src/navigation-menu-trigger/navigation-menu-trigger.ts","../../../../packages/ng-primitives/navigation-menu/src/navigation-menu/navigation-menu.ts","../../../../packages/ng-primitives/navigation-menu/src/ng-primitives-navigation-menu.ts"],"sourcesContent":["import { InjectionToken, Provider, inject } from '@angular/core';\nimport { type Placement } from '@floating-ui/dom';\nimport { NgpOrientation } from 'ng-primitives/common';\nimport { NgpFlip, NgpOffset, NgpShift } from 'ng-primitives/portal';\n\nexport interface NgpNavigationMenuConfig {\n /**\n * Define the orientation of the navigation menu.\n * @default 'horizontal'\n */\n orientation: NgpOrientation;\n\n /**\n * Define the delay in milliseconds before the content is shown.\n * @default 200\n */\n showDelay: number;\n\n /**\n * Define the delay in milliseconds before the content is hidden.\n * @default 150\n */\n hideDelay: number;\n\n /**\n * Define the placement of the content relative to the trigger.\n * @default 'bottom-start'\n */\n placement: Placement;\n\n /**\n * Define the offset of the content relative to the trigger.\n * Can be a number (applies to mainAxis) or an object with mainAxis, crossAxis, and alignmentAxis.\n * @default 4\n */\n offset: NgpOffset;\n\n /**\n * Define whether the content should flip when there is not enough space.\n * Can be a boolean to enable/disable, or an object with padding and fallbackPlacements options.\n * @default true\n */\n flip: NgpFlip;\n\n /**\n * Configure shift behavior to keep the content in view.\n * Can be a boolean to enable/disable, or an object with padding and limiter options.\n * @default undefined (enabled by default in overlay)\n */\n shift: NgpShift;\n\n /**\n * Define the container element or selector in to which the content should be attached.\n * @default 'body'\n */\n container: HTMLElement | string | null;\n\n /**\n * Whether focus should wrap around when reaching the end of the list.\n * @default true\n */\n wrap: boolean;\n\n /**\n * Define the cooldown duration in milliseconds.\n * When moving from one navigation menu item to another within this duration,\n * the showDelay is skipped for the new item.\n * @default 300\n */\n cooldown: number;\n}\n\nexport const defaultNavigationMenuConfig: NgpNavigationMenuConfig = {\n orientation: 'horizontal',\n showDelay: 200,\n hideDelay: 150,\n placement: 'bottom-start',\n offset: 4,\n flip: true,\n shift: undefined,\n container: 'body',\n wrap: true,\n cooldown: 300,\n};\n\nexport const NgpNavigationMenuConfigToken = new InjectionToken<NgpNavigationMenuConfig>(\n 'NgpNavigationMenuConfigToken',\n);\n\n/**\n * Provide the default NavigationMenu configuration\n * @param config The NavigationMenu configuration\n * @returns The provider\n */\nexport function provideNavigationMenuConfig(config: Partial<NgpNavigationMenuConfig>): Provider[] {\n return [\n {\n provide: NgpNavigationMenuConfigToken,\n useValue: { ...defaultNavigationMenuConfig, ...config },\n },\n ];\n}\n\n/**\n * Inject the NavigationMenu configuration\n * @returns The global NavigationMenu configuration\n */\nexport function injectNavigationMenuConfig(): NgpNavigationMenuConfig {\n return inject(NgpNavigationMenuConfigToken, { optional: true }) ?? defaultNavigationMenuConfig;\n}\n","import { computed, signal, Signal } from '@angular/core';\nimport { NgpOrientation } from 'ng-primitives/common';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { controlled, createPrimitive, dataBinding } from 'ng-primitives/state';\n\nexport interface NgpNavigationMenuState {\n /**\n * The orientation of the navigation menu.\n */\n readonly orientation: Signal<NgpOrientation>;\n\n /**\n * The delay in milliseconds before showing content.\n */\n readonly showDelay: Signal<number>;\n\n /**\n * The delay in milliseconds before hiding content.\n */\n readonly hideDelay: Signal<number>;\n\n /**\n * The currently active item value (open menu item).\n */\n readonly activeItem: Signal<string | null>;\n\n /**\n * Set the active item by value.\n * @param value The item value to activate (or null to deactivate)\n */\n setActiveItem(value: string | null): void;\n\n /**\n * Set the orientation of the navigation menu.\n * @param orientation The orientation\n */\n setOrientation(orientation: NgpOrientation): void;\n\n /**\n * Set the show delay.\n * @param delay The delay in milliseconds\n */\n setShowDelay(delay: number): void;\n\n /**\n * Set the hide delay.\n * @param delay The delay in milliseconds\n */\n setHideDelay(delay: number): void;\n}\n\nexport interface NgpNavigationMenuProps {\n /**\n * The orientation of the navigation menu.\n */\n readonly orientation?: Signal<NgpOrientation>;\n\n /**\n * The delay in milliseconds before showing content.\n */\n readonly showDelay?: Signal<number>;\n\n /**\n * The delay in milliseconds before hiding content.\n */\n readonly hideDelay?: Signal<number>;\n\n /**\n * The initially active item value.\n */\n readonly value?: Signal<string | null>;\n\n /**\n * Callback when the active item changes.\n */\n readonly onValueChange?: (value: string | null) => void;\n}\n\nexport const [\n NgpNavigationMenuStateToken,\n ngpNavigationMenu,\n injectNavigationMenuState,\n provideNavigationMenuState,\n] = createPrimitive(\n 'NgpNavigationMenu',\n ({\n orientation: _orientation = signal('horizontal'),\n showDelay: _showDelay = signal(200),\n hideDelay: _hideDelay = signal(150),\n value: _value = signal(null),\n onValueChange,\n }: NgpNavigationMenuProps) => {\n const element = injectElementRef();\n\n // Controlled properties\n const orientation = controlled(_orientation);\n const showDelay = controlled(_showDelay);\n const hideDelay = controlled(_hideDelay);\n const activeItem = controlled(_value);\n\n // Host bindings\n dataBinding(element, 'data-orientation', orientation);\n\n // Methods\n function setActiveItem(value: string | null): void {\n if (activeItem() === value) {\n return;\n }\n activeItem.set(value);\n onValueChange?.(value);\n }\n\n function setOrientation(newOrientation: NgpOrientation): void {\n orientation.set(newOrientation);\n }\n\n function setShowDelay(delay: number): void {\n showDelay.set(delay);\n }\n\n function setHideDelay(delay: number): void {\n hideDelay.set(delay);\n }\n\n return {\n orientation: orientation.asReadonly(),\n showDelay: showDelay.asReadonly(),\n hideDelay: hideDelay.asReadonly(),\n activeItem: computed(() => activeItem()),\n setActiveItem,\n setOrientation,\n setShowDelay,\n setHideDelay,\n } satisfies NgpNavigationMenuState;\n },\n);\n","import { computed, signal, Signal } from '@angular/core';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { controlled, createPrimitive, dataBinding } from 'ng-primitives/state';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectNavigationMenuState } from '../navigation-menu/navigation-menu-state';\n\n/**\n * The state for the NgpNavigationMenuItem directive.\n */\nexport interface NgpNavigationMenuItemState {\n /**\n * The unique value identifying this menu item.\n */\n readonly value: Signal<string>;\n\n /**\n * Whether this menu item is currently active (open).\n */\n readonly active: Signal<boolean>;\n\n /**\n * Show the content for this menu item.\n */\n show(): void;\n\n /**\n * Hide the content for this menu item.\n */\n hide(): void;\n\n /**\n * Set the value for this menu item.\n * @param value The new value\n */\n setValue(value: string): void;\n}\n\n/**\n * The props for the NgpNavigationMenuItem state.\n */\nexport interface NgpNavigationMenuItemProps {\n /**\n * The unique value identifying this menu item.\n */\n readonly value?: Signal<string>;\n}\n\nexport const [\n NgpNavigationMenuItemStateToken,\n ngpNavigationMenuItem,\n injectNavigationMenuItemState,\n provideNavigationMenuItemState,\n] = createPrimitive(\n 'NgpNavigationMenuItem',\n ({ value: _value = signal(uniqueId('navigation-menu-item')) }: NgpNavigationMenuItemProps) => {\n const element = injectElementRef();\n const navigationMenuState = injectNavigationMenuState();\n\n // Controlled properties\n const value = controlled(_value);\n\n // Computed state\n const active = computed(() => navigationMenuState().activeItem() === value());\n\n // Host bindings\n dataBinding(element, 'data-active', active);\n\n // Methods\n function show(): void {\n navigationMenuState().setActiveItem(value());\n }\n\n function hide(): void {\n if (active()) {\n navigationMenuState().setActiveItem(null);\n }\n }\n\n function setValue(newValue: string): void {\n value.set(newValue);\n }\n\n return {\n value: value.asReadonly(),\n active,\n show,\n hide,\n setValue,\n } satisfies NgpNavigationMenuItemState;\n },\n);\n","import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { computed, inject, Injector, signal, Signal, ViewContainerRef } from '@angular/core';\nimport { Placement } from '@floating-ui/dom';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport {\n createOverlay,\n NgpFlip,\n NgpOffset,\n NgpOverlay,\n NgpOverlayConfig,\n NgpOverlayContent,\n NgpShift,\n} from 'ng-primitives/portal';\nimport {\n attrBinding,\n controlled,\n createPrimitive,\n dataBinding,\n listener,\n onDestroy,\n} from 'ng-primitives/state';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectNavigationMenuItemState } from '../navigation-menu-item/navigation-menu-item-state';\nimport { injectNavigationMenuState } from '../navigation-menu/navigation-menu-state';\n\nexport interface NgpNavigationMenuTriggerState {\n /**\n * The content template or component.\n */\n readonly content: Signal<NgpOverlayContent<unknown> | undefined>;\n\n /**\n * Whether the trigger is disabled.\n */\n readonly disabled: Signal<boolean>;\n\n /**\n * The placement of the content.\n */\n readonly placement: Signal<Placement>;\n\n /**\n * The offset of the content.\n */\n readonly offset: Signal<NgpOffset>;\n\n /**\n * Whether the content should flip when there is not enough space.\n */\n readonly flip: Signal<NgpFlip>;\n\n /**\n * The shift configuration for the content.\n */\n readonly shift: Signal<NgpShift>;\n\n /**\n * The container for the content.\n */\n readonly container: Signal<HTMLElement | string | null>;\n\n /**\n * Whether the content is currently open.\n */\n readonly open: Signal<boolean>;\n\n /**\n * The unique ID for accessibility.\n */\n readonly id: string;\n\n /**\n * The ID of the associated content panel.\n */\n readonly contentId: Signal<string | undefined>;\n\n /**\n * Show the content.\n */\n show(): void;\n\n /**\n * Hide the content.\n * @param origin The focus origin\n */\n hide(origin?: FocusOrigin): void;\n\n /**\n * Focus the first item in the content.\n */\n focusFirstContentItem(): void;\n\n /**\n * Focus the last item in the content.\n */\n focusLastContentItem(): void;\n\n /**\n * Set the content ID.\n * @param id The content ID\n */\n setContentId(id: string): void;\n\n /**\n * Update pointer over content state.\n * @param isOver Whether pointer is over content\n */\n setPointerOverContent(isOver: boolean): void;\n\n /**\n * Update focus inside content state.\n * @param isFocused Whether focus is inside the content\n */\n setFocusInsideContent(isFocused: boolean): void;\n\n /**\n * Register focus functions from content.\n * @param focusFirst Function to focus first item\n * @param focusLast Function to focus last item\n */\n registerContentFocusFunctions(focusFirst: () => void, focusLast: () => void): void;\n}\n\nexport interface NgpNavigationMenuTriggerProps {\n /**\n * The content template or component.\n */\n readonly content?: Signal<NgpOverlayContent<unknown> | undefined>;\n\n /**\n * Whether the trigger is disabled.\n */\n readonly disabled?: Signal<boolean>;\n\n /**\n * The placement of the content.\n */\n readonly placement?: Signal<Placement>;\n\n /**\n * The offset of the content.\n */\n readonly offset?: Signal<NgpOffset>;\n\n /**\n * Whether the content should flip.\n */\n readonly flip?: Signal<NgpFlip>;\n\n /**\n * The shift configuration.\n */\n readonly shift?: Signal<NgpShift>;\n\n /**\n * The container for the content.\n */\n readonly container?: Signal<HTMLElement | string | null>;\n\n /**\n * The cooldown duration in milliseconds.\n */\n readonly cooldown?: Signal<number>;\n}\n\nexport const [\n NgpNavigationMenuTriggerStateToken,\n ngpNavigationMenuTrigger,\n injectNavigationMenuTriggerState,\n provideNavigationMenuTriggerState,\n] = createPrimitive(\n 'NgpNavigationMenuTrigger',\n ({\n content: _content = signal(undefined),\n disabled: _disabled = signal(false),\n placement: _placement = signal('bottom-start'),\n offset: _offset = signal(4),\n flip: _flip = signal(true),\n shift: _shift = signal(undefined),\n container: _container = signal('body'),\n cooldown: _cooldown = signal(300),\n }: NgpNavigationMenuTriggerProps) => {\n const element = injectElementRef();\n const injector = inject(Injector);\n const viewContainerRef = inject(ViewContainerRef);\n const focusMonitor = inject(FocusMonitor);\n const directionality = inject(Directionality);\n const navigationMenuState = injectNavigationMenuState();\n const navigationMenuItemState = injectNavigationMenuItemState();\n\n // Controlled properties - use asReadonly() for public interface\n const content = controlled(_content);\n const disabled = controlled(_disabled);\n const placement = controlled(_placement);\n const offset = controlled(_offset);\n const flip = controlled(_flip);\n const shift = controlled(_shift);\n const container = controlled(_container);\n const cooldown = controlled(_cooldown);\n\n // Internal state\n const id = uniqueId('navigation-menu-trigger');\n const contentId = signal<string | undefined>(undefined);\n const overlay = signal<NgpOverlay<unknown> | null>(null);\n const open = computed(() => navigationMenuItemState().active());\n let showTimeout: ReturnType<typeof setTimeout> | null = null;\n let hideTimeout: ReturnType<typeof setTimeout> | null = null;\n let isPointerOverTrigger = false;\n let isPointerOverContent = false;\n let isFocusInsideContent = false;\n let contentFocusFirstFn: (() => void) | null = null;\n let contentFocusLastFn: (() => void) | null = null;\n let wasOpen = false;\n\n // Host bindings\n attrBinding(element, 'id', id);\n attrBinding(element, 'aria-haspopup', 'menu');\n attrBinding(element, 'aria-expanded', open);\n attrBinding(element, 'aria-controls', () => contentId() ?? null);\n dataBinding(element, 'data-open', open);\n dataBinding(element, 'data-disabled', disabled);\n\n // Event listeners\n listener(element, 'pointerenter', onPointerEnter);\n listener(element, 'pointerleave', onPointerLeave);\n listener(element, 'focus', onFocus);\n listener(element, 'blur', onBlur);\n listener(element, 'click', onClick);\n listener(element, 'keydown', onKeydown);\n\n // Cleanup on destroy\n onDestroy(() => {\n clearShowTimeout();\n clearHideTimeout();\n overlay()?.destroy();\n contentFocusFirstFn = null;\n contentFocusLastFn = null;\n });\n\n // Methods\n function onPointerEnter(event: PointerEvent): void {\n if (disabled() || event.pointerType === 'touch') {\n return;\n }\n isPointerOverTrigger = true;\n clearHideTimeout();\n scheduleShow();\n }\n\n function onPointerLeave(event: PointerEvent): void {\n if (disabled() || event.pointerType === 'touch') {\n return;\n }\n isPointerOverTrigger = false;\n clearShowTimeout();\n scheduleHide();\n }\n\n function onFocus(): void {\n if (disabled()) {\n return;\n }\n // Only clear hide timeout on focus, don't show\n // Menu should open on hover or enter key, not on focus alone\n clearHideTimeout();\n }\n\n function onBlur(): void {\n if (disabled()) {\n return;\n }\n // Don't hide if focus is moving to the content\n scheduleHide();\n }\n\n function onClick(): void {\n if (disabled()) {\n return;\n }\n // For touch/click, toggle immediately\n if (open()) {\n hide('mouse');\n } else {\n show();\n }\n }\n\n function onKeydown(event: KeyboardEvent): void {\n if (disabled()) {\n return;\n }\n\n const orientation = navigationMenuState().orientation();\n const isRtl = directionality.value === 'rtl';\n\n // Determine which arrow key opens content based on orientation\n const openKey =\n orientation === 'horizontal' ? 'ArrowDown' : isRtl ? 'ArrowLeft' : 'ArrowRight';\n const openLastKey =\n orientation === 'horizontal' ? 'ArrowUp' : isRtl ? 'ArrowRight' : 'ArrowLeft';\n\n if (event.key === openKey) {\n event.preventDefault();\n if (!open()) {\n // Wait for overlay to show, then focus first item (has built-in retry)\n show().then(() => focusFirstContentItem());\n } else {\n // Already open, just focus first item\n focusFirstContentItem();\n }\n } else if (event.key === openLastKey && open()) {\n event.preventDefault();\n // Focus last item in content\n focusLastContentItem();\n } else if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n if (open()) {\n focusFirstContentItem();\n } else {\n // Wait for overlay to show, then focus first item (has built-in retry)\n show().then(() => focusFirstContentItem());\n }\n } else if (event.key === 'Escape' && open()) {\n event.preventDefault();\n hide('keyboard');\n }\n }\n\n function scheduleShow(): void {\n clearShowTimeout();\n const delay = navigationMenuState().showDelay();\n\n if (delay === 0) {\n show();\n return;\n }\n\n showTimeout = setTimeout(() => {\n show();\n }, delay);\n }\n\n function scheduleHide(): void {\n clearHideTimeout();\n const delay = navigationMenuState().hideDelay();\n\n if (delay === 0) {\n hide();\n return;\n }\n\n hideTimeout = setTimeout(() => {\n // Only hide if pointer is not over trigger or content and focus is not inside content\n if (!isPointerOverTrigger && !isPointerOverContent && !isFocusInsideContent) {\n hide();\n }\n }, delay);\n }\n\n function clearShowTimeout(): void {\n if (showTimeout) {\n clearTimeout(showTimeout);\n showTimeout = null;\n }\n }\n\n function clearHideTimeout(): void {\n if (hideTimeout) {\n clearTimeout(hideTimeout);\n hideTimeout = null;\n }\n }\n\n function show(): Promise<void> {\n if (disabled()) {\n return Promise.resolve();\n }\n navigationMenuItemState().show();\n\n // Imperatively manage overlay - show it now\n return syncOverlayState(true);\n }\n\n function hide(origin: FocusOrigin = 'program'): void {\n navigationMenuItemState().hide();\n\n // Imperatively manage overlay - hide it now\n syncOverlayState(false);\n\n // If closing via keyboard, restore focus to trigger\n if (origin === 'keyboard') {\n focusMonitor.focusVia(element, 'keyboard');\n }\n }\n\n function syncOverlayState(shouldBeOpen: boolean): Promise<void> {\n if (shouldBeOpen && !wasOpen) {\n wasOpen = true;\n return showOverlay();\n } else if (!shouldBeOpen && wasOpen) {\n hideOverlay();\n wasOpen = false;\n }\n return Promise.resolve();\n }\n\n function showOverlay(): Promise<void> {\n if (!content()) {\n return Promise.resolve();\n }\n\n // Create overlay if needed\n if (!overlay()) {\n createOverlayInstance();\n }\n\n return overlay()?.show() ?? Promise.resolve();\n }\n\n function hideOverlay(): void {\n overlay()?.hide();\n }\n\n function createOverlayInstance(): void {\n const contentValue = content();\n\n if (!contentValue) {\n return;\n }\n\n const config: NgpOverlayConfig<unknown> = {\n content: contentValue,\n triggerElement: element.nativeElement,\n injector,\n viewContainerRef,\n container: container(),\n placement,\n offset: offset(),\n flip: flip(),\n shift: shift(),\n closeOnOutsideClick: true,\n closeOnEscape: true,\n restoreFocus: false, // We handle focus restoration ourselves\n overlayType: 'navigation-menu',\n cooldown: cooldown(),\n };\n\n overlay.set(createOverlay(config));\n }\n\n function focusFirstContentItem(retryCount = 0): void {\n if (contentFocusFirstFn) {\n contentFocusFirstFn();\n } else if (retryCount < 3) {\n // Focus function not registered yet, retry after a frame\n requestAnimationFrame(() => focusFirstContentItem(retryCount + 1));\n }\n }\n\n function focusLastContentItem(retryCount = 0): void {\n if (contentFocusLastFn) {\n contentFocusLastFn();\n } else if (retryCount < 3) {\n // Focus function not registered yet, retry after a frame\n requestAnimationFrame(() => focusLastContentItem(retryCount + 1));\n }\n }\n\n function setContentId(newId: string): void {\n contentId.set(newId);\n }\n\n function setPointerOverContent(isOver: boolean): void {\n isPointerOverContent = isOver;\n if (isOver) {\n clearHideTimeout();\n } else {\n scheduleHide();\n }\n }\n\n function setFocusInsideContent(isFocused: boolean): void {\n isFocusInsideContent = isFocused;\n if (isFocused) {\n clearHideTimeout();\n } else {\n scheduleHide();\n }\n }\n\n function registerContentFocusFunctions(focusFirst: () => void, focusLast: () => void): void {\n contentFocusFirstFn = focusFirst;\n contentFocusLastFn = focusLast;\n }\n\n return {\n content: content.asReadonly(),\n disabled: disabled.asReadonly(),\n placement: placement.asReadonly(),\n offset: offset.asReadonly(),\n flip: flip.asReadonly(),\n shift: shift.asReadonly(),\n container: container.asReadonly(),\n open,\n id,\n contentId: computed(() => contentId()),\n show,\n hide,\n focusFirstContentItem,\n focusLastContentItem,\n setContentId,\n setPointerOverContent,\n setFocusInsideContent,\n registerContentFocusFunctions,\n } satisfies NgpNavigationMenuTriggerState;\n },\n);\n","import { FocusOrigin } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { computed, inject, signal, Signal } from '@angular/core';\nimport { NgpOrientation } from 'ng-primitives/common';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { NgpOverlay } from 'ng-primitives/portal';\nimport { injectRovingFocusGroupState } from 'ng-primitives/roving-focus';\nimport {\n attrBinding,\n controlled,\n createPrimitive,\n dataBinding,\n listener,\n onDestroy,\n onMount,\n styleBinding,\n} from 'ng-primitives/state';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectNavigationMenuItemState } from '../navigation-menu-item/navigation-menu-item-state';\nimport { injectNavigationMenuTriggerState } from '../navigation-menu-trigger/navigation-menu-trigger-state';\nimport { injectNavigationMenuState } from '../navigation-menu/navigation-menu-state';\n\n/**\n * The state for the NgpNavigationMenuContent directive.\n */\nexport interface NgpNavigationMenuContentState {\n /**\n * The unique ID for this content panel.\n */\n readonly id: string;\n\n /**\n * Whether the content is currently open.\n */\n readonly open: Signal<boolean>;\n\n /**\n * The orientation for keyboard navigation within the content.\n */\n readonly orientation: Signal<NgpOrientation>;\n\n /**\n * Close the content.\n * @param origin The focus origin\n */\n close(origin?: FocusOrigin): void;\n\n /**\n * Focus the first focusable item in the content.\n */\n focusFirst(): void;\n\n /**\n * Focus the last focusable item in the content.\n */\n focusLast(): void;\n\n /**\n * Set the orientation for keyboard navigation within the content.\n * @param orientation The orientation ('vertical' for lists, 'horizontal' for grids)\n */\n setOrientation(orientation: NgpOrientation): void;\n}\n\n/**\n * The props for the NgpNavigationMenuContent state.\n */\nexport interface NgpNavigationMenuContentProps {\n /**\n * The orientation for keyboard navigation within the content.\n * Use 'horizontal' for grid layouts, 'vertical' for lists.\n */\n readonly orientation?: Signal<NgpOrientation>;\n}\n\nexport const [\n NgpNavigationMenuContentStateToken,\n ngpNavigationMenuContent,\n injectNavigationMenuContentState,\n provideNavigationMenuContentState,\n] = createPrimitive(\n 'NgpNavigationMenuContent',\n ({ orientation: _orientation = signal('vertical') }: NgpNavigationMenuContentProps) => {\n const element = injectElementRef();\n const directionality = inject(Directionality);\n const navigationMenuState = injectNavigationMenuState({ hoisted: true });\n const navigationMenuItemState = injectNavigationMenuItemState({ hoisted: true });\n const triggerState = injectNavigationMenuTriggerState({ hoisted: true });\n const rovingFocusGroup = injectRovingFocusGroupState();\n\n // Controlled properties\n const orientation = controlled(_orientation);\n\n // Try to get overlay - may not exist if content isn't in a portal\n const overlay = inject(NgpOverlay, { optional: true });\n\n const id = uniqueId('navigation-menu-content');\n const open = computed(() => navigationMenuItemState?.()?.active() ?? false);\n let isPointerOver = false;\n let isFocusInside = false;\n\n // Host bindings\n attrBinding(element, 'id', id);\n attrBinding(element, 'role', 'menu');\n attrBinding(element, 'aria-labelledby', () => triggerState?.()?.id ?? null);\n dataBinding(element, 'data-open', open);\n dataBinding(element, 'data-placement', () => overlay?.finalPlacement() ?? null);\n dataBinding(element, 'data-orientation', orientation);\n dataBinding(element, 'data-instant', () => overlay?.instantTransition() ?? false);\n\n // Style bindings for positioning\n styleBinding(element, 'left.px', () => overlay?.position().x ?? null);\n styleBinding(element, 'top.px', () => overlay?.position().y ?? null);\n styleBinding(\n element,\n '--ngp-navigation-menu-trigger-width.px',\n () => overlay?.triggerWidth() ?? null,\n );\n styleBinding(\n element,\n '--ngp-navigation-menu-transform-origin',\n () => overlay?.transformOrigin() ?? null,\n );\n styleBinding(\n element,\n '--ngp-navigation-menu-available-width.px',\n () => overlay?.availableWidth() ?? null,\n );\n styleBinding(\n element,\n '--ngp-navigation-menu-available-height.px',\n () => overlay?.availableHeight() ?? null,\n );\n\n // Event listeners\n listener(element, 'pointerenter', onPointerEnter);\n listener(element, 'pointerleave', onPointerLeave);\n listener(element, 'focusin', onFocusIn);\n listener(element, 'focusout', onFocusOut);\n listener(element, 'keydown', onKeydown);\n\n // Register content ID with trigger on mount\n onMount(() => {\n triggerState?.()?.setContentId(id);\n\n // Register focus functions with trigger\n triggerState?.()?.registerContentFocusFunctions(focusFirst, focusLast);\n });\n\n // Cleanup on destroy\n onDestroy(() => {\n // Notify trigger that pointer left content\n if (isPointerOver) {\n triggerState?.()?.setPointerOverContent(false);\n }\n // Notify trigger that focus left content\n if (isFocusInside) {\n triggerState?.()?.setFocusInsideContent(false);\n }\n });\n\n function onPointerEnter(event: PointerEvent): void {\n if (event.pointerType === 'touch') {\n return;\n }\n isPointerOver = true;\n triggerState?.()?.setPointerOverContent(true);\n }\n\n function onPointerLeave(event: PointerEvent): void {\n if (event.pointerType === 'touch') {\n return;\n }\n isPointerOver = false;\n triggerState?.()?.setPointerOverContent(false);\n }\n\n function onFocusIn(): void {\n isFocusInside = true;\n triggerState?.()?.setFocusInsideContent(true);\n }\n\n function onFocusOut(event: FocusEvent): void {\n // Check if focus is moving outside the content\n const relatedTarget = event.relatedTarget as HTMLElement | null;\n const contentElement = element.nativeElement;\n\n // If focus is moving to another element inside the content, don't mark as lost\n if (relatedTarget && contentElement.contains(relatedTarget)) {\n return;\n }\n\n isFocusInside = false;\n triggerState?.()?.setFocusInsideContent(false);\n }\n\n function onKeydown(event: KeyboardEvent): void {\n const menuOrientation = navigationMenuState?.()?.orientation() ?? 'horizontal';\n const isRtl = directionality.value === 'rtl';\n\n // Determine which arrow key closes content and returns to trigger\n // For horizontal menu: ArrowUp closes\n // For vertical menu: ArrowLeft closes (or ArrowRight in RTL)\n const closeKey =\n menuOrientation === 'horizontal' ? 'ArrowUp' : isRtl ? 'ArrowRight' : 'ArrowLeft';\n\n if (event.key === 'Escape') {\n event.preventDefault();\n close('keyboard');\n } else if (event.key === closeKey) {\n // Only close if we're at the edge of the content\n // For now, we let the roving focus handle internal navigation\n // and only close on Escape\n }\n }\n\n function close(origin: FocusOrigin = 'program'): void {\n navigationMenuItemState?.()?.hide();\n\n // Restore focus to trigger on keyboard close\n if (origin === 'keyboard') {\n triggerState?.()?.hide('keyboard');\n }\n }\n\n function focusFirst(): void {\n // Use the roving focus group's activateFirst method\n rovingFocusGroup()?.activateFirst('keyboard');\n }\n\n function focusLast(): void {\n // Use the roving focus group's activateLast method\n rovingFocusGroup()?.activateLast('keyboard');\n }\n\n function setOrientation(value: NgpOrientation): void {\n orientation.set(value);\n // Also update the roving focus group orientation\n rovingFocusGroup()?.setOrientation(value);\n }\n\n return {\n id,\n open,\n orientation: orientation.asReadonly(),\n close,\n focusFirst,\n focusLast,\n setOrientation,\n } satisfies NgpNavigationMenuContentState;\n },\n);\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input } from '@angular/core';\nimport { NgpOrientation } from 'ng-primitives/common';\nimport { ngpRovingFocusGroup, provideRovingFocusGroupState } from 'ng-primitives/roving-focus';\nimport { injectNavigationMenuConfig } from '../config/navigation-menu-config';\nimport {\n ngpNavigationMenuContent,\n provideNavigationMenuContentState,\n} from './navigation-menu-content-state';\n\n/**\n * The `NgpNavigationMenuContent` directive is the content panel displayed when a trigger is activated.\n * It has its own roving focus group for keyboard navigation within the content.\n */\n@Directive({\n selector: '[ngpNavigationMenuContent]',\n exportAs: 'ngpNavigationMenuContent',\n providers: [\n provideNavigationMenuContentState(),\n provideRovingFocusGroupState({ inherit: false }),\n ],\n host: {\n 'data-overlay': '',\n },\n})\nexport class NgpNavigationMenuContent {\n /**\n * Access the global navigation menu configuration.\n */\n private readonly config = injectNavigationMenuConfig();\n\n /**\n * The orientation for keyboard navigation within the content.\n * Use 'vertical' for list layouts (default), 'horizontal' for grid layouts.\n * @default 'vertical'\n */\n readonly orientation = input<NgpOrientation>('vertical', {\n alias: 'ngpNavigationMenuContentOrientation',\n });\n\n /**\n * Whether focus should wrap around when reaching the end of the content.\n * @default true\n */\n readonly wrap = input<boolean, BooleanInput>(this.config.wrap, {\n alias: 'ngpNavigationMenuContentWrap',\n transform: booleanAttribute,\n });\n\n private readonly state = ngpNavigationMenuContent({\n orientation: this.orientation,\n });\n\n constructor() {\n // Create roving focus group for content items\n ngpRovingFocusGroup({\n orientation: this.orientation,\n wrap: this.wrap,\n inherit: false,\n });\n }\n\n /**\n * Close the content panel.\n */\n close(): void {\n this.state.close();\n }\n\n /**\n * Focus the first focusable item in the content.\n */\n focusFirst(): void {\n this.state.focusFirst();\n }\n\n /**\n * Focus the last focusable item in the content.\n */\n focusLast(): void {\n this.state.focusLast();\n }\n}\n","import { signal, Signal } from '@angular/core';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { attrBinding, controlled, createPrimitive, dataBinding } from 'ng-primitives/state';\n\n/**\n * The state for the NgpNavigationMenuContentItem directive.\n */\nexport interface NgpNavigationMenuContentItemState {\n /**\n * Whether the item is disabled.\n */\n readonly disabled: Signal<boolean>;\n\n /**\n * Set whether the item is disabled.\n * @param isDisabled Whether the item is disabled\n */\n setDisabled(isDisabled: boolean): void;\n}\n\n/**\n * The props for the NgpNavigationMenuContentItem state.\n */\nexport interface NgpNavigationMenuContentItemProps {\n /**\n * Whether the item is disabled.\n */\n readonly disabled?: Signal<boolean>;\n}\n\nexport const [\n NgpNavigationMenuContentItemStateToken,\n ngpNavigationMenuContentItem,\n injectNavigationMenuContentItemState,\n provideNavigationMenuContentItemState,\n] = createPrimitive(\n 'NgpNavigationMenuContentItem',\n ({ disabled: _disabled = signal(false) }: NgpNavigationMenuContentItemProps) => {\n const element = injectElementRef();\n\n // Controlled properties\n const disabled = controlled(_disabled);\n\n // Host bindings\n attrBinding(element, 'role', 'menuitem');\n dataBinding(element, 'data-disabled', disabled);\n\n function setDisabled(isDisabled: boolean): void {\n disabled.set(isDisabled);\n }\n\n return {\n disabled: disabled.asReadonly(),\n setDisabled,\n } satisfies NgpNavigationMenuContentItemState;\n },\n);\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input } from '@angular/core';\nimport { ngpRovingFocusItem, provideRovingFocusItemState } from 'ng-primitives/roving-focus';\nimport {\n ngpNavigationMenuContentItem,\n provideNavigationMenuContentItemState,\n} from './navigation-menu-content-item-state';\n\n/**\n * The `NgpNavigationMenuContentItem` directive represents an item inside navigation menu content.\n * It participates in roving focus navigation within the content panel.\n */\n@Directive({\n selector: '[ngpNavigationMenuContentItem]',\n exportAs: 'ngpNavigationMenuContentItem',\n providers: [provideNavigationMenuContentItemState(), provideRovingFocusItemState()],\n})\nexport class NgpNavigationMenuContentItem {\n /**\n * Whether the item is disabled.\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpNavigationMenuContentItemDisabled',\n transform: booleanAttribute,\n });\n\n constructor() {\n ngpNavigationMenuContentItem({ disabled: this.disabled });\n ngpRovingFocusItem({ disabled: this.disabled });\n }\n}\n","import { Directive, input } from '@angular/core';\nimport { uniqueId } from 'ng-primitives/utils';\nimport {\n ngpNavigationMenuItem,\n provideNavigationMenuItemState,\n} from './navigation-menu-item-state';\n\n/**\n * The `NgpNavigationMenuItem` directive is a container for a menu trigger and its content.\n * It manages the open/close state for this specific menu item.\n */\n@Directive({\n selector: '[ngpNavigationMenuItem]',\n exportAs: 'ngpNavigationMenuItem',\n providers: [provideNavigationMenuItemState({ inherit: false })],\n})\nexport class NgpNavigationMenuItem {\n /**\n * A unique value identifying this menu item.\n * Used to track which item is currently active.\n */\n readonly value = input<string>(uniqueId('navigation-menu-item'), {\n alias: 'ngpNavigationMenuItemValue',\n });\n\n private readonly state = ngpNavigationMenuItem({\n value: this.value,\n });\n\n /**\n * Whether this menu item is currently active (open).\n */\n readonly active = this.state.active;\n\n /**\n * Show the content for this menu item.\n */\n show(): void {\n this.state.show();\n }\n\n /**\n * Hide the content for this menu item.\n */\n hide(): void {\n this.state.hide();\n }\n}\n","import { signal, Signal } from '@angular/core';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport {\n attrBinding,\n controlled,\n createPrimitive,\n dataBinding,\n listener,\n} from 'ng-primitives/state';\n\n/**\n * The state for the NgpNavigationMenuLink directive.\n */\nexport interface NgpNavigationMenuLinkState {\n /**\n * Whether the link is disabled.\n */\n readonly disabled: Signal<boolean>;\n\n /**\n * Whether the link is active (current page).\n */\n readonly active: Signal<boolean>;\n\n /**\n * Set whether the link is disabled.\n * @param isDisabled Whether the link is disabled\n */\n setDisabled(isDisabled: boolean): void;\n\n /**\n * Set whether the link is active.\n * @param isActive Whether the link is active\n */\n setActive(isActive: boolean): void;\n}\n\n/**\n * The props for the NgpNavigationMenuLink state.\n */\nexport interface NgpNavigationMenuLinkProps {\n /**\n * Whether the link is disabled.\n */\n readonly disabled?: Signal<boolean>;\n\n /**\n * Whether the link is active (current page).\n */\n readonly active?: Signal<boolean>;\n}\n\nexport const [\n NgpNavigationMenuLinkStateToken,\n ngpNavigationMenuLink,\n injectNavigationMenuLinkState,\n provideNavigationMenuLinkState,\n] = createPrimitive(\n 'NgpNavigationMenuLink',\n ({\n disabled: _disabled = signal(false),\n active: _active = signal(false),\n }: NgpNavigationMenuLinkProps) => {\n const element = injectElementRef();\n\n // Controlled properties\n const disabled = controlled(_disabled);\n const active = controlled(_active);\n\n // Host bindings\n attrBinding(element, 'aria-current', () => (active() ? 'page' : null));\n attrBinding(element, 'aria-disabled', () => (disabled() ? 'true' : null));\n dataBinding(element, 'data-active', active);\n dataBinding(element, 'data-disabled', disabled);\n\n // Prevent click when disabled\n listener(element, 'click', (event: MouseEvent) => {\n if (disabled()) {\n event.preventDefault();\n event.stopPropagation();\n }\n });\n\n function setDisabled(isDisabled: boolean): void {\n disabled.set(isDisabled);\n }\n\n function setActive(isActive: boolean): void {\n active.set(isActive);\n }\n\n return {\n disabled: disabled.asReadonly(),\n active: active.asReadonly(),\n setDisabled,\n setActive,\n } satisfies NgpNavigationMenuLinkState;\n },\n);\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input } from '@angular/core';\nimport { ngpRovingFocusItem, provideRovingFocusItemState } from 'ng-primitives/roving-focus';\nimport {\n ngpNavigationMenuLink,\n provideNavigationMenuLinkState,\n} from './navigation-menu-link-state';\n\n/**\n * The `NgpNavigationMenuLink` directive is used for standalone navigation links\n * within the navigation menu list (links without dropdown content).\n */\n@Directive({\n selector: '[ngpNavigationMenuLink]',\n exportAs: 'ngpNavigationMenuLink',\n providers: [provideNavigationMenuLinkState(), provideRovingFocusItemState()],\n})\nexport class NgpNavigationMenuLink {\n /**\n * Whether the link is disabled.\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpNavigationMenuLinkDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * Whether the link is active (represents the current page).\n * @default false\n */\n readonly active = input<boolean, BooleanInput>(false, {\n alias: 'ngpNavigationMenuLinkActive',\n transform: booleanAttribute,\n });\n\n private readonly state = ngpNavigationMenuLink({\n disabled: this.disabled,\n active: this.active,\n });\n\n constructor() {\n ngpRovingFocusItem({\n disabled: this.disabled,\n });\n }\n}\n","import { injectElementRef } from 'ng-primitives/internal';\nimport { attrBinding, createPrimitive, dataBinding } from 'ng-primitives/state';\nimport { injectNavigationMenuState } from '../navigation-menu/navigation-menu-state';\n\n/**\n * The state for the NgpNavigationMenuList directive.\n */\nexport interface NgpNavigationMenuListState {\n // No public methods exposed for navigation menu list\n}\n\n/**\n * The props for the NgpNavigationMenuList state.\n */\nexport interface NgpNavigationMenuListProps {\n // No props for navigation menu list\n}\n\nexport const [\n NgpNavigationMenuListStateToken,\n ngpNavigationMenuList,\n injectNavigationMenuListState,\n provideNavigationMenuListState,\n] = createPrimitive('NgpNavigationMenuList', ({}: NgpNavigationMenuListProps) => {\n const element = injectElementRef();\n const navigationMenuState = injectNavigationMenuState();\n\n // Host bindings\n attrBinding(element, 'role', 'menubar');\n attrBinding(element, 'aria-orientation', () => navigationMenuState().orientation());\n dataBinding(element, 'data-orientation', () => navigationMenuState().orientation());\n\n return {} satisfies NgpNavigationMenuListState;\n});\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input } from '@angular/core';\nimport { ngpRovingFocusGroup, provideRovingFocusGroupState } from 'ng-primitives/roving-focus';\nimport { injectNavigationMenuConfig } from '../config/navigation-menu-config';\nimport { injectNavigationMenuState } from '../navigation-menu/navigation-menu-state';\nimport {\n ngpNavigationMenuList,\n provideNavigationMenuListState,\n} from './navigation-menu-list-state';\n\n/**\n * The `NgpNavigationMenuList` directive is a container for navigation menu items.\n * It manages roving focus between menu triggers and links.\n */\n@Directive({\n selector: '[ngpNavigationMenuList]',\n exportAs: 'ngpNavigationMenuList',\n providers: [provideNavigationMenuListState(), provideRovingFocusGroupState({ inherit: false })],\n})\nexport class NgpNavigationMenuList {\n /**\n * Access the global navigation menu configuration.\n */\n private readonly config = injectNavigationMenuConfig();\n\n /**\n * Access the parent navigation menu state.\n */\n private readonly navigationMenuState = injectNavigationMenuState();\n\n /**\n * Whether focus should wrap around when reaching the end of the list.\n * @default true\n */\n readonly wrap = input<boolean, BooleanInput>(this.config.wrap, {\n alias: 'ngpNavigationMenuListWrap',\n transform: booleanAttribute,\n });\n\n constructor() {\n ngpNavigationMenuList({});\n ngpRovingFocusGroup({\n orientation: this.navigationMenuState().orientation,\n wrap: this.wrap,\n });\n }\n}\n","import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input, numberAttribute } from '@angular/core';\nimport { Placement } from '@floating-ui/dom';\nimport {\n coerceFlip,\n coerceOffset,\n coerceShift,\n NgpFlip,\n NgpFlipInput,\n NgpOffset,\n NgpOffsetInput,\n NgpOverlayContent,\n NgpShift,\n NgpShiftInput,\n} from 'ng-primitives/portal';\nimport { ngpRovingFocusItem, provideRovingFocusItemState } from 'ng-primitives/roving-focus';\nimport { injectNavigationMenuConfig } from '../config/navigation-menu-config';\nimport {\n ngpNavigationMenuTrigger,\n provideNavigationMenuTriggerState,\n} from './navigation-menu-trigger-state';\n\n/**\n * The `NgpNavigationMenuTrigger` directive is a button that opens navigation menu content.\n * It supports hover and focus interactions with configurable delays.\n */\n@Directive({\n selector: '[ngpNavigationMenuTrigger]',\n exportAs: 'ngpNavigationMenuTrigger',\n providers: [provideNavigationMenuTriggerState(), provideRovingFocusItemState()],\n host: {\n type: 'button',\n },\n})\nexport class NgpNavigationMenuTrigger {\n /**\n * Access the global navigation menu configuration.\n */\n private readonly config = injectNavigationMenuConfig();\n\n /**\n * The content template or component to display.\n */\n readonly content = input<NgpOverlayContent<unknown>>(undefined, {\n alias: 'ngpNavigationMenuTrigger',\n });\n\n /**\n * Whether the trigger is disabled.\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpNavigationMenuTriggerDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * The placement of the content relative to the trigger.\n * @default 'bottom-start'\n */\n readonly placement = input<Placement>(this.config.placement, {\n alias: 'ngpNavigationMenuTriggerPlacement',\n });\n\n /**\n * The offset of the content relative to the trigger.\n * @default 4\n */\n readonly offset = input<NgpOffset, NgpOffsetInput>(this.config.offset, {\n alias: 'ngpNavigationMenuTriggerOffset',\n transform: coerceOffset,\n });\n\n /**\n * Whether the content should flip when there is not enough space.\n * Can be a boolean to enable/disable, or an object with padding and fallbackPlacements options.\n * @default true\n */\n readonly flip = input<NgpFlip, NgpFlipInput>(this.config.flip, {\n alias: 'ngpNavigationMenuTriggerFlip',\n transform: coerceFlip,\n });\n\n /**\n * Configure shift behavior to keep the content in view.\n * @default undefined\n */\n readonly shift = input<NgpShift, NgpShiftInput>(this.config.shift, {\n alias: 'ngpNavigationMenuTriggerShift',\n transform: coerceShift,\n });\n\n /**\n * The container for the content.\n * @default 'body'\n */\n readonly container = input<HTMLElement | string | null>(this.config.container, {\n alias: 'ngpNavigationMenuTriggerContainer',\n });\n\n /**\n * The cooldown duration in milliseconds.\n * When moving from one navigation menu item to another within this duration,\n * the showDelay is skipped for the new item.\n * @default 300\n */\n readonly cooldown = input<number, NumberInput>(this.config.cooldown, {\n alias: 'ngpNavigationMenuTriggerCooldown',\n transform: numberAttribute,\n });\n\n private readonly state = ngpNavigationMenuTrigger({\n content: this.content,\n disabled: this.disabled,\n placement: this.placement,\n offset: this.offset,\n flip: this.flip,\n shift: this.shift,\n container: this.container,\n cooldown: this.cooldown,\n });\n\n /**\n * Whether the content is currently open.\n */\n readonly open = this.state.open;\n\n constructor() {\n ngpRovingFocusItem({\n disabled: this.disabled,\n });\n }\n\n /**\n * Show the content.\n */\n show(): void {\n this.state.show();\n }\n\n /**\n * Hide the content.\n */\n hide(): void {\n this.state.hide();\n }\n}\n","import { NumberInput } from '@angular/cdk/coercion';\nimport { Directive, input, numberAttribute, output } from '@angular/core';\nimport { NgpOrientation } from 'ng-primitives/common';\nimport { injectNavigationMenuConfig } from '../config/navigation-menu-config';\nimport { ngpNavigationMenu, provideNavigationMenuState } from './navigation-menu-state';\n\n/**\n * The `NgpNavigationMenu` directive is the root container for a navigation menu.\n * Apply this to a `<nav>` element for proper semantics.\n */\n@Directive({\n selector: '[ngpNavigationMenu]',\n exportAs: 'ngpNavigationMenu',\n providers: [provideNavigationMenuState({ inherit: false })],\n host: {\n role: 'navigation',\n },\n})\nexport class NgpNavigationMenu {\n /**\n * Access the global navigation menu configuration.\n */\n private readonly config = injectNavigationMenuConfig();\n\n /**\n * The orientation of the navigation menu.\n * @default 'horizontal'\n */\n readonly orientation = input<NgpOrientation>(this.config.orientation, {\n alias: 'ngpNavigationMenuOrientation',\n });\n\n /**\n * The delay in milliseconds before showing content on hover.\n * @default 200\n */\n readonly showDelay = input<number, NumberInput>(this.config.showDelay, {\n alias: 'ngpNavigationMenuShowDelay',\n transform: numberAttribute,\n });\n\n /**\n * The delay in milliseconds before hiding content.\n * @default 150\n */\n readonly hideDelay = input<number, NumberInput>(this.config.hideDelay, {\n alias: 'ngpNavigationMenuHideDelay',\n transform: numberAttribute,\n });\n\n /**\n * The currently active (open) item value.\n */\n readonly value = input<string | null>(null, {\n alias: 'ngpNavigationMenuValue',\n });\n\n /**\n * Emits when the active item changes.\n */\n readonly valueChange = output<string | null>({\n alias: 'ngpNavigationMenuValueChange',\n });\n\n private readonly state = ngpNavigationMenu({\n orientation: this.orientation,\n showDelay: this.showDelay,\n hideDelay: this.hideDelay,\n value: this.value,\n onValueChange: value => this.valueChange.emit(value),\n });\n\n /**\n * Set the active item programmatically.\n * @param value The item value to activate (or null to close all)\n */\n setActiveItem(value: string | null): void {\n this.state.setActiveItem(value);\n }\n\n /**\n * Set the orientation programmatically.\n * @param orientation The orientation\n */\n setOrientation(orientation: NgpOrientation): void {\n this.state.setOrientation(orientation);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-primitives-navigation-menu.mjs","sources":["../../../../packages/ng-primitives/navigation-menu/src/config/navigation-menu-config.ts","../../../../packages/ng-primitives/navigation-menu/src/navigation-menu/navigation-menu-state.ts","../../../../packages/ng-primitives/navigation-menu/src/navigation-menu-item/navigation-menu-item-state.ts","../../../../packages/ng-primitives/navigation-menu/src/navigation-menu-trigger/navigation-menu-trigger-state.ts","../../../../packages/ng-primitives/navigation-menu/src/navigation-menu-content/navigation-menu-content-state.ts","../../../../packages/ng-primitives/navigation-menu/src/navigation-menu-content/navigation-menu-content.ts","../../../../packages/ng-primitives/navigation-menu/src/navigation-menu-content-item/navigation-menu-content-item-state.ts","../../../../packages/ng-primitives/navigation-menu/src/navigation-menu-content-item/navigation-menu-content-item.ts","../../../../packages/ng-primitives/navigation-menu/src/navigation-menu-item/navigation-menu-item.ts","../../../../packages/ng-primitives/navigation-menu/src/navigation-menu-link/navigation-menu-link-state.ts","../../../../packages/ng-primitives/navigation-menu/src/navigation-menu-link/navigation-menu-link.ts","../../../../packages/ng-primitives/navigation-menu/src/navigation-menu-list/navigation-menu-list-state.ts","../../../../packages/ng-primitives/navigation-menu/src/navigation-menu-list/navigation-menu-list.ts","../../../../packages/ng-primitives/navigation-menu/src/navigation-menu-trigger/navigation-menu-trigger.ts","../../../../packages/ng-primitives/navigation-menu/src/navigation-menu/navigation-menu.ts","../../../../packages/ng-primitives/navigation-menu/src/ng-primitives-navigation-menu.ts"],"sourcesContent":["import { InjectionToken, Provider, inject } from '@angular/core';\nimport { type Placement } from '@floating-ui/dom';\nimport { NgpOrientation } from 'ng-primitives/common';\nimport { NgpFlip, NgpOffset, NgpShift } from 'ng-primitives/portal';\n\nexport interface NgpNavigationMenuConfig {\n /**\n * Define the orientation of the navigation menu.\n * @default 'horizontal'\n */\n orientation: NgpOrientation;\n\n /**\n * Define the delay in milliseconds before the content is shown.\n * @default 200\n */\n showDelay: number;\n\n /**\n * Define the delay in milliseconds before the content is hidden.\n * @default 150\n */\n hideDelay: number;\n\n /**\n * Define the placement of the content relative to the trigger.\n * @default 'bottom-start'\n */\n placement: Placement;\n\n /**\n * Define the offset of the content relative to the trigger.\n * Can be a number (applies to mainAxis) or an object with mainAxis, crossAxis, and alignmentAxis.\n * @default 4\n */\n offset: NgpOffset;\n\n /**\n * Define whether the content should flip when there is not enough space.\n * Can be a boolean to enable/disable, or an object with padding and fallbackPlacements options.\n * @default true\n */\n flip: NgpFlip;\n\n /**\n * Configure shift behavior to keep the content in view.\n * Can be a boolean to enable/disable, or an object with padding and limiter options.\n * @default undefined (enabled by default in overlay)\n */\n shift: NgpShift;\n\n /**\n * Define the container element or selector in to which the content should be attached.\n * @default 'body'\n */\n container: HTMLElement | string | null;\n\n /**\n * Whether focus should wrap around when reaching the end of the list.\n * @default true\n */\n wrap: boolean;\n\n /**\n * Define the cooldown duration in milliseconds.\n * When moving from one navigation menu item to another within this duration,\n * the showDelay is skipped for the new item.\n * @default 300\n */\n cooldown: number;\n}\n\nexport const defaultNavigationMenuConfig: NgpNavigationMenuConfig = {\n orientation: 'horizontal',\n showDelay: 200,\n hideDelay: 150,\n placement: 'bottom-start',\n offset: 4,\n flip: true,\n shift: undefined,\n container: 'body',\n wrap: true,\n cooldown: 300,\n};\n\nexport const NgpNavigationMenuConfigToken = new InjectionToken<NgpNavigationMenuConfig>(\n 'NgpNavigationMenuConfigToken',\n);\n\n/**\n * Provide the default NavigationMenu configuration\n * @param config The NavigationMenu configuration\n * @returns The provider\n */\nexport function provideNavigationMenuConfig(config: Partial<NgpNavigationMenuConfig>): Provider[] {\n return [\n {\n provide: NgpNavigationMenuConfigToken,\n useValue: { ...defaultNavigationMenuConfig, ...config },\n },\n ];\n}\n\n/**\n * Inject the NavigationMenu configuration\n * @returns The global NavigationMenu configuration\n */\nexport function injectNavigationMenuConfig(): NgpNavigationMenuConfig {\n return inject(NgpNavigationMenuConfigToken, { optional: true }) ?? defaultNavigationMenuConfig;\n}\n","import { computed, signal, Signal } from '@angular/core';\nimport { NgpOrientation } from 'ng-primitives/common';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { controlled, createPrimitive, dataBinding } from 'ng-primitives/state';\n\nexport interface NgpNavigationMenuState {\n /**\n * The orientation of the navigation menu.\n */\n readonly orientation: Signal<NgpOrientation>;\n\n /**\n * The delay in milliseconds before showing content.\n */\n readonly showDelay: Signal<number>;\n\n /**\n * The delay in milliseconds before hiding content.\n */\n readonly hideDelay: Signal<number>;\n\n /**\n * The currently active item value (open menu item).\n */\n readonly activeItem: Signal<string | null>;\n\n /**\n * Set the active item by value.\n * @param value The item value to activate (or null to deactivate)\n */\n setActiveItem(value: string | null): void;\n\n /**\n * Set the orientation of the navigation menu.\n * @param orientation The orientation\n */\n setOrientation(orientation: NgpOrientation): void;\n\n /**\n * Set the show delay.\n * @param delay The delay in milliseconds\n */\n setShowDelay(delay: number): void;\n\n /**\n * Set the hide delay.\n * @param delay The delay in milliseconds\n */\n setHideDelay(delay: number): void;\n}\n\nexport interface NgpNavigationMenuProps {\n /**\n * The orientation of the navigation menu.\n */\n readonly orientation?: Signal<NgpOrientation>;\n\n /**\n * The delay in milliseconds before showing content.\n */\n readonly showDelay?: Signal<number>;\n\n /**\n * The delay in milliseconds before hiding content.\n */\n readonly hideDelay?: Signal<number>;\n\n /**\n * The initially active item value.\n */\n readonly value?: Signal<string | null>;\n\n /**\n * Callback when the active item changes.\n */\n readonly onValueChange?: (value: string | null) => void;\n}\n\nexport const [\n NgpNavigationMenuStateToken,\n ngpNavigationMenu,\n injectNavigationMenuState,\n provideNavigationMenuState,\n] = createPrimitive(\n 'NgpNavigationMenu',\n ({\n orientation: _orientation = signal('horizontal'),\n showDelay: _showDelay = signal(200),\n hideDelay: _hideDelay = signal(150),\n value: _value = signal(null),\n onValueChange,\n }: NgpNavigationMenuProps) => {\n const element = injectElementRef();\n\n // Controlled properties\n const orientation = controlled(_orientation);\n const showDelay = controlled(_showDelay);\n const hideDelay = controlled(_hideDelay);\n const activeItem = controlled(_value);\n\n // Host bindings\n dataBinding(element, 'data-orientation', orientation);\n\n // Methods\n function setActiveItem(value: string | null): void {\n if (activeItem() === value) {\n return;\n }\n activeItem.set(value);\n onValueChange?.(value);\n }\n\n function setOrientation(newOrientation: NgpOrientation): void {\n orientation.set(newOrientation);\n }\n\n function setShowDelay(delay: number): void {\n showDelay.set(delay);\n }\n\n function setHideDelay(delay: number): void {\n hideDelay.set(delay);\n }\n\n return {\n orientation: orientation.asReadonly(),\n showDelay: showDelay.asReadonly(),\n hideDelay: hideDelay.asReadonly(),\n activeItem: computed(() => activeItem()),\n setActiveItem,\n setOrientation,\n setShowDelay,\n setHideDelay,\n } satisfies NgpNavigationMenuState;\n },\n);\n","import { computed, signal, Signal } from '@angular/core';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { controlled, createPrimitive, dataBinding } from 'ng-primitives/state';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectNavigationMenuState } from '../navigation-menu/navigation-menu-state';\n\n/**\n * The state for the NgpNavigationMenuItem directive.\n */\nexport interface NgpNavigationMenuItemState {\n /**\n * The unique value identifying this menu item.\n */\n readonly value: Signal<string>;\n\n /**\n * Whether this menu item is currently active (open).\n */\n readonly active: Signal<boolean>;\n\n /**\n * Show the content for this menu item.\n */\n show(): void;\n\n /**\n * Hide the content for this menu item.\n */\n hide(): void;\n\n /**\n * Set the value for this menu item.\n * @param value The new value\n */\n setValue(value: string): void;\n}\n\n/**\n * The props for the NgpNavigationMenuItem state.\n */\nexport interface NgpNavigationMenuItemProps {\n /**\n * The unique value identifying this menu item.\n */\n readonly value?: Signal<string>;\n}\n\nexport const [\n NgpNavigationMenuItemStateToken,\n ngpNavigationMenuItem,\n injectNavigationMenuItemState,\n provideNavigationMenuItemState,\n] = createPrimitive(\n 'NgpNavigationMenuItem',\n ({ value: _value = signal(uniqueId('navigation-menu-item')) }: NgpNavigationMenuItemProps) => {\n const element = injectElementRef();\n const navigationMenuState = injectNavigationMenuState();\n\n // Controlled properties\n const value = controlled(_value);\n\n // Computed state\n const active = computed(() => navigationMenuState().activeItem() === value());\n\n // Host bindings\n dataBinding(element, 'data-active', active);\n\n // Methods\n function show(): void {\n navigationMenuState().setActiveItem(value());\n }\n\n function hide(): void {\n if (active()) {\n navigationMenuState().setActiveItem(null);\n }\n }\n\n function setValue(newValue: string): void {\n value.set(newValue);\n }\n\n return {\n value: value.asReadonly(),\n active,\n show,\n hide,\n setValue,\n } satisfies NgpNavigationMenuItemState;\n },\n);\n","import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { computed, inject, Injector, signal, Signal, ViewContainerRef } from '@angular/core';\nimport { Placement } from '@floating-ui/dom';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport {\n createOverlay,\n NgpFlip,\n NgpOffset,\n NgpOverlay,\n NgpOverlayConfig,\n NgpOverlayContent,\n NgpShift,\n} from 'ng-primitives/portal';\nimport {\n attrBinding,\n controlled,\n createPrimitive,\n dataBinding,\n listener,\n onDestroy,\n} from 'ng-primitives/state';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectNavigationMenuItemState } from '../navigation-menu-item/navigation-menu-item-state';\nimport { injectNavigationMenuState } from '../navigation-menu/navigation-menu-state';\n\nexport interface NgpNavigationMenuTriggerState {\n /**\n * The content template or component.\n */\n readonly content: Signal<NgpOverlayContent<unknown> | undefined>;\n\n /**\n * Whether the trigger is disabled.\n */\n readonly disabled: Signal<boolean>;\n\n /**\n * The placement of the content.\n */\n readonly placement: Signal<Placement>;\n\n /**\n * The offset of the content.\n */\n readonly offset: Signal<NgpOffset>;\n\n /**\n * Whether the content should flip when there is not enough space.\n */\n readonly flip: Signal<NgpFlip>;\n\n /**\n * The shift configuration for the content.\n */\n readonly shift: Signal<NgpShift>;\n\n /**\n * The container for the content.\n */\n readonly container: Signal<HTMLElement | string | null>;\n\n /**\n * Whether the content is currently open.\n */\n readonly open: Signal<boolean>;\n\n /**\n * The unique ID for accessibility.\n */\n readonly id: string;\n\n /**\n * The ID of the associated content panel.\n */\n readonly contentId: Signal<string | undefined>;\n\n /**\n * Show the content.\n */\n show(): void;\n\n /**\n * Hide the content.\n * @param origin The focus origin\n */\n hide(origin?: FocusOrigin): void;\n\n /**\n * Focus the first item in the content.\n */\n focusFirstContentItem(): void;\n\n /**\n * Focus the last item in the content.\n */\n focusLastContentItem(): void;\n\n /**\n * Set the content ID.\n * @param id The content ID\n */\n setContentId(id: string): void;\n\n /**\n * Update pointer over content state.\n * @param isOver Whether pointer is over content\n */\n setPointerOverContent(isOver: boolean): void;\n\n /**\n * Update focus inside content state.\n * @param isFocused Whether focus is inside the content\n */\n setFocusInsideContent(isFocused: boolean): void;\n\n /**\n * Register focus functions from content.\n * @param focusFirst Function to focus first item\n * @param focusLast Function to focus last item\n */\n registerContentFocusFunctions(focusFirst: () => void, focusLast: () => void): void;\n}\n\nexport interface NgpNavigationMenuTriggerProps {\n /**\n * The content template or component.\n */\n readonly content?: Signal<NgpOverlayContent<unknown> | undefined>;\n\n /**\n * Whether the trigger is disabled.\n */\n readonly disabled?: Signal<boolean>;\n\n /**\n * The placement of the content.\n */\n readonly placement?: Signal<Placement>;\n\n /**\n * The offset of the content.\n */\n readonly offset?: Signal<NgpOffset>;\n\n /**\n * Whether the content should flip.\n */\n readonly flip?: Signal<NgpFlip>;\n\n /**\n * The shift configuration.\n */\n readonly shift?: Signal<NgpShift>;\n\n /**\n * The container for the content.\n */\n readonly container?: Signal<HTMLElement | string | null>;\n\n /**\n * The cooldown duration in milliseconds.\n */\n readonly cooldown?: Signal<number>;\n}\n\nexport const [\n NgpNavigationMenuTriggerStateToken,\n ngpNavigationMenuTrigger,\n injectNavigationMenuTriggerState,\n provideNavigationMenuTriggerState,\n] = createPrimitive(\n 'NgpNavigationMenuTrigger',\n ({\n content: _content = signal(undefined),\n disabled: _disabled = signal(false),\n placement: _placement = signal('bottom-start'),\n offset: _offset = signal(4),\n flip: _flip = signal(true),\n shift: _shift = signal(undefined),\n container: _container = signal('body'),\n cooldown: _cooldown = signal(300),\n }: NgpNavigationMenuTriggerProps) => {\n const element = injectElementRef();\n const injector = inject(Injector);\n const viewContainerRef = inject(ViewContainerRef);\n const focusMonitor = inject(FocusMonitor);\n const directionality = inject(Directionality);\n const navigationMenuState = injectNavigationMenuState();\n const navigationMenuItemState = injectNavigationMenuItemState();\n\n // Controlled properties - use asReadonly() for public interface\n const content = controlled(_content);\n const disabled = controlled(_disabled);\n const placement = controlled(_placement);\n const offset = controlled(_offset);\n const flip = controlled(_flip);\n const shift = controlled(_shift);\n const container = controlled(_container);\n const cooldown = controlled(_cooldown);\n\n // Internal state\n const id = uniqueId('navigation-menu-trigger');\n const contentId = signal<string | undefined>(undefined);\n const overlay = signal<NgpOverlay<unknown> | null>(null);\n const open = computed(() => navigationMenuItemState().active());\n let showTimeout: ReturnType<typeof setTimeout> | null = null;\n let hideTimeout: ReturnType<typeof setTimeout> | null = null;\n let isPointerOverTrigger = false;\n let isPointerOverContent = false;\n let isFocusInsideContent = false;\n let contentFocusFirstFn: (() => void) | null = null;\n let contentFocusLastFn: (() => void) | null = null;\n let wasOpen = false;\n\n // Host bindings\n attrBinding(element, 'id', id);\n attrBinding(element, 'aria-haspopup', 'menu');\n attrBinding(element, 'aria-expanded', open);\n attrBinding(element, 'aria-controls', () => contentId() ?? null);\n dataBinding(element, 'data-open', open);\n dataBinding(element, 'data-disabled', disabled);\n\n // Event listeners\n listener(element, 'pointerenter', onPointerEnter);\n listener(element, 'pointerleave', onPointerLeave);\n listener(element, 'focus', onFocus);\n listener(element, 'blur', onBlur);\n listener(element, 'click', onClick);\n listener(element, 'keydown', onKeydown);\n\n // Cleanup on destroy\n onDestroy(() => {\n clearShowTimeout();\n clearHideTimeout();\n overlay()?.destroy();\n contentFocusFirstFn = null;\n contentFocusLastFn = null;\n });\n\n // Methods\n function onPointerEnter(event: PointerEvent): void {\n if (disabled() || event.pointerType === 'touch') {\n return;\n }\n isPointerOverTrigger = true;\n clearHideTimeout();\n scheduleShow();\n }\n\n function onPointerLeave(event: PointerEvent): void {\n if (disabled() || event.pointerType === 'touch') {\n return;\n }\n isPointerOverTrigger = false;\n clearShowTimeout();\n scheduleHide();\n }\n\n function onFocus(): void {\n if (disabled()) {\n return;\n }\n // Only clear hide timeout on focus, don't show\n // Menu should open on hover or enter key, not on focus alone\n clearHideTimeout();\n }\n\n function onBlur(): void {\n if (disabled()) {\n return;\n }\n // Don't hide if focus is moving to the content\n scheduleHide();\n }\n\n function onClick(): void {\n if (disabled()) {\n return;\n }\n // For touch/click, toggle immediately\n if (open()) {\n hide('mouse');\n } else {\n show();\n }\n }\n\n function onKeydown(event: KeyboardEvent): void {\n if (disabled()) {\n return;\n }\n\n const orientation = navigationMenuState().orientation();\n const isRtl = directionality.value === 'rtl';\n\n // Determine which arrow key opens content based on orientation\n const openKey =\n orientation === 'horizontal' ? 'ArrowDown' : isRtl ? 'ArrowLeft' : 'ArrowRight';\n const openLastKey =\n orientation === 'horizontal' ? 'ArrowUp' : isRtl ? 'ArrowRight' : 'ArrowLeft';\n\n if (event.key === openKey) {\n event.preventDefault();\n if (!open()) {\n // Wait for overlay to show, then focus first item (has built-in retry)\n show().then(() => focusFirstContentItem());\n } else {\n // Already open, just focus first item\n focusFirstContentItem();\n }\n } else if (event.key === openLastKey && open()) {\n event.preventDefault();\n // Focus last item in content\n focusLastContentItem();\n } else if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n if (open()) {\n focusFirstContentItem();\n } else {\n // Wait for overlay to show, then focus first item (has built-in retry)\n show().then(() => focusFirstContentItem());\n }\n } else if (event.key === 'Escape' && open()) {\n event.preventDefault();\n hide('keyboard');\n }\n }\n\n function scheduleShow(): void {\n clearShowTimeout();\n const delay = navigationMenuState().showDelay();\n\n if (delay === 0) {\n show();\n return;\n }\n\n showTimeout = setTimeout(() => {\n show();\n }, delay);\n }\n\n function scheduleHide(): void {\n clearHideTimeout();\n const delay = navigationMenuState().hideDelay();\n\n if (delay === 0) {\n hide();\n return;\n }\n\n hideTimeout = setTimeout(() => {\n // Only hide if pointer is not over trigger or content and focus is not inside content\n if (!isPointerOverTrigger && !isPointerOverContent && !isFocusInsideContent) {\n hide();\n }\n }, delay);\n }\n\n function clearShowTimeout(): void {\n if (showTimeout) {\n clearTimeout(showTimeout);\n showTimeout = null;\n }\n }\n\n function clearHideTimeout(): void {\n if (hideTimeout) {\n clearTimeout(hideTimeout);\n hideTimeout = null;\n }\n }\n\n function show(): Promise<void> {\n if (disabled()) {\n return Promise.resolve();\n }\n navigationMenuItemState().show();\n\n // Imperatively manage overlay - show it now\n return syncOverlayState(true);\n }\n\n function hide(origin: FocusOrigin = 'program'): void {\n navigationMenuItemState().hide();\n\n // Imperatively manage overlay - hide it now\n syncOverlayState(false);\n\n // If closing via keyboard, restore focus to trigger\n if (origin === 'keyboard') {\n focusMonitor.focusVia(element, 'keyboard');\n }\n }\n\n function syncOverlayState(shouldBeOpen: boolean): Promise<void> {\n if (shouldBeOpen && !wasOpen) {\n wasOpen = true;\n return showOverlay();\n } else if (!shouldBeOpen && wasOpen) {\n hideOverlay();\n wasOpen = false;\n }\n return Promise.resolve();\n }\n\n function showOverlay(): Promise<void> {\n if (!content()) {\n return Promise.resolve();\n }\n\n // Create overlay if needed\n if (!overlay()) {\n createOverlayInstance();\n }\n\n return overlay()?.show() ?? Promise.resolve();\n }\n\n function hideOverlay(): void {\n overlay()?.hide();\n }\n\n function createOverlayInstance(): void {\n const contentValue = content();\n\n if (!contentValue) {\n return;\n }\n\n const config: NgpOverlayConfig<unknown> = {\n content: contentValue,\n triggerElement: element.nativeElement,\n injector,\n viewContainerRef,\n container: container(),\n placement,\n offset: offset(),\n flip: flip(),\n shift: shift(),\n closeOnOutsideClick: true,\n closeOnEscape: true,\n restoreFocus: false, // We handle focus restoration ourselves\n overlayType: 'navigation-menu',\n cooldown: cooldown(),\n };\n\n overlay.set(createOverlay(config));\n }\n\n function focusFirstContentItem(retryCount = 0): void {\n if (contentFocusFirstFn) {\n contentFocusFirstFn();\n } else if (retryCount < 3) {\n // Focus function not registered yet, retry after a frame\n requestAnimationFrame(() => focusFirstContentItem(retryCount + 1));\n }\n }\n\n function focusLastContentItem(retryCount = 0): void {\n if (contentFocusLastFn) {\n contentFocusLastFn();\n } else if (retryCount < 3) {\n // Focus function not registered yet, retry after a frame\n requestAnimationFrame(() => focusLastContentItem(retryCount + 1));\n }\n }\n\n function setContentId(newId: string): void {\n contentId.set(newId);\n }\n\n function setPointerOverContent(isOver: boolean): void {\n isPointerOverContent = isOver;\n if (isOver) {\n clearHideTimeout();\n } else {\n scheduleHide();\n }\n }\n\n function setFocusInsideContent(isFocused: boolean): void {\n isFocusInsideContent = isFocused;\n if (isFocused) {\n clearHideTimeout();\n } else {\n scheduleHide();\n }\n }\n\n function registerContentFocusFunctions(focusFirst: () => void, focusLast: () => void): void {\n contentFocusFirstFn = focusFirst;\n contentFocusLastFn = focusLast;\n }\n\n return {\n content: content.asReadonly(),\n disabled: disabled.asReadonly(),\n placement: placement.asReadonly(),\n offset: offset.asReadonly(),\n flip: flip.asReadonly(),\n shift: shift.asReadonly(),\n container: container.asReadonly(),\n open,\n id,\n contentId: computed(() => contentId()),\n show,\n hide,\n focusFirstContentItem,\n focusLastContentItem,\n setContentId,\n setPointerOverContent,\n setFocusInsideContent,\n registerContentFocusFunctions,\n } satisfies NgpNavigationMenuTriggerState;\n },\n);\n","import { FocusOrigin } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { computed, inject, signal, Signal } from '@angular/core';\nimport { NgpOrientation } from 'ng-primitives/common';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { NgpOverlay } from 'ng-primitives/portal';\nimport { injectRovingFocusGroupState } from 'ng-primitives/roving-focus';\nimport {\n attrBinding,\n controlled,\n createPrimitive,\n dataBinding,\n listener,\n onDestroy,\n onMount,\n styleBinding,\n} from 'ng-primitives/state';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectNavigationMenuItemState } from '../navigation-menu-item/navigation-menu-item-state';\nimport { injectNavigationMenuTriggerState } from '../navigation-menu-trigger/navigation-menu-trigger-state';\nimport { injectNavigationMenuState } from '../navigation-menu/navigation-menu-state';\n\n/**\n * The state for the NgpNavigationMenuContent directive.\n */\nexport interface NgpNavigationMenuContentState {\n /**\n * The unique ID for this content panel.\n */\n readonly id: string;\n\n /**\n * Whether the content is currently open.\n */\n readonly open: Signal<boolean>;\n\n /**\n * The orientation for keyboard navigation within the content.\n */\n readonly orientation: Signal<NgpOrientation>;\n\n /**\n * Close the content.\n * @param origin The focus origin\n */\n close(origin?: FocusOrigin): void;\n\n /**\n * Focus the first focusable item in the content.\n */\n focusFirst(): void;\n\n /**\n * Focus the last focusable item in the content.\n */\n focusLast(): void;\n\n /**\n * Set the orientation for keyboard navigation within the content.\n * @param orientation The orientation ('vertical' for lists, 'horizontal' for grids)\n */\n setOrientation(orientation: NgpOrientation): void;\n}\n\n/**\n * The props for the NgpNavigationMenuContent state.\n */\nexport interface NgpNavigationMenuContentProps {\n /**\n * The orientation for keyboard navigation within the content.\n * Use 'horizontal' for grid layouts, 'vertical' for lists.\n */\n readonly orientation?: Signal<NgpOrientation>;\n}\n\nexport const [\n NgpNavigationMenuContentStateToken,\n ngpNavigationMenuContent,\n injectNavigationMenuContentState,\n provideNavigationMenuContentState,\n] = createPrimitive(\n 'NgpNavigationMenuContent',\n ({ orientation: _orientation = signal('vertical') }: NgpNavigationMenuContentProps) => {\n const element = injectElementRef();\n const directionality = inject(Directionality);\n const navigationMenuState = injectNavigationMenuState({ hoisted: true });\n const navigationMenuItemState = injectNavigationMenuItemState({ hoisted: true });\n const triggerState = injectNavigationMenuTriggerState({ hoisted: true });\n const rovingFocusGroup = injectRovingFocusGroupState();\n\n // Controlled properties\n const orientation = controlled(_orientation);\n\n // Try to get overlay - may not exist if content isn't in a portal\n const overlay = inject(NgpOverlay, { optional: true });\n\n const id = uniqueId('navigation-menu-content');\n const open = computed(() => navigationMenuItemState?.()?.active() ?? false);\n let isPointerOver = false;\n let isFocusInside = false;\n\n // Host bindings\n attrBinding(element, 'id', id);\n attrBinding(element, 'role', 'menu');\n attrBinding(element, 'aria-labelledby', () => triggerState?.()?.id ?? null);\n dataBinding(element, 'data-open', open);\n dataBinding(element, 'data-placement', () => overlay?.finalPlacement() ?? null);\n dataBinding(element, 'data-orientation', orientation);\n dataBinding(element, 'data-instant', () => overlay?.instantTransition() ?? false);\n\n // Style bindings for positioning\n styleBinding(element, 'left.px', () => overlay?.position().x ?? null);\n styleBinding(element, 'top.px', () => overlay?.position().y ?? null);\n styleBinding(\n element,\n '--ngp-navigation-menu-trigger-width.px',\n () => overlay?.triggerWidth() ?? null,\n );\n styleBinding(\n element,\n '--ngp-navigation-menu-transform-origin',\n () => overlay?.transformOrigin() ?? null,\n );\n styleBinding(\n element,\n '--ngp-navigation-menu-available-width.px',\n () => overlay?.availableWidth() ?? null,\n );\n styleBinding(\n element,\n '--ngp-navigation-menu-available-height.px',\n () => overlay?.availableHeight() ?? null,\n );\n\n // Event listeners\n listener(element, 'pointerenter', onPointerEnter);\n listener(element, 'pointerleave', onPointerLeave);\n listener(element, 'focusin', onFocusIn);\n listener(element, 'focusout', onFocusOut);\n listener(element, 'keydown', onKeydown);\n\n // Register content ID with trigger on mount\n onMount(() => {\n triggerState?.()?.setContentId(id);\n\n // Register focus functions with trigger\n triggerState?.()?.registerContentFocusFunctions(focusFirst, focusLast);\n });\n\n // Cleanup on destroy\n onDestroy(() => {\n // Notify trigger that pointer left content\n if (isPointerOver) {\n triggerState?.()?.setPointerOverContent(false);\n }\n // Notify trigger that focus left content\n if (isFocusInside) {\n triggerState?.()?.setFocusInsideContent(false);\n }\n });\n\n function onPointerEnter(event: PointerEvent): void {\n if (event.pointerType === 'touch') {\n return;\n }\n isPointerOver = true;\n triggerState?.()?.setPointerOverContent(true);\n }\n\n function onPointerLeave(event: PointerEvent): void {\n if (event.pointerType === 'touch') {\n return;\n }\n isPointerOver = false;\n triggerState?.()?.setPointerOverContent(false);\n }\n\n function onFocusIn(): void {\n isFocusInside = true;\n triggerState?.()?.setFocusInsideContent(true);\n }\n\n function onFocusOut(event: FocusEvent): void {\n // Check if focus is moving outside the content\n const relatedTarget = event.relatedTarget as HTMLElement | null;\n const contentElement = element.nativeElement;\n\n // If focus is moving to another element inside the content, don't mark as lost\n if (relatedTarget && contentElement.contains(relatedTarget)) {\n return;\n }\n\n isFocusInside = false;\n triggerState?.()?.setFocusInsideContent(false);\n }\n\n function onKeydown(event: KeyboardEvent): void {\n const menuOrientation = navigationMenuState?.()?.orientation() ?? 'horizontal';\n const isRtl = directionality.value === 'rtl';\n\n // Determine which arrow key closes content and returns to trigger\n // For horizontal menu: ArrowUp closes\n // For vertical menu: ArrowLeft closes (or ArrowRight in RTL)\n const closeKey =\n menuOrientation === 'horizontal' ? 'ArrowUp' : isRtl ? 'ArrowRight' : 'ArrowLeft';\n\n if (event.key === 'Escape') {\n event.preventDefault();\n close('keyboard');\n } else if (event.key === closeKey) {\n // Only close if we're at the edge of the content\n // For now, we let the roving focus handle internal navigation\n // and only close on Escape\n }\n }\n\n function close(origin: FocusOrigin = 'program'): void {\n navigationMenuItemState?.()?.hide();\n\n // Restore focus to trigger on keyboard close\n if (origin === 'keyboard') {\n triggerState?.()?.hide('keyboard');\n }\n }\n\n function focusFirst(): void {\n // Use the roving focus group's activateFirst method\n rovingFocusGroup()?.activateFirst('keyboard');\n }\n\n function focusLast(): void {\n // Use the roving focus group's activateLast method\n rovingFocusGroup()?.activateLast('keyboard');\n }\n\n function setOrientation(value: NgpOrientation): void {\n orientation.set(value);\n // Also update the roving focus group orientation\n rovingFocusGroup()?.setOrientation(value);\n }\n\n return {\n id,\n open,\n orientation: orientation.asReadonly(),\n close,\n focusFirst,\n focusLast,\n setOrientation,\n } satisfies NgpNavigationMenuContentState;\n },\n);\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input } from '@angular/core';\nimport { NgpOrientation } from 'ng-primitives/common';\nimport { provideControlContainerIsolation } from 'ng-primitives/portal';\nimport { ngpRovingFocusGroup, provideRovingFocusGroupState } from 'ng-primitives/roving-focus';\nimport { injectNavigationMenuConfig } from '../config/navigation-menu-config';\nimport {\n ngpNavigationMenuContent,\n provideNavigationMenuContentState,\n} from './navigation-menu-content-state';\n\n/**\n * The `NgpNavigationMenuContent` directive is the content panel displayed when a trigger is activated.\n * It has its own roving focus group for keyboard navigation within the content.\n */\n@Directive({\n selector: '[ngpNavigationMenuContent]',\n exportAs: 'ngpNavigationMenuContent',\n providers: [\n provideNavigationMenuContentState(),\n provideRovingFocusGroupState({ inherit: false }),\n provideControlContainerIsolation(),\n ],\n host: {\n 'data-overlay': '',\n },\n})\nexport class NgpNavigationMenuContent {\n /**\n * Access the global navigation menu configuration.\n */\n private readonly config = injectNavigationMenuConfig();\n\n /**\n * The orientation for keyboard navigation within the content.\n * Use 'vertical' for list layouts (default), 'horizontal' for grid layouts.\n * @default 'vertical'\n */\n readonly orientation = input<NgpOrientation>('vertical', {\n alias: 'ngpNavigationMenuContentOrientation',\n });\n\n /**\n * Whether focus should wrap around when reaching the end of the content.\n * @default true\n */\n readonly wrap = input<boolean, BooleanInput>(this.config.wrap, {\n alias: 'ngpNavigationMenuContentWrap',\n transform: booleanAttribute,\n });\n\n private readonly state = ngpNavigationMenuContent({\n orientation: this.orientation,\n });\n\n constructor() {\n // Create roving focus group for content items\n ngpRovingFocusGroup({\n orientation: this.orientation,\n wrap: this.wrap,\n inherit: false,\n });\n }\n\n /**\n * Close the content panel.\n */\n close(): void {\n this.state.close();\n }\n\n /**\n * Focus the first focusable item in the content.\n */\n focusFirst(): void {\n this.state.focusFirst();\n }\n\n /**\n * Focus the last focusable item in the content.\n */\n focusLast(): void {\n this.state.focusLast();\n }\n}\n","import { signal, Signal } from '@angular/core';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport { attrBinding, controlled, createPrimitive, dataBinding } from 'ng-primitives/state';\n\n/**\n * The state for the NgpNavigationMenuContentItem directive.\n */\nexport interface NgpNavigationMenuContentItemState {\n /**\n * Whether the item is disabled.\n */\n readonly disabled: Signal<boolean>;\n\n /**\n * Set whether the item is disabled.\n * @param isDisabled Whether the item is disabled\n */\n setDisabled(isDisabled: boolean): void;\n}\n\n/**\n * The props for the NgpNavigationMenuContentItem state.\n */\nexport interface NgpNavigationMenuContentItemProps {\n /**\n * Whether the item is disabled.\n */\n readonly disabled?: Signal<boolean>;\n}\n\nexport const [\n NgpNavigationMenuContentItemStateToken,\n ngpNavigationMenuContentItem,\n injectNavigationMenuContentItemState,\n provideNavigationMenuContentItemState,\n] = createPrimitive(\n 'NgpNavigationMenuContentItem',\n ({ disabled: _disabled = signal(false) }: NgpNavigationMenuContentItemProps) => {\n const element = injectElementRef();\n\n // Controlled properties\n const disabled = controlled(_disabled);\n\n // Host bindings\n attrBinding(element, 'role', 'menuitem');\n dataBinding(element, 'data-disabled', disabled);\n\n function setDisabled(isDisabled: boolean): void {\n disabled.set(isDisabled);\n }\n\n return {\n disabled: disabled.asReadonly(),\n setDisabled,\n } satisfies NgpNavigationMenuContentItemState;\n },\n);\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input } from '@angular/core';\nimport { ngpRovingFocusItem, provideRovingFocusItemState } from 'ng-primitives/roving-focus';\nimport {\n ngpNavigationMenuContentItem,\n provideNavigationMenuContentItemState,\n} from './navigation-menu-content-item-state';\n\n/**\n * The `NgpNavigationMenuContentItem` directive represents an item inside navigation menu content.\n * It participates in roving focus navigation within the content panel.\n */\n@Directive({\n selector: '[ngpNavigationMenuContentItem]',\n exportAs: 'ngpNavigationMenuContentItem',\n providers: [provideNavigationMenuContentItemState(), provideRovingFocusItemState()],\n})\nexport class NgpNavigationMenuContentItem {\n /**\n * Whether the item is disabled.\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpNavigationMenuContentItemDisabled',\n transform: booleanAttribute,\n });\n\n constructor() {\n ngpNavigationMenuContentItem({ disabled: this.disabled });\n ngpRovingFocusItem({ disabled: this.disabled });\n }\n}\n","import { Directive, input } from '@angular/core';\nimport { uniqueId } from 'ng-primitives/utils';\nimport {\n ngpNavigationMenuItem,\n provideNavigationMenuItemState,\n} from './navigation-menu-item-state';\n\n/**\n * The `NgpNavigationMenuItem` directive is a container for a menu trigger and its content.\n * It manages the open/close state for this specific menu item.\n */\n@Directive({\n selector: '[ngpNavigationMenuItem]',\n exportAs: 'ngpNavigationMenuItem',\n providers: [provideNavigationMenuItemState({ inherit: false })],\n})\nexport class NgpNavigationMenuItem {\n /**\n * A unique value identifying this menu item.\n * Used to track which item is currently active.\n */\n readonly value = input<string>(uniqueId('navigation-menu-item'), {\n alias: 'ngpNavigationMenuItemValue',\n });\n\n private readonly state = ngpNavigationMenuItem({\n value: this.value,\n });\n\n /**\n * Whether this menu item is currently active (open).\n */\n readonly active = this.state.active;\n\n /**\n * Show the content for this menu item.\n */\n show(): void {\n this.state.show();\n }\n\n /**\n * Hide the content for this menu item.\n */\n hide(): void {\n this.state.hide();\n }\n}\n","import { signal, Signal } from '@angular/core';\nimport { injectElementRef } from 'ng-primitives/internal';\nimport {\n attrBinding,\n controlled,\n createPrimitive,\n dataBinding,\n listener,\n} from 'ng-primitives/state';\n\n/**\n * The state for the NgpNavigationMenuLink directive.\n */\nexport interface NgpNavigationMenuLinkState {\n /**\n * Whether the link is disabled.\n */\n readonly disabled: Signal<boolean>;\n\n /**\n * Whether the link is active (current page).\n */\n readonly active: Signal<boolean>;\n\n /**\n * Set whether the link is disabled.\n * @param isDisabled Whether the link is disabled\n */\n setDisabled(isDisabled: boolean): void;\n\n /**\n * Set whether the link is active.\n * @param isActive Whether the link is active\n */\n setActive(isActive: boolean): void;\n}\n\n/**\n * The props for the NgpNavigationMenuLink state.\n */\nexport interface NgpNavigationMenuLinkProps {\n /**\n * Whether the link is disabled.\n */\n readonly disabled?: Signal<boolean>;\n\n /**\n * Whether the link is active (current page).\n */\n readonly active?: Signal<boolean>;\n}\n\nexport const [\n NgpNavigationMenuLinkStateToken,\n ngpNavigationMenuLink,\n injectNavigationMenuLinkState,\n provideNavigationMenuLinkState,\n] = createPrimitive(\n 'NgpNavigationMenuLink',\n ({\n disabled: _disabled = signal(false),\n active: _active = signal(false),\n }: NgpNavigationMenuLinkProps) => {\n const element = injectElementRef();\n\n // Controlled properties\n const disabled = controlled(_disabled);\n const active = controlled(_active);\n\n // Host bindings\n attrBinding(element, 'aria-current', () => (active() ? 'page' : null));\n attrBinding(element, 'aria-disabled', () => (disabled() ? 'true' : null));\n dataBinding(element, 'data-active', active);\n dataBinding(element, 'data-disabled', disabled);\n\n // Prevent click when disabled\n listener(element, 'click', (event: MouseEvent) => {\n if (disabled()) {\n event.preventDefault();\n event.stopPropagation();\n }\n });\n\n function setDisabled(isDisabled: boolean): void {\n disabled.set(isDisabled);\n }\n\n function setActive(isActive: boolean): void {\n active.set(isActive);\n }\n\n return {\n disabled: disabled.asReadonly(),\n active: active.asReadonly(),\n setDisabled,\n setActive,\n } satisfies NgpNavigationMenuLinkState;\n },\n);\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input } from '@angular/core';\nimport { ngpRovingFocusItem, provideRovingFocusItemState } from 'ng-primitives/roving-focus';\nimport {\n ngpNavigationMenuLink,\n provideNavigationMenuLinkState,\n} from './navigation-menu-link-state';\n\n/**\n * The `NgpNavigationMenuLink` directive is used for standalone navigation links\n * within the navigation menu list (links without dropdown content).\n */\n@Directive({\n selector: '[ngpNavigationMenuLink]',\n exportAs: 'ngpNavigationMenuLink',\n providers: [provideNavigationMenuLinkState(), provideRovingFocusItemState()],\n})\nexport class NgpNavigationMenuLink {\n /**\n * Whether the link is disabled.\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpNavigationMenuLinkDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * Whether the link is active (represents the current page).\n * @default false\n */\n readonly active = input<boolean, BooleanInput>(false, {\n alias: 'ngpNavigationMenuLinkActive',\n transform: booleanAttribute,\n });\n\n private readonly state = ngpNavigationMenuLink({\n disabled: this.disabled,\n active: this.active,\n });\n\n constructor() {\n ngpRovingFocusItem({\n disabled: this.disabled,\n });\n }\n}\n","import { injectElementRef } from 'ng-primitives/internal';\nimport { attrBinding, createPrimitive, dataBinding } from 'ng-primitives/state';\nimport { injectNavigationMenuState } from '../navigation-menu/navigation-menu-state';\n\n/**\n * The state for the NgpNavigationMenuList directive.\n */\nexport interface NgpNavigationMenuListState {\n // No public methods exposed for navigation menu list\n}\n\n/**\n * The props for the NgpNavigationMenuList state.\n */\nexport interface NgpNavigationMenuListProps {\n // No props for navigation menu list\n}\n\nexport const [\n NgpNavigationMenuListStateToken,\n ngpNavigationMenuList,\n injectNavigationMenuListState,\n provideNavigationMenuListState,\n] = createPrimitive('NgpNavigationMenuList', ({}: NgpNavigationMenuListProps) => {\n const element = injectElementRef();\n const navigationMenuState = injectNavigationMenuState();\n\n // Host bindings\n attrBinding(element, 'role', 'menubar');\n attrBinding(element, 'aria-orientation', () => navigationMenuState().orientation());\n dataBinding(element, 'data-orientation', () => navigationMenuState().orientation());\n\n return {} satisfies NgpNavigationMenuListState;\n});\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input } from '@angular/core';\nimport { ngpRovingFocusGroup, provideRovingFocusGroupState } from 'ng-primitives/roving-focus';\nimport { injectNavigationMenuConfig } from '../config/navigation-menu-config';\nimport { injectNavigationMenuState } from '../navigation-menu/navigation-menu-state';\nimport {\n ngpNavigationMenuList,\n provideNavigationMenuListState,\n} from './navigation-menu-list-state';\n\n/**\n * The `NgpNavigationMenuList` directive is a container for navigation menu items.\n * It manages roving focus between menu triggers and links.\n */\n@Directive({\n selector: '[ngpNavigationMenuList]',\n exportAs: 'ngpNavigationMenuList',\n providers: [provideNavigationMenuListState(), provideRovingFocusGroupState({ inherit: false })],\n})\nexport class NgpNavigationMenuList {\n /**\n * Access the global navigation menu configuration.\n */\n private readonly config = injectNavigationMenuConfig();\n\n /**\n * Access the parent navigation menu state.\n */\n private readonly navigationMenuState = injectNavigationMenuState();\n\n /**\n * Whether focus should wrap around when reaching the end of the list.\n * @default true\n */\n readonly wrap = input<boolean, BooleanInput>(this.config.wrap, {\n alias: 'ngpNavigationMenuListWrap',\n transform: booleanAttribute,\n });\n\n constructor() {\n ngpNavigationMenuList({});\n ngpRovingFocusGroup({\n orientation: this.navigationMenuState().orientation,\n wrap: this.wrap,\n });\n }\n}\n","import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, input, numberAttribute } from '@angular/core';\nimport { Placement } from '@floating-ui/dom';\nimport {\n coerceFlip,\n coerceOffset,\n coerceShift,\n NgpFlip,\n NgpFlipInput,\n NgpOffset,\n NgpOffsetInput,\n NgpOverlayContent,\n NgpShift,\n NgpShiftInput,\n} from 'ng-primitives/portal';\nimport { ngpRovingFocusItem, provideRovingFocusItemState } from 'ng-primitives/roving-focus';\nimport { injectNavigationMenuConfig } from '../config/navigation-menu-config';\nimport {\n ngpNavigationMenuTrigger,\n provideNavigationMenuTriggerState,\n} from './navigation-menu-trigger-state';\n\n/**\n * The `NgpNavigationMenuTrigger` directive is a button that opens navigation menu content.\n * It supports hover and focus interactions with configurable delays.\n */\n@Directive({\n selector: '[ngpNavigationMenuTrigger]',\n exportAs: 'ngpNavigationMenuTrigger',\n providers: [provideNavigationMenuTriggerState(), provideRovingFocusItemState()],\n host: {\n type: 'button',\n },\n})\nexport class NgpNavigationMenuTrigger {\n /**\n * Access the global navigation menu configuration.\n */\n private readonly config = injectNavigationMenuConfig();\n\n /**\n * The content template or component to display.\n */\n readonly content = input<NgpOverlayContent<unknown>>(undefined, {\n alias: 'ngpNavigationMenuTrigger',\n });\n\n /**\n * Whether the trigger is disabled.\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpNavigationMenuTriggerDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * The placement of the content relative to the trigger.\n * @default 'bottom-start'\n */\n readonly placement = input<Placement>(this.config.placement, {\n alias: 'ngpNavigationMenuTriggerPlacement',\n });\n\n /**\n * The offset of the content relative to the trigger.\n * @default 4\n */\n readonly offset = input<NgpOffset, NgpOffsetInput>(this.config.offset, {\n alias: 'ngpNavigationMenuTriggerOffset',\n transform: coerceOffset,\n });\n\n /**\n * Whether the content should flip when there is not enough space.\n * Can be a boolean to enable/disable, or an object with padding and fallbackPlacements options.\n * @default true\n */\n readonly flip = input<NgpFlip, NgpFlipInput>(this.config.flip, {\n alias: 'ngpNavigationMenuTriggerFlip',\n transform: coerceFlip,\n });\n\n /**\n * Configure shift behavior to keep the content in view.\n * @default undefined\n */\n readonly shift = input<NgpShift, NgpShiftInput>(this.config.shift, {\n alias: 'ngpNavigationMenuTriggerShift',\n transform: coerceShift,\n });\n\n /**\n * The container for the content.\n * @default 'body'\n */\n readonly container = input<HTMLElement | string | null>(this.config.container, {\n alias: 'ngpNavigationMenuTriggerContainer',\n });\n\n /**\n * The cooldown duration in milliseconds.\n * When moving from one navigation menu item to another within this duration,\n * the showDelay is skipped for the new item.\n * @default 300\n */\n readonly cooldown = input<number, NumberInput>(this.config.cooldown, {\n alias: 'ngpNavigationMenuTriggerCooldown',\n transform: numberAttribute,\n });\n\n private readonly state = ngpNavigationMenuTrigger({\n content: this.content,\n disabled: this.disabled,\n placement: this.placement,\n offset: this.offset,\n flip: this.flip,\n shift: this.shift,\n container: this.container,\n cooldown: this.cooldown,\n });\n\n /**\n * Whether the content is currently open.\n */\n readonly open = this.state.open;\n\n constructor() {\n ngpRovingFocusItem({\n disabled: this.disabled,\n });\n }\n\n /**\n * Show the content.\n */\n show(): void {\n this.state.show();\n }\n\n /**\n * Hide the content.\n */\n hide(): void {\n this.state.hide();\n }\n}\n","import { NumberInput } from '@angular/cdk/coercion';\nimport { Directive, input, numberAttribute, output } from '@angular/core';\nimport { NgpOrientation } from 'ng-primitives/common';\nimport { injectNavigationMenuConfig } from '../config/navigation-menu-config';\nimport { ngpNavigationMenu, provideNavigationMenuState } from './navigation-menu-state';\n\n/**\n * The `NgpNavigationMenu` directive is the root container for a navigation menu.\n * Apply this to a `<nav>` element for proper semantics.\n */\n@Directive({\n selector: '[ngpNavigationMenu]',\n exportAs: 'ngpNavigationMenu',\n providers: [provideNavigationMenuState({ inherit: false })],\n host: {\n role: 'navigation',\n },\n})\nexport class NgpNavigationMenu {\n /**\n * Access the global navigation menu configuration.\n */\n private readonly config = injectNavigationMenuConfig();\n\n /**\n * The orientation of the navigation menu.\n * @default 'horizontal'\n */\n readonly orientation = input<NgpOrientation>(this.config.orientation, {\n alias: 'ngpNavigationMenuOrientation',\n });\n\n /**\n * The delay in milliseconds before showing content on hover.\n * @default 200\n */\n readonly showDelay = input<number, NumberInput>(this.config.showDelay, {\n alias: 'ngpNavigationMenuShowDelay',\n transform: numberAttribute,\n });\n\n /**\n * The delay in milliseconds before hiding content.\n * @default 150\n */\n readonly hideDelay = input<number, NumberInput>(this.config.hideDelay, {\n alias: 'ngpNavigationMenuHideDelay',\n transform: numberAttribute,\n });\n\n /**\n * The currently active (open) item value.\n */\n readonly value = input<string | null>(null, {\n alias: 'ngpNavigationMenuValue',\n });\n\n /**\n * Emits when the active item changes.\n */\n readonly valueChange = output<string | null>({\n alias: 'ngpNavigationMenuValueChange',\n });\n\n private readonly state = ngpNavigationMenu({\n orientation: this.orientation,\n showDelay: this.showDelay,\n hideDelay: this.hideDelay,\n value: this.value,\n onValueChange: value => this.valueChange.emit(value),\n });\n\n /**\n * Set the active item programmatically.\n * @param value The item value to activate (or null to close all)\n */\n setActiveItem(value: string | null): void {\n this.state.setActiveItem(value);\n }\n\n /**\n * Set the orientation programmatically.\n * @param orientation The orientation\n */\n setOrientation(orientation: NgpOrientation): void {\n this.state.setOrientation(orientation);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}