@ng-forge/dynamic-forms-ionic 0.3.0 → 0.3.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
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <img src="https://raw.githubusercontent.com/ng-forge/ng-forge/main/logo-light.svg" alt="ng-forge logo" width="400"/>
2
+ <img src="./logo.svg" alt="ng-forge Dynamic Forms" width="400"/>
3
3
  </p>
4
4
 
5
5
  # @ng-forge/dynamic-forms-ionic
@@ -65,8 +65,11 @@ class IonicButtonFieldComponent {
65
65
  }
66
66
  }
67
67
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: IonicButtonFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
68
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.8", type: IonicButtonFieldComponent, isStandalone: true, selector: "df-ion-button", inputs: { key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, hidden: { classPropertyName: "hidden", publicName: "hidden", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, event: { classPropertyName: "event", publicName: "event", isSignal: true, isRequired: false, transformFunction: null }, eventArgs: { classPropertyName: "eventArgs", publicName: "eventArgs", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, eventContext: { classPropertyName: "eventContext", publicName: "eventContext", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "id": "`${key()}`", "attr.data-testid": "key()" } }, ngImport: i0, template: `
68
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.8", type: IonicButtonFieldComponent, isStandalone: true, selector: "df-ion-button", inputs: { key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, hidden: { classPropertyName: "hidden", publicName: "hidden", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, event: { classPropertyName: "event", publicName: "event", isSignal: true, isRequired: false, transformFunction: null }, eventArgs: { classPropertyName: "eventArgs", publicName: "eventArgs", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, eventContext: { classPropertyName: "eventContext", publicName: "eventContext", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "id": "`${key()}`", "class": "className()", "attr.data-testid": "key()" } }, ngImport: i0, template: `
69
+ @let buttonId = key() + '-button';
70
+
69
71
  <ion-button
72
+ [id]="buttonId"
70
73
  [type]="buttonType()"
71
74
  [expand]="props()?.expand"
72
75
  [fill]="props()?.fill || 'solid'"
