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

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 (118) 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-checkbox.mjs +33 -18
  11. package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
  12. package/fesm2022/radix-ng-primitives-combobox.mjs +1305 -572
  13. package/fesm2022/radix-ng-primitives-combobox.mjs.map +1 -1
  14. package/fesm2022/radix-ng-primitives-config.mjs +13 -4
  15. package/fesm2022/radix-ng-primitives-config.mjs.map +1 -1
  16. package/fesm2022/radix-ng-primitives-context-menu.mjs +51 -10
  17. package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
  18. package/fesm2022/radix-ng-primitives-core.mjs +1352 -64
  19. package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
  20. package/fesm2022/radix-ng-primitives-date-field.mjs +5 -3
  21. package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
  22. package/fesm2022/radix-ng-primitives-dialog.mjs +290 -120
  23. package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
  24. package/fesm2022/radix-ng-primitives-direction-provider.mjs +70 -0
  25. package/fesm2022/radix-ng-primitives-direction-provider.mjs.map +1 -0
  26. package/fesm2022/radix-ng-primitives-dismissable-layer.mjs +519 -184
  27. package/fesm2022/radix-ng-primitives-dismissable-layer.mjs.map +1 -1
  28. package/fesm2022/radix-ng-primitives-drawer.mjs +3 -3
  29. package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -1
  30. package/fesm2022/radix-ng-primitives-editable.mjs +12 -7
  31. package/fesm2022/radix-ng-primitives-editable.mjs.map +1 -1
  32. package/fesm2022/radix-ng-primitives-field.mjs +3 -2
  33. package/fesm2022/radix-ng-primitives-field.mjs.map +1 -1
  34. package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs +803 -0
  35. package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs.map +1 -0
  36. package/fesm2022/radix-ng-primitives-focus-scope.mjs +305 -70
  37. package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
  38. package/fesm2022/radix-ng-primitives-menu.mjs +893 -289
  39. package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
  40. package/fesm2022/radix-ng-primitives-menubar.mjs +32 -4
  41. package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
  42. package/fesm2022/radix-ng-primitives-navigation-menu.mjs +144 -159
  43. package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
  44. package/fesm2022/radix-ng-primitives-number-field.mjs +7 -2
  45. package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
  46. package/fesm2022/radix-ng-primitives-popover.mjs +284 -212
  47. package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
  48. package/fesm2022/radix-ng-primitives-popper.mjs +94 -51
  49. package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
  50. package/fesm2022/radix-ng-primitives-presence.mjs +1 -1
  51. package/fesm2022/radix-ng-primitives-presence.mjs.map +1 -1
  52. package/fesm2022/radix-ng-primitives-preview-card.mjs +141 -173
  53. package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -1
  54. package/fesm2022/radix-ng-primitives-radio.mjs +19 -14
  55. package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
  56. package/fesm2022/radix-ng-primitives-roving-focus.mjs +4 -2
  57. package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
  58. package/fesm2022/radix-ng-primitives-scroll-area.mjs +5 -4
  59. package/fesm2022/radix-ng-primitives-scroll-area.mjs.map +1 -1
  60. package/fesm2022/radix-ng-primitives-select.mjs +241 -164
  61. package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
  62. package/fesm2022/radix-ng-primitives-slider.mjs +262 -29
  63. package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
  64. package/fesm2022/radix-ng-primitives-stepper.mjs +16 -10
  65. package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
  66. package/fesm2022/radix-ng-primitives-switch.mjs +10 -5
  67. package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
  68. package/fesm2022/radix-ng-primitives-tabs.mjs +15 -10
  69. package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
  70. package/fesm2022/radix-ng-primitives-time-field.mjs +5 -3
  71. package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
  72. package/fesm2022/radix-ng-primitives-toast.mjs +15 -36
  73. package/fesm2022/radix-ng-primitives-toast.mjs.map +1 -1
  74. package/fesm2022/radix-ng-primitives-toggle-group.mjs +14 -7
  75. package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
  76. package/fesm2022/radix-ng-primitives-toggle.mjs +12 -6
  77. package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -1
  78. package/fesm2022/radix-ng-primitives-toolbar.mjs +5 -3
  79. package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
  80. package/fesm2022/radix-ng-primitives-tooltip.mjs +251 -143
  81. package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
  82. package/package.json +10 -1
  83. package/types/radix-ng-primitives-accordion.d.ts +4 -3
  84. package/types/radix-ng-primitives-autocomplete.d.ts +217 -152
  85. package/types/radix-ng-primitives-calendar.d.ts +5 -3
  86. package/types/radix-ng-primitives-checkbox.d.ts +27 -15
  87. package/types/radix-ng-primitives-combobox.d.ts +672 -283
  88. package/types/radix-ng-primitives-config.d.ts +1 -1
  89. package/types/radix-ng-primitives-context-menu.d.ts +15 -5
  90. package/types/radix-ng-primitives-core.d.ts +764 -14
  91. package/types/radix-ng-primitives-date-field.d.ts +3 -2
  92. package/types/radix-ng-primitives-dialog.d.ts +88 -32
  93. package/types/radix-ng-primitives-direction-provider.d.ts +41 -0
  94. package/types/radix-ng-primitives-dismissable-layer.d.ts +147 -99
  95. package/types/radix-ng-primitives-editable.d.ts +11 -5
  96. package/types/radix-ng-primitives-field.d.ts +1 -0
  97. package/types/radix-ng-primitives-floating-focus-manager.d.ts +272 -0
  98. package/types/radix-ng-primitives-focus-scope.d.ts +132 -1
  99. package/types/radix-ng-primitives-menu.d.ts +192 -103
  100. package/types/radix-ng-primitives-navigation-menu.d.ts +37 -75
  101. package/types/radix-ng-primitives-number-field.d.ts +8 -3
  102. package/types/radix-ng-primitives-popover.d.ts +71 -92
  103. package/types/radix-ng-primitives-popper.d.ts +39 -9
  104. package/types/radix-ng-primitives-preview-card.d.ts +39 -72
  105. package/types/radix-ng-primitives-radio.d.ts +13 -6
  106. package/types/radix-ng-primitives-roving-focus.d.ts +7 -6
  107. package/types/radix-ng-primitives-scroll-area.d.ts +2 -2
  108. package/types/radix-ng-primitives-select.d.ts +142 -109
  109. package/types/radix-ng-primitives-slider.d.ts +64 -12
  110. package/types/radix-ng-primitives-stepper.d.ts +15 -7
  111. package/types/radix-ng-primitives-switch.d.ts +10 -4
  112. package/types/radix-ng-primitives-tabs.d.ts +12 -6
  113. package/types/radix-ng-primitives-time-field.d.ts +3 -2
  114. package/types/radix-ng-primitives-toast.d.ts +7 -7
  115. package/types/radix-ng-primitives-toggle-group.d.ts +15 -8
  116. package/types/radix-ng-primitives-toggle.d.ts +10 -3
  117. package/types/radix-ng-primitives-toolbar.d.ts +3 -2
  118. package/types/radix-ng-primitives-tooltip.d.ts +61 -80
