@ng-forge/dynamic-forms-bootstrap 0.9.0-next.2 → 0.9.0-next.4

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.
@@ -1,10 +1,10 @@
1
1
  import { AsyncPipe } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
- import { inject, input, computed, ChangeDetectionStrategy, Component, ElementRef, viewChild, Directive, InjectionToken, afterRenderEffect, linkedSignal, model, isSignal } from '@angular/core';
3
+ import { inject, input, computed, ChangeDetectionStrategy, Component, ElementRef, Directive, InjectionToken, linkedSignal, model, viewChild, afterRenderEffect, isSignal } from '@angular/core';
4
4
  import { EventBus, ARRAY_CONTEXT, resolveTokens, DynamicTextPipe, DEFAULT_PROPS, buildBaseInputs } from '@ng-forge/dynamic-forms';
5
- import { explicitEffect } from 'ngxtension/explicit-effect';
6
5
  import { FormField } from '@angular/forms/signals';
7
6
  import { createResolvedErrorsSignal, shouldShowErrors, setupMetaTracking, isEqual, valueFieldMapper, optionsFieldMapper, checkboxFieldMapper, submitButtonFieldMapper, nextButtonFieldMapper, previousButtonFieldMapper, addArrayItemButtonMapper, prependArrayItemButtonMapper, insertArrayItemButtonMapper, removeArrayItemButtonMapper, popArrayItemButtonMapper, shiftArrayItemButtonMapper, datepickerFieldMapper } from '@ng-forge/dynamic-forms/integration';
7
+ import { explicitEffect } from 'ngxtension/explicit-effect';
8
8
 
9
9
  class BsButtonFieldComponent {
10
10
  eventBus = inject(EventBus);
@@ -162,17 +162,8 @@ class BsCheckboxFieldComponent {
162
162
  resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);
163
163
  showErrors = shouldShowErrors(this.field);
164
164
  errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []), ...(ngDevMode ? [{ debugName: "errorsToDisplay" }] : /* istanbul ignore next */ []));
165
- checkboxInput = viewChild('checkboxInput', ...(ngDevMode ? [{ debugName: "checkboxInput" }] : /* istanbul ignore next */ []));
166
165
  constructor() {
167
166
  setupMetaTracking(this.elementRef, this.meta, { selector: 'input[type="checkbox"]' });
168
- // Handle indeterminate state
169
- explicitEffect([this.props, this.checkboxInput], ([props, checkboxInput]) => {
170
- const indeterminate = props?.indeterminate;
171
- const inputEl = checkboxInput?.nativeElement;
172
- if (inputEl && indeterminate !== undefined) {
173
- inputEl.indeterminate = indeterminate;
174
- }
175
- });
176
167
  }
177
168
  // ─────────────────────────────────────────────────────────────────────────────
178
169
  // Accessibility
@@ -188,7 +179,7 @@ class BsCheckboxFieldComponent {
188
179
  }, ...(ngDevMode ? [{ debugName: "ariaRequired" }] : /* istanbul ignore next */ []));
189
180
  ariaDescribedBy = createAriaDescribedBySignal(this.errorsToDisplay, this.errorId, this.hintId, () => !!this.props()?.hint);
190
181
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: BsCheckboxFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
191
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: BsCheckboxFieldComponent, isStandalone: true, selector: "df-bs-checkbox", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, validationMessages: { classPropertyName: "validationMessages", publicName: "validationMessages", isSignal: true, isRequired: false, transformFunction: null }, defaultValidationMessages: { classPropertyName: "defaultValidationMessages", publicName: "defaultValidationMessages", isSignal: true, isRequired: false, transformFunction: null }, meta: { classPropertyName: "meta", publicName: "meta", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "className()", "id": "`${key()}`", "attr.data-testid": "key()", "attr.hidden": "field()().hidden() || null" } }, viewQueries: [{ propertyName: "checkboxInput", first: true, predicate: ["checkboxInput"], descendants: true, isSignal: true }], ngImport: i0, template: `
182
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: BsCheckboxFieldComponent, isStandalone: true, selector: "df-bs-checkbox", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, validationMessages: { classPropertyName: "validationMessages", publicName: "validationMessages", isSignal: true, isRequired: false, transformFunction: null }, defaultValidationMessages: { classPropertyName: "defaultValidationMessages", publicName: "defaultValidationMessages", isSignal: true, isRequired: false, transformFunction: null }, meta: { classPropertyName: "meta", publicName: "meta", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "className()", "id": "`${key()}`", "attr.data-testid": "key()", "attr.hidden": "field()().hidden() || null" } }, ngImport: i0, template: `
192
183
  @let f = field(); @let checkboxId = key() + '-checkbox';
193
184
 
194
185
  <div
@@ -199,10 +190,10 @@ class BsCheckboxFieldComponent {
199
190
  [attr.hidden]="f().hidden() || null"
200
191
  >
201
192
  <input
202
- #checkboxInput
203
193
  type="checkbox"
204
194
  [formField]="f"
205
195
  [id]="checkboxId"
196
+ [indeterminate]="props()?.indeterminate ?? false"
206
197
  class="form-check-input"
207
198
  [class.is-invalid]="f().invalid() && f().touched()"
208
199
  [attr.tabindex]="tabIndex()"
@@ -235,10 +226,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
235
226
  [attr.hidden]="f().hidden() || null"
236
227
  >
237
228
  <input
238
- #checkboxInput
239
229
  type="checkbox"
240
230
  [formField]="f"
241
231
  [id]="checkboxId"
232
+ [indeterminate]="props()?.indeterminate ?? false"
242
233
  class="form-check-input"
243
234
  [class.is-invalid]="f().invalid() && f().touched()"
244
235
  [attr.tabindex]="tabIndex()"
@@ -262,7 +253,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
262
253
  '[attr.data-testid]': 'key()',
263
254
  '[attr.hidden]': 'field()().hidden() || null',
264
255
  }, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{--df-field-gap: .5rem;--df-label-font-weight: 500;--df-label-color: inherit;--df-hint-color: var(--bs-secondary-color, #6c757d);--df-hint-font-size: .875rem;--df-error-color: var(--bs-danger, #dc3545);--df-error-font-size: .875rem}.df-bs-field{display:flex;flex-direction:column;gap:var(--df-field-gap);width:100%;margin-bottom:1rem}.df-bs-label{font-weight:var(--df-label-font-weight);color:var(--df-label-color);margin-bottom:0}.df-bs-hint{color:var(--df-hint-color);font-size:var(--df-hint-font-size);margin-top:.25rem}.df-bs-field:has(.df-bs-hint){margin-bottom:.5rem}:host([hidden]){display:none!important}\n", ":host{display:block}:host([hidden]){display:none!important}\n"] }]
265
- }], ctorParameters: () => [], propDecorators: { field: [{ type: i0.Input, args: [{ isSignal: true, alias: "field", required: true }] }], key: [{ type: i0.Input, args: [{ isSignal: true, alias: "key", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], className: [{ type: i0.Input, args: [{ isSignal: true, alias: "className", required: false }] }], tabIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabIndex", required: false }] }], props: [{ type: i0.Input, args: [{ isSignal: true, alias: "props", required: false }] }], validationMessages: [{ type: i0.Input, args: [{ isSignal: true, alias: "validationMessages", required: false }] }], defaultValidationMessages: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValidationMessages", required: false }] }], meta: [{ type: i0.Input, args: [{ isSignal: true, alias: "meta", required: false }] }], checkboxInput: [{ type: i0.ViewChild, args: ['checkboxInput', { isSignal: true }] }] } });
256
+ }], ctorParameters: () => [], propDecorators: { field: [{ type: i0.Input, args: [{ isSignal: true, alias: "field", required: true }] }], key: [{ type: i0.Input, args: [{ isSignal: true, alias: "key", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], className: [{ type: i0.Input, args: [{ isSignal: true, alias: "className", required: false }] }], tabIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabIndex", required: false }] }], props: [{ type: i0.Input, args: [{ isSignal: true, alias: "props", required: false }] }], validationMessages: [{ type: i0.Input, args: [{ isSignal: true, alias: "validationMessages", required: false }] }], defaultValidationMessages: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValidationMessages", required: false }] }], meta: [{ type: i0.Input, args: [{ isSignal: true, alias: "meta", required: false }] }] } });
266
257
 
267
258
  var bsCheckbox_component = /*#__PURE__*/Object.freeze({
268
259
  __proto__: null,
@@ -557,38 +548,6 @@ class BsInputFieldComponent {
557
548
  validationMessages = input(...(ngDevMode ? [undefined, { debugName: "validationMessages" }] : /* istanbul ignore next */ []));
558
549
  defaultValidationMessages = input(...(ngDevMode ? [undefined, { debugName: "defaultValidationMessages" }] : /* istanbul ignore next */ []));
559
550
  meta = input(...(ngDevMode ? [undefined, { debugName: "meta" }] : /* istanbul ignore next */ []));
560
- /**
561
- * Reference to the native input element.
562
- * Used to imperatively sync the readonly attribute since Angular Signal Forms'
563
- * [field] directive doesn't sync FieldState.readonly() to the DOM.
564
- */
565
- inputRef = viewChild('inputRef', ...(ngDevMode ? [{ debugName: "inputRef" }] : /* istanbul ignore next */ []));
566
- /**
567
- * Computed signal that extracts the readonly state from the field.
568
- * Used by the effect to reactively sync the readonly attribute to the DOM.
569
- */
570
- isReadonly = computed(() => this.field()().readonly(), ...(ngDevMode ? [{ debugName: "isReadonly" }] : /* istanbul ignore next */ []));
571
- /**
572
- * Workaround: Angular Signal Forms' [field] directive does NOT sync the readonly
573
- * attribute to the DOM. This effect imperatively sets/removes the readonly attribute
574
- * on the native input element whenever the readonly state changes.
575
- *
576
- * Uses afterRenderEffect to ensure DOM is ready before manipulating attributes.
577
- */
578
- syncReadonlyToDom = afterRenderEffect({
579
- write: () => {
580
- const inputRef = this.inputRef();
581
- const isReadonly = this.isReadonly();
582
- if (inputRef?.nativeElement) {
583
- if (isReadonly) {
584
- inputRef.nativeElement.setAttribute('readonly', '');
585
- }
586
- else {
587
- inputRef.nativeElement.removeAttribute('readonly');
588
- }
589
- }
590
- },
591
- });
592
551
  constructor() {
593
552
  setupMetaTracking(this.elementRef, this.meta, { selector: 'input' });
594
553
  }
@@ -616,13 +575,12 @@ class BsInputFieldComponent {
616
575
  /** aria-describedby: links to hint and error messages for screen readers */
617
576
  ariaDescribedBy = createAriaDescribedBySignal(this.errorsToDisplay, this.errorId, this.hintId, () => !!this.props()?.hint);
618
577
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: BsInputFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
619
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: BsInputFieldComponent, isStandalone: true, selector: "df-bs-input", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, validationMessages: { classPropertyName: "validationMessages", publicName: "validationMessages", isSignal: true, isRequired: false, transformFunction: null }, defaultValidationMessages: { classPropertyName: "defaultValidationMessages", publicName: "defaultValidationMessages", isSignal: true, isRequired: false, transformFunction: null }, meta: { classPropertyName: "meta", publicName: "meta", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "id": "`${key()}`", "attr.data-testid": "key()", "class": "className()", "attr.hidden": "field()().hidden() || null" } }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["inputRef"], descendants: true, isSignal: true }], ngImport: i0, template: `
578
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: BsInputFieldComponent, isStandalone: true, selector: "df-bs-input", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, validationMessages: { classPropertyName: "validationMessages", publicName: "validationMessages", isSignal: true, isRequired: false, transformFunction: null }, defaultValidationMessages: { classPropertyName: "defaultValidationMessages", publicName: "defaultValidationMessages", isSignal: true, isRequired: false, transformFunction: null }, meta: { classPropertyName: "meta", publicName: "meta", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "id": "`${key()}`", "attr.data-testid": "key()", "class": "className()", "attr.hidden": "field()().hidden() || null" } }, ngImport: i0, template: `
620
579
  @let f = field(); @let p = props(); @let inputId = key() + '-input';
621
580
  @if (effectiveFloatingLabel()) {
622
581
  <!-- Floating label variant -->
623
582
  <div class="form-floating mb-3">
624
583
  <input
625
- #inputRef
626
584
  [formField]="f"
627
585
  [id]="inputId"
628
586
  [type]="p?.type ?? 'text'"
@@ -657,7 +615,6 @@ class BsInputFieldComponent {
657
615
  <label [for]="inputId" class="form-label">{{ label() | dynamicText | async }}</label>
658
616
  }
659
617
  <input
660
- #inputRef
661
618
  [formField]="f"
662
619
  [id]="inputId"
663
620
  [type]="p?.type ?? 'text'"
@@ -695,7 +652,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
695
652
  <!-- Floating label variant -->
696
653
  <div class="form-floating mb-3">
697
654
  <input
698
- #inputRef
699
655
  [formField]="f"
700
656
  [id]="inputId"
701
657
  [type]="p?.type ?? 'text'"
@@ -730,7 +686,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
730
686
  <label [for]="inputId" class="form-label">{{ label() | dynamicText | async }}</label>
731
687
  }
732
688
  <input
733
- #inputRef
734
689
  [formField]="f"
735
690
  [id]="inputId"
736
691
  [type]="p?.type ?? 'text'"
@@ -764,7 +719,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
764
719
  '[class]': 'className()',
765
720
  '[attr.hidden]': 'field()().hidden() || null',
766
721
  }, styles: [":host{--df-field-gap: .5rem;--df-label-font-weight: 500;--df-label-color: inherit;--df-hint-color: var(--bs-secondary-color, #6c757d);--df-hint-font-size: .875rem;--df-error-color: var(--bs-danger, #dc3545);--df-error-font-size: .875rem}.df-bs-field{display:flex;flex-direction:column;gap:var(--df-field-gap);width:100%;margin-bottom:1rem}.df-bs-label{font-weight:var(--df-label-font-weight);color:var(--df-label-color);margin-bottom:0}.df-bs-hint{color:var(--df-hint-color);font-size:var(--df-hint-font-size);margin-top:.25rem}.df-bs-field:has(.df-bs-hint){margin-bottom:.5rem}:host([hidden]){display:none!important}\n", ":host([hidden]){display:none!important}\n"] }]
767
- }], ctorParameters: () => [], propDecorators: { field: [{ type: i0.Input, args: [{ isSignal: true, alias: "field", required: true }] }], key: [{ type: i0.Input, args: [{ isSignal: true, alias: "key", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], className: [{ type: i0.Input, args: [{ isSignal: true, alias: "className", required: false }] }], tabIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabIndex", required: false }] }], props: [{ type: i0.Input, args: [{ isSignal: true, alias: "props", required: false }] }], validationMessages: [{ type: i0.Input, args: [{ isSignal: true, alias: "validationMessages", required: false }] }], defaultValidationMessages: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValidationMessages", required: false }] }], meta: [{ type: i0.Input, args: [{ isSignal: true, alias: "meta", required: false }] }], inputRef: [{ type: i0.ViewChild, args: ['inputRef', { isSignal: true }] }] } });
722
+ }], ctorParameters: () => [], propDecorators: { field: [{ type: i0.Input, args: [{ isSignal: true, alias: "field", required: true }] }], key: [{ type: i0.Input, args: [{ isSignal: true, alias: "key", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], className: [{ type: i0.Input, args: [{ isSignal: true, alias: "className", required: false }] }], tabIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabIndex", required: false }] }], props: [{ type: i0.Input, args: [{ isSignal: true, alias: "props", required: false }] }], validationMessages: [{ type: i0.Input, args: [{ isSignal: true, alias: "validationMessages", required: false }] }], defaultValidationMessages: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValidationMessages", required: false }] }], meta: [{ type: i0.Input, args: [{ isSignal: true, alias: "meta", required: false }] }] } });
768
723
 
