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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +76 -6
  3. package/fesm2022/radix-ng-primitives-accordion.mjs +5 -3
  4. package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
  5. package/fesm2022/radix-ng-primitives-alert-dialog.mjs +31 -24
  6. package/fesm2022/radix-ng-primitives-alert-dialog.mjs.map +1 -1
  7. package/fesm2022/radix-ng-primitives-autocomplete.mjs +1744 -0
  8. package/fesm2022/radix-ng-primitives-autocomplete.mjs.map +1 -0
  9. package/fesm2022/radix-ng-primitives-calendar.mjs +5 -3
  10. package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
  11. package/fesm2022/radix-ng-primitives-combobox.mjs +1399 -606
  12. package/fesm2022/radix-ng-primitives-combobox.mjs.map +1 -1
  13. package/fesm2022/radix-ng-primitives-config.mjs +13 -4
  14. package/fesm2022/radix-ng-primitives-config.mjs.map +1 -1
  15. package/fesm2022/radix-ng-primitives-context-menu.mjs +51 -10
  16. package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
  17. package/fesm2022/radix-ng-primitives-core.mjs +1345 -64
  18. package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
  19. package/fesm2022/radix-ng-primitives-date-field.mjs +5 -3
  20. package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
  21. package/fesm2022/radix-ng-primitives-dialog.mjs +271 -145
  22. package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
  23. package/fesm2022/radix-ng-primitives-direction-provider.mjs +70 -0
  24. package/fesm2022/radix-ng-primitives-direction-provider.mjs.map +1 -0
  25. package/fesm2022/radix-ng-primitives-dismissable-layer.mjs +519 -184
  26. package/fesm2022/radix-ng-primitives-dismissable-layer.mjs.map +1 -1
  27. package/fesm2022/radix-ng-primitives-drawer.mjs +154 -64
  28. package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -1
  29. package/fesm2022/radix-ng-primitives-field.mjs +3 -2
  30. package/fesm2022/radix-ng-primitives-field.mjs.map +1 -1
  31. package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs +517 -0
  32. package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs.map +1 -0
  33. package/fesm2022/radix-ng-primitives-focus-scope.mjs +296 -70
  34. package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
  35. package/fesm2022/radix-ng-primitives-menu.mjs +894 -299
  36. package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
  37. package/fesm2022/radix-ng-primitives-menubar.mjs +32 -4
  38. package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
  39. package/fesm2022/radix-ng-primitives-navigation-menu.mjs +176 -207
  40. package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
  41. package/fesm2022/radix-ng-primitives-popover.mjs +250 -250
  42. package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
  43. package/fesm2022/radix-ng-primitives-popper.mjs +94 -45
  44. package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
  45. package/fesm2022/radix-ng-primitives-portal.mjs +107 -17
  46. package/fesm2022/radix-ng-primitives-portal.mjs.map +1 -1
  47. package/fesm2022/radix-ng-primitives-presence.mjs +262 -79
  48. package/fesm2022/radix-ng-primitives-presence.mjs.map +1 -1
  49. package/fesm2022/radix-ng-primitives-preview-card.mjs +172 -218
  50. package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -1
  51. package/fesm2022/radix-ng-primitives-roving-focus.mjs +4 -2
  52. package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
  53. package/fesm2022/radix-ng-primitives-scroll-area.mjs +5 -4
  54. package/fesm2022/radix-ng-primitives-scroll-area.mjs.map +1 -1
  55. package/fesm2022/radix-ng-primitives-select.mjs +303 -234
  56. package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
  57. package/fesm2022/radix-ng-primitives-slider.mjs +5 -3
  58. package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
  59. package/fesm2022/radix-ng-primitives-stepper.mjs +5 -3
  60. package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
  61. package/fesm2022/radix-ng-primitives-time-field.mjs +5 -3
  62. package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
  63. package/fesm2022/radix-ng-primitives-toast.mjs +15 -36
  64. package/fesm2022/radix-ng-primitives-toast.mjs.map +1 -1
  65. package/fesm2022/radix-ng-primitives-toggle-group.mjs +5 -3
  66. package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
  67. package/fesm2022/radix-ng-primitives-toolbar.mjs +5 -3
  68. package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
  69. package/fesm2022/radix-ng-primitives-tooltip.mjs +105 -145
  70. package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
  71. package/package.json +14 -1
  72. package/types/radix-ng-primitives-accordion.d.ts +4 -3
  73. package/types/radix-ng-primitives-alert-dialog.d.ts +17 -11
  74. package/types/radix-ng-primitives-autocomplete.d.ts +661 -0
  75. package/types/radix-ng-primitives-calendar.d.ts +5 -3
  76. package/types/radix-ng-primitives-combobox.d.ts +727 -293
  77. package/types/radix-ng-primitives-config.d.ts +1 -1
  78. package/types/radix-ng-primitives-context-menu.d.ts +15 -5
  79. package/types/radix-ng-primitives-core.d.ts +762 -14
  80. package/types/radix-ng-primitives-date-field.d.ts +3 -2
  81. package/types/radix-ng-primitives-dialog.d.ts +107 -55
  82. package/types/radix-ng-primitives-direction-provider.d.ts +41 -0
  83. package/types/radix-ng-primitives-dismissable-layer.d.ts +147 -99
  84. package/types/radix-ng-primitives-drawer.d.ts +49 -22
  85. package/types/radix-ng-primitives-field.d.ts +1 -0
  86. package/types/radix-ng-primitives-floating-focus-manager.d.ts +175 -0
  87. package/types/radix-ng-primitives-focus-scope.d.ts +132 -1
  88. package/types/radix-ng-primitives-menu.d.ts +204 -112
  89. package/types/radix-ng-primitives-navigation-menu.d.ts +61 -101
  90. package/types/radix-ng-primitives-popover.d.ts +82 -115
  91. package/types/radix-ng-primitives-popper.d.ts +46 -10
  92. package/types/radix-ng-primitives-portal.d.ts +53 -8
  93. package/types/radix-ng-primitives-presence.d.ts +98 -17
  94. package/types/radix-ng-primitives-preview-card.d.ts +63 -95
  95. package/types/radix-ng-primitives-roving-focus.d.ts +7 -6
  96. package/types/radix-ng-primitives-scroll-area.d.ts +2 -2
  97. package/types/radix-ng-primitives-select.d.ts +192 -158
  98. package/types/radix-ng-primitives-slider.d.ts +5 -4
  99. package/types/radix-ng-primitives-stepper.d.ts +4 -3
  100. package/types/radix-ng-primitives-time-field.d.ts +3 -2
  101. package/types/radix-ng-primitives-toast.d.ts +7 -7
  102. package/types/radix-ng-primitives-toggle-group.d.ts +5 -4
  103. package/types/radix-ng-primitives-toolbar.d.ts +3 -2
  104. package/types/radix-ng-primitives-tooltip.d.ts +48 -84
