@ng-forge/dynamic-forms-bootstrap 0.4.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -18,6 +18,7 @@ Bootstrap 5 field components for [@ng-forge/dynamic-forms](https://www.npmjs.com
|
|
|
18
18
|
|
|
19
19
|
| @ng-forge/dynamic-forms-bootstrap | @ng-forge/dynamic-forms | Angular |
|
|
20
20
|
| --------------------------------- | ----------------------- | ------------- |
|
|
21
|
+
| 0.5.x | 0.5.x | >=21.1.0 |
|
|
21
22
|
| 0.4.x | 0.4.x | >=21.1.0 |
|
|
22
23
|
| 0.3.x | 0.3.x | 21.0.7-21.0.x |
|
|
23
24
|
| 0.2.x | 0.2.x | 21.0.6 |
|
|
@@ -127,18 +127,18 @@ var bsButton_component = /*#__PURE__*/Object.freeze({
|
|
|
127
127
|
/**
|
|
128
128
|
* Creates a signal that computes the aria-describedby value based on errors and hint state.
|
|
129
129
|
* Errors take precedence over hints - when errors are displayed, the hint is hidden.
|
|
130
|
+
* Only the first error is displayed (single error ID, not indexed).
|
|
130
131
|
*
|
|
131
132
|
* @param errorsToDisplay Signal containing the array of errors currently being displayed
|
|
132
|
-
* @param errorId Signal containing the
|
|
133
|
+
* @param errorId Signal containing the ID for the error element (single error only)
|
|
133
134
|
* @param hintId Signal containing the ID for the hint element
|
|
134
135
|
* @param hasHint Function that returns true if a hint is configured
|
|
135
|
-
* @returns Signal containing the aria-describedby value
|
|
136
|
+
* @returns Signal containing the aria-describedby value or null
|
|
136
137
|
*/
|
|
137
138
|
function createAriaDescribedBySignal(errorsToDisplay, errorId, hintId, hasHint) {
|
|
138
139
|
return computed(() => {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
return errors.map((_, i) => `${errorId()}-${i}`).join(' ');
|
|
140
|
+
if (errorsToDisplay().length > 0) {
|
|
141
|
+
return errorId();
|
|
142
142
|
}
|
|
143
143
|
if (hasHint()) {
|
|
144
144
|
return hintId();
|
|
@@ -215,12 +215,10 @@ class BsCheckboxFieldComponent {
|
|
|
215
215
|
</label>
|
|
216
216
|
</div>
|
|
217
217
|
|
|
218
|
-
@
|
|
219
|
-
<div class="invalid-feedback d-block" [id]="errorId()
|
|
220
|
-
} @
|
|
221
|
-
|
|
222
|
-
<div class="form-text" [id]="hintId()" [attr.hidden]="f().hidden() || null">{{ hint | dynamicText | async }}</div>
|
|
223
|
-
}
|
|
218
|
+
@if (errorsToDisplay()[0]; as error) {
|
|
219
|
+
<div class="invalid-feedback d-block" [id]="errorId()" role="alert">{{ error.message }}</div>
|
|
220
|
+
} @else if (props()?.hint; as hint) {
|
|
221
|
+
<div class="form-text" [id]="hintId()" [attr.hidden]="f().hidden() || null">{{ hint | dynamicText | async }}</div>
|
|
224
222
|
}
|
|
225
223
|
`, isInline: true, 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"], dependencies: [{ kind: "directive", type: FormField, selector: "[formField]", inputs: ["formField"] }, { kind: "pipe", type: DynamicTextPipe, name: "dynamicText" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
226
224
|
}
|
|
@@ -253,12 +251,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
|
|
|
253
251
|
</label>
|
|
254
252
|
</div>
|
|
255
253
|
|
|
256
|
-
@
|
|
257
|
-
<div class="invalid-feedback d-block" [id]="errorId()
|
|
258
|
-
} @
|
|
259
|
-
|
|
260
|
-
<div class="form-text" [id]="hintId()" [attr.hidden]="f().hidden() || null">{{ hint | dynamicText | async }}</div>
|
|
261
|
-
}
|
|
254
|
+
@if (errorsToDisplay()[0]; as error) {
|
|
255
|
+
<div class="invalid-feedback d-block" [id]="errorId()" role="alert">{{ error.message }}</div>
|
|
256
|
+
} @else if (props()?.hint; as hint) {
|
|
257
|
+
<div class="form-text" [id]="hintId()" [attr.hidden]="f().hidden() || null">{{ hint | dynamicText | async }}</div>
|
|
262
258
|
}
|
|
263
259
|
`, host: {
|
|
264
260
|
'[class]': 'className()',
|
|
@@ -393,8 +389,8 @@ class BsDatepickerFieldComponent {
|
|
|
393
389
|
{{ p?.validFeedback | dynamicText | async }}
|
|
394
390
|
</div>
|
|
395
391
|
}
|
|
396
|
-
@
|
|
397
|
-
<div class="invalid-feedback d-block" [id]="errorId()
|
|
392
|
+
@if (errorsToDisplay()[0]; as error) {
|
|
393
|
+
<div class="invalid-feedback d-block" [id]="errorId()" role="alert">{{ error.message }}</div>
|
|
398
394
|
}
|
|
399
395
|
</div>
|
|
400
396
|
} @else {
|
|
@@ -428,12 +424,10 @@ class BsDatepickerFieldComponent {
|
|
|
428
424
|
{{ p?.validFeedback | dynamicText | async }}
|
|
429
425
|
</div>
|
|
430
426
|
}
|
|
431
|
-
@
|
|
432
|
-
<div class="invalid-feedback d-block" [id]="errorId()
|
|
433
|
-
} @
|
|
434
|
-
|
|
435
|
-
<div class="form-text" [id]="hintId()">{{ p?.hint | dynamicText | async }}</div>
|
|
436
|
-
}
|
|
427
|
+
@if (errorsToDisplay()[0]; as error) {
|
|
428
|
+
<div class="invalid-feedback d-block" [id]="errorId()" role="alert">{{ error.message }}</div>
|
|
429
|
+
} @else if (p?.hint) {
|
|
430
|
+
<div class="form-text" [id]="hintId()">{{ p?.hint | dynamicText | async }}</div>
|
|
437
431
|
}
|
|
438
432
|
</div>
|
|
439
433
|
}
|
|
@@ -472,8 +466,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
|
|
|
472
466
|
{{ p?.validFeedback | dynamicText | async }}
|
|
473
467
|
</div>
|
|
474
468
|
}
|
|
475
|
-
@
|
|
476
|
-
<div class="invalid-feedback d-block" [id]="errorId()
|
|
469
|
+
@if (errorsToDisplay()[0]; as error) {
|
|
470
|
+
<div class="invalid-feedback d-block" [id]="errorId()" role="alert">{{ error.message }}</div>
|
|
477
471
|
}
|
|
478
472
|
</div>
|
|
479
473
|
} @else {
|
|
@@ -507,12 +501,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
|
|
|
507
501
|
{{ p?.validFeedback | dynamicText | async }}
|
|
508
502
|
</div>
|
|
509
503
|
}
|
|
510
|
-
@
|
|
511
|
-
<div class="invalid-feedback d-block" [id]="errorId()
|
|
512
|
-
} @
|
|
513
|
-
|
|
514
|
-
<div class="form-text" [id]="hintId()">{{ p?.hint | dynamicText | async }}</div>
|
|
515
|
-
}
|
|
504
|
+
@if (errorsToDisplay()[0]; as error) {
|
|
505
|
+
<div class="invalid-feedback d-block" [id]="errorId()" role="alert">{{ error.message }}</div>
|
|
506
|
+
} @else if (p?.hint) {
|
|
507
|
+
<div class="form-text" [id]="hintId()">{{ p?.hint | dynamicText | async }}</div>
|
|
516
508
|
}
|
|
517
509
|
</div>
|
|
518
510
|
}
|
|
@@ -654,8 +646,8 @@ class BsInputFieldComponent {
|
|
|
654
646
|
{{ p?.validFeedback | dynamicText | async }}
|
|
655
647
|
</div>
|
|
656
648
|
}
|
|
657
|
-
@
|
|
658
|
-
<div class="invalid-feedback d-block" [id]="errorId()
|
|
649
|
+
@if (errorsToDisplay()[0]; as error) {
|
|
650
|
+
<div class="invalid-feedback d-block" [id]="errorId()" role="alert">{{ error.message }}</div>
|
|
659
651
|
}
|
|
660
652
|
</div>
|
|
661
653
|
} @else {
|
|
@@ -686,12 +678,10 @@ class BsInputFieldComponent {
|
|
|
686
678
|
{{ p?.validFeedback | dynamicText | async }}
|
|
687
679
|
</div>
|
|
688
680
|
}
|
|
689
|
-
@
|
|
690
|
-
<div class="invalid-feedback d-block" [id]="errorId()
|
|
691
|
-
} @
|
|
692
|
-
|
|
693
|
-
<div class="form-text" [id]="hintId()">{{ p?.hint | dynamicText | async }}</div>
|
|
694
|
-
}
|
|
681
|
+
@if (errorsToDisplay()[0]; as error) {
|
|
682
|
+
<div class="invalid-feedback d-block" [id]="errorId()" role="alert">{{ error.message }}</div>
|
|
683
|
+
} @else if (p?.hint) {
|
|
684
|
+
<div class="form-text" [id]="hintId()">{{ p?.hint | dynamicText | async }}</div>
|
|
695
685
|
}
|
|
696
686
|
</div>
|
|
697
687
|
}
|
|
@@ -729,8 +719,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
|
|
|
729
719
|
{{ p?.validFeedback | dynamicText | async }}
|
|
730
720
|
</div>
|
|
731
721
|
}
|
|
732
|
-
@
|
|
733
|
-
<div class="invalid-feedback d-block" [id]="errorId()
|
|
722
|
+
@if (errorsToDisplay()[0]; as error) {
|
|
723
|
+
<div class="invalid-feedback d-block" [id]="errorId()" role="alert">{{ error.message }}</div>
|
|
734
724
|
}
|
|
735
725
|
</div>
|
|
736
726
|
} @else {
|
|
@@ -761,12 +751,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
|
|
|
761
751
|
{{ p?.validFeedback | dynamicText | async }}
|
|
762
752
|
</div>
|
|
763
753
|
}
|
|
764
|
-
@
|
|
765
|
-
<div class="invalid-feedback d-block" [id]="errorId()
|
|
766
|
-
} @
|
|
767
|
-
|
|
768
|
-
<div class="form-text" [id]="hintId()">{{ p?.hint | dynamicText | async }}</div>
|
|
769
|
-
}
|
|
754
|
+
@if (errorsToDisplay()[0]; as error) {
|
|
755
|
+
<div class="invalid-feedback d-block" [id]="errorId()" role="alert">{{ error.message }}</div>
|
|
756
|
+
} @else if (p?.hint) {
|
|
757
|
+
<div class="form-text" [id]="hintId()">{{ p?.hint | dynamicText | async }}</div>
|
|
770
758
|
}
|
|
771
759
|
</div>
|
|
772
760
|
}
|
|
@@ -890,12 +878,10 @@ class BsMultiCheckboxFieldComponent {
|
|
|
890
878
|
}
|
|
891
879
|
</div>
|
|
892
880
|
|
|
893
|
-
@
|
|
894
|
-
<div class="invalid-feedback d-block" [id]="errorId()
|
|
895
|
-
} @
|
|
896
|
-
|
|
897
|
-
<div class="form-text" [id]="hintId()">{{ hint | dynamicText | async }}</div>
|
|
898
|
-
}
|
|
881
|
+
@if (errorsToDisplay()[0]; as error) {
|
|
882
|
+
<div class="invalid-feedback d-block" [id]="errorId()" role="alert">{{ error.message }}</div>
|
|
883
|
+
} @else if (props()?.hint; as hint) {
|
|
884
|
+
<div class="form-text" [id]="hintId()">{{ hint | dynamicText | async }}</div>
|
|
899
885
|
}
|
|
900
886
|
`, isInline: true, 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}.checkbox-group{margin-bottom:.5rem}:host([hidden]){display:none!important}\n"], dependencies: [{ kind: "pipe", type: DynamicTextPipe, name: "dynamicText" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
901
887
|
}
|
|
@@ -936,12 +922,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
|
|
|
936
922
|
}
|
|
937
923
|
</div>
|
|
938
924
|
|
|
939
|
-
@
|
|
940
|
-
<div class="invalid-feedback d-block" [id]="errorId()
|
|
941
|
-
} @
|
|
942
|
-
|
|
943
|
-
<div class="form-text" [id]="hintId()">{{ hint | dynamicText | async }}</div>
|
|
944
|
-
}
|
|
925
|
+
@if (errorsToDisplay()[0]; as error) {
|
|
926
|
+
<div class="invalid-feedback d-block" [id]="errorId()" role="alert">{{ error.message }}</div>
|
|
927
|
+
} @else if (props()?.hint; as hint) {
|
|
928
|
+
<div class="form-text" [id]="hintId()">{{ hint | dynamicText | async }}</div>
|
|
945
929
|
}
|
|
946
930
|
`, host: {
|
|
947
931
|
'[class]': 'className() || ""',
|
|
@@ -1136,12 +1120,10 @@ class BsRadioFieldComponent {
|
|
|
1136
1120
|
[ariaDescribedBy]="ariaDescribedBy()"
|
|
1137
1121
|
/>
|
|
1138
1122
|
|
|
1139
|
-
@
|
|
1140
|
-
<div class="invalid-feedback d-block" [id]="errorId()
|
|
1141
|
-
} @
|
|
1142
|
-
|
|
1143
|
-
<div class="form-text" [id]="hintId()">{{ hint | dynamicText | async }}</div>
|
|
1144
|
-
}
|
|
1123
|
+
@if (errorsToDisplay()[0]; as error) {
|
|
1124
|
+
<div class="invalid-feedback d-block" [id]="errorId()" role="alert">{{ error.message }}</div>
|
|
1125
|
+
} @else if (props()?.hint; as hint) {
|
|
1126
|
+
<div class="form-text" [id]="hintId()">{{ hint | dynamicText | async }}</div>
|
|
1145
1127
|
}
|
|
1146
1128
|
</div>
|
|
1147
1129
|
`, isInline: true, 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"], dependencies: [{ kind: "component", type: BsRadioGroupComponent, selector: "df-bs-radio-group", inputs: ["value", "disabled", "readonly", "name", "label", "options", "properties", "meta", "ariaDescribedBy"], outputs: ["valueChange"] }, { kind: "directive", type: FormField, selector: "[formField]", inputs: ["formField"] }, { kind: "pipe", type: DynamicTextPipe, name: "dynamicText" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
@@ -1164,12 +1146,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
|
|
|
1164
1146
|
[ariaDescribedBy]="ariaDescribedBy()"
|
|
1165
1147
|
/>
|
|
1166
1148
|
|
|
1167
|
-
@
|
|
1168
|
-
<div class="invalid-feedback d-block" [id]="errorId()
|
|
1169
|
-
} @
|
|
1170
|
-
|
|
1171
|
-
<div class="form-text" [id]="hintId()">{{ hint | dynamicText | async }}</div>
|
|
1172
|
-
}
|
|
1149
|
+
@if (errorsToDisplay()[0]; as error) {
|
|
1150
|
+
<div class="invalid-feedback d-block" [id]="errorId()" role="alert">{{ error.message }}</div>
|
|
1151
|
+
} @else if (props()?.hint; as hint) {
|
|
1152
|
+
<div class="form-text" [id]="hintId()">{{ hint | dynamicText | async }}</div>
|
|
1173
1153
|
}
|
|
1174
1154
|
</div>
|
|
1175
1155
|
`, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
@@ -1256,12 +1236,10 @@ class BsSelectFieldComponent {
|
|
|
1256
1236
|
}
|
|
1257
1237
|
</select>
|
|
1258
1238
|
|
|
1259
|
-
@
|
|
1260
|
-
<div class="invalid-feedback d-block" [id]="errorId()
|
|
1261
|
-
} @
|
|
1262
|
-
|
|
1263
|
-
<div class="form-text" [id]="hintId()">{{ hint | dynamicText | async }}</div>
|
|
1264
|
-
}
|
|
1239
|
+
@if (errorsToDisplay()[0]; as error) {
|
|
1240
|
+
<div class="invalid-feedback d-block" [id]="errorId()" role="alert">{{ error.message }}</div>
|
|
1241
|
+
} @else if (props()?.hint; as hint) {
|
|
1242
|
+
<div class="form-text" [id]="hintId()">{{ hint | dynamicText | async }}</div>
|
|
1265
1243
|
}
|
|
1266
1244
|
</div>
|
|
1267
1245
|
`, isInline: true, 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"], dependencies: [{ kind: "directive", type: FormField, selector: "[formField]", inputs: ["formField"] }, { kind: "pipe", type: DynamicTextPipe, name: "dynamicText" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
@@ -1298,12 +1276,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
|
|
|
1298
1276
|
}
|
|
1299
1277
|
</select>
|
|
1300
1278
|
|
|
1301
|
-
@
|
|
1302
|
-
<div class="invalid-feedback d-block" [id]="errorId()
|
|
1303
|
-
} @
|
|
1304
|
-
|
|
1305
|
-
<div class="form-text" [id]="hintId()">{{ hint | dynamicText | async }}</div>
|
|
1306
|
-
}
|
|
1279
|
+
@if (errorsToDisplay()[0]; as error) {
|
|
1280
|
+
<div class="invalid-feedback d-block" [id]="errorId()" role="alert">{{ error.message }}</div>
|
|
1281
|
+
} @else if (props()?.hint; as hint) {
|
|
1282
|
+
<div class="form-text" [id]="hintId()">{{ hint | dynamicText | async }}</div>
|
|
1307
1283
|
}
|
|
1308
1284
|
</div>
|
|
1309
1285
|
`, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
@@ -1382,12 +1358,10 @@ class BsSliderFieldComponent {
|
|
|
1382
1358
|
class="form-range"
|
|
1383
1359
|
/>
|
|
1384
1360
|
|
|
1385
|
-
@
|
|
1386
|
-
<div class="invalid-feedback d-block" [id]="errorId()
|
|
1387
|
-
} @
|
|
1388
|
-
|
|
1389
|
-
<div class="form-text" [id]="hintId()">{{ hint | dynamicText | async }}</div>
|
|
1390
|
-
}
|
|
1361
|
+
@if (errorsToDisplay()[0]; as error) {
|
|
1362
|
+
<div class="invalid-feedback d-block" [id]="errorId()" role="alert">{{ error.message }}</div>
|
|
1363
|
+
} @else if (props()?.hint; as hint) {
|
|
1364
|
+
<div class="form-text" [id]="hintId()">{{ hint | dynamicText | async }}</div>
|
|
1391
1365
|
}
|
|
1392
1366
|
</div>
|
|
1393
1367
|
`, isInline: true, 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"], dependencies: [{ kind: "directive", type: FormField, selector: "[formField]", inputs: ["formField"] }, { kind: "directive", type: InputConstraintsDirective, selector: "[dfBsInputConstraints]", inputs: ["dfMin", "dfMax", "dfStep"] }, { kind: "pipe", type: DynamicTextPipe, name: "dynamicText" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
@@ -1422,12 +1396,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
|
|
|
1422
1396
|
class="form-range"
|
|
1423
1397
|
/>
|
|
1424
1398
|
|
|
1425
|
-
@
|
|
1426
|
-
<div class="invalid-feedback d-block" [id]="errorId()
|
|
1427
|
-
} @
|
|
1428
|
-
|
|
1429
|
-
<div class="form-text" [id]="hintId()">{{ hint | dynamicText | async }}</div>
|
|
1430
|
-
}
|
|
1399
|
+
@if (errorsToDisplay()[0]; as error) {
|
|
1400
|
+
<div class="invalid-feedback d-block" [id]="errorId()" role="alert">{{ error.message }}</div>
|
|
1401
|
+
} @else if (props()?.hint; as hint) {
|
|
1402
|
+
<div class="form-text" [id]="hintId()">{{ hint | dynamicText | async }}</div>
|
|
1431
1403
|
}
|
|
1432
1404
|
</div>
|
|
1433
1405
|
`, host: {
|
|
@@ -1503,8 +1475,8 @@ class BsTextareaFieldComponent {
|
|
|
1503
1475
|
{{ p?.validFeedback | dynamicText | async }}
|
|
1504
1476
|
</div>
|
|
1505
1477
|
}
|
|
1506
|
-
@
|
|
1507
|
-
<div class="invalid-feedback d-block" [id]="errorId()
|
|
1478
|
+
@if (errorsToDisplay()[0]; as error) {
|
|
1479
|
+
<div class="invalid-feedback d-block" [id]="errorId()" role="alert">{{ error.message }}</div>
|
|
1508
1480
|
}
|
|
1509
1481
|
</div>
|
|
1510
1482
|
} @else {
|
|
@@ -1534,12 +1506,10 @@ class BsTextareaFieldComponent {
|
|
|
1534
1506
|
{{ p?.validFeedback | dynamicText | async }}
|
|
1535
1507
|
</div>
|
|
1536
1508
|
}
|
|
1537
|
-
@
|
|
1538
|
-
<div class="invalid-feedback d-block" [id]="errorId()
|
|
1539
|
-
} @
|
|
1540
|
-
|
|
1541
|
-
<div class="form-text" [id]="hintId()">{{ p?.hint | dynamicText | async }}</div>
|
|
1542
|
-
}
|
|
1509
|
+
@if (errorsToDisplay()[0]; as error) {
|
|
1510
|
+
<div class="invalid-feedback d-block" [id]="errorId()" role="alert">{{ error.message }}</div>
|
|
1511
|
+
} @else if (p?.hint) {
|
|
1512
|
+
<div class="form-text" [id]="hintId()">{{ p?.hint | dynamicText | async }}</div>
|
|
1543
1513
|
}
|
|
1544
1514
|
</div>
|
|
1545
1515
|
}
|
|
@@ -1575,8 +1545,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
|
|
|
1575
1545
|
{{ p?.validFeedback | dynamicText | async }}
|
|
1576
1546
|
</div>
|
|
1577
1547
|
}
|
|
1578
|
-
@
|
|
1579
|
-
<div class="invalid-feedback d-block" [id]="errorId()
|
|
1548
|
+
@if (errorsToDisplay()[0]; as error) {
|
|
1549
|
+
<div class="invalid-feedback d-block" [id]="errorId()" role="alert">{{ error.message }}</div>
|
|
1580
1550
|
}
|
|
1581
1551
|
</div>
|
|
1582
1552
|
} @else {
|
|
@@ -1606,12 +1576,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
|
|
|
1606
1576
|
{{ p?.validFeedback | dynamicText | async }}
|
|
1607
1577
|
</div>
|
|
1608
1578
|
}
|
|
1609
|
-
@
|
|
1610
|
-
<div class="invalid-feedback d-block" [id]="errorId()
|
|
1611
|
-
} @
|
|
1612
|
-
|
|
1613
|
-
<div class="form-text" [id]="hintId()">{{ p?.hint | dynamicText | async }}</div>
|
|
1614
|
-
}
|
|
1579
|
+
@if (errorsToDisplay()[0]; as error) {
|
|
1580
|
+
<div class="invalid-feedback d-block" [id]="errorId()" role="alert">{{ error.message }}</div>
|
|
1581
|
+
} @else if (p?.hint) {
|
|
1582
|
+
<div class="form-text" [id]="hintId()">{{ p?.hint | dynamicText | async }}</div>
|
|
1615
1583
|
}
|
|
1616
1584
|
</div>
|
|
1617
1585
|
}
|
|
@@ -1687,12 +1655,10 @@ class BsToggleFieldComponent {
|
|
|
1687
1655
|
</label>
|
|
1688
1656
|
</div>
|
|
1689
1657
|
|
|
1690
|
-
@
|
|
1691
|
-
<div class="invalid-feedback d-block" [id]="errorId()
|
|
1692
|
-
} @
|
|
1693
|
-
|
|
1694
|
-
<div class="form-text" [id]="hintId()" [attr.hidden]="f().hidden() || null">{{ hint | dynamicText | async }}</div>
|
|
1695
|
-
}
|
|
1658
|
+
@if (errorsToDisplay()[0]; as error) {
|
|
1659
|
+
<div class="invalid-feedback d-block" [id]="errorId()" role="alert">{{ error.message }}</div>
|
|
1660
|
+
} @else if (props()?.hint; as hint) {
|
|
1661
|
+
<div class="form-text" [id]="hintId()" [attr.hidden]="f().hidden() || null">{{ hint | dynamicText | async }}</div>
|
|
1696
1662
|
}
|
|
1697
1663
|
`, isInline: true, 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}.form-switch-sm .form-check-input{width:1.75rem;height:1rem;font-size:.875rem}.form-switch-lg .form-check-input{width:3rem;height:1.75rem;font-size:1.125rem}\n"], dependencies: [{ kind: "directive", type: FormField, selector: "[formField]", inputs: ["formField"] }, { kind: "pipe", type: DynamicTextPipe, name: "dynamicText" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1698
1664
|
}
|
|
@@ -1725,12 +1691,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
|
|
|
1725
1691
|
</label>
|
|
1726
1692
|
</div>
|
|
1727
1693
|
|
|
1728
|
-
@
|
|
1729
|
-
<div class="invalid-feedback d-block" [id]="errorId()
|
|
1730
|
-
} @
|
|
1731
|
-
|
|
1732
|
-
<div class="form-text" [id]="hintId()" [attr.hidden]="f().hidden() || null">{{ hint | dynamicText | async }}</div>
|
|
1733
|
-
}
|
|
1694
|
+
@if (errorsToDisplay()[0]; as error) {
|
|
1695
|
+
<div class="invalid-feedback d-block" [id]="errorId()" role="alert">{{ error.message }}</div>
|
|
1696
|
+
} @else if (props()?.hint; as hint) {
|
|
1697
|
+
<div class="form-text" [id]="hintId()" [attr.hidden]="f().hidden() || null">{{ hint | dynamicText | async }}</div>
|
|
1734
1698
|
}
|
|
1735
1699
|
`, host: {
|
|
1736
1700
|
'[class]': 'className()',
|
|
@@ -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 RemoveArrayItemButtonField,\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 *\n * @param errorsToDisplay Signal containing the array of errors currently being displayed\n * @param errorId Signal containing the base ID for error elements\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 (space-separated IDs) 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 const errors = errorsToDisplay();\n if (errors.length > 0) {\n return errors.map((_, i) => `${errorId()}-${i}`).join(' ');\n }\n if (hasHint()) {\n return hintId();\n }\n return null;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, input, viewChild } 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 #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 @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId() + '-' + i\" role=\"alert\">{{ error.message }}</div>\n } @empty {\n @if (props()?.hint; as hint) {\n <div class=\"form-text\" [id]=\"hintId()\" [attr.hidden]=\"f().hidden() || null\">{{ hint | dynamicText | async }}</div>\n }\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 effect(() => {\n const indeterminate = this.props()?.indeterminate;\n const inputEl = this.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 @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId() + '-' + i\" 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 @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId() + '-' + i\" role=\"alert\">{{ error.message }}</div>\n } @empty {\n @if (p?.hint) {\n <div class=\"form-text\" [id]=\"hintId()\">{{ p?.hint | dynamicText | async }}</div>\n }\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 @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId() + '-' + i\" 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 @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId() + '-' + i\" role=\"alert\">{{ error.message }}</div>\n } @empty {\n @if (p?.hint) {\n <div class=\"form-text\" [id]=\"hintId()\">{{ p?.hint | dynamicText | async }}</div>\n }\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 @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId() + '-' + i\" role=\"alert\">{{ error.message }}</div>\n } @empty {\n @if (props()?.hint; as hint) {\n <div class=\"form-text\" [id]=\"hintId()\">{{ hint | dynamicText | async }}</div>\n }\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 @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId() + '-' + i\" role=\"alert\">{{ error.message }}</div>\n } @empty {\n @if (props()?.hint; as hint) {\n <div class=\"form-text\" [id]=\"hintId()\">{{ hint | dynamicText | async }}</div>\n }\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 @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId() + '-' + i\" role=\"alert\">{{ error.message }}</div>\n } @empty {\n @if (props()?.hint; as hint) {\n <div class=\"form-text\" [id]=\"hintId()\">{{ hint | dynamicText | async }}</div>\n }\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]=\"props()?.min ?? min()\"\n [dfMax]=\"props()?.max ?? max()\"\n [dfStep]=\"props()?.step ?? step()\"\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 @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId() + '-' + i\" role=\"alert\">{{ error.message }}</div>\n } @empty {\n @if (props()?.hint; as hint) {\n <div class=\"form-text\" [id]=\"hintId()\">{{ hint | dynamicText | async }}</div>\n }\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>(1);\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 { 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, 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 [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 @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId() + '-' + i\" role=\"alert\">{{ error.message }}</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 [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 @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId() + '-' + i\" role=\"alert\">{{ error.message }}</div>\n } @empty {\n @if (p?.hint) {\n <div class=\"form-text\" [id]=\"hintId()\">{{ p?.hint | dynamicText | async }}</div>\n }\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 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 @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <div class=\"invalid-feedback d-block\" [id]=\"errorId() + '-' + i\" role=\"alert\">{{ error.message }}</div>\n } @empty {\n @if (props()?.hint; as hint) {\n <div class=\"form-text\" [id]=\"hintId()\" [attr.hidden]=\"f().hidden() || null\">{{ hint | dynamicText | async }}</div>\n }\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 RemoveArrayItemButtonField,\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 RemoveArrayItem: 'removeArrayItem',\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, Signal } from '@angular/core';\nimport { 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 * @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\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 return inputs;\n });\n}\n","import { computed, inject, isSignal, Signal } from '@angular/core';\nimport {\n AddArrayItemEvent,\n ARRAY_CONTEXT,\n buildBaseInputs,\n DEFAULT_PROPS,\n DynamicFormLogger,\n FIELD_SIGNAL_CONTEXT,\n FieldDef,\n FieldWithValidation,\n FORM_OPTIONS,\n NextPageEvent,\n PreviousPageEvent,\n RemoveArrayItemEvent,\n resolveNextButtonDisabled,\n resolveSubmitButtonDisabled,\n RootFormRegistryService,\n} from '@ng-forge/dynamic-forms';\nimport { AddArrayItemButtonField, RemoveArrayItemButtonField } from './bs-button.type';\n\n/**\n * Mapper for submit button - configures native form submission via type=\"submit\"\n *\n * Unlike other buttons, submit buttons don't dispatch events directly.\n * Instead, they trigger native form submission which the form component\n * intercepts and dispatches to the EventBus.\n *\n * Disabled state is resolved using the button-logic-resolver which considers:\n * 1. Explicit `disabled: true` on the field definition\n * 2. Field-level `logic` array (if present, overrides form-level defaults)\n * 3. Form-level `options.submitButton` defaults (disableWhenInvalid, disableWhileSubmitting)\n *\n * @param fieldDef The submit button field definition\n * @returns Signal containing Record of input names to values for ngComponentOutlet\n */\nexport function submitButtonFieldMapper(fieldDef: FieldDef<Record<string, unknown>>): Signal<Record<string, unknown>> {\n const rootFormRegistry = inject(RootFormRegistryService);\n const defaultProps = inject(DEFAULT_PROPS);\n const formOptions = inject(FORM_OPTIONS);\n\n const fieldWithLogic = fieldDef as FieldDef<Record<string, unknown>> & Partial<FieldWithValidation>;\n\n return computed(() => {\n const baseInputs = buildBaseInputs(fieldDef, defaultProps());\n\n // Use rootFormRegistry instead of fieldSignalContext.form because when the submit button\n // is inside a group/array, fieldSignalContext.form points to the nested form tree,\n // not the root form. We need root form validity for submit button disabled state (#157).\n const disabledSignal = resolveSubmitButtonDisabled({\n form: rootFormRegistry.getRootForm()!,\n formOptions: formOptions(),\n fieldLogic: fieldWithLogic.logic,\n explicitlyDisabled: fieldDef.disabled,\n });\n\n const inputs: Record<string, unknown> = {\n ...baseInputs,\n // No event - native form submit handles it via form's onNativeSubmit\n // Set type=\"submit\" to trigger native form submission\n props: { ...(fieldDef.props as Record<string, unknown>), type: 'submit' },\n // Evaluate the signal inside the computed - component receives plain boolean\n disabled: disabledSignal(),\n };\n\n if (fieldDef.hidden !== undefined) {\n inputs['hidden'] = fieldDef.hidden;\n }\n\n return inputs;\n });\n}\n\n/**\n * Mapper for next page button - preconfigures NextPageEvent\n *\n * Disabled state is resolved using the button-logic-resolver which considers:\n * 1. Explicit `disabled: true` on the field definition\n * 2. Field-level `logic` array (if present, overrides form-level defaults)\n * 3. Form-level `options.nextButton` defaults (disableWhenPageInvalid, disableWhileSubmitting)\n *\n * @param fieldDef The next button field definition\n * @returns Signal containing Record of input names to values for ngComponentOutlet\n */\nexport function nextButtonFieldMapper(fieldDef: FieldDef<Record<string, unknown>>): Signal<Record<string, unknown>> {\n const fieldSignalContext = inject(FIELD_SIGNAL_CONTEXT);\n const defaultProps = inject(DEFAULT_PROPS);\n const formOptions = inject(FORM_OPTIONS);\n\n const fieldWithLogic = fieldDef as FieldDef<Record<string, unknown>> & Partial<FieldWithValidation>;\n\n return computed(() => {\n const baseInputs = buildBaseInputs(fieldDef, defaultProps());\n\n const disabledSignal = resolveNextButtonDisabled({\n form: fieldSignalContext.form,\n formOptions: formOptions(),\n fieldLogic: fieldWithLogic.logic,\n explicitlyDisabled: fieldDef.disabled,\n currentPageValid: fieldSignalContext.currentPageValid,\n });\n\n const inputs: Record<string, unknown> = {\n ...baseInputs,\n event: NextPageEvent,\n // Evaluate the signal inside the computed - component receives plain boolean\n disabled: disabledSignal(),\n };\n\n if (fieldDef.hidden !== undefined) {\n inputs['hidden'] = fieldDef.hidden;\n }\n\n return inputs;\n });\n}\n\n/**\n * Mapper for previous page button - preconfigures PreviousPageEvent\n * Note: Does not auto-disable based on validation. Users can explicitly disable if needed.\n *\n * @param fieldDef The previous button field definition\n * @returns Signal containing Record of input names to values for ngComponentOutlet\n */\nexport function previousButtonFieldMapper(fieldDef: FieldDef<Record<string, unknown>>): Signal<Record<string, unknown>> {\n const defaultProps = inject(DEFAULT_PROPS);\n\n return computed(() => {\n const baseInputs = buildBaseInputs(fieldDef, defaultProps());\n\n const inputs: Record<string, unknown> = {\n ...baseInputs,\n event: PreviousPageEvent,\n };\n\n // Add disabled binding only if explicitly set by user\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 return inputs;\n });\n}\n\n/**\n * Mapper for add array item button - preconfigures AddArrayItemEvent with array context.\n *\n * Supports two modes:\n * 1. Inside array template: Uses ARRAY_CONTEXT to determine target array\n * 2. Outside array: Uses `arrayKey` property from field definition\n *\n * @param fieldDef The add array item button field definition\n * @returns Signal containing Record of input names to values for ngComponentOutlet\n */\nexport function addArrayItemButtonFieldMapper(fieldDef: AddArrayItemButtonField): Signal<Record<string, unknown>> {\n const arrayContext = inject(ARRAY_CONTEXT, { optional: true });\n const logger = inject(DynamicFormLogger);\n const defaultProps = inject(DEFAULT_PROPS);\n\n // Determine the target array key\n // Priority: explicit arrayKey from fieldDef > arrayKey from context\n const targetArrayKey = fieldDef.arrayKey ?? arrayContext?.arrayKey;\n\n if (!targetArrayKey) {\n logger.warn(\n `addArrayItem button \"${fieldDef.key}\" has no array context. ` +\n 'Either place it inside an array field, or provide an explicit arrayKey property.',\n );\n }\n\n // Set default eventArgs for AddArrayItemEvent (arrayKey)\n // User can override by providing eventArgs in field definition\n const defaultEventArgs = ['$arrayKey'];\n const eventArgs = 'eventArgs' in fieldDef && fieldDef.eventArgs !== undefined ? fieldDef.eventArgs : defaultEventArgs;\n\n return computed(() => {\n const baseInputs = buildBaseInputs(fieldDef, defaultProps());\n\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 const inputs: Record<string, unknown> = {\n ...baseInputs,\n event: AddArrayItemEvent,\n eventArgs,\n eventContext: {\n key: fieldDef.key,\n index: getIndex(),\n arrayKey: targetArrayKey ?? '',\n formValue: arrayContext?.formValue ?? {},\n },\n };\n\n // Add disabled binding only if explicitly set by user\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 return inputs;\n });\n}\n\n/**\n * Mapper for remove array item button - preconfigures RemoveArrayItemEvent with array context.\n *\n * Supports two modes:\n * 1. Inside array template: Uses ARRAY_CONTEXT to determine target array and removes item at current index\n * 2. Outside array: Uses `arrayKey` property from field definition, removes last item by default\n *\n * @param fieldDef The remove array item button field definition\n * @returns Signal containing Record of input names to values for ngComponentOutlet\n */\nexport function removeArrayItemButtonFieldMapper(fieldDef: RemoveArrayItemButtonField): Signal<Record<string, unknown>> {\n const arrayContext = inject(ARRAY_CONTEXT, { optional: true });\n const logger = inject(DynamicFormLogger);\n const defaultProps = inject(DEFAULT_PROPS);\n\n // Determine the target array key\n // Priority: explicit arrayKey from fieldDef > arrayKey from context\n const targetArrayKey = fieldDef.arrayKey ?? arrayContext?.arrayKey;\n\n if (!targetArrayKey) {\n logger.warn(\n `removeArrayItem button \"${fieldDef.key}\" has no array context. ` +\n 'Either place it inside an array field, or provide an explicit arrayKey property.',\n );\n }\n\n // Set default eventArgs for RemoveArrayItemEvent (arrayKey, index if inside array)\n // When outside array, only pass arrayKey (removes last by default)\n // User can override by providing eventArgs in field definition\n const defaultEventArgs = arrayContext ? ['$arrayKey', '$index'] : ['$arrayKey'];\n const eventArgs = 'eventArgs' in fieldDef && fieldDef.eventArgs !== undefined ? fieldDef.eventArgs : defaultEventArgs;\n\n return computed(() => {\n const baseInputs = buildBaseInputs(fieldDef, defaultProps());\n\n // Read signal value if index is a signal (supports differential updates)\n const getIndex = () => {\n if (!arrayContext) return -1; // -1 means remove last (no specific index)\n return isSignal(arrayContext.index) ? arrayContext.index() : arrayContext.index;\n };\n\n const inputs: Record<string, unknown> = {\n ...baseInputs,\n event: RemoveArrayItemEvent,\n eventArgs,\n eventContext: {\n key: fieldDef.key,\n index: getIndex(),\n arrayKey: targetArrayKey ?? '',\n formValue: arrayContext?.formValue ?? {},\n },\n };\n\n // Add disabled binding only if explicitly set by user\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 return inputs;\n });\n}\n","import { FieldTypeDefinition } from '@ng-forge/dynamic-forms';\nimport { checkboxFieldMapper, datepickerFieldMapper, optionsFieldMapper, valueFieldMapper } from '@ng-forge/dynamic-forms/integration';\nimport { BsField } from '../types/types';\nimport { buttonFieldMapper } from '../fields/button/bs-button.mapper';\nimport {\n addArrayItemButtonFieldMapper,\n nextButtonFieldMapper,\n previousButtonFieldMapper,\n removeArrayItemButtonFieldMapper,\n submitButtonFieldMapper,\n} from '../fields/button/bs-specific-button.mapper';\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 },\n {\n name: BsField.Select,\n loadComponent: () => import('../fields/select/bs-select.component'),\n mapper: optionsFieldMapper,\n },\n {\n name: BsField.Checkbox,\n loadComponent: () => import('../fields/checkbox/bs-checkbox.component'),\n mapper: checkboxFieldMapper,\n },\n {\n name: BsField.Button,\n loadComponent: () => import('../fields/button/bs-button.component'),\n mapper: buttonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: BsField.Submit,\n loadComponent: () => import('../fields/button/bs-button.component'),\n mapper: submitButtonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: BsField.Next,\n loadComponent: () => import('../fields/button/bs-button.component'),\n mapper: nextButtonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: BsField.Previous,\n loadComponent: () => import('../fields/button/bs-button.component'),\n mapper: previousButtonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: BsField.AddArrayItem,\n loadComponent: () => import('../fields/button/bs-button.component'),\n mapper: addArrayItemButtonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: BsField.RemoveArrayItem,\n loadComponent: () => import('../fields/button/bs-button.component'),\n mapper: removeArrayItemButtonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: BsField.Textarea,\n loadComponent: () => import('../fields/textarea/bs-textarea.component'),\n mapper: valueFieldMapper,\n propsToMeta: ['rows'],\n },\n {\n name: BsField.Radio,\n loadComponent: () => import('../fields/radio/bs-radio.component'),\n mapper: optionsFieldMapper,\n },\n {\n name: BsField.MultiCheckbox,\n loadComponent: () => import('../fields/multi-checkbox/bs-multi-checkbox.component'),\n mapper: optionsFieldMapper,\n },\n {\n name: BsField.Datepicker,\n loadComponent: () => import('../fields/datepicker/bs-datepicker.component'),\n mapper: datepickerFieldMapper,\n },\n {\n name: BsField.Slider,\n loadComponent: () => import('../fields/slider/bs-slider.component'),\n mapper: valueFieldMapper,\n },\n {\n name: BsField.Toggle,\n loadComponent: () => import('../fields/toggle/bs-toggle.component'),\n mapper: checkboxFieldMapper,\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 RemoveArrayItemButtonField,\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 removeArrayItem: RemoveArrayItemButtonField;\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 { FieldTypeDefinition } from '@ng-forge/dynamic-forms';\nimport type { Provider } from '@angular/core';\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 with optional config providers\n */\nexport type FieldTypeDefinitionsWithConfig = FieldTypeDefinition[] & {\n __configProviders?: Provider[];\n};\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 for Bootstrap components\n */\nexport function withBootstrapFields(config?: BootstrapConfig): FieldTypeDefinitionsWithConfig {\n const fields = BOOTSTRAP_FIELD_TYPES as FieldTypeDefinitionsWithConfig;\n\n if (config) {\n fields.__configProviders = [\n {\n provide: BOOTSTRAP_CONFIG,\n useValue: config,\n },\n ];\n }\n\n return fields;\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 RemoveArrayItemButtonField,\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 RemoveArrayItemButtonField,\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, effect, ElementRef, inject, input, viewChild } 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 #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 effect(() => {\n const indeterminate = this.props()?.indeterminate;\n const inputEl = this.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]=\"props()?.min ?? min()\"\n [dfMax]=\"props()?.max ?? max()\"\n [dfStep]=\"props()?.step ?? step()\"\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>(1);\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 { 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, 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 [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 }\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 [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 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 RemoveArrayItemButtonField,\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 RemoveArrayItem: 'removeArrayItem',\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, Signal } from '@angular/core';\nimport { 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 * @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\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 return inputs;\n });\n}\n","import { computed, inject, isSignal, Signal } from '@angular/core';\nimport {\n AddArrayItemEvent,\n ARRAY_CONTEXT,\n buildBaseInputs,\n DEFAULT_PROPS,\n DynamicFormLogger,\n FIELD_SIGNAL_CONTEXT,\n FieldDef,\n FieldWithValidation,\n FORM_OPTIONS,\n NextPageEvent,\n PreviousPageEvent,\n RemoveArrayItemEvent,\n resolveNextButtonDisabled,\n resolveSubmitButtonDisabled,\n RootFormRegistryService,\n} from '@ng-forge/dynamic-forms';\nimport { AddArrayItemButtonField, RemoveArrayItemButtonField } from './bs-button.type';\n\n/**\n * Mapper for submit button - configures native form submission via type=\"submit\"\n *\n * Unlike other buttons, submit buttons don't dispatch events directly.\n * Instead, they trigger native form submission which the form component\n * intercepts and dispatches to the EventBus.\n *\n * Disabled state is resolved using the button-logic-resolver which considers:\n * 1. Explicit `disabled: true` on the field definition\n * 2. Field-level `logic` array (if present, overrides form-level defaults)\n * 3. Form-level `options.submitButton` defaults (disableWhenInvalid, disableWhileSubmitting)\n *\n * @param fieldDef The submit button field definition\n * @returns Signal containing Record of input names to values for ngComponentOutlet\n */\nexport function submitButtonFieldMapper(fieldDef: FieldDef<Record<string, unknown>>): Signal<Record<string, unknown>> {\n const rootFormRegistry = inject(RootFormRegistryService);\n const defaultProps = inject(DEFAULT_PROPS);\n const formOptions = inject(FORM_OPTIONS);\n\n const fieldWithLogic = fieldDef as FieldDef<Record<string, unknown>> & Partial<FieldWithValidation>;\n\n return computed(() => {\n const baseInputs = buildBaseInputs(fieldDef, defaultProps());\n\n // Use rootFormRegistry instead of fieldSignalContext.form because when the submit button\n // is inside a group/array, fieldSignalContext.form points to the nested form tree,\n // not the root form. We need root form validity for submit button disabled state (#157).\n const disabledSignal = resolveSubmitButtonDisabled({\n form: rootFormRegistry.getRootForm()!,\n formOptions: formOptions(),\n fieldLogic: fieldWithLogic.logic,\n explicitlyDisabled: fieldDef.disabled,\n });\n\n const inputs: Record<string, unknown> = {\n ...baseInputs,\n // No event - native form submit handles it via form's onNativeSubmit\n // Set type=\"submit\" to trigger native form submission\n props: { ...(fieldDef.props as Record<string, unknown>), type: 'submit' },\n // Evaluate the signal inside the computed - component receives plain boolean\n disabled: disabledSignal(),\n };\n\n if (fieldDef.hidden !== undefined) {\n inputs['hidden'] = fieldDef.hidden;\n }\n\n return inputs;\n });\n}\n\n/**\n * Mapper for next page button - preconfigures NextPageEvent\n *\n * Disabled state is resolved using the button-logic-resolver which considers:\n * 1. Explicit `disabled: true` on the field definition\n * 2. Field-level `logic` array (if present, overrides form-level defaults)\n * 3. Form-level `options.nextButton` defaults (disableWhenPageInvalid, disableWhileSubmitting)\n *\n * @param fieldDef The next button field definition\n * @returns Signal containing Record of input names to values for ngComponentOutlet\n */\nexport function nextButtonFieldMapper(fieldDef: FieldDef<Record<string, unknown>>): Signal<Record<string, unknown>> {\n const fieldSignalContext = inject(FIELD_SIGNAL_CONTEXT);\n const defaultProps = inject(DEFAULT_PROPS);\n const formOptions = inject(FORM_OPTIONS);\n\n const fieldWithLogic = fieldDef as FieldDef<Record<string, unknown>> & Partial<FieldWithValidation>;\n\n return computed(() => {\n const baseInputs = buildBaseInputs(fieldDef, defaultProps());\n\n const disabledSignal = resolveNextButtonDisabled({\n form: fieldSignalContext.form,\n formOptions: formOptions(),\n fieldLogic: fieldWithLogic.logic,\n explicitlyDisabled: fieldDef.disabled,\n currentPageValid: fieldSignalContext.currentPageValid,\n });\n\n const inputs: Record<string, unknown> = {\n ...baseInputs,\n event: NextPageEvent,\n // Evaluate the signal inside the computed - component receives plain boolean\n disabled: disabledSignal(),\n };\n\n if (fieldDef.hidden !== undefined) {\n inputs['hidden'] = fieldDef.hidden;\n }\n\n return inputs;\n });\n}\n\n/**\n * Mapper for previous page button - preconfigures PreviousPageEvent\n * Note: Does not auto-disable based on validation. Users can explicitly disable if needed.\n *\n * @param fieldDef The previous button field definition\n * @returns Signal containing Record of input names to values for ngComponentOutlet\n */\nexport function previousButtonFieldMapper(fieldDef: FieldDef<Record<string, unknown>>): Signal<Record<string, unknown>> {\n const defaultProps = inject(DEFAULT_PROPS);\n\n return computed(() => {\n const baseInputs = buildBaseInputs(fieldDef, defaultProps());\n\n const inputs: Record<string, unknown> = {\n ...baseInputs,\n event: PreviousPageEvent,\n };\n\n // Add disabled binding only if explicitly set by user\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 return inputs;\n });\n}\n\n/**\n * Mapper for add array item button - preconfigures AddArrayItemEvent with array context.\n *\n * Supports two modes:\n * 1. Inside array template: Uses ARRAY_CONTEXT to determine target array\n * 2. Outside array: Uses `arrayKey` property from field definition\n *\n * @param fieldDef The add array item button field definition\n * @returns Signal containing Record of input names to values for ngComponentOutlet\n */\nexport function addArrayItemButtonFieldMapper(fieldDef: AddArrayItemButtonField): Signal<Record<string, unknown>> {\n const arrayContext = inject(ARRAY_CONTEXT, { optional: true });\n const logger = inject(DynamicFormLogger);\n const defaultProps = inject(DEFAULT_PROPS);\n\n // Determine the target array key\n // Priority: explicit arrayKey from fieldDef > arrayKey from context\n const targetArrayKey = fieldDef.arrayKey ?? arrayContext?.arrayKey;\n\n if (!targetArrayKey) {\n logger.warn(\n `addArrayItem button \"${fieldDef.key}\" has no array context. ` +\n 'Either place it inside an array field, or provide an explicit arrayKey property.',\n );\n }\n\n // Set default eventArgs for AddArrayItemEvent (arrayKey)\n // User can override by providing eventArgs in field definition\n const defaultEventArgs = ['$arrayKey'];\n const eventArgs = 'eventArgs' in fieldDef && fieldDef.eventArgs !== undefined ? fieldDef.eventArgs : defaultEventArgs;\n\n return computed(() => {\n const baseInputs = buildBaseInputs(fieldDef, defaultProps());\n\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 const inputs: Record<string, unknown> = {\n ...baseInputs,\n event: AddArrayItemEvent,\n eventArgs,\n eventContext: {\n key: fieldDef.key,\n index: getIndex(),\n arrayKey: targetArrayKey ?? '',\n formValue: arrayContext?.formValue ?? {},\n },\n };\n\n // Add disabled binding only if explicitly set by user\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 return inputs;\n });\n}\n\n/**\n * Mapper for remove array item button - preconfigures RemoveArrayItemEvent with array context.\n *\n * Supports two modes:\n * 1. Inside array template: Uses ARRAY_CONTEXT to determine target array and removes item at current index\n * 2. Outside array: Uses `arrayKey` property from field definition, removes last item by default\n *\n * @param fieldDef The remove array item button field definition\n * @returns Signal containing Record of input names to values for ngComponentOutlet\n */\nexport function removeArrayItemButtonFieldMapper(fieldDef: RemoveArrayItemButtonField): Signal<Record<string, unknown>> {\n const arrayContext = inject(ARRAY_CONTEXT, { optional: true });\n const logger = inject(DynamicFormLogger);\n const defaultProps = inject(DEFAULT_PROPS);\n\n // Determine the target array key\n // Priority: explicit arrayKey from fieldDef > arrayKey from context\n const targetArrayKey = fieldDef.arrayKey ?? arrayContext?.arrayKey;\n\n if (!targetArrayKey) {\n logger.warn(\n `removeArrayItem button \"${fieldDef.key}\" has no array context. ` +\n 'Either place it inside an array field, or provide an explicit arrayKey property.',\n );\n }\n\n // Set default eventArgs for RemoveArrayItemEvent (arrayKey, index if inside array)\n // When outside array, only pass arrayKey (removes last by default)\n // User can override by providing eventArgs in field definition\n const defaultEventArgs = arrayContext ? ['$arrayKey', '$index'] : ['$arrayKey'];\n const eventArgs = 'eventArgs' in fieldDef && fieldDef.eventArgs !== undefined ? fieldDef.eventArgs : defaultEventArgs;\n\n return computed(() => {\n const baseInputs = buildBaseInputs(fieldDef, defaultProps());\n\n // Read signal value if index is a signal (supports differential updates)\n const getIndex = () => {\n if (!arrayContext) return -1; // -1 means remove last (no specific index)\n return isSignal(arrayContext.index) ? arrayContext.index() : arrayContext.index;\n };\n\n const inputs: Record<string, unknown> = {\n ...baseInputs,\n event: RemoveArrayItemEvent,\n eventArgs,\n eventContext: {\n key: fieldDef.key,\n index: getIndex(),\n arrayKey: targetArrayKey ?? '',\n formValue: arrayContext?.formValue ?? {},\n },\n };\n\n // Add disabled binding only if explicitly set by user\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 return inputs;\n });\n}\n","import { FieldTypeDefinition } from '@ng-forge/dynamic-forms';\nimport { checkboxFieldMapper, datepickerFieldMapper, optionsFieldMapper, valueFieldMapper } from '@ng-forge/dynamic-forms/integration';\nimport { BsField } from '../types/types';\nimport { buttonFieldMapper } from '../fields/button/bs-button.mapper';\nimport {\n addArrayItemButtonFieldMapper,\n nextButtonFieldMapper,\n previousButtonFieldMapper,\n removeArrayItemButtonFieldMapper,\n submitButtonFieldMapper,\n} from '../fields/button/bs-specific-button.mapper';\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 },\n {\n name: BsField.Select,\n loadComponent: () => import('../fields/select/bs-select.component'),\n mapper: optionsFieldMapper,\n },\n {\n name: BsField.Checkbox,\n loadComponent: () => import('../fields/checkbox/bs-checkbox.component'),\n mapper: checkboxFieldMapper,\n },\n {\n name: BsField.Button,\n loadComponent: () => import('../fields/button/bs-button.component'),\n mapper: buttonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: BsField.Submit,\n loadComponent: () => import('../fields/button/bs-button.component'),\n mapper: submitButtonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: BsField.Next,\n loadComponent: () => import('../fields/button/bs-button.component'),\n mapper: nextButtonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: BsField.Previous,\n loadComponent: () => import('../fields/button/bs-button.component'),\n mapper: previousButtonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: BsField.AddArrayItem,\n loadComponent: () => import('../fields/button/bs-button.component'),\n mapper: addArrayItemButtonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: BsField.RemoveArrayItem,\n loadComponent: () => import('../fields/button/bs-button.component'),\n mapper: removeArrayItemButtonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: BsField.Textarea,\n loadComponent: () => import('../fields/textarea/bs-textarea.component'),\n mapper: valueFieldMapper,\n propsToMeta: ['rows'],\n },\n {\n name: BsField.Radio,\n loadComponent: () => import('../fields/radio/bs-radio.component'),\n mapper: optionsFieldMapper,\n },\n {\n name: BsField.MultiCheckbox,\n loadComponent: () => import('../fields/multi-checkbox/bs-multi-checkbox.component'),\n mapper: optionsFieldMapper,\n },\n {\n name: BsField.Datepicker,\n loadComponent: () => import('../fields/datepicker/bs-datepicker.component'),\n mapper: datepickerFieldMapper,\n },\n {\n name: BsField.Slider,\n loadComponent: () => import('../fields/slider/bs-slider.component'),\n mapper: valueFieldMapper,\n },\n {\n name: BsField.Toggle,\n loadComponent: () => import('../fields/toggle/bs-toggle.component'),\n mapper: checkboxFieldMapper,\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 RemoveArrayItemButtonField,\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 removeArrayItem: RemoveArrayItemButtonField;\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 { FieldTypeDefinition } from '@ng-forge/dynamic-forms';\nimport type { Provider } from '@angular/core';\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 with optional config providers\n */\nexport type FieldTypeDefinitionsWithConfig = FieldTypeDefinition[] & {\n __configProviders?: Provider[];\n};\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 for Bootstrap components\n */\nexport function withBootstrapFields(config?: BootstrapConfig): FieldTypeDefinitionsWithConfig {\n const fields = BOOTSTRAP_FIELD_TYPES as FieldTypeDefinitionsWithConfig;\n\n if (config) {\n fields.__configProviders = [\n {\n provide: BOOTSTRAP_CONFIG,\n useValue: config,\n },\n ];\n }\n\n return fields;\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 RemoveArrayItemButtonField,\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.
|
|
3
|
+
"version": "0.5.1",
|
|
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.1.0",
|
|
32
32
|
"@angular/core": "~21.1.0",
|
|
33
33
|
"@angular/forms": "~21.1.0",
|
|
34
|
-
"@ng-forge/dynamic-forms": "~0.
|
|
34
|
+
"@ng-forge/dynamic-forms": "~0.5.0",
|
|
35
35
|
"rxjs": ">=7.0.0"
|
|
36
36
|
},
|
|
37
37
|
"module": "fesm2022/ng-forge-dynamic-forms-bootstrap.mjs",
|