@@ -1,5 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { ElementRef, InjectionToken, Provider } from '@angular/core';
2
+ import { ElementRef, Provider, Type, InjectionToken } from '@angular/core';
3
3
  import { ReferenceElement, Placement, Middleware, VirtualElement } from '@floating-ui/dom';
4
4
  import * as _radix_ng_primitives_core from '@radix-ng/primitives/core';
5
5
  import { NumberInput, BooleanInput } from '@radix-ng/primitives/core';
@@ -83,12 +83,11 @@ declare const providePopperContentWrapperContext: (useFactory: () => {
83
83
  shouldHideArrow: _angular_core.Signal<boolean>;
84
84
  isPositioned: _angular_core.Signal<boolean>;
85
85
  anchorHidden: _angular_core.Signal<boolean>;
86
- }) => _angular_core.Provider;
86
+ }) => Provider;
87
87
  declare class RdxPopperContentWrapper {
88
88
  private readonly elementRef;
89
89
  private readonly injector;
90
90
  private readonly context;
91
- private readonly isBrowser;
92
91
  /** Optional positioning defaults provided by a composing primitive (e.g. tooltip). */
93
92
  private readonly config;
94
93
  /**
@@ -199,26 +198,57 @@ declare class RdxPopperContentWrapper {
199
198
  * The current alignment of the panel.
200
199
  */
201
200
  readonly placedAlign: _angular_core.Signal<"start" | "center" | "end" | undefined>;
202
- private readonly contentElementRef;
203
- protected readonly contentZIndex: _angular_core.Signal<string | 0>;
204
201
  protected readonly style: _angular_core.Signal<{
205
202
  visibility: string;
206
203
  pointerEvents: string;
207
204
  position: "fixed" | "absolute";
208
205
  transform: string;
209
206
  minWidth: string;
210
- zIndex: string | number;
211
207
  top: string;
212
208
  left: string;
213
209
  '--radix-popper-transform-origin': string;
214
210
  '--radix-popper-content-wrapper-width': string;
215
211
  '--radix-popper-content-wrapper-height': string;
212
+ '--anchor-width': string;
213
+ '--anchor-height': string;
214
+ '--available-width': string;
215
+ '--available-height': string;
216
+ '--positioner-width': string;
217
+ '--positioner-height': string;
218
+ '--transform-origin': string;
216
219
  }>;
217
220
  private readonly afterRenderEffect;
218
221
  constructor();
219
222
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxPopperContentWrapper, never>;
220
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxPopperContentWrapper, "[rdxPopperContentWrapper]", 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; }; }, { "placed": "placed"; }, ["arrow", "contentElementRef"], never, true, never>;
223
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxPopperContentWrapper, "[rdxPopperContentWrapper]", 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; }; }, { "placed": "placed"; }, ["arrow"], never, true, never>;
221
224
  }