@@ -1,36 +1,50 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { TemplateRef, Signal, ElementRef } from '@angular/core';
3
- import * as i1 from '@radix-ng/primitives/presence';
2
+ import { TemplateRef, Signal } from '@angular/core';
3
+ import * as i1 from '@radix-ng/primitives/portal';
4
4
  import * as _radix_ng_primitives_core from '@radix-ng/primitives/core';
5
- import { RdxTransitionStatus, BooleanInput, NumberInput } from '@radix-ng/primitives/core';
5
+ import { RdxCancelableChangeEventDetails, RdxTransitionStatus, RdxFloatingRootContext, BooleanInput, NumberInput } from '@radix-ng/primitives/core';
6
6
  import * as i1$1 from '@radix-ng/primitives/popper';
7
- import { RdxPopperContentWrapper, RdxPopperAnchorElement } from '@radix-ng/primitives/popper';
7
+ import { RdxPopperContentWrapper } from '@radix-ng/primitives/popper';
8
8
  import * as _radix_ng_primitives_navigation_menu from '@radix-ng/primitives/navigation-menu';
9
9
  import * as i1$2 from '@radix-ng/primitives/roving-focus';
10
- import * as i1$3 from '@radix-ng/primitives/portal';
11
- import { RdxPortalContainer } from '@radix-ng/primitives/portal';
12
- import * as i2 from '@radix-ng/primitives/dismissable-layer';
10
+ import { RdxOutsidePressDomEvent } from '@radix-ng/primitives/dismissable-layer';
13
11
 
