@cdevhub/ngx-tw 0.2.1 → 0.3.0

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 (139) hide show
  1. package/README.md +264 -49
  2. package/fesm2022/cdevhub-ngx-tw-accordion.mjs +11 -7
  3. package/fesm2022/cdevhub-ngx-tw-accordion.mjs.map +1 -1
  4. package/fesm2022/cdevhub-ngx-tw-alert.mjs +43 -29
  5. package/fesm2022/cdevhub-ngx-tw-alert.mjs.map +1 -1
  6. package/fesm2022/cdevhub-ngx-tw-aspect-ratio.mjs +103 -0
  7. package/fesm2022/cdevhub-ngx-tw-aspect-ratio.mjs.map +1 -0
  8. package/fesm2022/cdevhub-ngx-tw-avatar.mjs +56 -31
  9. package/fesm2022/cdevhub-ngx-tw-avatar.mjs.map +1 -1
  10. package/fesm2022/cdevhub-ngx-tw-badge.mjs +61 -35
  11. package/fesm2022/cdevhub-ngx-tw-badge.mjs.map +1 -1
  12. package/fesm2022/cdevhub-ngx-tw-breadcrumbs.mjs +154 -93
  13. package/fesm2022/cdevhub-ngx-tw-breadcrumbs.mjs.map +1 -1
  14. package/fesm2022/cdevhub-ngx-tw-button.mjs +24 -15
  15. package/fesm2022/cdevhub-ngx-tw-button.mjs.map +1 -1
  16. package/fesm2022/cdevhub-ngx-tw-calendar-luxon.mjs +3 -3
  17. package/fesm2022/cdevhub-ngx-tw-calendar-luxon.mjs.map +1 -1
  18. package/fesm2022/cdevhub-ngx-tw-calendar.mjs +408 -215
  19. package/fesm2022/cdevhub-ngx-tw-calendar.mjs.map +1 -1
  20. package/fesm2022/cdevhub-ngx-tw-card.mjs +33 -24
  21. package/fesm2022/cdevhub-ngx-tw-card.mjs.map +1 -1
  22. package/fesm2022/cdevhub-ngx-tw-carousel.mjs +144 -79
  23. package/fesm2022/cdevhub-ngx-tw-carousel.mjs.map +1 -1
  24. package/fesm2022/cdevhub-ngx-tw-checkbox.mjs +99 -47
  25. package/fesm2022/cdevhub-ngx-tw-checkbox.mjs.map +1 -1
  26. package/fesm2022/cdevhub-ngx-tw-code-block.mjs +34 -20
  27. package/fesm2022/cdevhub-ngx-tw-code-block.mjs.map +1 -1
  28. package/fesm2022/cdevhub-ngx-tw-collapsible.mjs +46 -29
  29. package/fesm2022/cdevhub-ngx-tw-collapsible.mjs.map +1 -1
  30. package/fesm2022/cdevhub-ngx-tw-combobox.mjs +195 -110
  31. package/fesm2022/cdevhub-ngx-tw-combobox.mjs.map +1 -1
  32. package/fesm2022/cdevhub-ngx-tw-command-palette.mjs +140 -73
  33. package/fesm2022/cdevhub-ngx-tw-command-palette.mjs.map +1 -1
  34. package/fesm2022/cdevhub-ngx-tw-core.mjs +16 -11
  35. package/fesm2022/cdevhub-ngx-tw-core.mjs.map +1 -1
  36. package/fesm2022/cdevhub-ngx-tw-date-picker.mjs +393 -149
  37. package/fesm2022/cdevhub-ngx-tw-date-picker.mjs.map +1 -1
  38. package/fesm2022/cdevhub-ngx-tw-date-range-picker.mjs +305 -150
  39. package/fesm2022/cdevhub-ngx-tw-date-range-picker.mjs.map +1 -1
  40. package/fesm2022/cdevhub-ngx-tw-dialog.mjs +56 -43
  41. package/fesm2022/cdevhub-ngx-tw-dialog.mjs.map +1 -1
  42. package/fesm2022/cdevhub-ngx-tw-empty-state.mjs +51 -33
  43. package/fesm2022/cdevhub-ngx-tw-empty-state.mjs.map +1 -1
  44. package/fesm2022/cdevhub-ngx-tw-file-upload.mjs +905 -0
  45. package/fesm2022/cdevhub-ngx-tw-file-upload.mjs.map +1 -0
  46. package/fesm2022/cdevhub-ngx-tw-flip-card.mjs +49 -26
  47. package/fesm2022/cdevhub-ngx-tw-flip-card.mjs.map +1 -1
  48. package/fesm2022/cdevhub-ngx-tw-form-field.mjs +133 -74
  49. package/fesm2022/cdevhub-ngx-tw-form-field.mjs.map +1 -1
  50. package/fesm2022/cdevhub-ngx-tw-icon-lucide.mjs +2 -2
  51. package/fesm2022/cdevhub-ngx-tw-icon-lucide.mjs.map +1 -1
  52. package/fesm2022/cdevhub-ngx-tw-icon.mjs +28 -17
  53. package/fesm2022/cdevhub-ngx-tw-icon.mjs.map +1 -1
  54. package/fesm2022/cdevhub-ngx-tw-input.mjs +37 -21
  55. package/fesm2022/cdevhub-ngx-tw-input.mjs.map +1 -1
  56. package/fesm2022/cdevhub-ngx-tw-item.mjs +33 -24
  57. package/fesm2022/cdevhub-ngx-tw-item.mjs.map +1 -1
  58. package/fesm2022/cdevhub-ngx-tw-menu.mjs +63 -48
  59. package/fesm2022/cdevhub-ngx-tw-menu.mjs.map +1 -1
  60. package/fesm2022/cdevhub-ngx-tw-number-input.mjs +622 -0
  61. package/fesm2022/cdevhub-ngx-tw-number-input.mjs.map +1 -0
  62. package/fesm2022/cdevhub-ngx-tw-paginator.mjs +137 -71
  63. package/fesm2022/cdevhub-ngx-tw-paginator.mjs.map +1 -1
  64. package/fesm2022/cdevhub-ngx-tw-popover.mjs +101 -46
  65. package/fesm2022/cdevhub-ngx-tw-popover.mjs.map +1 -1
  66. package/fesm2022/cdevhub-ngx-tw-progress-bar.mjs +57 -30
  67. package/fesm2022/cdevhub-ngx-tw-progress-bar.mjs.map +1 -1
  68. package/fesm2022/cdevhub-ngx-tw-radio.mjs +108 -57
  69. package/fesm2022/cdevhub-ngx-tw-radio.mjs.map +1 -1
  70. package/fesm2022/cdevhub-ngx-tw-segmented-control.mjs +46 -26
  71. package/fesm2022/cdevhub-ngx-tw-segmented-control.mjs.map +1 -1
  72. package/fesm2022/cdevhub-ngx-tw-select.mjs +217 -122
  73. package/fesm2022/cdevhub-ngx-tw-select.mjs.map +1 -1
  74. package/fesm2022/cdevhub-ngx-tw-separator.mjs +21 -12
  75. package/fesm2022/cdevhub-ngx-tw-separator.mjs.map +1 -1
  76. package/fesm2022/cdevhub-ngx-tw-sheet.mjs +58 -44
  77. package/fesm2022/cdevhub-ngx-tw-sheet.mjs.map +1 -1
  78. package/fesm2022/cdevhub-ngx-tw-skeleton.mjs +25 -14
  79. package/fesm2022/cdevhub-ngx-tw-skeleton.mjs.map +1 -1
  80. package/fesm2022/cdevhub-ngx-tw-slider.mjs +155 -79
  81. package/fesm2022/cdevhub-ngx-tw-slider.mjs.map +1 -1
  82. package/fesm2022/cdevhub-ngx-tw-sort.mjs +44 -25
  83. package/fesm2022/cdevhub-ngx-tw-sort.mjs.map +1 -1
  84. package/fesm2022/cdevhub-ngx-tw-spinner.mjs +29 -16
  85. package/fesm2022/cdevhub-ngx-tw-spinner.mjs.map +1 -1
  86. package/fesm2022/cdevhub-ngx-tw-split.mjs +72 -42
  87. package/fesm2022/cdevhub-ngx-tw-split.mjs.map +1 -1
  88. package/fesm2022/cdevhub-ngx-tw-stat.mjs +107 -64
  89. package/fesm2022/cdevhub-ngx-tw-stat.mjs.map +1 -1
  90. package/fesm2022/cdevhub-ngx-tw-stepper.mjs +113 -47
  91. package/fesm2022/cdevhub-ngx-tw-stepper.mjs.map +1 -1
  92. package/fesm2022/cdevhub-ngx-tw-switch.mjs +61 -32
  93. package/fesm2022/cdevhub-ngx-tw-switch.mjs.map +1 -1
  94. package/fesm2022/cdevhub-ngx-tw-tab-nav.mjs +88 -42
  95. package/fesm2022/cdevhub-ngx-tw-tab-nav.mjs.map +1 -1
  96. package/fesm2022/cdevhub-ngx-tw-table.mjs +266 -118
  97. package/fesm2022/cdevhub-ngx-tw-table.mjs.map +1 -1
  98. package/fesm2022/cdevhub-ngx-tw-tabs.mjs +101 -51
  99. package/fesm2022/cdevhub-ngx-tw-tabs.mjs.map +1 -1
  100. package/fesm2022/cdevhub-ngx-tw-tags-input.mjs +798 -0
  101. package/fesm2022/cdevhub-ngx-tw-tags-input.mjs.map +1 -0
  102. package/fesm2022/cdevhub-ngx-tw-textarea.mjs +11 -7
  103. package/fesm2022/cdevhub-ngx-tw-textarea.mjs.map +1 -1
  104. package/fesm2022/cdevhub-ngx-tw-theme.mjs +22 -14
  105. package/fesm2022/cdevhub-ngx-tw-theme.mjs.map +1 -1
  106. package/fesm2022/cdevhub-ngx-tw-time-picker.mjs +243 -95
  107. package/fesm2022/cdevhub-ngx-tw-time-picker.mjs.map +1 -1
  108. package/fesm2022/cdevhub-ngx-tw-timeline.mjs +149 -82
  109. package/fesm2022/cdevhub-ngx-tw-timeline.mjs.map +1 -1
  110. package/fesm2022/cdevhub-ngx-tw-toast.mjs +89 -55
  111. package/fesm2022/cdevhub-ngx-tw-toast.mjs.map +1 -1
  112. package/fesm2022/cdevhub-ngx-tw-tooltip.mjs +50 -28
  113. package/fesm2022/cdevhub-ngx-tw-tooltip.mjs.map +1 -1
  114. package/fesm2022/cdevhub-ngx-tw-transfer.mjs +1129 -0
  115. package/fesm2022/cdevhub-ngx-tw-transfer.mjs.map +1 -0
  116. package/fesm2022/cdevhub-ngx-tw-tree.mjs +554 -0
  117. package/fesm2022/cdevhub-ngx-tw-tree.mjs.map +1 -0
  118. package/fesm2022/cdevhub-ngx-tw.mjs +7 -0
  119. package/fesm2022/cdevhub-ngx-tw.mjs.map +1 -1
  120. package/package.json +45 -20
  121. package/theme/index.css +10 -2
  122. package/types/cdevhub-ngx-tw-aspect-ratio.d.ts +40 -0
  123. package/types/cdevhub-ngx-tw-calendar.d.ts +39 -8
  124. package/types/cdevhub-ngx-tw-command-palette.d.ts +7 -0
  125. package/types/cdevhub-ngx-tw-date-picker.d.ts +36 -10
  126. package/types/cdevhub-ngx-tw-file-upload.d.ts +250 -0
  127. package/types/cdevhub-ngx-tw-form-field.d.ts +22 -3
  128. package/types/cdevhub-ngx-tw-icon-lucide.d.ts +21 -3
  129. package/types/cdevhub-ngx-tw-number-input.d.ts +130 -0
  130. package/types/cdevhub-ngx-tw-popover.d.ts +8 -0
  131. package/types/cdevhub-ngx-tw-stepper.d.ts +30 -2
  132. package/types/cdevhub-ngx-tw-tab-nav.d.ts +8 -0
  133. package/types/cdevhub-ngx-tw-table.d.ts +30 -1
  134. package/types/cdevhub-ngx-tw-tabs.d.ts +8 -0
  135. package/types/cdevhub-ngx-tw-tags-input.d.ts +217 -0
  136. package/types/cdevhub-ngx-tw-time-picker.d.ts +31 -6
  137. package/types/cdevhub-ngx-tw-transfer.d.ts +330 -0
  138. package/types/cdevhub-ngx-tw-tree.d.ts +189 -0
  139. package/types/cdevhub-ngx-tw.d.ts +7 -0