225
+ /**
226
+ * Providers a "thin" positioner that `extends RdxPopperContentWrapper` must include. Angular
227
+ * inherits a base directive's inputs/outputs/host bindings/queries but **not** its `providers`, so
228
+ * the `useExisting` alias (lets the popup and arrow resolve the subclass through the
229
+ * {@link RdxPopperContentWrapper} token) and the wrapper context provider (what
230
+ * `injectPopperContentWrapperContext()` reads) are re-declared here in one place.
231
+ *
232
+ * Combine with {@link provideRdxPopperContentConfig} for per-primitive positioning defaults:
233
+ *
234
+ * ```ts
235
+ * providers: [
236
+ * ...provideRdxPopperContentWrapper(RdxComboboxPositioner),
237
+ * provideRdxPopperContentConfig({ sideOffset: 4, align: 'start' })
238
+ * ]
239
+ * ```
240
+ */
241
+ declare function provideRdxPopperContentWrapper(positioner: Type<RdxPopperContentWrapper>): Provider[];
242
+ /**
243
+ * Deprecated per-primitive aliases of the unified popper variables (ADR 0012). Since the wrapper now
244
+ * emits the unified `--anchor-*` / `--available-*` / `--transform-origin` set itself, a positioner no
245
+ * longer hand-writes a re-namespacing `[style]` map; it spreads this helper into a host `[style]`
246
+ * binding only to keep the legacy `--radix-<name>-content-*` / `--radix-<name>-trigger-*` names alive
247
+ * for one release of consumer back-compat. Migrate to the unified set; these are removed next minor.
248
+ *
249
+ * @deprecated Use the unified `--anchor-*` / `--available-*` / `--transform-origin` variables.
250
+ */
251
+ declare function legacyPopperVars(name: string): Record<string, string>;
222
252
 
