@ng-forge/dynamic-forms-bootstrap 0.1.2 → 0.2.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ng-forge/dynamic-forms-bootstrap",
3
- "version": "0.1.2",
3
+ "version": "0.2.0",
4
4
  "description": "Bootstrap 5 integration for @ng-forge/dynamic-forms. Pre-built Bootstrap form components.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -28,10 +28,10 @@
28
28
  "node": ">=18"
29
29
  },
30
30
  "peerDependencies": {
31
- "@angular/common": "~21.0.5",
32
- "@angular/core": "~21.0.5",
33
- "@angular/forms": "~21.0.5",
34
- "@ng-forge/dynamic-forms": "~0.1.1",
31
+ "@angular/common": ">=21.0.6",
32
+ "@angular/core": ">=21.0.6",
33
+ "@angular/forms": ">=21.0.6",
34
+ "@ng-forge/dynamic-forms": "~0.2.0",
35
35
  "rxjs": ">=7.0.0"
36
36
  },
37
37
  "module": "fesm2022/ng-forge-dynamic-forms-bootstrap.mjs",
@@ -1,5 +1,6 @@
1
- import * as _ng_forge_dynamic_forms from '@ng-forge/dynamic-forms';
2
- import { FormEvent, ButtonField, FieldDef, LogicConfig, FieldComponent, DynamicText, FormEventConstructor, EventArgs, ArrayItemContext, CheckboxField, CheckedFieldComponent, ValidationMessages, DatepickerField, DatepickerProps, ValueFieldComponent, InputField, InputProps, MultiCheckboxField, ValueType, FieldOption, RadioField, SelectField, SelectProps, SliderField, TextareaField, TextareaProps, ToggleField, FieldTypeDefinition } from '@ng-forge/dynamic-forms';
1
+ import { FormEvent, FieldDef, LogicConfig, FieldComponent, DynamicText, FormEventConstructor, ArrayItemContext, CheckedFieldComponent, ValidationMessages, ValueFieldComponent, ValueType, FieldOption, FieldTypeDefinition } from '@ng-forge/dynamic-forms';
2
+ import * as _ng_forge_dynamic_forms_integration from '@ng-forge/dynamic-forms/integration';
3
+ import { ButtonField, EventArgs, CheckboxField, DatepickerField, DatepickerProps, InputField, InputProps, MultiCheckboxField, RadioField, SelectField, SelectProps, SliderField, TextareaField, TextareaProps, ToggleField } from '@ng-forge/dynamic-forms/integration';
3
4
  import * as _angular_core from '@angular/core';
4
5
  import { ElementRef, InjectionToken, Provider } from '@angular/core';
5
6
  import { FieldTree } from '@angular/forms/signals';
