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

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 (83) hide show
  1. package/composite/README.md +3 -0
  2. package/fesm2022/radix-ng-primitives-accordion.mjs +12 -36
  3. package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
  4. package/fesm2022/radix-ng-primitives-checkbox.mjs +33 -18
  5. package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
  6. package/fesm2022/radix-ng-primitives-composite.mjs +515 -0
  7. package/fesm2022/radix-ng-primitives-composite.mjs.map +1 -0
  8. package/fesm2022/radix-ng-primitives-core.mjs +7 -0
  9. package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
  10. package/fesm2022/radix-ng-primitives-dialog.mjs +54 -12
  11. package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
  12. package/fesm2022/radix-ng-primitives-drawer.mjs +442 -2
  13. package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -1
  14. package/fesm2022/radix-ng-primitives-editable.mjs +12 -7
  15. package/fesm2022/radix-ng-primitives-editable.mjs.map +1 -1
  16. package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs +294 -8
  17. package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs.map +1 -1
  18. package/fesm2022/radix-ng-primitives-focus-scope.mjs +9 -0
  19. package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
  20. package/fesm2022/radix-ng-primitives-menu.mjs +71 -20
  21. package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
  22. package/fesm2022/radix-ng-primitives-menubar.mjs +68 -36
  23. package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
  24. package/fesm2022/radix-ng-primitives-navigation-menu.mjs +281 -88
  25. package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
  26. package/fesm2022/radix-ng-primitives-number-field.mjs +7 -2
  27. package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
  28. package/fesm2022/radix-ng-primitives-popover.mjs +117 -35
  29. package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
  30. package/fesm2022/radix-ng-primitives-popper.mjs +73 -65
  31. package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
  32. package/fesm2022/radix-ng-primitives-radio.mjs +77 -36
  33. package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
  34. package/fesm2022/radix-ng-primitives-roving-focus.mjs +40 -8
  35. package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
  36. package/fesm2022/radix-ng-primitives-scroll-area.mjs +56 -25
  37. package/fesm2022/radix-ng-primitives-scroll-area.mjs.map +1 -1
  38. package/fesm2022/radix-ng-primitives-select.mjs +62 -37
  39. package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
  40. package/fesm2022/radix-ng-primitives-slider.mjs +259 -28
  41. package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
  42. package/fesm2022/radix-ng-primitives-stepper.mjs +11 -7
  43. package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
  44. package/fesm2022/radix-ng-primitives-switch.mjs +10 -5
  45. package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
  46. package/fesm2022/radix-ng-primitives-tabs.mjs +64 -30
  47. package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
  48. package/fesm2022/radix-ng-primitives-toggle-group.mjs +69 -19
  49. package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
  50. package/fesm2022/radix-ng-primitives-toggle.mjs +37 -13
  51. package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -1
  52. package/fesm2022/radix-ng-primitives-toolbar.mjs +50 -24
  53. package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
  54. package/fesm2022/radix-ng-primitives-tooltip.mjs +180 -35
  55. package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
  56. package/navigation-menu/README.md +5 -2
  57. package/package.json +5 -1
  58. package/types/radix-ng-primitives-accordion.d.ts +9 -13
  59. package/types/radix-ng-primitives-checkbox.d.ts +27 -15
  60. package/types/radix-ng-primitives-composite.d.ts +152 -0
  61. package/types/radix-ng-primitives-core.d.ts +2 -0
  62. package/types/radix-ng-primitives-dialog.d.ts +13 -2
  63. package/types/radix-ng-primitives-drawer.d.ts +40 -2
  64. package/types/radix-ng-primitives-editable.d.ts +11 -5
  65. package/types/radix-ng-primitives-floating-focus-manager.d.ts +113 -16
  66. package/types/radix-ng-primitives-menu.d.ts +13 -5
  67. package/types/radix-ng-primitives-menubar.d.ts +10 -5
  68. package/types/radix-ng-primitives-navigation-menu.d.ts +65 -33
  69. package/types/radix-ng-primitives-number-field.d.ts +8 -3
  70. package/types/radix-ng-primitives-popover.d.ts +26 -10
  71. package/types/radix-ng-primitives-popper.d.ts +1 -0
  72. package/types/radix-ng-primitives-radio.d.ts +22 -13
  73. package/types/radix-ng-primitives-roving-focus.d.ts +15 -1
  74. package/types/radix-ng-primitives-scroll-area.d.ts +4 -1
  75. package/types/radix-ng-primitives-select.d.ts +16 -20
  76. package/types/radix-ng-primitives-slider.d.ts +60 -9
  77. package/types/radix-ng-primitives-stepper.d.ts +11 -4
  78. package/types/radix-ng-primitives-switch.d.ts +10 -4
  79. package/types/radix-ng-primitives-tabs.d.ts +20 -11
  80. package/types/radix-ng-primitives-toggle-group.d.ts +34 -17
  81. package/types/radix-ng-primitives-toggle.d.ts +14 -7
  82. package/types/radix-ng-primitives-toolbar.d.ts +22 -14
  83. package/types/radix-ng-primitives-tooltip.d.ts +38 -14
@@ -1,7 +1,7 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { Signal } from '@angular/core';
3
3
  import * as _radix_ng_primitives_core from '@radix-ng/primitives/core';
4
- import { RdxFormValueControl, RdxControlValueAccessor, NumberInput, BooleanInput } from '@radix-ng/primitives/core';
4
+ import { RdxFormValueControl, RdxControlValueAccessor, NumberInput, BooleanInput, RdxCancelableChangeEventDetails } from '@radix-ng/primitives/core';
5
5
  import * as _radix_ng_primitives_number_field from '@radix-ng/primitives/number-field';
6
6
  import { NumberFormatter, NumberParser } from '@internationalized/number';
7
7
  import * as i1 from '@radix-ng/primitives/portal';
@@ -35,6 +35,11 @@ declare const REASONS: {
35
35
  readonly none: "none";
36
36
  };
37
37
 
