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

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 (85) hide show
  1. package/fesm2022/radix-ng-primitives-accordion.mjs +2 -2
  2. package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
  3. package/fesm2022/radix-ng-primitives-calendar.mjs +14 -1
  4. package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
  5. package/fesm2022/radix-ng-primitives-checkbox.mjs +2 -2
  6. package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
  7. package/fesm2022/radix-ng-primitives-collapsible.mjs +1 -1
  8. package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -1
  9. package/fesm2022/radix-ng-primitives-combobox.mjs +1923 -0
  10. package/fesm2022/radix-ng-primitives-combobox.mjs.map +1 -0
  11. package/fesm2022/radix-ng-primitives-context-menu.mjs +1 -1
  12. package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
  13. package/fesm2022/radix-ng-primitives-core.mjs +480 -469
  14. package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
  15. package/fesm2022/radix-ng-primitives-cropper.mjs +1 -1
  16. package/fesm2022/radix-ng-primitives-cropper.mjs.map +1 -1
  17. package/fesm2022/radix-ng-primitives-date-field.mjs +11 -0
  18. package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
  19. package/fesm2022/radix-ng-primitives-dialog.mjs +1 -1
  20. package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
  21. package/fesm2022/radix-ng-primitives-drawer.mjs +1 -1
  22. package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -1
  23. package/fesm2022/radix-ng-primitives-editable.mjs +1 -1
  24. package/fesm2022/radix-ng-primitives-editable.mjs.map +1 -1
  25. package/fesm2022/radix-ng-primitives-field.mjs +86 -6
  26. package/fesm2022/radix-ng-primitives-field.mjs.map +1 -1
  27. package/fesm2022/radix-ng-primitives-fieldset.mjs +1 -1
  28. package/fesm2022/radix-ng-primitives-fieldset.mjs.map +1 -1
  29. package/fesm2022/radix-ng-primitives-focus-scope.mjs +1 -1
  30. package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
  31. package/fesm2022/radix-ng-primitives-form.mjs +207 -0
  32. package/fesm2022/radix-ng-primitives-form.mjs.map +1 -0
  33. package/fesm2022/radix-ng-primitives-input.mjs +85 -4
  34. package/fesm2022/radix-ng-primitives-input.mjs.map +1 -1
  35. package/fesm2022/radix-ng-primitives-menu.mjs +4 -4
  36. package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
  37. package/fesm2022/radix-ng-primitives-menubar.mjs +1 -1
  38. package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
  39. package/fesm2022/radix-ng-primitives-meter.mjs +1 -1
  40. package/fesm2022/radix-ng-primitives-meter.mjs.map +1 -1
  41. package/fesm2022/radix-ng-primitives-navigation-menu.mjs +1 -1
  42. package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
  43. package/fesm2022/radix-ng-primitives-number-field.mjs +2 -2
  44. package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
  45. package/fesm2022/radix-ng-primitives-popover.mjs +1 -1
  46. package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
  47. package/fesm2022/radix-ng-primitives-popper.mjs +1 -1
  48. package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
  49. package/fesm2022/radix-ng-primitives-preview-card.mjs +1 -1
  50. package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -1
  51. package/fesm2022/radix-ng-primitives-progress.mjs +1 -1
  52. package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
  53. package/fesm2022/radix-ng-primitives-roving-focus.mjs +1 -1
  54. package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
  55. package/fesm2022/radix-ng-primitives-scroll-area.mjs +3 -3
  56. package/fesm2022/radix-ng-primitives-scroll-area.mjs.map +1 -1
  57. package/fesm2022/radix-ng-primitives-select.mjs +421 -224
  58. package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
  59. package/fesm2022/radix-ng-primitives-slider.mjs +1 -1
  60. package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
  61. package/fesm2022/radix-ng-primitives-switch.mjs +3 -2
  62. package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
  63. package/fesm2022/radix-ng-primitives-tabs.mjs +1 -1
  64. package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
  65. package/fesm2022/radix-ng-primitives-time-field.mjs +27 -3
  66. package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
  67. package/fesm2022/radix-ng-primitives-toast.mjs +1 -1
  68. package/fesm2022/radix-ng-primitives-toast.mjs.map +1 -1
  69. package/fesm2022/radix-ng-primitives-toggle-group.mjs +1 -1
  70. package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
  71. package/fesm2022/radix-ng-primitives-toolbar.mjs +2 -2
  72. package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
  73. package/fesm2022/radix-ng-primitives-tooltip.mjs +2 -2
  74. package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
  75. package/package.json +9 -1
  76. package/schematics/ng-add/index.js +57 -0
  77. package/schematics/ng-add/index.js.map +1 -1
  78. package/schematics/ng-add/schema.d.ts +1 -0
  79. package/schematics/ng-add/schema.json +6 -0
  80. package/types/radix-ng-primitives-combobox.d.ts +1265 -0
  81. package/types/radix-ng-primitives-core.d.ts +148 -56
  82. package/types/radix-ng-primitives-field.d.ts +71 -2
  83. package/types/radix-ng-primitives-form.d.ts +124 -0
  84. package/types/radix-ng-primitives-input.d.ts +75 -5
  85. package/types/radix-ng-primitives-select.d.ts +292 -132
@@ -1,65 +1,32 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { InjectionToken, OutputRef, ElementRef } from '@angular/core';
3
3
  import * as _radix_ng_primitives_core from '@radix-ng/primitives/core';
4
- import { AcceptableValue, Direction } from '@radix-ng/primitives/core';
4
+ import { AcceptableValue, Direction, ItemValueComparator } from '@radix-ng/primitives/core';
5
5
  import * as _radix_ng_primitives_select from '@radix-ng/primitives/select';
6
- import * as i1 from '@radix-ng/primitives/focus-scope';
6
+ import * as i1 from '@radix-ng/primitives/collection';
7
+ import { RdxCollectionItem } from '@radix-ng/primitives/collection';
8
+ import * as i1$1 from '@radix-ng/primitives/focus-scope';
7
9
  import * as i2 from '@radix-ng/primitives/dismissable-layer';
8
- import * as i3 from '@radix-ng/primitives/collection';
9
10
  import * as _radix_ng_primitives_types_radix_ng_primitives_core from '@radix-ng/primitives/types/radix-ng-primitives-core';
10
- import * as i1$1 from '@radix-ng/primitives/popper';
11
+ import * as _radix_ng_primitives_types_radix_ng_primitives_collection from '@radix-ng/primitives/types/radix-ng-primitives-collection';
11
12
  import * as i1$2 from '@radix-ng/primitives/portal';
12
13
  import { RdxPortalContainer } from '@radix-ng/primitives/portal';
13
14
  import * as i1$3 from '@radix-ng/primitives/presence';
15
+ import * as i1$4 from '@radix-ng/primitives/popper';
14
16
 
