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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/README.md +1 -1
  2. package/fesm2022/radix-ng-primitives-accordion.mjs +5 -3
  3. package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
  4. package/fesm2022/radix-ng-primitives-alert-dialog.mjs +3 -2
  5. package/fesm2022/radix-ng-primitives-alert-dialog.mjs.map +1 -1
  6. package/fesm2022/radix-ng-primitives-autocomplete.mjs +617 -659
  7. package/fesm2022/radix-ng-primitives-autocomplete.mjs.map +1 -1
  8. package/fesm2022/radix-ng-primitives-calendar.mjs +5 -3
  9. package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
  10. package/fesm2022/radix-ng-primitives-combobox.mjs +1305 -572
  11. package/fesm2022/radix-ng-primitives-combobox.mjs.map +1 -1
  12. package/fesm2022/radix-ng-primitives-config.mjs +13 -4
  13. package/fesm2022/radix-ng-primitives-config.mjs.map +1 -1
  14. package/fesm2022/radix-ng-primitives-context-menu.mjs +51 -10
  15. package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
  16. package/fesm2022/radix-ng-primitives-core.mjs +1345 -64
  17. package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
  18. package/fesm2022/radix-ng-primitives-date-field.mjs +5 -3
  19. package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
  20. package/fesm2022/radix-ng-primitives-dialog.mjs +240 -112
  21. package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
  22. package/fesm2022/radix-ng-primitives-direction-provider.mjs +70 -0
  23. package/fesm2022/radix-ng-primitives-direction-provider.mjs.map +1 -0
  24. package/fesm2022/radix-ng-primitives-dismissable-layer.mjs +519 -184
  25. package/fesm2022/radix-ng-primitives-dismissable-layer.mjs.map +1 -1
  26. package/fesm2022/radix-ng-primitives-drawer.mjs +3 -3
  27. package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -1
  28. package/fesm2022/radix-ng-primitives-field.mjs +3 -2
  29. package/fesm2022/radix-ng-primitives-field.mjs.map +1 -1
  30. package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs +517 -0
  31. package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs.map +1 -0
  32. package/fesm2022/radix-ng-primitives-focus-scope.mjs +296 -70
  33. package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
  34. package/fesm2022/radix-ng-primitives-menu.mjs +861 -286
  35. package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
  36. package/fesm2022/radix-ng-primitives-menubar.mjs +32 -4
  37. package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
  38. package/fesm2022/radix-ng-primitives-navigation-menu.mjs +144 -159
  39. package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
  40. package/fesm2022/radix-ng-primitives-popover.mjs +220 -205
  41. package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
  42. package/fesm2022/radix-ng-primitives-popper.mjs +94 -51
  43. package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
  44. package/fesm2022/radix-ng-primitives-presence.mjs +1 -1
  45. package/fesm2022/radix-ng-primitives-presence.mjs.map +1 -1
  46. package/fesm2022/radix-ng-primitives-preview-card.mjs +141 -173
  47. package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -1
  48. package/fesm2022/radix-ng-primitives-roving-focus.mjs +4 -2
  49. package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
  50. package/fesm2022/radix-ng-primitives-scroll-area.mjs +5 -4
  51. package/fesm2022/radix-ng-primitives-scroll-area.mjs.map +1 -1
  52. package/fesm2022/radix-ng-primitives-select.mjs +211 -156
  53. package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
  54. package/fesm2022/radix-ng-primitives-slider.mjs +5 -3
  55. package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
  56. package/fesm2022/radix-ng-primitives-stepper.mjs +5 -3
  57. package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
  58. package/fesm2022/radix-ng-primitives-time-field.mjs +5 -3
  59. package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
  60. package/fesm2022/radix-ng-primitives-toast.mjs +15 -36
  61. package/fesm2022/radix-ng-primitives-toast.mjs.map +1 -1
  62. package/fesm2022/radix-ng-primitives-toggle-group.mjs +5 -3
  63. package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
  64. package/fesm2022/radix-ng-primitives-toolbar.mjs +5 -3
  65. package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
  66. package/fesm2022/radix-ng-primitives-tooltip.mjs +73 -110
  67. package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
  68. package/package.json +10 -1
  69. package/types/radix-ng-primitives-accordion.d.ts +4 -3
  70. package/types/radix-ng-primitives-autocomplete.d.ts +217 -152
  71. package/types/radix-ng-primitives-calendar.d.ts +5 -3
  72. package/types/radix-ng-primitives-combobox.d.ts +672 -283
  73. package/types/radix-ng-primitives-config.d.ts +1 -1
  74. package/types/radix-ng-primitives-context-menu.d.ts +15 -5
  75. package/types/radix-ng-primitives-core.d.ts +762 -14
  76. package/types/radix-ng-primitives-date-field.d.ts +3 -2
  77. package/types/radix-ng-primitives-dialog.d.ts +77 -32
  78. package/types/radix-ng-primitives-direction-provider.d.ts +41 -0
  79. package/types/radix-ng-primitives-dismissable-layer.d.ts +147 -99
  80. package/types/radix-ng-primitives-field.d.ts +1 -0
  81. package/types/radix-ng-primitives-floating-focus-manager.d.ts +175 -0
  82. package/types/radix-ng-primitives-focus-scope.d.ts +132 -1
  83. package/types/radix-ng-primitives-menu.d.ts +186 -103
  84. package/types/radix-ng-primitives-navigation-menu.d.ts +37 -75
  85. package/types/radix-ng-primitives-popover.d.ts +59 -92
  86. package/types/radix-ng-primitives-popper.d.ts +39 -9
  87. package/types/radix-ng-primitives-preview-card.d.ts +39 -72
  88. package/types/radix-ng-primitives-roving-focus.d.ts +7 -6
  89. package/types/radix-ng-primitives-scroll-area.d.ts +2 -2
  90. package/types/radix-ng-primitives-select.d.ts +145 -108
  91. package/types/radix-ng-primitives-slider.d.ts +5 -4
  92. package/types/radix-ng-primitives-stepper.d.ts +4 -3
  93. package/types/radix-ng-primitives-time-field.d.ts +3 -2
  94. package/types/radix-ng-primitives-toast.d.ts +7 -7
  95. package/types/radix-ng-primitives-toggle-group.d.ts +5 -4
  96. package/types/radix-ng-primitives-toolbar.d.ts +3 -2
  97. package/types/radix-ng-primitives-tooltip.d.ts +24 -67
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { inject, contentChildren, input, booleanAttribute, signal, computed, effect, Directive, NgModule } from '@angular/core';
3
- import { createContext } from '@radix-ng/primitives/core';
3
+ import { createContext, provideFloatingTree } from '@radix-ng/primitives/core';
4
4
  import { RdxMenuRoot } from '@radix-ng/primitives/menu';