38
+ type RdxNumberFieldValueChangeEventDetails = RdxCancelableChangeEventDetails<NumberFieldChangeReason>;
39
+ interface RdxNumberFieldValueChangeEvent {
40
+ value: number | null;
41
+ eventDetails: RdxNumberFieldValueChangeEventDetails;
42
+ }
38
43
  /**
39
44
  * Groups all parts of the number field and manages its state, parsing/formatting
40
45
  * and value-change logic. A single directive drives the whole family — parts read
@@ -110,7 +115,7 @@ declare class RdxNumberFieldRoot implements RdxFormValueControl<number | null> {
110
115
  /** The controlled value of the field. Use with `(onValueChange)` or two-way `[(value)]`. */
111
116
  readonly value: _angular_core.ModelSignal<number | null>;
112
117
  /** Emitted when the value changes (during interaction or programmatically). */
113
- readonly onValueChange: _angular_core.OutputEmitterRef<number | null>;
118
+ readonly onValueChange: _angular_core.OutputEmitterRef<RdxNumberFieldValueChangeEvent>;
114
119
  /**
115
120
  * Emitted when the value is committed: on blur after typing, or when a pointer is released
116
121
  * after scrubbing or pressing a button. Fires together with `onValueChange` for keyboard input.
@@ -461,4 +466,4 @@ declare class RdxNumberFieldModule {
461
466
  }
462
467
 
463
468
  export { CHANGE_VALUE_TICK_DELAY, DEFAULT_STEP, REASONS, RdxNumberFieldButton, RdxNumberFieldDecrement, RdxNumberFieldGroup, RdxNumberFieldHiddenInput, RdxNumberFieldIncrement, RdxNumberFieldInput, RdxNumberFieldModule, RdxNumberFieldRoot, RdxNumberFieldScrubArea, RdxNumberFieldScrubAreaCursor, SCROLLING_POINTER_MOVE_DISTANCE, START_AUTO_CHANGE_DELAY, createPressAndHold, hasNumberFormatRoundingOptions, injectNumberFieldRootContext, injectNumberFieldScrubAreaContext, numberOrUndefined, provideNumberFieldRootContext, provideNumberFieldScrubAreaContext, removeFloatingPointErrors, toValidatedNumber, useNumberFormatter, useNumberParser };
464
- export type { Direction, InputMode, NumberFieldChangeReason, PressAndHold, PressAndHoldOptions, RdxNumberFieldScrubAreaContext, ValidateOptions };
469
+ export type { Direction, InputMode, NumberFieldChangeReason, PressAndHold, PressAndHoldOptions, RdxNumberFieldScrubAreaContext, RdxNumberFieldValueChangeEvent, RdxNumberFieldValueChangeEventDetails, ValidateOptions };
@@ -3,11 +3,12 @@ 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
5
  import { RdxTransitionStatus, RdxFloatingRootContext, BooleanInput, RdxCancelableChangeEventDetails, NumberInput } from '@radix-ng/primitives/core';
6
+ import * as _radix_ng_primitives_floating_focus_manager from '@radix-ng/primitives/floating-focus-manager';
7
+ import { RdxInteractionType } from '@radix-ng/primitives/floating-focus-manager';
6
8
  import * as i1$1 from '@radix-ng/primitives/popper';
7
9
  import { RdxPopperContentWrapper } from '@radix-ng/primitives/popper';
8
10
  import * as _radix_ng_primitives_popover from '@radix-ng/primitives/popover';
9
11
  import { RdxOutsidePressDomEvent } from '@radix-ng/primitives/dismissable-layer';
10
- import * as i3 from '@radix-ng/primitives/floating-focus-manager';
11
12
 
12
13
  /**
13
14
  * Structural directive that teleports the popover content into a container (default `document.body`)
@@ -73,6 +74,8 @@ interface RdxPopoverRootContext {
73
74
  isPointerDownOnTrigger: Signal<boolean>;
74
75
  /** Whether the current open was initiated by touch (ADR 0016 §3 — gates the anchored scroll lock). */
75
76
  openedByTouch: Signal<boolean>;
77
+ openInteractionType: Signal<RdxInteractionType>;
78
+ closeInteractionType: Signal<RdxInteractionType>;
76
79
  close: (reason?: RdxPopoverOpenChangeReason, event?: Event) => void;
77
80
  cancelHoverClose: () => void;
78
81
  cancelHoverOpen: () => void;
@@ -85,11 +88,14 @@ interface RdxPopoverRootContext {
85
88
  setTitleId: (id: string | undefined) => void;
86
89
  setPointerDownOnTrigger: (pointerDown: boolean) => void;
87
90
  setOpenedByTouch: (value: boolean) => void;
91
+ setTriggerOpenInteractionType: (type: RdxInteractionType) => void;
88
92
  setHoverDelays: (delay: number, closeDelay: number) => void;
89
93
  registerPopupClose: () => () => void;
90
94
  registerTransitionElement: (element: HTMLElement) => () => void;
91
95
  transitionStatus: Signal<RdxPopoverTransitionStatus>;
96
+ beforeContentFocusGuard: Signal<HTMLElement | null>;
92
97
  registerViewport: (onTriggerChange: (previous: HTMLElement, next: HTMLElement) => void) => () => void;
98
+ setBeforeContentFocusGuard: (element: HTMLElement | null) => void;
93
99
  toggle: (triggerId: string, trigger: HTMLElement, payload?: unknown, event?: Event) => void;
94
100
  }
95
101
  declare const injectRdxPopoverRootContext: _radix_ng_primitives_core.InjectContext<RdxPopoverRootContext>;
