@radix-ng/primitives 1.0.1 → 1.0.3

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 (40) hide show
  1. package/composite/README.md +1 -1
  2. package/fesm2022/radix-ng-primitives-accordion.mjs +18 -36
  3. package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
  4. package/fesm2022/radix-ng-primitives-checkbox.mjs +134 -58
  5. package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
  6. package/fesm2022/radix-ng-primitives-collapsible.mjs +113 -64
  7. package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -1
  8. package/fesm2022/radix-ng-primitives-composite.mjs +127 -43
  9. package/fesm2022/radix-ng-primitives-composite.mjs.map +1 -1
  10. package/fesm2022/radix-ng-primitives-menu.mjs +288 -63
  11. package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
  12. package/fesm2022/radix-ng-primitives-menubar.mjs +24 -1
  13. package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
  14. package/fesm2022/radix-ng-primitives-select.mjs +56 -29
  15. package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
  16. package/fesm2022/radix-ng-primitives-slider.mjs +57 -13
  17. package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
  18. package/fesm2022/radix-ng-primitives-tabs.mjs +292 -59
  19. package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
  20. package/fesm2022/radix-ng-primitives-toolbar.mjs +19 -13
  21. package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
  22. package/package.json +2 -10
  23. package/types/radix-ng-primitives-accordion.d.ts +7 -15
  24. package/types/radix-ng-primitives-checkbox.d.ts +98 -70
  25. package/types/radix-ng-primitives-collapsible.d.ts +44 -24
  26. package/types/radix-ng-primitives-composite.d.ts +58 -15
  27. package/types/radix-ng-primitives-menu.d.ts +44 -16
  28. package/types/radix-ng-primitives-menubar.d.ts +2 -0
  29. package/types/radix-ng-primitives-select.d.ts +46 -32
  30. package/types/radix-ng-primitives-slider.d.ts +19 -4
  31. package/types/radix-ng-primitives-tabs.d.ts +63 -11
  32. package/types/radix-ng-primitives-toolbar.d.ts +80 -73
  33. package/collection/README.md +0 -1
  34. package/fesm2022/radix-ng-primitives-collection.mjs +0 -72
  35. package/fesm2022/radix-ng-primitives-collection.mjs.map +0 -1
  36. package/fesm2022/radix-ng-primitives-roving-focus.mjs +0 -420
  37. package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +0 -1
  38. package/roving-focus/README.md +0 -3
  39. package/types/radix-ng-primitives-collection.d.ts +0 -44
  40. package/types/radix-ng-primitives-roving-focus.d.ts +0 -201
@@ -7,8 +7,8 @@ import { RdxInteractionType } from '@radix-ng/primitives/floating-focus-manager'
7
7
  import * as i1 from '@radix-ng/primitives/popper';
8
8
  import { RdxPopperContentWrapper } from '@radix-ng/primitives/popper';
9
9
  import * as _radix_ng_primitives_menu from '@radix-ng/primitives/menu';
10
- import * as i2 from '@radix-ng/primitives/composite';
11
- import * as i1$1 from '@radix-ng/primitives/portal';
10
+ import * as i1$1 from '@radix-ng/primitives/composite';
11
+ import * as i1$2 from '@radix-ng/primitives/portal';
12
12
  import { RdxOutsidePressDomEvent } from '@radix-ng/primitives/dismissable-layer';
13
13
 
14
14
  type RdxMenuTransitionStatus = 'starting' | 'ending' | undefined;