223
253
  declare class RdxPopperArrow {
224
254
  private readonly popperContentContext;
@@ -264,7 +294,7 @@ interface RdxPopperContentConfig {
264
294
  declare const RdxPopperContentConfigToken: InjectionToken<RdxPopperContentConfig>;
265
295
  declare function provideRdxPopperContentConfig(config: RdxPopperContentConfig): Provider;
266
296
 
267
- declare const popperImports: (typeof RdxPopperAnchor | typeof RdxPopper | typeof RdxPopperContent | typeof RdxPopperContentWrapper)[];
297
+ declare const popperImports: (typeof RdxPopperAnchor | typeof RdxPopper | typeof RdxPopperContentWrapper | typeof RdxPopperContent)[];
268
298
 
269
- export { RdxPopper, RdxPopperAnchor, RdxPopperArrow, RdxPopperContent, RdxPopperContentConfigToken, RdxPopperContentWrapper, getSideAndAlignFromPlacement, injectPopperContentWrapperContext, isNotNull, popperImports, providePopperContentWrapperContext, provideRdxPopperContentConfig, transformOrigin };
299
+ export { RdxPopper, RdxPopperAnchor, RdxPopperArrow, RdxPopperContent, RdxPopperContentConfigToken, RdxPopperContentWrapper, getSideAndAlignFromPlacement, injectPopperContentWrapperContext, isNotNull, legacyPopperVars, popperImports, providePopperContentWrapperContext, provideRdxPopperContentConfig, provideRdxPopperContentWrapper, transformOrigin };
270
300
  export type { Align, PopperContentWrapperContext, RdxPopperAnchorElement, RdxPopperContentConfig, Side };
@@ -2,11 +2,11 @@ import * as _angular_core from '@angular/core';
2
2
  import { Signal, ElementRef } from '@angular/core';
3
3
  import * as i1 from '@radix-ng/primitives/portal';
4
4
  import * as _radix_ng_primitives_core from '@radix-ng/primitives/core';
5
- import { BooleanInput, NumberInput } from '@radix-ng/primitives/core';
5
+ import { RdxFloatingRootContext, BooleanInput, RdxCancelableChangeEventDetails, 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_preview_card from '@radix-ng/primitives/preview-card';
9
- import * as i2 from '@radix-ng/primitives/dismissable-layer';
9
+ import { RdxOutsidePressDomEvent } from '@radix-ng/primitives/dismissable-layer';
10
10
 
11
11
  /**
12
12
  * Structural directive that teleports the preview-card content into a container (default
@@ -47,16 +47,19 @@ declare class RdxPreviewCardHandle<Payload = unknown> {
47
47
  declare function createRdxPreviewCardHandle<Payload = unknown>(): RdxPreviewCardHandle<Payload>;
48
48
 
49
49
  type RdxPreviewCardOpenChangeReason = 'trigger-hover' | 'trigger-focus' | 'trigger-press' | 'outside-press' | 'escape-key' | 'imperative-action' | 'none';
50
+ type RdxPreviewCardOpenChangeEventDetails = RdxCancelableChangeEventDetails<RdxPreviewCardOpenChangeReason>;
50
51
  interface RdxPreviewCardOpenChange {
51
52
  open: boolean;
52
53
  triggerId: string | null;
53
54
  trigger: HTMLElement | undefined;
54
55
  reason: RdxPreviewCardOpenChangeReason;
55
56
  event: Event;
57
+ eventDetails: RdxPreviewCardOpenChangeEventDetails;
56
58
  }
57
59
  interface RdxPreviewCardRootContext {
58
60
  contentId: string;
59
61
  isOpen: Signal<boolean>;
62
+ present: Signal<boolean>;
60
63
  trigger: Signal<HTMLElement | undefined>;
61
64
  triggers: Signal<HTMLElement[]>;
62
65
  isHoverActive: Signal<boolean>;
@@ -87,6 +90,12 @@ type RdxPreviewCardTransitionStatus = 'starting' | 'ending' | undefined;
87
90
  declare class RdxPreviewCardRoot {
88
91
  private readonly popper;
89
92
  private readonly destroyRef;
93
+ /**
94
+ * Per-popup floating root context (ADR 0015) — the shared store the popup's dismissal capability
95
+ * reads (`open`, `triggers`, the reference/floating elements). The tree node is registered by the
96
+ * popup; this context exists independently so dismissal can read `open()`.
97
+ */
98
+ readonly floatingContext: RdxFloatingRootContext;
90
99
  /** Shared open/close transition state machine (completes on the real animationend). */
91
100
  private readonly transition;
92
101
  private hasAppliedDefaultOpen;
@@ -125,11 +134,13 @@ declare class RdxPreviewCardRoot {
125
134
  readonly triggers: _angular_core.WritableSignal<HTMLElement[]>;
126
135
  readonly payload: _angular_core.WritableSignal<unknown>;
127
136
  readonly isPointerDownOnTrigger: _angular_core.WritableSignal<boolean>;
137
+ private readonly preventUnmountOnClose;
128
138
  readonly onOpenChange: _angular_core.OutputEmitterRef<RdxPreviewCardOpenChange>;
129
139
  readonly onOpenChangeComplete: _angular_core.OutputEmitterRef<boolean>;
130
140
  private readonly registeredTriggers;
131
141
  private readonly viewportTriggerChange;
132
142
  readonly state: Signal<"open" | "closed">;
143
+ readonly present: Signal<boolean>;
133
144
  constructor();
134
145
  show(trigger?: HTMLElement | undefined, payload?: unknown, triggerId?: string, reason?: RdxPreviewCardOpenChangeReason, event?: Event, fromHover?: boolean): void;
135
146
  close(reason?: RdxPreviewCardOpenChangeReason, event?: Event): void;
@@ -143,7 +154,7 @@ declare class RdxPreviewCardRoot {
143
154
  registerViewport(onTriggerChange: (previous: HTMLElement, next: HTMLElement) => void): () => boolean;
144
155
  registerTransitionElement(element: HTMLElement): () => void;
145
156
  private syncTriggerId;
146
- private emitOpenChange;
157
+ private createOpenChangeEvent;
147
158
  private clearHoverTimers;
148
159
  private clearOpenTimer;
149
160
  private clearCloseTimer;
@@ -210,104 +221,60 @@ declare class RdxPreviewCardBackdrop {
210
221
 
211
222
  /**
212
223
  * Positions the preview-card against its trigger.
224
+ *
225
+ * A "thin" positioner (ADR 0012): it inherits the popper positioning surface (inputs, `placed`
226
+ * output, unified vars + placement attrs) from {@link RdxPopperContentWrapper} and adds preview-card's
227
+ * own concerns — Base UI-aligned defaults via the config provider, the open/closed/instant state
228
+ * attributes, the deprecated `--radix-preview-card-*` aliases, and the grace-area hover bridge.
213
229
  */
214
- declare class RdxPreviewCardPositioner {
230
+ declare class RdxPreviewCardPositioner extends RdxPopperContentWrapper {
215
231
  protected readonly rootContext: _radix_ng_primitives_preview_card.RdxPreviewCardRootContext;
216
- protected readonly wrapper: RdxPopperContentWrapper;
217
- private readonly elementRef;
232
+ protected readonly legacyVars: Record<string, string>;
233
+ private readonly containerRef;
218
234
  private readonly triggerEl;
219
235
  private readonly containerEl;
220
236
  private readonly graceArea;
221
- /**
222
- * An element to position the popup against. Defaults to the trigger.
223
- */
224
- readonly anchor: _angular_core.InputSignal<RdxPopperAnchorElement>;
225
- /**
226
- * The preferred side of the trigger to render against when open.
227
- */
228
- readonly side: _angular_core.InputSignal<"top" | "right" | "bottom" | "left">;
229
- /**
230
- * Distance between the trigger and the popup in pixels.
231
- */
232
- readonly sideOffset: _angular_core.InputSignalWithTransform<number, NumberInput>;
233
- /**
234
- * How to align the popup relative to the specified side.
235
- */
236
- readonly align: _angular_core.InputSignal<"start" | "center" | "end">;
237
- /**
238
- * An offset in pixels from the `start` or `end` alignment options.
239
- */
240
- readonly alignOffset: _angular_core.InputSignalWithTransform<number, NumberInput>;
241
- /**
242
- * Minimum distance to maintain between the arrow and the edges of the popup.
243
- */
244
- readonly arrowPadding: _angular_core.InputSignalWithTransform<number, NumberInput>;
245
- /**
246
- * Whether to override side and alignment preferences to prevent collisions.
247
- */
248
- readonly avoidCollisions: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
249
- /**
250
- * The element used as the collision boundary.
251
- */
252
- readonly collisionBoundary: _angular_core.InputSignal<ElementRef<HTMLElement> | ElementRef<HTMLElement>[] | undefined>;
253
- /**
254
- * Distance in pixels from the boundary edges where collision detection should occur.
255
- */
256
- readonly collisionPadding: _angular_core.InputSignal<number | Partial<Record<"top" | "right" | "bottom" | "left", number>>>;
257
- /**
258
- * The sticky behavior on the alignment axis.
259
- */
260
- readonly sticky: _angular_core.InputSignal<"always" | "partial">;
261
- /**
262
- * Whether to hide the popup when the trigger becomes fully occluded.
263
- */
264
- readonly hideWhenDetached: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
265
- /**
266
- * The CSS position strategy used by Floating UI.
267
- */
268
- readonly positionStrategy: _angular_core.InputSignal<"fixed" | "absolute">;
269
- /**
270
- * Whether to update position on every animation frame.
271
- */
272
- readonly updatePositionStrategy: _angular_core.InputSignal<"always" | "optimized">;
273
- /**
274
- * Emits when the popup has been placed.
275
- */
276
- readonly placed: _angular_core.OutputRef<void>;
277
237
  constructor();
278
238
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxPreviewCardPositioner, never>;
279
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxPreviewCardPositioner, "[rdxPreviewCardPositioner]", 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; }; }, { "placed": "placed"; }, 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: {}; }]>;
239
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxPreviewCardPositioner, "[rdxPreviewCardPositioner]", never, {}, {}, never, never, true, never>;
280
240
  }
281
241
 
282
242
  /**
283
243
  * A container for the preview-card contents.
244
+ *
245
+ * **ADR 0015 migration** onto the new floating dismissal engine (dismissal-only — a preview-card has
246
+ * no focus manager, ADR 0017 §1). Escape, an outside press, and a focus-out all close it (the legacy's
247
+ * trigger-press preventDefault is now automatic: the trigger is the registered reference, so a press on
248
+ * it is "inside" and never fires `pointerDownOutside`). A focus-out while a pointer is held on the
249
+ * trigger is still vetoed.
284
250
  */
285
251
  declare class RdxPreviewCardPopup {
286
252
  protected readonly rootContext: _radix_ng_primitives_preview_card.RdxPreviewCardRootContext;
287
- private readonly dismissableLayer;
253
+ private readonly host;
254
+ private readonly floatingContext;
255
+ private readonly registration;
288
256
  private readonly wrapper;
289
257
  protected readonly align: _angular_core.Signal<"start" | "center" | "end" | undefined>;
290
258
  protected readonly side: _angular_core.Signal<"top" | "right" | "bottom" | "left" | undefined>;
291
- private dismissDetails;
292
259
  /**
293
260
  * Event handler called when the escape key is down. Can be prevented.
294
261
  */
295
- readonly escapeKeyDown: _angular_core.OutputRef<KeyboardEvent>;
262
+ readonly escapeKeyDown: _angular_core.OutputEmitterRef<KeyboardEvent>;
296
263
  /**
297
264
  * Event handler called when a pointerdown event happens outside of the popup. Can be prevented.
298
265
  */
299
- readonly pointerDownOutside: _angular_core.OutputRef<PointerEvent>;
266
+ readonly pointerDownOutside: _angular_core.OutputEmitterRef<RdxOutsidePressDomEvent>;
300
267
  /**
301
268
  * Event handler called when focus moves outside of the popup. Can be prevented.
302
269
  */
303
- readonly focusOutside: _angular_core.OutputRef<FocusEvent>;
270
+ readonly focusOutside: _angular_core.OutputEmitterRef<FocusEvent>;
304
271
  /**
305
272
  * Event handler called when an interaction happens outside of the popup. Can be prevented.
306
273
  */
307
- readonly interactOutside: _angular_core.OutputRef<PointerEvent | FocusEvent>;
274
+ readonly interactOutside: _angular_core.OutputEmitterRef<RdxOutsidePressDomEvent | FocusEvent>;
308
275
  constructor();
309
276
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxPreviewCardPopup, never>;
310
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxPreviewCardPopup, "[rdxPreviewCardPopup]", never, {}, { "escapeKeyDown": "escapeKeyDown"; "pointerDownOutside": "pointerDownOutside"; "focusOutside": "focusOutside"; "interactOutside": "interactOutside"; }, never, never, true, [{ directive: typeof i1$1.RdxPopperContent; inputs: {}; outputs: {}; }, { directive: typeof i2.RdxDismissableLayer; inputs: {}; outputs: {}; }]>;
277
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxPreviewCardPopup, "[rdxPreviewCardPopup]", never, {}, { "escapeKeyDown": "escapeKeyDown"; "pointerDownOutside": "pointerDownOutside"; "focusOutside": "focusOutside"; "interactOutside": "interactOutside"; }, never, never, true, [{ directive: typeof i1$1.RdxPopperContent; inputs: {}; outputs: {}; }, { directive: typeof _radix_ng_primitives_core.RdxFloatingNodeRegistration; inputs: {}; outputs: {}; }]>;
311
278
  }
312
279
 
313
280
  /**
@@ -357,4 +324,4 @@ declare class RdxPreviewCardModule {
357
324
  }
358
325
 
359
326
  export { RdxPreviewCardArrow, RdxPreviewCardBackdrop, RdxPreviewCardHandle, RdxPreviewCardModule, RdxPreviewCardPopup, RdxPreviewCardPortal, RdxPreviewCardPortalMisuseGuard, RdxPreviewCardPositioner, RdxPreviewCardRoot, RdxPreviewCardTrigger, RdxPreviewCardViewport, createRdxPreviewCardHandle, injectRdxPreviewCardRootContext, previewCardImports, provideRdxPreviewCardRootContext };
360
- export type { RdxPreviewCardOpenChange, RdxPreviewCardOpenChangeReason, RdxPreviewCardRootContext, RdxPreviewCardTransitionStatus };
327
+ export type { RdxPreviewCardOpenChange, RdxPreviewCardOpenChangeEventDetails, RdxPreviewCardOpenChangeReason, RdxPreviewCardRootContext, RdxPreviewCardTransitionStatus };
@@ -1,7 +1,7 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { ModelSignal, InputSignal, InputSignalWithTransform, Signal, InjectionToken } from '@angular/core';
3
3
  import { ControlValueAccessor } from '@angular/forms';
4
- import { BooleanInput, RdxFormValueControl } from '@radix-ng/primitives/core';
4
+ import { BooleanInput, RdxFormValueControl, RdxCancelableChangeEventDetails } from '@radix-ng/primitives/core';
5
5
  import * as i1 from '@radix-ng/primitives/roving-focus';
6
6
  import { Orientation } from '@radix-ng/primitives/roving-focus';
7
7
  import * as i1$1 from '@radix-ng/primitives/visually-hidden';
@@ -18,12 +18,18 @@ interface RadioGroupProps {
18
18
  disabledState: Signal<boolean>;
19
19
  }
20
20
  interface RadioGroupDirective extends RadioGroupProps {
21
- select(value: string | null): void;
21
+ select(value: string | null, event?: Event, reason?: string): void;
22
22
  onTouched(): void;
23
23
  setArrowNavigation(value: boolean): void;
24
24
  isArrowNavigation(): boolean;
25
25
  }
26
26
 
27
+ type RdxRadioValueChangeReason = 'trigger-press' | 'keyboard' | 'focus' | 'none';
28
+ type RdxRadioValueChangeEventDetails = RdxCancelableChangeEventDetails<RdxRadioValueChangeReason>;
29
+ interface RdxRadioValueChangeEvent {
30
+ value: string;
31
+ eventDetails: RdxRadioValueChangeEventDetails;
32
+ }
27
33
  declare class RdxRadioGroupDirective implements RadioGroupProps, RadioGroupDirective, ControlValueAccessor, RdxFormValueControl<string | null> {
28
34
  readonly value: _angular_core.ModelSignal<string | null>;
29
35
  readonly defaultValue: _angular_core.InputSignal<string | undefined>;
@@ -36,7 +42,7 @@ declare class RdxRadioGroupDirective implements RadioGroupProps, RadioGroupDirec
36
42
  /**
37
43
  * Event handler called when the value changes.
38
44
  */
39
- readonly onValueChange: _angular_core.OutputEmitterRef<string>;
45
+ readonly onValueChange: _angular_core.OutputEmitterRef<RdxRadioValueChangeEvent>;
40
46
  private readonly disable;
41
47
  readonly disabledState: _angular_core.Signal<boolean>;
42
48
  private readonly arrowNavigation;
@@ -55,7 +61,7 @@ declare class RdxRadioGroupDirective implements RadioGroupProps, RadioGroupDirec
55
61
  * @param value The value of the radio item to select.
56
62
  * @ignore
57
63
  */
58
- select(value: string | null): void;
64
+ select(value: string | null, event?: Event, reason?: RdxRadioValueChangeReason): void;
59
65
  /**
60
66
  * Update the value of the radio group.
61
67
  * @param value The new value of the radio group.
@@ -107,13 +113,13 @@ declare class RdxRadioItemDirective {
107
113
  private readonly ARROW_KEYS;
108
114
  constructor();
109
115
  /** @ignore */
110
- onClick(): void;
116
+ onClick(event?: Event): void;
111
117
  /** @ignore */
112
118
  onKeyDown(event: Event): void;
113
119
  /** @ignore */
114
120
  onKeyUp(): void;
115
121
  /** @ignore */
116
- onFocus(): void;
122
+ onFocus(event?: FocusEvent): void;
117
123
  private isAllowedArrowKey;
118
124
  private createHiddenInput;
119
125
  private syncHiddenInput;
@@ -146,3 +152,4 @@ declare class RdxRadioItemInputDirective {
146
152
  }
147
153
 
148
154
  export { RdxRadioGroupDirective, RdxRadioIndicatorDirective, RdxRadioItemDirective, RdxRadioItemInputDirective, RdxRadioItemToken, injectRadioItem };
155
+ export type { RdxRadioValueChangeEvent, RdxRadioValueChangeEventDetails, RdxRadioValueChangeReason };
@@ -9,7 +9,7 @@ declare function focusFirst(candidates: HTMLElement[], preventScroll?: boolean,
9
9
 
10
10
  declare const rootContext: () => {
11
11
  loop: _angular_core.Signal<boolean>;
12
- dir: _angular_core.Signal<Direction>;
12
+ dir: _angular_core.Signal<_radix_ng_primitives_core.Direction>;
13
13
  orientation: _angular_core.Signal<Orientation>;
14
14
  currentTabStopId: _angular_core.ModelSignal<string | undefined>;
15
15
  focusableItems: _angular_core.WritableSignal<HTMLElement[]>;
@@ -21,7 +21,7 @@ declare const rootContext: () => {
21
21
  type RovingFocusGroupContext = ReturnType<typeof rootContext>;
22
22
  declare const injectRovingFocusGroupContext: _radix_ng_primitives_core.InjectContext<{
23
23
  loop: _angular_core.Signal<boolean>;
24
- dir: _angular_core.Signal<Direction>;
24
+ dir: _angular_core.Signal<_radix_ng_primitives_core.Direction>;
25
25
  orientation: _angular_core.Signal<Orientation>;
26
26
  currentTabStopId: _angular_core.ModelSignal<string | undefined>;
27
27
  focusableItems: _angular_core.WritableSignal<HTMLElement[]>;
@@ -32,7 +32,7 @@ declare const injectRovingFocusGroupContext: _radix_ng_primitives_core.InjectCon
32
32
  }>;
33
33
  declare const provideRovingFocusGroupContext: (useFactory: () => {
34
34
  loop: _angular_core.Signal<boolean>;
35
- dir: _angular_core.Signal<Direction>;
35
+ dir: _angular_core.Signal<_radix_ng_primitives_core.Direction>;
36
36
  orientation: _angular_core.Signal<Orientation>;
37
37
  currentTabStopId: _angular_core.ModelSignal<string | undefined>;
38
38
  focusableItems: _angular_core.WritableSignal<HTMLElement[]>;
@@ -55,7 +55,8 @@ declare class RdxRovingFocusGroupDirective {
55
55
  /**
56
56
  * The direction of navigation between items.
57
57
  */
58
- readonly dirInput: _angular_core.InputSignal<Direction>;
58
+ readonly dirInput: _angular_core.InputSignal<Direction | undefined>;
59
+ private readonly effectiveDir;
59
60
  /**
60
61
  * Whether keyboard navigation should loop around
61
62
  */
@@ -85,7 +86,7 @@ declare class RdxRovingFocusGroupDirective {
85
86
  private readonly _orientation;
86
87
  readonly orientation: _angular_core.Signal<Orientation>;
87
88
  private readonly _dir;
88
- readonly dir: _angular_core.Signal<Direction>;
89
+ readonly dir: _angular_core.Signal<_radix_ng_primitives_core.Direction>;
89
90
  private readonly _loop;
90
91
  readonly loop: _angular_core.Signal<boolean>;
91
92
  readonly focusableItems: _angular_core.WritableSignal<HTMLElement[]>;
@@ -121,7 +122,7 @@ declare class RdxRovingFocusItemDirective {
121
122
  */
122
123
  protected readonly rootContext: {
123
124
  loop: _angular_core.Signal<boolean>;
124
- dir: _angular_core.Signal<_radix_ng_primitives_roving_focus.Direction>;
125
+ dir: _angular_core.Signal<_radix_ng_primitives_core.Direction>;
125
126
  orientation: _angular_core.Signal<_radix_ng_primitives_roving_focus.Orientation>;
126
127
  currentTabStopId: _angular_core.ModelSignal<string | undefined>;
127
128
  focusableItems: _angular_core.WritableSignal<HTMLElement[]>;
@@ -83,7 +83,7 @@ declare class RdxScrollAreaRoot {
83
83
  private readonly destroyRef;
84
84
  readonly rootId: string;
85
85
  /** Text direction of the scroll area. Affects horizontal (RTL) scroll math. */
86
- readonly dir: _angular_core.InputSignal<Direction>;
86
+ readonly dirInput: _angular_core.InputSignal<Direction | undefined>;
87
87
  readonly direction: Signal<Direction>;
88
88
  /**
89
89
  * The threshold in pixels that must be passed before the overflow edge attributes are applied.
@@ -135,7 +135,7 @@ declare class RdxScrollAreaRoot {
135
135
  onTouchModalityChange(event: PointerEvent): void;
136
136
  onPointerEnterOrMove(event: PointerEvent): void;
137
137
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxScrollAreaRoot, never>;
138
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxScrollAreaRoot, "[rdxScrollAreaRoot]", ["rdxScrollAreaRoot"], { "dir": { "alias": "dir"; "required": false; "isSignal": true; }; "overflowEdgeThreshold": { "alias": "overflowEdgeThreshold"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
138
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxScrollAreaRoot, "[rdxScrollAreaRoot]", ["rdxScrollAreaRoot"], { "dirInput": { "alias": "dir"; "required": false; "isSignal": true; }; "overflowEdgeThreshold": { "alias": "overflowEdgeThreshold"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
139
139
  }
140
140
 
141
141
  interface ScrollAreaViewportContext {