5
5
 
6
6
  const [injectRdxMenubarContext, provideRdxMenubarContext] = createContext('RdxMenubarContext', 'components/menubar');
@@ -156,6 +156,20 @@ class RdxMenubarRoot {
156
156
  }
157
157
  return true;
158
158
  }
159
+ case 'enter':
160
+ case 'space': {
161
+ interaction.event.preventDefault();
162
+ interaction.event.stopPropagation();
163
+ if (root.open()) {
164
+ root.close();
165
+ this.deactivateAll();
166
+ }
167
+ else {
168
+ root.show('first', 'trigger-press', interaction.event);
169
+ this.activateItem(id);
170
+ }
171
+ return true;
172
+ }
159
173
  case 'pointerenter': {
160
174
  if (interaction.event.pointerType === 'touch' || !this.hasOpenMenu()) {
161
175
  return false;
@@ -164,7 +178,7 @@ class RdxMenubarRoot {
164
178
  return true;
165
179
  }
166
180
  trigger.focus({ preventScroll: true });
167
- root.show(false);
181
+ root.show(false, 'trigger-hover');
168
182
  this.activateItem(id);
169
183
  return true;
170
184
  }
@@ -265,14 +279,28 @@ class RdxMenubarRoot {
265
279
  return this.items.some((item) => item.root?.open());
266
280
  }
267
281
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxMenubarRoot, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
268
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.2.9", type: RdxMenubarRoot, isStandalone: true, selector: "[rdxMenubarRoot]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, loopFocus: { classPropertyName: "loopFocus", publicName: "loopFocus", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "menubar", "tabindex": "0" }, listeners: { "keydown.arrowleft": "handleArrowLeft($event)", "keydown.arrowright": "handleArrowRight($event)" }, properties: { "attr.aria-orientation": "orientation()", "attr.data-orientation": "orientation()", "attr.data-disabled": "disabled() ? \"\" : undefined", "attr.data-has-submenu-open": "isAnyOpen() ? \"\" : undefined" } }, providers: [provideRdxMenubarContext(contextFactory)], queries: [{ propertyName: "menuRoots", predicate: RdxMenuRoot, isSignal: true }], exportAs: ["rdxMenubarRoot"], ngImport: i0 }); }
282
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.2.9", type: RdxMenubarRoot, isStandalone: true, selector: "[rdxMenubarRoot]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, loopFocus: { classPropertyName: "loopFocus", publicName: "loopFocus", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "menubar", "tabindex": "0" }, listeners: { "keydown.arrowleft": "handleArrowLeft($event)", "keydown.arrowright": "handleArrowRight($event)" }, properties: { "attr.aria-orientation": "orientation()", "attr.data-orientation": "orientation()", "attr.data-disabled": "disabled() ? \"\" : undefined", "attr.data-has-submenu-open": "isAnyOpen() ? \"\" : undefined" } }, providers: [
283
+ provideRdxMenubarContext(contextFactory),
284
+ // One shared floating tree for all child menus (Base UI `Menubar` wraps them in a single
285
+ // `FloatingTree`). Each `RdxMenuRoot`'s own `provideFloatingTree()` inherits this via skipSelf, so
286
+ // sibling menubar menus live in the same tree — the dismissal / focus engine can see their
287
+ // relationships instead of each menu owning an isolated tree.
288
+ provideFloatingTree()
289
+ ], queries: [{ propertyName: "menuRoots", predicate: RdxMenuRoot, isSignal: true }], exportAs: ["rdxMenubarRoot"], ngImport: i0 }); }
269
290
  }