14
12
  /**
15
- * Mounts the popup while the menu is open and waits for CSS exit keyframes before unmounting.
13
+ * Structural directive that teleports the navigation menu popup into a container (default
14
+ * `document.body`) while the menu is open, and keeps it mounted until any CSS exit `@keyframes`
15
+ * finishes.
16
16
  *
17
- * ```html
18
- * <ng-template rdxNavigationMenuPortalPresence>…</ng-template>
19
- * ```
17
+ * Apply it with the `*` microsyntax on the positioner —
18
+ * `<div *rdxNavigationMenuPortal rdxNavigationMenuPositioner>` — or as an explicit
19
+ * `<ng-template rdxNavigationMenuPortal>`. For a custom container use the explicit form with
20
+ * `[container]`.
21
+ */
22
+ declare class RdxNavigationMenuPortal {
23
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxNavigationMenuPortal, never>;
24
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxNavigationMenuPortal, "ng-template[rdxNavigationMenuPortal]", ["rdxNavigationMenuPortal"], {}, {}, never, never, true, [{ directive: typeof i1.RdxPortalPresence; inputs: { "container": "container"; }; outputs: {}; }]>;
25
+ }
26
+ /**
27
+ * Dev-mode guard: `rdxNavigationMenuPortal` used to be an attribute directive on a `<div>`. It is now
28
+ * structural, so the old `<div rdxNavigationMenuPortal>` markup would silently stop portaling — fail
29
+ * loudly instead.
20
30
  */
