@ng-forge/dynamic-forms-bootstrap 0.9.0-next.1 → 0.9.0-next.10

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ng-forge/dynamic-forms-bootstrap",
3
- "version": "0.9.0-next.1",
3
+ "version": "0.9.0-next.10",
4
4
  "description": "Bootstrap 5 integration for @ng-forge/dynamic-forms. Pre-built Bootstrap form components.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -31,7 +31,7 @@
31
31
  "@angular/common": "~21.2.0",
32
32
  "@angular/core": "~21.2.0",
33
33
  "@angular/forms": "~21.2.0",
34
- "@ng-forge/dynamic-forms": "~0.9.0-next.1",
34
+ "@ng-forge/dynamic-forms": "~0.9.0-next.10",
35
35
  "rxjs": ">=7.0.0"
36
36
  },
37
37
  "module": "fesm2022/ng-forge-dynamic-forms-bootstrap.mjs",
@@ -1,9 +1,8 @@
1
- import { FormEvent, NextPageEvent, PreviousPageEvent, AppendArrayItemEvent, ArrayAllowedChildren, PrependArrayItemEvent, InsertArrayItemEvent, RemoveAtIndexEvent, PopArrayItemEvent, ShiftArrayItemEvent, FieldComponent, DynamicText, FormEventConstructor, ArrayItemContext, CheckedFieldComponent, ValidationMessages, FieldMeta, ValueFieldComponent, ValueType, FieldOption, FieldTypeDefinition, NarrowFields, RegisteredFieldTypes, InferFormValue, FormConfig } from '@ng-forge/dynamic-forms';
1
+ import { FormEvent, NextPageEvent, PreviousPageEvent, AppendArrayItemEvent, ArrayAllowedChildren, PrependArrayItemEvent, InsertArrayItemEvent, RemoveAtIndexEvent, PopArrayItemEvent, ShiftArrayItemEvent, DynamicText, CheckedFieldComponent, ValueFieldComponent, ValueType, FieldOption, FieldTypeDefinition, NarrowFields, RegisteredFieldTypes, InferFormValue, FormConfig } from '@ng-forge/dynamic-forms';
2
2
  import * as _ng_forge_dynamic_forms_integration from '@ng-forge/dynamic-forms/integration';
3
- import { ButtonField, EventArgs, CheckboxField, DatepickerField, DatepickerProps, InputMeta, InputField, InputProps, MultiCheckboxField, RadioField, SelectField, SelectProps, SliderField, TextareaField, TextareaProps, TextareaMeta, ToggleField } from '@ng-forge/dynamic-forms/integration';
3
+ import { ButtonField, CheckboxField, DatepickerField, DatepickerProps, InputField, InputProps, MultiCheckboxField, RadioField, SelectField, SelectProps, SliderField, TextareaField, TextareaProps, ToggleField } from '@ng-forge/dynamic-forms/integration';
4
4
  import * as _angular_core from '@angular/core';
5
- import { ElementRef, InjectionToken, Provider } from '@angular/core';
6
- import { FieldTree } from '@angular/forms/signals';
5
+ import { InjectionToken, Provider } from '@angular/core';
7
6
 
8
7
  interface BsButtonProps {
9
8
  variant?: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'light' | 'dark' | 'link';
@@ -14,7 +13,6 @@ interface BsButtonProps {
14
13
  type?: 'button' | 'submit' | 'reset';
15
14
  }
16
15
  type BsButtonField<TEvent extends FormEvent> = ButtonField<BsButtonProps, TEvent>;
17
- type BsButtonComponent<TEvent extends FormEvent> = FieldComponent<BsButtonField<TEvent>>;
18
16
  /**
19
17
  * Specific button field types with preconfigured events
20
18
  */
@@ -111,33 +109,17 @@ type ShiftArrayItemButtonField = Omit<BsButtonField<ShiftArrayItemEvent>, 'event
111
109
  arrayKey: string;
112
110
  };
113
111
 