@@ -48,6 +48,7 @@ interface RdxMenuOpenChange {
48
48
  interface RdxMenuRootContext {
49
49
  isOpen: Signal<boolean>;
50
50
  present: Signal<boolean>;
51
+ activeIndex: Signal<number | null>;
51
52
  disabled: Signal<boolean>;
52
53
  modal: Signal<boolean>;
53
54
  loopFocus: Signal<boolean>;
@@ -75,6 +76,7 @@ interface RdxMenuRootContext {
75
76
  beforeContentFocusGuard: Signal<HTMLElement | null>;
76
77
  transitionStatus: Signal<RdxMenuTransitionStatus>;
77
78
  close: (reason?: RdxMenuOpenChangeReason, event?: Event) => void;
79
+ setActiveIndex: (index: number | null) => void;
78
80
  /** Close this menu and every ancestor — used by item selection (the whole menu dismisses). */
79
81
  closeEntireMenu: (reason?: RdxMenuOpenChangeReason, event?: Event) => void;
80
82
  toggle: (reason?: RdxMenuOpenChangeReason, event?: Event) => void;
@@ -136,7 +138,7 @@ declare const provideRdxMenuRootContext: (useFactory: () => RdxMenuRootContext)
136
138
  */
137
139
  declare class RdxMenuRoot {
138
140
  private readonly popper;
139
- private readonly parentRoot;
141
+ readonly parentRoot: RdxMenuRoot | null;
140
142
  private readonly providedDirection;
141
143
  /**
142
144
  * The shared per-popup floating context (ADR 0015 §1) — `open` mirrors this menu's open state, the
@@ -179,6 +181,7 @@ declare class RdxMenuRoot {
179
181
  readonly popupElement: _angular_core.WritableSignal<HTMLElement | undefined>;
180
182
  readonly beforeContentFocusGuard: _angular_core.WritableSignal<HTMLElement | null>;
181
183
  readonly transitionStatus: Signal<_radix_ng_primitives_core.RdxTransitionStatus>;
184
+ readonly activeIndex: _angular_core.WritableSignal<number | null>;
182
185
  /** Whether the popup grabs focus when it opens. Set false for menubar hover-switching. */
183
186
  readonly autoFocus: _angular_core.WritableSignal<RdxMenuAutoFocus>;
184
187
  readonly isSubmenu: _angular_core.WritableSignal<boolean>;
@@ -210,6 +213,7 @@ declare class RdxMenuRoot {
210
213
  close(reason?: RdxMenuOpenChangeReason, event?: Event): void;
211
214
  toggle(reason?: RdxMenuOpenChangeReason, event?: Event): void;
212
215
  markAsContextMenu(): void;
216
+ setActiveIndex(index: number | null): void;
213
217
  setAllowMouseUpTrigger(value: boolean): void;
214
218
  /**
215
219
  * Close this menu **and every ancestor menu** in the chain. Selecting an item dismisses the whole
@@ -282,7 +286,7 @@ declare class RdxMenuTrigger {
282
286
  private clearMouseUpGuard;
283
287
  private restoreKeyboardPopupFocus;
284
288
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxMenuTrigger, never>;
285
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuTrigger, "[rdxMenuTrigger]", ["rdxMenuTrigger"], { "nativeButton": { "alias": "nativeButton"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "openOnHover": { "alias": "openOnHover"; "required": false; "isSignal": true; }; "delay": { "alias": "delay"; "required": false; "isSignal": true; }; "closeDelay": { "alias": "closeDelay"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.RdxPopperAnchor; inputs: {}; outputs: {}; }, { directive: typeof i2.RdxCompositeItem; inputs: {}; outputs: {}; }]>;
289
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuTrigger, "[rdxMenuTrigger]", ["rdxMenuTrigger"], { "nativeButton": { "alias": "nativeButton"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "openOnHover": { "alias": "openOnHover"; "required": false; "isSignal": true; }; "delay": { "alias": "delay"; "required": false; "isSignal": true; }; "closeDelay": { "alias": "closeDelay"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.RdxPopperAnchor; inputs: {}; outputs: {}; }]>;
286
290
  }
287
291
 
288
292
  /**
@@ -296,6 +300,8 @@ declare class RdxMenuTrigger {
296
300
  declare class RdxMenuSubTrigger {
297
301
  protected readonly submenuContext: _radix_ng_primitives_menu.RdxMenuRootContext;
298
302
  private readonly submenuRoot;
303
+ protected readonly parentMenuRoot: RdxMenuRoot | null;
304
+ private readonly listItem;
299
305
  private readonly elementRef;
300
306
  private readonly destroyRef;
301
307
  private readonly isBrowser;
@@ -319,7 +325,7 @@ declare class RdxMenuSubTrigger {
319
325
  readonly closeDelay: _angular_core.InputSignalWithTransform<number | undefined, NumberInput>;
320
326
  /** Explicit typeahead label. When set, overrides textContent for character search. */
321
327
  readonly label: _angular_core.InputSignal<string | undefined>;
322
- /** Highlighted when focused OR while the submenu is open. */
328
+ /** Highlighted when active in the parent menu or while the submenu is open. */
323
329
  protected readonly highlighted: _angular_core.Signal<boolean>;
324
330
  protected readonly effectiveDisabled: _angular_core.Signal<boolean>;
325
331
  protected readonly nativeButtonState: _angular_core.Signal<boolean>;
@@ -337,8 +343,10 @@ declare class RdxMenuSubTrigger {
337
343
  private closeSiblingSubmenus;
338
344
  private clearSiblingHighlights;
339
345
  private focusFirstSubmenuItem;
346
+ private setParentActiveIndex;
347
+ private clearParentActiveIndex;
340
348
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxMenuSubTrigger, never>;
341
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuSubTrigger, "[rdxMenuSubTrigger]", ["rdxMenuSubTrigger"], { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "nativeButton": { "alias": "nativeButton"; "required": false; "isSignal": true; }; "openOnHover": { "alias": "openOnHover"; "required": false; "isSignal": true; }; "delay": { "alias": "delay"; "required": false; "isSignal": true; }; "closeDelay": { "alias": "closeDelay"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.RdxPopperAnchor; inputs: {}; outputs: {}; }]>;
349
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuSubTrigger, "[rdxMenuSubTrigger]", ["rdxMenuSubTrigger"], { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "nativeButton": { "alias": "nativeButton"; "required": false; "isSignal": true; }; "openOnHover": { "alias": "openOnHover"; "required": false; "isSignal": true; }; "delay": { "alias": "delay"; "required": false; "isSignal": true; }; "closeDelay": { "alias": "closeDelay"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.RdxPopperAnchor; inputs: {}; outputs: {}; }, { directive: typeof i1$1.RdxCompositeListItem; inputs: {}; outputs: {}; }]>;
342
350
  }
343
351
 
344
352
  /**
@@ -352,7 +360,7 @@ declare class RdxMenuSubTrigger {
352
360
  */
353
361
  declare class RdxMenuPortal {
354
362
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxMenuPortal, never>;
355
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuPortal, "ng-template[rdxMenuPortal]", ["rdxMenuPortal"], {}, {}, never, never, true, [{ directive: typeof i1$1.RdxPortalPresence; inputs: { "container": "container"; }; outputs: {}; }]>;
363
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuPortal, "ng-template[rdxMenuPortal]", ["rdxMenuPortal"], {}, {}, never, never, true, [{ directive: typeof i1$2.RdxPortalPresence; inputs: { "container": "container"; }; outputs: {}; }]>;
356
364
  }
357
365
  /**
358
366
  * Dev-mode guard: `rdxMenuPortal` is a structural directive. The old `<div rdxMenuPortal>` markup
@@ -388,6 +396,7 @@ declare class RdxMenuPopup {
388
396
  private readonly registration;
389
397
  private readonly focusManager;
390
398
  private readonly focusScope;
399
+ private readonly compositeList;
391
400
  private readonly wrapper;
392
401
  private readonly elementRef;
393
402
  private search;
@@ -423,8 +432,11 @@ declare class RdxMenuPopup {
423
432
  protected handleKeydown(event: KeyboardEvent): void;
424
433
  private scheduleSubmenuKeyboardFocus;
425
434
  private applySubmenuKeyboardFocus;
435
+ private menuItems;
436
+ private currentItemIndex;
437
+ private focusMenuItem;
426
438
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxMenuPopup, never>;
427
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuPopup, "[rdxMenuPopup]", ["rdxMenuPopup"], {}, { "escapeKeyDown": "escapeKeyDown"; "pointerDownOutside": "pointerDownOutside"; "focusOutside": "focusOutside"; "interactOutside": "interactOutside"; "openAutoFocus": "openAutoFocus"; "closeAutoFocus": "closeAutoFocus"; }, never, never, true, [{ directive: typeof i1.RdxPopperContent; inputs: {}; outputs: {}; }, { directive: typeof _radix_ng_primitives_core.RdxFloatingNodeRegistration; inputs: {}; outputs: {}; }, { directive: typeof _radix_ng_primitives_floating_focus_manager.RdxFloatingFocusManager; inputs: {}; outputs: {}; }]>;
439
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuPopup, "[rdxMenuPopup]", ["rdxMenuPopup"], {}, { "escapeKeyDown": "escapeKeyDown"; "pointerDownOutside": "pointerDownOutside"; "focusOutside": "focusOutside"; "interactOutside": "interactOutside"; "openAutoFocus": "openAutoFocus"; "closeAutoFocus": "closeAutoFocus"; }, never, never, true, [{ directive: typeof i1.RdxPopperContent; inputs: {}; outputs: {}; }, { directive: typeof _radix_ng_primitives_core.RdxFloatingNodeRegistration; inputs: {}; outputs: {}; }, { directive: typeof _radix_ng_primitives_floating_focus_manager.RdxFloatingFocusManager; inputs: {}; outputs: {}; }, { directive: typeof i1$1.RdxCompositeList; inputs: {}; outputs: {}; }]>;
428
440
  }
429
441
 
430
442
  /**
@@ -488,7 +500,8 @@ declare class RdxMenuArrow {
488
500
  * An individual menu item.
489
501
  */
490
502
  declare class RdxMenuItem {
491
- private readonly rootContext;
503
+ protected readonly rootContext: _radix_ng_primitives_menu.RdxMenuRootContext | null;
504
+ private readonly listItem;
492
505
  private readonly elementRef;
493
506
  private readonly isFocused;
494
507
  /** Whether this item is disabled. */
@@ -501,6 +514,7 @@ declare class RdxMenuItem {
501
514
  readonly onSelect: _angular_core.OutputEmitterRef<void>;
502
515
  protected readonly highlighted: _angular_core.Signal<boolean>;
503
516
  protected readonly effectiveDisabled: _angular_core.Signal<boolean>;
517
+ constructor();
504
518
  onFocus(): void;
505
519
  onBlur(): void;
506
520
  onPointerMove(event: PointerEvent): void;
@@ -508,15 +522,18 @@ declare class RdxMenuItem {
508
522
  onItemClick(): void;
509
523
  onMouseUp(event: MouseEvent): void;
510
524
  protected onActivate(event: Event): void;
525
+ private setActiveIndex;
526
+ private clearActiveIndex;
511
527
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxMenuItem, never>;
512
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuItem, "[rdxMenuItem]", ["rdxMenuItem"], { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "closeOnClick": { "alias": "closeOnClick"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, { "onSelect": "onSelect"; }, never, never, true, never>;
528
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuItem, "[rdxMenuItem]", ["rdxMenuItem"], { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "closeOnClick": { "alias": "closeOnClick"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, { "onSelect": "onSelect"; }, never, never, true, [{ directive: typeof i1$1.RdxCompositeListItem; inputs: {}; outputs: {}; }]>;
513
529
  }
514
530
 
515
531
  /**
516
532
  * A menu item that renders as a link.
517
533
  */
518
534
  declare class RdxMenuLinkItem {
519
- private readonly rootContext;
535
+ protected readonly rootContext: _radix_ng_primitives_menu.RdxMenuRootContext | null;
536
+ private readonly listItem;
520
537
  private readonly elementRef;
521
538
  private readonly isFocused;
522
539
  /** Whether this item is disabled. */
@@ -529,6 +546,7 @@ declare class RdxMenuLinkItem {
529
546
  readonly onSelect: _angular_core.OutputEmitterRef<void>;
530
547
  protected readonly highlighted: _angular_core.Signal<boolean>;
531
548
  protected readonly effectiveDisabled: _angular_core.Signal<boolean>;
549
+ constructor();
532
550
  onFocus(): void;
533
551
  onBlur(): void;
534
552
  onPointerMove(event: PointerEvent): void;
@@ -536,8 +554,10 @@ declare class RdxMenuLinkItem {
536
554
  onItemClick(event: MouseEvent): void;
537
555
  onMouseUp(event: MouseEvent): void;
538
556
  protected onActivate(event: Event): void;
557
+ private setActiveIndex;
558
+ private clearActiveIndex;
539
559
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxMenuLinkItem, never>;
540
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuLinkItem, "a[rdxMenuLinkItem]", ["rdxMenuLinkItem"], { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "closeOnClick": { "alias": "closeOnClick"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, { "onSelect": "onSelect"; }, never, never, true, never>;
560
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuLinkItem, "a[rdxMenuLinkItem]", ["rdxMenuLinkItem"], { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "closeOnClick": { "alias": "closeOnClick"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, { "onSelect": "onSelect"; }, never, never, true, [{ directive: typeof i1$1.RdxCompositeListItem; inputs: {}; outputs: {}; }]>;
541
561
  }
542
562
 
543
563
  /**
@@ -581,7 +601,8 @@ declare const provideRdxMenuCheckboxItemContext: (useFactory: () => RdxMenuCheck
581
601
  * A menu item that can be checked or unchecked.
582
602
  */
583
603
  declare class RdxMenuCheckboxItem {
584
- private readonly rootContext;
604
+ protected readonly rootContext: _radix_ng_primitives_menu.RdxMenuRootContext | null;
605
+ private readonly listItem;
585
606
  private readonly elementRef;
586
607
  private readonly isFocused;
587
608
  /** Whether this item is disabled. */
@@ -598,6 +619,7 @@ declare class RdxMenuCheckboxItem {
598
619
  protected readonly effectiveDisabled: Signal<boolean>;
599
620
  protected readonly isIndeterminate: typeof isIndeterminate;
600
621
  protected readonly getCheckedState: typeof getCheckedState;
622
+ constructor();
601
623
  onFocus(): void;
602
624
  onBlur(): void;
603
625
  onPointerMove(event: PointerEvent): void;
@@ -606,8 +628,10 @@ declare class RdxMenuCheckboxItem {
606
628
  onMouseUp(event: MouseEvent): void;
607
629
  protected onActivate(event: Event): void;
608
630
  private toggleChecked;
631
+ private setActiveIndex;
632
+ private clearActiveIndex;
609
633
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxMenuCheckboxItem, never>;
610
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuCheckboxItem, "[rdxMenuCheckboxItem]", ["rdxMenuCheckboxItem"], { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "closeOnClick": { "alias": "closeOnClick"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "onCheckedChange": "onCheckedChange"; }, never, never, true, never>;
634
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuCheckboxItem, "[rdxMenuCheckboxItem]", ["rdxMenuCheckboxItem"], { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "closeOnClick": { "alias": "closeOnClick"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "onCheckedChange": "onCheckedChange"; }, never, never, true, [{ directive: typeof i1$1.RdxCompositeListItem; inputs: {}; outputs: {}; }]>;
611
635
  }
612
636
 
613
637
  /**
@@ -664,8 +688,9 @@ declare const provideRdxMenuRadioItemContext: (useFactory: () => RdxMenuRadioIte
664
688
  * A radio item within a menu radio group.
665
689
  */
666
690
  declare class RdxMenuRadioItem<T = unknown> {
667
- private readonly rootContext;
691
+ protected readonly rootContext: _radix_ng_primitives_menu.RdxMenuRootContext | null;
668
692
  private readonly radioGroupContext;
693
+ private readonly listItem;
669
694
  private readonly elementRef;
670
695
  private readonly isFocused;
671
696
  /** The value of this radio item. */
@@ -682,6 +707,7 @@ declare class RdxMenuRadioItem<T = unknown> {
682
707
  protected readonly highlighted: Signal<boolean>;
683
708
  protected readonly effectiveDisabled: Signal<boolean>;
684
709
  protected readonly getCheckedState: typeof getCheckedState;
710
+ constructor();
685
711
  onFocus(): void;
686
712
  onBlur(): void;
687
713
  onPointerMove(event: PointerEvent): void;
@@ -690,8 +716,10 @@ declare class RdxMenuRadioItem<T = unknown> {
690
716
  onMouseUp(event: MouseEvent): void;
691
717
  protected onActivate(event: Event): void;
692
718
  private selectItem;
719
+ private setActiveIndex;
720
+ private clearActiveIndex;
693
721
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxMenuRadioItem<any>, never>;
694
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuRadioItem<any>, "[rdxMenuRadioItem]", ["rdxMenuRadioItem"], { "value": { "alias": "value"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "closeOnClick": { "alias": "closeOnClick"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, { "onSelect": "onSelect"; }, never, never, true, never>;
722
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuRadioItem<any>, "[rdxMenuRadioItem]", ["rdxMenuRadioItem"], { "value": { "alias": "value"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "closeOnClick": { "alias": "closeOnClick"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, { "onSelect": "onSelect"; }, never, never, true, [{ directive: typeof i1$1.RdxCompositeListItem; inputs: {}; outputs: {}; }]>;
695
723
  }
696
724
 
697
725
  /**
@@ -25,6 +25,7 @@ declare const provideRdxMenubarContext: (useFactory: () => RdxMenubarContext) =>
25
25
  declare class RdxMenubarRoot {
26
26
  private readonly elementRef;
27
27
  private readonly compositeRoot;
28
+ private readonly compositeList;
28
29
  private readonly menuRoots;
29
30
  private readonly ids;
30
31
  private items;
@@ -58,6 +59,7 @@ declare class RdxMenubarRoot {
58
59
  private sortItems;
59
60
  private markItemsChanged;
60
61
  private syncDisabledIndices;
62
+ private syncTabIndices;
61
63
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxMenubarRoot, never>;
62
64
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenubarRoot, "[rdxMenubarRoot]", ["rdxMenubarRoot"], { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "loopFocus": { "alias": "loopFocus"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; }, {}, ["menuRoots"], never, true, [{ directive: typeof i1.RdxCompositeRoot; inputs: {}; outputs: {}; }]>;
63
65
  }
@@ -5,14 +5,14 @@ import { AcceptableValue, RdxCancelableChangeEventDetails, RdxFloatingRootContex
5
5
  import * as _radix_ng_primitives_select from '@radix-ng/primitives/select';
6
6
  import * as _radix_ng_primitives_floating_focus_manager from '@radix-ng/primitives/floating-focus-manager';
7
7
  import { RdxInteractionType } from '@radix-ng/primitives/floating-focus-manager';
8
- import * as i1 from '@radix-ng/primitives/collection';
9
- import { RdxCollectionItem } from '@radix-ng/primitives/collection';
8
+ import * as i1 from '@radix-ng/primitives/composite';
9
+ import { RdxCompositeItemRegistration } from '@radix-ng/primitives/composite';
10
10
  import { RdxOutsidePressDomEvent } from '@radix-ng/primitives/dismissable-layer';
11
11
  import * as i1$1 from '@radix-ng/primitives/popper';
12
12
  import { RdxPopperContentWrapper } from '@radix-ng/primitives/popper';
13
13
  import * as _radix_ng_primitives_types_radix_ng_primitives_floating_focus_manager from '@radix-ng/primitives/types/radix-ng-primitives-floating-focus-manager';
14
14
  import * as _radix_ng_primitives_types_radix_ng_primitives_core from '@radix-ng/primitives/types/radix-ng-primitives-core';
15
- import * as _radix_ng_primitives_types_radix_ng_primitives_collection from '@radix-ng/primitives/types/radix-ng-primitives-collection';
15
+ import * as _radix_ng_primitives_types_radix_ng_primitives_composite from '@radix-ng/primitives/types/radix-ng-primitives-composite';
16
16
  import * as i1$2 from '@radix-ng/primitives/portal';
17
17
 
18
18
  declare class RdxSelectGroupLabel {
@@ -107,7 +107,7 @@ type SelectEvent = CustomEvent<{
107
107
  declare class RdxSelectItem {
108
108
  private readonly rootContext;
109
109
  private readonly contentContext;
110
- private readonly collectionItem;
110
+ private readonly listItem;
111
111
  private readonly currentElement;
112
112
  readonly value: _angular_core.InputSignal<any>;
113
113
  readonly textValue: _angular_core.InputSignal<string>;
@@ -121,12 +121,13 @@ declare class RdxSelectItem {
121
121
  readonly textId: string;
122
122
  private readonly afterNextRender;
123
123
  private SELECT_SELECT;
124
+ constructor();
124
125
  onPointerUp(event: PointerEvent | KeyboardEvent): void;
125
126
  onPointerLeave(event: Event): void;
126
127
  onPointerMove(event: Event): void;
127
128
  handleKeyDown(event: Event): void;
128
129
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxSelectItem, never>;
129
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSelectItem, "[rdxSelectItem]", ["rdxSelectItem"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "textValue": { "alias": "textValue"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.RdxCollectionItem; inputs: { "value": "value"; "disabled": "disabled"; }; outputs: {}; }]>;
130
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSelectItem, "[rdxSelectItem]", ["rdxSelectItem"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "textValue": { "alias": "textValue"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.RdxCompositeListItem; inputs: {}; outputs: {}; }]>;
130
131
  }
131
132
 
132
133
  declare class RdxSelectItemIndicator {
@@ -180,9 +181,10 @@ declare class RdxSelectItemText {
180
181
  isPositioned: _angular_core.WritableSignal<boolean>;
181
182
  selectedItem: _angular_core.WritableSignal<HTMLElement | undefined>;
182
183
  selectedItemText: _angular_core.WritableSignal<HTMLElement | undefined>;
183
- highlightedItem: _angular_core.Signal<_radix_ng_primitives_types_radix_ng_primitives_collection.RdxCollectionItem<unknown> | null>;
184
- isHighlighted: (item: _radix_ng_primitives_types_radix_ng_primitives_collection.RdxCollectionItem) => boolean;
185
- highlightItem: (item: _radix_ng_primitives_types_radix_ng_primitives_collection.RdxCollectionItem) => void;
184
+ items: _angular_core.Signal<_radix_ng_primitives_types_radix_ng_primitives_composite.RdxCompositeItemRegistration<_radix_ng_primitives_select.RdxSelectItemMetadata>[]>;
185
+ highlightedItem: _angular_core.Signal<_radix_ng_primitives_types_radix_ng_primitives_composite.RdxCompositeItemRegistration<_radix_ng_primitives_select.RdxSelectItemMetadata> | null>;
186
+ isHighlighted: (element: HTMLElement) => boolean;
187
+ highlightItem: (element: HTMLElement) => void;
186
188
  isKeyboardActive: () => boolean;
187
189
  setKeyboardActive: (value: boolean) => void;
188
190
  onViewportChange: (node: any) => void;
@@ -217,15 +219,31 @@ declare class RdxSelectList {
217
219
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSelectList, "[rdxSelectList]", never, {}, {}, never, never, true, never>;
218
220
  }
219
221
 
222
+ declare const OPEN_KEYS: string[];
223
+ declare const SELECTION_KEYS: string[];
224
+ declare const CONTENT_MARGIN = 10;
225
+ interface RdxSelectItemMetadata {
226
+ [key: string]: unknown;
227
+ value: any;
228
+ disabled: boolean;
229
+ textValue?: string;
230
+ }
231
+ declare function valueComparator<T>(value: T | T[] | undefined, currentValue: T, comparator?: string | ((a: T, b: T) => boolean)): boolean;
232
+ declare function compare<T>(value?: T, currentValue?: T, comparator?: string | ((a: T, b: T) => boolean)): boolean;
233
+ declare function shouldShowPlaceholder(value?: AcceptableValue | AcceptableValue[]): boolean;
234
+ declare function focusFirst(candidates: HTMLElement[]): void;
235
+
236
+ type RdxSelectCompositeItem = RdxCompositeItemRegistration<RdxSelectItemMetadata>;
220
237
  declare const context$1: () => {
221
238
  content: _angular_core.WritableSignal<HTMLElement | null>;
222
239
  viewport: _angular_core.WritableSignal<HTMLElement | undefined>;
223
240
  isPositioned: _angular_core.WritableSignal<boolean>;
224
241
  selectedItem: _angular_core.WritableSignal<HTMLElement | undefined>;
225
242
  selectedItemText: _angular_core.WritableSignal<HTMLElement | undefined>;
226
- highlightedItem: Signal<RdxCollectionItem<unknown> | null>;
227
- isHighlighted: (item: RdxCollectionItem) => boolean;
228
- highlightItem: (item: RdxCollectionItem) => void;
243
+ items: Signal<RdxSelectCompositeItem[]>;
244
+ highlightedItem: Signal<RdxSelectCompositeItem | null>;
245
+ isHighlighted: (element: HTMLElement) => boolean;
246
+ highlightItem: (element: HTMLElement) => void;
229
247
  isKeyboardActive: () => boolean;
230
248
  setKeyboardActive: (value: boolean) => void;
231
249
  onViewportChange: (node: any) => void;
@@ -240,9 +258,10 @@ declare const injectSelectPopupContext: _radix_ng_primitives_core.InjectContext<
240
258
  isPositioned: _angular_core.WritableSignal<boolean>;
241
259
  selectedItem: _angular_core.WritableSignal<HTMLElement | undefined>;
242
260
  selectedItemText: _angular_core.WritableSignal<HTMLElement | undefined>;
243
- highlightedItem: Signal<RdxCollectionItem<unknown> | null>;
244
- isHighlighted: (item: RdxCollectionItem) => boolean;
245
- highlightItem: (item: RdxCollectionItem) => void;
261
+ items: Signal<RdxSelectCompositeItem[]>;
262
+ highlightedItem: Signal<RdxSelectCompositeItem | null>;
263
+ isHighlighted: (element: HTMLElement) => boolean;
264
+ highlightItem: (element: HTMLElement) => void;
246
265
  isKeyboardActive: () => boolean;
247
266
  setKeyboardActive: (value: boolean) => void;
248
267
  onViewportChange: (node: any) => void;
@@ -256,9 +275,10 @@ declare const provideSelectPopupContext: (useFactory: () => {
256
275
  isPositioned: _angular_core.WritableSignal<boolean>;
257
276
  selectedItem: _angular_core.WritableSignal<HTMLElement | undefined>;
258
277
  selectedItemText: _angular_core.WritableSignal<HTMLElement | undefined>;
259
- highlightedItem: Signal<RdxCollectionItem<unknown> | null>;
260
- isHighlighted: (item: RdxCollectionItem) => boolean;
261
- highlightItem: (item: RdxCollectionItem) => void;
278
+ items: Signal<RdxSelectCompositeItem[]>;
279
+ highlightedItem: Signal<RdxSelectCompositeItem | null>;
280
+ isHighlighted: (element: HTMLElement) => boolean;
281
+ highlightItem: (element: HTMLElement) => void;
262
282
  isKeyboardActive: () => boolean;
263
283
  setKeyboardActive: (value: boolean) => void;
264
284
  onViewportChange: (node: any) => void;
@@ -294,7 +314,7 @@ declare class RdxSelectPopup {
294
314
  private readonly floatingContext;
295
315
  private readonly registration;
296
316
  private readonly currentElement;
297
- private readonly collection;
317
+ private readonly compositeList;
298
318
  private readonly injector;
299
319
  readonly rootContext: {
300
320
  triggerElement: _angular_core.WritableSignal<HTMLElement | null>;
@@ -329,22 +349,23 @@ declare class RdxSelectPopup {
329
349
  };
330
350
  /**
331
351
  * The collected items (DOM order). Exposed so the `item-aligned` positioner — now the popup's
332
- * **ancestor** — can read them without injecting {@link RdxCollectionProvider} (which the popup
333
- * provides as a descendant, so an upward `inject` would not find it).
352
+ * **ancestor** — can read them without injecting the composite list (which the popup provides as
353
+ * a descendant, so an upward `inject` would not find it).
334
354
  */
335
- readonly items: Signal<readonly RdxCollectionItem<any>[]>;
355
+ readonly items: Signal<RdxSelectCompositeItem[]>;
336
356
  /**
337
357
  * Highlight-model navigation over the collected items (DOM order). `loop` is disabled so arrow
338
358
  * navigation stops at the first / last item instead of wrapping around — matching native
339
359
  * `<select>` behavior.
340
360
  */
341
- readonly highlight: _radix_ng_primitives_core.ListHighlight<RdxCollectionItem<unknown>>;
361
+ readonly highlight: _radix_ng_primitives_core.ListHighlight<RdxSelectCompositeItem>;
342
362
  readonly selectedItem: _angular_core.WritableSignal<HTMLElement | undefined>;
343
363
  readonly selectedItemText: _angular_core.WritableSignal<HTMLElement | undefined>;
344
364
  readonly firstValidItemFoundRef: _angular_core.WritableSignal<boolean>;
345
365
  readonly viewport: _angular_core.WritableSignal<HTMLElement | undefined>;
346
366
  readonly isPositioned: _angular_core.WritableSignal<boolean>;
347
367
  private keyboardActive;
368
+ private hasHighlightedOpen;
348
369
  /**
349
370
  * Event handler called when the escape key is down.
350
371
  * Can be prevented.
@@ -365,12 +386,13 @@ declare class RdxSelectPopup {
365
386
  constructor();
366
387
  /** Highlights the selected item (or the first enabled one) when the popup opens. */
367
388
  highlightSelectedItem(): void;
389
+ private highlightSelectedItemAfterPositioned;
368
390
  private scrollSelectedIntoView;
369
391
  setKeyboardActive(value: boolean): void;
370
392
  isKeyboardActive(): boolean;
371
393
  handleKeyDown(event: Event): void;
372
394
  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 _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: {}; }]>;
395
+ 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.RdxCompositeList; inputs: {}; outputs: {}; }]>;
374
396
  }
375
397
 
376
398
  /**
@@ -688,15 +710,7 @@ declare class RdxSelectValue {
688
710
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSelectValue, "span[rdxSelectValue]", ["rdxSelectedValue"], { "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
689
711
  }
690
712
 
691
- declare const OPEN_KEYS: string[];
692
- declare const SELECTION_KEYS: string[];
693
- declare const CONTENT_MARGIN = 10;
694
- declare function valueComparator<T>(value: T | T[] | undefined, currentValue: T, comparator?: string | ((a: T, b: T) => boolean)): boolean;
695
- declare function compare<T>(value?: T, currentValue?: T, comparator?: string | ((a: T, b: T) => boolean)): boolean;
696
- declare function shouldShowPlaceholder(value?: AcceptableValue | AcceptableValue[]): boolean;
697
- declare function focusFirst(candidates: HTMLElement[]): void;
698
-
699
713
  declare const _importsSelect: (typeof RdxSelectGroupLabel)[];
700
714
 
701
715
  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 };
702
- export type { RdxPositionerImpl, RdxSelectItemContext, RdxSelectOpenChangeEvent, RdxSelectOpenChangeEventDetails, RdxSelectOpenChangeReason, RdxSelectOpenMethod, RdxSelectPopupContext, RdxSelectRootContext, RdxSelectValueChangeEvent, RdxSelectValueChangeEventDetails, RdxSelectValueChangeReason, SelectEvent, SelectOption };
716
+ export type { RdxPositionerImpl, RdxSelectItemContext, RdxSelectItemMetadata, RdxSelectOpenChangeEvent, RdxSelectOpenChangeEventDetails, RdxSelectOpenChangeReason, RdxSelectOpenMethod, RdxSelectPopupContext, RdxSelectRootContext, RdxSelectValueChangeEvent, RdxSelectValueChangeEventDetails, RdxSelectValueChangeReason, SelectEvent, SelectOption };
@@ -3,6 +3,7 @@ import { Signal } from '@angular/core';
3
3
  import * as _radix_ng_primitives_core from '@radix-ng/primitives/core';
4
4
  import { RdxControlValueAccessor, NumberInput, BooleanInput, RdxCancelableChangeEventDetails } from '@radix-ng/primitives/core';
5
5
  export { clamp } from '@radix-ng/primitives/core';
6
+ import * as i1 from '@radix-ng/primitives/composite';
6
7
  import * as _radix_ng_primitives_slider from '@radix-ng/primitives/slider';
7
8
 
8
9
  type SliderOrientation = 'horizontal' | 'vertical';
@@ -120,6 +121,9 @@ interface RdxSliderThumbRef {
120
121
  /** Whether this thumb is disabled (own state OR root disabled). */
121
122
  readonly disabled: Signal<boolean>;
122
123
  }
124
+ interface RdxSliderThumbMetadata {
125
+ inputId?: string | undefined;
126
+ }
123
127
  /**
124
128
  * Groups all parts of the slider and owns its state, value-change logic and
125
129
  * thumb registration. A single directive drives both orientations — there are no
@@ -131,6 +135,7 @@ declare class RdxSliderRoot {
131
135
  /** @ignore */
132
136
  protected readonly cva: RdxControlValueAccessor<SliderValue>;
133
137
  private readonly document;
138
+ private readonly compositeList;
134
139
  readonly id: _angular_core.InputSignal<string>;
135
140
  /**
136
141
  * The minimum value of the slider.
@@ -239,6 +244,8 @@ declare class RdxSliderRoot {
239
244
  private readonly thumbs;
240
245
  /** Registered thumbs in DOM order. */
241
246
  readonly thumbList: Signal<RdxSliderThumbRef[]>;
247
+ /** Input ids registered by thumbs, in DOM order. */
248
+ readonly thumbInputIds: Signal<string[]>;
242
249
  /** @ignore */
243
250
  registerThumb(thumb: RdxSliderThumbRef): void;
244
251
  /** @ignore */
@@ -274,7 +281,7 @@ declare class RdxSliderRoot {
274
281
  /** @ignore */
275
282
  getOwnerWindow(): Window | undefined;
276
283
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxSliderRoot, never>;
277
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSliderRoot, "div[rdxSliderRoot]", ["rdxSliderRoot"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "largeStep": { "alias": "largeStep"; "required": false; "isSignal": true; }; "minStepsBetweenValues": { "alias": "minStepsBetweenValues"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "dirInput": { "alias": "dir"; "required": false; "isSignal": true; }; "thumbCollisionBehavior": { "alias": "thumbCollisionBehavior"; "required": false; "isSignal": true; }; "thumbAlignment": { "alias": "thumbAlignment"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "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; }; "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "ariaLabelledBy": { "alias": "aria-labelledby"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "onValueChange": "onValueChange"; "onValueCommitted": "onValueCommitted"; }, never, never, true, [{ directive: typeof _radix_ng_primitives_core.RdxControlValueAccessor; inputs: { "value": "value"; "disabled": "disabled"; }; outputs: {}; }]>;
284
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSliderRoot, "div[rdxSliderRoot]", ["rdxSliderRoot"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "largeStep": { "alias": "largeStep"; "required": false; "isSignal": true; }; "minStepsBetweenValues": { "alias": "minStepsBetweenValues"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "dirInput": { "alias": "dir"; "required": false; "isSignal": true; }; "thumbCollisionBehavior": { "alias": "thumbCollisionBehavior"; "required": false; "isSignal": true; }; "thumbAlignment": { "alias": "thumbAlignment"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "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; }; "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "ariaLabelledBy": { "alias": "aria-labelledby"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "onValueChange": "onValueChange"; "onValueCommitted": "onValueCommitted"; }, never, never, true, [{ directive: typeof i1.RdxCompositeList; inputs: {}; outputs: {}; }, { directive: typeof _radix_ng_primitives_core.RdxControlValueAccessor; inputs: { "value": "value"; "disabled": "disabled"; }; outputs: {}; }]>;
278
285
  }
279
286
 
280
287
  /**
@@ -346,9 +353,11 @@ declare class RdxSliderIndicator {
346
353
  */
347
354
  declare class RdxSliderThumb implements RdxSliderThumbRef {
348
355
  protected readonly root: _radix_ng_primitives_slider.RdxSliderRoot;
356
+ private readonly listItem;
349
357
  readonly element: HTMLElement;
350
358
  /** The nested range input, set by `[rdxSliderThumbInput]`. */
351
359
  inputElement: HTMLInputElement | null;
360
+ private readonly inputId;
352
361
  /** Explicit index for this thumb (required for SSR range sliders). */
353
362
  readonly indexInput: _angular_core.InputSignalWithTransform<number | undefined, NumberInput>;
354
363
  /** Disables this individual thumb. */
@@ -365,8 +374,12 @@ declare class RdxSliderThumb implements RdxSliderThumbRef {
365
374
  constructor();
366
375
  private updateInsetPosition;
367
376
  protected onPointerDown(event: PointerEvent): void;
377
+ /** @ignore */
378
+ setInputElement(input: HTMLInputElement, id: string): void;
379
+ /** @ignore */
380
+ clearInputElement(input: HTMLInputElement): void;
368
381
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxSliderThumb, never>;
369
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSliderThumb, "div[rdxSliderThumb]", ["rdxSliderThumb"], { "indexInput": { "alias": "index"; "required": false; "isSignal": true; }; "thumbDisabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
382
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSliderThumb, "div[rdxSliderThumb]", ["rdxSliderThumb"], { "indexInput": { "alias": "index"; "required": false; "isSignal": true; }; "thumbDisabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.RdxCompositeListItem; inputs: {}; outputs: {}; }]>;
370
383
  }
371
384
 
372
385
  /**
@@ -380,6 +393,7 @@ declare class RdxSliderThumbInput {
380
393
  protected readonly root: _radix_ng_primitives_slider.RdxSliderRoot;
381
394
  protected readonly thumb: RdxSliderThumb;
382
395
  private readonly element;
396
+ readonly id: _angular_core.InputSignal<string>;
383
397
  readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
384
398
  readonly ariaValueTextInput: _angular_core.InputSignal<string | undefined>;
385
399
  protected readonly writingMode: _angular_core.Signal<"vertical-rl" | "vertical-lr" | undefined>;
@@ -391,7 +405,7 @@ declare class RdxSliderThumbInput {
391
405
  protected onBlur(): void;
392
406
  protected onKeyDown(event: KeyboardEvent): void;
393
407
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxSliderThumbInput, never>;
394
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSliderThumbInput, "input[rdxSliderThumbInput]", ["rdxSliderThumbInput"], { "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "ariaValueTextInput": { "alias": "aria-valuetext"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
408
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSliderThumbInput, "input[rdxSliderThumbInput]", ["rdxSliderThumbInput"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "ariaValueTextInput": { "alias": "aria-valuetext"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
395
409
  }
396
410
 
397
411
  /**
@@ -404,6 +418,7 @@ declare class RdxSliderValue {
404
418
  protected readonly root: _radix_ng_primitives_slider.RdxSliderRoot;
405
419
  /** The separator placed between values of a range slider. */
406
420
  readonly separator: _angular_core.InputSignal<string>;
421
+ protected readonly forAttr: _angular_core.Signal<string | undefined>;
407
422
  protected readonly display: _angular_core.Signal<string>;
408
423
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxSliderValue, never>;
409
424
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSliderValue, "output[rdxSliderValue]", ["rdxSliderValue"], { "separator": { "alias": "separator"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
@@ -426,4 +441,4 @@ declare class RdxSliderModule {
426
441
  }
427
442
 
428
443
  export { ALL_KEYS, ARROW_KEYS, COMPOSITE_KEYS, RdxSliderControl, RdxSliderIndicator, RdxSliderModule, RdxSliderRoot, RdxSliderThumb, RdxSliderThumbInput, RdxSliderTrack, RdxSliderValue, areValuesEqual, asc, formatNumber, getControlOffset, getDecimalPrecision, getDefaultAriaValueText, getInsetThumbPositionPercent, getMidpoint, getNewValue, getPushedThumbValues, getSliderValue, injectSliderRootContext, provideSliderRootContext, replaceArrayItemAtIndex, resolveThumbCollision, roundValueToStep, validateMinimumDistance, valueArrayToPercentages, valueToPercent };
429
- export type { RdxSliderThumbAlignment, RdxSliderThumbRef, RdxSliderValueChangeEvent, RdxSliderValueChangeEventDetails, RdxSliderValueChangeReason, RdxSliderValueCommitEvent, RdxSliderValueCommitEventDetails, RdxSliderValueCommitReason, ResolveThumbCollisionParams, ResolveThumbCollisionResult, SliderOrientation, SliderValue, ThumbCollisionBehavior };
444
+ export type { RdxSliderThumbAlignment, RdxSliderThumbMetadata, RdxSliderThumbRef, RdxSliderValueChangeEvent, RdxSliderValueChangeEventDetails, RdxSliderValueChangeReason, RdxSliderValueCommitEvent, RdxSliderValueCommitEventDetails, RdxSliderValueCommitReason, ResolveThumbCollisionParams, ResolveThumbCollisionResult, SliderOrientation, SliderValue, ThumbCollisionBehavior };