@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,7 +1,11 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { RdxFormValueControl, BooleanInput } from '@radix-ng/primitives/core';
2
+ import { RdxFormValueControl, BooleanInput, RdxValidationError, NumberInput } from '@radix-ng/primitives/core';
3
3
 
4
- type RdxInputValue = string | number | readonly string[];
4
+ /**
5
+ * The input value. Native text inputs always produce strings, so the model is
6
+ * `string` — matching Signal Forms' `FormValueControl<string>` round-trip.
7
+ */
8
+ type RdxInputValue = string;
5
9
  interface RdxInputValueChangeEventDetails {
6
10
  event: Event;
7
11
  cancel: () => void;
@@ -24,30 +28,44 @@ declare class RdxInputDirective implements RdxFormValueControl<RdxInputValue | u
24
28
  private defaultValueApplied;
25
29
  private readonly filledValue;
26
30
  private readonly focusedValue;
31
+ private readonly dirtyValue;
27
32
  /**
28
33
  * The input id. Field labels and descriptions use this value for accessible relationships.
29
34
  *
30
35
  * @group Props
31
36
  */
32
37
  readonly id: _angular_core.InputSignal<string>;
38
+ /**
39
+ * The name of the input, submitted with the form data and used by Form-level
40
+ * error matching.
41
+ *
42
+ * @group Props
43
+ */
44
+ readonly name: _angular_core.InputSignal<string | undefined>;
33
45
  /**
34
46
  * The controlled input value.
35
47
  *
36
48
  * @group Props
37
49
  */
38
- readonly value: _angular_core.ModelSignal<RdxInputValue | undefined>;
50
+ readonly value: _angular_core.ModelSignal<string | undefined>;
39
51
  /**
40
52
  * The initial value when the input is uncontrolled.
41
53
  *
42
54
  * @group Props
43
55
  */
44
- readonly defaultValue: _angular_core.InputSignal<RdxInputValue | undefined>;
56
+ readonly defaultValue: _angular_core.InputSignal<string | undefined>;
45
57
  /**
46
58
  * Whether the input is disabled.
47
59
  *
48
60
  * @group Props
49
61
  */
50
62
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
63
+ /**
64
+ * Whether the input is read-only.
65
+ *
66
+ * @group Props
67
+ */
68
+ readonly readonly: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
51
69
  /**
52
70
  * Whether the input is required.
53
71
  *
@@ -60,17 +78,69 @@ declare class RdxInputDirective implements RdxFormValueControl<RdxInputValue | u
60
78
  * @group Props
61
79
  */
62
80
  readonly invalid: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
81
+ /**
82
+ * Whether the input has been touched. A two-way model: the input sets it on
83
+ * blur (emitting `touchedChange`, which Signal Forms' `[formField]` listens
84
+ * to), and a form system can write it back.
85
+ *
86
+ * @group Props
87
+ */
88
+ readonly touched: _angular_core.ModelSignal<boolean>;
89
+ /**
90
+ * Whether the input value has changed from its initial value. Merged with the
91
+ * internally tracked state; a form system can own it through this input.
92
+ *
93
+ * @group Props
94
+ */
95
+ readonly dirty: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
96
+ /**
97
+ * Validation errors for the input. A non-empty list marks the input invalid.
98
+ *
99
+ * @group Props
100
+ */
101
+ readonly errors: _angular_core.InputSignal<readonly RdxValidationError[]>;
102
+ /**
103
+ * Minimum number of characters.
104
+ *
105
+ * @group Props
106
+ */
107
+ readonly minLength: _angular_core.InputSignalWithTransform<number | undefined, NumberInput>;
108
+ /**
109
+ * Maximum number of characters.
110
+ *
111
+ * @group Props
112
+ */
113
+ readonly maxLength: _angular_core.InputSignalWithTransform<number | undefined, NumberInput>;
114
+ /**
115
+ * Patterns the value must match. Reflected to the native `pattern` attribute
116
+ * only when exactly one pattern is provided (the attribute holds a single regex).
117
+ *
118
+ * @group Props
119
+ */
120
+ readonly pattern: _angular_core.InputSignal<readonly RegExp[]>;
63
121
  /**
64
122
  * Emits when the input value changes.
65
123
  *
66
124
  * @group Emits
67
125
  */
68
126
  readonly onValueChange: _angular_core.OutputEmitterRef<RdxInputValueChangeEvent>;
127
+ /**
128
+ * Emits on blur, notifying a form system the input was touched. Stable
129
+ * Angular 22 Signal Forms listens to this `touch` output; the 21.x
130
+ * experimental implementation listens to the `touched` model's
131
+ * `touchedChange` instead — both are emitted, covering either version.
132
+ *
133
+ * @group Emits
134
+ */
135
+ readonly touch: _angular_core.OutputEmitterRef<void>;
69
136
  protected readonly invalidState: _angular_core.Signal<boolean>;
70
137
  protected readonly disabledState: _angular_core.Signal<boolean>;
71
138
  protected readonly requiredState: _angular_core.Signal<boolean>;
72
139
  protected readonly filledState: _angular_core.Signal<boolean>;
73
140
  protected readonly focusedState: _angular_core.Signal<boolean>;
141
+ protected readonly touchedState: _angular_core.Signal<boolean>;
142
+ protected readonly dirtyState: _angular_core.Signal<boolean>;
143
+ protected readonly patternAttr: _angular_core.Signal<string | undefined>;
74
144
  protected readonly describedBy: _angular_core.Signal<string | undefined>;
75
145
  constructor();
76
146
  onFocus(): void;
@@ -80,7 +150,7 @@ declare class RdxInputDirective implements RdxFormValueControl<RdxInputValue | u
80
150
  private writeValue;
81
151
  protected readonly dataAttr: (value: boolean) => "" | undefined;
82
152
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxInputDirective, never>;
83
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxInputDirective, "input[rdxInput]", ["rdxInput"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "onValueChange": "onValueChange"; }, never, never, true, never>;
153
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxInputDirective, "input[rdxInput]", ["rdxInput"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "defaultValue": { "alias": "defaultValue"; "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; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "dirty": { "alias": "dirty"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "minLength": { "alias": "minLength"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "pattern": { "alias": "pattern"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; "onValueChange": "onValueChange"; "touch": "touch"; }, never, never, true, never>;
84
154
  }
85
155
 
86
156
  export { RdxInputDirective };