270
291
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxMenubarRoot, decorators: [{
271
292
  type: Directive,
272
293
  args: [{
273
294
  selector: '[rdxMenubarRoot]',
274
295
  exportAs: 'rdxMenubarRoot',
275
- providers: [provideRdxMenubarContext(contextFactory)],
296
+ providers: [
297
+ provideRdxMenubarContext(contextFactory),
298
+ // One shared floating tree for all child menus (Base UI `Menubar` wraps them in a single
299
+ // `FloatingTree`). Each `RdxMenuRoot`'s own `provideFloatingTree()` inherits this via skipSelf, so
300
+ // sibling menubar menus live in the same tree — the dismissal / focus engine can see their
301
+ // relationships instead of each menu owning an isolated tree.
302
+ provideFloatingTree()
303
+ ],
276
304
  host: {
277
305
  role: 'menubar',
278
306
  tabindex: '0',
@@ -1 +1 @@
1
- {"version":3,"file":"radix-ng-primitives-menubar.mjs","sources":["../../../packages/primitives/menubar/src/menubar-root.ts","../../../packages/primitives/menubar/index.ts","../../../packages/primitives/menubar/radix-ng-primitives-menubar.ts"],"sourcesContent":["import {\n booleanAttribute,\n computed,\n contentChildren,\n Directive,\n effect,\n inject,\n input,\n signal,\n Signal\n} from '@angular/core';\nimport { BooleanInput, createContext } from '@radix-ng/primitives/core';\nimport { RdxMenuRoot, RdxMenuTriggerInteraction } from '@radix-ng/primitives/menu';\n\nexport type RdxMenubarOrientation = 'horizontal' | 'vertical';\n\ninterface RdxMenubarItem {\n id: string;\n el: HTMLElement;\n root: RdxMenuRoot;\n open: () => void;\n close: () => void;\n disabled: () => boolean;\n}\n\nexport interface RdxMenubarContext {\n activeId: Signal<string | null>;\n isAnyOpen: Signal<boolean>;\n disabled: Signal<boolean>;\n orientation: Signal<RdxMenubarOrientation>;\n registerItem: (\n id: string,\n el: HTMLElement,\n open: () => void,\n close: () => void,\n disabled: () => boolean\n ) => () => void;\n activateItem: (id: string) => void;\n deactivateAll: () => void;\n focusAdjacent: (currentId: string, offset: 1 | -1, openOnMove: boolean) => void;\n focusBoundary: (boundary: 'first' | 'last', openOnMove: boolean) => void;\n}\n\nexport const [injectRdxMenubarContext, provideRdxMenubarContext] = createContext<RdxMenubarContext>(\n 'RdxMenubarContext',\n 'components/menubar'\n);\n\nconst contextFactory = () => buildContext(inject(RdxMenubarRoot));\n\nfunction buildContext(root: RdxMenubarRoot): RdxMenubarContext {\n return {\n activeId: root.activeId.asReadonly(),\n isAnyOpen: root.isAnyOpen,\n disabled: root.disabled,\n orientation: root.orientation,\n registerItem: (id, el, open, close, disabled) => root.registerItem(id, el, open, close, disabled),\n activateItem: (id) => root.activateItem(id),\n deactivateAll: () => root.deactivateAll(),\n focusAdjacent: (id, offset, open) => root.focusAdjacent(id, offset, open),\n focusBoundary: (boundary, open) => root.focusBoundary(boundary, open)\n };\n}\n\nlet nextMenubarItemId = 0;\n\n/**\n * Container for a horizontal application menu bar.\n * Coordinates open/close state across multiple menus and provides arrow-key navigation.\n */\n@Directive({\n selector: '[rdxMenubarRoot]',\n exportAs: 'rdxMenubarRoot',\n providers: [provideRdxMenubarContext(contextFactory)],\n host: {\n role: 'menubar',\n tabindex: '0',\n '[attr.aria-orientation]': 'orientation()',\n '[attr.data-orientation]': 'orientation()',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined',\n '[attr.data-has-submenu-open]': 'isAnyOpen() ? \"\" : undefined',\n '(keydown.arrowleft)': 'handleArrowLeft($event)',\n '(keydown.arrowright)': 'handleArrowRight($event)'\n }\n})\nexport class RdxMenubarRoot {\n private readonly menuRoots = contentChildren(RdxMenuRoot);\n private readonly ids = new WeakMap<RdxMenuRoot, string>();\n private items: RdxMenubarItem[] = [];\n\n /** Whether every menubar trigger is disabled. */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Whether arrow-key navigation wraps at the first/last trigger. */\n readonly loopFocus = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /** The menubar orientation. */\n readonly orientation = input<RdxMenubarOrientation>('horizontal');\n\n readonly activeId = signal<string | null>(null);\n readonly isAnyOpen = computed(() => this.activeId() !== null);\n\n constructor() {\n effect((onCleanup) => {\n const roots = this.menuRoots();\n const registered: Array<() => void> = [];\n\n roots.forEach((root) => {\n const trigger = root.trigger();\n\n if (!trigger || trigger.closest('[rdxMenuPopup]')) {\n return;\n }\n\n registered.push(this.registerMenuRoot(root, trigger));\n });\n\n onCleanup(() => {\n registered.forEach((cleanup) => cleanup());\n });\n });\n\n effect(() => {\n const activeId = this.activeId();\n\n if (!activeId) {\n return;\n }\n\n this.menuRoots().forEach((root) => {\n const trigger = root.trigger();\n\n if (!trigger || trigger.closest('[rdxMenuPopup]')) {\n return;\n }\n\n if (this.idFor(root) === activeId && !root.open()) {\n this.deactivateAll();\n }\n });\n });\n }\n\n registerItem(\n id: string,\n el: HTMLElement,\n open: () => void,\n close: () => void,\n disabled: () => boolean\n ): () => void {\n this.items.push({ id, el, root: undefined as never, open, close, disabled });\n // Keep items in DOM order\n this.items.sort((a, b) => (a.el.compareDocumentPosition(b.el) & 4 ? -1 : 1));\n return () => {\n this.items = this.items.filter((item) => item.id !== id);\n if (this.activeId() === id) this.activeId.set(null);\n };\n }\n\n activateItem(id: string): void {\n if (this.disabled()) {\n return;\n }\n\n // Close every other open menu\n this.items.forEach((item) => {\n if (item.id !== id) item.close();\n });\n this.activeId.set(id);\n }\n\n deactivateAll(): void {\n this.activeId.set(null);\n }\n\n focusBoundary(boundary: 'first' | 'last', openOnMove: boolean): void {\n const enabled = this.enabledItems();\n this.focusItem(boundary === 'first' ? enabled[0] : enabled[enabled.length - 1], openOnMove);\n }\n\n generateId(): string {\n return `rdx-menubar-item-${nextMenubarItemId++}`;\n }\n\n private idFor(root: RdxMenuRoot): string {\n let id = this.ids.get(root);\n\n if (!id) {\n id = this.generateId();\n this.ids.set(root, id);\n }\n\n return id;\n }\n\n private registerMenuRoot(root: RdxMenuRoot, trigger: HTMLElement): () => void {\n const id = this.idFor(root);\n const unregisterPopupArrowNavigation = root.registerPopupArrowNavigationHandler((offset) => {\n if (this.disabled()) {\n return false;\n }\n\n this.focusAdjacent(id, offset, true);\n return true;\n });\n const unregisterTriggerInteraction = root.registerTriggerInteractionHandler((interaction) =>\n this.handleTriggerInteraction(id, root, trigger, interaction)\n );\n const unregisterItem = this.registerResolvedItem(id, trigger, root);\n\n return () => {\n unregisterItem();\n unregisterTriggerInteraction();\n unregisterPopupArrowNavigation();\n };\n }\n\n private registerResolvedItem(id: string, el: HTMLElement, root: RdxMenuRoot): () => void {\n this.items.push({\n id,\n el,\n root,\n open: () => root.show(false),\n close: () => root.close(),\n disabled: () => this.disabled() || root.disabled() || el.hasAttribute('disabled')\n });\n this.items.sort((a, b) => (a.el.compareDocumentPosition(b.el) & 4 ? -1 : 1));\n this.updateTriggerTabStops();\n\n return () => {\n this.items = this.items.filter((item) => item.id !== id);\n if (this.activeId() === id) this.activeId.set(null);\n this.updateTriggerTabStops();\n };\n }\n\n private handleTriggerInteraction(\n id: string,\n root: RdxMenuRoot,\n trigger: HTMLElement,\n interaction: RdxMenuTriggerInteraction\n ): boolean {\n if (this.disabled()) {\n return false;\n }\n\n switch (interaction.type) {\n case 'click': {\n if (root.open()) {\n root.close();\n this.deactivateAll();\n } else {\n root.show();\n this.activateItem(id);\n }\n return true;\n }\n case 'pointerenter': {\n if (interaction.event.pointerType === 'touch' || !this.hasOpenMenu()) {\n return false;\n }\n\n if (root.open()) {\n return true;\n }\n\n trigger.focus({ preventScroll: true });\n root.show(false);\n this.activateItem(id);\n return true;\n }\n case 'arrowdown': {\n interaction.event.preventDefault();\n root.show('first');\n this.activateItem(id);\n return true;\n }\n case 'arrowup': {\n interaction.event.preventDefault();\n root.show('last');\n this.activateItem(id);\n return true;\n }\n case 'arrowleft': {\n this.handleTriggerArrow(interaction.event, id, -1, root.open());\n return true;\n }\n case 'arrowright': {\n this.handleTriggerArrow(interaction.event, id, 1, root.open());\n return true;\n }\n case 'home': {\n this.handleTriggerBoundary(interaction.event, 'first', root.open());\n return true;\n }\n case 'end': {\n this.handleTriggerBoundary(interaction.event, 'last', root.open());\n return true;\n }\n case 'escape': {\n interaction.event.preventDefault();\n interaction.event.stopPropagation();\n root.close();\n this.deactivateAll();\n trigger.focus({ preventScroll: true });\n return true;\n }\n }\n }\n\n private handleTriggerArrow(event: Event, id: string, offset: 1 | -1, openOnMove: boolean): void {\n event.preventDefault();\n event.stopPropagation();\n (event as KeyboardEvent).stopImmediatePropagation();\n this.focusAdjacent(id, offset, openOnMove);\n }\n\n private handleTriggerBoundary(event: Event, boundary: 'first' | 'last', openOnMove: boolean): void {\n event.preventDefault();\n event.stopPropagation();\n (event as KeyboardEvent).stopImmediatePropagation();\n this.focusBoundary(boundary, openOnMove);\n }\n\n focusAdjacent(currentId: string, offset: 1 | -1, openOnMove: boolean): void {\n const enabled = this.enabledItems();\n const currentIndex = enabled.findIndex((item) => item.id === currentId);\n if (currentIndex === -1 || enabled.length === 0) return;\n\n const nextIndex = currentIndex + offset;\n if (!this.loopFocus() && (nextIndex < 0 || nextIndex >= enabled.length)) {\n return;\n }\n\n const next = enabled[(nextIndex + enabled.length) % enabled.length];\n this.focusItem(next, openOnMove);\n }\n\n protected handleArrowLeft(event: Event): void {\n this.handleOpenMenuNavigation(event, -1);\n }\n\n protected handleArrowRight(event: Event): void {\n this.handleOpenMenuNavigation(event, 1);\n }\n\n private handleOpenMenuNavigation(event: Event, offset: 1 | -1): void {\n const activeId = this.activeId();\n\n if (!activeId || this.disabled() || !this.hasOpenMenu()) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n (event as KeyboardEvent).stopImmediatePropagation();\n this.focusAdjacent(activeId, offset, true);\n }\n\n private focusItem(item: RdxMenubarItem | undefined, openOnMove: boolean): void {\n if (!item || this.disabled()) return;\n\n item.el.focus();\n if (openOnMove) {\n item.open();\n this.activateItem(item.id);\n }\n }\n\n private updateTriggerTabStops(): void {\n this.items.forEach((item) => item.el.setAttribute('tabindex', '-1'));\n }\n\n private enabledItems(): RdxMenubarItem[] {\n return this.items.filter((item) => !item.disabled());\n }\n\n private hasOpenMenu(): boolean {\n return this.items.some((item) => item.root?.open());\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RdxMenubarRoot } from './src/menubar-root';\n\nexport * from './src/menubar-root';\n\n/**\n * Menubar-specific parts. Triggers use the standard `rdxMenuTrigger` from\n * `@radix-ng/primitives/menu`; the menubar root wires them for roving focus,\n * hover switching, and ArrowLeft / ArrowRight navigation. The menu popup, items,\n * checkbox/radio, submenu, separator, etc. also come from `RdxMenuModule`.\n */\nconst menubarImports = [RdxMenubarRoot];\n\n@NgModule({\n imports: [...menubarImports],\n exports: [...menubarImports]\n})\nexport class RdxMenubarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"radix-ng-primitives-menubar.mjs","sources":["../../../packages/primitives/menubar/src/menubar-root.ts","../../../packages/primitives/menubar/index.ts","../../../packages/primitives/menubar/radix-ng-primitives-menubar.ts"],"sourcesContent":["import {\n booleanAttribute,\n computed,\n contentChildren,\n Directive,\n effect,\n inject,\n input,\n signal,\n Signal\n} from '@angular/core';\nimport { BooleanInput, createContext, provideFloatingTree } from '@radix-ng/primitives/core';\nimport { RdxMenuRoot, RdxMenuTriggerInteraction } from '@radix-ng/primitives/menu';\n\nexport type RdxMenubarOrientation = 'horizontal' | 'vertical';\n\ninterface RdxMenubarItem {\n id: string;\n el: HTMLElement;\n root: RdxMenuRoot;\n open: () => void;\n close: () => void;\n disabled: () => boolean;\n}\n\nexport interface RdxMenubarContext {\n activeId: Signal<string | null>;\n isAnyOpen: Signal<boolean>;\n disabled: Signal<boolean>;\n orientation: Signal<RdxMenubarOrientation>;\n registerItem: (\n id: string,\n el: HTMLElement,\n open: () => void,\n close: () => void,\n disabled: () => boolean\n ) => () => void;\n activateItem: (id: string) => void;\n deactivateAll: () => void;\n focusAdjacent: (currentId: string, offset: 1 | -1, openOnMove: boolean) => void;\n focusBoundary: (boundary: 'first' | 'last', openOnMove: boolean) => void;\n}\n\nexport const [injectRdxMenubarContext, provideRdxMenubarContext] = createContext<RdxMenubarContext>(\n 'RdxMenubarContext',\n 'components/menubar'\n);\n\nconst contextFactory = () => buildContext(inject(RdxMenubarRoot));\n\nfunction buildContext(root: RdxMenubarRoot): RdxMenubarContext {\n return {\n activeId: root.activeId.asReadonly(),\n isAnyOpen: root.isAnyOpen,\n disabled: root.disabled,\n orientation: root.orientation,\n registerItem: (id, el, open, close, disabled) => root.registerItem(id, el, open, close, disabled),\n activateItem: (id) => root.activateItem(id),\n deactivateAll: () => root.deactivateAll(),\n focusAdjacent: (id, offset, open) => root.focusAdjacent(id, offset, open),\n focusBoundary: (boundary, open) => root.focusBoundary(boundary, open)\n };\n}\n\nlet nextMenubarItemId = 0;\n\n/**\n * Container for a horizontal application menu bar.\n * Coordinates open/close state across multiple menus and provides arrow-key navigation.\n */\n@Directive({\n selector: '[rdxMenubarRoot]',\n exportAs: 'rdxMenubarRoot',\n providers: [\n provideRdxMenubarContext(contextFactory),\n // One shared floating tree for all child menus (Base UI `Menubar` wraps them in a single\n // `FloatingTree`). Each `RdxMenuRoot`'s own `provideFloatingTree()` inherits this via skipSelf, so\n // sibling menubar menus live in the same tree — the dismissal / focus engine can see their\n // relationships instead of each menu owning an isolated tree.\n provideFloatingTree()\n ],\n host: {\n role: 'menubar',\n tabindex: '0',\n '[attr.aria-orientation]': 'orientation()',\n '[attr.data-orientation]': 'orientation()',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined',\n '[attr.data-has-submenu-open]': 'isAnyOpen() ? \"\" : undefined',\n '(keydown.arrowleft)': 'handleArrowLeft($event)',\n '(keydown.arrowright)': 'handleArrowRight($event)'\n }\n})\nexport class RdxMenubarRoot {\n private readonly menuRoots = contentChildren(RdxMenuRoot);\n private readonly ids = new WeakMap<RdxMenuRoot, string>();\n private items: RdxMenubarItem[] = [];\n\n /** Whether every menubar trigger is disabled. */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Whether arrow-key navigation wraps at the first/last trigger. */\n readonly loopFocus = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /** The menubar orientation. */\n readonly orientation = input<RdxMenubarOrientation>('horizontal');\n\n readonly activeId = signal<string | null>(null);\n readonly isAnyOpen = computed(() => this.activeId() !== null);\n\n constructor() {\n effect((onCleanup) => {\n const roots = this.menuRoots();\n const registered: Array<() => void> = [];\n\n roots.forEach((root) => {\n const trigger = root.trigger();\n\n if (!trigger || trigger.closest('[rdxMenuPopup]')) {\n return;\n }\n\n registered.push(this.registerMenuRoot(root, trigger));\n });\n\n onCleanup(() => {\n registered.forEach((cleanup) => cleanup());\n });\n });\n\n effect(() => {\n const activeId = this.activeId();\n\n if (!activeId) {\n return;\n }\n\n this.menuRoots().forEach((root) => {\n const trigger = root.trigger();\n\n if (!trigger || trigger.closest('[rdxMenuPopup]')) {\n return;\n }\n\n if (this.idFor(root) === activeId && !root.open()) {\n this.deactivateAll();\n }\n });\n });\n }\n\n registerItem(\n id: string,\n el: HTMLElement,\n open: () => void,\n close: () => void,\n disabled: () => boolean\n ): () => void {\n this.items.push({ id, el, root: undefined as never, open, close, disabled });\n // Keep items in DOM order\n this.items.sort((a, b) => (a.el.compareDocumentPosition(b.el) & 4 ? -1 : 1));\n return () => {\n this.items = this.items.filter((item) => item.id !== id);\n if (this.activeId() === id) this.activeId.set(null);\n };\n }\n\n activateItem(id: string): void {\n if (this.disabled()) {\n return;\n }\n\n // Close every other open menu\n this.items.forEach((item) => {\n if (item.id !== id) item.close();\n });\n this.activeId.set(id);\n }\n\n deactivateAll(): void {\n this.activeId.set(null);\n }\n\n focusBoundary(boundary: 'first' | 'last', openOnMove: boolean): void {\n const enabled = this.enabledItems();\n this.focusItem(boundary === 'first' ? enabled[0] : enabled[enabled.length - 1], openOnMove);\n }\n\n generateId(): string {\n return `rdx-menubar-item-${nextMenubarItemId++}`;\n }\n\n private idFor(root: RdxMenuRoot): string {\n let id = this.ids.get(root);\n\n if (!id) {\n id = this.generateId();\n this.ids.set(root, id);\n }\n\n return id;\n }\n\n private registerMenuRoot(root: RdxMenuRoot, trigger: HTMLElement): () => void {\n const id = this.idFor(root);\n const unregisterPopupArrowNavigation = root.registerPopupArrowNavigationHandler((offset) => {\n if (this.disabled()) {\n return false;\n }\n\n this.focusAdjacent(id, offset, true);\n return true;\n });\n const unregisterTriggerInteraction = root.registerTriggerInteractionHandler((interaction) =>\n this.handleTriggerInteraction(id, root, trigger, interaction)\n );\n const unregisterItem = this.registerResolvedItem(id, trigger, root);\n\n return () => {\n unregisterItem();\n unregisterTriggerInteraction();\n unregisterPopupArrowNavigation();\n };\n }\n\n private registerResolvedItem(id: string, el: HTMLElement, root: RdxMenuRoot): () => void {\n this.items.push({\n id,\n el,\n root,\n open: () => root.show(false),\n close: () => root.close(),\n disabled: () => this.disabled() || root.disabled() || el.hasAttribute('disabled')\n });\n this.items.sort((a, b) => (a.el.compareDocumentPosition(b.el) & 4 ? -1 : 1));\n this.updateTriggerTabStops();\n\n return () => {\n this.items = this.items.filter((item) => item.id !== id);\n if (this.activeId() === id) this.activeId.set(null);\n this.updateTriggerTabStops();\n };\n }\n\n private handleTriggerInteraction(\n id: string,\n root: RdxMenuRoot,\n trigger: HTMLElement,\n interaction: RdxMenuTriggerInteraction\n ): boolean {\n if (this.disabled()) {\n return false;\n }\n\n switch (interaction.type) {\n case 'click': {\n if (root.open()) {\n root.close();\n this.deactivateAll();\n } else {\n root.show();\n this.activateItem(id);\n }\n return true;\n }\n case 'enter':\n case 'space': {\n interaction.event.preventDefault();\n interaction.event.stopPropagation();\n\n if (root.open()) {\n root.close();\n this.deactivateAll();\n } else {\n root.show('first', 'trigger-press', interaction.event);\n this.activateItem(id);\n }\n\n return true;\n }\n case 'pointerenter': {\n if (interaction.event.pointerType === 'touch' || !this.hasOpenMenu()) {\n return false;\n }\n\n if (root.open()) {\n return true;\n }\n\n trigger.focus({ preventScroll: true });\n root.show(false, 'trigger-hover');\n this.activateItem(id);\n return true;\n }\n case 'arrowdown': {\n interaction.event.preventDefault();\n root.show('first');\n this.activateItem(id);\n return true;\n }\n case 'arrowup': {\n interaction.event.preventDefault();\n root.show('last');\n this.activateItem(id);\n return true;\n }\n case 'arrowleft': {\n this.handleTriggerArrow(interaction.event, id, -1, root.open());\n return true;\n }\n case 'arrowright': {\n this.handleTriggerArrow(interaction.event, id, 1, root.open());\n return true;\n }\n case 'home': {\n this.handleTriggerBoundary(interaction.event, 'first', root.open());\n return true;\n }\n case 'end': {\n this.handleTriggerBoundary(interaction.event, 'last', root.open());\n return true;\n }\n case 'escape': {\n interaction.event.preventDefault();\n interaction.event.stopPropagation();\n root.close();\n this.deactivateAll();\n trigger.focus({ preventScroll: true });\n return true;\n }\n }\n }\n\n private handleTriggerArrow(event: Event, id: string, offset: 1 | -1, openOnMove: boolean): void {\n event.preventDefault();\n event.stopPropagation();\n (event as KeyboardEvent).stopImmediatePropagation();\n this.focusAdjacent(id, offset, openOnMove);\n }\n\n private handleTriggerBoundary(event: Event, boundary: 'first' | 'last', openOnMove: boolean): void {\n event.preventDefault();\n event.stopPropagation();\n (event as KeyboardEvent).stopImmediatePropagation();\n this.focusBoundary(boundary, openOnMove);\n }\n\n focusAdjacent(currentId: string, offset: 1 | -1, openOnMove: boolean): void {\n const enabled = this.enabledItems();\n const currentIndex = enabled.findIndex((item) => item.id === currentId);\n if (currentIndex === -1 || enabled.length === 0) return;\n\n const nextIndex = currentIndex + offset;\n if (!this.loopFocus() && (nextIndex < 0 || nextIndex >= enabled.length)) {\n return;\n }\n\n const next = enabled[(nextIndex + enabled.length) % enabled.length];\n this.focusItem(next, openOnMove);\n }\n\n protected handleArrowLeft(event: Event): void {\n this.handleOpenMenuNavigation(event, -1);\n }\n\n protected handleArrowRight(event: Event): void {\n this.handleOpenMenuNavigation(event, 1);\n }\n\n private handleOpenMenuNavigation(event: Event, offset: 1 | -1): void {\n const activeId = this.activeId();\n\n if (!activeId || this.disabled() || !this.hasOpenMenu()) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n (event as KeyboardEvent).stopImmediatePropagation();\n this.focusAdjacent(activeId, offset, true);\n }\n\n private focusItem(item: RdxMenubarItem | undefined, openOnMove: boolean): void {\n if (!item || this.disabled()) return;\n\n item.el.focus();\n if (openOnMove) {\n item.open();\n this.activateItem(item.id);\n }\n }\n\n private updateTriggerTabStops(): void {\n this.items.forEach((item) => item.el.setAttribute('tabindex', '-1'));\n }\n\n private enabledItems(): RdxMenubarItem[] {\n return this.items.filter((item) => !item.disabled());\n }\n\n private hasOpenMenu(): boolean {\n return this.items.some((item) => item.root?.open());\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RdxMenubarRoot } from './src/menubar-root';\n\nexport * from './src/menubar-root';\n\n/**\n * Menubar-specific parts. Triggers use the standard `rdxMenuTrigger` from\n * `@radix-ng/primitives/menu`; the menubar root wires them for roving focus,\n * hover switching, and ArrowLeft / ArrowRight navigation. The menu popup, items,\n * checkbox/radio, submenu, separator, etc. also come from `RdxMenuModule`.\n */\nconst menubarImports = [RdxMenubarRoot];\n\n@NgModule({\n imports: [...menubarImports],\n exports: [...menubarImports]\n})\nexport class RdxMenubarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}