@@ -140,6 +146,7 @@ declare class RdxPopoverRoot {
140
146
  */
141
147
  readonly handle: _angular_core.InputSignal<RdxPopoverHandle<any> | undefined>;
142
148
  readonly contentId: string;
149
+ readonly beforeContentFocusGuard: _angular_core.WritableSignal<HTMLElement | null>;
143
150
  readonly descriptionId: _angular_core.WritableSignal<string | undefined>;
144
151
  readonly titleId: _angular_core.WritableSignal<string | undefined>;
145
152
  readonly trigger: _angular_core.WritableSignal<HTMLElement | undefined>;
@@ -148,8 +155,11 @@ declare class RdxPopoverRoot {
148
155
  readonly isPointerDownOnTrigger: _angular_core.WritableSignal<boolean>;
149
156
  /** Whether the current open was initiated by touch (ADR 0016 §3 — gates the anchored scroll lock). */
150
157
  readonly openedByTouch: _angular_core.WritableSignal<boolean>;
158
+ readonly openInteractionType: _angular_core.WritableSignal<RdxInteractionType>;
159
+ readonly closeInteractionType: _angular_core.WritableSignal<RdxInteractionType>;
151
160
  readonly popupCloseCount: _angular_core.WritableSignal<number>;
152
161
  private readonly preventUnmountOnClose;
162
+ private readonly pendingTriggerOpenInteractionType;
153
163
  readonly onOpenChange: _angular_core.OutputEmitterRef<RdxPopoverOpenChange>;
154
164
  readonly onOpenChangeComplete: _angular_core.OutputEmitterRef<boolean>;
155
165
  private readonly registeredTriggers;
@@ -165,8 +175,10 @@ declare class RdxPopoverRoot {
165
175
  cancelHoverClose(): void;
166
176
  cancelHoverOpen(): void;
167
177
  setHoverDelays(delay: number, closeDelay: number): void;
178
+ setTriggerOpenInteractionType(type: RdxInteractionType): void;
168
179
  registerTrigger(id: string, trigger: HTMLElement, payload: () => unknown): () => void;
169
180
  registerViewport(onTriggerChange: (previous: HTMLElement, next: HTMLElement) => void): () => boolean;
181
+ setBeforeContentFocusGuard(element: HTMLElement | null): void;
170
182
  registerTransitionElement(element: HTMLElement): () => void;
171
183
  private syncTriggerId;
172
184
  private createOpenChangeEvent;
@@ -174,6 +186,7 @@ declare class RdxPopoverRoot {
174
186
  private clearOpenTimer;
175
187
  private clearCloseTimer;
176
188
  private scheduleInstantReset;
189
+ private consumeOpenInteractionType;
177
190
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxPopoverRoot, never>;
178
191
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxPopoverRoot, "[rdxPopoverRoot]", ["rdxPopoverRoot"], { "open": { "alias": "open"; "required": false; "isSignal": true; }; "defaultOpen": { "alias": "defaultOpen"; "required": false; "isSignal": true; }; "triggerId": { "alias": "triggerId"; "required": false; "isSignal": true; }; "defaultTriggerId": { "alias": "defaultTriggerId"; "required": false; "isSignal": true; }; "modal": { "alias": "modal"; "required": false; "isSignal": true; }; "handle": { "alias": "handle"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "triggerId": "triggerIdChange"; "onOpenChange": "onOpenChange"; "onOpenChangeComplete": "onOpenChangeComplete"; }, never, never, true, [{ directive: typeof i1$1.RdxPopper; inputs: {}; outputs: {}; }]>;
179
192
  }
@@ -184,8 +197,6 @@ declare class RdxPopoverRoot {
184
197
  declare class RdxPopoverTrigger {
185
198
  private readonly parentRootContext;
186
199
  readonly elementRef: ElementRef<HTMLElement>;
187
- /** Pointer type of the most recent `pointerdown`, used to detect a touch open (ADR 0016 §3). */
188
- private lastPointerType;
189
200
  /**
190
201
  * Associates this trigger with a detached popover root.
191
202
  */
@@ -217,6 +228,7 @@ declare class RdxPopoverTrigger {
217
228
  protected readonly triggerId: _angular_core.Signal<string>;
218
229
  protected readonly rootContext: _angular_core.Signal<_radix_ng_primitives_popover.RdxPopoverRootContext | null>;
219
230
  protected readonly isOpen: _angular_core.Signal<boolean>;
231
+ protected readonly triggerInteraction: _radix_ng_primitives_floating_focus_manager.RdxTriggerInteraction;
220
232
  protected readonly isPressed: _angular_core.Signal<boolean>;
221
233
  private readonly generatedId;
222
234
  constructor();
@@ -272,8 +284,8 @@ declare class RdxPopoverPositioner extends RdxPopperContentWrapper {
272
284
  * - No `disablePointerDismissal` — outside-press + focus-out always close.
273
285
  *
274
286
  * Note: a positioned popover does **not** auto-focus into the popup on open (pre-existing — the legacy
275
- * behaved the same; verified). The trap holds focus once it is inside. Auto-focus-on-open + redirecting a
276
- * Tab from the trigger into the popup needs the deferred portal-focus bridge / guards (ADR 0017 §6a).
287
+ * behaved the same; verified). The trap holds focus once it is inside; portal tab-order handoff is owned
288
+ * by `RdxFloatingFocusManager` and anchored to the active trigger below.
277
289
  */
278
290
  declare class RdxPopoverPopup {
279
291
  protected readonly rootContext: _radix_ng_primitives_popover.RdxPopoverRootContext;
@@ -299,7 +311,7 @@ declare class RdxPopoverPopup {
299
311
  readonly closeAutoFocus: _angular_core.OutputRef<Event>;
300
312
  constructor();
301
313
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxPopoverPopup, never>;
302
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxPopoverPopup, "[rdxPopoverPopup]", never, {}, { "escapeKeyDown": "escapeKeyDown"; "pointerDownOutside": "pointerDownOutside"; "focusOutside": "focusOutside"; "interactOutside": "interactOutside"; "openAutoFocus": "openAutoFocus"; "closeAutoFocus": "closeAutoFocus"; }, never, never, true, [{ directive: typeof i1$1.RdxPopperContent; inputs: {}; outputs: {}; }, { directive: typeof _radix_ng_primitives_core.RdxFloatingNodeRegistration; inputs: {}; outputs: {}; }, { directive: typeof i3.RdxFloatingFocusManager; inputs: {}; outputs: {}; }]>;
314
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxPopoverPopup, "[rdxPopoverPopup]", never, {}, { "escapeKeyDown": "escapeKeyDown"; "pointerDownOutside": "pointerDownOutside"; "focusOutside": "focusOutside"; "interactOutside": "interactOutside"; "openAutoFocus": "openAutoFocus"; "closeAutoFocus": "closeAutoFocus"; }, never, never, true, [{ directive: typeof i1$1.RdxPopperContent; inputs: {}; outputs: {}; }, { directive: typeof _radix_ng_primitives_core.RdxFloatingNodeRegistration; inputs: {}; outputs: {}; }, { directive: typeof _radix_ng_primitives_floating_focus_manager.RdxFloatingFocusManager; inputs: { "initialFocus": "initialFocus"; "returnFocus": "finalFocus"; }; outputs: {}; }]>;
303
315
  }
304
316
 
305
317
  /**
@@ -320,10 +332,12 @@ declare class RdxPopoverArrow {
320
332
  */
321
333
  declare class RdxPopoverTitle {
322
334
  private readonly rootContext;
323
- readonly id: string;
335
+ private readonly generatedId;
336
+ readonly idInput: _angular_core.InputSignal<string | undefined>;
337
+ readonly id: _angular_core.Signal<string>;
324
338
  constructor();
325
339
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxPopoverTitle, never>;
326
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxPopoverTitle, "[rdxPopoverTitle]", never, {}, {}, never, never, true, never>;
340
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxPopoverTitle, "[rdxPopoverTitle]", never, { "idInput": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
327
341
  }
328
342
 
329
343
  /**
@@ -331,10 +345,12 @@ declare class RdxPopoverTitle {
331
345
  */
332
346
  declare class RdxPopoverDescription {
333
347
  private readonly rootContext;
334
- readonly id: string;
348
+ private readonly generatedId;
349
+ readonly idInput: _angular_core.InputSignal<string | undefined>;
350
+ readonly id: _angular_core.Signal<string>;
335
351
  constructor();
336
352
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxPopoverDescription, never>;
337
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxPopoverDescription, "[rdxPopoverDescription]", never, {}, {}, never, never, true, never>;
353
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxPopoverDescription, "[rdxPopoverDescription]", never, { "idInput": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
338
354
  }
339
355
 
340
356
  /**
@@ -169,6 +169,7 @@ declare class RdxPopperContentWrapper {
169
169
  private readonly detectOverflowOptions;
170
170
  private readonly resolvedAnchor;
171
171
  private readonly position;
172
+ private positionParams;
172
173
  /**
173
174
  * The last successfully computed position, retained while a new one is being computed.
174
175
  *
@@ -1,11 +1,11 @@
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';
5
- import * as i1 from '@radix-ng/primitives/roving-focus';
6
- import { Orientation } from '@radix-ng/primitives/roving-focus';
4
+ import { BooleanInput, RdxFormValueControl, RdxCancelableChangeEventDetails } from '@radix-ng/primitives/core';
5
+ import * as i1 from '@radix-ng/primitives/composite';
7
6
  import * as i1$1 from '@radix-ng/primitives/visually-hidden';
8
7
 
8
+ type RdxRadioValueChangeReason = 'none';
9
9
  interface RadioGroupProps {
10
10
  value: ModelSignal<string | null>;
11
11
  defaultValue: InputSignal<string | undefined>;
@@ -14,17 +14,23 @@ interface RadioGroupProps {
14
14
  disabled: InputSignalWithTransform<boolean, BooleanInput>;
15
15
  readonly: InputSignalWithTransform<boolean, BooleanInput>;
16
16
  required: InputSignalWithTransform<boolean, BooleanInput>;
17
- orientation: InputSignal<Orientation | undefined>;
18
17
  disabledState: Signal<boolean>;
19
18
  }
20
19
  interface RadioGroupDirective extends RadioGroupProps {
21
- select(value: string | null): void;
20
+ select(value: string | null, event?: Event, reason?: RdxRadioValueChangeReason): void;
22
21
  onTouched(): void;
23
22
  setArrowNavigation(value: boolean): void;
24
23
  isArrowNavigation(): boolean;
25
24
  }
26
25
 
26
+ type RdxRadioValueChangeEventDetails = RdxCancelableChangeEventDetails<RdxRadioValueChangeReason>;
27
+ interface RdxRadioValueChangeEvent {
28
+ value: string;
29
+ eventDetails: RdxRadioValueChangeEventDetails;
30
+ }
27
31
  declare class RdxRadioGroupDirective implements RadioGroupProps, RadioGroupDirective, ControlValueAccessor, RdxFormValueControl<string | null> {
32
+ private readonly elementRef;
33
+ private readonly compositeRoot;
28
34
  readonly value: _angular_core.ModelSignal<string | null>;
29
35
  readonly defaultValue: _angular_core.InputSignal<string | undefined>;
30
36
  readonly name: _angular_core.InputSignal<string | undefined>;
@@ -32,14 +38,16 @@ declare class RdxRadioGroupDirective implements RadioGroupProps, RadioGroupDirec
32
38
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
33
39
  readonly readonly: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
34
40
  readonly required: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
35
- readonly orientation: _angular_core.InputSignal<Orientation | undefined>;
36
41
  /**
37
42
  * Event handler called when the value changes.
38
43
  */
39
- readonly onValueChange: _angular_core.OutputEmitterRef<string>;
44
+ readonly onValueChange: _angular_core.OutputEmitterRef<RdxRadioValueChangeEvent>;
40
45
  private readonly disable;
41
46
  readonly disabledState: _angular_core.Signal<boolean>;
42
47
  private readonly arrowNavigation;
48
+ private readonly itemMetadata;
49
+ private readonly disabledIndices;
50
+ private readonly activeIndex;
43
51
  /**
44
52
  * The callback function to call when the value of the radio group changes.
45
53
  */
@@ -55,7 +63,7 @@ declare class RdxRadioGroupDirective implements RadioGroupProps, RadioGroupDirec
55
63
  * @param value The value of the radio item to select.
56
64
  * @ignore
57
65
  */
58
- select(value: string | null): void;
66
+ select(value: string | null, event?: Event, reason?: RdxRadioValueChangeReason): void;
59
67
  /**
60
68
  * Update the value of the radio group.
61
69
  * @param value The new value of the radio group.
@@ -80,7 +88,7 @@ declare class RdxRadioGroupDirective implements RadioGroupProps, RadioGroupDirec
80
88
  isArrowNavigation(): boolean;
81
89
  protected onKeydown(): void;
82
90
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxRadioGroupDirective, never>;
83
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxRadioGroupDirective, "[rdxRadioRoot]", ["rdxRadioRoot"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "onValueChange": "onValueChange"; }, never, never, true, [{ directive: typeof i1.RdxRovingFocusGroupDirective; inputs: { "dir": "dir"; "orientation": "orientation"; "loop": "loop"; }; outputs: {}; }]>;
91
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxRadioGroupDirective, "[rdxRadioRoot]", ["rdxRadioRoot"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "onValueChange": "onValueChange"; }, never, never, true, [{ directive: typeof i1.RdxCompositeRoot; inputs: {}; outputs: {}; }]>;
84
92
  }
85
93
 
86
94
  declare const RdxRadioItemToken: InjectionToken<RdxRadioItemDirective>;
@@ -89,7 +97,7 @@ declare class RdxRadioItemDirective {
89
97
  private readonly radioGroup;
90
98
  private readonly elementRef;
91
99
  private readonly renderer;
92
- private readonly rovingFocusItem;
100
+ private readonly compositeItem;
93
101
  private readonly destroyRef;
94
102
  private readonly inputElement;
95
103
  private previousCheckedState;
@@ -107,20 +115,20 @@ declare class RdxRadioItemDirective {
107
115
  private readonly ARROW_KEYS;
108
116
  constructor();
109
117
  /** @ignore */
110
- onClick(): void;
118
+ onClick(event?: Event): void;
111
119
  /** @ignore */
112
120
  onKeyDown(event: Event): void;
113
121
  /** @ignore */
114
122
  onKeyUp(): void;
115
123
  /** @ignore */
116
- onFocus(): void;
124
+ onFocus(event?: FocusEvent): void;
117
125
  private isAllowedArrowKey;
118
126
  private createHiddenInput;
119
127
  private syncHiddenInput;
120
128
  private setOptionalAttribute;
121
129
  private setBooleanAttribute;
122
130
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxRadioItemDirective, never>;
123
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxRadioItemDirective, "[rdxRadioItem]", ["rdxRadioItem"], { "value": { "alias": "value"; "required": true; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "nativeButton": { "alias": "nativeButton"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.RdxRovingFocusItemDirective; inputs: { "tabStopId": "id"; "focusable": "focusable"; "active": "active"; "allowShiftKey": "allowShiftKey"; }; outputs: {}; }]>;
131
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxRadioItemDirective, "[rdxRadioItem]", ["rdxRadioItem"], { "value": { "alias": "value"; "required": true; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "nativeButton": { "alias": "nativeButton"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.RdxCompositeItem; inputs: {}; outputs: {}; }]>;
124
132
  }
125
133
 
126
134
  declare class RdxRadioIndicatorDirective {
@@ -146,3 +154,4 @@ declare class RdxRadioItemInputDirective {
146
154
  }
147
155
 
148
156
  export { RdxRadioGroupDirective, RdxRadioIndicatorDirective, RdxRadioItemDirective, RdxRadioItemInputDirective, RdxRadioItemToken, injectRadioItem };
157
+ export type { RdxRadioValueChangeEvent, RdxRadioValueChangeEventDetails, RdxRadioValueChangeReason };
@@ -8,6 +8,7 @@ type Direction = 'ltr' | 'rtl';
8
8
  declare function focusFirst(candidates: HTMLElement[], preventScroll?: boolean, rootNode?: Document | ShadowRoot): void;
9
9
 
10
10
  declare const rootContext: () => {
11
+ enabled: _angular_core.Signal<boolean>;
11
12
  loop: _angular_core.Signal<boolean>;
12
13
  dir: _angular_core.Signal<_radix_ng_primitives_core.Direction>;
13
14
  orientation: _angular_core.Signal<Orientation>;
@@ -20,6 +21,7 @@ declare const rootContext: () => {
20
21
  };
21
22
  type RovingFocusGroupContext = ReturnType<typeof rootContext>;
22
23
  declare const injectRovingFocusGroupContext: _radix_ng_primitives_core.InjectContext<{
24
+ enabled: _angular_core.Signal<boolean>;
23
25
  loop: _angular_core.Signal<boolean>;
24
26
  dir: _angular_core.Signal<_radix_ng_primitives_core.Direction>;
25
27
  orientation: _angular_core.Signal<Orientation>;
@@ -31,6 +33,7 @@ declare const injectRovingFocusGroupContext: _radix_ng_primitives_core.InjectCon
31
33
  unregisterItem: (item: HTMLElement, tabStopId: string) => void;
32
34
  }>;
33
35
  declare const provideRovingFocusGroupContext: (useFactory: () => {
36
+ enabled: _angular_core.Signal<boolean>;
34
37
  loop: _angular_core.Signal<boolean>;
35
38
  dir: _angular_core.Signal<_radix_ng_primitives_core.Direction>;
36
39
  orientation: _angular_core.Signal<Orientation>;
@@ -61,6 +64,11 @@ declare class RdxRovingFocusGroupDirective {
61
64
  * Whether keyboard navigation should loop around
62
65
  */
63
66
  readonly loopInput: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
67
+ /**
68
+ * Whether roving focus behavior is active for the group.
69
+ * @group Props
70
+ */
71
+ readonly enabledInput: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
64
72
  /**
65
73
  * When `true`, will prevent scrolling to the focus item when focused.
66
74
  * @group Props
@@ -89,6 +97,8 @@ declare class RdxRovingFocusGroupDirective {
89
97
  readonly dir: _angular_core.Signal<_radix_ng_primitives_core.Direction>;
90
98
  private readonly _loop;
91
99
  readonly loop: _angular_core.Signal<boolean>;
100
+ private readonly _enabled;
101
+ readonly enabled: _angular_core.Signal<boolean>;
92
102
  readonly focusableItems: _angular_core.WritableSignal<HTMLElement[]>;
93
103
  protected readonly isClickFocus: _angular_core.WritableSignal<boolean>;
94
104
  readonly isTabbingBackOut: _angular_core.WritableSignal<boolean>;
@@ -98,6 +108,7 @@ declare class RdxRovingFocusGroupDirective {
98
108
  setOrientation(value: Orientation): void;
99
109
  setDir(value: Direction): void;
100
110
  setLoop(value: boolean): void;
111
+ setEnabled(value: boolean): void;
101
112
  /** @ignore */
102
113
  registerItem(item: HTMLElement, tabStopId: string): void;
103
114
  /** @ignore */
@@ -107,7 +118,7 @@ declare class RdxRovingFocusGroupDirective {
107
118
  /** @ignore */
108
119
  handleFocus(event: Event): void;
109
120
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxRovingFocusGroupDirective, never>;
110
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxRovingFocusGroupDirective, "[rdxRovingFocusGroup]", never, { "orientationInput": { "alias": "orientation"; "required": false; "isSignal": true; }; "dirInput": { "alias": "dir"; "required": false; "isSignal": true; }; "loopInput": { "alias": "loop"; "required": false; "isSignal": true; }; "preventScrollOnEntryFocus": { "alias": "preventScrollOnEntryFocus"; "required": false; "isSignal": true; }; "defaultCurrentTabStopId": { "alias": "defaultCurrentTabStopId"; "required": false; "isSignal": true; }; "currentTabStopId": { "alias": "currentTabStopId"; "required": false; "isSignal": true; }; }, { "currentTabStopId": "currentTabStopIdChange"; "entryFocus": "entryFocus"; }, never, never, true, never>;
121
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxRovingFocusGroupDirective, "[rdxRovingFocusGroup]", never, { "orientationInput": { "alias": "orientation"; "required": false; "isSignal": true; }; "dirInput": { "alias": "dir"; "required": false; "isSignal": true; }; "loopInput": { "alias": "loop"; "required": false; "isSignal": true; }; "enabledInput": { "alias": "enabled"; "required": false; "isSignal": true; }; "preventScrollOnEntryFocus": { "alias": "preventScrollOnEntryFocus"; "required": false; "isSignal": true; }; "defaultCurrentTabStopId": { "alias": "defaultCurrentTabStopId"; "required": false; "isSignal": true; }; "currentTabStopId": { "alias": "currentTabStopId"; "required": false; "isSignal": true; }; }, { "currentTabStopId": "currentTabStopIdChange"; "entryFocus": "entryFocus"; }, never, never, true, never>;
111
122
  }
112
123
 
113
124
  /**
@@ -121,6 +132,7 @@ declare class RdxRovingFocusItemDirective {
121
132
  * (e.g. a standalone Toggle), it degrades to a plain element and does not manage focus.
122
133
  */
123
134
  protected readonly rootContext: {
135
+ enabled: _angular_core.Signal<boolean>;
124
136
  loop: _angular_core.Signal<boolean>;
125
137
  dir: _angular_core.Signal<_radix_ng_primitives_core.Direction>;
126
138
  orientation: _angular_core.Signal<_radix_ng_primitives_roving_focus.Orientation>;
@@ -155,6 +167,7 @@ declare class RdxRovingFocusItemDirective {
155
167
  protected readonly isCurrentTabStop: _angular_core.Signal<boolean>;
156
168
  protected readonly focusable: _angular_core.WritableSignal<boolean>;
157
169
  protected readonly active: _angular_core.WritableSignal<boolean>;
170
+ protected readonly enabled: _angular_core.WritableSignal<boolean>;
158
171
  private readonly tabStopId;
159
172
  /**
160
173
  * The roving tabindex. Without a group the item keeps its natural tab order (`null`); inside a
@@ -163,6 +176,7 @@ declare class RdxRovingFocusItemDirective {
163
176
  protected readonly tabindex: _angular_core.Signal<-1 | 0 | null>;
164
177
  constructor();
165
178
  setFocusable(value: boolean): void;
179
+ setEnabled(value: boolean): void;
166
180
  setActive(value: boolean): void;
167
181
  setTabStopId(value: string): void;
168
182
  /** @ignore */
@@ -42,6 +42,7 @@ interface ScrollAreaRootContext {
42
42
  yStart: number;
43
43
  yEnd: number;
44
44
  }>;
45
+ readonly disableStyleElements: Signal<boolean>;
45
46
  readonly hovering: Signal<boolean>;
46
47
  readonly scrollingX: Signal<boolean>;
47
48
  readonly scrollingY: Signal<boolean>;
@@ -90,6 +91,7 @@ declare class RdxScrollAreaRoot {
90
91
  * Accepts a single number for all edges or an object to configure them individually.
91
92
  */
92
93
  readonly overflowEdgeThreshold: _angular_core.InputSignal<OverflowEdgeThreshold>;
94
+ readonly disableStyleElements: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
93
95
  readonly normalizedThreshold: Signal<{
94
96
  xStart: number;
95
97
  xEnd: number;
@@ -135,7 +137,7 @@ declare class RdxScrollAreaRoot {
135
137
  onTouchModalityChange(event: PointerEvent): void;
136
138
  onPointerEnterOrMove(event: PointerEvent): void;
137
139
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxScrollAreaRoot, 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>;
140
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxScrollAreaRoot, "[rdxScrollAreaRoot]", ["rdxScrollAreaRoot"], { "dirInput": { "alias": "dir"; "required": false; "isSignal": true; }; "overflowEdgeThreshold": { "alias": "overflowEdgeThreshold"; "required": false; "isSignal": true; }; "disableStyleElements": { "alias": "disableStyleElements"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
139
141
  }
140
142
 
141
143
  interface ScrollAreaViewportContext {
@@ -155,6 +157,7 @@ declare class RdxScrollAreaViewport {
155
157
  private readonly element;
156
158
  private readonly destroyRef;
157
159
  private readonly isBrowser;
160
+ private readonly cspNonce;
158
161
  private programmaticScroll;
159
162
  private lastMeasuredMetrics;
160
163
  private scrollEndTimer;
@@ -1,17 +1,17 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { InjectionToken, OutputRef, Signal, ElementRef } from '@angular/core';
3
3
  import * as _radix_ng_primitives_core from '@radix-ng/primitives/core';
4
- import { AcceptableValue, RdxFloatingRootContext, Direction, ItemValueComparator } from '@radix-ng/primitives/core';
4
+ import { AcceptableValue, RdxCancelableChangeEventDetails, RdxFloatingRootContext, Direction, ItemValueComparator } from '@radix-ng/primitives/core';
5
5
  import * as _radix_ng_primitives_select from '@radix-ng/primitives/select';
6
- import * as _radix_ng_primitives_types_radix_ng_primitives_floating_focus_manager from '@radix-ng/primitives/types/radix-ng-primitives-floating-focus-manager';
6
+ import * as _radix_ng_primitives_floating_focus_manager from '@radix-ng/primitives/floating-focus-manager';
7
+ import { RdxInteractionType } from '@radix-ng/primitives/floating-focus-manager';
7
8
  import * as i1 from '@radix-ng/primitives/collection';
8
9
  import { RdxCollectionItem } from '@radix-ng/primitives/collection';
9
10
  import { RdxOutsidePressDomEvent } from '@radix-ng/primitives/dismissable-layer';
10
11
  import * as i1$1 from '@radix-ng/primitives/popper';
11
12
  import { RdxPopperContentWrapper } from '@radix-ng/primitives/popper';
12
- import * as i2 from '@radix-ng/primitives/focus-scope';
13
+ import * as _radix_ng_primitives_types_radix_ng_primitives_floating_focus_manager from '@radix-ng/primitives/types/radix-ng-primitives-floating-focus-manager';
13
14
  import * as _radix_ng_primitives_types_radix_ng_primitives_core from '@radix-ng/primitives/types/radix-ng-primitives-core';
14
- import { RdxInteractionType } from '@radix-ng/primitives/floating-focus-manager';
15
15
  import * as _radix_ng_primitives_types_radix_ng_primitives_collection from '@radix-ng/primitives/types/radix-ng-primitives-collection';
16
16
  import * as i1$2 from '@radix-ng/primitives/portal';
17
17
 
@@ -311,9 +311,9 @@ declare class RdxSelectPopup {
311
311
  itemToStringLabel: _angular_core.InputSignal<((value: AcceptableValue) => string) | undefined>;
312
312
  open: _angular_core.ModelSignal<boolean>;
313
313
  openedByTouch: _angular_core.WritableSignal<boolean>;
314
- openMethod: Signal<_radix_ng_primitives_types_radix_ng_primitives_floating_focus_manager.RdxInteractionType>;
315
- openInteractionType: _angular_core.WritableSignal<_radix_ng_primitives_types_radix_ng_primitives_floating_focus_manager.RdxInteractionType>;
316
- closeInteractionType: _angular_core.WritableSignal<_radix_ng_primitives_types_radix_ng_primitives_floating_focus_manager.RdxInteractionType>;
314
+ openMethod: Signal<_radix_ng_primitives_floating_focus_manager.RdxInteractionType>;
315
+ openInteractionType: _angular_core.WritableSignal<_radix_ng_primitives_floating_focus_manager.RdxInteractionType>;
316
+ closeInteractionType: _angular_core.WritableSignal<_radix_ng_primitives_floating_focus_manager.RdxInteractionType>;
317
317
  disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
318
318
  modal: _angular_core.InputSignalWithTransform<boolean, unknown>;
319
319
  isEmptyModelValue: Signal<boolean>;
@@ -370,7 +370,7 @@ declare class RdxSelectPopup {
370
370
  isKeyboardActive(): boolean;
371
371
  handleKeyDown(event: Event): void;
372
372
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxSelectPopup, never>;
373
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSelectPopup, "[rdxSelectPopup]", never, {}, { "escapeKeyDown": "escapeKeyDown"; "pointerDownOutside": "pointerDownOutside"; }, never, never, true, [{ directive: typeof i1$1.RdxPopperContent; inputs: {}; outputs: {}; }, { directive: typeof i2.RdxFocusScope; inputs: {}; outputs: {}; }, { directive: typeof _radix_ng_primitives_core.RdxFloatingNodeRegistration; inputs: {}; outputs: {}; }, { directive: typeof i1.RdxCollectionProvider; inputs: {}; outputs: {}; }]>;
373
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSelectPopup, "[rdxSelectPopup]", never, {}, { "escapeKeyDown": "escapeKeyDown"; "pointerDownOutside": "pointerDownOutside"; }, never, never, true, [{ directive: typeof i1$1.RdxPopperContent; inputs: {}; outputs: {}; }, { directive: typeof _radix_ng_primitives_floating_focus_manager.RdxFloatingFocusManager; inputs: { "returnFocus": "finalFocus"; }; outputs: {}; }, { directive: typeof _radix_ng_primitives_core.RdxFloatingNodeRegistration; inputs: {}; outputs: {}; }, { directive: typeof i1.RdxCollectionProvider; inputs: {}; outputs: {}; }]>;
374
374
  }
375
375
 
376
376
  /**
@@ -423,18 +423,12 @@ interface SelectOption {
423
423
  type RdxSelectOpenMethod = RdxInteractionType;
424
424
  type RdxSelectOpenChangeReason = 'trigger-press' | 'item-press' | 'outside-press' | 'escape-key' | 'window-resize' | 'focus-out' | 'list-navigation' | 'cancel-open' | 'none';
425
425
  type RdxSelectValueChangeReason = RdxSelectOpenChangeReason;
426
- interface RdxSelectChangeEventDetails<Reason extends string = string> {
427
- reason: Reason;
428
- event: Event;
429
- cancel: () => void;
430
- isCanceled: () => boolean;
431
- }
432
- type RdxSelectOpenChangeEventDetails = RdxSelectChangeEventDetails<RdxSelectOpenChangeReason>;
426
+ type RdxSelectOpenChangeEventDetails = RdxCancelableChangeEventDetails<RdxSelectOpenChangeReason>;
433
427
  interface RdxSelectOpenChangeEvent {
434
428
  open: boolean;
435
429
  eventDetails: RdxSelectOpenChangeEventDetails;
436
430
  }
437
- type RdxSelectValueChangeEventDetails = RdxSelectChangeEventDetails<RdxSelectValueChangeReason>;
431
+ type RdxSelectValueChangeEventDetails = RdxCancelableChangeEventDetails<RdxSelectValueChangeReason>;
438
432
  interface RdxSelectValueChangeEvent {
439
433
  value: AcceptableValue | AcceptableValue[];
440
434
  eventDetails: RdxSelectValueChangeEventDetails;
@@ -534,6 +528,7 @@ declare const provideSelectRootContext: (useFactory: () => {
534
528
  onOpenChange: (value: boolean, reason?: RdxSelectOpenChangeReason, event?: Event) => boolean;
535
529
  }) => _angular_core.Provider;
536
530
  declare class RdxSelectRoot {
531
+ readonly contentId: string;
537
532
  readonly open: _angular_core.ModelSignal<boolean>;
538
533
  /** Whether the current open was initiated by **touch** (ADR 0016 §3 — gates the anchored scroll lock). */
539
534
  readonly openedByTouch: _angular_core.WritableSignal<boolean>;
@@ -610,9 +605,9 @@ declare class RdxSelectTrigger {
610
605
  itemToStringLabel: _angular_core.InputSignal<((value: _radix_ng_primitives_core.AcceptableValue) => string) | undefined>;
611
606
  open: _angular_core.ModelSignal<boolean>;
612
607
  openedByTouch: _angular_core.WritableSignal<boolean>;
613
- openMethod: _angular_core.Signal<_radix_ng_primitives_types_radix_ng_primitives_floating_focus_manager.RdxInteractionType>;
614
- openInteractionType: _angular_core.WritableSignal<_radix_ng_primitives_types_radix_ng_primitives_floating_focus_manager.RdxInteractionType>;
615
- closeInteractionType: _angular_core.WritableSignal<_radix_ng_primitives_types_radix_ng_primitives_floating_focus_manager.RdxInteractionType>;
608
+ openMethod: _angular_core.Signal<_radix_ng_primitives_floating_focus_manager.RdxInteractionType>;
609
+ openInteractionType: _angular_core.WritableSignal<_radix_ng_primitives_floating_focus_manager.RdxInteractionType>;
610
+ closeInteractionType: _angular_core.WritableSignal<_radix_ng_primitives_floating_focus_manager.RdxInteractionType>;
616
611
  disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
617
612
  modal: _angular_core.InputSignalWithTransform<boolean, unknown>;
618
613
  isEmptyModelValue: _angular_core.Signal<boolean>;
@@ -632,6 +627,7 @@ declare class RdxSelectTrigger {
632
627
  readonly id: _angular_core.InputSignal<string>;
633
628
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
634
629
  readonly isDisabled: _angular_core.Signal<boolean>;
630
+ protected readonly triggerInteraction: _radix_ng_primitives_floating_focus_manager.RdxTriggerInteraction;
635
631
  protected readonly invalidState: _angular_core.Signal<boolean>;
636
632
  protected readonly requiredState: _angular_core.Signal<boolean>;
637
633
  protected readonly filledState: _angular_core.Signal<boolean>;
@@ -703,4 +699,4 @@ declare function focusFirst(candidates: HTMLElement[]): void;
703
699
  declare const _importsSelect: (typeof RdxSelectGroupLabel)[];
704
700
 
705
701
  export { CONTENT_MARGIN, OPEN_KEYS, RDX_SELECT_POSITIONER_TOKEN, RdxSelectBackdrop, RdxSelectGroup, RdxSelectGroupLabel, RdxSelectIcon, RdxSelectItem, RdxSelectItemIndicator, RdxSelectItemText, RdxSelectList, RdxSelectPopup, RdxSelectPortal, RdxSelectPortalMisuseGuard, RdxSelectPositioner, RdxSelectRoot, RdxSelectSeparator, RdxSelectTrigger, RdxSelectValue, SELECTION_KEYS, _importsSelect, compare, focusFirst, injectSelectItemContext, injectSelectPopupContext, injectSelectRootContext, provideSelectItemContext, provideSelectPopupContext, provideSelectRootContext, shouldShowPlaceholder, valueComparator };
706
- export type { RdxPositionerImpl, RdxSelectChangeEventDetails, RdxSelectItemContext, RdxSelectOpenChangeEvent, RdxSelectOpenChangeEventDetails, RdxSelectOpenChangeReason, RdxSelectOpenMethod, RdxSelectPopupContext, RdxSelectRootContext, RdxSelectValueChangeEvent, RdxSelectValueChangeEventDetails, RdxSelectValueChangeReason, SelectEvent, SelectOption };
702
+ export type { RdxPositionerImpl, RdxSelectItemContext, RdxSelectOpenChangeEvent, RdxSelectOpenChangeEventDetails, RdxSelectOpenChangeReason, RdxSelectOpenMethod, RdxSelectPopupContext, RdxSelectRootContext, RdxSelectValueChangeEvent, RdxSelectValueChangeEventDetails, RdxSelectValueChangeReason, SelectEvent, SelectOption };