@radix-ng/primitives 1.1.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/fesm2022/radix-ng-primitives-autocomplete.mjs +66 -7
  2. package/fesm2022/radix-ng-primitives-autocomplete.mjs.map +1 -1
  3. package/fesm2022/radix-ng-primitives-checkbox.mjs +147 -125
  4. package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
  5. package/fesm2022/radix-ng-primitives-combobox.mjs +171 -37
  6. package/fesm2022/radix-ng-primitives-combobox.mjs.map +1 -1
  7. package/fesm2022/radix-ng-primitives-core.mjs +173 -5
  8. package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
  9. package/fesm2022/radix-ng-primitives-number-field.mjs +38 -7
  10. package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
  11. package/fesm2022/radix-ng-primitives-radio.mjs +49 -2
  12. package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
  13. package/fesm2022/radix-ng-primitives-select.mjs +35 -3
  14. package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
  15. package/fesm2022/radix-ng-primitives-slider.mjs +17 -2
  16. package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
  17. package/fesm2022/radix-ng-primitives-switch.mjs +60 -7
  18. package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
  19. package/fesm2022/radix-ng-primitives-toggle-group.mjs +25 -3
  20. package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
  21. package/package.json +1 -1
  22. package/types/radix-ng-primitives-autocomplete.d.ts +10 -1
  23. package/types/radix-ng-primitives-checkbox.d.ts +56 -43
  24. package/types/radix-ng-primitives-combobox.d.ts +46 -2
  25. package/types/radix-ng-primitives-core.d.ts +62 -4
  26. package/types/radix-ng-primitives-number-field.d.ts +12 -5
  27. package/types/radix-ng-primitives-radio.d.ts +6 -1
  28. package/types/radix-ng-primitives-select.d.ts +8 -1
  29. package/types/radix-ng-primitives-slider.d.ts +2 -1
  30. package/types/radix-ng-primitives-switch.d.ts +19 -3
  31. package/types/radix-ng-primitives-toggle-group.d.ts +5 -1
@@ -392,6 +392,10 @@ declare class RdxSelectRoot extends RdxFormUiControlBase implements ControlValue
392
392
  readonly readOnly: _angular_core.InputSignalWithTransform<boolean, unknown>;
393
393
  /** Marks the control as required — reflected on the trigger as `aria-required` / `data-required`. */
394
394
  readonly required: _angular_core.InputSignalWithTransform<boolean, unknown>;
395
+ /** Name used when serializing this composite control into native `FormData`. */
396
+ readonly name: _angular_core.InputSignal<string | undefined>;
397
+ /** Id of an external form that owns this control. */
398
+ readonly form: _angular_core.InputSignal<string | undefined>;
395
399
  /** Whether the popup is modal: locks page scroll and makes outside content inert while open. */
396
400
  readonly modal: _angular_core.InputSignalWithTransform<boolean, unknown>;
397
401
  readonly dirInput: _angular_core.InputSignal<Direction | undefined>;
@@ -400,6 +404,8 @@ declare class RdxSelectRoot extends RdxFormUiControlBase implements ControlValue
400
404
  readonly isItemEqualToValue: _angular_core.InputSignal<ItemValueComparator<AcceptableValue> | undefined>;
401
405
  /** Converts a value to its display label (used by `RdxSelectValue`). */
402
406
  readonly itemToStringLabel: _angular_core.InputSignal<((value: AcceptableValue) => string) | undefined>;
407
+ /** Converts an item value to the string submitted by a native form. */
408
+ readonly itemToStringValue: _angular_core.InputSignal<((value: AcceptableValue) => string) | undefined>;
403
409
  /** Emits before an open-state change is committed; call `eventDetails.cancel()` to veto it. */
404
410
  readonly onOpenChange: _angular_core.OutputEmitterRef<RdxSelectOpenChangeEvent>;
405
411
  /** Emits before a value change is committed; call `eventDetails.cancel()` to veto it. */
@@ -414,6 +420,7 @@ declare class RdxSelectRoot extends RdxFormUiControlBase implements ControlValue
414
420
  readonly isEmptyModelValue: Signal<boolean>;
415
421
  private hasAppliedDefaultValue;
416
422
  private hasAppliedDefaultOpen;
423
+ private readonly nativeFormControl;
417
424
  constructor();
418
425
  readonly optionsSet: WritableSignal<Set<SelectOption>>;
419
426
  readonly nativeSelectKey: Signal<string>;
@@ -439,7 +446,7 @@ declare class RdxSelectRoot extends RdxFormUiControlBase implements ControlValue
439
446
  private onChange?;
440
447
  private onTouched?;