114
- declare class BsButtonFieldComponent<TEvent extends FormEvent> implements BsButtonComponent<TEvent> {
115
- private readonly eventBus;
116
- private readonly arrayContext;
117
- readonly key: _angular_core.InputSignal<string>;
118
- readonly label: _angular_core.InputSignal<DynamicText>;
119
- readonly disabled: _angular_core.InputSignal<boolean>;
120
- readonly hidden: _angular_core.InputSignal<boolean>;
121
- readonly tabIndex: _angular_core.InputSignal<number | undefined>;
122
- readonly className: _angular_core.InputSignal<string>;
123
- /** Event to dispatch on click. Optional for submit buttons (native form submit handles it). */
124
- readonly event: _angular_core.InputSignal<FormEventConstructor<TEvent> | undefined>;
125
- readonly eventArgs: _angular_core.InputSignal<EventArgs | undefined>;
112
+ declare class BsButtonFieldComponent<TEvent extends FormEvent> {
113
+ protected readonly action: _ng_forge_dynamic_forms_integration.NgForgeAction<TEvent>;
126
114
  readonly props: _angular_core.InputSignal<BsButtonProps | undefined>;
127
- readonly eventContext: _angular_core.InputSignal<ArrayItemContext | undefined>;
128
- /** Resolved button type - defaults to 'button' if not specified in props */
115
+ /** Resolved button type — defaults to 'button' unless overridden via props. */
129
116
  readonly buttonType: _angular_core.Signal<"button" | "submit" | "reset">;
130
117
  readonly buttonTestId: _angular_core.Signal<string>;
131
118
  readonly buttonClasses: _angular_core.Signal<string>;
132
- /**
133
- * Handle button click.
134
- * - For submit buttons (type="submit"): do nothing, native form submit handles it
135
- * - For other buttons: dispatch the configured event via EventBus
136
- */
119
+ /** Submit buttons let the native form handle submission; other buttons dispatch via the directive. */
137
120
  onClick(): void;
138
- private dispatchEvent;
139
121
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BsButtonFieldComponent<any>, never>;
140
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsButtonFieldComponent<any>, "df-bs-button", never, { "key": { "alias": "key"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "hidden": { "alias": "hidden"; "required": false; "isSignal": true; }; "tabIndex": { "alias": "tabIndex"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "event": { "alias": "event"; "required": false; "isSignal": true; }; "eventArgs": { "alias": "eventArgs"; "required": false; "isSignal": true; }; "props": { "alias": "props"; "required": false; "isSignal": true; }; "eventContext": { "alias": "eventContext"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
122
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsButtonFieldComponent<any>, "df-bs-button", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof _ng_forge_dynamic_forms_integration.NgForgeActionHost; inputs: {}; outputs: {}; }]>;
141
123
  }
142
124
 
143
125
  interface BsCheckboxProps {
@@ -148,32 +130,14 @@ interface BsCheckboxProps {
148
130
  hint?: DynamicText;
149
131
  }
150
132
  type BsCheckboxField = CheckboxField<BsCheckboxProps>;
133
+ /** @deprecated Scheduled for removal in v1. Use `injectNgForgeField<T>()` for typed access to a field component's directive instance. */
151
134
  type BsCheckboxComponent = CheckedFieldComponent<BsCheckboxField>;
152
135
 
153
- declare class BsCheckboxFieldComponent implements BsCheckboxComponent {
154
- private readonly elementRef;
155
- readonly field: _angular_core.InputSignal<FieldTree<boolean>>;
156
- readonly key: _angular_core.InputSignal<string>;
157
- readonly label: _angular_core.InputSignal<DynamicText | undefined>;
158
- readonly placeholder: _angular_core.InputSignal<DynamicText | undefined>;
159
- readonly className: _angular_core.InputSignal<string>;
160
- readonly tabIndex: _angular_core.InputSignal<number | undefined>;
136
+ declare class BsCheckboxFieldComponent {
137
+ protected readonly ngf: _ng_forge_dynamic_forms_integration.TypedNgForgeField<boolean>;
161
138
  readonly props: _angular_core.InputSignal<BsCheckboxProps | undefined>;
162
- readonly validationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
163
- readonly defaultValidationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
164
- readonly meta: _angular_core.InputSignal<FieldMeta | undefined>;
165
- readonly resolvedErrors: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
166
- readonly showErrors: _angular_core.Signal<boolean>;
167
- readonly errorsToDisplay: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
168
- readonly checkboxInput: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
169
- constructor();
170
- protected readonly hintId: _angular_core.Signal<string>;
171
- protected readonly errorId: _angular_core.Signal<string>;
172
- protected readonly ariaInvalid: _angular_core.Signal<boolean>;
173
- protected readonly ariaRequired: _angular_core.Signal<true | null>;
174
- protected readonly ariaDescribedBy: _angular_core.Signal<string | null>;
175
139
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BsCheckboxFieldComponent, never>;
176
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsCheckboxFieldComponent, "df-bs-checkbox", never, { "field": { "alias": "field"; "required": true; "isSignal": true; }; "key": { "alias": "key"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "tabIndex": { "alias": "tabIndex"; "required": false; "isSignal": true; }; "props": { "alias": "props"; "required": false; "isSignal": true; }; "validationMessages": { "alias": "validationMessages"; "required": false; "isSignal": true; }; "defaultValidationMessages": { "alias": "defaultValidationMessages"; "required": false; "isSignal": true; }; "meta": { "alias": "meta"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
140
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsCheckboxFieldComponent, "df-bs-checkbox", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof _ng_forge_dynamic_forms_integration.NgForgeFieldHost; inputs: {}; outputs: {}; }]>;
177
141
  }
178
142
 
179
143
  interface BsDatepickerProps extends DatepickerProps {
@@ -189,36 +153,19 @@ interface BsDatepickerProps extends DatepickerProps {
189
153
  showWeekNumbers?: boolean;
190
154
  }
191
155
  type BsDatepickerField = DatepickerField<BsDatepickerProps>;
156
+ /** @deprecated Scheduled for removal in v1. Use `injectNgForgeField<T>()` for typed access to a field component's directive instance. */
192
157
  type BsDatepickerComponent = ValueFieldComponent<BsDatepickerField>;
193
158
 
194
- declare class BsDatepickerFieldComponent implements BsDatepickerComponent {
195
- private readonly elementRef;
196
- readonly field: _angular_core.InputSignal<FieldTree<string | Date>>;
197
- readonly key: _angular_core.InputSignal<string>;
198
- readonly label: _angular_core.InputSignal<DynamicText | undefined>;
199
- readonly placeholder: _angular_core.InputSignal<DynamicText | undefined>;
200
- readonly className: _angular_core.InputSignal<string>;
201
- readonly tabIndex: _angular_core.InputSignal<number | undefined>;
159
+ declare class BsDatepickerFieldComponent {
160
+ protected readonly ngf: _ng_forge_dynamic_forms_integration.TypedNgForgeField<string>;
202
161
  readonly minDate: _angular_core.InputSignal<string | Date | null>;
203
162
  readonly maxDate: _angular_core.InputSignal<string | Date | null>;
204
163
  readonly startAt: _angular_core.InputSignal<Date | null>;
205
164
  readonly props: _angular_core.InputSignal<BsDatepickerProps | undefined>;
206
- readonly validationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
207
- readonly defaultValidationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
208
- readonly meta: _angular_core.InputSignal<InputMeta | undefined>;
209
- readonly resolvedErrors: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
210
- readonly showErrors: _angular_core.Signal<boolean>;
211
- readonly errorsToDisplay: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
212
- constructor();
213
165
  readonly minAsString: _angular_core.Signal<string | null>;
214
166
  readonly maxAsString: _angular_core.Signal<string | null>;
215
- protected readonly hintId: _angular_core.Signal<string>;
216
- protected readonly errorId: _angular_core.Signal<string>;
217
- protected readonly ariaInvalid: _angular_core.Signal<boolean>;
218
- protected readonly ariaRequired: _angular_core.Signal<true | null>;
219
- protected readonly ariaDescribedBy: _angular_core.Signal<string | null>;
220
167
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BsDatepickerFieldComponent, never>;
221
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsDatepickerFieldComponent, "df-bs-datepicker", never, { "field": { "alias": "field"; "required": true; "isSignal": true; }; "key": { "alias": "key"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "tabIndex": { "alias": "tabIndex"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "startAt": { "alias": "startAt"; "required": false; "isSignal": true; }; "props": { "alias": "props"; "required": false; "isSignal": true; }; "validationMessages": { "alias": "validationMessages"; "required": false; "isSignal": true; }; "defaultValidationMessages": { "alias": "defaultValidationMessages"; "required": false; "isSignal": true; }; "meta": { "alias": "meta"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
168
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsDatepickerFieldComponent, "df-bs-datepicker", never, { "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "startAt": { "alias": "startAt"; "required": false; "isSignal": true; }; "props": { "alias": "props"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof _ng_forge_dynamic_forms_integration.NgForgeFieldHost; inputs: {}; outputs: {}; }]>;
222
169
  }
223
170
 
224
171
  interface BsInputProps extends InputProps {
@@ -231,58 +178,17 @@ interface BsInputProps extends InputProps {
231
178
  type?: 'text' | 'email' | 'password' | 'number' | 'tel' | 'url';
232
179
  }
233
180
  type BsInputField = InputField<BsInputProps>;
181
+ /** @deprecated Scheduled for removal in v1. Use `injectNgForgeField<T>()` for typed access to a field component's directive instance. */
234
182
  type BsInputComponent = ValueFieldComponent<BsInputField>;
235
183
 
236
- declare class BsInputFieldComponent implements BsInputComponent {
184
+ declare class BsInputFieldComponent {
237
185
  private bootstrapConfig;
238
- private readonly elementRef;
239
- readonly field: _angular_core.InputSignal<FieldTree<string>>;
240
- readonly key: _angular_core.InputSignal<string>;
241
- readonly label: _angular_core.InputSignal<DynamicText | undefined>;
242
- readonly placeholder: _angular_core.InputSignal<DynamicText | undefined>;
243
- readonly className: _angular_core.InputSignal<string>;
244
- readonly tabIndex: _angular_core.InputSignal<number | undefined>;
186
+ protected readonly ngf: _ng_forge_dynamic_forms_integration.TypedNgForgeField<string>;
245
187
  readonly props: _angular_core.InputSignal<BsInputProps | undefined>;
246
- readonly validationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
247
- readonly defaultValidationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
248
- readonly meta: _angular_core.InputSignal<InputMeta | undefined>;
249
- /**
250
- * Reference to the native input element.
251
- * Used to imperatively sync the readonly attribute since Angular Signal Forms'
252
- * [field] directive doesn't sync FieldState.readonly() to the DOM.
253
- */
254
- private readonly inputRef;
255
- /**
256
- * Computed signal that extracts the readonly state from the field.
257
- * Used by the effect to reactively sync the readonly attribute to the DOM.
258
- */
259
- private readonly isReadonly;
260
- /**
261
- * Workaround: Angular Signal Forms' [field] directive does NOT sync the readonly
262
- * attribute to the DOM. This effect imperatively sets/removes the readonly attribute
263
- * on the native input element whenever the readonly state changes.
264
- *
265
- * Uses afterRenderEffect to ensure DOM is ready before manipulating attributes.
266
- */
267
- private readonly syncReadonlyToDom;
268
- constructor();
269
- readonly effectiveSize: _angular_core.Signal<"sm" | "lg" | undefined>;
270
- readonly effectiveFloatingLabel: _angular_core.Signal<boolean>;
271
- readonly resolvedErrors: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
272
- readonly showErrors: _angular_core.Signal<boolean>;
273
- readonly errorsToDisplay: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
274
- /** Unique ID for the hint element, used for aria-describedby */
275
- protected readonly hintId: _angular_core.Signal<string>;
276
- /** Base ID for error elements, used for aria-describedby */
277
- protected readonly errorId: _angular_core.Signal<string>;
278
- /** aria-invalid: true when field is invalid AND touched, false otherwise */
279
- protected readonly ariaInvalid: _angular_core.Signal<boolean>;
280
- /** aria-required: true if field is required, null otherwise (to remove attribute) */
281
- protected readonly ariaRequired: _angular_core.Signal<true | null>;
282
- /** aria-describedby: links to hint and error messages for screen readers */
283
- protected readonly ariaDescribedBy: _angular_core.Signal<string | null>;
188
+ readonly size: _angular_core.Signal<"sm" | "lg" | undefined>;
189
+ readonly floatingLabel: _angular_core.Signal<boolean>;
284
190
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BsInputFieldComponent, never>;
285
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsInputFieldComponent, "df-bs-input", never, { "field": { "alias": "field"; "required": true; "isSignal": true; }; "key": { "alias": "key"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "tabIndex": { "alias": "tabIndex"; "required": false; "isSignal": true; }; "props": { "alias": "props"; "required": false; "isSignal": true; }; "validationMessages": { "alias": "validationMessages"; "required": false; "isSignal": true; }; "defaultValidationMessages": { "alias": "defaultValidationMessages"; "required": false; "isSignal": true; }; "meta": { "alias": "meta"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
191
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsInputFieldComponent, "df-bs-input", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof _ng_forge_dynamic_forms_integration.NgForgeFieldHost; inputs: {}; outputs: {}; }]>;
286
192
  }
287
193
 
288
194
  interface BsMultiCheckboxProps {
@@ -292,36 +198,20 @@ interface BsMultiCheckboxProps {
292
198
  hint?: DynamicText;
293
199
  }
294
200
  type BsMultiCheckboxField<T> = MultiCheckboxField<T, BsMultiCheckboxProps>;
201
+ /** @deprecated Scheduled for removal in v1. Use `injectNgForgeField<T>()` for typed access to a field component's directive instance. */
295
202
  type BsMultiCheckboxComponent = ValueFieldComponent<BsMultiCheckboxField<ValueType>>;
296
203
 
297
- declare class BsMultiCheckboxFieldComponent implements BsMultiCheckboxComponent {
298
- private readonly elementRef;
299
- readonly field: _angular_core.InputSignal<FieldTree<ValueType[]>>;
300
- readonly key: _angular_core.InputSignal<string>;
301
- readonly label: _angular_core.InputSignal<DynamicText | undefined>;
302
- readonly placeholder: _angular_core.InputSignal<DynamicText | undefined>;
303
- readonly className: _angular_core.InputSignal<string>;
304
- readonly tabIndex: _angular_core.InputSignal<number | undefined>;
204
+ declare class BsMultiCheckboxFieldComponent {
205
+ protected readonly ngf: _ng_forge_dynamic_forms_integration.TypedNgForgeField<ValueType[]>;
305
206
  readonly options: _angular_core.InputSignal<FieldOption<ValueType>[]>;
306
207
  readonly props: _angular_core.InputSignal<BsMultiCheckboxProps | undefined>;
307
- readonly validationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
308
- readonly defaultValidationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
309
- readonly meta: _angular_core.InputSignal<FieldMeta | undefined>;
310
- readonly resolvedErrors: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
311
- readonly showErrors: _angular_core.Signal<boolean>;
312
- readonly errorsToDisplay: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
313
208
  /** Computed map of checked option values for O(1) lookup in template */
314
209
  readonly checkedValuesMap: _angular_core.Signal<Record<string, boolean>>;
315
210
  valueViewModel: _angular_core.WritableSignal<FieldOption<ValueType>[]>;
316
211
  constructor();
317
212
  onCheckboxChange(option: FieldOption<ValueType>, event: Event): void;
318
- protected readonly hintId: _angular_core.Signal<string>;
319
- protected readonly errorId: _angular_core.Signal<string>;
320
- protected readonly ariaInvalid: _angular_core.Signal<boolean>;
321
- protected readonly ariaRequired: _angular_core.Signal<true | null>;
322
- protected readonly ariaDescribedBy: _angular_core.Signal<string | null>;
323
213
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BsMultiCheckboxFieldComponent, never>;
324
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsMultiCheckboxFieldComponent, "df-bs-multi-checkbox", never, { "field": { "alias": "field"; "required": true; "isSignal": true; }; "key": { "alias": "key"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "tabIndex": { "alias": "tabIndex"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "props": { "alias": "props"; "required": false; "isSignal": true; }; "validationMessages": { "alias": "validationMessages"; "required": false; "isSignal": true; }; "defaultValidationMessages": { "alias": "defaultValidationMessages"; "required": false; "isSignal": true; }; "meta": { "alias": "meta"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
214
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsMultiCheckboxFieldComponent, "df-bs-multi-checkbox", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "props": { "alias": "props"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof _ng_forge_dynamic_forms_integration.NgForgeFieldHost; inputs: {}; outputs: {}; }]>;
325
215
  }
326
216
 
327
217
  interface BsRadioProps {
@@ -332,32 +222,15 @@ interface BsRadioProps {
332
222
  hint?: DynamicText;
333
223
  }
334
224
  type BsRadioField<T> = RadioField<T, BsRadioProps>;
225
+ /** @deprecated Scheduled for removal in v1. Use `injectNgForgeField<T>()` for typed access to a field component's directive instance. */
335
226
  type BsRadioComponent = ValueFieldComponent<BsRadioField<ValueType>>;
336
227
 
337
- declare class BsRadioFieldComponent implements BsRadioComponent {
338
- private readonly elementRef;
339
- readonly field: _angular_core.InputSignal<FieldTree<ValueType>>;
340
- readonly key: _angular_core.InputSignal<string>;
341
- readonly label: _angular_core.InputSignal<DynamicText | undefined>;
342
- readonly placeholder: _angular_core.InputSignal<DynamicText | undefined>;
343
- readonly className: _angular_core.InputSignal<string>;
344
- readonly tabIndex: _angular_core.InputSignal<number | undefined>;
228
+ declare class BsRadioFieldComponent {
229
+ protected readonly ngf: _ng_forge_dynamic_forms_integration.TypedNgForgeField<ValueType>;
345
230
  readonly options: _angular_core.InputSignal<FieldOption<ValueType>[]>;
346
231
  readonly props: _angular_core.InputSignal<BsRadioProps | undefined>;
347
- readonly meta: _angular_core.InputSignal<FieldMeta | undefined>;
348
- readonly validationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
349
- readonly defaultValidationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
350
- readonly resolvedErrors: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
351
- readonly showErrors: _angular_core.Signal<boolean>;
352
- constructor();
353
- readonly errorsToDisplay: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
354
- protected readonly hintId: _angular_core.Signal<string>;
355
- protected readonly errorId: _angular_core.Signal<string>;
356
- protected readonly ariaInvalid: _angular_core.Signal<boolean>;
357
- protected readonly ariaRequired: _angular_core.Signal<true | null>;
358
- protected readonly ariaDescribedBy: _angular_core.Signal<string | null>;
359
232
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BsRadioFieldComponent, never>;
360
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsRadioFieldComponent, "df-bs-radio", never, { "field": { "alias": "field"; "required": true; "isSignal": true; }; "key": { "alias": "key"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "tabIndex": { "alias": "tabIndex"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "props": { "alias": "props"; "required": false; "isSignal": true; }; "meta": { "alias": "meta"; "required": false; "isSignal": true; }; "validationMessages": { "alias": "validationMessages"; "required": false; "isSignal": true; }; "defaultValidationMessages": { "alias": "defaultValidationMessages"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
233
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsRadioFieldComponent, "df-bs-radio", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "props": { "alias": "props"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof _ng_forge_dynamic_forms_integration.NgForgeFieldHost; inputs: {}; outputs: {}; }]>;
361
234
  }
362
235
 
363
236
  /**
@@ -376,34 +249,17 @@ interface BsSelectProps extends SelectProps {
376
249
  }
377
250
  type BsSelectField<T> = SelectField<T, BsSelectProps>;
378
251
  /** Bootstrap select only supports string values due to native HTML select limitations */
252
+ /** @deprecated Scheduled for removal in v1. Use `injectNgForgeField<T>()` for typed access to a field component's directive instance. */
379
253
  type BsSelectComponent = ValueFieldComponent<BsSelectField<string>>;
380
254
 
381
- declare class BsSelectFieldComponent implements BsSelectComponent {
382
- private readonly elementRef;
383
- readonly field: _angular_core.InputSignal<FieldTree<string>>;
384
- readonly key: _angular_core.InputSignal<string>;
385
- readonly label: _angular_core.InputSignal<DynamicText | undefined>;
386
- readonly placeholder: _angular_core.InputSignal<DynamicText | undefined>;
387
- readonly className: _angular_core.InputSignal<string>;
388
- readonly tabIndex: _angular_core.InputSignal<number | undefined>;
255
+ declare class BsSelectFieldComponent {
256
+ protected readonly ngf: _ng_forge_dynamic_forms_integration.TypedNgForgeField<string>;
389
257
  readonly options: _angular_core.InputSignal<FieldOption<string>[]>;
390
258
  readonly props: _angular_core.InputSignal<BsSelectProps | undefined>;
391
- readonly validationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
392
- readonly defaultValidationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
393
- readonly meta: _angular_core.InputSignal<FieldMeta | undefined>;
394
- readonly resolvedErrors: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
395
- readonly showErrors: _angular_core.Signal<boolean>;
396
- readonly errorsToDisplay: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
397
- constructor();
398
259
  defaultCompare: (value1: any, value2: any) => boolean;
399
260
  protected isSelected(optionValue: string, fieldValue: string | string[] | null): boolean;
400
- protected readonly hintId: _angular_core.Signal<string>;
401
- protected readonly errorId: _angular_core.Signal<string>;
402
- protected readonly ariaInvalid: _angular_core.Signal<boolean>;
403
- protected readonly ariaRequired: _angular_core.Signal<true | null>;
404
- protected readonly ariaDescribedBy: _angular_core.Signal<string | null>;
405
261
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BsSelectFieldComponent, never>;
406
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsSelectFieldComponent, "df-bs-select", never, { "field": { "alias": "field"; "required": true; "isSignal": true; }; "key": { "alias": "key"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "tabIndex": { "alias": "tabIndex"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "props": { "alias": "props"; "required": false; "isSignal": true; }; "validationMessages": { "alias": "validationMessages"; "required": false; "isSignal": true; }; "defaultValidationMessages": { "alias": "defaultValidationMessages"; "required": false; "isSignal": true; }; "meta": { "alias": "meta"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
262
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsSelectFieldComponent, "df-bs-select", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "props": { "alias": "props"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof _ng_forge_dynamic_forms_integration.NgForgeFieldHost; inputs: {}; outputs: {}; }]>;
407
263
  }
408
264
 
409
265
  interface BsSliderProps {
@@ -428,34 +284,17 @@ interface BsSliderProps {
428
284
  step?: number;
429
285
  }
430
286
  type BsSliderField = SliderField<BsSliderProps>;
287
+ /** @deprecated Scheduled for removal in v1. Use `injectNgForgeField<T>()` for typed access to a field component's directive instance. */
431
288
  type BsSliderComponent = ValueFieldComponent<BsSliderField>;
432
289
 
433
- declare class BsSliderFieldComponent implements BsSliderComponent {
434
- private readonly elementRef;
435
- readonly field: _angular_core.InputSignal<FieldTree<number>>;
436
- readonly key: _angular_core.InputSignal<string>;
437
- readonly label: _angular_core.InputSignal<DynamicText | undefined>;
438
- readonly placeholder: _angular_core.InputSignal<DynamicText | undefined>;
439
- readonly className: _angular_core.InputSignal<string>;
440
- readonly tabIndex: _angular_core.InputSignal<number | undefined>;
290
+ declare class BsSliderFieldComponent {
291
+ protected readonly ngf: _ng_forge_dynamic_forms_integration.TypedNgForgeField<number>;
441
292
  readonly min: _angular_core.InputSignal<number>;
442
293
  readonly max: _angular_core.InputSignal<number>;
443
294
  readonly step: _angular_core.InputSignal<number | undefined>;
444
295
  readonly props: _angular_core.InputSignal<BsSliderProps | undefined>;
445
- readonly validationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
446
- readonly defaultValidationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
447
- readonly meta: _angular_core.InputSignal<InputMeta | undefined>;
448
- readonly resolvedErrors: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
449
- readonly showErrors: _angular_core.Signal<boolean>;
450
- readonly errorsToDisplay: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
451
- constructor();
452
- protected readonly hintId: _angular_core.Signal<string>;
453
- protected readonly errorId: _angular_core.Signal<string>;
454
- protected readonly ariaInvalid: _angular_core.Signal<boolean>;
455
- protected readonly ariaRequired: _angular_core.Signal<true | null>;
456
- protected readonly ariaDescribedBy: _angular_core.Signal<string | null>;
457
296
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BsSliderFieldComponent, never>;
458
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsSliderFieldComponent, "df-bs-slider", never, { "field": { "alias": "field"; "required": true; "isSignal": true; }; "key": { "alias": "key"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "tabIndex": { "alias": "tabIndex"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "props": { "alias": "props"; "required": false; "isSignal": true; }; "validationMessages": { "alias": "validationMessages"; "required": false; "isSignal": true; }; "defaultValidationMessages": { "alias": "defaultValidationMessages"; "required": false; "isSignal": true; }; "meta": { "alias": "meta"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
297
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsSliderFieldComponent, "df-bs-slider", never, { "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "props": { "alias": "props"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof _ng_forge_dynamic_forms_integration.NgForgeFieldHost; inputs: {}; outputs: {}; }]>;
459
298
  }
460
299
 
461
300
  interface BsTextareaProps extends TextareaProps {
@@ -466,20 +305,12 @@ interface BsTextareaProps extends TextareaProps {
466
305
  invalidFeedback?: DynamicText;
467
306
  }
468
307
  type BsTextareaField = TextareaField<BsTextareaProps>;
308
+ /** @deprecated Scheduled for removal in v1. Use `injectNgForgeField<T>()` for typed access to a field component's directive instance. */
469
309
  type BsTextareaComponent = ValueFieldComponent<BsTextareaField>;
470
310
 
471
- declare class BsTextareaFieldComponent implements BsTextareaComponent {
472
- private readonly elementRef;
473
- readonly field: _angular_core.InputSignal<FieldTree<string>>;
474
- readonly key: _angular_core.InputSignal<string>;
475
- readonly label: _angular_core.InputSignal<DynamicText | undefined>;
476
- readonly placeholder: _angular_core.InputSignal<DynamicText | undefined>;
477
- readonly className: _angular_core.InputSignal<string>;
478
- readonly tabIndex: _angular_core.InputSignal<number | undefined>;
311
+ declare class BsTextareaFieldComponent {
312
+ protected readonly ngf: _ng_forge_dynamic_forms_integration.TypedNgForgeField<string>;
479
313
  readonly props: _angular_core.InputSignal<BsTextareaProps | undefined>;
480
- readonly validationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
481
- readonly defaultValidationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
482
- readonly meta: _angular_core.InputSignal<TextareaMeta | undefined>;
483
314
  /**
484
315
  * Reference to the native textarea element.
485
316
  * Used to imperatively sync the readonly attribute since Angular Signal Forms'
@@ -496,17 +327,8 @@ declare class BsTextareaFieldComponent implements BsTextareaComponent {
496
327
  * on the native textarea element whenever the readonly state changes.
497
328
  */
498
329
  private readonly syncReadonlyToDom;
499
- readonly resolvedErrors: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
500
- readonly showErrors: _angular_core.Signal<boolean>;
501
- readonly errorsToDisplay: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
502
- constructor();
503
- protected readonly hintId: _angular_core.Signal<string>;
504
- protected readonly errorId: _angular_core.Signal<string>;
505
- protected readonly ariaInvalid: _angular_core.Signal<boolean>;
506
- protected readonly ariaRequired: _angular_core.Signal<true | null>;
507
- protected readonly ariaDescribedBy: _angular_core.Signal<string | null>;
508
330
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BsTextareaFieldComponent, never>;
509
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsTextareaFieldComponent, "df-bs-textarea", never, { "field": { "alias": "field"; "required": true; "isSignal": true; }; "key": { "alias": "key"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "tabIndex": { "alias": "tabIndex"; "required": false; "isSignal": true; }; "props": { "alias": "props"; "required": false; "isSignal": true; }; "validationMessages": { "alias": "validationMessages"; "required": false; "isSignal": true; }; "defaultValidationMessages": { "alias": "defaultValidationMessages"; "required": false; "isSignal": true; }; "meta": { "alias": "meta"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
331
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsTextareaFieldComponent, "df-bs-textarea", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof _ng_forge_dynamic_forms_integration.NgForgeFieldHost; inputs: {}; outputs: {}; }]>;
510
332
  }
511
333
 
512
334
  interface BsToggleProps {
@@ -516,31 +338,14 @@ interface BsToggleProps {
516
338
  hint?: DynamicText;
517
339
  }
518
340
  type BsToggleField = ToggleField<BsToggleProps>;
341
+ /** @deprecated Scheduled for removal in v1. Use `injectNgForgeField<T>()` for typed access to a field component's directive instance. */
519
342
  type BsToggleComponent = CheckedFieldComponent<BsToggleField>;
520
343
 
521
- declare class BsToggleFieldComponent implements BsToggleComponent {
522
- private readonly elementRef;
523
- readonly field: _angular_core.InputSignal<FieldTree<boolean>>;
524
- readonly key: _angular_core.InputSignal<string>;
525
- readonly label: _angular_core.InputSignal<DynamicText | undefined>;
526
- readonly placeholder: _angular_core.InputSignal<DynamicText | undefined>;
527
- readonly className: _angular_core.InputSignal<string>;
528
- readonly tabIndex: _angular_core.InputSignal<number | undefined>;
344
+ declare class BsToggleFieldComponent {
345
+ protected readonly ngf: _ng_forge_dynamic_forms_integration.TypedNgForgeField<boolean>;
529
346
  readonly props: _angular_core.InputSignal<BsToggleProps | undefined>;
530
- readonly validationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
531
- readonly defaultValidationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
532
- readonly meta: _angular_core.InputSignal<FieldMeta | undefined>;
533
- readonly resolvedErrors: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
534
- readonly showErrors: _angular_core.Signal<boolean>;
535
- readonly errorsToDisplay: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
536
- constructor();
537
- protected readonly hintId: _angular_core.Signal<string>;
538
- protected readonly errorId: _angular_core.Signal<string>;
539
- protected readonly ariaInvalid: _angular_core.Signal<boolean>;
540
- protected readonly ariaRequired: _angular_core.Signal<true | null>;
541
- protected readonly ariaDescribedBy: _angular_core.Signal<string | null>;
542
347
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BsToggleFieldComponent, never>;
543
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsToggleFieldComponent, "df-bs-toggle", never, { "field": { "alias": "field"; "required": true; "isSignal": true; }; "key": { "alias": "key"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "tabIndex": { "alias": "tabIndex"; "required": false; "isSignal": true; }; "props": { "alias": "props"; "required": false; "isSignal": true; }; "validationMessages": { "alias": "validationMessages"; "required": false; "isSignal": true; }; "defaultValidationMessages": { "alias": "defaultValidationMessages"; "required": false; "isSignal": true; }; "meta": { "alias": "meta"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
348
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsToggleFieldComponent, "df-bs-toggle", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof _ng_forge_dynamic_forms_integration.NgForgeFieldHost; inputs: {}; outputs: {}; }]>;
544
349
  }
545
350
 
546
351
  declare const BOOTSTRAP_FIELD_TYPES: FieldTypeDefinition[];