21
- declare class RdxNavigationMenuPortalPresence {
22
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxNavigationMenuPortalPresence, never>;
23
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxNavigationMenuPortalPresence, "ng-template[rdxNavigationMenuPortalPresence]", never, {}, {}, never, never, true, [{ directive: typeof i1.RdxPresenceDirective; inputs: {}; outputs: {}; }]>;
31
+ declare class RdxNavigationMenuPortalMisuseGuard {
32
+ constructor();
33
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxNavigationMenuPortalMisuseGuard, never>;
34
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxNavigationMenuPortalMisuseGuard, "[rdxNavigationMenuPortal]:not(ng-template)", never, {}, {}, never, never, true, never>;
24
35
  }
25
36
 
26
37
  type NavigationMenuOrientation = 'horizontal' | 'vertical';
27
38
  type NavigationMenuDirection = 'ltr' | 'rtl';
28
- type RdxNavigationMenuOpenChangeReason = 'trigger-hover' | 'trigger-focus' | 'trigger-press' | 'outside-press' | 'focus-out' | 'escape-key' | 'link-select' | 'list-leave' | 'none';
39
+ type RdxNavigationMenuOpenChangeReason = 'trigger-hover' | 'trigger-focus' | 'trigger-press' | 'list-navigation' | 'outside-press' | 'focus-out' | 'escape-key' | 'link-select' | 'list-leave' | 'none';
40
+ type RdxNavigationMenuOpenChangeEventDetails = RdxCancelableChangeEventDetails<RdxNavigationMenuOpenChangeReason>;
29
41
  interface RdxNavigationMenuOpenChange {
30
42
  value: string | null;
31
43
  open: boolean;
32
44
  reason: RdxNavigationMenuOpenChangeReason;
33
45
  event: Event;
46
+ trigger: HTMLElement | undefined;
47
+ eventDetails: RdxNavigationMenuOpenChangeEventDetails;
34
48
  }
35
49
  /**
36
50
  * A registered item content template, rendered into the shared viewport when its item is active.
@@ -54,6 +68,7 @@ interface RdxNavigationMenuRootContext {
54
68
  /** Value of the previously open item (used for slide-direction morphing). */
55
69
  readonly previousValue: Signal<string | null>;
56
70
  readonly isOpen: Signal<boolean>;
71
+ readonly present: Signal<boolean>;
57
72
  readonly instant: Signal<boolean>;
58
73
  readonly transitionStatus: Signal<RdxTransitionStatus>;
59
74
  /** The active trigger element the popup is anchored to. */
@@ -67,7 +82,7 @@ interface RdxNavigationMenuRootContext {
67
82
  close(reason?: RdxNavigationMenuOpenChangeReason, event?: Event): void;
68
83
  toggle(value: string, trigger: HTMLElement, event?: Event): void;
69
84
  openOnHover(value: string, trigger: HTMLElement, event: PointerEvent): void;
70
- closeOnHover(): void;
85
+ closeOnHover(event?: PointerEvent): void;
71
86
  cancelHoverOpen(): void;
72
87
  cancelHoverClose(): void;
73
88
  registerTrigger(value: string, trigger: HTMLElement): () => void;
@@ -89,6 +104,9 @@ declare class RdxNavigationMenuRoot {
89
104
  private readonly popper;
90
105
  private readonly destroyRef;
91
106
  private readonly parentRoot;
107
+ private readonly registration;
108
+ /** Per-popup floating root context (ADR 0015) — `open` / `triggers` / reference for the dismissal engine. */
109
+ readonly floatingContext: RdxFloatingRootContext;
92
110
  /** Whether this root is nested inside another navigation menu's content. */
93
111
  readonly nested: boolean;
94
112
  readonly baseId: string;
@@ -107,7 +125,8 @@ declare class RdxNavigationMenuRoot {
107
125
  /**
108
126
  * The reading direction of the navigation menu.
109
127
  */
110
- readonly dir: _angular_core.InputSignal<NavigationMenuDirection>;
128
+ readonly dirInput: _angular_core.InputSignal<NavigationMenuDirection | undefined>;
129
+ readonly dir: _angular_core.Signal<_radix_ng_primitives_core.Direction>;
111
130
  /**
112
131
  * Whether keyboard navigation loops from the last item back to the first and vice versa.
113
132
  */
@@ -141,6 +160,8 @@ declare class RdxNavigationMenuRoot {
141
160
  readonly transitionStatus: _angular_core.Signal<_radix_ng_primitives_core.RdxTransitionStatus>;
142
161
  readonly previousValue: _angular_core.WritableSignal<string | null>;
143
162
  readonly isOpen: _angular_core.Signal<boolean>;
163
+ private readonly preventUnmountOnClose;
164
+ readonly present: _angular_core.Signal<boolean>;
144
165
  readonly trigger: _angular_core.WritableSignal<HTMLElement | undefined>;
145
166
  readonly triggers: _angular_core.WritableSignal<HTMLElement[]>;
146
167
  readonly contents: _angular_core.WritableSignal<Map<string, RdxNavigationMenuContentEntry>>;
@@ -155,19 +176,21 @@ declare class RdxNavigationMenuRoot {
155
176
  close(reason?: RdxNavigationMenuOpenChangeReason, event?: Event): void;
156
177
  toggle(value: string, trigger: HTMLElement, event?: Event): void;
157
178
  openOnHover(value: string, trigger: HTMLElement, event: PointerEvent): void;
158
- closeOnHover(): void;
179
+ closeOnHover(event?: PointerEvent): void;
159
180
  cancelHoverOpen(): void;
160
181
  cancelHoverClose(): void;
161
182
  registerTrigger(value: string, trigger: HTMLElement): () => void;
162
183
  registerContent(entry: RdxNavigationMenuContentEntry): () => void;
163
184
  registerTransitionElement(element: HTMLElement): () => void;
164
185
  registerViewport(onTriggerChange: (previous: HTMLElement, next: HTMLElement) => void): () => boolean;
186
+ private createOpenChangeEvent;
165
187
  private scheduleInstantReset;
166
188
  private clearHoverTimers;
167
189
  private clearOpenTimer;
168
190
  private clearCloseTimer;
191
+ private isInsideOpenChild;
169
192
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxNavigationMenuRoot, never>;
170
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxNavigationMenuRoot, "[rdxNavigationMenuRoot]", ["rdxNavigationMenuRoot"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "dir": { "alias": "dir"; "required": false; "isSignal": true; }; "loop": { "alias": "loop"; "required": false; "isSignal": true; }; "delay": { "alias": "delay"; "required": false; "isSignal": true; }; "closeDelay": { "alias": "closeDelay"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "onValueChange": "onValueChange"; "onOpenChange": "onOpenChange"; "onOpenChangeComplete": "onOpenChangeComplete"; }, never, never, true, [{ directive: typeof i1$1.RdxPopper; inputs: {}; outputs: {}; }]>;
193
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxNavigationMenuRoot, "[rdxNavigationMenuRoot]", ["rdxNavigationMenuRoot"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "dirInput": { "alias": "dir"; "required": false; "isSignal": true; }; "loop": { "alias": "loop"; "required": false; "isSignal": true; }; "delay": { "alias": "delay"; "required": false; "isSignal": true; }; "closeDelay": { "alias": "closeDelay"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "onValueChange": "onValueChange"; "onOpenChange": "onOpenChange"; "onOpenChangeComplete": "onOpenChangeComplete"; }, never, never, true, [{ directive: typeof i1$1.RdxPopper; inputs: {}; outputs: {}; }, { directive: typeof _radix_ng_primitives_core.RdxFloatingNodeRegistration; inputs: {}; outputs: {}; }]>;
171
194
  }
172
195
 
173
196
  /**
@@ -300,19 +323,6 @@ declare class RdxNavigationMenuLink {
300
323
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxNavigationMenuLink, "[rdxNavigationMenuLink]", never, { "active": { "alias": "active"; "required": false; "isSignal": true; }; "closeOnClick": { "alias": "closeOnClick"; "required": false; "isSignal": true; }; }, { "onSelect": "onSelect"; }, never, never, true, never>;
301
324
  }
302
325
 
303
- /**
304
- * Moves the navigation menu popup to a different part of the DOM (by default `document.body`).
305
- */
306
- declare class RdxNavigationMenuPortal {
307
- protected readonly rootContext: _radix_ng_primitives_navigation_menu.RdxNavigationMenuRootContext;
308
- /**
309
- * Optional container to portal the popup into. Defaults to `document.body`.
310
- */
311
- readonly container: _angular_core.InputSignal<RdxPortalContainer | undefined>;
312
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxNavigationMenuPortal, never>;
313
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxNavigationMenuPortal, "[rdxNavigationMenuPortal]", never, { "container": { "alias": "container"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1$3.RdxPortal; inputs: { "container": "container"; }; outputs: {}; }]>;
314
- }
315
-
316
326
  /**
317
327
  * An optional backdrop rendered behind the popup.
318
328
  */
@@ -324,69 +334,21 @@ declare class RdxNavigationMenuBackdrop {
324
334
 
325
335
  /**
326
336
  * Positions the shared popup against the active trigger.
337
+ *
338
+ * A "thin" positioner (ADR 0012): it inherits the popper positioning surface (inputs, `placed`
339
+ * output, unified vars + placement attrs) from {@link RdxPopperContentWrapper} and adds the
340
+ * navigation-menu defaults, the open/closed/instant state attributes, and the grace-area hover
341
+ * bridge. It exposes no legacy `--radix-*` aliases.
327
342
  */
328
- declare class RdxNavigationMenuPositioner {
343
+ declare class RdxNavigationMenuPositioner extends RdxPopperContentWrapper {
329
344
  protected readonly rootContext: _radix_ng_primitives_navigation_menu.RdxNavigationMenuRootContext;
330
- protected readonly wrapper: RdxPopperContentWrapper;
331
- private readonly elementRef;
345
+ private readonly containerRef;
332
346
  private readonly triggerEl;
333
347
  private readonly containerEl;
334
348
  private readonly graceArea;
335
- /**
336
- * An element to position the popup against. Defaults to the active trigger.
337
- */
338
- readonly anchor: _angular_core.InputSignal<RdxPopperAnchorElement>;
339
- /**
340
- * The preferred side of the trigger to render against when open.
341
- */
342
- readonly side: _angular_core.InputSignal<"top" | "right" | "bottom" | "left">;
343
- /**
344
- * Distance between the trigger and the popup in pixels.
345
- */
346
- readonly sideOffset: _angular_core.InputSignalWithTransform<number, NumberInput>;
347
- /**
348
- * How to align the popup relative to the specified side.
349
- */
350
- readonly align: _angular_core.InputSignal<"start" | "center" | "end">;
351
- /**
352
- * An offset in pixels from the `start` or `end` alignment options.
353
- */
354
- readonly alignOffset: _angular_core.InputSignalWithTransform<number, NumberInput>;
355
- /**
356
- * Minimum distance to maintain between the arrow and the edges of the popup.
357
- */
358
- readonly arrowPadding: _angular_core.InputSignalWithTransform<number, NumberInput>;
359
- /**
360
- * Whether to override side and alignment preferences to prevent collisions.
361
- */
362
- readonly avoidCollisions: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
363
- /**
364
- * The element used as the collision boundary.
365
- */
366
- readonly collisionBoundary: _angular_core.InputSignal<ElementRef<HTMLElement> | ElementRef<HTMLElement>[] | undefined>;
367
- /**
368
- * Distance in pixels from the boundary edges where collision detection should occur.
369
- */
370
- readonly collisionPadding: _angular_core.InputSignal<number | Partial<Record<"top" | "right" | "bottom" | "left", number>>>;
371
- /**
372
- * The sticky behavior on the alignment axis.
373
- */
374
- readonly sticky: _angular_core.InputSignal<"always" | "partial">;
375
- /**
376
- * Whether to hide the popup when the trigger becomes fully occluded.
377
- */
378
- readonly hideWhenDetached: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
379
- /**
380
- * The CSS position strategy used by Floating UI.
381
- */
382
- readonly positionStrategy: _angular_core.InputSignal<"fixed" | "absolute">;
383
- /**
384
- * Whether to update position on every animation frame.
385
- */
386
- readonly updatePositionStrategy: _angular_core.InputSignal<"always" | "optimized">;
387
349
  constructor();
388
350
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxNavigationMenuPositioner, never>;
389
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxNavigationMenuPositioner, "[rdxNavigationMenuPositioner]", never, { "anchor": { "alias": "anchor"; "required": false; "isSignal": true; }; "side": { "alias": "side"; "required": false; "isSignal": true; }; "sideOffset": { "alias": "sideOffset"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "alignOffset": { "alias": "alignOffset"; "required": false; "isSignal": true; }; "arrowPadding": { "alias": "arrowPadding"; "required": false; "isSignal": true; }; "avoidCollisions": { "alias": "avoidCollisions"; "required": false; "isSignal": true; }; "collisionBoundary": { "alias": "collisionBoundary"; "required": false; "isSignal": true; }; "collisionPadding": { "alias": "collisionPadding"; "required": false; "isSignal": true; }; "sticky": { "alias": "sticky"; "required": false; "isSignal": true; }; "hideWhenDetached": { "alias": "hideWhenDetached"; "required": false; "isSignal": true; }; "positionStrategy": { "alias": "positionStrategy"; "required": false; "isSignal": true; }; "updatePositionStrategy": { "alias": "updatePositionStrategy"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1$1.RdxPopperContentWrapper; inputs: { "anchor": "anchor"; "side": "side"; "sideOffset": "sideOffset"; "align": "align"; "alignOffset": "alignOffset"; "arrowPadding": "arrowPadding"; "avoidCollisions": "avoidCollisions"; "collisionBoundary": "collisionBoundary"; "collisionPadding": "collisionPadding"; "sticky": "sticky"; "hideWhenDetached": "hideWhenDetached"; "positionStrategy": "positionStrategy"; "updatePositionStrategy": "updatePositionStrategy"; }; outputs: {}; }]>;
351
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxNavigationMenuPositioner, "[rdxNavigationMenuPositioner]", never, {}, {}, never, never, true, never>;
390
352
  }
391
353
 
392
354
  /**
@@ -394,38 +356,36 @@ declare class RdxNavigationMenuPositioner {
394
356
  */
395
357
  declare class RdxNavigationMenuPopup {
396
358
  protected readonly rootContext: _radix_ng_primitives_navigation_menu.RdxNavigationMenuRootContext;
397
- private readonly dismissableLayer;
359
+ private readonly floatingContext;
360
+ private readonly registration;
398
361
  private readonly wrapper;
399
- private readonly layersContext;
400
362
  private readonly elementRef;
401
363
  protected readonly side: _angular_core.Signal<"top" | "right" | "bottom" | "left" | undefined>;
402
364
  protected readonly align: _angular_core.Signal<"start" | "center" | "end" | undefined>;
403
365
  /** Names the menu after the active trigger so the `role="menu"` element has an accessible name. */
404
366
  protected readonly labelledBy: _angular_core.Signal<string | undefined>;
405
- private dismissReason;
406
- private dismissEvent;
407
367
  /**
408
368
  * Event handler called when the escape key is down. Can be prevented.
409
369
  */
410
- readonly escapeKeyDown: _angular_core.OutputRef<KeyboardEvent>;
370
+ readonly escapeKeyDown: _angular_core.OutputEmitterRef<KeyboardEvent>;
411
371
  /**
412
372
  * Event handler called when a pointerdown event happens outside the popup. Can be prevented.
413
373
  */
414
- readonly pointerDownOutside: _angular_core.OutputRef<PointerEvent>;
374
+ readonly pointerDownOutside: _angular_core.OutputEmitterRef<RdxOutsidePressDomEvent>;
415
375
  /**
416
376
  * Event handler called when focus moves outside the popup. Can be prevented.
417
377
  */
418
- readonly focusOutside: _angular_core.OutputRef<FocusEvent>;
378
+ readonly focusOutside: _angular_core.OutputEmitterRef<FocusEvent>;
419
379
  constructor();
420
380
  protected onPointerLeave(event: PointerEvent): void;
421
381
  /**
422
382
  * Keyboard navigation inside the open panel: Down/Up move between the panel's focusable items in
423
383
  * DOM order, Home/End jump to the first/last, and Up from the first item returns focus to the
424
- * trigger. (Tab keeps working natively; Escape is handled by the dismissable layer.)
384
+ * trigger. (Tab keeps working natively; Escape is handled by the dismissal capability.)
425
385
  */
426
386
  protected onKeydown(event: KeyboardEvent): void;
427
387
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxNavigationMenuPopup, never>;
428
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxNavigationMenuPopup, "[rdxNavigationMenuPopup]", never, {}, { "escapeKeyDown": "escapeKeyDown"; "pointerDownOutside": "pointerDownOutside"; "focusOutside": "focusOutside"; }, never, never, true, [{ directive: typeof i1$1.RdxPopperContent; inputs: {}; outputs: {}; }, { directive: typeof i2.RdxDismissableLayer; inputs: {}; outputs: {}; }]>;
388
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxNavigationMenuPopup, "[rdxNavigationMenuPopup]", never, {}, { "escapeKeyDown": "escapeKeyDown"; "pointerDownOutside": "pointerDownOutside"; "focusOutside": "focusOutside"; }, never, never, true, [{ directive: typeof i1$1.RdxPopperContent; inputs: {}; outputs: {}; }]>;
429
389
  }
430
390
 
431
391
  /**
@@ -477,12 +437,12 @@ declare class RdxNavigationMenuViewport {
477
437
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxNavigationMenuViewport, "[rdxNavigationMenuViewport]", never, { "forceMount": { "alias": "forceMount"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
478
438
  }
479
439
 
480
- declare const navigationMenuImports: (typeof RdxNavigationMenuPortalPresence)[];
440
+ declare const navigationMenuImports: (typeof RdxNavigationMenuPortal)[];
481
441
  declare class RdxNavigationMenuModule {
482
442
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxNavigationMenuModule, never>;
483
- static ɵmod: _angular_core.ɵɵNgModuleDeclaration<RdxNavigationMenuModule, never, [typeof RdxNavigationMenuRoot, typeof RdxNavigationMenuList, typeof RdxNavigationMenuItem, typeof RdxNavigationMenuTrigger, typeof RdxNavigationMenuIcon, typeof RdxNavigationMenuContent, typeof RdxNavigationMenuLink, typeof RdxNavigationMenuPortal, typeof RdxNavigationMenuPortalPresence, typeof RdxNavigationMenuBackdrop, typeof RdxNavigationMenuPositioner, typeof RdxNavigationMenuPopup, typeof RdxNavigationMenuArrow, typeof RdxNavigationMenuViewport], [typeof RdxNavigationMenuRoot, typeof RdxNavigationMenuList, typeof RdxNavigationMenuItem, typeof RdxNavigationMenuTrigger, typeof RdxNavigationMenuIcon, typeof RdxNavigationMenuContent, typeof RdxNavigationMenuLink, typeof RdxNavigationMenuPortal, typeof RdxNavigationMenuPortalPresence, typeof RdxNavigationMenuBackdrop, typeof RdxNavigationMenuPositioner, typeof RdxNavigationMenuPopup, typeof RdxNavigationMenuArrow, typeof RdxNavigationMenuViewport]>;
443
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<RdxNavigationMenuModule, never, [typeof RdxNavigationMenuRoot, typeof RdxNavigationMenuList, typeof RdxNavigationMenuItem, typeof RdxNavigationMenuTrigger, typeof RdxNavigationMenuIcon, typeof RdxNavigationMenuContent, typeof RdxNavigationMenuLink, typeof RdxNavigationMenuPortal, typeof RdxNavigationMenuPortalMisuseGuard, typeof RdxNavigationMenuBackdrop, typeof RdxNavigationMenuPositioner, typeof RdxNavigationMenuPopup, typeof RdxNavigationMenuArrow, typeof RdxNavigationMenuViewport], [typeof RdxNavigationMenuRoot, typeof RdxNavigationMenuList, typeof RdxNavigationMenuItem, typeof RdxNavigationMenuTrigger, typeof RdxNavigationMenuIcon, typeof RdxNavigationMenuContent, typeof RdxNavigationMenuLink, typeof RdxNavigationMenuPortal, typeof RdxNavigationMenuPortalMisuseGuard, typeof RdxNavigationMenuBackdrop, typeof RdxNavigationMenuPositioner, typeof RdxNavigationMenuPopup, typeof RdxNavigationMenuArrow, typeof RdxNavigationMenuViewport]>;
484
444
  static ɵinj: _angular_core.ɵɵInjectorDeclaration<RdxNavigationMenuModule>;
485
445
  }
486
446
 
487
- export { RdxNavigationMenuArrow, RdxNavigationMenuBackdrop, RdxNavigationMenuContent, RdxNavigationMenuIcon, RdxNavigationMenuItem, RdxNavigationMenuLink, RdxNavigationMenuList, RdxNavigationMenuModule, RdxNavigationMenuPopup, RdxNavigationMenuPortal, RdxNavigationMenuPortalPresence, RdxNavigationMenuPositioner, RdxNavigationMenuRoot, RdxNavigationMenuTrigger, RdxNavigationMenuViewport, injectNavigationMenuRootContext, navigationMenuImports, provideNavigationMenuRootContext };
488
- export type { NavigationMenuDirection, NavigationMenuOrientation, RdxNavigationMenuContentEntry, RdxNavigationMenuOpenChange, RdxNavigationMenuOpenChangeReason, RdxNavigationMenuRootContext };
447
+ export { RdxNavigationMenuArrow, RdxNavigationMenuBackdrop, RdxNavigationMenuContent, RdxNavigationMenuIcon, RdxNavigationMenuItem, RdxNavigationMenuLink, RdxNavigationMenuList, RdxNavigationMenuModule, RdxNavigationMenuPopup, RdxNavigationMenuPortal, RdxNavigationMenuPortalMisuseGuard, RdxNavigationMenuPositioner, RdxNavigationMenuRoot, RdxNavigationMenuTrigger, RdxNavigationMenuViewport, injectNavigationMenuRootContext, navigationMenuImports, provideNavigationMenuRootContext };
448
+ export type { NavigationMenuDirection, NavigationMenuOrientation, RdxNavigationMenuContentEntry, RdxNavigationMenuOpenChange, RdxNavigationMenuOpenChangeEventDetails, RdxNavigationMenuOpenChangeReason, RdxNavigationMenuRootContext };