15
- declare class RdxSelectLabel {
16
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxSelectLabel, never>;
17
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSelectLabel, "[rdxSelectLabel]", never, {}, {}, never, never, true, never>;
17
+ declare class RdxSelectGroupLabel {
18
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxSelectGroupLabel, never>;
19
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSelectGroupLabel, "[rdxSelectGroupLabel]", never, {}, {}, never, never, true, never>;
18
20
  }
19
21
 
20
- declare const context$2: () => {
21
- content: _angular_core.WritableSignal<HTMLElement | null>;
22
- viewport: _angular_core.WritableSignal<HTMLElement | undefined>;
23
- isPositioned: _angular_core.WritableSignal<boolean>;
24
- selectedItem: _angular_core.WritableSignal<HTMLElement | undefined>;
25
- selectedItemText: _angular_core.WritableSignal<HTMLElement | undefined>;
26
- onViewportChange: (node: any) => void;
27
- onItemLeave: () => void;
28
- itemRefCallback: (node: any, value: any, disabled: boolean) => void;
29
- itemTextRefCallback: (node: any, value: any, disabled: any) => void;
30
- };
31
- type RdxSelectContentContext = ReturnType<typeof context$2>;
32
- declare const injectSelectContentContext: _radix_ng_primitives_core.InjectContext<{
33
- content: _angular_core.WritableSignal<HTMLElement | null>;
34
- viewport: _angular_core.WritableSignal<HTMLElement | undefined>;
35
- isPositioned: _angular_core.WritableSignal<boolean>;
36
- selectedItem: _angular_core.WritableSignal<HTMLElement | undefined>;
37
- selectedItemText: _angular_core.WritableSignal<HTMLElement | undefined>;
38
- onViewportChange: (node: any) => void;
39
- onItemLeave: () => void;
40
- itemRefCallback: (node: any, value: any, disabled: boolean) => void;
41
- itemTextRefCallback: (node: any, value: any, disabled: any) => void;
42
- }>;
43
- declare const provideSelectContentContext: (useFactory: () => {
44
- content: _angular_core.WritableSignal<HTMLElement | null>;
45
- viewport: _angular_core.WritableSignal<HTMLElement | undefined>;
46
- isPositioned: _angular_core.WritableSignal<boolean>;
47
- selectedItem: _angular_core.WritableSignal<HTMLElement | undefined>;
48
- selectedItemText: _angular_core.WritableSignal<HTMLElement | undefined>;
49
- onViewportChange: (node: any) => void;
50
- onItemLeave: () => void;
51
- itemRefCallback: (node: any, value: any, disabled: boolean) => void;
52
- itemTextRefCallback: (node: any, value: any, disabled: any) => void;
53
- }) => _angular_core.Provider;
54
- interface RdxPositionerImpl {
55
- placed: OutputRef<any>;
56
- }
57
- declare const RDX_SELECT_POSITIONER_TOKEN: InjectionToken<RdxPositionerImpl>;
58
- declare class RdxSelectContent {
59
- private readonly dismissableLayer;
60
- private readonly currentElement;
61
- private readonly collection;
62
- readonly rootContext: {
22
+ /**
23
+ * An overlay rendered beneath the popup in `modal` mode. Place it inside the portal/presence; style
24
+ * it `position: fixed; inset: 0`. Exposes `data-open` / `data-closed` for animation.
25
+ *
26
+ * @group Components
27
+ */
28
+ declare class RdxSelectBackdrop {
29
+ protected readonly rootContext: {
63
30
  triggerElement: _angular_core.WritableSignal<HTMLElement | null>;
64
31
  valueElement: _angular_core.WritableSignal<HTMLElement | null>;
65
32
  triggerPointerDownPosRef: _angular_core.WritableSignal<{
@@ -67,42 +34,27 @@ declare class RdxSelectContent {
67
34
  y: number;
68
35
  } | null>;
69
36
  contentId: string;
70
- dir: _angular_core.InputSignal<_radix_ng_primitives_core.Direction>;
71
- value: _angular_core.ModelSignal<_radix_ng_primitives_core.AcceptableValue | _radix_ng_primitives_core.AcceptableValue[] | undefined>;
37
+ dir: _angular_core.InputSignal<_radix_ng_primitives_types_radix_ng_primitives_core.Direction>;
38
+ value: _angular_core.ModelSignal<_radix_ng_primitives_types_radix_ng_primitives_core.AcceptableValue | _radix_ng_primitives_types_radix_ng_primitives_core.AcceptableValue[] | undefined>;
72
39
  multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
73
- by: _angular_core.InputSignal<string | ((a: _radix_ng_primitives_core.AcceptableValue, b: _radix_ng_primitives_core.AcceptableValue) => boolean) | undefined>;
40
+ isItemEqualToValue: _angular_core.InputSignal<_radix_ng_primitives_types_radix_ng_primitives_core.ItemValueComparator<_radix_ng_primitives_types_radix_ng_primitives_core.AcceptableValue> | undefined>;
41
+ itemToStringLabel: _angular_core.InputSignal<((value: _radix_ng_primitives_types_radix_ng_primitives_core.AcceptableValue) => string) | undefined>;
74
42
  open: _angular_core.ModelSignal<boolean>;
75
43
  disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
44
+ modal: _angular_core.InputSignalWithTransform<boolean, unknown>;
45
+ isEmptyModelValue: _angular_core.Signal<boolean>;
46
+ transitionStatus: _angular_core.Signal<_radix_ng_primitives_types_radix_ng_primitives_core.RdxTransitionStatus>;
47
+ registerTransitionElement: (element: HTMLElement) => () => void;
76
48
  optionsSet: _angular_core.WritableSignal<Set<_radix_ng_primitives_select.SelectOption>>;
77
49
  onOptionAdd: (option: any) => void;
78
50
  onOptionRemove: (option: any) => void;
79
- onValueChange: (value: _radix_ng_primitives_core.AcceptableValue) => void;
51
+ onValueChange: (value: _radix_ng_primitives_types_radix_ng_primitives_core.AcceptableValue) => void;
80
52
  onTriggerChange: (node: any) => void;
81
53
  onValueElementChange: (node: any) => void;
82
54
  onOpenChange: (value: any) => void;
83
55
  };
84
- readonly selectedItem: _angular_core.WritableSignal<HTMLElement | undefined>;
85
- readonly selectedItemText: _angular_core.WritableSignal<HTMLElement | undefined>;
86
- readonly firstValidItemFoundRef: _angular_core.WritableSignal<boolean>;
87
- readonly viewport: _angular_core.WritableSignal<HTMLElement | undefined>;
88
- readonly isPositioned: _angular_core.WritableSignal<boolean>;
89
- /**
90
- * Event handler called when the escape key is down.
91
- * Can be prevented.
92
- */
93
- readonly escapeKeyDown: OutputRef<KeyboardEvent>;
94
- /**
95
- * Event handler called when a `pointerdown` event happens outside of the `DismissableLayer`.
96
- * Can be prevented.
97
- */
98
- readonly pointerDownOutside: OutputRef<PointerEvent>;
99
- readonly content: _angular_core.WritableSignal<HTMLElement | null>;
100
- set positioner(port: RdxPositionerImpl | undefined);
101
- constructor();
102
- focusSelectedItem(): void;
103
- handleKeyDown(event: Event): void;
104
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxSelectContent, never>;
105
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSelectContent, "[rdxSelectContent]", never, {}, { "escapeKeyDown": "escapeKeyDown"; "pointerDownOutside": "pointerDownOutside"; }, ["positioner"], never, true, [{ directive: typeof i1.RdxFocusScope; inputs: {}; outputs: {}; }, { directive: typeof i2.RdxDismissableLayer; inputs: {}; outputs: {}; }, { directive: typeof i3.RdxCollectionProvider; inputs: {}; outputs: {}; }]>;
56
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxSelectBackdrop, never>;
57
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSelectBackdrop, "[rdxSelectBackdrop]", ["rdxSelectBackdrop"], {}, {}, never, never, true, never>;
106
58
  }
107
59
 
108
60
  declare class RdxSelectGroup {
@@ -111,14 +63,24 @@ declare class RdxSelectGroup {
111
63
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSelectGroup, "[rdxSelectGroup]", ["rdxSelectGroup"], {}, {}, never, never, true, never>;
112
64
  }
113
65
 
114
- declare const context$1: () => {
66
+ /**
67
+ * Decorative icon inside the trigger (e.g. a chevron). Hidden from assistive technology.
68
+ *
69
+ * @group Components
70
+ */
71
+ declare class RdxSelectIcon {
72
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxSelectIcon, never>;
73
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSelectIcon, "[rdxSelectIcon]", ["rdxSelectIcon"], {}, {}, never, never, true, never>;
74
+ }
75
+
76
+ declare const context$2: () => {
115
77
  value: _angular_core.InputSignal<any>;
116
78
  disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
117
79
  isSelected: _angular_core.Signal<boolean>;
118
80
  textId: string;
119
81
  onItemTextChange: (node: any) => void;
120
82
  };
121
- type RdxSelectItemContext = ReturnType<typeof context$1>;
83
+ type RdxSelectItemContext = ReturnType<typeof context$2>;
122
84
  declare const injectSelectItemContext: _radix_ng_primitives_core.InjectContext<{
123
85
  value: _angular_core.InputSignal<any>;
124
86
  disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
@@ -140,24 +102,26 @@ type SelectEvent = CustomEvent<{
140
102
  declare class RdxSelectItem {
141
103
  private readonly rootContext;
142
104
  private readonly contentContext;
105
+ private readonly collectionItem;
143
106
  private readonly currentElement;
144
107
  readonly value: _angular_core.InputSignal<any>;
145
108
  readonly textValue: _angular_core.InputSignal<string>;
146
109
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
147
110
  readonly textValue$: _angular_core.WritableSignal<string>;
148
111
  readonly isSelected: _angular_core.Signal<boolean>;
149
- readonly isFocused: _angular_core.WritableSignal<boolean>;
112
+ /** Highlighted via the highlight model (keyboard / hover), not DOM focus. */
113
+ readonly isHighlighted: _angular_core.Signal<boolean>;
114
+ /** Item id, referenced by the popup's `aria-activedescendant`. */
115
+ readonly id: string;
150
116
  readonly textId: string;
151
117
  private readonly afterNextRender;
152
118
  private SELECT_SELECT;
153
- onPointerDown(event: Event): void;
154
119
  onPointerUp(event: PointerEvent | KeyboardEvent): void;
155
120
  onPointerLeave(event: Event): void;
156
121
  onPointerMove(event: Event): void;
157
122
  handleKeyDown(event: Event): void;
158
- handleSelectCustomEvent(event: PointerEvent | KeyboardEvent): Promise<void>;
159
123
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxSelectItem, never>;
160
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSelectItem, "[rdxSelectItem]", never, { "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 i3.RdxCollectionItem; inputs: { "value": "value"; }; outputs: {}; }]>;
124
+ 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: {}; }]>;
161
125
  }
162
126
 
163
127
  declare class RdxSelectItemIndicator {
@@ -185,9 +149,14 @@ declare class RdxSelectItemText {
185
149
  dir: _angular_core.InputSignal<_radix_ng_primitives_types_radix_ng_primitives_core.Direction>;
186
150
  value: _angular_core.ModelSignal<_radix_ng_primitives_types_radix_ng_primitives_core.AcceptableValue | _radix_ng_primitives_types_radix_ng_primitives_core.AcceptableValue[] | undefined>;
187
151
  multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
188
- by: _angular_core.InputSignal<string | ((a: _radix_ng_primitives_types_radix_ng_primitives_core.AcceptableValue, b: _radix_ng_primitives_types_radix_ng_primitives_core.AcceptableValue) => boolean) | undefined>;
152
+ isItemEqualToValue: _angular_core.InputSignal<_radix_ng_primitives_types_radix_ng_primitives_core.ItemValueComparator<_radix_ng_primitives_types_radix_ng_primitives_core.AcceptableValue> | undefined>;
153
+ itemToStringLabel: _angular_core.InputSignal<((value: _radix_ng_primitives_types_radix_ng_primitives_core.AcceptableValue) => string) | undefined>;
189
154
  open: _angular_core.ModelSignal<boolean>;
190
155
  disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
156
+ modal: _angular_core.InputSignalWithTransform<boolean, unknown>;
157
+ isEmptyModelValue: _angular_core.Signal<boolean>;
158
+ transitionStatus: _angular_core.Signal<_radix_ng_primitives_types_radix_ng_primitives_core.RdxTransitionStatus>;
159
+ registerTransitionElement: (element: HTMLElement) => () => void;
191
160
  optionsSet: _angular_core.WritableSignal<Set<_radix_ng_primitives_select.SelectOption>>;
192
161
  onOptionAdd: (option: any) => void;
193
162
  onOptionRemove: (option: any) => void;
@@ -202,6 +171,11 @@ declare class RdxSelectItemText {
202
171
  isPositioned: _angular_core.WritableSignal<boolean>;
203
172
  selectedItem: _angular_core.WritableSignal<HTMLElement | undefined>;
204
173
  selectedItemText: _angular_core.WritableSignal<HTMLElement | undefined>;
174
+ highlightedItem: _angular_core.Signal<_radix_ng_primitives_types_radix_ng_primitives_collection.RdxCollectionItem<unknown> | null>;
175
+ isHighlighted: (item: _radix_ng_primitives_types_radix_ng_primitives_collection.RdxCollectionItem) => boolean;
176
+ highlightItem: (item: _radix_ng_primitives_types_radix_ng_primitives_collection.RdxCollectionItem) => void;
177
+ isKeyboardActive: () => boolean;
178
+ setKeyboardActive: (value: boolean) => void;
205
179
  onViewportChange: (node: any) => void;
206
180
  onItemLeave: () => void;
207
181
  itemRefCallback: (node: any, value: any, disabled: boolean) => void;
@@ -224,8 +198,82 @@ declare class RdxSelectItemText {
224
198
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSelectItemText, "[rdxSelectItemText]", never, {}, {}, never, never, true, never>;
225
199
  }
226
200
 
227
- declare class RdxSelectPopperPositionContent {
228
- protected rootContext: {
201
+ declare class RdxSelectList {
202
+ private readonly contentContext;
203
+ private readonly elementRef;
204
+ private readonly prevScrollTopRef;
205
+ constructor();
206
+ handleScroll(event: Event): void;
207
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxSelectList, never>;
208
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSelectList, "[rdxSelectList]", never, {}, {}, never, never, true, never>;
209
+ }
210
+
211
+ declare const context$1: () => {
212
+ content: _angular_core.WritableSignal<HTMLElement | null>;
213
+ viewport: _angular_core.WritableSignal<HTMLElement | undefined>;
214
+ isPositioned: _angular_core.WritableSignal<boolean>;
215
+ selectedItem: _angular_core.WritableSignal<HTMLElement | undefined>;
216
+ selectedItemText: _angular_core.WritableSignal<HTMLElement | undefined>;
217
+ highlightedItem: _angular_core.Signal<RdxCollectionItem<unknown> | null>;
218
+ isHighlighted: (item: RdxCollectionItem) => boolean;
219
+ highlightItem: (item: RdxCollectionItem) => void;
220
+ isKeyboardActive: () => boolean;
221
+ setKeyboardActive: (value: boolean) => void;
222
+ onViewportChange: (node: any) => void;
223
+ onItemLeave: () => void;
224
+ itemRefCallback: (node: any, value: any, disabled: boolean) => void;
225
+ itemTextRefCallback: (node: any, value: any, disabled: any) => void;
226
+ };
227
+ type RdxSelectPopupContext = ReturnType<typeof context$1>;
228
+ declare const injectSelectPopupContext: _radix_ng_primitives_core.InjectContext<{
229
+ content: _angular_core.WritableSignal<HTMLElement | null>;
230
+ viewport: _angular_core.WritableSignal<HTMLElement | undefined>;
231
+ isPositioned: _angular_core.WritableSignal<boolean>;
232
+ selectedItem: _angular_core.WritableSignal<HTMLElement | undefined>;
233
+ selectedItemText: _angular_core.WritableSignal<HTMLElement | undefined>;
234
+ highlightedItem: _angular_core.Signal<RdxCollectionItem<unknown> | null>;
235
+ isHighlighted: (item: RdxCollectionItem) => boolean;
236
+ highlightItem: (item: RdxCollectionItem) => void;
237
+ isKeyboardActive: () => boolean;
238
+ setKeyboardActive: (value: boolean) => void;
239
+ onViewportChange: (node: any) => void;
240
+ onItemLeave: () => void;
241
+ itemRefCallback: (node: any, value: any, disabled: boolean) => void;
242
+ itemTextRefCallback: (node: any, value: any, disabled: any) => void;
243
+ }>;
244
+ declare const provideSelectPopupContext: (useFactory: () => {
245
+ content: _angular_core.WritableSignal<HTMLElement | null>;
246
+ viewport: _angular_core.WritableSignal<HTMLElement | undefined>;
247
+ isPositioned: _angular_core.WritableSignal<boolean>;
248
+ selectedItem: _angular_core.WritableSignal<HTMLElement | undefined>;
249
+ selectedItemText: _angular_core.WritableSignal<HTMLElement | undefined>;
250
+ highlightedItem: _angular_core.Signal<RdxCollectionItem<unknown> | null>;
251
+ isHighlighted: (item: RdxCollectionItem) => boolean;
252
+ highlightItem: (item: RdxCollectionItem) => void;
253
+ isKeyboardActive: () => boolean;
254
+ setKeyboardActive: (value: boolean) => void;
255
+ onViewportChange: (node: any) => void;
256
+ onItemLeave: () => void;
257
+ itemRefCallback: (node: any, value: any, disabled: boolean) => void;
258
+ itemTextRefCallback: (node: any, value: any, disabled: any) => void;
259
+ }) => _angular_core.Provider;
260
+ interface RdxPositionerImpl {
261
+ placed: OutputRef<any>;
262
+ }
263
+ declare const RDX_SELECT_POSITIONER_TOKEN: InjectionToken<RdxPositionerImpl>;
264
+ /**
265
+ * The popup listbox. Holds DOM focus while open and navigates with the highlight model
266
+ * (`aria-activedescendant`) — items are not individually focusable. (Renamed to `RdxSelectPopup` in a
267
+ * later step; selector kept here during the navigation migration.)
268
+ *
269
+ * @group Components
270
+ */
271
+ declare class RdxSelectPopup {
272
+ private readonly dismissableLayer;
273
+ private readonly currentElement;
274
+ private readonly collection;
275
+ private readonly injector;
276
+ readonly rootContext: {
229
277
  triggerElement: _angular_core.WritableSignal<HTMLElement | null>;
230
278
  valueElement: _angular_core.WritableSignal<HTMLElement | null>;
231
279
  triggerPointerDownPosRef: _angular_core.WritableSignal<{
@@ -233,25 +281,71 @@ declare class RdxSelectPopperPositionContent {
233
281
  y: number;
234
282
  } | null>;
235
283
  contentId: string;
236
- dir: _angular_core.InputSignal<_radix_ng_primitives_types_radix_ng_primitives_core.Direction>;
237
- value: _angular_core.ModelSignal<_radix_ng_primitives_types_radix_ng_primitives_core.AcceptableValue | _radix_ng_primitives_types_radix_ng_primitives_core.AcceptableValue[] | undefined>;
284
+ dir: _angular_core.InputSignal<_radix_ng_primitives_core.Direction>;
285
+ value: _angular_core.ModelSignal<AcceptableValue | AcceptableValue[] | undefined>;
238
286
  multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
239
- by: _angular_core.InputSignal<string | ((a: _radix_ng_primitives_types_radix_ng_primitives_core.AcceptableValue, b: _radix_ng_primitives_types_radix_ng_primitives_core.AcceptableValue) => boolean) | undefined>;
287
+ isItemEqualToValue: _angular_core.InputSignal<_radix_ng_primitives_core.ItemValueComparator<AcceptableValue> | undefined>;
288
+ itemToStringLabel: _angular_core.InputSignal<((value: AcceptableValue) => string) | undefined>;
240
289
  open: _angular_core.ModelSignal<boolean>;
241
290
  disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
291
+ modal: _angular_core.InputSignalWithTransform<boolean, unknown>;
292
+ isEmptyModelValue: _angular_core.Signal<boolean>;
293
+ transitionStatus: _angular_core.Signal<_radix_ng_primitives_core.RdxTransitionStatus>;
294
+ registerTransitionElement: (element: HTMLElement) => () => void;
242
295
  optionsSet: _angular_core.WritableSignal<Set<_radix_ng_primitives_select.SelectOption>>;
243
296
  onOptionAdd: (option: any) => void;
244
297
  onOptionRemove: (option: any) => void;
245
- onValueChange: (value: _radix_ng_primitives_types_radix_ng_primitives_core.AcceptableValue) => void;
298
+ onValueChange: (value: AcceptableValue) => void;
246
299
  onTriggerChange: (node: any) => void;
247
300
  onValueElementChange: (node: any) => void;
248
301
  onOpenChange: (value: any) => void;
249
302
  };
250
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxSelectPopperPositionContent, never>;
251
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSelectPopperPositionContent, "[rdxSelectPopperPositionContent]", never, {}, {}, never, never, true, [{ directive: typeof i1$1.RdxPopperContent; inputs: {}; outputs: {}; }]>;
303
+ /** Highlight-model navigation over the collected items (DOM order). */
304
+ readonly highlight: _radix_ng_primitives_core.ListHighlight<RdxCollectionItem<unknown>>;
305
+ readonly selectedItem: _angular_core.WritableSignal<HTMLElement | undefined>;
306
+ readonly selectedItemText: _angular_core.WritableSignal<HTMLElement | undefined>;
307
+ readonly firstValidItemFoundRef: _angular_core.WritableSignal<boolean>;
308
+ readonly viewport: _angular_core.WritableSignal<HTMLElement | undefined>;
309
+ readonly isPositioned: _angular_core.WritableSignal<boolean>;
310
+ private keyboardActive;
311
+ /**
312
+ * Event handler called when the escape key is down.
313
+ * Can be prevented.
314
+ */
315
+ readonly escapeKeyDown: OutputRef<KeyboardEvent>;
316
+ /**
317
+ * Event handler called when a `pointerdown` event happens outside of the `DismissableLayer`.
318
+ * Can be prevented.
319
+ */
320
+ readonly pointerDownOutside: OutputRef<PointerEvent>;
321
+ readonly content: _angular_core.WritableSignal<HTMLElement | null>;
322
+ set positioner(port: RdxPositionerImpl | undefined);
323
+ constructor();
324
+ /** Highlights the selected item (or the first enabled one) when the popup opens. */
325
+ highlightSelectedItem(): void;
326
+ private scrollSelectedIntoView;
327
+ setKeyboardActive(value: boolean): void;
328
+ isKeyboardActive(): boolean;
329
+ handleKeyDown(event: Event): void;
330
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxSelectPopup, never>;
331
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSelectPopup, "[rdxSelectPopup]", never, {}, { "escapeKeyDown": "escapeKeyDown"; "pointerDownOutside": "pointerDownOutside"; }, ["positioner"], never, true, [{ directive: typeof i1$1.RdxFocusScope; inputs: {}; outputs: {}; }, { directive: typeof i2.RdxDismissableLayer; inputs: {}; outputs: {}; }, { directive: typeof i1.RdxCollectionProvider; inputs: {}; outputs: {}; }]>;
332
+ }
333
+
334
+ declare class RdxSelectPortal {
335
+ /**
336
+ * Optional container to portal the content into. Defaults to `document.body` when not set.
337
+ */
338
+ readonly container: _angular_core.InputSignal<RdxPortalContainer | undefined>;
339
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxSelectPortal, never>;
340
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSelectPortal, "[rdxSelectPortal]", never, { "container": { "alias": "container"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1$2.RdxPortal; inputs: { "container": "container"; }; outputs: {}; }]>;
341
+ }
342
+
343
+ declare class RdxSelectPortalPresence {
344
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxSelectPortalPresence, never>;
345
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSelectPortalPresence, "ng-template[rdxSelectPortalPresence]", never, {}, {}, never, never, true, [{ directive: typeof i1$3.RdxPresenceDirective; inputs: {}; outputs: {}; }]>;
252
346
  }
253
347
 
254
- declare class RdxSelectPopperPositionWrapper implements RdxPositionerImpl {
348
+ declare class RdxSelectPositioner implements RdxPositionerImpl {
255
349
  /**
256
350
  * The preferred side of the anchor to render against when open.
257
351
  * Will be reversed when collisions occur and avoidCollisions is enabled.
@@ -264,7 +358,7 @@ declare class RdxSelectPopperPositionWrapper implements RdxPositionerImpl {
264
358
  /**
265
359
  * The preferred alignment against the anchor. May change when collisions occur.
266
360
  */
267
- readonly align: _angular_core.InputSignal<"start" | "center" | "end">;
361
+ readonly align: _angular_core.InputSignal<"center" | "end" | "start">;
268
362
  /**
269
363
  * An offset in pixels from the `start` or `end` alignment options.
270
364
  */
@@ -306,22 +400,40 @@ declare class RdxSelectPopperPositionWrapper implements RdxPositionerImpl {
306
400
  * Emits when the element is placed.
307
401
  */
308
402
  readonly placed: _angular_core.OutputRef<void>;
309
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxSelectPopperPositionWrapper, never>;
310
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSelectPopperPositionWrapper, "[rdxSelectPopperPositionWrapper]", never, { "side": { "alias": "side"; "required": false; "isSignal": true; }; "sideOffset": { "alias": "sideOffset"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "alignOffset": { "alias": "alignOffset"; "required": false; "isSignal": true; }; "arrowPadding": { "alias": "arrowPadding"; "required": false; "isSignal": true; }; "avoidCollisions": { "alias": "avoidCollisions"; "required": false; "isSignal": true; }; "collisionBoundary": { "alias": "collisionBoundary"; "required": false; "isSignal": true; }; "collisionPadding": { "alias": "collisionPadding"; "required": false; "isSignal": true; }; "sticky": { "alias": "sticky"; "required": false; "isSignal": true; }; "hideWhenDetached": { "alias": "hideWhenDetached"; "required": false; "isSignal": true; }; "updatePositionStrategy": { "alias": "updatePositionStrategy"; "required": false; "isSignal": true; }; }, { "placed": "placed"; }, never, never, true, [{ directive: typeof i1$1.RdxPopperContentWrapper; inputs: { "side": "side"; "sideOffset": "sideOffset"; "align": "align"; "alignOffset": "alignOffset"; "arrowPadding": "arrowPadding"; "avoidCollisions": "avoidCollisions"; "collisionBoundary": "collisionBoundary"; "collisionPadding": "collisionPadding"; "sticky": "sticky"; "hideWhenDetached": "hideWhenDetached"; "updatePositionStrategy": "updatePositionStrategy"; }; outputs: {}; }]>;
403
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxSelectPositioner, never>;
404
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSelectPositioner, "[rdxSelectPositioner]", never, { "side": { "alias": "side"; "required": false; "isSignal": true; }; "sideOffset": { "alias": "sideOffset"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "alignOffset": { "alias": "alignOffset"; "required": false; "isSignal": true; }; "arrowPadding": { "alias": "arrowPadding"; "required": false; "isSignal": true; }; "avoidCollisions": { "alias": "avoidCollisions"; "required": false; "isSignal": true; }; "collisionBoundary": { "alias": "collisionBoundary"; "required": false; "isSignal": true; }; "collisionPadding": { "alias": "collisionPadding"; "required": false; "isSignal": true; }; "sticky": { "alias": "sticky"; "required": false; "isSignal": true; }; "hideWhenDetached": { "alias": "hideWhenDetached"; "required": false; "isSignal": true; }; "updatePositionStrategy": { "alias": "updatePositionStrategy"; "required": false; "isSignal": true; }; }, { "placed": "placed"; }, never, never, true, [{ directive: typeof i1$4.RdxPopperContentWrapper; inputs: { "side": "side"; "sideOffset": "sideOffset"; "align": "align"; "alignOffset": "alignOffset"; "arrowPadding": "arrowPadding"; "avoidCollisions": "avoidCollisions"; "collisionBoundary": "collisionBoundary"; "collisionPadding": "collisionPadding"; "sticky": "sticky"; "hideWhenDetached": "hideWhenDetached"; "updatePositionStrategy": "updatePositionStrategy"; }; outputs: {}; }]>;
311
405
  }
312
406
 
313
- declare class RdxSelectPortal {
314
- /**
315
- * Optional container to portal the content into. Defaults to `document.body` when not set.
316
- */
317
- readonly container: _angular_core.InputSignal<RdxPortalContainer | undefined>;
318
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxSelectPortal, never>;
319
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSelectPortal, "[rdxSelectPortal]", never, { "container": { "alias": "container"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1$2.RdxPortal; inputs: { "container": "container"; }; outputs: {}; }]>;
320
- }
321
-
322
- declare class RdxSelectPortalPresence {
323
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxSelectPortalPresence, never>;
324
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSelectPortalPresence, "ng-template[rdxSelectPortalPresence]", never, {}, {}, never, never, true, [{ directive: typeof i1$3.RdxPresenceDirective; inputs: {}; outputs: {}; }]>;
407
+ declare class RdxSelectPositionerContent {
408
+ protected rootContext: {
409
+ triggerElement: _angular_core.WritableSignal<HTMLElement | null>;
410
+ valueElement: _angular_core.WritableSignal<HTMLElement | null>;
411
+ triggerPointerDownPosRef: _angular_core.WritableSignal<{
412
+ x: number;
413
+ y: number;
414
+ } | null>;
415
+ contentId: string;
416
+ dir: _angular_core.InputSignal<_radix_ng_primitives_types_radix_ng_primitives_core.Direction>;
417
+ value: _angular_core.ModelSignal<_radix_ng_primitives_types_radix_ng_primitives_core.AcceptableValue | _radix_ng_primitives_types_radix_ng_primitives_core.AcceptableValue[] | undefined>;
418
+ multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
419
+ isItemEqualToValue: _angular_core.InputSignal<_radix_ng_primitives_types_radix_ng_primitives_core.ItemValueComparator<_radix_ng_primitives_types_radix_ng_primitives_core.AcceptableValue> | undefined>;
420
+ itemToStringLabel: _angular_core.InputSignal<((value: _radix_ng_primitives_types_radix_ng_primitives_core.AcceptableValue) => string) | undefined>;
421
+ open: _angular_core.ModelSignal<boolean>;
422
+ disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
423
+ modal: _angular_core.InputSignalWithTransform<boolean, unknown>;
424
+ isEmptyModelValue: _angular_core.Signal<boolean>;
425
+ transitionStatus: _angular_core.Signal<_radix_ng_primitives_types_radix_ng_primitives_core.RdxTransitionStatus>;
426
+ registerTransitionElement: (element: HTMLElement) => () => void;
427
+ optionsSet: _angular_core.WritableSignal<Set<_radix_ng_primitives_select.SelectOption>>;
428
+ onOptionAdd: (option: any) => void;
429
+ onOptionRemove: (option: any) => void;
430
+ onValueChange: (value: _radix_ng_primitives_types_radix_ng_primitives_core.AcceptableValue) => void;
431
+ onTriggerChange: (node: any) => void;
432
+ onValueElementChange: (node: any) => void;
433
+ onOpenChange: (value: any) => void;
434
+ };
435
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxSelectPositionerContent, never>;
436
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSelectPositionerContent, "[rdxSelectPositionerContent]", never, {}, {}, never, never, true, [{ directive: typeof i1$4.RdxPopperContent; inputs: {}; outputs: {}; }]>;
325
437
  }
326
438
 
327
439
  interface SelectOption {
@@ -340,9 +452,14 @@ declare const context: () => {
340
452
  dir: _angular_core.InputSignal<Direction>;
341
453
  value: _angular_core.ModelSignal<AcceptableValue | AcceptableValue[] | undefined>;
342
454
  multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
343
- by: _angular_core.InputSignal<string | ((a: AcceptableValue, b: AcceptableValue) => boolean) | undefined>;
455
+ isItemEqualToValue: _angular_core.InputSignal<ItemValueComparator<AcceptableValue> | undefined>;
456
+ itemToStringLabel: _angular_core.InputSignal<((value: AcceptableValue) => string) | undefined>;
344
457
  open: _angular_core.ModelSignal<boolean>;
345
458
  disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
459
+ modal: _angular_core.InputSignalWithTransform<boolean, unknown>;
460
+ isEmptyModelValue: _angular_core.Signal<boolean>;
461
+ transitionStatus: _angular_core.Signal<_radix_ng_primitives_core.RdxTransitionStatus>;
462
+ registerTransitionElement: (element: HTMLElement) => () => void;
346
463
  optionsSet: _angular_core.WritableSignal<Set<SelectOption>>;
347
464
  onOptionAdd: (option: any) => void;
348
465
  onOptionRemove: (option: any) => void;
@@ -363,9 +480,14 @@ declare const injectSelectRootContext: _radix_ng_primitives_core.InjectContext<{
363
480
  dir: _angular_core.InputSignal<Direction>;
364
481
  value: _angular_core.ModelSignal<AcceptableValue | AcceptableValue[] | undefined>;
365
482
  multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
366
- by: _angular_core.InputSignal<string | ((a: AcceptableValue, b: AcceptableValue) => boolean) | undefined>;
483
+ isItemEqualToValue: _angular_core.InputSignal<ItemValueComparator<AcceptableValue> | undefined>;
484
+ itemToStringLabel: _angular_core.InputSignal<((value: AcceptableValue) => string) | undefined>;
367
485
  open: _angular_core.ModelSignal<boolean>;
368
486
  disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
487
+ modal: _angular_core.InputSignalWithTransform<boolean, unknown>;
488
+ isEmptyModelValue: _angular_core.Signal<boolean>;
489
+ transitionStatus: _angular_core.Signal<_radix_ng_primitives_core.RdxTransitionStatus>;
490
+ registerTransitionElement: (element: HTMLElement) => () => void;
369
491
  optionsSet: _angular_core.WritableSignal<Set<SelectOption>>;
370
492
  onOptionAdd: (option: any) => void;
371
493
  onOptionRemove: (option: any) => void;
@@ -385,9 +507,14 @@ declare const provideSelectRootContext: (useFactory: () => {
385
507
  dir: _angular_core.InputSignal<Direction>;
386
508
  value: _angular_core.ModelSignal<AcceptableValue | AcceptableValue[] | undefined>;
387
509
  multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
388
- by: _angular_core.InputSignal<string | ((a: AcceptableValue, b: AcceptableValue) => boolean) | undefined>;
510
+ isItemEqualToValue: _angular_core.InputSignal<ItemValueComparator<AcceptableValue> | undefined>;
511
+ itemToStringLabel: _angular_core.InputSignal<((value: AcceptableValue) => string) | undefined>;
389
512
  open: _angular_core.ModelSignal<boolean>;
390
513
  disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
514
+ modal: _angular_core.InputSignalWithTransform<boolean, unknown>;
515
+ isEmptyModelValue: _angular_core.Signal<boolean>;
516
+ transitionStatus: _angular_core.Signal<_radix_ng_primitives_core.RdxTransitionStatus>;
517
+ registerTransitionElement: (element: HTMLElement) => () => void;
391
518
  optionsSet: _angular_core.WritableSignal<Set<SelectOption>>;
392
519
  onOptionAdd: (option: any) => void;
393
520
  onOptionRemove: (option: any) => void;
@@ -401,10 +528,22 @@ declare class RdxSelectRoot {
401
528
  readonly value: _angular_core.ModelSignal<AcceptableValue | AcceptableValue[] | undefined>;
402
529
  readonly multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
403
530
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
531
+ /** Whether the popup is modal: locks page scroll and makes outside content inert while open. */
532
+ readonly modal: _angular_core.InputSignalWithTransform<boolean, unknown>;
404
533
  readonly dir: _angular_core.InputSignal<Direction>;
405
- /** Use this to compare objects by a particular field, or pass your own comparison function for complete control over how objects are compared. */
406
- readonly by: _angular_core.InputSignal<string | ((a: AcceptableValue, b: AcceptableValue) => boolean) | undefined>;
534
+ /** How item values are compared for equality a function `(a, b) => boolean` or an object key. */
535
+ readonly isItemEqualToValue: _angular_core.InputSignal<ItemValueComparator<AcceptableValue> | undefined>;
536
+ /** Converts a value to its display label (used by `RdxSelectValue`). */
537
+ readonly itemToStringLabel: _angular_core.InputSignal<((value: AcceptableValue) => string) | undefined>;
538
+ /** Emits after the open/close transition (including any exit animation) finishes. */
539
+ readonly onOpenChangeComplete: _angular_core.OutputEmitterRef<boolean>;
540
+ private readonly transition;
541
+ /** Open/close transition phase, for `data-starting-style` / `data-ending-style`. */
542
+ readonly transitionStatus: _angular_core.Signal<_radix_ng_primitives_core.RdxTransitionStatus>;
543
+ /** Registers the popup element whose animation determines transition completion. */
544
+ readonly registerTransitionElement: (element: HTMLElement) => () => void;
407
545
  readonly isEmptyModelValue: _angular_core.Signal<boolean>;
546
+ constructor();
408
547
  readonly optionsSet: _angular_core.WritableSignal<Set<SelectOption>>;
409
548
  readonly nativeSelectKey: _angular_core.Signal<string>;
410
549
  readonly triggerElement: _angular_core.WritableSignal<HTMLElement | null>;
@@ -416,7 +555,17 @@ declare class RdxSelectRoot {
416
555
  getOption(value: SelectOption['value']): SelectOption | undefined;
417
556
  handleValueChange(value: AcceptableValue): void;
418
557
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxSelectRoot, never>;
419
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSelectRoot, "[rdxSelectRoot]", ["rdxSelectRoot"], { "open": { "alias": "open"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "dir": { "alias": "dir"; "required": false; "isSignal": true; }; "by": { "alias": "by"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "value": "valueChange"; }, never, never, true, [{ directive: typeof i1$1.RdxPopper; inputs: {}; outputs: {}; }]>;
558
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSelectRoot, "[rdxSelectRoot]", ["rdxSelectRoot"], { "open": { "alias": "open"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "modal": { "alias": "modal"; "required": false; "isSignal": true; }; "dir": { "alias": "dir"; "required": false; "isSignal": true; }; "isItemEqualToValue": { "alias": "isItemEqualToValue"; "required": false; "isSignal": true; }; "itemToStringLabel": { "alias": "itemToStringLabel"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "value": "valueChange"; "onOpenChangeComplete": "onOpenChangeComplete"; }, never, never, true, [{ directive: typeof i1$4.RdxPopper; inputs: {}; outputs: {}; }]>;
559
+ }
560
+
561
+ /**
562
+ * A visual divider between groups of items.
563
+ *
564
+ * @group Components
565
+ */
566
+ declare class RdxSelectSeparator {
567
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxSelectSeparator, never>;
568
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSelectSeparator, "[rdxSelectSeparator]", ["rdxSelectSeparator"], {}, {}, never, never, true, never>;
420
569
  }
421
570
 
422
571
  declare class RdxSelectTrigger {
@@ -428,23 +577,36 @@ declare class RdxSelectTrigger {
428
577
  y: number;
429
578
  } | null>;
430
579
  contentId: string;
431
- dir: _angular_core.InputSignal<_radix_ng_primitives_types_radix_ng_primitives_core.Direction>;
432
- value: _angular_core.ModelSignal<_radix_ng_primitives_types_radix_ng_primitives_core.AcceptableValue | _radix_ng_primitives_types_radix_ng_primitives_core.AcceptableValue[] | undefined>;
580
+ dir: _angular_core.InputSignal<_radix_ng_primitives_core.Direction>;
581
+ value: _angular_core.ModelSignal<_radix_ng_primitives_core.AcceptableValue | _radix_ng_primitives_core.AcceptableValue[] | undefined>;
433
582
  multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
434
- by: _angular_core.InputSignal<string | ((a: _radix_ng_primitives_types_radix_ng_primitives_core.AcceptableValue, b: _radix_ng_primitives_types_radix_ng_primitives_core.AcceptableValue) => boolean) | undefined>;
583
+ isItemEqualToValue: _angular_core.InputSignal<_radix_ng_primitives_core.ItemValueComparator<_radix_ng_primitives_core.AcceptableValue> | undefined>;
584
+ itemToStringLabel: _angular_core.InputSignal<((value: _radix_ng_primitives_core.AcceptableValue) => string) | undefined>;
435
585
  open: _angular_core.ModelSignal<boolean>;
436
586
  disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
587
+ modal: _angular_core.InputSignalWithTransform<boolean, unknown>;
588
+ isEmptyModelValue: _angular_core.Signal<boolean>;
589
+ transitionStatus: _angular_core.Signal<_radix_ng_primitives_core.RdxTransitionStatus>;
590
+ registerTransitionElement: (element: HTMLElement) => () => void;
437
591
  optionsSet: _angular_core.WritableSignal<Set<_radix_ng_primitives_select.SelectOption>>;
438
592
  onOptionAdd: (option: any) => void;
439
593
  onOptionRemove: (option: any) => void;
440
- onValueChange: (value: _radix_ng_primitives_types_radix_ng_primitives_core.AcceptableValue) => void;
594
+ onValueChange: (value: _radix_ng_primitives_core.AcceptableValue) => void;
441
595
  onTriggerChange: (node: any) => void;
442
596
  onValueElementChange: (node: any) => void;
443
597
  onOpenChange: (value: any) => void;
444
598
  };
445
599
  readonly elementRef: ElementRef<HTMLElement>;
600
+ private readonly fieldRootContext;
601
+ /** The trigger id; Field labels and descriptions reference it for accessible relationships. */
602
+ readonly id: _angular_core.InputSignal<string>;
446
603
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
447
604
  readonly isDisabled: _angular_core.Signal<boolean>;
605
+ protected readonly invalidState: _angular_core.Signal<boolean>;
606
+ protected readonly requiredState: _angular_core.Signal<boolean>;
607
+ protected readonly filledState: _angular_core.Signal<boolean>;
608
+ protected readonly focusedState: _angular_core.Signal<boolean>;
609
+ protected readonly describedBy: _angular_core.Signal<string | undefined>;
448
610
  constructor();
449
611
  handleOpen(): void;
450
612
  handlePointerOpen(event: Event): void;
@@ -452,8 +614,11 @@ declare class RdxSelectTrigger {
452
614
  onPointerDown(event: Event): void;
453
615
  onPointerUp(event: Event): void;
454
616
  onKeydown(event: Event): void;
617
+ onFocus(): void;
618
+ onBlur(): void;
619
+ protected readonly dataAttr: (value: boolean) => "" | undefined;
455
620
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxSelectTrigger, never>;
456
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSelectTrigger, "button[rdxSelectTrigger]", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1$1.RdxPopperAnchor; inputs: {}; outputs: {}; }]>;
621
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSelectTrigger, "button[rdxSelectTrigger]", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1$4.RdxPopperAnchor; inputs: {}; outputs: {}; }]>;
457
622
  }
458
623
 
459
624
  declare class RdxSelectValue {
@@ -468,9 +633,14 @@ declare class RdxSelectValue {
468
633
  dir: _angular_core.InputSignal<_radix_ng_primitives_core.Direction>;
469
634
  value: _angular_core.ModelSignal<AcceptableValue | AcceptableValue[] | undefined>;
470
635
  multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
471
- by: _angular_core.InputSignal<string | ((a: AcceptableValue, b: AcceptableValue) => boolean) | undefined>;
636
+ isItemEqualToValue: _angular_core.InputSignal<_radix_ng_primitives_core.ItemValueComparator<AcceptableValue> | undefined>;
637
+ itemToStringLabel: _angular_core.InputSignal<((value: AcceptableValue) => string) | undefined>;
472
638
  open: _angular_core.ModelSignal<boolean>;
473
639
  disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
640
+ modal: _angular_core.InputSignalWithTransform<boolean, unknown>;
641
+ isEmptyModelValue: _angular_core.Signal<boolean>;
642
+ transitionStatus: _angular_core.Signal<_radix_ng_primitives_core.RdxTransitionStatus>;
643
+ registerTransitionElement: (element: HTMLElement) => () => void;
474
644
  optionsSet: _angular_core.WritableSignal<Set<_radix_ng_primitives_select.SelectOption>>;
475
645
  onOptionAdd: (option: any) => void;
476
646
  onOptionRemove: (option: any) => void;
@@ -488,16 +658,6 @@ declare class RdxSelectValue {
488
658
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSelectValue, "span[rdxSelectValue]", ["rdxSelectedValue"], { "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
489
659
  }
490
660
 
491
- declare class RdxSelectViewport {
492
- private readonly contentContext;
493
- private readonly elementRef;
494
- private readonly prevScrollTopRef;
495
- constructor();
496
- handleScroll(event: Event): void;
497
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxSelectViewport, never>;
498
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSelectViewport, "[rdxSelectViewport]", never, {}, {}, never, never, true, never>;
499
- }
500
-
501
661
  declare const OPEN_KEYS: string[];
502
662
  declare const SELECTION_KEYS: string[];
503
663
  declare const CONTENT_MARGIN = 10;
@@ -506,7 +666,7 @@ declare function compare<T>(value?: T, currentValue?: T, comparator?: string | (
506
666
  declare function shouldShowPlaceholder(value?: AcceptableValue | AcceptableValue[]): boolean;
507
667
  declare function focusFirst(candidates: HTMLElement[]): void;
508
668
 
509
- declare const _importsSelect: (typeof RdxSelectLabel)[];
669
+ declare const _importsSelect: (typeof RdxSelectGroupLabel)[];
510
670
 
511
- export { CONTENT_MARGIN, OPEN_KEYS, RDX_SELECT_POSITIONER_TOKEN, RdxSelectContent, RdxSelectGroup, RdxSelectItem, RdxSelectItemIndicator, RdxSelectItemText, RdxSelectLabel, RdxSelectPopperPositionContent, RdxSelectPopperPositionWrapper, RdxSelectPortal, RdxSelectPortalPresence, RdxSelectRoot, RdxSelectTrigger, RdxSelectValue, RdxSelectViewport, SELECTION_KEYS, _importsSelect, compare, focusFirst, injectSelectContentContext, injectSelectItemContext, injectSelectRootContext, provideSelectContentContext, provideSelectItemContext, provideSelectRootContext, shouldShowPlaceholder, valueComparator };
512
- export type { RdxPositionerImpl, RdxSelectContentContext, RdxSelectItemContext, RdxSelectRootContext, SelectEvent, SelectOption };
671
+ export { CONTENT_MARGIN, OPEN_KEYS, RDX_SELECT_POSITIONER_TOKEN, RdxSelectBackdrop, RdxSelectGroup, RdxSelectGroupLabel, RdxSelectIcon, RdxSelectItem, RdxSelectItemIndicator, RdxSelectItemText, RdxSelectList, RdxSelectPopup, RdxSelectPortal, RdxSelectPortalPresence, RdxSelectPositioner, RdxSelectPositionerContent, RdxSelectRoot, RdxSelectSeparator, RdxSelectTrigger, RdxSelectValue, SELECTION_KEYS, _importsSelect, compare, focusFirst, injectSelectItemContext, injectSelectPopupContext, injectSelectRootContext, provideSelectItemContext, provideSelectPopupContext, provideSelectRootContext, shouldShowPlaceholder, valueComparator };
672
+ export type { RdxPositionerImpl, RdxSelectItemContext, RdxSelectPopupContext, RdxSelectRootContext, SelectEvent, SelectOption };