@@ -128,9 +129,9 @@ declare class BsCheckboxFieldComponent implements BsCheckboxComponent {
128
129
  readonly props: _angular_core.InputSignal<BsCheckboxProps | undefined>;
129
130
  readonly validationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
130
131
  readonly defaultValidationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
131
- readonly resolvedErrors: _angular_core.Signal<_ng_forge_dynamic_forms.ResolvedError[]>;
132
+ readonly resolvedErrors: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
132
133
  readonly showErrors: _angular_core.Signal<boolean>;
133
- readonly errorsToDisplay: _angular_core.Signal<_ng_forge_dynamic_forms.ResolvedError[]>;
134
+ readonly errorsToDisplay: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
134
135
  readonly checkboxInput: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
135
136
  constructor();
136
137
  protected readonly helpTextId: _angular_core.Signal<string>;
@@ -170,9 +171,9 @@ declare class BsDatepickerFieldComponent implements BsDatepickerComponent {
170
171
  readonly props: _angular_core.InputSignal<BsDatepickerProps | undefined>;
171
172
  readonly validationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
172
173
  readonly defaultValidationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
173
- readonly resolvedErrors: _angular_core.Signal<_ng_forge_dynamic_forms.ResolvedError[]>;
174
+ readonly resolvedErrors: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
174
175
  readonly showErrors: _angular_core.Signal<boolean>;
175
- readonly errorsToDisplay: _angular_core.Signal<_ng_forge_dynamic_forms.ResolvedError[]>;
176
+ readonly errorsToDisplay: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
176
177
  readonly minAsString: _angular_core.Signal<string | null>;
177
178
  readonly maxAsString: _angular_core.Signal<string | null>;
178
179
  protected readonly helpTextId: _angular_core.Signal<string>;
@@ -200,6 +201,25 @@ declare class BsInputFieldComponent implements BsInputComponent {
200
201
  private bootstrapConfig;
201
202
  readonly field: _angular_core.InputSignal<FieldTree<string>>;
202
203
  readonly key: _angular_core.InputSignal<string>;
204
+ /**
205
+ * Reference to the native input element.
206
+ * Used to imperatively sync the readonly attribute since Angular Signal Forms'
207
+ * [field] directive doesn't sync FieldState.readonly() to the DOM.
208
+ */
209
+ private readonly inputRef;
210
+ /**
211
+ * Computed signal that extracts the readonly state from the field.
212
+ * Used by the effect to reactively sync the readonly attribute to the DOM.
213
+ */
214
+ private readonly isReadonly;
215
+ /**
216
+ * Workaround: Angular Signal Forms' [field] directive does NOT sync the readonly
217
+ * attribute to the DOM. This effect imperatively sets/removes the readonly attribute
218
+ * on the native input element whenever the readonly state changes.
219
+ *
220
+ * Uses afterRenderEffect to ensure DOM is ready before manipulating attributes.
221
+ */
222
+ private readonly syncReadonlyToDom;
203
223
  readonly label: _angular_core.InputSignal<DynamicText | undefined>;
204
224
  readonly placeholder: _angular_core.InputSignal<DynamicText | undefined>;
205
225
  readonly className: _angular_core.InputSignal<string>;
@@ -209,9 +229,9 @@ declare class BsInputFieldComponent implements BsInputComponent {
209
229
  readonly defaultValidationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
210
230
  readonly effectiveSize: _angular_core.Signal<"sm" | "lg" | undefined>;
211
231
  readonly effectiveFloatingLabel: _angular_core.Signal<boolean>;
212
- readonly resolvedErrors: _angular_core.Signal<_ng_forge_dynamic_forms.ResolvedError[]>;
232
+ readonly resolvedErrors: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
213
233
  readonly showErrors: _angular_core.Signal<boolean>;
214
- readonly errorsToDisplay: _angular_core.Signal<_ng_forge_dynamic_forms.ResolvedError[]>;
234
+ readonly errorsToDisplay: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
215
235
  /** Unique ID for the help text element, used for aria-describedby */
216
236
  protected readonly helpTextId: _angular_core.Signal<string>;
217
237
  /** Base ID for error elements, used for aria-describedby */
@@ -246,9 +266,9 @@ declare class BsMultiCheckboxFieldComponent<T extends ValueType> implements BsMu
246
266
  readonly props: _angular_core.InputSignal<BsMultiCheckboxProps<T> | undefined>;
247
267
  readonly validationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
248
268
  readonly defaultValidationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
249
- readonly resolvedErrors: _angular_core.Signal<_ng_forge_dynamic_forms.ResolvedError[]>;
269
+ readonly resolvedErrors: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
250
270
  readonly showErrors: _angular_core.Signal<boolean>;
251
- readonly errorsToDisplay: _angular_core.Signal<_ng_forge_dynamic_forms.ResolvedError[]>;
271
+ readonly errorsToDisplay: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
252
272
  valueViewModel: _angular_core.WritableSignal<FieldOption<T>[]>;
253
273
  constructor();
254
274
  onCheckboxChange(option: FieldOption<T>, checked: boolean): void;
@@ -283,9 +303,9 @@ declare class BsRadioFieldComponent<T extends string> implements BsRadioComponen
283
303
  readonly props: _angular_core.InputSignal<BsRadioProps | undefined>;
284
304
  readonly validationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
285
305
  readonly defaultValidationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
286
- readonly resolvedErrors: _angular_core.Signal<_ng_forge_dynamic_forms.ResolvedError[]>;
306
+ readonly resolvedErrors: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
287
307
  readonly showErrors: _angular_core.Signal<boolean>;
288
- readonly errorsToDisplay: _angular_core.Signal<_ng_forge_dynamic_forms.ResolvedError[]>;
308
+ readonly errorsToDisplay: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
289
309
  protected readonly helpTextId: _angular_core.Signal<string>;
290
310
  protected readonly errorId: _angular_core.Signal<string>;
291
311
  protected readonly ariaInvalid: _angular_core.Signal<boolean>;
@@ -319,9 +339,9 @@ declare class BsSelectFieldComponent<T extends string = string> implements BsSel
319
339
  readonly props: _angular_core.InputSignal<BsSelectProps<T> | undefined>;
320
340
  readonly validationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
321
341
  readonly defaultValidationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
322
- readonly resolvedErrors: _angular_core.Signal<_ng_forge_dynamic_forms.ResolvedError[]>;
342
+ readonly resolvedErrors: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
323
343
  readonly showErrors: _angular_core.Signal<boolean>;
324
- readonly errorsToDisplay: _angular_core.Signal<_ng_forge_dynamic_forms.ResolvedError[]>;
344
+ readonly errorsToDisplay: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
325
345
  defaultCompare: (value1: any, value2: any) => boolean;
326
346
  protected isSelected(optionValue: T, fieldValue: T | T[] | null): boolean;
327
347
  protected readonly helpTextId: _angular_core.Signal<string>;
@@ -358,9 +378,9 @@ declare class BsSliderFieldComponent implements BsSliderComponent {
358
378
  readonly props: _angular_core.InputSignal<BsSliderProps | undefined>;
359
379
  readonly validationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
360
380
  readonly defaultValidationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
361
- readonly resolvedErrors: _angular_core.Signal<_ng_forge_dynamic_forms.ResolvedError[]>;
381
+ readonly resolvedErrors: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
362
382
  readonly showErrors: _angular_core.Signal<boolean>;
363
- readonly errorsToDisplay: _angular_core.Signal<_ng_forge_dynamic_forms.ResolvedError[]>;
383
+ readonly errorsToDisplay: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
364
384
  protected readonly helpTextId: _angular_core.Signal<string>;
365
385
  protected readonly errorId: _angular_core.Signal<string>;
366
386
  protected readonly ariaInvalid: _angular_core.Signal<boolean>;
@@ -391,9 +411,9 @@ declare class BsTextareaFieldComponent implements BsTextareaComponent {
391
411
  readonly props: _angular_core.InputSignal<BsTextareaProps | undefined>;
392
412
  readonly validationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
393
413
  readonly defaultValidationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
394
- readonly resolvedErrors: _angular_core.Signal<_ng_forge_dynamic_forms.ResolvedError[]>;
414
+ readonly resolvedErrors: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
395
415
  readonly showErrors: _angular_core.Signal<boolean>;
396
- readonly errorsToDisplay: _angular_core.Signal<_ng_forge_dynamic_forms.ResolvedError[]>;
416
+ readonly errorsToDisplay: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
397
417
  protected readonly helpTextId: _angular_core.Signal<string>;
398
418
  protected readonly errorId: _angular_core.Signal<string>;
399
419
  protected readonly ariaInvalid: _angular_core.Signal<boolean>;
@@ -422,9 +442,9 @@ declare class BsToggleFieldComponent implements BsToggleComponent {
422
442
  readonly props: _angular_core.InputSignal<BsToggleProps | undefined>;
423
443
  readonly validationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
424
444
  readonly defaultValidationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
425
- readonly resolvedErrors: _angular_core.Signal<_ng_forge_dynamic_forms.ResolvedError[]>;
445
+ readonly resolvedErrors: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
426
446
  readonly showErrors: _angular_core.Signal<boolean>;
427
- readonly errorsToDisplay: _angular_core.Signal<_ng_forge_dynamic_forms.ResolvedError[]>;
447
+ readonly errorsToDisplay: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
428
448
  protected readonly helpTextId: _angular_core.Signal<string>;
429
449
  protected readonly errorId: _angular_core.Signal<string>;
430
450
  protected readonly ariaInvalid: _angular_core.Signal<boolean>;