@@ -74,7 +77,6 @@ class IonicButtonFieldComponent {
74
77
  [size]="props()?.size"
75
78
  [color]="props()?.color || 'primary'"
76
79
  [strong]="props()?.strong"
77
- [class]="className() || ''"
78
80
  [disabled]="disabled()"
79
81
  [attr.data-testid]="buttonTestId()"
80
82
  (click)="onClick()"
@@ -90,10 +92,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
90
92
  imports: [IonButton, DynamicTextPipe, AsyncPipe],
91
93
  host: {
92
94
  '[id]': '`${key()}`',
95
+ '[class]': 'className()',
93
96
  '[attr.data-testid]': 'key()',
94
97
  },
95
98
  template: `
99
+ @let buttonId = key() + '-button';
100
+
96
101
  <ion-button
102
+ [id]="buttonId"
97
103
  [type]="buttonType()"
98
104
  [expand]="props()?.expand"
99
105
  [fill]="props()?.fill || 'solid'"
@@ -101,7 +107,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
101
107
  [size]="props()?.size"
102
108
  [color]="props()?.color || 'primary'"
103
109
  [strong]="props()?.strong"
104
- [class]="className() || ''"
105
110
  [disabled]="disabled()"
106
111
  [attr.data-testid]="buttonTestId()"
107
112
  (click)="onClick()"
@@ -159,8 +164,10 @@ class IonicCheckboxFieldComponent {
159
164
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: IonicCheckboxFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
160
165
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: IonicCheckboxFieldComponent, isStandalone: true, selector: "df-ion-checkbox", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, meta: { classPropertyName: "meta", publicName: "meta", isSignal: true, isRequired: false, transformFunction: null }, validationMessages: { classPropertyName: "validationMessages", publicName: "validationMessages", isSignal: true, isRequired: false, transformFunction: null }, defaultValidationMessages: { classPropertyName: "defaultValidationMessages", publicName: "defaultValidationMessages", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "className()", "id": "`${key()}`", "attr.data-testid": "key()", "attr.hidden": "field()().hidden() || null" } }, ngImport: i0, template: `
161
166
  @let f = field();
167
+ @let checkboxId = key() + '-checkbox';
162
168
 
163
169
  <ion-checkbox
170
+ [id]="checkboxId"
164
171
  [formField]="f"
165
172
  [labelPlacement]="props()?.labelPlacement ?? 'end'"
166
173
  [justify]="props()?.justify"
@@ -182,8 +189,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
182
189
  type: Component,
183
190
  args: [{ selector: 'df-ion-checkbox', imports: [IonCheckbox, IonNote, FormField, DynamicTextPipe, AsyncPipe], template: `
184
191
  @let f = field();
192
+ @let checkboxId = key() + '-checkbox';
185
193
 
186
194
  <ion-checkbox
195
+ [id]="checkboxId"
187
196
  [formField]="f"
188
197
  [labelPlacement]="props()?.labelPlacement ?? 'end'"
189
198
  [justify]="props()?.justify"
@@ -300,8 +309,10 @@ class IonicDatepickerFieldComponent {
300
309
  @let f = field(); @let dateValue = f().value();
301
310
  @let ariaInvalid = isAriaInvalid();
302
311
  @let ariaRequired = isRequired() || null;
312
+ @let inputId = key() + '-input';
303
313
 
304
314
  <ion-input
315
+ [id]="inputId"
305
316
  [label]="(label() | dynamicText | async) ?? undefined"
306
317
  [labelPlacement]="'stacked'"
307
318
  [placeholder]="(placeholder() | dynamicText | async) ?? ''"
@@ -368,8 +379,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
368
379
  @let f = field(); @let dateValue = f().value();
369
380
  @let ariaInvalid = isAriaInvalid();
370
381
  @let ariaRequired = isRequired() || null;
382
+ @let inputId = key() + '-input';
371
383
 
372
384
  <ion-input
385
+ [id]="inputId"
373
386
  [label]="(label() | dynamicText | async) ?? undefined"
374
387
  [labelPlacement]="'stacked'"
375
388
  [placeholder]="(placeholder() | dynamicText | async) ?? ''"
@@ -496,8 +509,10 @@ class IonicInputFieldComponent {
496
509
  @let f = field();
497
510
  @let ariaInvalid = isAriaInvalid();
498
511
  @let ariaRequired = isRequired() || null;
512
+ @let inputId = key() + '-input';
499
513
 
500
514
  <ion-input
515
+ [id]="inputId"
501
516
  [type]="props()?.type ?? 'text'"
502
517
  [formField]="f"
503
518
  [label]="(label() | dynamicText | async) ?? undefined"
@@ -525,8 +540,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
525
540
  @let f = field();
526
541
  @let ariaInvalid = isAriaInvalid();
527
542
  @let ariaRequired = isRequired() || null;
543
+ @let inputId = key() + '-input';
528
544
 
529
545
  <ion-input
546
+ [id]="inputId"
530
547
  [type]="props()?.type ?? 'text'"
531
548
  [formField]="f"
532
549
  [label]="(label() | dynamicText | async) ?? undefined"
@@ -750,11 +767,13 @@ class IonicRadioFieldComponent {
750
767
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: IonicRadioFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
751
768
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: IonicRadioFieldComponent, isStandalone: true, selector: "df-ion-radio", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, meta: { classPropertyName: "meta", publicName: "meta", isSignal: true, isRequired: false, transformFunction: null }, validationMessages: { classPropertyName: "validationMessages", publicName: "validationMessages", isSignal: true, isRequired: false, transformFunction: null }, defaultValidationMessages: { classPropertyName: "defaultValidationMessages", publicName: "defaultValidationMessages", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "className()", "id": "`${key()}`", "attr.data-testid": "key()", "attr.hidden": "field()().hidden() || null" } }, ngImport: i0, template: `
752
769
  @let f = field();
770
+ @let radioGroupId = key() + '-radio-group';
753
771
  @if (label(); as label) {
754
772
  <div class="radio-label">{{ label | dynamicText | async }}</div>
755
773
  }
756
774
 
757
775
  <ion-radio-group
776
+ [id]="radioGroupId"
758
777
  [formField]="f"
759
778
  [compareWith]="props()?.compareWith || defaultCompare"
760
779
  [attr.aria-invalid]="isAriaInvalid()"
@@ -784,11 +803,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
784
803
  type: Component,
785
804
  args: [{ selector: 'df-ion-radio', imports: [IonRadioGroup, IonRadio, IonItem, IonNote, FormField, DynamicTextPipe, AsyncPipe], template: `
786
805
  @let f = field();
806
+ @let radioGroupId = key() + '-radio-group';
787
807
  @if (label(); as label) {
788
808
  <div class="radio-label">{{ label | dynamicText | async }}</div>
789
809
  }
790
810
 
791
811
  <ion-radio-group
812
+ [id]="radioGroupId"
792
813
  [formField]="f"
793
814
  [compareWith]="props()?.compareWith || defaultCompare"
794
815
  [attr.aria-invalid]="isAriaInvalid()"
@@ -864,8 +885,10 @@ class IonicSelectFieldComponent {
864
885
  @let f = field();
865
886
  @let ariaInvalid = isAriaInvalid();
866
887
  @let ariaRequired = isRequired() || null;
888
+ @let selectId = key() + '-select';
867
889
 
868
890
  <ion-select
891
+ [id]="selectId"
869
892
  [formField]="f"
870
893
  [label]="(label() | dynamicText | async) ?? undefined"
871
894
  [labelPlacement]="props()?.labelPlacement ?? 'stacked'"
@@ -900,8 +923,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
900
923
  @let f = field();
901
924
  @let ariaInvalid = isAriaInvalid();
902
925
  @let ariaRequired = isRequired() || null;
926
+ @let selectId = key() + '-select';
903
927
 
904
928
  <ion-select
929
+ [id]="selectId"
905
930
  [formField]="f"
906
931
  [label]="(label() | dynamicText | async) ?? undefined"
907
932
  [labelPlacement]="props()?.labelPlacement ?? 'stacked'"
@@ -977,8 +1002,10 @@ class IonicSliderFieldComponent {
977
1002
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: IonicSliderFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
978
1003
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: IonicSliderFieldComponent, isStandalone: true, selector: "df-ion-slider", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, meta: { classPropertyName: "meta", publicName: "meta", isSignal: true, isRequired: false, transformFunction: null }, validationMessages: { classPropertyName: "validationMessages", publicName: "validationMessages", isSignal: true, isRequired: false, transformFunction: null }, defaultValidationMessages: { classPropertyName: "defaultValidationMessages", publicName: "defaultValidationMessages", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "className()", "id": "`${key()}`", "attr.data-testid": "key()", "attr.hidden": "field()().hidden() || null" } }, ngImport: i0, template: `
979
1004
  @let f = field();
1005
+ @let inputId = key() + '-input';
980
1006
 
981
1007
  <ion-range
1008
+ [id]="inputId"
982
1009
  [formField]="f"
983
1010
  [label]="(label() | dynamicText | async) ?? undefined"
984
1011
  [labelPlacement]="props()?.labelPlacement ?? 'stacked'"
@@ -1003,8 +1030,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
1003
1030
  type: Component,
1004
1031
  args: [{ selector: 'df-ion-slider', imports: [IonRange, IonNote, FormField, DynamicTextPipe, AsyncPipe], template: `
1005
1032
  @let f = field();
1033
+ @let inputId = key() + '-input';
1006
1034
 
1007
1035
  <ion-range
1036
+ [id]="inputId"
1008
1037
  [formField]="f"
1009
1038
  [label]="(label() | dynamicText | async) ?? undefined"
1010
1039
  [labelPlacement]="props()?.labelPlacement ?? 'stacked'"
@@ -1076,8 +1105,10 @@ class IonicTextareaFieldComponent {
1076
1105
  @let f = field();
1077
1106
  @let ariaInvalid = isAriaInvalid();
1078
1107
  @let ariaRequired = isRequired() || null;
1108
+ @let textareaId = key() + '-textarea';
1079
1109
 
1080
1110
  <ion-textarea
1111
+ [id]="textareaId"
1081
1112
  [formField]="f"
1082
1113
  [label]="(label() | dynamicText | async) ?? undefined"
1083
1114
  [labelPlacement]="props()?.labelPlacement ?? 'stacked'"
@@ -1105,8 +1136,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
1105
1136
  @let f = field();
1106
1137
  @let ariaInvalid = isAriaInvalid();
1107
1138
  @let ariaRequired = isRequired() || null;
1139
+ @let textareaId = key() + '-textarea';
1108
1140
 
1109
1141
  <ion-textarea
1142
+ [id]="textareaId"
1110
1143
  [formField]="f"
1111
1144
  [label]="(label() | dynamicText | async) ?? undefined"
1112
1145
  [labelPlacement]="props()?.labelPlacement ?? 'stacked'"
@@ -1284,8 +1317,10 @@ class IonicToggleFieldComponent {
1284
1317
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: IonicToggleFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1285
1318
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: IonicToggleFieldComponent, isStandalone: true, selector: "df-ion-toggle", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, meta: { classPropertyName: "meta", publicName: "meta", isSignal: true, isRequired: false, transformFunction: null }, validationMessages: { classPropertyName: "validationMessages", publicName: "validationMessages", isSignal: true, isRequired: false, transformFunction: null }, defaultValidationMessages: { classPropertyName: "defaultValidationMessages", publicName: "defaultValidationMessages", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "className()", "id": "`${key()}`", "attr.data-testid": "key()", "attr.hidden": "field()().hidden() || null" } }, ngImport: i0, template: `
1286
1319
  @let f = field();
1320
+ @let toggleId = key() + '-toggle';
1287
1321
 
1288
1322
  <df-ion-toggle-control
1323
+ [id]="toggleId"
1289
1324
  [formField]="f"
1290
1325
  [meta]="meta()"
1291
1326
  [labelPlacement]="props()?.labelPlacement ?? 'end'"
@@ -1306,8 +1341,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
1306
1341
  type: Component,
1307
1342
  args: [{ selector: 'df-ion-toggle', imports: [IonicToggleControlComponent, IonNote, FormField, DynamicTextPipe, AsyncPipe], template: `
1308
1343
  @let f = field();
1344
+ @let toggleId = key() + '-toggle';
1309
1345
 
1310
1346
  <df-ion-toggle-control
1347
+ [id]="toggleId"
1311
1348
  [formField]="f"
1312
1349
  [meta]="meta()"
1313
1350
  [labelPlacement]="props()?.labelPlacement ?? 'end'"
@@ -1 +1 @@
1
- {"version":3,"file":"ng-forge-dynamic-forms-ionic.mjs","sources":["../../../../packages/dynamic-forms-ionic/src/lib/fields/button/ionic-button.component.ts","../../../../packages/dynamic-forms-ionic/src/lib/fields/button/index.ts","../../../../packages/dynamic-forms-ionic/src/lib/fields/checkbox/ionic-checkbox.component.ts","../../../../packages/dynamic-forms-ionic/src/lib/fields/datepicker/ionic-datepicker.component.ts","../../../../packages/dynamic-forms-ionic/src/lib/models/ionic-config.token.ts","../../../../packages/dynamic-forms-ionic/src/lib/fields/input/ionic-input.component.ts","../../../../packages/dynamic-forms-ionic/src/lib/fields/multi-checkbox/ionic-multi-checkbox.component.ts","../../../../packages/dynamic-forms-ionic/src/lib/fields/radio/ionic-radio.component.ts","../../../../packages/dynamic-forms-ionic/src/lib/fields/select/ionic-select.component.ts","../../../../packages/dynamic-forms-ionic/src/lib/fields/slider/ionic-slider.component.ts","../../../../packages/dynamic-forms-ionic/src/lib/fields/textarea/ionic-textarea.component.ts","../../../../packages/dynamic-forms-ionic/src/lib/fields/toggle/ionic-toggle-control.component.ts","../../../../packages/dynamic-forms-ionic/src/lib/fields/toggle/ionic-toggle.component.ts","../../../../packages/dynamic-forms-ionic/src/lib/fields/index.ts","../../../../packages/dynamic-forms-ionic/src/lib/types/types.ts","../../../../packages/dynamic-forms-ionic/src/lib/fields/button/ionic-button.mapper.ts","../../../../packages/dynamic-forms-ionic/src/lib/fields/button/ionic-specific-button.mapper.ts","../../../../packages/dynamic-forms-ionic/src/lib/config/ionic-field-config.ts","../../../../packages/dynamic-forms-ionic/src/lib/types/registry-augmentation.ts","../../../../packages/dynamic-forms-ionic/src/lib/providers/ionic-providers.ts","../../../../packages/dynamic-forms-ionic/src/lib/index.ts","../../../../packages/dynamic-forms-ionic/src/ng-forge-dynamic-forms-ionic.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { IonButton } from '@ionic/angular/standalone';\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 { IonicButtonComponent, IonicButtonProps } from './ionic-button.type';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'df-ion-button',\n imports: [IonButton, DynamicTextPipe, AsyncPipe],\n host: {\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n },\n template: `\n <ion-button\n [type]=\"buttonType()\"\n [expand]=\"props()?.expand\"\n [fill]=\"props()?.fill || 'solid'\"\n [shape]=\"props()?.shape\"\n [size]=\"props()?.size\"\n [color]=\"props()?.color || 'primary'\"\n [strong]=\"props()?.strong\"\n [class]=\"className() || ''\"\n [disabled]=\"disabled()\"\n [attr.data-testid]=\"buttonTestId()\"\n (click)=\"onClick()\"\n >\n {{ label() | dynamicText | async }}\n </ion-button>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class IonicButtonFieldComponent<TEvent extends FormEvent> implements IonicButtonComponent<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<IonicButtonProps>();\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 /**\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 IonicButtonProps,\n IonicButtonField,\n IonicSubmitButtonField,\n IonicNextButtonField,\n IonicPreviousButtonField,\n AddArrayItemButtonField,\n RemoveArrayItemButtonField,\n} from './ionic-button.type';\n\n// Public API - component\nexport { default as IonicButtonFieldComponent } from './ionic-button.component';\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { FormField, FieldTree } from '@angular/forms/signals';\nimport { IonCheckbox, IonNote } from '@ionic/angular/standalone';\nimport { DynamicText, DynamicTextPipe, FieldMeta, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, setupMetaTracking, shouldShowErrors } from '@ng-forge/dynamic-forms/integration';\nimport { IonicCheckboxComponent, IonicCheckboxProps } from './ionic-checkbox.type';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'df-ion-checkbox',\n imports: [IonCheckbox, IonNote, FormField, DynamicTextPipe, AsyncPipe],\n template: `\n @let f = field();\n\n <ion-checkbox\n [formField]=\"f\"\n [labelPlacement]=\"props()?.labelPlacement ?? 'end'\"\n [justify]=\"props()?.justify\"\n [color]=\"props()?.color ?? 'primary'\"\n [indeterminate]=\"props()?.indeterminate ?? false\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"isAriaInvalid()\"\n [attr.aria-required]=\"isRequired() || null\"\n >\n {{ label() | dynamicText | async }}\n </ion-checkbox>\n\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <ion-note color=\"danger\" [id]=\"errorId() + '-' + i\" role=\"alert\">{{ error.message }}</ion-note>\n }\n `,\n styleUrl: '../../styles/_form-field.scss',\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 IonicCheckboxFieldComponent implements IonicCheckboxComponent {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n readonly field = input.required<FieldTree<boolean>>();\n readonly key = input.required<string>();\n\n // Properties\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n readonly props = input<IonicCheckboxProps>();\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 readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n constructor() {\n // Shadow DOM - apply meta to ion-checkbox element\n setupMetaTracking(this.elementRef, this.meta, {\n selector: 'ion-checkbox',\n });\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Base ID for error elements */\n readonly errorId = computed(() => `${this.key()}-error`);\n\n /** Whether the field is currently in an invalid state (invalid AND touched) */\n readonly isAriaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** Whether the field has a required validator */\n readonly isRequired = computed(() => {\n return this.field()().required?.() === true;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input, signal } from '@angular/core';\nimport { FieldTree } from '@angular/forms/signals';\nimport {\n IonButton,\n IonButtons,\n IonContent,\n IonDatetime,\n IonHeader,\n IonInput,\n IonModal,\n IonNote,\n IonTitle,\n IonToolbar,\n} from '@ionic/angular/standalone';\nimport { DynamicText, DynamicTextPipe, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, InputMeta, setupMetaTracking, shouldShowErrors } from '@ng-forge/dynamic-forms/integration';\nimport { IonicDatepickerComponent, IonicDatepickerProps } from './ionic-datepicker.type';\nimport { AsyncPipe } from '@angular/common';\nimport { format } from 'date-fns';\n\n@Component({\n selector: 'df-ion-datepicker',\n imports: [\n IonInput,\n IonModal,\n IonDatetime,\n IonNote,\n IonButtons,\n IonHeader,\n IonContent,\n IonToolbar,\n IonTitle,\n IonButton,\n DynamicTextPipe,\n AsyncPipe,\n ],\n template: `\n @let f = field(); @let dateValue = f().value();\n @let ariaInvalid = isAriaInvalid();\n @let ariaRequired = isRequired() || null;\n\n <ion-input\n [label]=\"(label() | dynamicText | async) ?? undefined\"\n [labelPlacement]=\"'stacked'\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [disabled]=\"f().disabled()\"\n [value]=\"formatDisplayDate(dateValue)\"\n [readonly]=\"true\"\n [fill]=\"'outline'\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired\"\n (click)=\"!f().disabled() && openModal()\"\n />\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <ion-note color=\"danger\" class=\"df-ion-error\" [id]=\"errorId() + '-' + i\" role=\"alert\">{{ error.message }}</ion-note>\n }\n\n <ion-modal [isOpen]=\"isModalOpen()\" (didDismiss)=\"closeModal()\">\n <ng-template>\n <ion-header>\n <ion-toolbar>\n <ion-title>{{ label() | dynamicText | async }}</ion-title>\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"closeModal()\">Close</ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n <ion-content>\n <ion-datetime\n [presentation]=\"props()?.presentation ?? 'date'\"\n [value]=\"dateToIsoString(dateValue)\"\n [multiple]=\"props()?.multiple ?? false\"\n [preferWheel]=\"props()?.preferWheel ?? false\"\n [showDefaultButtons]=\"props()?.showDefaultButtons ?? false\"\n [showDefaultTitle]=\"props()?.showDefaultTitle ?? false\"\n [showDefaultTimeLabel]=\"props()?.showDefaultTimeLabel ?? true\"\n [showClearButton]=\"props()?.showClearButton ?? false\"\n [color]=\"props()?.color\"\n [min]=\"dateToIsoString(minDate())\"\n [max]=\"dateToIsoString(maxDate())\"\n (ionChange)=\"onDateChange($event)\"\n >\n </ion-datetime>\n </ion-content>\n </ng-template>\n </ion-modal>\n `,\n styleUrl: '../../styles/_form-field.scss',\n styles: [\n `\n ion-input {\n cursor: pointer;\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 IonicDatepickerFieldComponent implements IonicDatepickerComponent {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n readonly field = input.required<FieldTree<Date | null>>();\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 minDate = input<Date | null>(null);\n readonly maxDate = input<Date | null>(null);\n readonly startAt = input<Date | null>(null);\n readonly props = input<IonicDatepickerProps>();\n readonly meta = input<InputMeta>();\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 readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n readonly isModalOpen = signal(false);\n\n constructor() {\n // Shadow DOM - apply meta to ion-input element\n setupMetaTracking(this.elementRef, this.meta, {\n selector: 'ion-input',\n });\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Base ID for error elements */\n readonly errorId = computed(() => `${this.key()}-error`);\n\n /** Whether the field is currently in an invalid state (invalid AND touched) */\n readonly isAriaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** Whether the field has a required validator */\n readonly isRequired = computed(() => {\n return this.field()().required?.() === true;\n });\n\n openModal() {\n this.isModalOpen.set(true);\n }\n\n closeModal() {\n this.isModalOpen.set(false);\n }\n\n onDateChange(event: CustomEvent) {\n const value = event.detail.value;\n if (value) {\n const date = new Date(value);\n this.field()().value.set(date);\n } else {\n this.field()().value.set(null);\n }\n this.closeModal();\n }\n\n dateToIsoString(date: Date | null | undefined): string | undefined {\n if (!date) return undefined;\n return date.toISOString();\n }\n\n formatDisplayDate(date: Date | null | undefined): string {\n if (!date) return '';\n\n const presentation = this.props()?.presentation ?? 'date';\n\n switch (presentation) {\n case 'date':\n return format(date, 'MMM d, yyyy');\n case 'date-time':\n case 'time-date':\n return format(date, 'MMM d, yyyy, h:mm a');\n case 'time':\n return format(date, 'h:mm a');\n case 'month':\n return format(date, 'MMMM yyyy');\n case 'month-year':\n return format(date, 'MMM yyyy');\n case 'year':\n return format(date, 'yyyy');\n default:\n return format(date, 'MMM d, yyyy');\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { IonicConfig } from './ionic-config';\n\n/**\n * Injection token for Ionic form configuration.\n * Use this to provide global configuration for Ionic form fields.\n *\n * @example\n * ```typescript\n * import { provideDynamicForm } from '@ng-forge/dynamic-forms';\n * import { withIonicFields } from '@ng-forge/dynamic-forms-ionic';\n *\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideDynamicForm(\n * ...withIonicFields({\n * fill: 'outline',\n * labelPlacement: 'floating'\n * })\n * )\n * ]\n * };\n * ```\n */\nexport const IONIC_CONFIG = new InjectionToken<IonicConfig>('IONIC_CONFIG');\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { FormField, FieldTree } from '@angular/forms/signals';\nimport { IonInput, IonNote } from '@ionic/angular/standalone';\nimport { DynamicText, DynamicTextPipe, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, InputMeta, setupMetaTracking, shouldShowErrors } from '@ng-forge/dynamic-forms/integration';\nimport { IonicInputComponent, IonicInputProps } from './ionic-input.type';\nimport { AsyncPipe } from '@angular/common';\nimport { IONIC_CONFIG } from '../../models/ionic-config.token';\n\n@Component({\n selector: 'df-ion-input',\n imports: [IonInput, IonNote, FormField, DynamicTextPipe, AsyncPipe],\n template: `\n @let f = field();\n @let ariaInvalid = isAriaInvalid();\n @let ariaRequired = isRequired() || null;\n\n <ion-input\n [type]=\"props()?.type ?? 'text'\"\n [formField]=\"f\"\n [label]=\"(label() | dynamicText | async) ?? undefined\"\n [labelPlacement]=\"effectiveLabelPlacement()\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [clearInput]=\"props()?.clearInput ?? false\"\n [counter]=\"props()?.counter ?? false\"\n [color]=\"effectiveColor()\"\n [fill]=\"effectiveFill()\"\n [shape]=\"effectiveShape()\"\n [readonly]=\"f().readonly()\"\n [helperText]=\"(props()?.helperText | dynamicText | async) ?? undefined\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired\"\n />\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <ion-note color=\"danger\" class=\"df-ion-error\" [id]=\"errorId() + '-' + i\" role=\"alert\">{{ error.message }}</ion-note>\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 styleUrl: '../../styles/_form-field.scss',\n styles: [\n `\n :host([hidden]) {\n display: none !important;\n }\n `,\n ],\n})\nexport default class IonicInputFieldComponent implements IonicInputComponent {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n private ionicConfig = inject(IONIC_CONFIG, { optional: true });\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<IonicInputProps>();\n readonly meta = input<InputMeta>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n\n readonly effectiveFill = computed(() => this.props()?.fill ?? this.ionicConfig?.fill ?? 'solid');\n readonly effectiveShape = computed(() => this.props()?.shape ?? this.ionicConfig?.shape);\n readonly effectiveLabelPlacement = computed(() => this.props()?.labelPlacement ?? this.ionicConfig?.labelPlacement ?? 'start');\n readonly effectiveColor = computed(() => this.props()?.color ?? this.ionicConfig?.color);\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 // Shadow DOM - apply meta to ion-input element\n setupMetaTracking(this.elementRef, this.meta, {\n selector: 'ion-input',\n });\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Base ID for error elements */\n readonly errorId = computed(() => `${this.key()}-error`);\n\n /** Whether the field is currently in an invalid state (invalid AND touched) */\n readonly isAriaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** Whether the field has a required validator */\n readonly isRequired = computed(() => {\n return this.field()().required?.() === true;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input, linkedSignal } from '@angular/core';\nimport { FieldTree } from '@angular/forms/signals';\nimport { IonCheckbox, IonItem, IonNote } from '@ionic/angular/standalone';\nimport { DynamicText, DynamicTextPipe, FieldMeta, FieldOption, ValidationMessages, ValueType } from '@ng-forge/dynamic-forms';\nimport {\n createResolvedErrorsSignal,\n isEqual,\n setupMetaTracking,\n shouldShowErrors,\n ValueInArrayPipe,\n} from '@ng-forge/dynamic-forms/integration';\nimport { explicitEffect } from 'ngxtension/explicit-effect';\nimport { IonicMultiCheckboxComponent, IonicMultiCheckboxProps } from './ionic-multi-checkbox.type';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'df-ion-multi-checkbox',\n imports: [IonCheckbox, IonItem, IonNote, ValueInArrayPipe, DynamicTextPipe, AsyncPipe],\n template: `\n @let f = field();\n @if (label(); as label) {\n <div class=\"checkbox-group-label\">{{ label | dynamicText | async }}</div>\n }\n\n <div\n class=\"checkbox-group\"\n role=\"group\"\n [attr.aria-invalid]=\"isAriaInvalid()\"\n [attr.aria-required]=\"isRequired() || null\"\n [class.ion-invalid]=\"showErrors()\"\n [class.ion-touched]=\"field()().touched()\"\n >\n @for (option of options(); track option.value) {\n <ion-item lines=\"none\">\n <ion-checkbox\n [checked]=\"option | inArray: valueViewModel()\"\n [disabled]=\"f().disabled() || option.disabled\"\n [labelPlacement]=\"props()?.labelPlacement ?? 'end'\"\n [justify]=\"props()?.justify ?? 'start'\"\n [color]=\"props()?.color ?? 'primary'\"\n (ionChange)=\"onCheckboxChange(option, $event.detail.checked)\"\n >\n {{ option.label | dynamicText | async }}\n </ion-checkbox>\n </ion-item>\n }\n </div>\n\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <ion-note color=\"danger\" [id]=\"errorId() + '-' + i\" role=\"alert\">{{ error.message }}</ion-note>\n }\n `,\n styleUrl: '../../styles/_form-field.scss',\n styles: [\n `\n :host {\n display: block;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n\n .checkbox-group-label {\n margin-bottom: 8px;\n font-weight: 500;\n }\n\n .checkbox-group {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n ion-item {\n --padding-start: 0;\n --inner-padding-end: 0;\n }\n `,\n ],\n host: {\n '[class]': 'className() || \"\"',\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n providers: [ValueInArrayPipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class IonicMultiCheckboxFieldComponent<T extends ValueType> implements IonicMultiCheckboxComponent<T> {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n readonly field = input.required<FieldTree<T[]>>();\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<T>[]>([]);\n readonly props = input<IonicMultiCheckboxProps<T>>();\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 readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Base ID for error elements */\n readonly errorId = computed(() => `${this.key()}-error`);\n\n /** Whether the field is currently in an invalid state (invalid AND touched) */\n readonly isAriaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** Whether the field has a required validator */\n readonly isRequired = computed(() => {\n return this.field()().required?.() === true;\n });\n\n valueViewModel = linkedSignal<FieldOption<T>[]>(\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 // Shadow DOM - apply meta to ion-checkbox elements, re-apply when options change\n setupMetaTracking(this.elementRef, this.meta, {\n selector: 'ion-checkbox',\n dependents: [this.options],\n });\n\n explicitEffect([this.valueViewModel], ([selectedOptions]) => {\n const selectedValues = selectedOptions.map((option) => option.value);\n\n if (!isEqual(selectedValues, this.field()().value())) {\n this.field()().value.set(selectedValues);\n }\n });\n\n explicitEffect([this.options], ([options]) => {\n const values = options.map((option) => 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 ionic-multi-checkbox: ${duplicates.join(', ')}`);\n }\n });\n }\n\n onCheckboxChange(option: FieldOption<T>, checked: boolean): void {\n this.valueViewModel.update((currentOptions) => {\n if (checked) {\n return currentOptions.some((opt) => opt.value === option.value) ? currentOptions : [...currentOptions, option];\n } else {\n return currentOptions.filter((opt) => opt.value !== option.value);\n }\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { FormField, FieldTree } from '@angular/forms/signals';\nimport { IonItem, IonNote, IonRadio, IonRadioGroup } from '@ionic/angular/standalone';\nimport { DynamicText, DynamicTextPipe, FieldMeta, FieldOption, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, setupMetaTracking, shouldShowErrors } from '@ng-forge/dynamic-forms/integration';\nimport { IonicRadioComponent, IonicRadioProps } from './ionic-radio.type';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'df-ion-radio',\n imports: [IonRadioGroup, IonRadio, IonItem, IonNote, FormField, DynamicTextPipe, AsyncPipe],\n template: `\n @let f = field();\n @if (label(); as label) {\n <div class=\"radio-label\">{{ label | dynamicText | async }}</div>\n }\n\n <ion-radio-group\n [formField]=\"f\"\n [compareWith]=\"props()?.compareWith || defaultCompare\"\n [attr.aria-invalid]=\"isAriaInvalid()\"\n [attr.aria-required]=\"isRequired() || null\"\n >\n @for (option of options(); track option.value) {\n <ion-item [lines]=\"'none'\">\n <ion-radio\n [value]=\"option.value\"\n [disabled]=\"option.disabled || false\"\n [labelPlacement]=\"props()?.labelPlacement ?? 'end'\"\n [justify]=\"props()?.justify\"\n [color]=\"props()?.color ?? 'primary'\"\n >\n {{ option.label | dynamicText | async }}\n </ion-radio>\n </ion-item>\n }\n </ion-radio-group>\n\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <ion-note color=\"danger\" [id]=\"errorId() + '-' + i\" role=\"alert\">{{ error.message }}</ion-note>\n }\n `,\n styleUrl: '../../styles/_form-field.scss',\n styles: [\n `\n :host {\n display: block;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n\n .radio-label {\n font-size: 0.875rem;\n font-weight: 500;\n margin-bottom: 0.5rem;\n color: var(--ion-text-color);\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 IonicRadioFieldComponent<T> implements IonicRadioComponent<T> {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n readonly field = input.required<FieldTree<T>>();\n readonly key = input.required<string>();\n\n // Properties\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n readonly options = input<FieldOption<T>[]>([]);\n readonly props = input<IonicRadioProps<T>>();\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 readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n defaultCompare = Object.is;\n\n constructor() {\n // Shadow DOM - apply meta to ion-radio elements, re-apply when options change\n setupMetaTracking(this.elementRef, this.meta, {\n selector: 'ion-radio',\n dependents: [this.options],\n });\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Base ID for error elements */\n readonly errorId = computed(() => `${this.key()}-error`);\n\n /** Whether the field is currently in an invalid state (invalid AND touched) */\n readonly isAriaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** Whether the field has a required validator */\n readonly isRequired = computed(() => {\n return this.field()().required?.() === true;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { FormField, FieldTree } from '@angular/forms/signals';\nimport { IonNote, IonSelect, IonSelectOption } from '@ionic/angular/standalone';\nimport { DynamicText, DynamicTextPipe, FieldMeta, FieldOption, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, setupMetaTracking, shouldShowErrors } from '@ng-forge/dynamic-forms/integration';\nimport { IonicSelectComponent, IonicSelectProps } from './ionic-select.type';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'df-ion-select',\n imports: [IonSelect, IonSelectOption, IonNote, FormField, DynamicTextPipe, AsyncPipe],\n template: `\n @let f = field();\n @let ariaInvalid = isAriaInvalid();\n @let ariaRequired = isRequired() || null;\n\n <ion-select\n [formField]=\"f\"\n [label]=\"(label() | dynamicText | async) ?? undefined\"\n [labelPlacement]=\"props()?.labelPlacement ?? 'stacked'\"\n [placeholder]=\"(placeholder() ?? props()?.placeholder | dynamicText | async) ?? ''\"\n [multiple]=\"props()?.multiple ?? false\"\n [compareWith]=\"props()?.compareWith ?? defaultCompare\"\n [interface]=\"props()?.interface ?? 'alert'\"\n [interfaceOptions]=\"props()?.interfaceOptions ?? {}\"\n [cancelText]=\"props()?.cancelText ?? 'Cancel'\"\n [okText]=\"props()?.okText ?? 'OK'\"\n [color]=\"props()?.color\"\n [fill]=\"props()?.fill ?? 'outline'\"\n [shape]=\"props()?.shape\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired\"\n >\n @for (option of options(); track option.value) {\n <ion-select-option [value]=\"option.value\" [disabled]=\"option.disabled || false\">\n {{ option.label | dynamicText | async }}\n </ion-select-option>\n }\n </ion-select>\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <ion-note color=\"danger\" class=\"df-ion-error\" [id]=\"errorId() + '-' + i\" role=\"alert\">{{ error.message }}</ion-note>\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 styleUrl: '../../styles/_form-field.scss',\n styles: [\n `\n :host([hidden]) {\n display: none !important;\n }\n `,\n ],\n})\nexport default class IonicSelectFieldComponent<T> implements IonicSelectComponent<T> {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n readonly field = input.required<FieldTree<T>>();\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<T>[]>([]);\n readonly props = input<IonicSelectProps<T>>();\n readonly meta = input<FieldMeta>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n\n constructor() {\n setupMetaTracking(this.elementRef, this.meta);\n }\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n defaultCompare = Object.is;\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Base ID for error elements */\n readonly errorId = computed(() => `${this.key()}-error`);\n\n /** Whether the field is currently in an invalid state (invalid AND touched) */\n readonly isAriaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** Whether the field has a required validator */\n readonly isRequired = computed(() => {\n return this.field()().required?.() === true;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { FormField, FieldTree } from '@angular/forms/signals';\nimport { IonNote, IonRange } from '@ionic/angular/standalone';\nimport { DynamicText, DynamicTextPipe, FieldMeta, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, setupMetaTracking, shouldShowErrors } from '@ng-forge/dynamic-forms/integration';\nimport { IonicSliderComponent, IonicSliderProps } from './ionic-slider.type';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'df-ion-slider',\n imports: [IonRange, IonNote, FormField, DynamicTextPipe, AsyncPipe],\n template: `\n @let f = field();\n\n <ion-range\n [formField]=\"f\"\n [label]=\"(label() | dynamicText | async) ?? undefined\"\n [labelPlacement]=\"props()?.labelPlacement ?? 'stacked'\"\n [step]=\"props()?.step ?? 1\"\n [dualKnobs]=\"props()?.dualKnobs ?? false\"\n [pin]=\"props()?.pin ?? false\"\n [pinFormatter]=\"props()?.pinFormatter ?? defaultPinFormatter\"\n [ticks]=\"props()?.ticks ?? false\"\n [snaps]=\"props()?.snaps ?? false\"\n [color]=\"props()?.color ?? 'primary'\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"isAriaInvalid()\"\n [attr.aria-required]=\"isRequired() || null\"\n />\n\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <ion-note color=\"danger\" [id]=\"errorId() + '-' + i\" role=\"alert\">{{ error.message }}</ion-note>\n }\n `,\n styleUrl: '../../styles/_form-field.scss',\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 IonicSliderFieldComponent implements IonicSliderComponent {\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 readonly className = input<string>('');\n readonly tabIndex = input<number>();\n\n readonly props = input<IonicSliderProps>();\n readonly meta = input<FieldMeta>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n\n constructor() {\n setupMetaTracking(this.elementRef, this.meta);\n }\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n protected defaultPinFormatter = (value: number) => String(value);\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Base ID for error elements */\n readonly errorId = computed(() => `${this.key()}-error`);\n\n /** Whether the field is currently in an invalid state (invalid AND touched) */\n readonly isAriaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** Whether the field has a required validator */\n readonly isRequired = computed(() => {\n return this.field()().required?.() === true;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { FormField, FieldTree } from '@angular/forms/signals';\nimport { IonNote, IonTextarea } from '@ionic/angular/standalone';\nimport { DynamicText, DynamicTextPipe, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, setupMetaTracking, shouldShowErrors, TextareaMeta } from '@ng-forge/dynamic-forms/integration';\nimport { IonicTextareaComponent, IonicTextareaProps } from './ionic-textarea.type';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'df-ion-textarea',\n imports: [IonTextarea, IonNote, FormField, DynamicTextPipe, AsyncPipe],\n template: `\n @let f = field();\n @let ariaInvalid = isAriaInvalid();\n @let ariaRequired = isRequired() || null;\n\n <ion-textarea\n [formField]=\"f\"\n [label]=\"(label() | dynamicText | async) ?? undefined\"\n [labelPlacement]=\"props()?.labelPlacement ?? 'stacked'\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [rows]=\"props()?.rows ?? 4\"\n [autoGrow]=\"props()?.autoGrow ?? false\"\n [counter]=\"props()?.counter ?? false\"\n [color]=\"props()?.color\"\n [fill]=\"props()?.fill ?? 'outline'\"\n [shape]=\"props()?.shape\"\n [readonly]=\"f().readonly()\"\n [helperText]=\"(props()?.helperText | dynamicText | async) ?? undefined\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired\"\n />\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <ion-note color=\"danger\" class=\"df-ion-error\" [id]=\"errorId() + '-' + i\" role=\"alert\">{{ error.message }}</ion-note>\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 styleUrl: '../../styles/_form-field.scss',\n styles: [\n `\n :host([hidden]) {\n display: none !important;\n }\n `,\n ],\n})\nexport default class IonicTextareaFieldComponent implements IonicTextareaComponent {\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<IonicTextareaProps>();\n readonly meta = input<TextareaMeta>();\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 readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n constructor() {\n // Shadow DOM - apply meta to ion-textarea element\n setupMetaTracking(this.elementRef, this.meta, {\n selector: 'ion-textarea',\n });\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Base ID for error elements */\n readonly errorId = computed(() => `${this.key()}-error`);\n\n /** Whether the field is currently in an invalid state (invalid AND touched) */\n readonly isAriaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** Whether the field has a required validator */\n readonly isRequired = computed(() => {\n return this.field()().required?.() === true;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input, model } from '@angular/core';\nimport type { FormCheckboxControl } from '@angular/forms/signals';\nimport { IonToggle } from '@ionic/angular/standalone';\nimport { FieldMeta } from '@ng-forge/dynamic-forms';\nimport { setupMetaTracking } from '@ng-forge/dynamic-forms/integration';\n\n/**\n * A wrapper component for Ionic's ion-toggle that implements FormCheckboxControl.\n * This allows it to work with Angular's [field] directive from @angular/forms/signals.\n *\n * We use FormCheckboxControl because ion-toggle is a boolean checkbox-like control.\n * The Field directive binds to the `checked` model for checkbox controls.\n */\n@Component({\n selector: 'df-ion-toggle-control',\n imports: [IonToggle],\n template: `\n <ion-toggle\n [checked]=\"isChecked()\"\n (ionChange)=\"onToggleChange($event)\"\n (ionBlur)=\"onBlur()\"\n [labelPlacement]=\"labelPlacement()\"\n [justify]=\"justify()\"\n [color]=\"color()\"\n [enableOnOffLabels]=\"enableOnOffLabels()\"\n [disabled]=\"isEffectivelyDisabled()\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-required]=\"ariaRequired()\"\n [attr.aria-readonly]=\"ariaReadonly()\"\n >\n <ng-content />\n </ion-toggle>\n `,\n styleUrl: '../../styles/_form-field.scss',\n host: {},\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IonicToggleControlComponent implements FormCheckboxControl {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n // ─────────────────────────────────────────────────────────────────────────────\n // FormCheckboxControl implementation\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** The checked state - required by FormCheckboxControl */\n readonly checked = model<boolean>(false);\n\n /** Tracks whether the field has been touched - used by Field directive */\n readonly touched = model<boolean>(false);\n\n /** Whether the field is disabled */\n readonly disabled = input<boolean>(false);\n\n /** Whether the field is readonly */\n readonly readonly = input<boolean>(false);\n\n /** Whether the field is invalid (from Field directive) */\n readonly invalid = input<boolean>(false);\n\n /** Whether the field is required (from Field directive) */\n readonly required = input<boolean>(false);\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Ionic-specific props\n // ─────────────────────────────────────────────────────────────────────────────\n\n readonly labelPlacement = input<'start' | 'end' | 'fixed' | 'stacked'>('end');\n readonly justify = input<'start' | 'end' | 'space-between' | undefined>(undefined);\n readonly color = input<string>('primary');\n readonly enableOnOffLabels = input<boolean>(false);\n readonly tabIndex = input<number | undefined>(undefined);\n readonly meta = input<FieldMeta>();\n\n constructor() {\n // Shadow DOM - apply meta to ion-toggle element\n setupMetaTracking(this.elementRef, this.meta, {\n selector: 'ion-toggle',\n });\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Computed ARIA attributes\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** aria-invalid: true when field is invalid AND touched */\n protected readonly ariaInvalid = computed(() => {\n return this.invalid() && this.touched();\n });\n\n /** aria-required: true if field is required, null otherwise */\n protected readonly ariaRequired = computed(() => {\n return this.required() ? true : null;\n });\n\n /** aria-readonly: true if field is readonly, null otherwise */\n protected readonly ariaReadonly = computed(() => {\n return this.readonly() ? true : null;\n });\n\n /** Computed checked state - ensures proper boolean conversion for ion-toggle */\n protected readonly isChecked = computed(() => {\n return this.checked() === true;\n });\n\n /**\n * ion-toggle doesn't have a native readonly attribute.\n * When readonly, we disable the toggle to prevent changes while maintaining the visual state.\n */\n protected readonly isEffectivelyDisabled = computed(() => {\n return this.disabled() || this.readonly();\n });\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Event Handlers\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Handle toggle change - sync ion-toggle's checked state to our checked model */\n onToggleChange(event: CustomEvent<{ checked: boolean; value: string }>): void {\n this.checked.set(event.detail.checked);\n }\n\n /** Marks the field as touched when toggle loses focus */\n onBlur(): void {\n this.touched.set(true);\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { FormField, FieldTree } from '@angular/forms/signals';\nimport { IonNote } from '@ionic/angular/standalone';\nimport { DynamicText, DynamicTextPipe, FieldMeta, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, setupMetaTracking, shouldShowErrors } from '@ng-forge/dynamic-forms/integration';\nimport { IonicToggleComponent, IonicToggleProps } from './ionic-toggle.type';\nimport { IonicToggleControlComponent } from './ionic-toggle-control.component';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'df-ion-toggle',\n imports: [IonicToggleControlComponent, IonNote, FormField, DynamicTextPipe, AsyncPipe],\n template: `\n @let f = field();\n\n <df-ion-toggle-control\n [formField]=\"f\"\n [meta]=\"meta()\"\n [labelPlacement]=\"props()?.labelPlacement ?? 'end'\"\n [justify]=\"props()?.justify\"\n [color]=\"props()?.color ?? 'primary'\"\n [enableOnOffLabels]=\"props()?.enableOnOffLabels ?? false\"\n [tabIndex]=\"tabIndex()\"\n >\n {{ label() | dynamicText | async }}\n </df-ion-toggle-control>\n\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <ion-note color=\"danger\" [id]=\"errorId() + '-' + i\" role=\"alert\">{{ error.message }}</ion-note>\n }\n `,\n styleUrl: '../../styles/_form-field.scss',\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 IonicToggleFieldComponent implements IonicToggleComponent {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n readonly field = input.required<FieldTree<boolean>>();\n readonly key = input.required<string>();\n\n // Properties\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n readonly props = input<IonicToggleProps>();\n readonly meta = input<FieldMeta>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n\n constructor() {\n setupMetaTracking(this.elementRef, this.meta);\n }\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Base ID for error elements */\n readonly errorId = computed(() => `${this.key()}-error`);\n}\n","// Public exports for ionic field fields and types\n\n// Button\nexport { IonicButtonFieldComponent } from './button';\nexport type {\n IonicButtonProps,\n IonicButtonField,\n IonicSubmitButtonField,\n IonicNextButtonField,\n IonicPreviousButtonField,\n AddArrayItemButtonField,\n RemoveArrayItemButtonField,\n} from './button';\n\n// Checkbox\nexport { IonicCheckboxFieldComponent } from './checkbox';\nexport type { IonicCheckboxProps, IonicCheckboxField, IonicCheckboxComponent } from './checkbox';\n\n// Datepicker\nexport { IonicDatepickerFieldComponent } from './datepicker';\nexport type { IonicDatepickerProps, IonicDatepickerField, IonicDatepickerComponent } from './datepicker';\n\n// Input\nexport { IonicInputFieldComponent } from './input';\nexport type { IonicInputProps, IonicInputField, IonicInputComponent } from './input';\n\n// Multi-checkbox\nexport { IonicMultiCheckboxFieldComponent } from './multi-checkbox';\nexport type { IonicMultiCheckboxProps, IonicMultiCheckboxField, IonicMultiCheckboxComponent } from './multi-checkbox';\n\n// Radio\nexport { IonicRadioFieldComponent } from './radio';\nexport type { IonicRadioProps, IonicRadioField, IonicRadioComponent } from './radio';\n\n// Select\nexport { IonicSelectFieldComponent } from './select';\nexport type { IonicSelectProps, IonicSelectField, IonicSelectComponent } from './select';\n\n// Slider\nexport { IonicSliderFieldComponent } from './slider';\nexport type { IonicSliderProps, IonicSliderField, IonicSliderComponent } from './slider';\n\n// Textarea\nexport { IonicTextareaFieldComponent } from './textarea';\nexport type { IonicTextareaProps, IonicTextareaField, IonicTextareaComponent } from './textarea';\n\n// Toggle\nexport { IonicToggleFieldComponent } from './toggle';\nexport type { IonicToggleProps, IonicToggleField, IonicToggleComponent } from './toggle';\n","/**\n * Ionic field type constants\n * Based on available field components in the /fields folder\n */\nexport const IonicField = {\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 IonicFieldType = (typeof IonicField)[keyof typeof IonicField];\n","import { computed, Signal } from '@angular/core';\nimport { buildBaseInputs, 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 // Build base inputs (static, from field definition)\n const baseInputs = buildBaseInputs(fieldDef);\n\n return computed(() => {\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 DynamicFormLogger,\n FIELD_SIGNAL_CONTEXT,\n FieldDef,\n FieldWithValidation,\n NextPageEvent,\n PreviousPageEvent,\n RemoveArrayItemEvent,\n resolveNextButtonDisabled,\n resolveSubmitButtonDisabled,\n} from '@ng-forge/dynamic-forms';\nimport { AddArrayItemButtonField, RemoveArrayItemButtonField } from './ionic-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 // Inject field signal context to access form state and options\n const fieldSignalContext = inject(FIELD_SIGNAL_CONTEXT);\n\n // Build base inputs (static, from field definition)\n const baseInputs = buildBaseInputs(fieldDef);\n\n // Use button-logic-resolver to compute disabled state\n const fieldWithLogic = fieldDef as FieldDef<Record<string, unknown>> & Partial<FieldWithValidation>;\n const disabledSignal = resolveSubmitButtonDisabled({\n form: fieldSignalContext.form,\n formOptions: fieldSignalContext.formOptions,\n fieldLogic: fieldWithLogic.logic,\n explicitlyDisabled: fieldDef.disabled,\n });\n\n // Return computed signal - evaluates disabledSignal inside for reactivity\n return computed(() => {\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 // Inject field signal context to access form state and options\n const fieldSignalContext = inject(FIELD_SIGNAL_CONTEXT);\n\n // Build base inputs (static, from field definition)\n const baseInputs = buildBaseInputs(fieldDef);\n\n // Use button-logic-resolver to compute disabled state\n const fieldWithLogic = fieldDef as FieldDef<Record<string, unknown>> & Partial<FieldWithValidation>;\n const disabledSignal = resolveNextButtonDisabled({\n form: fieldSignalContext.form,\n formOptions: fieldSignalContext.formOptions,\n fieldLogic: fieldWithLogic.logic,\n explicitlyDisabled: fieldDef.disabled,\n currentPageValid: fieldSignalContext.currentPageValid,\n });\n\n // Return computed signal - evaluates disabledSignal inside for reactivity\n return computed(() => {\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 // Build base inputs (static, from field definition)\n const baseInputs = buildBaseInputs(fieldDef);\n\n return computed(() => {\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 // Try to get array context (available when inside an array)\n // Use optional injection so it doesn't fail when outside an array\n const arrayContext = inject(ARRAY_CONTEXT, { optional: true });\n const logger = inject(DynamicFormLogger);\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 // Build base inputs (static, from field definition)\n const baseInputs = buildBaseInputs(fieldDef);\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 // 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 // Try to get array context (available when inside an array)\n // Use optional injection so it doesn't fail when outside an array\n const arrayContext = inject(ARRAY_CONTEXT, { optional: true });\n const logger = inject(DynamicFormLogger);\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 // Build base inputs (static, from field definition)\n const baseInputs = buildBaseInputs(fieldDef);\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 // 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 { IonicField } from '../types/types';\nimport { buttonFieldMapper } from '../fields/button/ionic-button.mapper';\nimport {\n addArrayItemButtonFieldMapper,\n nextButtonFieldMapper,\n previousButtonFieldMapper,\n removeArrayItemButtonFieldMapper,\n submitButtonFieldMapper,\n} from '../fields/button/ionic-specific-button.mapper';\n\n/**\n * Ionic field type definitions\n * Follows the FieldTypeDefinition interface for proper registry integration\n */\nexport const IONIC_FIELD_TYPES: FieldTypeDefinition[] = [\n {\n name: IonicField.Input,\n loadComponent: () => import('../fields/input/ionic-input.component'),\n mapper: valueFieldMapper,\n propsToMeta: ['type'],\n },\n {\n name: IonicField.Select,\n loadComponent: () => import('../fields/select/ionic-select.component'),\n mapper: optionsFieldMapper,\n },\n {\n name: IonicField.Checkbox,\n loadComponent: () => import('../fields/checkbox/ionic-checkbox.component'),\n mapper: checkboxFieldMapper,\n },\n {\n name: IonicField.Button,\n loadComponent: () => import('../fields/button/ionic-button.component'),\n mapper: buttonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: IonicField.Submit,\n loadComponent: () => import('../fields/button/ionic-button.component'),\n mapper: submitButtonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: IonicField.Next,\n loadComponent: () => import('../fields/button/ionic-button.component'),\n mapper: nextButtonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: IonicField.Previous,\n loadComponent: () => import('../fields/button/ionic-button.component'),\n mapper: previousButtonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: IonicField.AddArrayItem,\n loadComponent: () => import('../fields/button/ionic-button.component'),\n mapper: addArrayItemButtonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: IonicField.RemoveArrayItem,\n loadComponent: () => import('../fields/button/ionic-button.component'),\n mapper: removeArrayItemButtonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: IonicField.Textarea,\n loadComponent: () => import('../fields/textarea/ionic-textarea.component'),\n mapper: valueFieldMapper,\n propsToMeta: ['rows'],\n },\n {\n name: IonicField.Radio,\n loadComponent: () => import('../fields/radio/ionic-radio.component'),\n mapper: optionsFieldMapper,\n },\n {\n name: IonicField.MultiCheckbox,\n loadComponent: () => import('../fields/multi-checkbox/ionic-multi-checkbox.component'),\n mapper: optionsFieldMapper,\n },\n {\n name: IonicField.Datepicker,\n loadComponent: () => import('../fields/datepicker/ionic-datepicker.component'),\n mapper: datepickerFieldMapper,\n },\n {\n name: IonicField.Slider,\n loadComponent: () => import('../fields/slider/ionic-slider.component'),\n mapper: valueFieldMapper,\n },\n {\n name: IonicField.Toggle,\n loadComponent: () => import('../fields/toggle/ionic-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 Ionic field types provided by this library.\n */\n\nimport type { FormEvent } from '@ng-forge/dynamic-forms';\nimport type {\n AddArrayItemButtonField,\n IonicButtonField,\n IonicCheckboxField,\n IonicDatepickerField,\n IonicInputField,\n IonicMultiCheckboxField,\n IonicNextButtonField,\n IonicPreviousButtonField,\n IonicRadioField,\n IonicSelectField,\n IonicSliderField,\n IonicSubmitButtonField,\n IonicTextareaField,\n IonicToggleField,\n RemoveArrayItemButtonField,\n} from '../fields';\n\ndeclare module '@ng-forge/dynamic-forms' {\n interface FieldRegistryLeaves {\n input: IonicInputField;\n select: IonicSelectField<unknown>;\n checkbox: IonicCheckboxField;\n button: IonicButtonField<FormEvent>;\n submit: IonicSubmitButtonField;\n next: IonicNextButtonField;\n previous: IonicPreviousButtonField;\n textarea: IonicTextareaField;\n radio: IonicRadioField<unknown>;\n 'multi-checkbox': IonicMultiCheckboxField<unknown>;\n datepicker: IonicDatepickerField;\n slider: IonicSliderField;\n toggle: IonicToggleField;\n addArrayItem: AddArrayItemButtonField;\n removeArrayItem: RemoveArrayItemButtonField;\n }\n}\n","import type { FieldTypeDefinition } from '@ng-forge/dynamic-forms';\nimport type { Provider } from '@angular/core';\nimport { IONIC_FIELD_TYPES } from '../config/ionic-field-config';\nimport { IonicConfig } from '../models/ionic-config';\nimport { IONIC_CONFIG } from '../models/ionic-config.token';\nimport {\n IonicButtonField,\n IonicCheckboxField,\n IonicDatepickerField,\n IonicInputField,\n IonicMultiCheckboxField,\n IonicNextButtonField,\n IonicPreviousButtonField,\n IonicRadioField,\n IonicSelectField,\n IonicSliderField,\n IonicSubmitButtonField,\n IonicTextareaField,\n IonicToggleField,\n} from '../fields';\n\n/**\n * Field type definitions with optional config providers\n */\nexport type FieldTypeDefinitionsWithConfig = FieldTypeDefinition[] & {\n __configProviders?: Provider[];\n};\n\n/**\n * Configure dynamic forms with Ionic field types.\n * Provides all Ionic field types for use with provideDynamicForm.\n *\n * @param config - Optional global configuration for Ionic 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 { withIonicFields } from '@ng-forge/dynamic-form-ionic';\n *\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideDynamicForm(...withIonicFields())\n * ]\n * };\n * ```\n *\n * @example\n * ```typescript\n * // With global configuration\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideDynamicForm(\n * ...withIonicFields({\n * fill: 'outline',\n * labelPlacement: 'floating'\n * })\n * )\n * ]\n * };\n * ```\n *\n * @returns Array of field type definitions for Ionic components\n */\nexport function withIonicFields(config?: IonicConfig): FieldTypeDefinitionsWithConfig {\n const fields = IONIC_FIELD_TYPES as FieldTypeDefinitionsWithConfig;\n\n if (config) {\n fields.__configProviders = [\n {\n provide: IONIC_CONFIG,\n useValue: config,\n },\n ];\n }\n\n return fields;\n}\n\n/**\n * Module augmentation to extend the global DynamicFormFieldRegistry\n * with Ionic field types\n */\ndeclare module '@ng-forge/dynamic-forms' {\n interface DynamicFormFieldRegistry {\n input: IonicInputField;\n select: IonicSelectField<any>;\n checkbox: IonicCheckboxField;\n button: IonicButtonField<any>;\n submit: IonicSubmitButtonField;\n next: IonicNextButtonField;\n previous: IonicPreviousButtonField;\n textarea: IonicTextareaField;\n radio: IonicRadioField<any>;\n 'multi-checkbox': IonicMultiCheckboxField<any>;\n datepicker: IonicDatepickerField;\n slider: IonicSliderField;\n toggle: IonicToggleField;\n }\n}\n","// Field fields\nexport {\n IonicButtonFieldComponent,\n IonicCheckboxFieldComponent,\n IonicDatepickerFieldComponent,\n IonicInputFieldComponent,\n IonicMultiCheckboxFieldComponent,\n IonicRadioFieldComponent,\n IonicSelectFieldComponent,\n IonicSliderFieldComponent,\n IonicTextareaFieldComponent,\n IonicToggleFieldComponent,\n} from './fields';\nexport type {\n IonicButtonProps,\n IonicButtonField,\n IonicSubmitButtonField,\n IonicNextButtonField,\n IonicPreviousButtonField,\n AddArrayItemButtonField,\n RemoveArrayItemButtonField,\n IonicCheckboxProps,\n IonicCheckboxField,\n IonicCheckboxComponent,\n IonicDatepickerProps,\n IonicDatepickerField,\n IonicDatepickerComponent,\n IonicInputProps,\n IonicInputField,\n IonicInputComponent,\n IonicMultiCheckboxProps,\n IonicMultiCheckboxField,\n IonicMultiCheckboxComponent,\n IonicRadioProps,\n IonicRadioField,\n IonicRadioComponent,\n IonicSelectProps,\n IonicSelectField,\n IonicSelectComponent,\n IonicSliderProps,\n IonicSliderField,\n IonicSliderComponent,\n IonicTextareaProps,\n IonicTextareaField,\n IonicTextareaComponent,\n IonicToggleProps,\n IonicToggleField,\n IonicToggleComponent,\n} from './fields';\n\n// Configuration\nexport { IONIC_FIELD_TYPES } from './config/ionic-field-config';\nexport type { IonicConfig } from './models';\nexport { IONIC_CONFIG } from './models';\n\n// Types and constants\nexport { IonicField, type IonicFieldType } from './types/types';\n\n// Module augmentation for global types\nimport './types/registry-augmentation';\n\n// Providers\nexport { withIonicFields } from './providers/ionic-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-ionic.mjs","sources":["../../../../packages/dynamic-forms-ionic/src/lib/fields/button/ionic-button.component.ts","../../../../packages/dynamic-forms-ionic/src/lib/fields/button/index.ts","../../../../packages/dynamic-forms-ionic/src/lib/fields/checkbox/ionic-checkbox.component.ts","../../../../packages/dynamic-forms-ionic/src/lib/fields/datepicker/ionic-datepicker.component.ts","../../../../packages/dynamic-forms-ionic/src/lib/models/ionic-config.token.ts","../../../../packages/dynamic-forms-ionic/src/lib/fields/input/ionic-input.component.ts","../../../../packages/dynamic-forms-ionic/src/lib/fields/multi-checkbox/ionic-multi-checkbox.component.ts","../../../../packages/dynamic-forms-ionic/src/lib/fields/radio/ionic-radio.component.ts","../../../../packages/dynamic-forms-ionic/src/lib/fields/select/ionic-select.component.ts","../../../../packages/dynamic-forms-ionic/src/lib/fields/slider/ionic-slider.component.ts","../../../../packages/dynamic-forms-ionic/src/lib/fields/textarea/ionic-textarea.component.ts","../../../../packages/dynamic-forms-ionic/src/lib/fields/toggle/ionic-toggle-control.component.ts","../../../../packages/dynamic-forms-ionic/src/lib/fields/toggle/ionic-toggle.component.ts","../../../../packages/dynamic-forms-ionic/src/lib/fields/index.ts","../../../../packages/dynamic-forms-ionic/src/lib/types/types.ts","../../../../packages/dynamic-forms-ionic/src/lib/fields/button/ionic-button.mapper.ts","../../../../packages/dynamic-forms-ionic/src/lib/fields/button/ionic-specific-button.mapper.ts","../../../../packages/dynamic-forms-ionic/src/lib/config/ionic-field-config.ts","../../../../packages/dynamic-forms-ionic/src/lib/types/registry-augmentation.ts","../../../../packages/dynamic-forms-ionic/src/lib/providers/ionic-providers.ts","../../../../packages/dynamic-forms-ionic/src/lib/index.ts","../../../../packages/dynamic-forms-ionic/src/ng-forge-dynamic-forms-ionic.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { IonButton } from '@ionic/angular/standalone';\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 { IonicButtonComponent, IonicButtonProps } from './ionic-button.type';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'df-ion-button',\n imports: [IonButton, DynamicTextPipe, AsyncPipe],\n host: {\n '[id]': '`${key()}`',\n '[class]': 'className()',\n '[attr.data-testid]': 'key()',\n },\n template: `\n @let buttonId = key() + '-button';\n\n <ion-button\n [id]=\"buttonId\"\n [type]=\"buttonType()\"\n [expand]=\"props()?.expand\"\n [fill]=\"props()?.fill || 'solid'\"\n [shape]=\"props()?.shape\"\n [size]=\"props()?.size\"\n [color]=\"props()?.color || 'primary'\"\n [strong]=\"props()?.strong\"\n [disabled]=\"disabled()\"\n [attr.data-testid]=\"buttonTestId()\"\n (click)=\"onClick()\"\n >\n {{ label() | dynamicText | async }}\n </ion-button>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class IonicButtonFieldComponent<TEvent extends FormEvent> implements IonicButtonComponent<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<IonicButtonProps>();\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 /**\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 IonicButtonProps,\n IonicButtonField,\n IonicSubmitButtonField,\n IonicNextButtonField,\n IonicPreviousButtonField,\n AddArrayItemButtonField,\n RemoveArrayItemButtonField,\n} from './ionic-button.type';\n\n// Public API - component\nexport { default as IonicButtonFieldComponent } from './ionic-button.component';\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { FormField, FieldTree } from '@angular/forms/signals';\nimport { IonCheckbox, IonNote } from '@ionic/angular/standalone';\nimport { DynamicText, DynamicTextPipe, FieldMeta, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, setupMetaTracking, shouldShowErrors } from '@ng-forge/dynamic-forms/integration';\nimport { IonicCheckboxComponent, IonicCheckboxProps } from './ionic-checkbox.type';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'df-ion-checkbox',\n imports: [IonCheckbox, IonNote, FormField, DynamicTextPipe, AsyncPipe],\n template: `\n @let f = field();\n @let checkboxId = key() + '-checkbox';\n\n <ion-checkbox\n [id]=\"checkboxId\"\n [formField]=\"f\"\n [labelPlacement]=\"props()?.labelPlacement ?? 'end'\"\n [justify]=\"props()?.justify\"\n [color]=\"props()?.color ?? 'primary'\"\n [indeterminate]=\"props()?.indeterminate ?? false\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"isAriaInvalid()\"\n [attr.aria-required]=\"isRequired() || null\"\n >\n {{ label() | dynamicText | async }}\n </ion-checkbox>\n\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <ion-note color=\"danger\" [id]=\"errorId() + '-' + i\" role=\"alert\">{{ error.message }}</ion-note>\n }\n `,\n styleUrl: '../../styles/_form-field.scss',\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 IonicCheckboxFieldComponent implements IonicCheckboxComponent {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n readonly field = input.required<FieldTree<boolean>>();\n readonly key = input.required<string>();\n\n // Properties\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n readonly props = input<IonicCheckboxProps>();\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 readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n constructor() {\n // Shadow DOM - apply meta to ion-checkbox element\n setupMetaTracking(this.elementRef, this.meta, {\n selector: 'ion-checkbox',\n });\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Base ID for error elements */\n readonly errorId = computed(() => `${this.key()}-error`);\n\n /** Whether the field is currently in an invalid state (invalid AND touched) */\n readonly isAriaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** Whether the field has a required validator */\n readonly isRequired = computed(() => {\n return this.field()().required?.() === true;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input, signal } from '@angular/core';\nimport { FieldTree } from '@angular/forms/signals';\nimport {\n IonButton,\n IonButtons,\n IonContent,\n IonDatetime,\n IonHeader,\n IonInput,\n IonModal,\n IonNote,\n IonTitle,\n IonToolbar,\n} from '@ionic/angular/standalone';\nimport { DynamicText, DynamicTextPipe, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, InputMeta, setupMetaTracking, shouldShowErrors } from '@ng-forge/dynamic-forms/integration';\nimport { IonicDatepickerComponent, IonicDatepickerProps } from './ionic-datepicker.type';\nimport { AsyncPipe } from '@angular/common';\nimport { format } from 'date-fns';\n\n@Component({\n selector: 'df-ion-datepicker',\n imports: [\n IonInput,\n IonModal,\n IonDatetime,\n IonNote,\n IonButtons,\n IonHeader,\n IonContent,\n IonToolbar,\n IonTitle,\n IonButton,\n DynamicTextPipe,\n AsyncPipe,\n ],\n template: `\n @let f = field(); @let dateValue = f().value();\n @let ariaInvalid = isAriaInvalid();\n @let ariaRequired = isRequired() || null;\n @let inputId = key() + '-input';\n\n <ion-input\n [id]=\"inputId\"\n [label]=\"(label() | dynamicText | async) ?? undefined\"\n [labelPlacement]=\"'stacked'\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [disabled]=\"f().disabled()\"\n [value]=\"formatDisplayDate(dateValue)\"\n [readonly]=\"true\"\n [fill]=\"'outline'\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired\"\n (click)=\"!f().disabled() && openModal()\"\n />\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <ion-note color=\"danger\" class=\"df-ion-error\" [id]=\"errorId() + '-' + i\" role=\"alert\">{{ error.message }}</ion-note>\n }\n\n <ion-modal [isOpen]=\"isModalOpen()\" (didDismiss)=\"closeModal()\">\n <ng-template>\n <ion-header>\n <ion-toolbar>\n <ion-title>{{ label() | dynamicText | async }}</ion-title>\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"closeModal()\">Close</ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n <ion-content>\n <ion-datetime\n [presentation]=\"props()?.presentation ?? 'date'\"\n [value]=\"dateToIsoString(dateValue)\"\n [multiple]=\"props()?.multiple ?? false\"\n [preferWheel]=\"props()?.preferWheel ?? false\"\n [showDefaultButtons]=\"props()?.showDefaultButtons ?? false\"\n [showDefaultTitle]=\"props()?.showDefaultTitle ?? false\"\n [showDefaultTimeLabel]=\"props()?.showDefaultTimeLabel ?? true\"\n [showClearButton]=\"props()?.showClearButton ?? false\"\n [color]=\"props()?.color\"\n [min]=\"dateToIsoString(minDate())\"\n [max]=\"dateToIsoString(maxDate())\"\n (ionChange)=\"onDateChange($event)\"\n >\n </ion-datetime>\n </ion-content>\n </ng-template>\n </ion-modal>\n `,\n styleUrl: '../../styles/_form-field.scss',\n styles: [\n `\n ion-input {\n cursor: pointer;\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 IonicDatepickerFieldComponent implements IonicDatepickerComponent {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n readonly field = input.required<FieldTree<Date | null>>();\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 minDate = input<Date | null>(null);\n readonly maxDate = input<Date | null>(null);\n readonly startAt = input<Date | null>(null);\n readonly props = input<IonicDatepickerProps>();\n readonly meta = input<InputMeta>();\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 readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n readonly isModalOpen = signal(false);\n\n constructor() {\n // Shadow DOM - apply meta to ion-input element\n setupMetaTracking(this.elementRef, this.meta, {\n selector: 'ion-input',\n });\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Base ID for error elements */\n readonly errorId = computed(() => `${this.key()}-error`);\n\n /** Whether the field is currently in an invalid state (invalid AND touched) */\n readonly isAriaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** Whether the field has a required validator */\n readonly isRequired = computed(() => {\n return this.field()().required?.() === true;\n });\n\n openModal() {\n this.isModalOpen.set(true);\n }\n\n closeModal() {\n this.isModalOpen.set(false);\n }\n\n onDateChange(event: CustomEvent) {\n const value = event.detail.value;\n if (value) {\n const date = new Date(value);\n this.field()().value.set(date);\n } else {\n this.field()().value.set(null);\n }\n this.closeModal();\n }\n\n dateToIsoString(date: Date | null | undefined): string | undefined {\n if (!date) return undefined;\n return date.toISOString();\n }\n\n formatDisplayDate(date: Date | null | undefined): string {\n if (!date) return '';\n\n const presentation = this.props()?.presentation ?? 'date';\n\n switch (presentation) {\n case 'date':\n return format(date, 'MMM d, yyyy');\n case 'date-time':\n case 'time-date':\n return format(date, 'MMM d, yyyy, h:mm a');\n case 'time':\n return format(date, 'h:mm a');\n case 'month':\n return format(date, 'MMMM yyyy');\n case 'month-year':\n return format(date, 'MMM yyyy');\n case 'year':\n return format(date, 'yyyy');\n default:\n return format(date, 'MMM d, yyyy');\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { IonicConfig } from './ionic-config';\n\n/**\n * Injection token for Ionic form configuration.\n * Use this to provide global configuration for Ionic form fields.\n *\n * @example\n * ```typescript\n * import { provideDynamicForm } from '@ng-forge/dynamic-forms';\n * import { withIonicFields } from '@ng-forge/dynamic-forms-ionic';\n *\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideDynamicForm(\n * ...withIonicFields({\n * fill: 'outline',\n * labelPlacement: 'floating'\n * })\n * )\n * ]\n * };\n * ```\n */\nexport const IONIC_CONFIG = new InjectionToken<IonicConfig>('IONIC_CONFIG');\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { FormField, FieldTree } from '@angular/forms/signals';\nimport { IonInput, IonNote } from '@ionic/angular/standalone';\nimport { DynamicText, DynamicTextPipe, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, InputMeta, setupMetaTracking, shouldShowErrors } from '@ng-forge/dynamic-forms/integration';\nimport { IonicInputComponent, IonicInputProps } from './ionic-input.type';\nimport { AsyncPipe } from '@angular/common';\nimport { IONIC_CONFIG } from '../../models/ionic-config.token';\n\n@Component({\n selector: 'df-ion-input',\n imports: [IonInput, IonNote, FormField, DynamicTextPipe, AsyncPipe],\n template: `\n @let f = field();\n @let ariaInvalid = isAriaInvalid();\n @let ariaRequired = isRequired() || null;\n @let inputId = key() + '-input';\n\n <ion-input\n [id]=\"inputId\"\n [type]=\"props()?.type ?? 'text'\"\n [formField]=\"f\"\n [label]=\"(label() | dynamicText | async) ?? undefined\"\n [labelPlacement]=\"effectiveLabelPlacement()\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [clearInput]=\"props()?.clearInput ?? false\"\n [counter]=\"props()?.counter ?? false\"\n [color]=\"effectiveColor()\"\n [fill]=\"effectiveFill()\"\n [shape]=\"effectiveShape()\"\n [readonly]=\"f().readonly()\"\n [helperText]=\"(props()?.helperText | dynamicText | async) ?? undefined\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired\"\n />\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <ion-note color=\"danger\" class=\"df-ion-error\" [id]=\"errorId() + '-' + i\" role=\"alert\">{{ error.message }}</ion-note>\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 styleUrl: '../../styles/_form-field.scss',\n styles: [\n `\n :host([hidden]) {\n display: none !important;\n }\n `,\n ],\n})\nexport default class IonicInputFieldComponent implements IonicInputComponent {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n private ionicConfig = inject(IONIC_CONFIG, { optional: true });\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<IonicInputProps>();\n readonly meta = input<InputMeta>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n\n readonly effectiveFill = computed(() => this.props()?.fill ?? this.ionicConfig?.fill ?? 'solid');\n readonly effectiveShape = computed(() => this.props()?.shape ?? this.ionicConfig?.shape);\n readonly effectiveLabelPlacement = computed(() => this.props()?.labelPlacement ?? this.ionicConfig?.labelPlacement ?? 'start');\n readonly effectiveColor = computed(() => this.props()?.color ?? this.ionicConfig?.color);\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 // Shadow DOM - apply meta to ion-input element\n setupMetaTracking(this.elementRef, this.meta, {\n selector: 'ion-input',\n });\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Base ID for error elements */\n readonly errorId = computed(() => `${this.key()}-error`);\n\n /** Whether the field is currently in an invalid state (invalid AND touched) */\n readonly isAriaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** Whether the field has a required validator */\n readonly isRequired = computed(() => {\n return this.field()().required?.() === true;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input, linkedSignal } from '@angular/core';\nimport { FieldTree } from '@angular/forms/signals';\nimport { IonCheckbox, IonItem, IonNote } from '@ionic/angular/standalone';\nimport { DynamicText, DynamicTextPipe, FieldMeta, FieldOption, ValidationMessages, ValueType } from '@ng-forge/dynamic-forms';\nimport {\n createResolvedErrorsSignal,\n isEqual,\n setupMetaTracking,\n shouldShowErrors,\n ValueInArrayPipe,\n} from '@ng-forge/dynamic-forms/integration';\nimport { explicitEffect } from 'ngxtension/explicit-effect';\nimport { IonicMultiCheckboxComponent, IonicMultiCheckboxProps } from './ionic-multi-checkbox.type';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'df-ion-multi-checkbox',\n imports: [IonCheckbox, IonItem, IonNote, ValueInArrayPipe, DynamicTextPipe, AsyncPipe],\n template: `\n @let f = field();\n @if (label(); as label) {\n <div class=\"checkbox-group-label\">{{ label | dynamicText | async }}</div>\n }\n\n <div\n class=\"checkbox-group\"\n role=\"group\"\n [attr.aria-invalid]=\"isAriaInvalid()\"\n [attr.aria-required]=\"isRequired() || null\"\n [class.ion-invalid]=\"showErrors()\"\n [class.ion-touched]=\"field()().touched()\"\n >\n @for (option of options(); track option.value) {\n <ion-item lines=\"none\">\n <ion-checkbox\n [checked]=\"option | inArray: valueViewModel()\"\n [disabled]=\"f().disabled() || option.disabled\"\n [labelPlacement]=\"props()?.labelPlacement ?? 'end'\"\n [justify]=\"props()?.justify ?? 'start'\"\n [color]=\"props()?.color ?? 'primary'\"\n (ionChange)=\"onCheckboxChange(option, $event.detail.checked)\"\n >\n {{ option.label | dynamicText | async }}\n </ion-checkbox>\n </ion-item>\n }\n </div>\n\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <ion-note color=\"danger\" [id]=\"errorId() + '-' + i\" role=\"alert\">{{ error.message }}</ion-note>\n }\n `,\n styleUrl: '../../styles/_form-field.scss',\n styles: [\n `\n :host {\n display: block;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n\n .checkbox-group-label {\n margin-bottom: 8px;\n font-weight: 500;\n }\n\n .checkbox-group {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n ion-item {\n --padding-start: 0;\n --inner-padding-end: 0;\n }\n `,\n ],\n host: {\n '[class]': 'className() || \"\"',\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n providers: [ValueInArrayPipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class IonicMultiCheckboxFieldComponent<T extends ValueType> implements IonicMultiCheckboxComponent<T> {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n readonly field = input.required<FieldTree<T[]>>();\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<T>[]>([]);\n readonly props = input<IonicMultiCheckboxProps<T>>();\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 readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Base ID for error elements */\n readonly errorId = computed(() => `${this.key()}-error`);\n\n /** Whether the field is currently in an invalid state (invalid AND touched) */\n readonly isAriaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** Whether the field has a required validator */\n readonly isRequired = computed(() => {\n return this.field()().required?.() === true;\n });\n\n valueViewModel = linkedSignal<FieldOption<T>[]>(\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 // Shadow DOM - apply meta to ion-checkbox elements, re-apply when options change\n setupMetaTracking(this.elementRef, this.meta, {\n selector: 'ion-checkbox',\n dependents: [this.options],\n });\n\n explicitEffect([this.valueViewModel], ([selectedOptions]) => {\n const selectedValues = selectedOptions.map((option) => option.value);\n\n if (!isEqual(selectedValues, this.field()().value())) {\n this.field()().value.set(selectedValues);\n }\n });\n\n explicitEffect([this.options], ([options]) => {\n const values = options.map((option) => 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 ionic-multi-checkbox: ${duplicates.join(', ')}`);\n }\n });\n }\n\n onCheckboxChange(option: FieldOption<T>, checked: boolean): void {\n this.valueViewModel.update((currentOptions) => {\n if (checked) {\n return currentOptions.some((opt) => opt.value === option.value) ? currentOptions : [...currentOptions, option];\n } else {\n return currentOptions.filter((opt) => opt.value !== option.value);\n }\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { FormField, FieldTree } from '@angular/forms/signals';\nimport { IonItem, IonNote, IonRadio, IonRadioGroup } from '@ionic/angular/standalone';\nimport { DynamicText, DynamicTextPipe, FieldMeta, FieldOption, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, setupMetaTracking, shouldShowErrors } from '@ng-forge/dynamic-forms/integration';\nimport { IonicRadioComponent, IonicRadioProps } from './ionic-radio.type';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'df-ion-radio',\n imports: [IonRadioGroup, IonRadio, IonItem, IonNote, FormField, DynamicTextPipe, AsyncPipe],\n template: `\n @let f = field();\n @let radioGroupId = key() + '-radio-group';\n @if (label(); as label) {\n <div class=\"radio-label\">{{ label | dynamicText | async }}</div>\n }\n\n <ion-radio-group\n [id]=\"radioGroupId\"\n [formField]=\"f\"\n [compareWith]=\"props()?.compareWith || defaultCompare\"\n [attr.aria-invalid]=\"isAriaInvalid()\"\n [attr.aria-required]=\"isRequired() || null\"\n >\n @for (option of options(); track option.value) {\n <ion-item [lines]=\"'none'\">\n <ion-radio\n [value]=\"option.value\"\n [disabled]=\"option.disabled || false\"\n [labelPlacement]=\"props()?.labelPlacement ?? 'end'\"\n [justify]=\"props()?.justify\"\n [color]=\"props()?.color ?? 'primary'\"\n >\n {{ option.label | dynamicText | async }}\n </ion-radio>\n </ion-item>\n }\n </ion-radio-group>\n\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <ion-note color=\"danger\" [id]=\"errorId() + '-' + i\" role=\"alert\">{{ error.message }}</ion-note>\n }\n `,\n styleUrl: '../../styles/_form-field.scss',\n styles: [\n `\n :host {\n display: block;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n\n .radio-label {\n font-size: 0.875rem;\n font-weight: 500;\n margin-bottom: 0.5rem;\n color: var(--ion-text-color);\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 IonicRadioFieldComponent<T> implements IonicRadioComponent<T> {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n readonly field = input.required<FieldTree<T>>();\n readonly key = input.required<string>();\n\n // Properties\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n readonly options = input<FieldOption<T>[]>([]);\n readonly props = input<IonicRadioProps<T>>();\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 readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n defaultCompare = Object.is;\n\n constructor() {\n // Shadow DOM - apply meta to ion-radio elements, re-apply when options change\n setupMetaTracking(this.elementRef, this.meta, {\n selector: 'ion-radio',\n dependents: [this.options],\n });\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Base ID for error elements */\n readonly errorId = computed(() => `${this.key()}-error`);\n\n /** Whether the field is currently in an invalid state (invalid AND touched) */\n readonly isAriaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** Whether the field has a required validator */\n readonly isRequired = computed(() => {\n return this.field()().required?.() === true;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { FormField, FieldTree } from '@angular/forms/signals';\nimport { IonNote, IonSelect, IonSelectOption } from '@ionic/angular/standalone';\nimport { DynamicText, DynamicTextPipe, FieldMeta, FieldOption, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, setupMetaTracking, shouldShowErrors } from '@ng-forge/dynamic-forms/integration';\nimport { IonicSelectComponent, IonicSelectProps } from './ionic-select.type';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'df-ion-select',\n imports: [IonSelect, IonSelectOption, IonNote, FormField, DynamicTextPipe, AsyncPipe],\n template: `\n @let f = field();\n @let ariaInvalid = isAriaInvalid();\n @let ariaRequired = isRequired() || null;\n @let selectId = key() + '-select';\n\n <ion-select\n [id]=\"selectId\"\n [formField]=\"f\"\n [label]=\"(label() | dynamicText | async) ?? undefined\"\n [labelPlacement]=\"props()?.labelPlacement ?? 'stacked'\"\n [placeholder]=\"(placeholder() ?? props()?.placeholder | dynamicText | async) ?? ''\"\n [multiple]=\"props()?.multiple ?? false\"\n [compareWith]=\"props()?.compareWith ?? defaultCompare\"\n [interface]=\"props()?.interface ?? 'alert'\"\n [interfaceOptions]=\"props()?.interfaceOptions ?? {}\"\n [cancelText]=\"props()?.cancelText ?? 'Cancel'\"\n [okText]=\"props()?.okText ?? 'OK'\"\n [color]=\"props()?.color\"\n [fill]=\"props()?.fill ?? 'outline'\"\n [shape]=\"props()?.shape\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired\"\n >\n @for (option of options(); track option.value) {\n <ion-select-option [value]=\"option.value\" [disabled]=\"option.disabled || false\">\n {{ option.label | dynamicText | async }}\n </ion-select-option>\n }\n </ion-select>\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <ion-note color=\"danger\" class=\"df-ion-error\" [id]=\"errorId() + '-' + i\" role=\"alert\">{{ error.message }}</ion-note>\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 styleUrl: '../../styles/_form-field.scss',\n styles: [\n `\n :host([hidden]) {\n display: none !important;\n }\n `,\n ],\n})\nexport default class IonicSelectFieldComponent<T> implements IonicSelectComponent<T> {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n readonly field = input.required<FieldTree<T>>();\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<T>[]>([]);\n readonly props = input<IonicSelectProps<T>>();\n readonly meta = input<FieldMeta>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n\n constructor() {\n setupMetaTracking(this.elementRef, this.meta);\n }\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n defaultCompare = Object.is;\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Base ID for error elements */\n readonly errorId = computed(() => `${this.key()}-error`);\n\n /** Whether the field is currently in an invalid state (invalid AND touched) */\n readonly isAriaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** Whether the field has a required validator */\n readonly isRequired = computed(() => {\n return this.field()().required?.() === true;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { FormField, FieldTree } from '@angular/forms/signals';\nimport { IonNote, IonRange } from '@ionic/angular/standalone';\nimport { DynamicText, DynamicTextPipe, FieldMeta, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, setupMetaTracking, shouldShowErrors } from '@ng-forge/dynamic-forms/integration';\nimport { IonicSliderComponent, IonicSliderProps } from './ionic-slider.type';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'df-ion-slider',\n imports: [IonRange, IonNote, FormField, DynamicTextPipe, AsyncPipe],\n template: `\n @let f = field();\n @let inputId = key() + '-input';\n\n <ion-range\n [id]=\"inputId\"\n [formField]=\"f\"\n [label]=\"(label() | dynamicText | async) ?? undefined\"\n [labelPlacement]=\"props()?.labelPlacement ?? 'stacked'\"\n [step]=\"props()?.step ?? 1\"\n [dualKnobs]=\"props()?.dualKnobs ?? false\"\n [pin]=\"props()?.pin ?? false\"\n [pinFormatter]=\"props()?.pinFormatter ?? defaultPinFormatter\"\n [ticks]=\"props()?.ticks ?? false\"\n [snaps]=\"props()?.snaps ?? false\"\n [color]=\"props()?.color ?? 'primary'\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"isAriaInvalid()\"\n [attr.aria-required]=\"isRequired() || null\"\n />\n\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <ion-note color=\"danger\" [id]=\"errorId() + '-' + i\" role=\"alert\">{{ error.message }}</ion-note>\n }\n `,\n styleUrl: '../../styles/_form-field.scss',\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 IonicSliderFieldComponent implements IonicSliderComponent {\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 readonly className = input<string>('');\n readonly tabIndex = input<number>();\n\n readonly props = input<IonicSliderProps>();\n readonly meta = input<FieldMeta>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n\n constructor() {\n setupMetaTracking(this.elementRef, this.meta);\n }\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n protected defaultPinFormatter = (value: number) => String(value);\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Base ID for error elements */\n readonly errorId = computed(() => `${this.key()}-error`);\n\n /** Whether the field is currently in an invalid state (invalid AND touched) */\n readonly isAriaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** Whether the field has a required validator */\n readonly isRequired = computed(() => {\n return this.field()().required?.() === true;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { FormField, FieldTree } from '@angular/forms/signals';\nimport { IonNote, IonTextarea } from '@ionic/angular/standalone';\nimport { DynamicText, DynamicTextPipe, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, setupMetaTracking, shouldShowErrors, TextareaMeta } from '@ng-forge/dynamic-forms/integration';\nimport { IonicTextareaComponent, IonicTextareaProps } from './ionic-textarea.type';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'df-ion-textarea',\n imports: [IonTextarea, IonNote, FormField, DynamicTextPipe, AsyncPipe],\n template: `\n @let f = field();\n @let ariaInvalid = isAriaInvalid();\n @let ariaRequired = isRequired() || null;\n @let textareaId = key() + '-textarea';\n\n <ion-textarea\n [id]=\"textareaId\"\n [formField]=\"f\"\n [label]=\"(label() | dynamicText | async) ?? undefined\"\n [labelPlacement]=\"props()?.labelPlacement ?? 'stacked'\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [rows]=\"props()?.rows ?? 4\"\n [autoGrow]=\"props()?.autoGrow ?? false\"\n [counter]=\"props()?.counter ?? false\"\n [color]=\"props()?.color\"\n [fill]=\"props()?.fill ?? 'outline'\"\n [shape]=\"props()?.shape\"\n [readonly]=\"f().readonly()\"\n [helperText]=\"(props()?.helperText | dynamicText | async) ?? undefined\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired\"\n />\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <ion-note color=\"danger\" class=\"df-ion-error\" [id]=\"errorId() + '-' + i\" role=\"alert\">{{ error.message }}</ion-note>\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 styleUrl: '../../styles/_form-field.scss',\n styles: [\n `\n :host([hidden]) {\n display: none !important;\n }\n `,\n ],\n})\nexport default class IonicTextareaFieldComponent implements IonicTextareaComponent {\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<IonicTextareaProps>();\n readonly meta = input<TextareaMeta>();\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 readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n constructor() {\n // Shadow DOM - apply meta to ion-textarea element\n setupMetaTracking(this.elementRef, this.meta, {\n selector: 'ion-textarea',\n });\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Base ID for error elements */\n readonly errorId = computed(() => `${this.key()}-error`);\n\n /** Whether the field is currently in an invalid state (invalid AND touched) */\n readonly isAriaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** Whether the field has a required validator */\n readonly isRequired = computed(() => {\n return this.field()().required?.() === true;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input, model } from '@angular/core';\nimport type { FormCheckboxControl } from '@angular/forms/signals';\nimport { IonToggle } from '@ionic/angular/standalone';\nimport { FieldMeta } from '@ng-forge/dynamic-forms';\nimport { setupMetaTracking } from '@ng-forge/dynamic-forms/integration';\n\n/**\n * A wrapper component for Ionic's ion-toggle that implements FormCheckboxControl.\n * This allows it to work with Angular's [field] directive from @angular/forms/signals.\n *\n * We use FormCheckboxControl because ion-toggle is a boolean checkbox-like control.\n * The Field directive binds to the `checked` model for checkbox controls.\n */\n@Component({\n selector: 'df-ion-toggle-control',\n imports: [IonToggle],\n template: `\n <ion-toggle\n [checked]=\"isChecked()\"\n (ionChange)=\"onToggleChange($event)\"\n (ionBlur)=\"onBlur()\"\n [labelPlacement]=\"labelPlacement()\"\n [justify]=\"justify()\"\n [color]=\"color()\"\n [enableOnOffLabels]=\"enableOnOffLabels()\"\n [disabled]=\"isEffectivelyDisabled()\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-required]=\"ariaRequired()\"\n [attr.aria-readonly]=\"ariaReadonly()\"\n >\n <ng-content />\n </ion-toggle>\n `,\n styleUrl: '../../styles/_form-field.scss',\n host: {},\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IonicToggleControlComponent implements FormCheckboxControl {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n // ─────────────────────────────────────────────────────────────────────────────\n // FormCheckboxControl implementation\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** The checked state - required by FormCheckboxControl */\n readonly checked = model<boolean>(false);\n\n /** Tracks whether the field has been touched - used by Field directive */\n readonly touched = model<boolean>(false);\n\n /** Whether the field is disabled */\n readonly disabled = input<boolean>(false);\n\n /** Whether the field is readonly */\n readonly readonly = input<boolean>(false);\n\n /** Whether the field is invalid (from Field directive) */\n readonly invalid = input<boolean>(false);\n\n /** Whether the field is required (from Field directive) */\n readonly required = input<boolean>(false);\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Ionic-specific props\n // ─────────────────────────────────────────────────────────────────────────────\n\n readonly labelPlacement = input<'start' | 'end' | 'fixed' | 'stacked'>('end');\n readonly justify = input<'start' | 'end' | 'space-between' | undefined>(undefined);\n readonly color = input<string>('primary');\n readonly enableOnOffLabels = input<boolean>(false);\n readonly tabIndex = input<number | undefined>(undefined);\n readonly meta = input<FieldMeta>();\n\n constructor() {\n // Shadow DOM - apply meta to ion-toggle element\n setupMetaTracking(this.elementRef, this.meta, {\n selector: 'ion-toggle',\n });\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Computed ARIA attributes\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** aria-invalid: true when field is invalid AND touched */\n protected readonly ariaInvalid = computed(() => {\n return this.invalid() && this.touched();\n });\n\n /** aria-required: true if field is required, null otherwise */\n protected readonly ariaRequired = computed(() => {\n return this.required() ? true : null;\n });\n\n /** aria-readonly: true if field is readonly, null otherwise */\n protected readonly ariaReadonly = computed(() => {\n return this.readonly() ? true : null;\n });\n\n /** Computed checked state - ensures proper boolean conversion for ion-toggle */\n protected readonly isChecked = computed(() => {\n return this.checked() === true;\n });\n\n /**\n * ion-toggle doesn't have a native readonly attribute.\n * When readonly, we disable the toggle to prevent changes while maintaining the visual state.\n */\n protected readonly isEffectivelyDisabled = computed(() => {\n return this.disabled() || this.readonly();\n });\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Event Handlers\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Handle toggle change - sync ion-toggle's checked state to our checked model */\n onToggleChange(event: CustomEvent<{ checked: boolean; value: string }>): void {\n this.checked.set(event.detail.checked);\n }\n\n /** Marks the field as touched when toggle loses focus */\n onBlur(): void {\n this.touched.set(true);\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { FormField, FieldTree } from '@angular/forms/signals';\nimport { IonNote } from '@ionic/angular/standalone';\nimport { DynamicText, DynamicTextPipe, FieldMeta, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { createResolvedErrorsSignal, setupMetaTracking, shouldShowErrors } from '@ng-forge/dynamic-forms/integration';\nimport { IonicToggleComponent, IonicToggleProps } from './ionic-toggle.type';\nimport { IonicToggleControlComponent } from './ionic-toggle-control.component';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'df-ion-toggle',\n imports: [IonicToggleControlComponent, IonNote, FormField, DynamicTextPipe, AsyncPipe],\n template: `\n @let f = field();\n @let toggleId = key() + '-toggle';\n\n <df-ion-toggle-control\n [id]=\"toggleId\"\n [formField]=\"f\"\n [meta]=\"meta()\"\n [labelPlacement]=\"props()?.labelPlacement ?? 'end'\"\n [justify]=\"props()?.justify\"\n [color]=\"props()?.color ?? 'primary'\"\n [enableOnOffLabels]=\"props()?.enableOnOffLabels ?? false\"\n [tabIndex]=\"tabIndex()\"\n >\n {{ label() | dynamicText | async }}\n </df-ion-toggle-control>\n\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <ion-note color=\"danger\" [id]=\"errorId() + '-' + i\" role=\"alert\">{{ error.message }}</ion-note>\n }\n `,\n styleUrl: '../../styles/_form-field.scss',\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 IonicToggleFieldComponent implements IonicToggleComponent {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n readonly field = input.required<FieldTree<boolean>>();\n readonly key = input.required<string>();\n\n // Properties\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n readonly props = input<IonicToggleProps>();\n readonly meta = input<FieldMeta>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n\n constructor() {\n setupMetaTracking(this.elementRef, this.meta);\n }\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Base ID for error elements */\n readonly errorId = computed(() => `${this.key()}-error`);\n}\n","// Public exports for ionic field fields and types\n\n// Button\nexport { IonicButtonFieldComponent } from './button';\nexport type {\n IonicButtonProps,\n IonicButtonField,\n IonicSubmitButtonField,\n IonicNextButtonField,\n IonicPreviousButtonField,\n AddArrayItemButtonField,\n RemoveArrayItemButtonField,\n} from './button';\n\n// Checkbox\nexport { IonicCheckboxFieldComponent } from './checkbox';\nexport type { IonicCheckboxProps, IonicCheckboxField, IonicCheckboxComponent } from './checkbox';\n\n// Datepicker\nexport { IonicDatepickerFieldComponent } from './datepicker';\nexport type { IonicDatepickerProps, IonicDatepickerField, IonicDatepickerComponent } from './datepicker';\n\n// Input\nexport { IonicInputFieldComponent } from './input';\nexport type { IonicInputProps, IonicInputField, IonicInputComponent } from './input';\n\n// Multi-checkbox\nexport { IonicMultiCheckboxFieldComponent } from './multi-checkbox';\nexport type { IonicMultiCheckboxProps, IonicMultiCheckboxField, IonicMultiCheckboxComponent } from './multi-checkbox';\n\n// Radio\nexport { IonicRadioFieldComponent } from './radio';\nexport type { IonicRadioProps, IonicRadioField, IonicRadioComponent } from './radio';\n\n// Select\nexport { IonicSelectFieldComponent } from './select';\nexport type { IonicSelectProps, IonicSelectField, IonicSelectComponent } from './select';\n\n// Slider\nexport { IonicSliderFieldComponent } from './slider';\nexport type { IonicSliderProps, IonicSliderField, IonicSliderComponent } from './slider';\n\n// Textarea\nexport { IonicTextareaFieldComponent } from './textarea';\nexport type { IonicTextareaProps, IonicTextareaField, IonicTextareaComponent } from './textarea';\n\n// Toggle\nexport { IonicToggleFieldComponent } from './toggle';\nexport type { IonicToggleProps, IonicToggleField, IonicToggleComponent } from './toggle';\n","/**\n * Ionic field type constants\n * Based on available field components in the /fields folder\n */\nexport const IonicField = {\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 IonicFieldType = (typeof IonicField)[keyof typeof IonicField];\n","import { computed, Signal } from '@angular/core';\nimport { buildBaseInputs, 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 // Build base inputs (static, from field definition)\n const baseInputs = buildBaseInputs(fieldDef);\n\n return computed(() => {\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 DynamicFormLogger,\n FIELD_SIGNAL_CONTEXT,\n FieldDef,\n FieldWithValidation,\n NextPageEvent,\n PreviousPageEvent,\n RemoveArrayItemEvent,\n resolveNextButtonDisabled,\n resolveSubmitButtonDisabled,\n} from '@ng-forge/dynamic-forms';\nimport { AddArrayItemButtonField, RemoveArrayItemButtonField } from './ionic-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 // Inject field signal context to access form state and options\n const fieldSignalContext = inject(FIELD_SIGNAL_CONTEXT);\n\n // Build base inputs (static, from field definition)\n const baseInputs = buildBaseInputs(fieldDef);\n\n // Use button-logic-resolver to compute disabled state\n const fieldWithLogic = fieldDef as FieldDef<Record<string, unknown>> & Partial<FieldWithValidation>;\n const disabledSignal = resolveSubmitButtonDisabled({\n form: fieldSignalContext.form,\n formOptions: fieldSignalContext.formOptions,\n fieldLogic: fieldWithLogic.logic,\n explicitlyDisabled: fieldDef.disabled,\n });\n\n // Return computed signal - evaluates disabledSignal inside for reactivity\n return computed(() => {\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 // Inject field signal context to access form state and options\n const fieldSignalContext = inject(FIELD_SIGNAL_CONTEXT);\n\n // Build base inputs (static, from field definition)\n const baseInputs = buildBaseInputs(fieldDef);\n\n // Use button-logic-resolver to compute disabled state\n const fieldWithLogic = fieldDef as FieldDef<Record<string, unknown>> & Partial<FieldWithValidation>;\n const disabledSignal = resolveNextButtonDisabled({\n form: fieldSignalContext.form,\n formOptions: fieldSignalContext.formOptions,\n fieldLogic: fieldWithLogic.logic,\n explicitlyDisabled: fieldDef.disabled,\n currentPageValid: fieldSignalContext.currentPageValid,\n });\n\n // Return computed signal - evaluates disabledSignal inside for reactivity\n return computed(() => {\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 // Build base inputs (static, from field definition)\n const baseInputs = buildBaseInputs(fieldDef);\n\n return computed(() => {\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 // Try to get array context (available when inside an array)\n // Use optional injection so it doesn't fail when outside an array\n const arrayContext = inject(ARRAY_CONTEXT, { optional: true });\n const logger = inject(DynamicFormLogger);\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 // Build base inputs (static, from field definition)\n const baseInputs = buildBaseInputs(fieldDef);\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 // 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 // Try to get array context (available when inside an array)\n // Use optional injection so it doesn't fail when outside an array\n const arrayContext = inject(ARRAY_CONTEXT, { optional: true });\n const logger = inject(DynamicFormLogger);\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 // Build base inputs (static, from field definition)\n const baseInputs = buildBaseInputs(fieldDef);\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 // 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 { IonicField } from '../types/types';\nimport { buttonFieldMapper } from '../fields/button/ionic-button.mapper';\nimport {\n addArrayItemButtonFieldMapper,\n nextButtonFieldMapper,\n previousButtonFieldMapper,\n removeArrayItemButtonFieldMapper,\n submitButtonFieldMapper,\n} from '../fields/button/ionic-specific-button.mapper';\n\n/**\n * Ionic field type definitions\n * Follows the FieldTypeDefinition interface for proper registry integration\n */\nexport const IONIC_FIELD_TYPES: FieldTypeDefinition[] = [\n {\n name: IonicField.Input,\n loadComponent: () => import('../fields/input/ionic-input.component'),\n mapper: valueFieldMapper,\n propsToMeta: ['type'],\n },\n {\n name: IonicField.Select,\n loadComponent: () => import('../fields/select/ionic-select.component'),\n mapper: optionsFieldMapper,\n },\n {\n name: IonicField.Checkbox,\n loadComponent: () => import('../fields/checkbox/ionic-checkbox.component'),\n mapper: checkboxFieldMapper,\n },\n {\n name: IonicField.Button,\n loadComponent: () => import('../fields/button/ionic-button.component'),\n mapper: buttonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: IonicField.Submit,\n loadComponent: () => import('../fields/button/ionic-button.component'),\n mapper: submitButtonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: IonicField.Next,\n loadComponent: () => import('../fields/button/ionic-button.component'),\n mapper: nextButtonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: IonicField.Previous,\n loadComponent: () => import('../fields/button/ionic-button.component'),\n mapper: previousButtonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: IonicField.AddArrayItem,\n loadComponent: () => import('../fields/button/ionic-button.component'),\n mapper: addArrayItemButtonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: IonicField.RemoveArrayItem,\n loadComponent: () => import('../fields/button/ionic-button.component'),\n mapper: removeArrayItemButtonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: IonicField.Textarea,\n loadComponent: () => import('../fields/textarea/ionic-textarea.component'),\n mapper: valueFieldMapper,\n propsToMeta: ['rows'],\n },\n {\n name: IonicField.Radio,\n loadComponent: () => import('../fields/radio/ionic-radio.component'),\n mapper: optionsFieldMapper,\n },\n {\n name: IonicField.MultiCheckbox,\n loadComponent: () => import('../fields/multi-checkbox/ionic-multi-checkbox.component'),\n mapper: optionsFieldMapper,\n },\n {\n name: IonicField.Datepicker,\n loadComponent: () => import('../fields/datepicker/ionic-datepicker.component'),\n mapper: datepickerFieldMapper,\n },\n {\n name: IonicField.Slider,\n loadComponent: () => import('../fields/slider/ionic-slider.component'),\n mapper: valueFieldMapper,\n },\n {\n name: IonicField.Toggle,\n loadComponent: () => import('../fields/toggle/ionic-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 Ionic field types provided by this library.\n */\n\nimport type { FormEvent } from '@ng-forge/dynamic-forms';\nimport type {\n AddArrayItemButtonField,\n IonicButtonField,\n IonicCheckboxField,\n IonicDatepickerField,\n IonicInputField,\n IonicMultiCheckboxField,\n IonicNextButtonField,\n IonicPreviousButtonField,\n IonicRadioField,\n IonicSelectField,\n IonicSliderField,\n IonicSubmitButtonField,\n IonicTextareaField,\n IonicToggleField,\n RemoveArrayItemButtonField,\n} from '../fields';\n\ndeclare module '@ng-forge/dynamic-forms' {\n interface FieldRegistryLeaves {\n input: IonicInputField;\n select: IonicSelectField<unknown>;\n checkbox: IonicCheckboxField;\n button: IonicButtonField<FormEvent>;\n submit: IonicSubmitButtonField;\n next: IonicNextButtonField;\n previous: IonicPreviousButtonField;\n textarea: IonicTextareaField;\n radio: IonicRadioField<unknown>;\n 'multi-checkbox': IonicMultiCheckboxField<unknown>;\n datepicker: IonicDatepickerField;\n slider: IonicSliderField;\n toggle: IonicToggleField;\n addArrayItem: AddArrayItemButtonField;\n removeArrayItem: RemoveArrayItemButtonField;\n }\n}\n","import type { FieldTypeDefinition } from '@ng-forge/dynamic-forms';\nimport type { Provider } from '@angular/core';\nimport { IONIC_FIELD_TYPES } from '../config/ionic-field-config';\nimport { IonicConfig } from '../models/ionic-config';\nimport { IONIC_CONFIG } from '../models/ionic-config.token';\nimport {\n IonicButtonField,\n IonicCheckboxField,\n IonicDatepickerField,\n IonicInputField,\n IonicMultiCheckboxField,\n IonicNextButtonField,\n IonicPreviousButtonField,\n IonicRadioField,\n IonicSelectField,\n IonicSliderField,\n IonicSubmitButtonField,\n IonicTextareaField,\n IonicToggleField,\n} from '../fields';\n\n/**\n * Field type definitions with optional config providers\n */\nexport type FieldTypeDefinitionsWithConfig = FieldTypeDefinition[] & {\n __configProviders?: Provider[];\n};\n\n/**\n * Configure dynamic forms with Ionic field types.\n * Provides all Ionic field types for use with provideDynamicForm.\n *\n * @param config - Optional global configuration for Ionic 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 { withIonicFields } from '@ng-forge/dynamic-form-ionic';\n *\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideDynamicForm(...withIonicFields())\n * ]\n * };\n * ```\n *\n * @example\n * ```typescript\n * // With global configuration\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideDynamicForm(\n * ...withIonicFields({\n * fill: 'outline',\n * labelPlacement: 'floating'\n * })\n * )\n * ]\n * };\n * ```\n *\n * @returns Array of field type definitions for Ionic components\n */\nexport function withIonicFields(config?: IonicConfig): FieldTypeDefinitionsWithConfig {\n const fields = IONIC_FIELD_TYPES as FieldTypeDefinitionsWithConfig;\n\n if (config) {\n fields.__configProviders = [\n {\n provide: IONIC_CONFIG,\n useValue: config,\n },\n ];\n }\n\n return fields;\n}\n\n/**\n * Module augmentation to extend the global DynamicFormFieldRegistry\n * with Ionic field types\n */\ndeclare module '@ng-forge/dynamic-forms' {\n interface DynamicFormFieldRegistry {\n input: IonicInputField;\n select: IonicSelectField<any>;\n checkbox: IonicCheckboxField;\n button: IonicButtonField<any>;\n submit: IonicSubmitButtonField;\n next: IonicNextButtonField;\n previous: IonicPreviousButtonField;\n textarea: IonicTextareaField;\n radio: IonicRadioField<any>;\n 'multi-checkbox': IonicMultiCheckboxField<any>;\n datepicker: IonicDatepickerField;\n slider: IonicSliderField;\n toggle: IonicToggleField;\n }\n}\n","// Field fields\nexport {\n IonicButtonFieldComponent,\n IonicCheckboxFieldComponent,\n IonicDatepickerFieldComponent,\n IonicInputFieldComponent,\n IonicMultiCheckboxFieldComponent,\n IonicRadioFieldComponent,\n IonicSelectFieldComponent,\n IonicSliderFieldComponent,\n IonicTextareaFieldComponent,\n IonicToggleFieldComponent,\n} from './fields';\nexport type {\n IonicButtonProps,\n IonicButtonField,\n IonicSubmitButtonField,\n IonicNextButtonField,\n IonicPreviousButtonField,\n AddArrayItemButtonField,\n RemoveArrayItemButtonField,\n IonicCheckboxProps,\n IonicCheckboxField,\n IonicCheckboxComponent,\n IonicDatepickerProps,\n IonicDatepickerField,\n IonicDatepickerComponent,\n IonicInputProps,\n IonicInputField,\n IonicInputComponent,\n IonicMultiCheckboxProps,\n IonicMultiCheckboxField,\n IonicMultiCheckboxComponent,\n IonicRadioProps,\n IonicRadioField,\n IonicRadioComponent,\n IonicSelectProps,\n IonicSelectField,\n IonicSelectComponent,\n IonicSliderProps,\n IonicSliderField,\n IonicSliderComponent,\n IonicTextareaProps,\n IonicTextareaField,\n IonicTextareaComponent,\n IonicToggleProps,\n IonicToggleField,\n IonicToggleComponent,\n} from './fields';\n\n// Configuration\nexport { IONIC_FIELD_TYPES } from './config/ionic-field-config';\nexport type { IonicConfig } from './models';\nexport { IONIC_CONFIG } from './models';\n\n// Types and constants\nexport { IonicField, type IonicFieldType } from './types/types';\n\n// Module augmentation for global types\nimport './types/registry-augmentation';\n\n// Providers\nexport { withIonicFields } from './providers/ionic-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-ionic",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "Ionic integration for @ng-forge/dynamic-forms. Pre-built Ionic form components for mobile and desktop.",
5
5
  "type": "module",
6
6
  "license": "MIT",