441
448
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxSelectRoot, never>;
442
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSelectRoot, "[rdxSelectRoot]", ["rdxSelectRoot"], { "open": { "alias": "open"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "defaultOpen": { "alias": "defaultOpen"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readOnly": { "alias": "readOnly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "modal": { "alias": "modal"; "required": false; "isSignal": true; }; "dirInput": { "alias": "dir"; "required": false; "isSignal": true; }; "isItemEqualToValue": { "alias": "isItemEqualToValue"; "required": false; "isSignal": true; }; "itemToStringLabel": { "alias": "itemToStringLabel"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "value": "valueChange"; "onOpenChange": "onOpenChange"; "onValueChange": "onValueChange"; "onOpenChangeComplete": "onOpenChangeComplete"; }, never, never, true, [{ directive: typeof i1$1.RdxPopper; inputs: {}; outputs: {}; }]>;
449
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSelectRoot, "[rdxSelectRoot]", ["rdxSelectRoot"], { "open": { "alias": "open"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "defaultOpen": { "alias": "defaultOpen"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readOnly": { "alias": "readOnly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "modal": { "alias": "modal"; "required": false; "isSignal": true; }; "dirInput": { "alias": "dir"; "required": false; "isSignal": true; }; "isItemEqualToValue": { "alias": "isItemEqualToValue"; "required": false; "isSignal": true; }; "itemToStringLabel": { "alias": "itemToStringLabel"; "required": false; "isSignal": true; }; "itemToStringValue": { "alias": "itemToStringValue"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "value": "valueChange"; "onOpenChange": "onOpenChange"; "onValueChange": "onValueChange"; "onOpenChangeComplete": "onOpenChangeComplete"; }, never, never, true, [{ directive: typeof i1$1.RdxPopper; inputs: {}; outputs: {}; }]>;
443
450
  }
444
451
 
445
452
  declare class RdxSelectScrollButtonBase {
@@ -189,7 +189,7 @@ declare class RdxSliderRoot extends RdxFormUiControlBase {
189
189
  readonly format: _angular_core.InputSignal<Intl.NumberFormatOptions | undefined>;
190
190
  /** Locale used for value formatting. */
191
191
  readonly locale: _angular_core.InputSignal<string | undefined>;
192
- /** Name of the hidden inputs rendered by each thumb, for form submission. */
192
+ /** Name of the native range input rendered by each thumb, for form submission. */
193
193
  readonly name: _angular_core.InputSignal<string | undefined>;
194
194
  /** Id of the form the slider belongs to. */
195
195
  readonly form: _angular_core.InputSignal<string | undefined>;
@@ -231,6 +231,7 @@ declare class RdxSliderRoot extends RdxFormUiControlBase {
231
231
  lastChangeEvent: Event | undefined;
232
232
  /** @ignore */
233
233
  readonly isDisabled: Signal<boolean>;
234
+ private readonly nativeFormControl;
234
235
  /** @ignore */
235
236
  readonly inset: Signal<boolean>;
236
237
  /** @ignore */
@@ -11,6 +11,8 @@ import { RdxCancelableChangeEventDetails, RdxFormUiControlBase, RdxFormCheckboxC
11
11
  */
12
12
  declare class RdxSwitchInput {
13
13
  protected readonly rootContext: _radix_ng_primitives_switch.RdxSwitchContext;
14
+ private readonly input;
15
+ constructor();
14
16
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxSwitchInput, never>;
15
17
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSwitchInput, "input[rdxSwitchInput]", ["rdxSwitchInput"], {}, {}, never, never, true, never>;
16
18
  }
@@ -58,8 +60,10 @@ declare class RdxSwitchRoot extends RdxFormUiControlBase implements RdxFormCheck
58
60
  * @default false
59
61
  */
60
62
  readonly required: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
61
- /** Name of the hidden form input rendered by `[rdxSwitchInput]`. */
63
+ /** Native form field name. */
62
64
  readonly name: _angular_core.InputSignal<string | undefined>;
65
+ /** Associates the switch with an external form by id. */
66
+ readonly form: _angular_core.InputSignal<string | undefined>;
63
67
  /**
64
68
  * Value submitted with the form when the switch is on.
65
69
  *
@@ -71,6 +75,11 @@ declare class RdxSwitchRoot extends RdxFormUiControlBase implements RdxFormCheck
71
75
  * @default 'on'
72
76
  */
73
77
  readonly submitValue: _angular_core.InputSignal<string>;
78
+ /**
79
+ * Value submitted while the switch is off. When omitted, the off state contributes no entry,
80
+ * matching native checkbox behavior.
81
+ */
82
+ readonly uncheckedValue: _angular_core.InputSignal<string | undefined>;
74
83
  readonly ariaLabelledBy: _angular_core.InputSignal<string | undefined>;
75
84
  readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
76
85
  /** Event handler called when the checked state of the switch changes. */
@@ -79,6 +88,8 @@ declare class RdxSwitchRoot extends RdxFormUiControlBase implements RdxFormCheck
79
88
  readonly checkedState: _angular_core.Signal<boolean>;
80
89
  /** @ignore */
81
90
  protected readonly isDisabled: _angular_core.Signal<boolean>;
91
+ private readonly nativeInput;
92
+ private readonly nativeInputOwnsValue;
82
93
  /** @ignore */
83
94
  readonly invalidState: _angular_core.Signal<boolean>;
84
95
  /** @ignore */
@@ -95,8 +106,10 @@ declare class RdxSwitchRoot extends RdxFormUiControlBase implements RdxFormCheck
95
106
  markAsTouched(): void;
96
107
  /** @ignore Toggles the checked state unless disabled or read-only. */
97
108
  toggle(event?: Event): void;
109
+ /** @ignore Register the optional native checkbox so it owns checked-value serialization. */
110
+ registerNativeInput(input: HTMLInputElement): () => void;
98
111
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxSwitchRoot, never>;
99
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSwitchRoot, "button[rdxSwitchRoot]", ["rdxSwitchRoot"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "defaultChecked": { "alias": "defaultChecked"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "submitValue": { "alias": "value"; "required": false; "isSignal": true; }; "ariaLabelledBy": { "alias": "aria-labelledby"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "onCheckedChange": "onCheckedChange"; }, never, never, true, [{ directive: typeof i1.RdxControlValueAccessor; inputs: { "value": "checked"; "disabled": "disabled"; }; outputs: {}; }]>;
112
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSwitchRoot, "button[rdxSwitchRoot]", ["rdxSwitchRoot"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "defaultChecked": { "alias": "defaultChecked"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "submitValue": { "alias": "value"; "required": false; "isSignal": true; }; "uncheckedValue": { "alias": "uncheckedValue"; "required": false; "isSignal": true; }; "ariaLabelledBy": { "alias": "aria-labelledby"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "onCheckedChange": "onCheckedChange"; }, never, never, true, [{ directive: typeof i1.RdxControlValueAccessor; inputs: { "value": "checked"; "disabled": "disabled"; }; outputs: {}; }]>;
100
113
  }
101
114
 
102
115
  /**
@@ -119,12 +132,15 @@ interface RdxSwitchContext {
119
132
  readonly readonly: Signal<boolean>;
120
133
  /** Whether the switch must be on to submit the owning form. */
121
134
  readonly required: Signal<boolean>;
122
- /** Name of the hidden form input. */
135
+ /** Native form field name. */
123
136
  readonly name: Signal<string | undefined>;
137
+ /** Optional id of an external owning form. */
138
+ readonly form: Signal<string | undefined>;
124
139
  /** Value submitted with the form when the switch is on. */
125
140
  readonly value: Signal<string>;
126
141
  readonly ariaLabel: Signal<string | undefined>;
127
142
  readonly ariaLabelledBy: Signal<string | undefined>;
143
+ registerNativeInput(input: HTMLInputElement): () => void;
128
144
  markAsTouched(): void;
129
145
  }
130
146
  declare const injectSwitchContext: i1.InjectContext<RdxSwitchContext>;
@@ -49,6 +49,10 @@ declare abstract class RdxToggleGroupBase extends RdxFormUiControlBase implement
49
49
  readonly value: _angular_core.ModelSignal<string[] | undefined>;
50
50
  /** The values pressed when the group is initially rendered (uncontrolled). */
51
51
  readonly defaultValue: _angular_core.InputSignal<string[] | undefined>;
52
+ /** Native form field name. Pressed values are submitted as repeated entries under this name. */
53
+ readonly name: _angular_core.InputSignal<string | undefined>;
54
+ /** Associates the group with an external form by id. */
55
+ readonly form: _angular_core.InputSignal<string | undefined>;
52
56
  /**
53
57
  * Whether multiple items can be pressed at the same time.
54
58
  *
@@ -94,7 +98,7 @@ declare abstract class RdxToggleGroupBase extends RdxFormUiControlBase implement
94
98
  /** @ignore */
95
99
  setDisabledState(isDisabled: boolean): void;
96
100
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxToggleGroupBase, never>;
97
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxToggleGroupBase, never, never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "onValueChange": "onValueChange"; }, never, never, true, never>;
101
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxToggleGroupBase, never, never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "onValueChange": "onValueChange"; }, never, never, true, never>;
98
102
  }
99
103
 
100
104
  /**