769
724
  var bsInput_component = /*#__PURE__*/Object.freeze({
770
725
  __proto__: null,
@@ -1 +1 @@
1
- {"version":3,"file":"ng-forge-dynamic-forms-bootstrap.mjs","sources":["../../../../packages/dynamic-forms-bootstrap/src/lib/fields/button/bs-button.component.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/fields/button/index.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/utils/create-aria-described-by.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/fields/checkbox/bs-checkbox.component.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/directives/input-constraints.directive.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/fields/datepicker/bs-datepicker.component.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/models/bootstrap-config.token.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/fields/input/bs-input.component.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/fields/multi-checkbox/bs-multi-checkbox.component.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/fields/radio/bs-radio-group.component.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/fields/radio/bs-radio.component.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/fields/select/bs-select.component.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/fields/slider/bs-slider.component.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/fields/textarea/bs-textarea.component.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/fields/toggle/bs-toggle.component.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/fields/index.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/types/types.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/fields/button/bs-button.mapper.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/fields/button/bs-specific-button.mapper.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/config/bootstrap-field-config.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/types/registry-augmentation.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/providers/bootstrap-providers.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/index.ts","../../../../packages/dynamic-forms-bootstrap/src/ng-forge-dynamic-forms-bootstrap.ts"],"sourcesContent":["import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport {\n ARRAY_CONTEXT,\n ArrayItemContext,\n DynamicText,\n DynamicTextPipe,\n EventBus,\n FormEvent,\n FormEventConstructor,\n resolveTokens,\n} from '@ng-forge/dynamic-forms';\nimport { EventArgs } from '@ng-forge/dynamic-forms/integration';\nimport { BsButtonComponent, BsButtonProps } from './bs-button.type';\n\n@Component({\n selector: 'df-bs-button',\n imports: [DynamicTextPipe, AsyncPipe],\n styleUrl: '../../styles/_form-field.scss',\n host: {\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[class]': 'className()',\n '[attr.hidden]': 'hidden() || null',\n },\n template: `\n @let buttonId = key() + '-button';\n <button\n [id]=\"buttonId\"\n [type]=\"buttonType()\"\n [disabled]=\"disabled()\"\n [class]=\"buttonClasses()\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.data-testid]=\"buttonTestId()\"\n (click)=\"onClick()\"\n >\n {{ label() | dynamicText | async }}\n </button>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class BsButtonFieldComponent<TEvent extends FormEvent> implements BsButtonComponent<TEvent> {\n private readonly eventBus = inject(EventBus);\n\n private readonly arrayContext = inject(ARRAY_CONTEXT, { optional: true });\n\n readonly key = input.required<string>();\n readonly label = input.required<DynamicText>();\n readonly disabled = input<boolean>(false);\n readonly hidden = input<boolean>(false);\n readonly tabIndex = input<number>();\n readonly className = input<string>('');\n\n /** Event to dispatch on click. Optional for submit buttons (native form submit handles it). */\n readonly event = input<FormEventConstructor<TEvent>>();\n readonly eventArgs = input<EventArgs>();\n readonly props = input<BsButtonProps>();\n\n readonly eventContext = input<ArrayItemContext>();\n\n /** Resolved button type - defaults to 'button' if not specified in props */\n readonly buttonType = computed(() => this.props()?.type ?? 'button');\n\n readonly buttonTestId = computed(() => `${this.buttonType()}-${this.key()}`);\n\n readonly buttonClasses = computed(() => {\n const p = this.props();\n const variant = p?.variant || 'primary';\n const outline = p?.outline ? 'outline-' : '';\n\n return [\n 'btn',\n `btn-${outline}${variant}`,\n p?.size === 'sm' && 'btn-sm',\n p?.size === 'lg' && 'btn-lg',\n p?.block && 'w-100',\n p?.active && 'active',\n this.className(),\n ]\n .filter(Boolean)\n .join(' ');\n });\n\n /**\n * Handle button click.\n * - For submit buttons (type=\"submit\"): do nothing, native form submit handles it\n * - For other buttons: dispatch the configured event via EventBus\n */\n onClick(): void {\n // Native submit buttons let the form handle submission\n if (this.buttonType() === 'submit') {\n return;\n }\n\n // Other buttons dispatch their event (if configured)\n const event = this.event();\n if (event) {\n this.dispatchEvent(event);\n }\n }\n\n private dispatchEvent(event: FormEventConstructor<TEvent>): void {\n const args = this.eventArgs();\n\n if (args && args.length > 0) {\n // Build context from injected ARRAY_CONTEXT (with linkedSignal index) or fallback to eventContext\n const context: ArrayItemContext = this.arrayContext\n ? {\n key: this.key(),\n // Read signal to get current index (automatically updates via linkedSignal)\n index: this.arrayContext.index(),\n arrayKey: this.arrayContext.arrayKey,\n formValue: this.arrayContext.formValue,\n }\n : this.eventContext() || { key: this.key() };\n\n // Resolve tokens in event args using the provided context\n const resolvedArgs = resolveTokens(args, context);\n\n // Dispatch event with resolved args\n this.eventBus.dispatch(event, ...resolvedArgs);\n } else {\n // No args, dispatch event without arguments\n this.eventBus.dispatch(event);\n }\n }\n}\n","// Public API - types for type safety\nexport type {\n BsButtonProps,\n BsButtonField,\n BsSubmitButtonField,\n BsNextButtonField,\n BsPreviousButtonField,\n AddArrayItemButtonField,\n PrependArrayItemButtonField,\n InsertArrayItemButtonField,\n RemoveArrayItemButtonField,\n PopArrayItemButtonField,\n ShiftArrayItemButtonField,\n} from './bs-button.type';\n\n// Public API - component\nexport { default as BsButtonFieldComponent } from './bs-button.component';\n","import { computed, Signal } from '@angular/core';\nimport { ResolvedError } from '@ng-forge/dynamic-forms/integration';\n\n/**\n * Creates a signal that computes the aria-describedby value based on errors and hint state.\n * Errors take precedence over hints - when errors are displayed, the hint is hidden.\n * Only the first error is displayed (single error ID, not indexed).\n *\n * @param errorsToDisplay Signal containing the array of errors currently being displayed\n * @param errorId Signal containing the ID for the error element (single error only)\n * @param hintId Signal containing the ID for the hint element\n * @param hasHint Function that returns true if a hint is configured\n * @returns Signal containing the aria-describedby value or null\n */\nexport function createAriaDescribedBySignal(\n errorsToDisplay: Signal<ResolvedError[]>,\n errorId: Signal<string>,\n hintId: Signal<string>,\n hasHint: () => boolean,\n): Signal<string | null> {\n return computed(() => {\n if (errorsToDisplay().length > 0) {\n return errorId();\n }\n if (hasHint()) {\n return hintId();\n }\n return null;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input, viewChild } from '@angular/core';\nimport { explicitEffect } from 'ngxtension/explicit-effect';\nimport { FormField, FieldTree } from '@angular/forms/signals';\nimport { DynamicText, DynamicTextPipe, FieldMeta, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, setupMetaTracking, shouldShowErrors } from '@ng-forge/dynamic-forms/integration';\nimport { BsCheckboxComponent, BsCheckboxProps } from './bs-checkbox.type';\nimport { AsyncPipe } from '@angular/common';\nimport { createAriaDescribedBySignal } from '../../utils/create-aria-described-by';\n\n@Component({\n selector: 'df-bs-checkbox',\n imports: [FormField, DynamicTextPipe, AsyncPipe],\n styleUrl: '../../styles/_form-field.scss',\n template: `\n @let f = field(); @let checkboxId = key() + '-checkbox';\n\n <div\n class=\"form-check\"\n [class.form-switch]=\"props()?.switch\"\n [class.form-check-inline]=\"props()?.inline\"\n [class.form-check-reverse]=\"props()?.reverse\"\n [attr.hidden]=\"f().hidden() || null\"\n >\n <input\n #checkboxInput\n type=\"checkbox\"\n [formField]=\"f\"\n [id]=\"checkboxId\"\n class=\"form-check-input\"\n [class.is-invalid]=\"f().invalid() && f().touched()\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-required]=\"ariaRequired()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n />\n <label [for]=\"checkboxId\" class=\"form-check-label\">\n {{ label() | dynamicText | async }}\n </label>\n </div>\n\n @if (errorsToDisplay()[0]; as error) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId()\" role=\"alert\">{{ error.message }}</div>\n } @else if (props()?.hint; as hint) {\n <div class=\"form-text\" [id]=\"hintId()\" [attr.hidden]=\"f().hidden() || null\">{{ hint | dynamicText | async }}</div>\n }\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n `,\n ],\n host: {\n '[class]': 'className()',\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class BsCheckboxFieldComponent implements BsCheckboxComponent {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n readonly field = input.required<FieldTree<boolean>>();\n readonly key = input.required<string>();\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n readonly props = input<BsCheckboxProps>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n readonly meta = input<FieldMeta>();\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n readonly checkboxInput = viewChild<ElementRef<HTMLInputElement>>('checkboxInput');\n\n constructor() {\n setupMetaTracking(this.elementRef, this.meta, { selector: 'input[type=\"checkbox\"]' });\n\n // Handle indeterminate state\n explicitEffect([this.props, this.checkboxInput], ([props, checkboxInput]) => {\n const indeterminate = props?.indeterminate;\n const inputEl = checkboxInput?.nativeElement;\n\n if (inputEl && indeterminate !== undefined) {\n inputEl.indeterminate = indeterminate;\n }\n });\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n protected readonly ariaDescribedBy = createAriaDescribedBySignal(\n this.errorsToDisplay,\n this.errorId,\n this.hintId,\n () => !!this.props()?.hint,\n );\n}\n","import { Directive, ElementRef, inject, input } from '@angular/core';\nimport { explicitEffect } from 'ngxtension/explicit-effect';\n\n/**\n * Directive to set min, max, and step attributes on form inputs\n */\n@Directive({\n selector: '[dfBsInputConstraints]',\n})\nexport class InputConstraintsDirective {\n readonly dfMin = input<number | string | null | undefined>();\n readonly dfMax = input<number | string | null | undefined>();\n readonly dfStep = input<number | string | null | undefined>();\n\n private readonly el = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n private readonly minEffect = explicitEffect([this.dfMin], ([minValue]) => {\n const nativeElement = this.el.nativeElement;\n if (minValue !== null && minValue !== undefined) {\n nativeElement.setAttribute('min', String(minValue));\n } else {\n nativeElement.removeAttribute('min');\n }\n });\n\n private readonly maxEffect = explicitEffect([this.dfMax], ([maxValue]) => {\n const nativeElement = this.el.nativeElement;\n if (maxValue !== null && maxValue !== undefined) {\n nativeElement.setAttribute('max', String(maxValue));\n } else {\n nativeElement.removeAttribute('max');\n }\n });\n\n private readonly stepEffect = explicitEffect([this.dfStep], ([stepValue]) => {\n const nativeElement = this.el.nativeElement;\n if (stepValue !== null && stepValue !== undefined) {\n nativeElement.setAttribute('step', String(stepValue));\n } else {\n nativeElement.removeAttribute('step');\n }\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { FormField, FieldTree } from '@angular/forms/signals';\nimport { DynamicText, DynamicTextPipe, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, InputMeta, setupMetaTracking, shouldShowErrors } from '@ng-forge/dynamic-forms/integration';\nimport { BsDatepickerComponent, BsDatepickerProps } from './bs-datepicker.type';\nimport { AsyncPipe } from '@angular/common';\nimport { InputConstraintsDirective } from '../../directives/input-constraints.directive';\nimport { createAriaDescribedBySignal } from '../../utils/create-aria-described-by';\n\n@Component({\n selector: 'df-bs-datepicker',\n imports: [FormField, DynamicTextPipe, AsyncPipe, InputConstraintsDirective],\n styleUrl: '../../styles/_form-field.scss',\n template: `\n @let f = field(); @let p = props(); @let inputId = key() + '-input';\n @if (p?.floatingLabel) {\n <!-- Floating label variant -->\n <div class=\"form-floating mb-3\">\n <input\n dfBsInputConstraints\n [formField]=\"f\"\n [id]=\"inputId\"\n type=\"date\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [dfMin]=\"minAsString()\"\n [dfMax]=\"maxAsString()\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-required]=\"ariaRequired()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n class=\"form-control\"\n [class.form-control-sm]=\"p?.size === 'sm'\"\n [class.form-control-lg]=\"p?.size === 'lg'\"\n [class.is-invalid]=\"f().invalid() && f().touched()\"\n [class.is-valid]=\"f().valid() && f().touched() && p?.validFeedback\"\n />\n @if (label()) {\n <label [for]=\"inputId\">{{ label() | dynamicText | async }}</label>\n }\n @if (p?.validFeedback && f().valid() && f().touched()) {\n <div class=\"valid-feedback d-block\">\n {{ p?.validFeedback | dynamicText | async }}\n </div>\n }\n @if (errorsToDisplay()[0]; as error) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId()\" role=\"alert\">{{ error.message }}</div>\n }\n </div>\n } @else {\n <!-- Standard variant -->\n <div class=\"mb-3\">\n @if (label()) {\n <label [for]=\"inputId\" class=\"form-label\">{{ label() | dynamicText | async }}</label>\n }\n\n <input\n dfBsInputConstraints\n [formField]=\"f\"\n [id]=\"inputId\"\n type=\"date\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [dfMin]=\"minAsString()\"\n [dfMax]=\"maxAsString()\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-required]=\"ariaRequired()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n class=\"form-control\"\n [class.form-control-sm]=\"p?.size === 'sm'\"\n [class.form-control-lg]=\"p?.size === 'lg'\"\n [class.is-invalid]=\"f().invalid() && f().touched()\"\n [class.is-valid]=\"f().valid() && f().touched() && p?.validFeedback\"\n />\n\n @if (p?.validFeedback && f().valid() && f().touched()) {\n <div class=\"valid-feedback d-block\">\n {{ p?.validFeedback | dynamicText | async }}\n </div>\n }\n @if (errorsToDisplay()[0]; as error) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId()\" role=\"alert\">{{ error.message }}</div>\n } @else if (p?.hint) {\n <div class=\"form-text\" [id]=\"hintId()\">{{ p?.hint | dynamicText | async }}</div>\n }\n </div>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[class]': 'className()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n styles: [\n `\n :host([hidden]) {\n display: none !important;\n }\n `,\n ],\n})\nexport default class BsDatepickerFieldComponent implements BsDatepickerComponent {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n readonly field = input.required<FieldTree<Date | string>>();\n readonly key = input.required<string>();\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n\n readonly minDate = input<Date | string | null>(null);\n readonly maxDate = input<Date | string | null>(null);\n readonly startAt = input<Date | null>(null);\n readonly props = input<BsDatepickerProps>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n readonly meta = input<InputMeta>();\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n constructor() {\n setupMetaTracking(this.elementRef, this.meta, { selector: 'input' });\n }\n\n // Helper methods to convert Date to string for HTML attributes\n readonly minAsString = computed(() => {\n const min = this.minDate();\n return min instanceof Date ? min.toISOString().split('T')[0] : min;\n });\n\n readonly maxAsString = computed(() => {\n const max = this.maxDate();\n return max instanceof Date ? max.toISOString().split('T')[0] : max;\n });\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n protected readonly ariaDescribedBy = createAriaDescribedBySignal(\n this.errorsToDisplay,\n this.errorId,\n this.hintId,\n () => !!this.props()?.hint,\n );\n}\n","import { InjectionToken } from '@angular/core';\nimport { BootstrapConfig } from './bootstrap-config';\n\n/**\n * Injection token for Bootstrap form configuration.\n * Use this to provide global configuration for Bootstrap form fields.\n *\n * @example\n * ```typescript\n * import { provideDynamicForm } from '@ng-forge/dynamic-forms';\n * import { withBootstrapFields } from '@ng-forge/dynamic-forms-bootstrap';\n *\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideDynamicForm(\n * ...withBootstrapFields({\n * floatingLabel: true,\n * size: 'lg'\n * })\n * )\n * ]\n * };\n * ```\n */\nexport const BOOTSTRAP_CONFIG = new InjectionToken<BootstrapConfig>('BOOTSTRAP_CONFIG');\n","import { afterRenderEffect, ChangeDetectionStrategy, Component, computed, ElementRef, inject, input, viewChild } from '@angular/core';\nimport { FormField, FieldTree } from '@angular/forms/signals';\nimport { DynamicText, DynamicTextPipe, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, InputMeta, setupMetaTracking, shouldShowErrors } from '@ng-forge/dynamic-forms/integration';\nimport { BsInputComponent, BsInputProps } from './bs-input.type';\nimport { AsyncPipe } from '@angular/common';\nimport { BOOTSTRAP_CONFIG } from '../../models/bootstrap-config.token';\nimport { createAriaDescribedBySignal } from '../../utils/create-aria-described-by';\n\n@Component({\n selector: 'df-bs-input',\n imports: [FormField, DynamicTextPipe, AsyncPipe],\n styleUrl: '../../styles/_form-field.scss',\n template: `\n @let f = field(); @let p = props(); @let inputId = key() + '-input';\n @if (effectiveFloatingLabel()) {\n <!-- Floating label variant -->\n <div class=\"form-floating mb-3\">\n <input\n #inputRef\n [formField]=\"f\"\n [id]=\"inputId\"\n [type]=\"p?.type ?? 'text'\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-required]=\"ariaRequired()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n class=\"form-control\"\n [class.form-control-sm]=\"effectiveSize() === 'sm'\"\n [class.form-control-lg]=\"effectiveSize() === 'lg'\"\n [class.form-control-plaintext]=\"p?.plaintext\"\n [class.is-invalid]=\"f().invalid() && f().touched()\"\n [class.is-valid]=\"f().valid() && f().touched() && p?.validFeedback\"\n />\n @if (label()) {\n <label [for]=\"inputId\">{{ label() | dynamicText | async }}</label>\n }\n @if (p?.validFeedback && f().valid() && f().touched()) {\n <div class=\"valid-feedback d-block\">\n {{ p?.validFeedback | dynamicText | async }}\n </div>\n }\n @if (errorsToDisplay()[0]; as error) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId()\" role=\"alert\">{{ error.message }}</div>\n }\n </div>\n } @else {\n <!-- Standard variant -->\n <div class=\"mb-3\">\n @if (label()) {\n <label [for]=\"inputId\" class=\"form-label\">{{ label() | dynamicText | async }}</label>\n }\n <input\n #inputRef\n [formField]=\"f\"\n [id]=\"inputId\"\n [type]=\"p?.type ?? 'text'\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-required]=\"ariaRequired()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n class=\"form-control\"\n [class.form-control-sm]=\"effectiveSize() === 'sm'\"\n [class.form-control-lg]=\"effectiveSize() === 'lg'\"\n [class.form-control-plaintext]=\"p?.plaintext\"\n [class.is-invalid]=\"f().invalid() && f().touched()\"\n [class.is-valid]=\"f().valid() && f().touched() && p?.validFeedback\"\n />\n @if (p?.validFeedback && f().valid() && f().touched()) {\n <div class=\"valid-feedback d-block\">\n {{ p?.validFeedback | dynamicText | async }}\n </div>\n }\n @if (errorsToDisplay()[0]; as error) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId()\" role=\"alert\">{{ error.message }}</div>\n } @else if (p?.hint) {\n <div class=\"form-text\" [id]=\"hintId()\">{{ p?.hint | dynamicText | async }}</div>\n }\n </div>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[class]': 'className()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n styles: [\n `\n :host([hidden]) {\n display: none !important;\n }\n `,\n ],\n})\nexport default class BsInputFieldComponent implements BsInputComponent {\n private bootstrapConfig = inject(BOOTSTRAP_CONFIG, { optional: true });\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n readonly field = input.required<FieldTree<string>>();\n readonly key = input.required<string>();\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n readonly props = input<BsInputProps>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n readonly meta = input<InputMeta>();\n\n /**\n * Reference to the native input element.\n * Used to imperatively sync the readonly attribute since Angular Signal Forms'\n * [field] directive doesn't sync FieldState.readonly() to the DOM.\n */\n private readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('inputRef');\n\n /**\n * Computed signal that extracts the readonly state from the field.\n * Used by the effect to reactively sync the readonly attribute to the DOM.\n */\n private readonly isReadonly = computed(() => this.field()().readonly());\n\n /**\n * Workaround: Angular Signal Forms' [field] directive does NOT sync the readonly\n * attribute to the DOM. This effect imperatively sets/removes the readonly attribute\n * on the native input element whenever the readonly state changes.\n *\n * Uses afterRenderEffect to ensure DOM is ready before manipulating attributes.\n */\n private readonly syncReadonlyToDom = afterRenderEffect({\n write: () => {\n const inputRef = this.inputRef();\n const isReadonly = this.isReadonly();\n if (inputRef?.nativeElement) {\n if (isReadonly) {\n inputRef.nativeElement.setAttribute('readonly', '');\n } else {\n inputRef.nativeElement.removeAttribute('readonly');\n }\n }\n },\n });\n\n constructor() {\n setupMetaTracking(this.elementRef, this.meta, { selector: 'input' });\n }\n\n readonly effectiveSize = computed(() => this.props()?.size ?? this.bootstrapConfig?.size);\n readonly effectiveFloatingLabel = computed(() => this.props()?.floatingLabel ?? this.bootstrapConfig?.floatingLabel ?? false);\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Unique ID for the hint element, used for aria-describedby */\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n\n /** Base ID for error elements, used for aria-describedby */\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n /** aria-invalid: true when field is invalid AND touched, false otherwise */\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** aria-required: true if field is required, null otherwise (to remove attribute) */\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n /** aria-describedby: links to hint and error messages for screen readers */\n protected readonly ariaDescribedBy = createAriaDescribedBySignal(\n this.errorsToDisplay,\n this.errorId,\n this.hintId,\n () => !!this.props()?.hint,\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input, linkedSignal } from '@angular/core';\nimport { FieldTree } from '@angular/forms/signals';\nimport { DynamicText, DynamicTextPipe, FieldMeta, FieldOption, ValidationMessages, ValueType } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, isEqual, setupMetaTracking, shouldShowErrors } from '@ng-forge/dynamic-forms/integration';\nimport { explicitEffect } from 'ngxtension/explicit-effect';\nimport { BsMultiCheckboxComponent, BsMultiCheckboxProps } from './bs-multi-checkbox.type';\nimport { AsyncPipe } from '@angular/common';\nimport { createAriaDescribedBySignal } from '../../utils/create-aria-described-by';\n\n@Component({\n selector: 'df-bs-multi-checkbox',\n imports: [DynamicTextPipe, AsyncPipe],\n styleUrl: '../../styles/_form-field.scss',\n template: `\n @let f = field();\n @let checked = checkedValuesMap();\n @if (label(); as label) {\n <div class=\"form-label\">{{ label | dynamicText | async }}</div>\n }\n\n <div class=\"checkbox-group\">\n @for (option of options(); track option.value; let i = $index) {\n <div\n class=\"form-check\"\n [class.form-switch]=\"props()?.switch\"\n [class.form-check-inline]=\"props()?.inline\"\n [class.form-check-reverse]=\"props()?.reverse\"\n >\n <input\n type=\"checkbox\"\n [id]=\"key() + '_' + i\"\n [checked]=\"checked['' + option.value]\"\n [disabled]=\"f().disabled() || option.disabled\"\n (change)=\"onCheckboxChange(option, $event)\"\n class=\"form-check-input\"\n [class.is-invalid]=\"f().invalid() && f().touched()\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-required]=\"ariaRequired()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n />\n <label [for]=\"key() + '_' + i\" class=\"form-check-label\">\n {{ option.label | dynamicText | async }}\n </label>\n </div>\n }\n </div>\n\n @if (errorsToDisplay()[0]; as error) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId()\" role=\"alert\">{{ error.message }}</div>\n } @else if (props()?.hint; as hint) {\n <div class=\"form-text\" [id]=\"hintId()\">{{ hint | dynamicText | async }}</div>\n }\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n .checkbox-group {\n margin-bottom: 0.5rem;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n `,\n ],\n host: {\n '[class]': 'className() || \"\"',\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class BsMultiCheckboxFieldComponent implements BsMultiCheckboxComponent {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n readonly field = input.required<FieldTree<ValueType[]>>();\n readonly key = input.required<string>();\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n\n readonly options = input<FieldOption<ValueType>[]>([]);\n readonly props = input<BsMultiCheckboxProps>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n readonly meta = input<FieldMeta>();\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n /** Computed map of checked option values for O(1) lookup in template */\n readonly checkedValuesMap = computed(() => {\n const map: Record<string, boolean> = {};\n for (const opt of this.valueViewModel()) {\n map[String(opt.value)] = true;\n }\n return map;\n });\n\n valueViewModel = linkedSignal<FieldOption<ValueType>[]>(\n () => {\n const currentValues = this.field()().value();\n return this.options().filter((option) => currentValues.includes(option.value));\n },\n { equal: isEqual },\n );\n\n constructor() {\n setupMetaTracking(this.elementRef, this.meta, { selector: 'input[type=\"checkbox\"]', dependents: [this.options] });\n\n explicitEffect([this.valueViewModel], ([selectedOptions]: [FieldOption<ValueType>[]]) => {\n const selectedValues = selectedOptions.map((option: FieldOption<ValueType>) => option.value);\n\n if (!isEqual(selectedValues, this.field()().value())) {\n this.field()().value.set(selectedValues);\n }\n });\n\n explicitEffect([this.options], ([options]: [FieldOption<ValueType>[]]) => {\n const values = options.map((option: FieldOption<ValueType>) => option.value);\n const uniqueValues = new Set(values);\n\n if (values.length !== uniqueValues.size) {\n const duplicates = values.filter((value, index) => values.indexOf(value) !== index);\n throw new Error(`Duplicate option values detected in bs-multi-checkbox: ${duplicates.join(', ')}`);\n }\n });\n }\n\n onCheckboxChange(option: FieldOption<ValueType>, event: Event): void {\n const checked = (event.target as HTMLInputElement).checked;\n this.valueViewModel.update((currentOptions: FieldOption<ValueType>[]) => {\n if (checked) {\n return currentOptions.some((opt: FieldOption<ValueType>) => opt.value === option.value)\n ? currentOptions\n : [...currentOptions, option];\n } else {\n return currentOptions.filter((opt: FieldOption<ValueType>) => opt.value !== option.value);\n }\n });\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n protected readonly ariaDescribedBy = createAriaDescribedBySignal(\n this.errorsToDisplay,\n this.errorId,\n this.hintId,\n () => !!this.props()?.hint,\n );\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, inject, input, model } from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport { DynamicText, DynamicTextPipe, FieldMeta, FieldOption, ValueType } from '@ng-forge/dynamic-forms';\nimport { setupMetaTracking } from '@ng-forge/dynamic-forms/integration';\nimport { AsyncPipe } from '@angular/common';\n\nexport interface BsRadioGroupProps {\n /**\n * Display radio buttons inline (horizontal)\n */\n inline?: boolean;\n /**\n * Reverse the position of the radio button and label\n */\n reverse?: boolean;\n /**\n * Display as button group instead of radio buttons\n */\n buttonGroup?: boolean;\n /**\n * Button size when using button group\n */\n buttonSize?: 'sm' | 'lg';\n /**\n * Hint text to display below the radio group\n */\n hint?: DynamicText;\n}\n\n@Component({\n selector: 'df-bs-radio-group',\n imports: [DynamicTextPipe, AsyncPipe],\n template: `\n @let props = properties();\n @if (props?.buttonGroup) {\n <div class=\"btn-group\" role=\"group\" [attr.aria-label]=\"label() | dynamicText | async\">\n @for (option of options(); track option.value; let i = $index) {\n <input\n type=\"radio\"\n [name]=\"name()\"\n [value]=\"option.value\"\n [checked]=\"value() === option.value\"\n (change)=\"onRadioChange(option.value)\"\n [disabled]=\"disabled() || option.disabled || false\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n class=\"btn-check\"\n [id]=\"name() + '_' + i\"\n autocomplete=\"off\"\n />\n <label\n class=\"btn btn-outline-primary\"\n [class.btn-sm]=\"props?.buttonSize === 'sm'\"\n [class.btn-lg]=\"props?.buttonSize === 'lg'\"\n [for]=\"name() + '_' + i\"\n >\n {{ option.label | dynamicText | async }}\n </label>\n }\n </div>\n } @else {\n @for (option of options(); track option.value; let i = $index) {\n <div class=\"form-check\" [class.form-check-inline]=\"props?.inline\" [class.form-check-reverse]=\"props?.reverse\">\n <input\n type=\"radio\"\n [name]=\"name()\"\n [value]=\"option.value\"\n [checked]=\"value() === option.value\"\n (change)=\"onRadioChange(option.value)\"\n [disabled]=\"disabled() || option.disabled || false\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n class=\"form-check-input\"\n [id]=\"name() + '_' + i\"\n />\n <label class=\"form-check-label\" [for]=\"name() + '_' + i\">\n {{ option.label | dynamicText | async }}\n </label>\n </div>\n }\n }\n `,\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BsRadioGroupComponent implements FormValueControl<ValueType | undefined> {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n // Value model - FormField directive binds form value to this\n readonly value = model<ValueType | undefined>(undefined);\n\n // Optional FormValueControl properties - Field directive will bind these\n readonly disabled = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly name = input<string>('');\n\n // Component-specific inputs\n readonly label = input<DynamicText>();\n readonly options = input.required<FieldOption<ValueType>[]>();\n readonly properties = input<BsRadioGroupProps>();\n readonly meta = input<FieldMeta>();\n\n // Accessibility - this will be provided by parent component through input\n readonly ariaDescribedBy = input<string | null>(null);\n\n constructor() {\n setupMetaTracking(this.elementRef, this.meta, { selector: 'input[type=\"radio\"]', dependents: [this.options] });\n }\n\n /**\n * Handle radio button change event\n */\n protected onRadioChange(newValue: ValueType): void {\n if (!this.disabled() && !this.readonly()) {\n this.value.set(newValue);\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { FormField, FieldTree } from '@angular/forms/signals';\nimport { DynamicText, DynamicTextPipe, FieldMeta, FieldOption, ValidationMessages, ValueType } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, setupMetaTracking, shouldShowErrors } from '@ng-forge/dynamic-forms/integration';\nimport { BsRadioComponent, BsRadioProps } from './bs-radio.type';\nimport { AsyncPipe } from '@angular/common';\nimport { BsRadioGroupComponent } from './bs-radio-group.component';\nimport { createAriaDescribedBySignal } from '../../utils/create-aria-described-by';\n\n@Component({\n selector: 'df-bs-radio',\n imports: [BsRadioGroupComponent, FormField, DynamicTextPipe, AsyncPipe],\n styleUrl: '../../styles/_form-field.scss',\n template: `\n @let f = field();\n\n <div class=\"mb-3\">\n @if (label(); as label) {\n <div class=\"form-label\">{{ label | dynamicText | async }}</div>\n }\n\n <df-bs-radio-group\n [formField]=\"f\"\n [label]=\"label()\"\n [options]=\"options()\"\n [properties]=\"props()\"\n [ariaDescribedBy]=\"ariaDescribedBy()\"\n />\n\n @if (errorsToDisplay()[0]; as error) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId()\" role=\"alert\">{{ error.message }}</div>\n } @else if (props()?.hint; as hint) {\n <div class=\"form-text\" [id]=\"hintId()\">{{ hint | dynamicText | async }}</div>\n }\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[class]': 'className()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n})\nexport default class BsRadioFieldComponent implements BsRadioComponent {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n readonly field = input.required<FieldTree<ValueType>>();\n readonly key = input.required<string>();\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n\n readonly options = input<FieldOption<ValueType>[]>([]);\n readonly props = input<BsRadioProps>();\n readonly meta = input<FieldMeta>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n constructor() {\n setupMetaTracking(this.elementRef, this.meta, {\n selector: 'input[type=\"radio\"]',\n dependents: [this.options],\n });\n }\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n protected readonly ariaDescribedBy = createAriaDescribedBySignal(\n this.errorsToDisplay,\n this.errorId,\n this.hintId,\n () => !!this.props()?.hint,\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { FormField, FieldTree } from '@angular/forms/signals';\nimport { DynamicText, DynamicTextPipe, FieldMeta, FieldOption, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, setupMetaTracking, shouldShowErrors } from '@ng-forge/dynamic-forms/integration';\nimport { BsSelectComponent, BsSelectProps } from './bs-select.type';\nimport { AsyncPipe } from '@angular/common';\nimport { createAriaDescribedBySignal } from '../../utils/create-aria-described-by';\n\n@Component({\n selector: 'df-bs-select',\n imports: [FormField, DynamicTextPipe, AsyncPipe],\n styleUrl: '../../styles/_form-field.scss',\n template: `\n @let f = field(); @let selectId = key() + '-select';\n\n <div class=\"mb-3\">\n @if (label(); as label) {\n <label [for]=\"selectId\" class=\"form-label\">{{ label | dynamicText | async }}</label>\n }\n <select\n [formField]=\"f\"\n [id]=\"selectId\"\n class=\"form-select\"\n [class.form-select-sm]=\"props()?.size === 'sm'\"\n [class.form-select-lg]=\"props()?.size === 'lg'\"\n [class.is-invalid]=\"f().invalid() && f().touched()\"\n [multiple]=\"props()?.multiple || false\"\n [size]=\"props()?.htmlSize\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-required]=\"ariaRequired()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n >\n @if (placeholder(); as placeholder) {\n <option value=\"\" disabled [selected]=\"!f().value()\">{{ placeholder | dynamicText | async }}</option>\n }\n @for (option of options(); track option.value) {\n <option [value]=\"option.value\" [disabled]=\"option.disabled || false\" [selected]=\"isSelected(option.value, f().value())\">\n {{ option.label | dynamicText | async }}\n </option>\n }\n </select>\n\n @if (errorsToDisplay()[0]; as error) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId()\" role=\"alert\">{{ error.message }}</div>\n } @else if (props()?.hint; as hint) {\n <div class=\"form-text\" [id]=\"hintId()\">{{ hint | dynamicText | async }}</div>\n }\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[class]': 'className()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n styles: [\n `\n :host([hidden]) {\n display: none !important;\n }\n `,\n ],\n})\nexport default class BsSelectFieldComponent implements BsSelectComponent {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n readonly field = input.required<FieldTree<string>>();\n readonly key = input.required<string>();\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n\n readonly options = input<FieldOption<string>[]>([]);\n readonly props = input<BsSelectProps>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n readonly meta = input<FieldMeta>();\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n constructor() {\n setupMetaTracking(this.elementRef, this.meta, { selector: 'select' });\n }\n\n defaultCompare = Object.is;\n\n protected isSelected(optionValue: string, fieldValue: string | string[] | null): boolean {\n const compareWith = this.props()?.compareWith || this.defaultCompare;\n\n if (Array.isArray(fieldValue)) {\n return fieldValue.some((v) => compareWith(v, optionValue));\n }\n\n return fieldValue !== null && compareWith(fieldValue, optionValue);\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n protected readonly ariaDescribedBy = createAriaDescribedBySignal(\n this.errorsToDisplay,\n this.errorId,\n this.hintId,\n () => !!this.props()?.hint,\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { FormField, FieldTree } from '@angular/forms/signals';\nimport { DynamicText, DynamicTextPipe, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, InputMeta, setupMetaTracking, shouldShowErrors } from '@ng-forge/dynamic-forms/integration';\nimport { BsSliderComponent, BsSliderProps } from './bs-slider.type';\nimport { AsyncPipe } from '@angular/common';\nimport { InputConstraintsDirective } from '../../directives/input-constraints.directive';\nimport { createAriaDescribedBySignal } from '../../utils/create-aria-described-by';\n\n@Component({\n selector: 'df-bs-slider',\n imports: [FormField, DynamicTextPipe, AsyncPipe, InputConstraintsDirective],\n styleUrl: '../../styles/_form-field.scss',\n template: `\n @let f = field(); @let inputId = key() + '-input';\n\n <div class=\"mb-3\">\n @if (label(); as label) {\n <label [for]=\"inputId\" class=\"form-label\">\n {{ label | dynamicText | async }}\n @if (props()?.showValue) {\n <span class=\"ms-2 badge bg-secondary\"> {{ props()?.valuePrefix }}{{ f().value() }}{{ props()?.valueSuffix }} </span>\n }\n </label>\n }\n\n <input\n type=\"range\"\n dfBsInputConstraints\n [formField]=\"f\"\n [id]=\"inputId\"\n [dfMin]=\"f().min?.() ?? props()?.min ?? min()\"\n [dfMax]=\"f().max?.() ?? props()?.max ?? max()\"\n [dfStep]=\"step() ?? props()?.step ?? 1\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-required]=\"ariaRequired()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n class=\"form-range\"\n />\n\n @if (errorsToDisplay()[0]; as error) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId()\" role=\"alert\">{{ error.message }}</div>\n } @else if (props()?.hint; as hint) {\n <div class=\"form-text\" [id]=\"hintId()\">{{ hint | dynamicText | async }}</div>\n }\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n `,\n ],\n host: {\n '[class]': 'className()',\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class BsSliderFieldComponent implements BsSliderComponent {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n readonly field = input.required<FieldTree<number>>();\n readonly key = input.required<string>();\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n\n readonly min = input<number>(0);\n readonly max = input<number>(100);\n readonly step = input<number>();\n\n readonly props = input<BsSliderProps>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n readonly meta = input<InputMeta>();\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n constructor() {\n setupMetaTracking(this.elementRef, this.meta, { selector: 'input' });\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n protected readonly ariaDescribedBy = createAriaDescribedBySignal(\n this.errorsToDisplay,\n this.errorId,\n this.hintId,\n () => !!this.props()?.hint,\n );\n}\n","import { afterRenderEffect, ChangeDetectionStrategy, Component, computed, ElementRef, inject, input, viewChild } from '@angular/core';\nimport { FormField, FieldTree } from '@angular/forms/signals';\nimport { DynamicText, DynamicTextPipe, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, setupMetaTracking, shouldShowErrors, TextareaMeta } from '@ng-forge/dynamic-forms/integration';\nimport { BsTextareaComponent, BsTextareaProps } from './bs-textarea.type';\nimport { AsyncPipe } from '@angular/common';\nimport { createAriaDescribedBySignal } from '../../utils/create-aria-described-by';\n\n@Component({\n selector: 'df-bs-textarea',\n imports: [FormField, DynamicTextPipe, AsyncPipe],\n styleUrl: '../../styles/_form-field.scss',\n template: `\n @let f = field(); @let p = props(); @let textareaId = key() + '-textarea';\n @if (p?.floatingLabel) {\n <!-- Floating label variant -->\n <div class=\"form-floating mb-3\">\n <textarea\n #textareaRef\n [formField]=\"f\"\n [id]=\"textareaId\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-required]=\"ariaRequired()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n class=\"form-control\"\n [class.form-control-sm]=\"p?.size === 'sm'\"\n [class.form-control-lg]=\"p?.size === 'lg'\"\n [class.is-invalid]=\"f().invalid() && f().touched()\"\n [class.is-valid]=\"f().valid() && f().touched() && p?.validFeedback\"\n ></textarea>\n\n @if (label()) {\n <label [for]=\"textareaId\">{{ label() | dynamicText | async }}</label>\n }\n @if (p?.validFeedback && f().valid() && f().touched()) {\n <div class=\"valid-feedback d-block\">\n {{ p?.validFeedback | dynamicText | async }}\n </div>\n }\n @if (errorsToDisplay()[0]; as error) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId()\" role=\"alert\">{{ error.message }}</div>\n } @else if (p?.hint) {\n <div class=\"form-text\" [id]=\"hintId()\">{{ p?.hint | dynamicText | async }}</div>\n }\n </div>\n } @else {\n <!-- Standard variant -->\n <div class=\"mb-3\">\n @if (label()) {\n <label [for]=\"textareaId\" class=\"form-label\">{{ label() | dynamicText | async }}</label>\n }\n\n <textarea\n #textareaRef\n [formField]=\"f\"\n [id]=\"textareaId\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-required]=\"ariaRequired()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n class=\"form-control\"\n [class.form-control-sm]=\"p?.size === 'sm'\"\n [class.form-control-lg]=\"p?.size === 'lg'\"\n [class.is-invalid]=\"f().invalid() && f().touched()\"\n [class.is-valid]=\"f().valid() && f().touched() && p?.validFeedback\"\n ></textarea>\n\n @if (p?.validFeedback && f().valid() && f().touched()) {\n <div class=\"valid-feedback d-block\">\n {{ p?.validFeedback | dynamicText | async }}\n </div>\n }\n @if (errorsToDisplay()[0]; as error) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId()\" role=\"alert\">{{ error.message }}</div>\n } @else if (p?.hint) {\n <div class=\"form-text\" [id]=\"hintId()\">{{ p?.hint | dynamicText | async }}</div>\n }\n </div>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[class]': 'className()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n styles: [\n `\n :host([hidden]) {\n display: none !important;\n }\n `,\n ],\n})\nexport default class BsTextareaFieldComponent implements BsTextareaComponent {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n readonly field = input.required<FieldTree<string>>();\n readonly key = input.required<string>();\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n readonly props = input<BsTextareaProps>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n readonly meta = input<TextareaMeta>();\n\n /**\n * Reference to the native textarea element.\n * Used to imperatively sync the readonly attribute since Angular Signal Forms'\n * [field] directive doesn't sync FieldState.readonly() to the DOM.\n */\n private readonly textareaRef = viewChild<ElementRef<HTMLTextAreaElement>>('textareaRef');\n\n /**\n * Computed signal that extracts the readonly state from the field.\n */\n private readonly isReadonly = computed(() => this.field()().readonly());\n\n /**\n * Workaround: Angular Signal Forms' [field] directive does NOT sync the readonly\n * attribute to the DOM. This effect imperatively sets/removes the readonly attribute\n * on the native textarea element whenever the readonly state changes.\n */\n private readonly syncReadonlyToDom = afterRenderEffect({\n write: () => {\n const textareaRef = this.textareaRef();\n const isReadonly = this.isReadonly();\n if (textareaRef?.nativeElement) {\n if (isReadonly) {\n textareaRef.nativeElement.setAttribute('readonly', '');\n } else {\n textareaRef.nativeElement.removeAttribute('readonly');\n }\n }\n },\n });\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n constructor() {\n setupMetaTracking(this.elementRef, this.meta, { selector: 'textarea' });\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n protected readonly ariaDescribedBy = createAriaDescribedBySignal(\n this.errorsToDisplay,\n this.errorId,\n this.hintId,\n () => !!this.props()?.hint,\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { FormField, FieldTree } from '@angular/forms/signals';\nimport { DynamicText, DynamicTextPipe, FieldMeta, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, setupMetaTracking, shouldShowErrors } from '@ng-forge/dynamic-forms/integration';\nimport { BsToggleComponent, BsToggleProps } from './bs-toggle.type';\nimport { AsyncPipe } from '@angular/common';\nimport { createAriaDescribedBySignal } from '../../utils/create-aria-described-by';\n\n@Component({\n selector: 'df-bs-toggle',\n imports: [FormField, DynamicTextPipe, AsyncPipe],\n styleUrl: '../../styles/_form-field.scss',\n template: `\n @let f = field(); @let inputId = key() + '-input';\n\n <div\n class=\"form-check form-switch\"\n [class.form-check-inline]=\"props()?.inline\"\n [class.form-check-reverse]=\"props()?.reverse\"\n [class.form-switch-sm]=\"props()?.size === 'sm'\"\n [class.form-switch-lg]=\"props()?.size === 'lg'\"\n [attr.hidden]=\"f().hidden() || null\"\n >\n <input\n type=\"checkbox\"\n [formField]=\"f\"\n [id]=\"inputId\"\n class=\"form-check-input\"\n [class.is-invalid]=\"f().invalid() && f().touched()\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-required]=\"ariaRequired()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n />\n <label [for]=\"inputId\" class=\"form-check-label\">\n {{ label() | dynamicText | async }}\n </label>\n </div>\n\n @if (errorsToDisplay()[0]; as error) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId()\" role=\"alert\">{{ error.message }}</div>\n } @else if (props()?.hint; as hint) {\n <div class=\"form-text\" [id]=\"hintId()\" [attr.hidden]=\"f().hidden() || null\">{{ hint | dynamicText | async }}</div>\n }\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n\n /* Custom size variants for switches */\n .form-switch-sm .form-check-input {\n width: 1.75rem;\n height: 1rem;\n font-size: 0.875rem;\n }\n\n .form-switch-lg .form-check-input {\n width: 3rem;\n height: 1.75rem;\n font-size: 1.125rem;\n }\n `,\n ],\n host: {\n '[class]': 'className()',\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class BsToggleFieldComponent implements BsToggleComponent {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n readonly field = input.required<FieldTree<boolean>>();\n readonly key = input.required<string>();\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n readonly props = input<BsToggleProps>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n readonly meta = input<FieldMeta>();\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n constructor() {\n setupMetaTracking(this.elementRef, this.meta, { selector: 'input[type=\"checkbox\"]' });\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n protected readonly ariaDescribedBy = createAriaDescribedBySignal(\n this.errorsToDisplay,\n this.errorId,\n this.hintId,\n () => !!this.props()?.hint,\n );\n}\n","// Public exports for bootstrap field components and types\n\nexport { BsButtonFieldComponent } from './button';\nexport type {\n BsButtonProps,\n BsButtonField,\n BsSubmitButtonField,\n BsNextButtonField,\n BsPreviousButtonField,\n AddArrayItemButtonField,\n PrependArrayItemButtonField,\n InsertArrayItemButtonField,\n RemoveArrayItemButtonField,\n PopArrayItemButtonField,\n ShiftArrayItemButtonField,\n} from './button';\n\nexport { BsCheckboxFieldComponent } from './checkbox';\nexport type { BsCheckboxProps, BsCheckboxField, BsCheckboxComponent } from './checkbox';\n\nexport { BsDatepickerFieldComponent } from './datepicker';\nexport type { BsDatepickerProps, BsDatepickerField, BsDatepickerComponent } from './datepicker';\n\nexport { BsInputFieldComponent } from './input';\nexport type { BsInputProps, BsInputField, BsInputComponent } from './input';\n\nexport { BsMultiCheckboxFieldComponent } from './multi-checkbox';\nexport type { BsMultiCheckboxProps, BsMultiCheckboxField, BsMultiCheckboxComponent } from './multi-checkbox';\n\nexport { BsRadioFieldComponent } from './radio';\nexport type { BsRadioProps, BsRadioField, BsRadioComponent } from './radio';\n\nexport { BsSelectFieldComponent } from './select';\nexport type { BsSelectProps, BsSelectField, BsSelectComponent } from './select';\n\nexport { BsSliderFieldComponent } from './slider';\nexport type { BsSliderProps, BsSliderField, BsSliderComponent } from './slider';\n\nexport { BsTextareaFieldComponent } from './textarea';\nexport type { BsTextareaProps, BsTextareaField, BsTextareaComponent } from './textarea';\n\nexport { BsToggleFieldComponent } from './toggle';\nexport type { BsToggleProps, BsToggleField, BsToggleComponent } from './toggle';\n","/**\n * Bootstrap field type constants\n * Based on available field components in the /fields folder\n */\nexport const BsField = {\n Input: 'input',\n Select: 'select',\n Checkbox: 'checkbox',\n Button: 'button',\n Submit: 'submit',\n Next: 'next',\n Previous: 'previous',\n AddArrayItem: 'addArrayItem',\n PrependArrayItem: 'prependArrayItem',\n InsertArrayItem: 'insertArrayItem',\n RemoveArrayItem: 'removeArrayItem',\n PopArrayItem: 'popArrayItem',\n ShiftArrayItem: 'shiftArrayItem',\n Textarea: 'textarea',\n Radio: 'radio',\n MultiCheckbox: 'multi-checkbox',\n Datepicker: 'datepicker',\n Slider: 'slider',\n Toggle: 'toggle',\n} as const;\n\nexport type BsFieldType = (typeof BsField)[keyof typeof BsField];\n","import { computed, inject, isSignal, Signal } from '@angular/core';\nimport { ARRAY_CONTEXT, buildBaseInputs, DEFAULT_PROPS, FieldDef } from '@ng-forge/dynamic-forms';\n\n/**\n * Generic button mapper for custom events or basic buttons.\n * For specific button types (submit, next, prev, add/remove array items),\n * use the dedicated field types and their specific mappers.\n *\n * Supports template property for array events (AppendArrayItemEvent, PrependArrayItemEvent, InsertArrayItemEvent)\n * which enables the $template token in eventArgs.\n *\n * @param fieldDef The button field definition\n * @returns Signal containing Record of input names to values for ngComponentOutlet\n */\nexport function buttonFieldMapper(fieldDef: FieldDef<Record<string, unknown>>): Signal<Record<string, unknown>> {\n const defaultProps = inject(DEFAULT_PROPS);\n const arrayContext = inject(ARRAY_CONTEXT, { optional: true });\n\n return computed(() => {\n const baseInputs = buildBaseInputs(fieldDef, defaultProps());\n\n const inputs: Record<string, unknown> = {\n ...baseInputs,\n };\n\n if (fieldDef.disabled !== undefined) {\n inputs['disabled'] = fieldDef.disabled;\n }\n\n if (fieldDef.hidden !== undefined) {\n inputs['hidden'] = fieldDef.hidden;\n }\n\n // Add event binding for button events\n if ('event' in fieldDef && fieldDef.event !== undefined) {\n inputs['event'] = fieldDef.event;\n }\n\n // Add eventArgs binding if provided\n if ('eventArgs' in fieldDef && fieldDef.eventArgs !== undefined) {\n inputs['eventArgs'] = fieldDef.eventArgs;\n }\n\n // Add eventContext for token resolution (supports $template, $arrayKey, $index, etc.)\n const template = 'template' in fieldDef ? fieldDef.template : undefined;\n if (template || arrayContext) {\n // Read signal value if index is a signal (supports differential updates)\n const getIndex = () => {\n if (!arrayContext) return -1;\n return isSignal(arrayContext.index) ? arrayContext.index() : arrayContext.index;\n };\n\n inputs['eventContext'] = {\n key: fieldDef.key,\n index: getIndex(),\n arrayKey: arrayContext?.arrayKey ?? '',\n formValue: arrayContext?.formValue ?? {},\n template,\n };\n }\n\n return inputs;\n });\n}\n","/**\n * Navigation button mappers for Bootstrap - re-exported from integration package.\n *\n * These mappers handle submit, next, and previous buttons with proper\n * disabled state resolution based on form validity and options.\n */\nexport { submitButtonFieldMapper, nextButtonFieldMapper, previousButtonFieldMapper } from '@ng-forge/dynamic-forms/integration';\n","import { FieldTypeDefinition } from '@ng-forge/dynamic-forms';\nimport {\n addArrayItemButtonMapper,\n checkboxFieldMapper,\n datepickerFieldMapper,\n insertArrayItemButtonMapper,\n optionsFieldMapper,\n popArrayItemButtonMapper,\n prependArrayItemButtonMapper,\n removeArrayItemButtonMapper,\n shiftArrayItemButtonMapper,\n valueFieldMapper,\n} from '@ng-forge/dynamic-forms/integration';\nimport { BsField } from '../types/types';\nimport { buttonFieldMapper } from '../fields/button/bs-button.mapper';\nimport { nextButtonFieldMapper, previousButtonFieldMapper, submitButtonFieldMapper } from '../fields/button/bs-specific-button.mapper';\n\nconst BUTTON_FIELD_TYPES_BASE = {\n renderReadyWhen: [] as string[],\n};\n\nexport const BOOTSTRAP_FIELD_TYPES: FieldTypeDefinition[] = [\n {\n name: BsField.Input,\n loadComponent: () => import('../fields/input/bs-input.component'),\n mapper: valueFieldMapper,\n propsToMeta: ['type'],\n scope: ['text-input', 'numeric'],\n },\n {\n name: BsField.Select,\n loadComponent: () => import('../fields/select/bs-select.component'),\n mapper: optionsFieldMapper,\n scope: 'single-select',\n },\n {\n name: BsField.Checkbox,\n loadComponent: () => import('../fields/checkbox/bs-checkbox.component'),\n mapper: checkboxFieldMapper,\n scope: 'boolean',\n },\n {\n name: BsField.Button,\n loadComponent: () => import('../fields/button/bs-button.component'),\n mapper: buttonFieldMapper,\n valueHandling: 'exclude',\n ...BUTTON_FIELD_TYPES_BASE,\n },\n {\n name: BsField.Submit,\n loadComponent: () => import('../fields/button/bs-button.component'),\n mapper: submitButtonFieldMapper,\n valueHandling: 'exclude',\n ...BUTTON_FIELD_TYPES_BASE,\n },\n {\n name: BsField.Next,\n loadComponent: () => import('../fields/button/bs-button.component'),\n mapper: nextButtonFieldMapper,\n valueHandling: 'exclude',\n ...BUTTON_FIELD_TYPES_BASE,\n },\n {\n name: BsField.Previous,\n loadComponent: () => import('../fields/button/bs-button.component'),\n mapper: previousButtonFieldMapper,\n valueHandling: 'exclude',\n ...BUTTON_FIELD_TYPES_BASE,\n },\n {\n name: BsField.AddArrayItem,\n loadComponent: () => import('../fields/button/bs-button.component'),\n mapper: addArrayItemButtonMapper,\n valueHandling: 'exclude',\n ...BUTTON_FIELD_TYPES_BASE,\n },\n {\n name: BsField.PrependArrayItem,\n loadComponent: () => import('../fields/button/bs-button.component'),\n mapper: prependArrayItemButtonMapper,\n valueHandling: 'exclude',\n ...BUTTON_FIELD_TYPES_BASE,\n },\n {\n name: BsField.InsertArrayItem,\n loadComponent: () => import('../fields/button/bs-button.component'),\n mapper: insertArrayItemButtonMapper,\n valueHandling: 'exclude',\n ...BUTTON_FIELD_TYPES_BASE,\n },\n {\n name: BsField.RemoveArrayItem,\n loadComponent: () => import('../fields/button/bs-button.component'),\n mapper: removeArrayItemButtonMapper,\n valueHandling: 'exclude',\n ...BUTTON_FIELD_TYPES_BASE,\n },\n {\n name: BsField.PopArrayItem,\n loadComponent: () => import('../fields/button/bs-button.component'),\n mapper: popArrayItemButtonMapper,\n valueHandling: 'exclude',\n ...BUTTON_FIELD_TYPES_BASE,\n },\n {\n name: BsField.ShiftArrayItem,\n loadComponent: () => import('../fields/button/bs-button.component'),\n mapper: shiftArrayItemButtonMapper,\n valueHandling: 'exclude',\n ...BUTTON_FIELD_TYPES_BASE,\n },\n {\n name: BsField.Textarea,\n loadComponent: () => import('../fields/textarea/bs-textarea.component'),\n mapper: valueFieldMapper,\n propsToMeta: ['rows'],\n scope: 'text-input',\n },\n {\n name: BsField.Radio,\n loadComponent: () => import('../fields/radio/bs-radio.component'),\n mapper: optionsFieldMapper,\n scope: 'single-select',\n },\n {\n name: BsField.MultiCheckbox,\n loadComponent: () => import('../fields/multi-checkbox/bs-multi-checkbox.component'),\n mapper: optionsFieldMapper,\n scope: 'multi-select',\n },\n {\n name: BsField.Datepicker,\n loadComponent: () => import('../fields/datepicker/bs-datepicker.component'),\n mapper: datepickerFieldMapper,\n scope: 'date',\n },\n {\n name: BsField.Slider,\n loadComponent: () => import('../fields/slider/bs-slider.component'),\n mapper: valueFieldMapper,\n scope: 'numeric',\n },\n {\n name: BsField.Toggle,\n loadComponent: () => import('../fields/toggle/bs-toggle.component'),\n mapper: checkboxFieldMapper,\n scope: 'boolean',\n },\n];\n","/**\n * Module augmentation for @ng-forge/dynamic-form\n * This file augments the FieldRegistryLeaves interface to include\n * all Bootstrap field types provided by this library.\n */\n\nimport type { FormEvent } from '@ng-forge/dynamic-forms';\nimport type {\n AddArrayItemButtonField,\n BsButtonField,\n BsCheckboxField,\n BsDatepickerField,\n BsInputField,\n BsMultiCheckboxField,\n BsNextButtonField,\n BsPreviousButtonField,\n BsRadioField,\n BsSelectField,\n BsSliderField,\n BsSubmitButtonField,\n BsTextareaField,\n BsToggleField,\n InsertArrayItemButtonField,\n PopArrayItemButtonField,\n PrependArrayItemButtonField,\n RemoveArrayItemButtonField,\n ShiftArrayItemButtonField,\n} from '../fields';\n\ndeclare module '@ng-forge/dynamic-forms' {\n interface FieldRegistryLeaves {\n input: BsInputField;\n select: BsSelectField<unknown>;\n checkbox: BsCheckboxField;\n button: BsButtonField<FormEvent>;\n submit: BsSubmitButtonField;\n next: BsNextButtonField;\n previous: BsPreviousButtonField;\n addArrayItem: AddArrayItemButtonField;\n prependArrayItem: PrependArrayItemButtonField;\n insertArrayItem: InsertArrayItemButtonField;\n removeArrayItem: RemoveArrayItemButtonField;\n popArrayItem: PopArrayItemButtonField;\n shiftArrayItem: ShiftArrayItemButtonField;\n textarea: BsTextareaField;\n radio: BsRadioField<unknown>;\n 'multi-checkbox': BsMultiCheckboxField<unknown>;\n datepicker: BsDatepickerField;\n slider: BsSliderField;\n toggle: BsToggleField;\n }\n}\n","import type { Provider } from '@angular/core';\nimport type { FieldTypeDefinition } from '@ng-forge/dynamic-forms';\nimport { BOOTSTRAP_FIELD_TYPES } from '../config/bootstrap-field-config';\nimport { BootstrapConfig } from '../models/bootstrap-config';\nimport { BOOTSTRAP_CONFIG } from '../models/bootstrap-config.token';\n\n/**\n * Field type definitions for Bootstrap components.\n */\nexport type BootstrapFieldTypes = FieldTypeDefinition[];\n\ntype BootstrapConfigFeature = {\n ɵkind: 'bootstrap-config';\n ɵproviders: Provider[];\n};\n\ntype BootstrapFieldsWithConfig = [...BootstrapFieldTypes, BootstrapConfigFeature];\n\n/**\n * Provides Bootstrap field types for the dynamic form system.\n * Use with provideDynamicForm(...withBootstrapFields())\n *\n * @param config - Optional global configuration for Bootstrap form fields\n *\n * @example\n * ```typescript\n * // Application-level setup\n * import { ApplicationConfig } from '@angular/core';\n * import { provideDynamicForm } from '@ng-forge/dynamic-form';\n * import { withBootstrapFields } from '@ng-forge/dynamic-form-bootstrap';\n *\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideDynamicForm(...withBootstrapFields())\n * ]\n * };\n * ```\n *\n * @example\n * ```typescript\n * // With global configuration\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideDynamicForm(\n * ...withBootstrapFields({\n * floatingLabel: true,\n * size: 'lg'\n * })\n * )\n * ]\n * };\n * ```\n *\n * @returns Array of field type definitions and optionally a config feature\n */\nexport function withBootstrapFields(): BootstrapFieldTypes;\nexport function withBootstrapFields(config: BootstrapConfig): BootstrapFieldsWithConfig;\nexport function withBootstrapFields(config: BootstrapConfig | undefined): BootstrapFieldTypes | BootstrapFieldsWithConfig;\nexport function withBootstrapFields(config?: BootstrapConfig): BootstrapFieldTypes | BootstrapFieldsWithConfig {\n if (!config) {\n return BOOTSTRAP_FIELD_TYPES;\n }\n\n const fieldsWithConfig = [\n ...BOOTSTRAP_FIELD_TYPES,\n {\n ɵkind: 'bootstrap-config',\n ɵproviders: [{ provide: BOOTSTRAP_CONFIG, useValue: config }],\n } satisfies BootstrapConfigFeature,\n ];\n\n // Safe: this preserves all bootstrap field definitions and appends exactly one config feature.\n return fieldsWithConfig as BootstrapFieldsWithConfig;\n}\n","// Field components\nexport {\n BsButtonFieldComponent,\n BsCheckboxFieldComponent,\n BsDatepickerFieldComponent,\n BsInputFieldComponent,\n BsMultiCheckboxFieldComponent,\n BsRadioFieldComponent,\n BsSelectFieldComponent,\n BsSliderFieldComponent,\n BsTextareaFieldComponent,\n BsToggleFieldComponent,\n} from './fields';\nexport type {\n BsButtonProps,\n BsButtonField,\n BsSubmitButtonField,\n BsNextButtonField,\n BsPreviousButtonField,\n AddArrayItemButtonField,\n PrependArrayItemButtonField,\n InsertArrayItemButtonField,\n RemoveArrayItemButtonField,\n PopArrayItemButtonField,\n ShiftArrayItemButtonField,\n BsCheckboxProps,\n BsCheckboxField,\n BsCheckboxComponent,\n BsDatepickerProps,\n BsDatepickerField,\n BsDatepickerComponent,\n BsInputProps,\n BsInputField,\n BsInputComponent,\n BsMultiCheckboxProps,\n BsMultiCheckboxField,\n BsMultiCheckboxComponent,\n BsRadioProps,\n BsRadioField,\n BsRadioComponent,\n BsSelectProps,\n BsSelectField,\n BsSelectComponent,\n BsSliderProps,\n BsSliderField,\n BsSliderComponent,\n BsTextareaProps,\n BsTextareaField,\n BsTextareaComponent,\n BsToggleProps,\n BsToggleField,\n BsToggleComponent,\n} from './fields';\n\n// Configuration\nexport { BOOTSTRAP_FIELD_TYPES } from './config/bootstrap-field-config';\nexport type { BootstrapConfig } from './models';\nexport { BOOTSTRAP_CONFIG } from './models';\n\n// Types and constants\nexport { BsField, type BsFieldType } from './types/types';\nexport type { BsFormProps, BsFormConfig } from './types/form-config';\n\n// Module augmentation for global types\nimport './types/registry-augmentation';\n\n// Providers\nexport { withBootstrapFields } from './providers/bootstrap-providers';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-forge-dynamic-forms-bootstrap.mjs","sources":["../../../../packages/dynamic-forms-bootstrap/src/lib/fields/button/bs-button.component.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/fields/button/index.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/utils/create-aria-described-by.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/fields/checkbox/bs-checkbox.component.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/directives/input-constraints.directive.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/fields/datepicker/bs-datepicker.component.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/models/bootstrap-config.token.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/fields/input/bs-input.component.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/fields/multi-checkbox/bs-multi-checkbox.component.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/fields/radio/bs-radio-group.component.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/fields/radio/bs-radio.component.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/fields/select/bs-select.component.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/fields/slider/bs-slider.component.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/fields/textarea/bs-textarea.component.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/fields/toggle/bs-toggle.component.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/fields/index.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/types/types.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/fields/button/bs-button.mapper.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/fields/button/bs-specific-button.mapper.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/config/bootstrap-field-config.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/types/registry-augmentation.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/providers/bootstrap-providers.ts","../../../../packages/dynamic-forms-bootstrap/src/lib/index.ts","../../../../packages/dynamic-forms-bootstrap/src/ng-forge-dynamic-forms-bootstrap.ts"],"sourcesContent":["import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport {\n ARRAY_CONTEXT,\n ArrayItemContext,\n DynamicText,\n DynamicTextPipe,\n EventBus,\n FormEvent,\n FormEventConstructor,\n resolveTokens,\n} from '@ng-forge/dynamic-forms';\nimport { EventArgs } from '@ng-forge/dynamic-forms/integration';\nimport { BsButtonComponent, BsButtonProps } from './bs-button.type';\n\n@Component({\n selector: 'df-bs-button',\n imports: [DynamicTextPipe, AsyncPipe],\n styleUrl: '../../styles/_form-field.scss',\n host: {\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[class]': 'className()',\n '[attr.hidden]': 'hidden() || null',\n },\n template: `\n @let buttonId = key() + '-button';\n <button\n [id]=\"buttonId\"\n [type]=\"buttonType()\"\n [disabled]=\"disabled()\"\n [class]=\"buttonClasses()\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.data-testid]=\"buttonTestId()\"\n (click)=\"onClick()\"\n >\n {{ label() | dynamicText | async }}\n </button>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class BsButtonFieldComponent<TEvent extends FormEvent> implements BsButtonComponent<TEvent> {\n private readonly eventBus = inject(EventBus);\n\n private readonly arrayContext = inject(ARRAY_CONTEXT, { optional: true });\n\n readonly key = input.required<string>();\n readonly label = input.required<DynamicText>();\n readonly disabled = input<boolean>(false);\n readonly hidden = input<boolean>(false);\n readonly tabIndex = input<number>();\n readonly className = input<string>('');\n\n /** Event to dispatch on click. Optional for submit buttons (native form submit handles it). */\n readonly event = input<FormEventConstructor<TEvent>>();\n readonly eventArgs = input<EventArgs>();\n readonly props = input<BsButtonProps>();\n\n readonly eventContext = input<ArrayItemContext>();\n\n /** Resolved button type - defaults to 'button' if not specified in props */\n readonly buttonType = computed(() => this.props()?.type ?? 'button');\n\n readonly buttonTestId = computed(() => `${this.buttonType()}-${this.key()}`);\n\n readonly buttonClasses = computed(() => {\n const p = this.props();\n const variant = p?.variant || 'primary';\n const outline = p?.outline ? 'outline-' : '';\n\n return [\n 'btn',\n `btn-${outline}${variant}`,\n p?.size === 'sm' && 'btn-sm',\n p?.size === 'lg' && 'btn-lg',\n p?.block && 'w-100',\n p?.active && 'active',\n this.className(),\n ]\n .filter(Boolean)\n .join(' ');\n });\n\n /**\n * Handle button click.\n * - For submit buttons (type=\"submit\"): do nothing, native form submit handles it\n * - For other buttons: dispatch the configured event via EventBus\n */\n onClick(): void {\n // Native submit buttons let the form handle submission\n if (this.buttonType() === 'submit') {\n return;\n }\n\n // Other buttons dispatch their event (if configured)\n const event = this.event();\n if (event) {\n this.dispatchEvent(event);\n }\n }\n\n private dispatchEvent(event: FormEventConstructor<TEvent>): void {\n const args = this.eventArgs();\n\n if (args && args.length > 0) {\n // Build context from injected ARRAY_CONTEXT (with linkedSignal index) or fallback to eventContext\n const context: ArrayItemContext = this.arrayContext\n ? {\n key: this.key(),\n // Read signal to get current index (automatically updates via linkedSignal)\n index: this.arrayContext.index(),\n arrayKey: this.arrayContext.arrayKey,\n formValue: this.arrayContext.formValue,\n }\n : this.eventContext() || { key: this.key() };\n\n // Resolve tokens in event args using the provided context\n const resolvedArgs = resolveTokens(args, context);\n\n // Dispatch event with resolved args\n this.eventBus.dispatch(event, ...resolvedArgs);\n } else {\n // No args, dispatch event without arguments\n this.eventBus.dispatch(event);\n }\n }\n}\n","// Public API - types for type safety\nexport type {\n BsButtonProps,\n BsButtonField,\n BsSubmitButtonField,\n BsNextButtonField,\n BsPreviousButtonField,\n AddArrayItemButtonField,\n PrependArrayItemButtonField,\n InsertArrayItemButtonField,\n RemoveArrayItemButtonField,\n PopArrayItemButtonField,\n ShiftArrayItemButtonField,\n} from './bs-button.type';\n\n// Public API - component\nexport { default as BsButtonFieldComponent } from './bs-button.component';\n","import { computed, Signal } from '@angular/core';\nimport { ResolvedError } from '@ng-forge/dynamic-forms/integration';\n\n/**\n * Creates a signal that computes the aria-describedby value based on errors and hint state.\n * Errors take precedence over hints - when errors are displayed, the hint is hidden.\n * Only the first error is displayed (single error ID, not indexed).\n *\n * @param errorsToDisplay Signal containing the array of errors currently being displayed\n * @param errorId Signal containing the ID for the error element (single error only)\n * @param hintId Signal containing the ID for the hint element\n * @param hasHint Function that returns true if a hint is configured\n * @returns Signal containing the aria-describedby value or null\n */\nexport function createAriaDescribedBySignal(\n errorsToDisplay: Signal<ResolvedError[]>,\n errorId: Signal<string>,\n hintId: Signal<string>,\n hasHint: () => boolean,\n): Signal<string | null> {\n return computed(() => {\n if (errorsToDisplay().length > 0) {\n return errorId();\n }\n if (hasHint()) {\n return hintId();\n }\n return null;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { FormField, FieldTree } from '@angular/forms/signals';\nimport { DynamicText, DynamicTextPipe, FieldMeta, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, setupMetaTracking, shouldShowErrors } from '@ng-forge/dynamic-forms/integration';\nimport { BsCheckboxComponent, BsCheckboxProps } from './bs-checkbox.type';\nimport { AsyncPipe } from '@angular/common';\nimport { createAriaDescribedBySignal } from '../../utils/create-aria-described-by';\n\n@Component({\n selector: 'df-bs-checkbox',\n imports: [FormField, DynamicTextPipe, AsyncPipe],\n styleUrl: '../../styles/_form-field.scss',\n template: `\n @let f = field(); @let checkboxId = key() + '-checkbox';\n\n <div\n class=\"form-check\"\n [class.form-switch]=\"props()?.switch\"\n [class.form-check-inline]=\"props()?.inline\"\n [class.form-check-reverse]=\"props()?.reverse\"\n [attr.hidden]=\"f().hidden() || null\"\n >\n <input\n type=\"checkbox\"\n [formField]=\"f\"\n [id]=\"checkboxId\"\n [indeterminate]=\"props()?.indeterminate ?? false\"\n class=\"form-check-input\"\n [class.is-invalid]=\"f().invalid() && f().touched()\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-required]=\"ariaRequired()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n />\n <label [for]=\"checkboxId\" class=\"form-check-label\">\n {{ label() | dynamicText | async }}\n </label>\n </div>\n\n @if (errorsToDisplay()[0]; as error) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId()\" role=\"alert\">{{ error.message }}</div>\n } @else if (props()?.hint; as hint) {\n <div class=\"form-text\" [id]=\"hintId()\" [attr.hidden]=\"f().hidden() || null\">{{ hint | dynamicText | async }}</div>\n }\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n `,\n ],\n host: {\n '[class]': 'className()',\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class BsCheckboxFieldComponent implements BsCheckboxComponent {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n readonly field = input.required<FieldTree<boolean>>();\n readonly key = input.required<string>();\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n readonly props = input<BsCheckboxProps>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n readonly meta = input<FieldMeta>();\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n constructor() {\n setupMetaTracking(this.elementRef, this.meta, { selector: 'input[type=\"checkbox\"]' });\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n protected readonly ariaDescribedBy = createAriaDescribedBySignal(\n this.errorsToDisplay,\n this.errorId,\n this.hintId,\n () => !!this.props()?.hint,\n );\n}\n","import { Directive, ElementRef, inject, input } from '@angular/core';\nimport { explicitEffect } from 'ngxtension/explicit-effect';\n\n/**\n * Directive to set min, max, and step attributes on form inputs\n */\n@Directive({\n selector: '[dfBsInputConstraints]',\n})\nexport class InputConstraintsDirective {\n readonly dfMin = input<number | string | null | undefined>();\n readonly dfMax = input<number | string | null | undefined>();\n readonly dfStep = input<number | string | null | undefined>();\n\n private readonly el = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n private readonly minEffect = explicitEffect([this.dfMin], ([minValue]) => {\n const nativeElement = this.el.nativeElement;\n if (minValue !== null && minValue !== undefined) {\n nativeElement.setAttribute('min', String(minValue));\n } else {\n nativeElement.removeAttribute('min');\n }\n });\n\n private readonly maxEffect = explicitEffect([this.dfMax], ([maxValue]) => {\n const nativeElement = this.el.nativeElement;\n if (maxValue !== null && maxValue !== undefined) {\n nativeElement.setAttribute('max', String(maxValue));\n } else {\n nativeElement.removeAttribute('max');\n }\n });\n\n private readonly stepEffect = explicitEffect([this.dfStep], ([stepValue]) => {\n const nativeElement = this.el.nativeElement;\n if (stepValue !== null && stepValue !== undefined) {\n nativeElement.setAttribute('step', String(stepValue));\n } else {\n nativeElement.removeAttribute('step');\n }\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { FormField, FieldTree } from '@angular/forms/signals';\nimport { DynamicText, DynamicTextPipe, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, InputMeta, setupMetaTracking, shouldShowErrors } from '@ng-forge/dynamic-forms/integration';\nimport { BsDatepickerComponent, BsDatepickerProps } from './bs-datepicker.type';\nimport { AsyncPipe } from '@angular/common';\nimport { InputConstraintsDirective } from '../../directives/input-constraints.directive';\nimport { createAriaDescribedBySignal } from '../../utils/create-aria-described-by';\n\n@Component({\n selector: 'df-bs-datepicker',\n imports: [FormField, DynamicTextPipe, AsyncPipe, InputConstraintsDirective],\n styleUrl: '../../styles/_form-field.scss',\n template: `\n @let f = field(); @let p = props(); @let inputId = key() + '-input';\n @if (p?.floatingLabel) {\n <!-- Floating label variant -->\n <div class=\"form-floating mb-3\">\n <input\n dfBsInputConstraints\n [formField]=\"f\"\n [id]=\"inputId\"\n type=\"date\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [dfMin]=\"minAsString()\"\n [dfMax]=\"maxAsString()\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-required]=\"ariaRequired()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n class=\"form-control\"\n [class.form-control-sm]=\"p?.size === 'sm'\"\n [class.form-control-lg]=\"p?.size === 'lg'\"\n [class.is-invalid]=\"f().invalid() && f().touched()\"\n [class.is-valid]=\"f().valid() && f().touched() && p?.validFeedback\"\n />\n @if (label()) {\n <label [for]=\"inputId\">{{ label() | dynamicText | async }}</label>\n }\n @if (p?.validFeedback && f().valid() && f().touched()) {\n <div class=\"valid-feedback d-block\">\n {{ p?.validFeedback | dynamicText | async }}\n </div>\n }\n @if (errorsToDisplay()[0]; as error) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId()\" role=\"alert\">{{ error.message }}</div>\n }\n </div>\n } @else {\n <!-- Standard variant -->\n <div class=\"mb-3\">\n @if (label()) {\n <label [for]=\"inputId\" class=\"form-label\">{{ label() | dynamicText | async }}</label>\n }\n\n <input\n dfBsInputConstraints\n [formField]=\"f\"\n [id]=\"inputId\"\n type=\"date\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [dfMin]=\"minAsString()\"\n [dfMax]=\"maxAsString()\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-required]=\"ariaRequired()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n class=\"form-control\"\n [class.form-control-sm]=\"p?.size === 'sm'\"\n [class.form-control-lg]=\"p?.size === 'lg'\"\n [class.is-invalid]=\"f().invalid() && f().touched()\"\n [class.is-valid]=\"f().valid() && f().touched() && p?.validFeedback\"\n />\n\n @if (p?.validFeedback && f().valid() && f().touched()) {\n <div class=\"valid-feedback d-block\">\n {{ p?.validFeedback | dynamicText | async }}\n </div>\n }\n @if (errorsToDisplay()[0]; as error) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId()\" role=\"alert\">{{ error.message }}</div>\n } @else if (p?.hint) {\n <div class=\"form-text\" [id]=\"hintId()\">{{ p?.hint | dynamicText | async }}</div>\n }\n </div>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[class]': 'className()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n styles: [\n `\n :host([hidden]) {\n display: none !important;\n }\n `,\n ],\n})\nexport default class BsDatepickerFieldComponent implements BsDatepickerComponent {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n readonly field = input.required<FieldTree<Date | string>>();\n readonly key = input.required<string>();\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n\n readonly minDate = input<Date | string | null>(null);\n readonly maxDate = input<Date | string | null>(null);\n readonly startAt = input<Date | null>(null);\n readonly props = input<BsDatepickerProps>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n readonly meta = input<InputMeta>();\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n constructor() {\n setupMetaTracking(this.elementRef, this.meta, { selector: 'input' });\n }\n\n // Helper methods to convert Date to string for HTML attributes\n readonly minAsString = computed(() => {\n const min = this.minDate();\n return min instanceof Date ? min.toISOString().split('T')[0] : min;\n });\n\n readonly maxAsString = computed(() => {\n const max = this.maxDate();\n return max instanceof Date ? max.toISOString().split('T')[0] : max;\n });\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n protected readonly ariaDescribedBy = createAriaDescribedBySignal(\n this.errorsToDisplay,\n this.errorId,\n this.hintId,\n () => !!this.props()?.hint,\n );\n}\n","import { InjectionToken } from '@angular/core';\nimport { BootstrapConfig } from './bootstrap-config';\n\n/**\n * Injection token for Bootstrap form configuration.\n * Use this to provide global configuration for Bootstrap form fields.\n *\n * @example\n * ```typescript\n * import { provideDynamicForm } from '@ng-forge/dynamic-forms';\n * import { withBootstrapFields } from '@ng-forge/dynamic-forms-bootstrap';\n *\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideDynamicForm(\n * ...withBootstrapFields({\n * floatingLabel: true,\n * size: 'lg'\n * })\n * )\n * ]\n * };\n * ```\n */\nexport const BOOTSTRAP_CONFIG = new InjectionToken<BootstrapConfig>('BOOTSTRAP_CONFIG');\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { FormField, FieldTree } from '@angular/forms/signals';\nimport { DynamicText, DynamicTextPipe, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, InputMeta, setupMetaTracking, shouldShowErrors } from '@ng-forge/dynamic-forms/integration';\nimport { BsInputComponent, BsInputProps } from './bs-input.type';\nimport { AsyncPipe } from '@angular/common';\nimport { BOOTSTRAP_CONFIG } from '../../models/bootstrap-config.token';\nimport { createAriaDescribedBySignal } from '../../utils/create-aria-described-by';\n\n@Component({\n selector: 'df-bs-input',\n imports: [FormField, DynamicTextPipe, AsyncPipe],\n styleUrl: '../../styles/_form-field.scss',\n template: `\n @let f = field(); @let p = props(); @let inputId = key() + '-input';\n @if (effectiveFloatingLabel()) {\n <!-- Floating label variant -->\n <div class=\"form-floating mb-3\">\n <input\n [formField]=\"f\"\n [id]=\"inputId\"\n [type]=\"p?.type ?? 'text'\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-required]=\"ariaRequired()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n class=\"form-control\"\n [class.form-control-sm]=\"effectiveSize() === 'sm'\"\n [class.form-control-lg]=\"effectiveSize() === 'lg'\"\n [class.form-control-plaintext]=\"p?.plaintext\"\n [class.is-invalid]=\"f().invalid() && f().touched()\"\n [class.is-valid]=\"f().valid() && f().touched() && p?.validFeedback\"\n />\n @if (label()) {\n <label [for]=\"inputId\">{{ label() | dynamicText | async }}</label>\n }\n @if (p?.validFeedback && f().valid() && f().touched()) {\n <div class=\"valid-feedback d-block\">\n {{ p?.validFeedback | dynamicText | async }}\n </div>\n }\n @if (errorsToDisplay()[0]; as error) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId()\" role=\"alert\">{{ error.message }}</div>\n }\n </div>\n } @else {\n <!-- Standard variant -->\n <div class=\"mb-3\">\n @if (label()) {\n <label [for]=\"inputId\" class=\"form-label\">{{ label() | dynamicText | async }}</label>\n }\n <input\n [formField]=\"f\"\n [id]=\"inputId\"\n [type]=\"p?.type ?? 'text'\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-required]=\"ariaRequired()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n class=\"form-control\"\n [class.form-control-sm]=\"effectiveSize() === 'sm'\"\n [class.form-control-lg]=\"effectiveSize() === 'lg'\"\n [class.form-control-plaintext]=\"p?.plaintext\"\n [class.is-invalid]=\"f().invalid() && f().touched()\"\n [class.is-valid]=\"f().valid() && f().touched() && p?.validFeedback\"\n />\n @if (p?.validFeedback && f().valid() && f().touched()) {\n <div class=\"valid-feedback d-block\">\n {{ p?.validFeedback | dynamicText | async }}\n </div>\n }\n @if (errorsToDisplay()[0]; as error) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId()\" role=\"alert\">{{ error.message }}</div>\n } @else if (p?.hint) {\n <div class=\"form-text\" [id]=\"hintId()\">{{ p?.hint | dynamicText | async }}</div>\n }\n </div>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[class]': 'className()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n styles: [\n `\n :host([hidden]) {\n display: none !important;\n }\n `,\n ],\n})\nexport default class BsInputFieldComponent implements BsInputComponent {\n private bootstrapConfig = inject(BOOTSTRAP_CONFIG, { optional: true });\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n readonly field = input.required<FieldTree<string>>();\n readonly key = input.required<string>();\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n readonly props = input<BsInputProps>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n readonly meta = input<InputMeta>();\n\n constructor() {\n setupMetaTracking(this.elementRef, this.meta, { selector: 'input' });\n }\n\n readonly effectiveSize = computed(() => this.props()?.size ?? this.bootstrapConfig?.size);\n readonly effectiveFloatingLabel = computed(() => this.props()?.floatingLabel ?? this.bootstrapConfig?.floatingLabel ?? false);\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Unique ID for the hint element, used for aria-describedby */\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n\n /** Base ID for error elements, used for aria-describedby */\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n /** aria-invalid: true when field is invalid AND touched, false otherwise */\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** aria-required: true if field is required, null otherwise (to remove attribute) */\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n /** aria-describedby: links to hint and error messages for screen readers */\n protected readonly ariaDescribedBy = createAriaDescribedBySignal(\n this.errorsToDisplay,\n this.errorId,\n this.hintId,\n () => !!this.props()?.hint,\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input, linkedSignal } from '@angular/core';\nimport { FieldTree } from '@angular/forms/signals';\nimport { DynamicText, DynamicTextPipe, FieldMeta, FieldOption, ValidationMessages, ValueType } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, isEqual, setupMetaTracking, shouldShowErrors } from '@ng-forge/dynamic-forms/integration';\nimport { explicitEffect } from 'ngxtension/explicit-effect';\nimport { BsMultiCheckboxComponent, BsMultiCheckboxProps } from './bs-multi-checkbox.type';\nimport { AsyncPipe } from '@angular/common';\nimport { createAriaDescribedBySignal } from '../../utils/create-aria-described-by';\n\n@Component({\n selector: 'df-bs-multi-checkbox',\n imports: [DynamicTextPipe, AsyncPipe],\n styleUrl: '../../styles/_form-field.scss',\n template: `\n @let f = field();\n @let checked = checkedValuesMap();\n @if (label(); as label) {\n <div class=\"form-label\">{{ label | dynamicText | async }}</div>\n }\n\n <div class=\"checkbox-group\">\n @for (option of options(); track option.value; let i = $index) {\n <div\n class=\"form-check\"\n [class.form-switch]=\"props()?.switch\"\n [class.form-check-inline]=\"props()?.inline\"\n [class.form-check-reverse]=\"props()?.reverse\"\n >\n <input\n type=\"checkbox\"\n [id]=\"key() + '_' + i\"\n [checked]=\"checked['' + option.value]\"\n [disabled]=\"f().disabled() || option.disabled\"\n (change)=\"onCheckboxChange(option, $event)\"\n class=\"form-check-input\"\n [class.is-invalid]=\"f().invalid() && f().touched()\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-required]=\"ariaRequired()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n />\n <label [for]=\"key() + '_' + i\" class=\"form-check-label\">\n {{ option.label | dynamicText | async }}\n </label>\n </div>\n }\n </div>\n\n @if (errorsToDisplay()[0]; as error) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId()\" role=\"alert\">{{ error.message }}</div>\n } @else if (props()?.hint; as hint) {\n <div class=\"form-text\" [id]=\"hintId()\">{{ hint | dynamicText | async }}</div>\n }\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n .checkbox-group {\n margin-bottom: 0.5rem;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n `,\n ],\n host: {\n '[class]': 'className() || \"\"',\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class BsMultiCheckboxFieldComponent implements BsMultiCheckboxComponent {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n readonly field = input.required<FieldTree<ValueType[]>>();\n readonly key = input.required<string>();\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n\n readonly options = input<FieldOption<ValueType>[]>([]);\n readonly props = input<BsMultiCheckboxProps>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n readonly meta = input<FieldMeta>();\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n /** Computed map of checked option values for O(1) lookup in template */\n readonly checkedValuesMap = computed(() => {\n const map: Record<string, boolean> = {};\n for (const opt of this.valueViewModel()) {\n map[String(opt.value)] = true;\n }\n return map;\n });\n\n valueViewModel = linkedSignal<FieldOption<ValueType>[]>(\n () => {\n const currentValues = this.field()().value();\n return this.options().filter((option) => currentValues.includes(option.value));\n },\n { equal: isEqual },\n );\n\n constructor() {\n setupMetaTracking(this.elementRef, this.meta, { selector: 'input[type=\"checkbox\"]', dependents: [this.options] });\n\n explicitEffect([this.valueViewModel], ([selectedOptions]: [FieldOption<ValueType>[]]) => {\n const selectedValues = selectedOptions.map((option: FieldOption<ValueType>) => option.value);\n\n if (!isEqual(selectedValues, this.field()().value())) {\n this.field()().value.set(selectedValues);\n }\n });\n\n explicitEffect([this.options], ([options]: [FieldOption<ValueType>[]]) => {\n const values = options.map((option: FieldOption<ValueType>) => option.value);\n const uniqueValues = new Set(values);\n\n if (values.length !== uniqueValues.size) {\n const duplicates = values.filter((value, index) => values.indexOf(value) !== index);\n throw new Error(`Duplicate option values detected in bs-multi-checkbox: ${duplicates.join(', ')}`);\n }\n });\n }\n\n onCheckboxChange(option: FieldOption<ValueType>, event: Event): void {\n const checked = (event.target as HTMLInputElement).checked;\n this.valueViewModel.update((currentOptions: FieldOption<ValueType>[]) => {\n if (checked) {\n return currentOptions.some((opt: FieldOption<ValueType>) => opt.value === option.value)\n ? currentOptions\n : [...currentOptions, option];\n } else {\n return currentOptions.filter((opt: FieldOption<ValueType>) => opt.value !== option.value);\n }\n });\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n protected readonly ariaDescribedBy = createAriaDescribedBySignal(\n this.errorsToDisplay,\n this.errorId,\n this.hintId,\n () => !!this.props()?.hint,\n );\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, inject, input, model } from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport { DynamicText, DynamicTextPipe, FieldMeta, FieldOption, ValueType } from '@ng-forge/dynamic-forms';\nimport { setupMetaTracking } from '@ng-forge/dynamic-forms/integration';\nimport { AsyncPipe } from '@angular/common';\n\nexport interface BsRadioGroupProps {\n /**\n * Display radio buttons inline (horizontal)\n */\n inline?: boolean;\n /**\n * Reverse the position of the radio button and label\n */\n reverse?: boolean;\n /**\n * Display as button group instead of radio buttons\n */\n buttonGroup?: boolean;\n /**\n * Button size when using button group\n */\n buttonSize?: 'sm' | 'lg';\n /**\n * Hint text to display below the radio group\n */\n hint?: DynamicText;\n}\n\n@Component({\n selector: 'df-bs-radio-group',\n imports: [DynamicTextPipe, AsyncPipe],\n template: `\n @let props = properties();\n @if (props?.buttonGroup) {\n <div class=\"btn-group\" role=\"group\" [attr.aria-label]=\"label() | dynamicText | async\">\n @for (option of options(); track option.value; let i = $index) {\n <input\n type=\"radio\"\n [name]=\"name()\"\n [value]=\"option.value\"\n [checked]=\"value() === option.value\"\n (change)=\"onRadioChange(option.value)\"\n [disabled]=\"disabled() || option.disabled || false\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n class=\"btn-check\"\n [id]=\"name() + '_' + i\"\n autocomplete=\"off\"\n />\n <label\n class=\"btn btn-outline-primary\"\n [class.btn-sm]=\"props?.buttonSize === 'sm'\"\n [class.btn-lg]=\"props?.buttonSize === 'lg'\"\n [for]=\"name() + '_' + i\"\n >\n {{ option.label | dynamicText | async }}\n </label>\n }\n </div>\n } @else {\n @for (option of options(); track option.value; let i = $index) {\n <div class=\"form-check\" [class.form-check-inline]=\"props?.inline\" [class.form-check-reverse]=\"props?.reverse\">\n <input\n type=\"radio\"\n [name]=\"name()\"\n [value]=\"option.value\"\n [checked]=\"value() === option.value\"\n (change)=\"onRadioChange(option.value)\"\n [disabled]=\"disabled() || option.disabled || false\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n class=\"form-check-input\"\n [id]=\"name() + '_' + i\"\n />\n <label class=\"form-check-label\" [for]=\"name() + '_' + i\">\n {{ option.label | dynamicText | async }}\n </label>\n </div>\n }\n }\n `,\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BsRadioGroupComponent implements FormValueControl<ValueType | undefined> {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n // Value model - FormField directive binds form value to this\n readonly value = model<ValueType | undefined>(undefined);\n\n // Optional FormValueControl properties - Field directive will bind these\n readonly disabled = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly name = input<string>('');\n\n // Component-specific inputs\n readonly label = input<DynamicText>();\n readonly options = input.required<FieldOption<ValueType>[]>();\n readonly properties = input<BsRadioGroupProps>();\n readonly meta = input<FieldMeta>();\n\n // Accessibility - this will be provided by parent component through input\n readonly ariaDescribedBy = input<string | null>(null);\n\n constructor() {\n setupMetaTracking(this.elementRef, this.meta, { selector: 'input[type=\"radio\"]', dependents: [this.options] });\n }\n\n /**\n * Handle radio button change event\n */\n protected onRadioChange(newValue: ValueType): void {\n if (!this.disabled() && !this.readonly()) {\n this.value.set(newValue);\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { FormField, FieldTree } from '@angular/forms/signals';\nimport { DynamicText, DynamicTextPipe, FieldMeta, FieldOption, ValidationMessages, ValueType } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, setupMetaTracking, shouldShowErrors } from '@ng-forge/dynamic-forms/integration';\nimport { BsRadioComponent, BsRadioProps } from './bs-radio.type';\nimport { AsyncPipe } from '@angular/common';\nimport { BsRadioGroupComponent } from './bs-radio-group.component';\nimport { createAriaDescribedBySignal } from '../../utils/create-aria-described-by';\n\n@Component({\n selector: 'df-bs-radio',\n imports: [BsRadioGroupComponent, FormField, DynamicTextPipe, AsyncPipe],\n styleUrl: '../../styles/_form-field.scss',\n template: `\n @let f = field();\n\n <div class=\"mb-3\">\n @if (label(); as label) {\n <div class=\"form-label\">{{ label | dynamicText | async }}</div>\n }\n\n <df-bs-radio-group\n [formField]=\"f\"\n [label]=\"label()\"\n [options]=\"options()\"\n [properties]=\"props()\"\n [ariaDescribedBy]=\"ariaDescribedBy()\"\n />\n\n @if (errorsToDisplay()[0]; as error) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId()\" role=\"alert\">{{ error.message }}</div>\n } @else if (props()?.hint; as hint) {\n <div class=\"form-text\" [id]=\"hintId()\">{{ hint | dynamicText | async }}</div>\n }\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[class]': 'className()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n})\nexport default class BsRadioFieldComponent implements BsRadioComponent {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n readonly field = input.required<FieldTree<ValueType>>();\n readonly key = input.required<string>();\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n\n readonly options = input<FieldOption<ValueType>[]>([]);\n readonly props = input<BsRadioProps>();\n readonly meta = input<FieldMeta>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n constructor() {\n setupMetaTracking(this.elementRef, this.meta, {\n selector: 'input[type=\"radio\"]',\n dependents: [this.options],\n });\n }\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n protected readonly ariaDescribedBy = createAriaDescribedBySignal(\n this.errorsToDisplay,\n this.errorId,\n this.hintId,\n () => !!this.props()?.hint,\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { FormField, FieldTree } from '@angular/forms/signals';\nimport { DynamicText, DynamicTextPipe, FieldMeta, FieldOption, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, setupMetaTracking, shouldShowErrors } from '@ng-forge/dynamic-forms/integration';\nimport { BsSelectComponent, BsSelectProps } from './bs-select.type';\nimport { AsyncPipe } from '@angular/common';\nimport { createAriaDescribedBySignal } from '../../utils/create-aria-described-by';\n\n@Component({\n selector: 'df-bs-select',\n imports: [FormField, DynamicTextPipe, AsyncPipe],\n styleUrl: '../../styles/_form-field.scss',\n template: `\n @let f = field(); @let selectId = key() + '-select';\n\n <div class=\"mb-3\">\n @if (label(); as label) {\n <label [for]=\"selectId\" class=\"form-label\">{{ label | dynamicText | async }}</label>\n }\n <select\n [formField]=\"f\"\n [id]=\"selectId\"\n class=\"form-select\"\n [class.form-select-sm]=\"props()?.size === 'sm'\"\n [class.form-select-lg]=\"props()?.size === 'lg'\"\n [class.is-invalid]=\"f().invalid() && f().touched()\"\n [multiple]=\"props()?.multiple || false\"\n [size]=\"props()?.htmlSize\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-required]=\"ariaRequired()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n >\n @if (placeholder(); as placeholder) {\n <option value=\"\" disabled [selected]=\"!f().value()\">{{ placeholder | dynamicText | async }}</option>\n }\n @for (option of options(); track option.value) {\n <option [value]=\"option.value\" [disabled]=\"option.disabled || false\" [selected]=\"isSelected(option.value, f().value())\">\n {{ option.label | dynamicText | async }}\n </option>\n }\n </select>\n\n @if (errorsToDisplay()[0]; as error) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId()\" role=\"alert\">{{ error.message }}</div>\n } @else if (props()?.hint; as hint) {\n <div class=\"form-text\" [id]=\"hintId()\">{{ hint | dynamicText | async }}</div>\n }\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[class]': 'className()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n styles: [\n `\n :host([hidden]) {\n display: none !important;\n }\n `,\n ],\n})\nexport default class BsSelectFieldComponent implements BsSelectComponent {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n readonly field = input.required<FieldTree<string>>();\n readonly key = input.required<string>();\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n\n readonly options = input<FieldOption<string>[]>([]);\n readonly props = input<BsSelectProps>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n readonly meta = input<FieldMeta>();\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n constructor() {\n setupMetaTracking(this.elementRef, this.meta, { selector: 'select' });\n }\n\n defaultCompare = Object.is;\n\n protected isSelected(optionValue: string, fieldValue: string | string[] | null): boolean {\n const compareWith = this.props()?.compareWith || this.defaultCompare;\n\n if (Array.isArray(fieldValue)) {\n return fieldValue.some((v) => compareWith(v, optionValue));\n }\n\n return fieldValue !== null && compareWith(fieldValue, optionValue);\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n protected readonly ariaDescribedBy = createAriaDescribedBySignal(\n this.errorsToDisplay,\n this.errorId,\n this.hintId,\n () => !!this.props()?.hint,\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { FormField, FieldTree } from '@angular/forms/signals';\nimport { DynamicText, DynamicTextPipe, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, InputMeta, setupMetaTracking, shouldShowErrors } from '@ng-forge/dynamic-forms/integration';\nimport { BsSliderComponent, BsSliderProps } from './bs-slider.type';\nimport { AsyncPipe } from '@angular/common';\nimport { InputConstraintsDirective } from '../../directives/input-constraints.directive';\nimport { createAriaDescribedBySignal } from '../../utils/create-aria-described-by';\n\n@Component({\n selector: 'df-bs-slider',\n imports: [FormField, DynamicTextPipe, AsyncPipe, InputConstraintsDirective],\n styleUrl: '../../styles/_form-field.scss',\n template: `\n @let f = field(); @let inputId = key() + '-input';\n\n <div class=\"mb-3\">\n @if (label(); as label) {\n <label [for]=\"inputId\" class=\"form-label\">\n {{ label | dynamicText | async }}\n @if (props()?.showValue) {\n <span class=\"ms-2 badge bg-secondary\"> {{ props()?.valuePrefix }}{{ f().value() }}{{ props()?.valueSuffix }} </span>\n }\n </label>\n }\n\n <input\n type=\"range\"\n dfBsInputConstraints\n [formField]=\"f\"\n [id]=\"inputId\"\n [dfMin]=\"f().min?.() ?? props()?.min ?? min()\"\n [dfMax]=\"f().max?.() ?? props()?.max ?? max()\"\n [dfStep]=\"step() ?? props()?.step ?? 1\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-required]=\"ariaRequired()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n class=\"form-range\"\n />\n\n @if (errorsToDisplay()[0]; as error) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId()\" role=\"alert\">{{ error.message }}</div>\n } @else if (props()?.hint; as hint) {\n <div class=\"form-text\" [id]=\"hintId()\">{{ hint | dynamicText | async }}</div>\n }\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n `,\n ],\n host: {\n '[class]': 'className()',\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class BsSliderFieldComponent implements BsSliderComponent {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n readonly field = input.required<FieldTree<number>>();\n readonly key = input.required<string>();\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n\n readonly min = input<number>(0);\n readonly max = input<number>(100);\n readonly step = input<number>();\n\n readonly props = input<BsSliderProps>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n readonly meta = input<InputMeta>();\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n constructor() {\n setupMetaTracking(this.elementRef, this.meta, { selector: 'input' });\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n protected readonly ariaDescribedBy = createAriaDescribedBySignal(\n this.errorsToDisplay,\n this.errorId,\n this.hintId,\n () => !!this.props()?.hint,\n );\n}\n","import { afterRenderEffect, ChangeDetectionStrategy, Component, computed, ElementRef, inject, input, viewChild } from '@angular/core';\nimport { FormField, FieldTree } from '@angular/forms/signals';\nimport { DynamicText, DynamicTextPipe, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, setupMetaTracking, shouldShowErrors, TextareaMeta } from '@ng-forge/dynamic-forms/integration';\nimport { BsTextareaComponent, BsTextareaProps } from './bs-textarea.type';\nimport { AsyncPipe } from '@angular/common';\nimport { createAriaDescribedBySignal } from '../../utils/create-aria-described-by';\n\n@Component({\n selector: 'df-bs-textarea',\n imports: [FormField, DynamicTextPipe, AsyncPipe],\n styleUrl: '../../styles/_form-field.scss',\n template: `\n @let f = field(); @let p = props(); @let textareaId = key() + '-textarea';\n @if (p?.floatingLabel) {\n <!-- Floating label variant -->\n <div class=\"form-floating mb-3\">\n <textarea\n #textareaRef\n [formField]=\"f\"\n [id]=\"textareaId\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-required]=\"ariaRequired()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n class=\"form-control\"\n [class.form-control-sm]=\"p?.size === 'sm'\"\n [class.form-control-lg]=\"p?.size === 'lg'\"\n [class.is-invalid]=\"f().invalid() && f().touched()\"\n [class.is-valid]=\"f().valid() && f().touched() && p?.validFeedback\"\n ></textarea>\n\n @if (label()) {\n <label [for]=\"textareaId\">{{ label() | dynamicText | async }}</label>\n }\n @if (p?.validFeedback && f().valid() && f().touched()) {\n <div class=\"valid-feedback d-block\">\n {{ p?.validFeedback | dynamicText | async }}\n </div>\n }\n @if (errorsToDisplay()[0]; as error) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId()\" role=\"alert\">{{ error.message }}</div>\n } @else if (p?.hint) {\n <div class=\"form-text\" [id]=\"hintId()\">{{ p?.hint | dynamicText | async }}</div>\n }\n </div>\n } @else {\n <!-- Standard variant -->\n <div class=\"mb-3\">\n @if (label()) {\n <label [for]=\"textareaId\" class=\"form-label\">{{ label() | dynamicText | async }}</label>\n }\n\n <textarea\n #textareaRef\n [formField]=\"f\"\n [id]=\"textareaId\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-required]=\"ariaRequired()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n class=\"form-control\"\n [class.form-control-sm]=\"p?.size === 'sm'\"\n [class.form-control-lg]=\"p?.size === 'lg'\"\n [class.is-invalid]=\"f().invalid() && f().touched()\"\n [class.is-valid]=\"f().valid() && f().touched() && p?.validFeedback\"\n ></textarea>\n\n @if (p?.validFeedback && f().valid() && f().touched()) {\n <div class=\"valid-feedback d-block\">\n {{ p?.validFeedback | dynamicText | async }}\n </div>\n }\n @if (errorsToDisplay()[0]; as error) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId()\" role=\"alert\">{{ error.message }}</div>\n } @else if (p?.hint) {\n <div class=\"form-text\" [id]=\"hintId()\">{{ p?.hint | dynamicText | async }}</div>\n }\n </div>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[class]': 'className()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n styles: [\n `\n :host([hidden]) {\n display: none !important;\n }\n `,\n ],\n})\nexport default class BsTextareaFieldComponent implements BsTextareaComponent {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n readonly field = input.required<FieldTree<string>>();\n readonly key = input.required<string>();\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n readonly props = input<BsTextareaProps>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n readonly meta = input<TextareaMeta>();\n\n /**\n * Reference to the native textarea element.\n * Used to imperatively sync the readonly attribute since Angular Signal Forms'\n * [field] directive doesn't sync FieldState.readonly() to the DOM.\n */\n private readonly textareaRef = viewChild<ElementRef<HTMLTextAreaElement>>('textareaRef');\n\n /**\n * Computed signal that extracts the readonly state from the field.\n */\n private readonly isReadonly = computed(() => this.field()().readonly());\n\n /**\n * Workaround: Angular Signal Forms' [field] directive does NOT sync the readonly\n * attribute to the DOM. This effect imperatively sets/removes the readonly attribute\n * on the native textarea element whenever the readonly state changes.\n */\n private readonly syncReadonlyToDom = afterRenderEffect({\n write: () => {\n const textareaRef = this.textareaRef();\n const isReadonly = this.isReadonly();\n if (textareaRef?.nativeElement) {\n if (isReadonly) {\n textareaRef.nativeElement.setAttribute('readonly', '');\n } else {\n textareaRef.nativeElement.removeAttribute('readonly');\n }\n }\n },\n });\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n constructor() {\n setupMetaTracking(this.elementRef, this.meta, { selector: 'textarea' });\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n protected readonly ariaDescribedBy = createAriaDescribedBySignal(\n this.errorsToDisplay,\n this.errorId,\n this.hintId,\n () => !!this.props()?.hint,\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { FormField, FieldTree } from '@angular/forms/signals';\nimport { DynamicText, DynamicTextPipe, FieldMeta, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, setupMetaTracking, shouldShowErrors } from '@ng-forge/dynamic-forms/integration';\nimport { BsToggleComponent, BsToggleProps } from './bs-toggle.type';\nimport { AsyncPipe } from '@angular/common';\nimport { createAriaDescribedBySignal } from '../../utils/create-aria-described-by';\n\n@Component({\n selector: 'df-bs-toggle',\n imports: [FormField, DynamicTextPipe, AsyncPipe],\n styleUrl: '../../styles/_form-field.scss',\n template: `\n @let f = field(); @let inputId = key() + '-input';\n\n <div\n class=\"form-check form-switch\"\n [class.form-check-inline]=\"props()?.inline\"\n [class.form-check-reverse]=\"props()?.reverse\"\n [class.form-switch-sm]=\"props()?.size === 'sm'\"\n [class.form-switch-lg]=\"props()?.size === 'lg'\"\n [attr.hidden]=\"f().hidden() || null\"\n >\n <input\n type=\"checkbox\"\n [formField]=\"f\"\n [id]=\"inputId\"\n class=\"form-check-input\"\n [class.is-invalid]=\"f().invalid() && f().touched()\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-required]=\"ariaRequired()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n />\n <label [for]=\"inputId\" class=\"form-check-label\">\n {{ label() | dynamicText | async }}\n </label>\n </div>\n\n @if (errorsToDisplay()[0]; as error) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId()\" role=\"alert\">{{ error.message }}</div>\n } @else if (props()?.hint; as hint) {\n <div class=\"form-text\" [id]=\"hintId()\" [attr.hidden]=\"f().hidden() || null\">{{ hint | dynamicText | async }}</div>\n }\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n\n /* Custom size variants for switches */\n .form-switch-sm .form-check-input {\n width: 1.75rem;\n height: 1rem;\n font-size: 0.875rem;\n }\n\n .form-switch-lg .form-check-input {\n width: 3rem;\n height: 1.75rem;\n font-size: 1.125rem;\n }\n `,\n ],\n host: {\n '[class]': 'className()',\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class BsToggleFieldComponent implements BsToggleComponent {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n readonly field = input.required<FieldTree<boolean>>();\n readonly key = input.required<string>();\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n readonly props = input<BsToggleProps>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n readonly meta = input<FieldMeta>();\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n constructor() {\n setupMetaTracking(this.elementRef, this.meta, { selector: 'input[type=\"checkbox\"]' });\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n protected readonly ariaDescribedBy = createAriaDescribedBySignal(\n this.errorsToDisplay,\n this.errorId,\n this.hintId,\n () => !!this.props()?.hint,\n );\n}\n","// Public exports for bootstrap field components and types\n\nexport { BsButtonFieldComponent } from './button';\nexport type {\n BsButtonProps,\n BsButtonField,\n BsSubmitButtonField,\n BsNextButtonField,\n BsPreviousButtonField,\n AddArrayItemButtonField,\n PrependArrayItemButtonField,\n InsertArrayItemButtonField,\n RemoveArrayItemButtonField,\n PopArrayItemButtonField,\n ShiftArrayItemButtonField,\n} from './button';\n\nexport { BsCheckboxFieldComponent } from './checkbox';\nexport type { BsCheckboxProps, BsCheckboxField, BsCheckboxComponent } from './checkbox';\n\nexport { BsDatepickerFieldComponent } from './datepicker';\nexport type { BsDatepickerProps, BsDatepickerField, BsDatepickerComponent } from './datepicker';\n\nexport { BsInputFieldComponent } from './input';\nexport type { BsInputProps, BsInputField, BsInputComponent } from './input';\n\nexport { BsMultiCheckboxFieldComponent } from './multi-checkbox';\nexport type { BsMultiCheckboxProps, BsMultiCheckboxField, BsMultiCheckboxComponent } from './multi-checkbox';\n\nexport { BsRadioFieldComponent } from './radio';\nexport type { BsRadioProps, BsRadioField, BsRadioComponent } from './radio';\n\nexport { BsSelectFieldComponent } from './select';\nexport type { BsSelectProps, BsSelectField, BsSelectComponent } from './select';\n\nexport { BsSliderFieldComponent } from './slider';\nexport type { BsSliderProps, BsSliderField, BsSliderComponent } from './slider';\n\nexport { BsTextareaFieldComponent } from './textarea';\nexport type { BsTextareaProps, BsTextareaField, BsTextareaComponent } from './textarea';\n\nexport { BsToggleFieldComponent } from './toggle';\nexport type { BsToggleProps, BsToggleField, BsToggleComponent } from './toggle';\n","/**\n * Bootstrap field type constants\n * Based on available field components in the /fields folder\n */\nexport const BsField = {\n Input: 'input',\n Select: 'select',\n Checkbox: 'checkbox',\n Button: 'button',\n Submit: 'submit',\n Next: 'next',\n Previous: 'previous',\n AddArrayItem: 'addArrayItem',\n PrependArrayItem: 'prependArrayItem',\n InsertArrayItem: 'insertArrayItem',\n RemoveArrayItem: 'removeArrayItem',\n PopArrayItem: 'popArrayItem',\n ShiftArrayItem: 'shiftArrayItem',\n Textarea: 'textarea',\n Radio: 'radio',\n MultiCheckbox: 'multi-checkbox',\n Datepicker: 'datepicker',\n Slider: 'slider',\n Toggle: 'toggle',\n} as const;\n\nexport type BsFieldType = (typeof BsField)[keyof typeof BsField];\n","import { computed, inject, isSignal, Signal } from '@angular/core';\nimport { ARRAY_CONTEXT, buildBaseInputs, DEFAULT_PROPS, FieldDef } from '@ng-forge/dynamic-forms';\n\n/**\n * Generic button mapper for custom events or basic buttons.\n * For specific button types (submit, next, prev, add/remove array items),\n * use the dedicated field types and their specific mappers.\n *\n * Supports template property for array events (AppendArrayItemEvent, PrependArrayItemEvent, InsertArrayItemEvent)\n * which enables the $template token in eventArgs.\n *\n * @param fieldDef The button field definition\n * @returns Signal containing Record of input names to values for ngComponentOutlet\n */\nexport function buttonFieldMapper(fieldDef: FieldDef<Record<string, unknown>>): Signal<Record<string, unknown>> {\n const defaultProps = inject(DEFAULT_PROPS);\n const arrayContext = inject(ARRAY_CONTEXT, { optional: true });\n\n return computed(() => {\n const baseInputs = buildBaseInputs(fieldDef, defaultProps());\n\n const inputs: Record<string, unknown> = {\n ...baseInputs,\n };\n\n if (fieldDef.disabled !== undefined) {\n inputs['disabled'] = fieldDef.disabled;\n }\n\n if (fieldDef.hidden !== undefined) {\n inputs['hidden'] = fieldDef.hidden;\n }\n\n // Add event binding for button events\n if ('event' in fieldDef && fieldDef.event !== undefined) {\n inputs['event'] = fieldDef.event;\n }\n\n // Add eventArgs binding if provided\n if ('eventArgs' in fieldDef && fieldDef.eventArgs !== undefined) {\n inputs['eventArgs'] = fieldDef.eventArgs;\n }\n\n // Add eventContext for token resolution (supports $template, $arrayKey, $index, etc.)\n const template = 'template' in fieldDef ? fieldDef.template : undefined;\n if (template || arrayContext) {\n // Read signal value if index is a signal (supports differential updates)\n const getIndex = () => {\n if (!arrayContext) return -1;\n return isSignal(arrayContext.index) ? arrayContext.index() : arrayContext.index;\n };\n\n inputs['eventContext'] = {\n key: fieldDef.key,\n index: getIndex(),\n arrayKey: arrayContext?.arrayKey ?? '',\n formValue: arrayContext?.formValue ?? {},\n template,\n };\n }\n\n return inputs;\n });\n}\n","/**\n * Navigation button mappers for Bootstrap - re-exported from integration package.\n *\n * These mappers handle submit, next, and previous buttons with proper\n * disabled state resolution based on form validity and options.\n */\nexport { submitButtonFieldMapper, nextButtonFieldMapper, previousButtonFieldMapper } from '@ng-forge/dynamic-forms/integration';\n","import { FieldTypeDefinition } from '@ng-forge/dynamic-forms';\nimport {\n addArrayItemButtonMapper,\n checkboxFieldMapper,\n datepickerFieldMapper,\n insertArrayItemButtonMapper,\n optionsFieldMapper,\n popArrayItemButtonMapper,\n prependArrayItemButtonMapper,\n removeArrayItemButtonMapper,\n shiftArrayItemButtonMapper,\n valueFieldMapper,\n} from '@ng-forge/dynamic-forms/integration';\nimport { BsField } from '../types/types';\nimport { buttonFieldMapper } from '../fields/button/bs-button.mapper';\nimport { nextButtonFieldMapper, previousButtonFieldMapper, submitButtonFieldMapper } from '../fields/button/bs-specific-button.mapper';\n\nconst BUTTON_FIELD_TYPES_BASE = {\n renderReadyWhen: [] as string[],\n};\n\nexport const BOOTSTRAP_FIELD_TYPES: FieldTypeDefinition[] = [\n {\n name: BsField.Input,\n loadComponent: () => import('../fields/input/bs-input.component'),\n mapper: valueFieldMapper,\n propsToMeta: ['type'],\n scope: ['text-input', 'numeric'],\n },\n {\n name: BsField.Select,\n loadComponent: () => import('../fields/select/bs-select.component'),\n mapper: optionsFieldMapper,\n scope: 'single-select',\n },\n {\n name: BsField.Checkbox,\n loadComponent: () => import('../fields/checkbox/bs-checkbox.component'),\n mapper: checkboxFieldMapper,\n scope: 'boolean',\n },\n {\n name: BsField.Button,\n loadComponent: () => import('../fields/button/bs-button.component'),\n mapper: buttonFieldMapper,\n valueHandling: 'exclude',\n ...BUTTON_FIELD_TYPES_BASE,\n },\n {\n name: BsField.Submit,\n loadComponent: () => import('../fields/button/bs-button.component'),\n mapper: submitButtonFieldMapper,\n valueHandling: 'exclude',\n ...BUTTON_FIELD_TYPES_BASE,\n },\n {\n name: BsField.Next,\n loadComponent: () => import('../fields/button/bs-button.component'),\n mapper: nextButtonFieldMapper,\n valueHandling: 'exclude',\n ...BUTTON_FIELD_TYPES_BASE,\n },\n {\n name: BsField.Previous,\n loadComponent: () => import('../fields/button/bs-button.component'),\n mapper: previousButtonFieldMapper,\n valueHandling: 'exclude',\n ...BUTTON_FIELD_TYPES_BASE,\n },\n {\n name: BsField.AddArrayItem,\n loadComponent: () => import('../fields/button/bs-button.component'),\n mapper: addArrayItemButtonMapper,\n valueHandling: 'exclude',\n ...BUTTON_FIELD_TYPES_BASE,\n },\n {\n name: BsField.PrependArrayItem,\n loadComponent: () => import('../fields/button/bs-button.component'),\n mapper: prependArrayItemButtonMapper,\n valueHandling: 'exclude',\n ...BUTTON_FIELD_TYPES_BASE,\n },\n {\n name: BsField.InsertArrayItem,\n loadComponent: () => import('../fields/button/bs-button.component'),\n mapper: insertArrayItemButtonMapper,\n valueHandling: 'exclude',\n ...BUTTON_FIELD_TYPES_BASE,\n },\n {\n name: BsField.RemoveArrayItem,\n loadComponent: () => import('../fields/button/bs-button.component'),\n mapper: removeArrayItemButtonMapper,\n valueHandling: 'exclude',\n ...BUTTON_FIELD_TYPES_BASE,\n },\n {\n name: BsField.PopArrayItem,\n loadComponent: () => import('../fields/button/bs-button.component'),\n mapper: popArrayItemButtonMapper,\n valueHandling: 'exclude',\n ...BUTTON_FIELD_TYPES_BASE,\n },\n {\n name: BsField.ShiftArrayItem,\n loadComponent: () => import('../fields/button/bs-button.component'),\n mapper: shiftArrayItemButtonMapper,\n valueHandling: 'exclude',\n ...BUTTON_FIELD_TYPES_BASE,\n },\n {\n name: BsField.Textarea,\n loadComponent: () => import('../fields/textarea/bs-textarea.component'),\n mapper: valueFieldMapper,\n propsToMeta: ['rows'],\n scope: 'text-input',\n },\n {\n name: BsField.Radio,\n loadComponent: () => import('../fields/radio/bs-radio.component'),\n mapper: optionsFieldMapper,\n scope: 'single-select',\n },\n {\n name: BsField.MultiCheckbox,\n loadComponent: () => import('../fields/multi-checkbox/bs-multi-checkbox.component'),\n mapper: optionsFieldMapper,\n scope: 'multi-select',\n },\n {\n name: BsField.Datepicker,\n loadComponent: () => import('../fields/datepicker/bs-datepicker.component'),\n mapper: datepickerFieldMapper,\n scope: 'date',\n },\n {\n name: BsField.Slider,\n loadComponent: () => import('../fields/slider/bs-slider.component'),\n mapper: valueFieldMapper,\n scope: 'numeric',\n },\n {\n name: BsField.Toggle,\n loadComponent: () => import('../fields/toggle/bs-toggle.component'),\n mapper: checkboxFieldMapper,\n scope: 'boolean',\n },\n];\n","/**\n * Module augmentation for @ng-forge/dynamic-form\n * This file augments the FieldRegistryLeaves interface to include\n * all Bootstrap field types provided by this library.\n */\n\nimport type { FormEvent } from '@ng-forge/dynamic-forms';\nimport type {\n AddArrayItemButtonField,\n BsButtonField,\n BsCheckboxField,\n BsDatepickerField,\n BsInputField,\n BsMultiCheckboxField,\n BsNextButtonField,\n BsPreviousButtonField,\n BsRadioField,\n BsSelectField,\n BsSliderField,\n BsSubmitButtonField,\n BsTextareaField,\n BsToggleField,\n InsertArrayItemButtonField,\n PopArrayItemButtonField,\n PrependArrayItemButtonField,\n RemoveArrayItemButtonField,\n ShiftArrayItemButtonField,\n} from '../fields';\n\ndeclare module '@ng-forge/dynamic-forms' {\n interface FieldRegistryLeaves {\n input: BsInputField;\n select: BsSelectField<unknown>;\n checkbox: BsCheckboxField;\n button: BsButtonField<FormEvent>;\n submit: BsSubmitButtonField;\n next: BsNextButtonField;\n previous: BsPreviousButtonField;\n addArrayItem: AddArrayItemButtonField;\n prependArrayItem: PrependArrayItemButtonField;\n insertArrayItem: InsertArrayItemButtonField;\n removeArrayItem: RemoveArrayItemButtonField;\n popArrayItem: PopArrayItemButtonField;\n shiftArrayItem: ShiftArrayItemButtonField;\n textarea: BsTextareaField;\n radio: BsRadioField<unknown>;\n 'multi-checkbox': BsMultiCheckboxField<unknown>;\n datepicker: BsDatepickerField;\n slider: BsSliderField;\n toggle: BsToggleField;\n }\n}\n","import type { Provider } from '@angular/core';\nimport type { FieldTypeDefinition } from '@ng-forge/dynamic-forms';\nimport { BOOTSTRAP_FIELD_TYPES } from '../config/bootstrap-field-config';\nimport { BootstrapConfig } from '../models/bootstrap-config';\nimport { BOOTSTRAP_CONFIG } from '../models/bootstrap-config.token';\n\n/**\n * Field type definitions for Bootstrap components.\n */\nexport type BootstrapFieldTypes = FieldTypeDefinition[];\n\ntype BootstrapConfigFeature = {\n ɵkind: 'bootstrap-config';\n ɵproviders: Provider[];\n};\n\ntype BootstrapFieldsWithConfig = [...BootstrapFieldTypes, BootstrapConfigFeature];\n\n/**\n * Provides Bootstrap field types for the dynamic form system.\n * Use with provideDynamicForm(...withBootstrapFields())\n *\n * @param config - Optional global configuration for Bootstrap form fields\n *\n * @example\n * ```typescript\n * // Application-level setup\n * import { ApplicationConfig } from '@angular/core';\n * import { provideDynamicForm } from '@ng-forge/dynamic-form';\n * import { withBootstrapFields } from '@ng-forge/dynamic-form-bootstrap';\n *\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideDynamicForm(...withBootstrapFields())\n * ]\n * };\n * ```\n *\n * @example\n * ```typescript\n * // With global configuration\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideDynamicForm(\n * ...withBootstrapFields({\n * floatingLabel: true,\n * size: 'lg'\n * })\n * )\n * ]\n * };\n * ```\n *\n * @returns Array of field type definitions and optionally a config feature\n */\nexport function withBootstrapFields(): BootstrapFieldTypes;\nexport function withBootstrapFields(config: BootstrapConfig): BootstrapFieldsWithConfig;\nexport function withBootstrapFields(config: BootstrapConfig | undefined): BootstrapFieldTypes | BootstrapFieldsWithConfig;\nexport function withBootstrapFields(config?: BootstrapConfig): BootstrapFieldTypes | BootstrapFieldsWithConfig {\n if (!config) {\n return BOOTSTRAP_FIELD_TYPES;\n }\n\n const fieldsWithConfig = [\n ...BOOTSTRAP_FIELD_TYPES,\n {\n ɵkind: 'bootstrap-config',\n ɵproviders: [{ provide: BOOTSTRAP_CONFIG, useValue: config }],\n } satisfies BootstrapConfigFeature,\n ];\n\n // Safe: this preserves all bootstrap field definitions and appends exactly one config feature.\n return fieldsWithConfig as BootstrapFieldsWithConfig;\n}\n","// Field components\nexport {\n BsButtonFieldComponent,\n BsCheckboxFieldComponent,\n BsDatepickerFieldComponent,\n BsInputFieldComponent,\n BsMultiCheckboxFieldComponent,\n BsRadioFieldComponent,\n BsSelectFieldComponent,\n BsSliderFieldComponent,\n BsTextareaFieldComponent,\n BsToggleFieldComponent,\n} from './fields';\nexport type {\n BsButtonProps,\n BsButtonField,\n BsSubmitButtonField,\n BsNextButtonField,\n BsPreviousButtonField,\n AddArrayItemButtonField,\n PrependArrayItemButtonField,\n InsertArrayItemButtonField,\n RemoveArrayItemButtonField,\n PopArrayItemButtonField,\n ShiftArrayItemButtonField,\n BsCheckboxProps,\n BsCheckboxField,\n BsCheckboxComponent,\n BsDatepickerProps,\n BsDatepickerField,\n BsDatepickerComponent,\n BsInputProps,\n BsInputField,\n BsInputComponent,\n BsMultiCheckboxProps,\n BsMultiCheckboxField,\n BsMultiCheckboxComponent,\n BsRadioProps,\n BsRadioField,\n BsRadioComponent,\n BsSelectProps,\n BsSelectField,\n BsSelectComponent,\n BsSliderProps,\n BsSliderField,\n BsSliderComponent,\n BsTextareaProps,\n BsTextareaField,\n BsTextareaComponent,\n BsToggleProps,\n BsToggleField,\n BsToggleComponent,\n} from './fields';\n\n// Configuration\nexport { BOOTSTRAP_FIELD_TYPES } from './config/bootstrap-field-config';\nexport type { BootstrapConfig } from './models';\nexport { BOOTSTRAP_CONFIG } from './models';\n\n// Types and constants\nexport { BsField, type BsFieldType } from './types/types';\nexport type { BsFormProps, BsFormConfig } from './types/form-config';\n\n// Module augmentation for global types\nimport './types/registry-augmentation';\n\n// Providers\nexport { withBootstrapFields } from './providers/bootstrap-providers';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ng-forge/dynamic-forms-bootstrap",
3
- "version": "0.9.0-next.2",
3
+ "version": "0.9.0-next.4",
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.2",
34
+ "@ng-forge/dynamic-forms": "~0.9.0-next.4",
35
35
  "rxjs": ">=7.0.0"
36
36
  },
37
37
  "module": "fesm2022/ng-forge-dynamic-forms-bootstrap.mjs",
@@ -2,7 +2,7 @@ import { FormEvent, NextPageEvent, PreviousPageEvent, AppendArrayItemEvent, Arra
2
2
  import * as _ng_forge_dynamic_forms_integration from '@ng-forge/dynamic-forms/integration';
3
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';
4
4
  import * as _angular_core from '@angular/core';
5
- import { ElementRef, InjectionToken, Provider } from '@angular/core';
5
+ import { InjectionToken, Provider } from '@angular/core';
6
6
  import { FieldTree } from '@angular/forms/signals';
7
7
 
8
8
  interface BsButtonProps {
@@ -165,7 +165,6 @@ declare class BsCheckboxFieldComponent implements BsCheckboxComponent {
165
165
  readonly resolvedErrors: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
166
166
  readonly showErrors: _angular_core.Signal<boolean>;
167
167
  readonly errorsToDisplay: _angular_core.Signal<_ng_forge_dynamic_forms_integration.ResolvedError[]>;
168
- readonly checkboxInput: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
169
168
  constructor();
170
169
  protected readonly hintId: _angular_core.Signal<string>;
171
170
  protected readonly errorId: _angular_core.Signal<string>;
@@ -246,25 +245,6 @@ declare class BsInputFieldComponent implements BsInputComponent {
246
245
  readonly validationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
247
246
  readonly defaultValidationMessages: _angular_core.InputSignal<ValidationMessages | undefined>;
248
247
  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
248
  constructor();
269
249
  readonly effectiveSize: _angular_core.Signal<"sm" | "lg" | undefined>;
270
250
  readonly effectiveFloatingLabel: _angular_core.Signal<boolean>;