@@ -139,23 +139,32 @@ let nextRadioId = 0;
139
139
  // ── RadioComponent ───────────────────────────────────────────────
140
140
  class RadioComponent {
141
141
  /** The value this radio contributes when selected inside a `tw-radio-group`. Required when nested in a group; ignored when used standalone. */
142
- value = input(undefined, ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
142
+ value = input(undefined, /* @ts-ignore */
143
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
143
144
  /** Overrides the parent group's color for this radio. When undefined, inherits from the group (or defaults to `'primary'` standalone). */
144
- color = input(undefined, ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
145
+ color = input(undefined, /* @ts-ignore */
146
+ ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
145
147
  /** Overrides the parent group's size for this radio. When undefined, inherits from the group (or defaults to `'md'` standalone). */
146
- size = input(undefined, ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
148
+ size = input(undefined, /* @ts-ignore */
149
+ ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
147
150
  /** Overrides the parent group's variant for this radio. When undefined, inherits from the group (or defaults to `'solid'` standalone). */
148
- variant = input(undefined, ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
151
+ variant = input(undefined, /* @ts-ignore */
152
+ ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
149
153
  /** When true, disables this radio regardless of the group's state. Group-disabled always wins as an OR. Defaults to `false`. */
150
- disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
154
+ disabled = input(false, /* @ts-ignore */
155
+ ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
151
156
  /** Optional inline label rendered next to the radio. Use default content projection for rich label content instead. */
152
- label = input(undefined, ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
157
+ label = input(undefined, /* @ts-ignore */
158
+ ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
153
159
  /** Optional secondary description rendered under the label. Use `[slot="description"]` content projection for rich content instead. */
154
- description = input(undefined, ...(ngDevMode ? [{ debugName: "description" }] : /* istanbul ignore next */ []));
160
+ description = input(undefined, /* @ts-ignore */
161
+ ...(ngDevMode ? [{ debugName: "description" }] : /* istanbul ignore next */ []));
155
162
  /** Position of the label/description relative to the radio. Defaults to `'after'`. */
156
- labelPosition = input('after', ...(ngDevMode ? [{ debugName: "labelPosition" }] : /* istanbul ignore next */ []));
163
+ labelPosition = input('after', /* @ts-ignore */
164
+ ...(ngDevMode ? [{ debugName: "labelPosition" }] : /* istanbul ignore next */ []));
157
165
  /** Optional name attribute for standalone use. Ignored when the parent group provides a name. */
158
- name = input(undefined, ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
166
+ name = input(undefined, /* @ts-ignore */
167
+ ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
159
168
  /** Accessible name when no visible label is provided. Mirrored to `aria-label`. */
160
169
  ariaLabel = input(undefined, { ...(ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {}), alias: 'aria-label' });
161
170
  /** ID of an external element that labels the radio. Mirrored to `aria-labelledby`. */
@@ -163,9 +172,11 @@ class RadioComponent {
163
172
  /** ID of an external element that describes the radio. Mirrored to `aria-describedby`. */
164
173
  ariaDescribedby = input(undefined, { ...(ngDevMode ? { debugName: "ariaDescribedby" } : /* istanbul ignore next */ {}), alias: 'aria-describedby' });
165
174
  /** Two-way bound checked state. Authoritative only in standalone mode; when inside a `tw-radio-group`, this model reflects group selection but does NOT drive it. */
166
- checked = model(false, ...(ngDevMode ? [{ debugName: "checked" }] : /* istanbul ignore next */ []));
175
+ checked = model(false, /* @ts-ignore */
176
+ ...(ngDevMode ? [{ debugName: "checked" }] : /* istanbul ignore next */ []));
167
177
  /** Per-instance override of the {@link ErrorStateMatcher}. When omitted, the radio uses the `TW_ERROR_STATE_MATCHER` token's value. */
168
- errorStateMatcher = input(undefined, ...(ngDevMode ? [{ debugName: "errorStateMatcher" }] : /* istanbul ignore next */ []));
178
+ errorStateMatcher = input(undefined, /* @ts-ignore */
179
+ ...(ngDevMode ? [{ debugName: "errorStateMatcher" }] : /* istanbul ignore next */ []));
169
180
  /** Fires after the checked state changes from a user interaction on this radio. In grouped mode only fires when this radio becomes the selected one. Does not fire when selection is updated programmatically. */
170
181
  change = output();
171
182
  focusMonitor = inject(FocusMonitor);
@@ -178,30 +189,40 @@ class RadioComponent {
178
189
  defaultMatcher = inject(TW_ERROR_STATE_MATCHER);
179
190
  onChange = () => { };
180
191
  onTouched = () => { };
181
- cvaDisabled = signal(false, ...(ngDevMode ? [{ debugName: "cvaDisabled" }] : /* istanbul ignore next */ []));
182
- _ngControlRev = signal(0, ...(ngDevMode ? [{ debugName: "_ngControlRev" }] : /* istanbul ignore next */ []));
183
- _formSubmitRev = signal(0, ...(ngDevMode ? [{ debugName: "_formSubmitRev" }] : /* istanbul ignore next */ []));
192
+ cvaDisabled = signal(false, /* @ts-ignore */
193
+ ...(ngDevMode ? [{ debugName: "cvaDisabled" }] : /* istanbul ignore next */ []));
194
+ _ngControlRev = signal(0, /* @ts-ignore */
195
+ ...(ngDevMode ? [{ debugName: "_ngControlRev" }] : /* istanbul ignore next */ []));
196
+ _formSubmitRev = signal(0, /* @ts-ignore */
197
+ ...(ngDevMode ? [{ debugName: "_formSubmitRev" }] : /* istanbul ignore next */ []));
184
198
  uid = nextRadioId++;
185
199
  hostId = `tw-radio-${this.uid}`;
186
200
  labelId = `${this.hostId}-label`;
187
201
  descriptionId = `${this.hostId}-description`;
188
- internalChecked = linkedSignal(() => this.checked(), ...(ngDevMode ? [{ debugName: "internalChecked" }] : /* istanbul ignore next */ []));
202
+ internalChecked = linkedSignal(() => this.checked(), /* @ts-ignore */
203
+ ...(ngDevMode ? [{ debugName: "internalChecked" }] : /* istanbul ignore next */ []));
189
204
  /** Resolved color — radio's own color wins, then group's, then `'primary'`. */
190
- effectiveColor = computed(() => this.color() ?? this.parent?.color() ?? 'primary', ...(ngDevMode ? [{ debugName: "effectiveColor" }] : /* istanbul ignore next */ []));
205
+ effectiveColor = computed(() => this.color() ?? this.parent?.color() ?? 'primary', /* @ts-ignore */
206
+ ...(ngDevMode ? [{ debugName: "effectiveColor" }] : /* istanbul ignore next */ []));
191
207
  /** Resolved size — radio's own size wins, then group's, then `'md'`. */
192
- effectiveSize = computed(() => this.size() ?? this.parent?.size() ?? 'md', ...(ngDevMode ? [{ debugName: "effectiveSize" }] : /* istanbul ignore next */ []));
208
+ effectiveSize = computed(() => this.size() ?? this.parent?.size() ?? 'md', /* @ts-ignore */
209
+ ...(ngDevMode ? [{ debugName: "effectiveSize" }] : /* istanbul ignore next */ []));
193
210
  /** Resolved variant — radio's own variant wins, then group's, then `'solid'`. */
194
- effectiveVariant = computed(() => this.variant() ?? this.parent?.variant() ?? 'solid', ...(ngDevMode ? [{ debugName: "effectiveVariant" }] : /* istanbul ignore next */ []));
211
+ effectiveVariant = computed(() => this.variant() ?? this.parent?.variant() ?? 'solid', /* @ts-ignore */
212
+ ...(ngDevMode ? [{ debugName: "effectiveVariant" }] : /* istanbul ignore next */ []));
195
213
  /** Resolved name attribute — parent group's name wins for HTML form semantics. */
196
- effectiveName = computed(() => this.parent?.name() ?? this.name(), ...(ngDevMode ? [{ debugName: "effectiveName" }] : /* istanbul ignore next */ []));
214
+ effectiveName = computed(() => this.parent?.name() ?? this.name(), /* @ts-ignore */
215
+ ...(ngDevMode ? [{ debugName: "effectiveName" }] : /* istanbul ignore next */ []));
197
216
  /** Whether this radio is currently selected (grouped: parent.value === this.value; standalone: internal checked). */
198
217
  isSelected = computed(() => {
199
218
  if (this.parent)
200
219
  return this.parent.value() === this.value();
201
220
  return this.internalChecked();
202
- }, ...(ngDevMode ? [{ debugName: "isSelected" }] : /* istanbul ignore next */ []));
221
+ }, /* @ts-ignore */
222
+ ...(ngDevMode ? [{ debugName: "isSelected" }] : /* istanbul ignore next */ []));
203
223
  /** Whether this radio is disabled (own disabled OR parent's disabled OR CVA-disabled). */
204
- isDisabled = computed(() => this.disabled() || this.cvaDisabled() || (this.parent?.isDisabled() ?? false), ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
224
+ isDisabled = computed(() => this.disabled() || this.cvaDisabled() || (this.parent?.isDisabled() ?? false), /* @ts-ignore */
225
+ ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
205
226
  /** Whether the radio is in an error state per the configured `ErrorStateMatcher`. Inherits from the parent group when wrapped; falls back to its own NgControl when standalone. */
206
227
  errorState = computed(() => {
207
228
  this._ngControlRev();
@@ -212,7 +233,8 @@ class RadioComponent {
212
233
  const form = this.parentFormGroup ??
213
234
  this.parentForm;
214
235
  return matcher.isErrorState(this.ngControl?.control ?? null, form);
215
- }, ...(ngDevMode ? [{ debugName: "errorState" }] : /* istanbul ignore next */ []));
236
+ }, /* @ts-ignore */
237
+ ...(ngDevMode ? [{ debugName: "errorState" }] : /* istanbul ignore next */ []));
216
238
  /** Roving tabindex: in a group, only the selected (or first enabled if none selected) radio is focusable. Standalone radios are always focusable unless disabled. */
217
239
  isFocusable = computed(() => {
218
240
  if (this.isDisabled())
@@ -229,7 +251,8 @@ class RadioComponent {
229
251
  return firstEnabled === this;
230
252
  }
231
253
  return false;
232
- }, ...(ngDevMode ? [{ debugName: "isFocusable" }] : /* istanbul ignore next */ []));
254
+ }, /* @ts-ignore */
255
+ ...(ngDevMode ? [{ debugName: "isFocusable" }] : /* istanbul ignore next */ []));
233
256
  effectiveAriaLabelledby = computed(() => {
234
257
  const external = this.ariaLabelledby();
235
258
  if (external)
@@ -237,38 +260,49 @@ class RadioComponent {
237
260
  if (this.ariaLabel())
238
261
  return undefined;
239
262
  return this.labelId;
240
- }, ...(ngDevMode ? [{ debugName: "effectiveAriaLabelledby" }] : /* istanbul ignore next */ []));
263
+ }, /* @ts-ignore */
264
+ ...(ngDevMode ? [{ debugName: "effectiveAriaLabelledby" }] : /* istanbul ignore next */ []));
241
265
  effectiveAriaDescribedby = computed(() => {
242
266
  const external = this.ariaDescribedby();
243
267
  if (external)
244
268
  return external;
245
269
  return this.descriptionId;
246
- }, ...(ngDevMode ? [{ debugName: "effectiveAriaDescribedby" }] : /* istanbul ignore next */ []));
270
+ }, /* @ts-ignore */
271
+ ...(ngDevMode ? [{ debugName: "effectiveAriaDescribedby" }] : /* istanbul ignore next */ []));
247
272
  variantResult = computed(() => radioVariants({
248
273
  size: this.effectiveSize(),
249
274
  labelPosition: this.labelPosition(),
250
275
  checked: this.isSelected(),
251
276
  disabled: this.isDisabled(),
252
277
  errorState: this.errorState(),
253
- }), ...(ngDevMode ? [{ debugName: "variantResult" }] : /* istanbul ignore next */ []));
254
- rootClasses = computed(() => this.variantResult().root(), ...(ngDevMode ? [{ debugName: "rootClasses" }] : /* istanbul ignore next */ []));
255
- circleWrapClasses = computed(() => this.variantResult().circleWrap(), ...(ngDevMode ? [{ debugName: "circleWrapClasses" }] : /* istanbul ignore next */ []));
256
- labelWrapClasses = computed(() => this.variantResult().labelWrap(), ...(ngDevMode ? [{ debugName: "labelWrapClasses" }] : /* istanbul ignore next */ []));
257
- labelClasses = computed(() => this.variantResult().label(), ...(ngDevMode ? [{ debugName: "labelClasses" }] : /* istanbul ignore next */ []));
258
- descriptionClasses = computed(() => this.variantResult().description(), ...(ngDevMode ? [{ debugName: "descriptionClasses" }] : /* istanbul ignore next */ []));
259
- dotWrapClasses = computed(() => this.variantResult().dotWrap(), ...(ngDevMode ? [{ debugName: "dotWrapClasses" }] : /* istanbul ignore next */ []));
278
+ }), /* @ts-ignore */
279
+ ...(ngDevMode ? [{ debugName: "variantResult" }] : /* istanbul ignore next */ []));
280
+ rootClasses = computed(() => this.variantResult().root(), /* @ts-ignore */
281
+ ...(ngDevMode ? [{ debugName: "rootClasses" }] : /* istanbul ignore next */ []));
282
+ circleWrapClasses = computed(() => this.variantResult().circleWrap(), /* @ts-ignore */
283
+ ...(ngDevMode ? [{ debugName: "circleWrapClasses" }] : /* istanbul ignore next */ []));
284
+ labelWrapClasses = computed(() => this.variantResult().labelWrap(), /* @ts-ignore */
285
+ ...(ngDevMode ? [{ debugName: "labelWrapClasses" }] : /* istanbul ignore next */ []));
286
+ labelClasses = computed(() => this.variantResult().label(), /* @ts-ignore */
287
+ ...(ngDevMode ? [{ debugName: "labelClasses" }] : /* istanbul ignore next */ []));
288
+ descriptionClasses = computed(() => this.variantResult().description(), /* @ts-ignore */
289
+ ...(ngDevMode ? [{ debugName: "descriptionClasses" }] : /* istanbul ignore next */ []));
290
+ dotWrapClasses = computed(() => this.variantResult().dotWrap(), /* @ts-ignore */
291
+ ...(ngDevMode ? [{ debugName: "dotWrapClasses" }] : /* istanbul ignore next */ []));
260
292
  circleClasses = computed(() => {
261
293
  const base = this.variantResult().circle();
262
294
  if (!this.isSelected())
263
295
  return base;
264
296
  const ringLookup = this.effectiveVariant() === 'solid' ? SOLID_RING : OUTLINE_RING;
265
297
  return `${base} ${ringLookup[this.effectiveColor()]}`;
266
- }, ...(ngDevMode ? [{ debugName: "circleClasses" }] : /* istanbul ignore next */ []));
298
+ }, /* @ts-ignore */
299
+ ...(ngDevMode ? [{ debugName: "circleClasses" }] : /* istanbul ignore next */ []));
267
300
  dotClasses = computed(() => {
268
301
  const base = this.variantResult().dot();
269
302
  const dotLookup = this.effectiveVariant() === 'solid' ? SOLID_DOT : OUTLINE_DOT;
270
303
  return `${base} ${dotLookup[this.effectiveColor()]}`;
271
- }, ...(ngDevMode ? [{ debugName: "dotClasses" }] : /* istanbul ignore next */ []));
304
+ }, /* @ts-ignore */
305
+ ...(ngDevMode ? [{ debugName: "dotClasses" }] : /* istanbul ignore next */ []));
272
306
  constructor() {
273
307
  // Material-style CVA wiring for standalone `<tw-radio>` use. Mirrors
274
308
  // `checkbox.ts` / `slider.ts` — avoids the circular-DI a static
@@ -374,8 +408,8 @@ class RadioComponent {
374
408
  const host = this.elementRef.nativeElement;
375
409
  return host.textContent !== null && host.textContent.trim().length > 0;
376
410
  }
377
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: RadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
378
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: RadioComponent, isStandalone: true, selector: "tw-radio", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, labelPosition: { classPropertyName: "labelPosition", publicName: "labelPosition", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, ariaDescribedby: { classPropertyName: "ariaDescribedby", publicName: "aria-describedby", isSignal: true, isRequired: false, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, errorStateMatcher: { classPropertyName: "errorStateMatcher", publicName: "errorStateMatcher", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange", change: "change" }, host: { attributes: { "role": "radio" }, listeners: { "click": "onActivate()", "keydown": "onKeydown($event)", "blur": "onBlur()" }, properties: { "id": "hostId", "class": "rootClasses()", "attr.data-checked": "isSelected()", "attr.aria-checked": "isSelected() ? \"true\" : \"false\"", "attr.aria-disabled": "isDisabled() || null", "attr.aria-invalid": "errorState() || null", "attr.aria-label": "ariaLabel() || null", "attr.aria-labelledby": "effectiveAriaLabelledby() || null", "attr.aria-describedby": "effectiveAriaDescribedby() || null", "attr.tabindex": "isFocusable() ? 0 : -1", "attr.name": "effectiveName() || null" } }, ngImport: i0, template: `
411
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: RadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
412
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: RadioComponent, isStandalone: true, selector: "tw-radio", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, labelPosition: { classPropertyName: "labelPosition", publicName: "labelPosition", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, ariaDescribedby: { classPropertyName: "ariaDescribedby", publicName: "aria-describedby", isSignal: true, isRequired: false, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, errorStateMatcher: { classPropertyName: "errorStateMatcher", publicName: "errorStateMatcher", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange", change: "change" }, host: { attributes: { "role": "radio" }, listeners: { "click": "onActivate()", "keydown": "onKeydown($event)", "blur": "onBlur()" }, properties: { "id": "hostId", "class": "rootClasses()", "attr.data-checked": "isSelected()", "attr.aria-checked": "isSelected() ? \"true\" : \"false\"", "attr.aria-disabled": "isDisabled() || null", "attr.aria-invalid": "errorState() || null", "attr.aria-label": "ariaLabel() || null", "attr.aria-labelledby": "effectiveAriaLabelledby() || null", "attr.aria-describedby": "effectiveAriaDescribedby() || null", "attr.tabindex": "isFocusable() ? 0 : -1", "attr.name": "effectiveName() || null" } }, ngImport: i0, template: `
379
413
  <span [class]="circleWrapClasses()">
380
414
  <span [class]="circleClasses()">
381
415
  @if (isSelected()) {
@@ -404,7 +438,7 @@ class RadioComponent {
404
438
  </span>
405
439
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
406
440
  }
407
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: RadioComponent, decorators: [{
441
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: RadioComponent, decorators: [{
408
442
  type: Component,
409
443
  args: [{
410
444
  selector: 'tw-radio',
@@ -485,19 +519,26 @@ let nextGroupId = 0;
485
519
  */
486
520
  class RadioGroupComponent {
487
521
  /** Sets the semantic color applied to the selected radio's dot/ring. Propagated to children unless a child overrides it. Defaults to `'primary'`. */
488
- color = input('primary', ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
522
+ color = input('primary', /* @ts-ignore */
523
+ ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
489
524
  /** Controls the overall scale of radios inside the group. Propagated to children unless a child overrides it. Defaults to `'md'`. */
490
- size = input('md', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
525
+ size = input('md', /* @ts-ignore */
526
+ ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
491
527
  /** Visual style of the selected indicator. `'solid'` fills the dot with the color against a colored ring; `'outline'` keeps a transparent fill with a colored ring and colored dot. Propagated to children unless a child overrides it. Defaults to `'solid'`. */
492
- variant = input('solid', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
528
+ variant = input('solid', /* @ts-ignore */
529
+ ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
493
530
  /** Layout direction of the group. Drives `aria-orientation` and the arrow-key model. Defaults to `'vertical'`. */
494
- orientation = input('vertical', ...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
531
+ orientation = input('vertical', /* @ts-ignore */
532
+ ...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
495
533
  /** When true, disables every radio in the group and blocks keyboard interaction. Defaults to `false`. */
496
- disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
534
+ disabled = input(false, /* @ts-ignore */
535
+ ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
497
536
  /** When true, sets `aria-required="true"` on the group for assistive tech. Defaults to `false`. */
498
- required = input(false, ...(ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []));
537
+ required = input(false, /* @ts-ignore */
538
+ ...(ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []));
499
539
  /** Optional form-association name. Propagated to each child radio's host `name` attribute so standard HTML form semantics still apply. */
500
- name = input(undefined, ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
540
+ name = input(undefined, /* @ts-ignore */
541
+ ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
501
542
  /** Accessible name for the group when no visible label is provided. Mirrored to `aria-label`. */
502
543
  ariaLabel = input(undefined, { ...(ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {}), alias: 'aria-label' });
503
544
  /** ID of an external element that labels the group. Mirrored to `aria-labelledby`. */
@@ -505,9 +546,11 @@ class RadioGroupComponent {
505
546
  /** ID of an external element that describes the group. Mirrored to `aria-describedby`. */
506
547
  ariaDescribedby = input(undefined, { ...(ngDevMode ? { debugName: "ariaDescribedby" } : /* istanbul ignore next */ {}), alias: 'aria-describedby' });
507
548
  /** Two-way bound selected value. Updates when the user picks a radio; fires `valueChange`. `null` means no selection. */
508
- value = model(null, ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
549
+ value = model(null, /* @ts-ignore */
550
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
509
551
  /** Per-instance override of the {@link ErrorStateMatcher}. When omitted, the group uses the `TW_ERROR_STATE_MATCHER` token's value. */
510
- errorStateMatcher = input(undefined, ...(ngDevMode ? [{ debugName: "errorStateMatcher" }] : /* istanbul ignore next */ []));
552
+ errorStateMatcher = input(undefined, /* @ts-ignore */
553
+ ...(ngDevMode ? [{ debugName: "errorStateMatcher" }] : /* istanbul ignore next */ []));
511
554
  /** Fires after the selected value changes from a user interaction. Does not fire when the value is updated programmatically via `writeValue`. */
512
555
  change = output();
513
556
  /** @internal Child radios discovered via content projection. */
@@ -522,11 +565,15 @@ class RadioGroupComponent {
522
565
  hostId = `tw-radio-group-${nextGroupId++}`;
523
566
  onChange = () => { };
524
567
  onTouched = () => { };
525
- cvaDisabled = signal(false, ...(ngDevMode ? [{ debugName: "cvaDisabled" }] : /* istanbul ignore next */ []));
526
- _ngControlRev = signal(0, ...(ngDevMode ? [{ debugName: "_ngControlRev" }] : /* istanbul ignore next */ []));
527
- _formSubmitRev = signal(0, ...(ngDevMode ? [{ debugName: "_formSubmitRev" }] : /* istanbul ignore next */ []));
568
+ cvaDisabled = signal(false, /* @ts-ignore */
569
+ ...(ngDevMode ? [{ debugName: "cvaDisabled" }] : /* istanbul ignore next */ []));
570
+ _ngControlRev = signal(0, /* @ts-ignore */
571
+ ...(ngDevMode ? [{ debugName: "_ngControlRev" }] : /* istanbul ignore next */ []));
572
+ _formSubmitRev = signal(0, /* @ts-ignore */
573
+ ...(ngDevMode ? [{ debugName: "_formSubmitRev" }] : /* istanbul ignore next */ []));
528
574
  /** Effective disabled state — input OR CVA disabled. */
529
- isDisabled = computed(() => this.disabled() || this.cvaDisabled(), ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
575
+ isDisabled = computed(() => this.disabled() || this.cvaDisabled(), /* @ts-ignore */
576
+ ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
530
577
  /** Group-level error state per the configured `ErrorStateMatcher`. Reads the bound `NgControl.invalid` through the matcher; child radios inherit from this when wrapped in the group. */
531
578
  errorState = computed(() => {
532
579
  this._ngControlRev();
@@ -535,13 +582,17 @@ class RadioGroupComponent {
535
582
  const form = this.parentFormGroup ??
536
583
  this.parentForm;
537
584
  return matcher.isErrorState(this.ngControl?.control ?? null, form);
538
- }, ...(ngDevMode ? [{ debugName: "errorState" }] : /* istanbul ignore next */ []));
539
- activeValue = linkedSignal(() => this.value(), ...(ngDevMode ? [{ debugName: "activeValue" }] : /* istanbul ignore next */ []));
585
+ }, /* @ts-ignore */
586
+ ...(ngDevMode ? [{ debugName: "errorState" }] : /* istanbul ignore next */ []));
587
+ activeValue = linkedSignal(() => this.value(), /* @ts-ignore */
588
+ ...(ngDevMode ? [{ debugName: "activeValue" }] : /* istanbul ignore next */ []));
540
589
  variantResult = computed(() => radioGroupVariants({
541
590
  orientation: this.orientation(),
542
591
  disabled: this.isDisabled(),
543
- }), ...(ngDevMode ? [{ debugName: "variantResult" }] : /* istanbul ignore next */ []));
544
- rootClasses = computed(() => this.variantResult(), ...(ngDevMode ? [{ debugName: "rootClasses" }] : /* istanbul ignore next */ []));
592
+ }), /* @ts-ignore */
593
+ ...(ngDevMode ? [{ debugName: "variantResult" }] : /* istanbul ignore next */ []));
594
+ rootClasses = computed(() => this.variantResult(), /* @ts-ignore */
595
+ ...(ngDevMode ? [{ debugName: "rootClasses" }] : /* istanbul ignore next */ []));
545
596
  constructor() {
546
597
  // Material-style CVA wiring: declare ourselves as the value accessor on any
547
598
  // host-level `NgControl` (FormControlDirective, NgModel, etc.). This avoids
@@ -675,10 +726,10 @@ class RadioGroupComponent {
675
726
  .subscribe(() => this._formSubmitRev.update((n) => n + 1));
676
727
  }
677
728
  }
678
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: RadioGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
679
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.14", type: RadioGroupComponent, isStandalone: true, selector: "tw-radio-group", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, ariaDescribedby: { classPropertyName: "ariaDescribedby", publicName: "aria-describedby", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, errorStateMatcher: { classPropertyName: "errorStateMatcher", publicName: "errorStateMatcher", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", change: "change" }, host: { attributes: { "role": "radiogroup" }, listeners: { "keydown": "onKeydown($event)" }, properties: { "id": "hostId", "class": "rootClasses()", "attr.aria-orientation": "orientation()", "attr.aria-disabled": "isDisabled() || null", "attr.aria-required": "required() || null", "attr.aria-invalid": "errorState() || null", "attr.aria-label": "ariaLabel() || null", "attr.aria-labelledby": "ariaLabelledby() || null", "attr.aria-describedby": "ariaDescribedby() || null" } }, queries: [{ propertyName: "radios", predicate: RadioComponent, descendants: true, isSignal: true }], ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
729
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: RadioGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
730
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.7", type: RadioGroupComponent, isStandalone: true, selector: "tw-radio-group", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, ariaDescribedby: { classPropertyName: "ariaDescribedby", publicName: "aria-describedby", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, errorStateMatcher: { classPropertyName: "errorStateMatcher", publicName: "errorStateMatcher", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", change: "change" }, host: { attributes: { "role": "radiogroup" }, listeners: { "keydown": "onKeydown($event)" }, properties: { "id": "hostId", "class": "rootClasses()", "attr.aria-orientation": "orientation()", "attr.aria-disabled": "isDisabled() || null", "attr.aria-required": "required() || null", "attr.aria-invalid": "errorState() || null", "attr.aria-label": "ariaLabel() || null", "attr.aria-labelledby": "ariaLabelledby() || null", "attr.aria-describedby": "ariaDescribedby() || null" } }, queries: [{ propertyName: "radios", predicate: RadioComponent, descendants: true, isSignal: true }], ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
680
731
  }
681
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: RadioGroupComponent, decorators: [{
732
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: RadioGroupComponent, decorators: [{
682
733
  type: Component,
683
734
  args: [{
684
735
  selector: 'tw-radio-group',