@ng-forge/dynamic-forms-ionic 1.1.0 → 1.2.0-next.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +5 -5
  2. package/fesm2022/ng-forge-dynamic-forms-ionic-ionic-field-errors-wrapper.component-CN0CagvT.mjs +26 -0
  3. package/fesm2022/ng-forge-dynamic-forms-ionic-ionic-field-errors-wrapper.component-CN0CagvT.mjs.map +1 -0
  4. package/fesm2022/ng-forge-dynamic-forms-ionic-lazy-addon-button.mjs +75 -0
  5. package/fesm2022/ng-forge-dynamic-forms-ionic-lazy-addon-button.mjs.map +1 -0
  6. package/fesm2022/ng-forge-dynamic-forms-ionic-lazy-addon-icon.mjs +36 -0
  7. package/fesm2022/ng-forge-dynamic-forms-ionic-lazy-addon-icon.mjs.map +1 -0
  8. package/fesm2022/ng-forge-dynamic-forms-ionic-lazy-button.mjs +70 -0
  9. package/fesm2022/ng-forge-dynamic-forms-ionic-lazy-button.mjs.map +1 -0
  10. package/fesm2022/ng-forge-dynamic-forms-ionic-lazy-checkbox.mjs +67 -0
  11. package/fesm2022/ng-forge-dynamic-forms-ionic-lazy-checkbox.mjs.map +1 -0
  12. package/fesm2022/ng-forge-dynamic-forms-ionic-lazy-datepicker.mjs +195 -0
  13. package/fesm2022/ng-forge-dynamic-forms-ionic-lazy-datepicker.mjs.map +1 -0
  14. package/fesm2022/ng-forge-dynamic-forms-ionic-lazy-input.mjs +211 -0
  15. package/fesm2022/ng-forge-dynamic-forms-ionic-lazy-input.mjs.map +1 -0
  16. package/fesm2022/ng-forge-dynamic-forms-ionic-lazy-multi-checkbox.mjs +139 -0
  17. package/fesm2022/ng-forge-dynamic-forms-ionic-lazy-multi-checkbox.mjs.map +1 -0
  18. package/fesm2022/ng-forge-dynamic-forms-ionic-lazy-radio.mjs +98 -0
  19. package/fesm2022/ng-forge-dynamic-forms-ionic-lazy-radio.mjs.map +1 -0
  20. package/fesm2022/ng-forge-dynamic-forms-ionic-lazy-select.mjs +92 -0
  21. package/fesm2022/ng-forge-dynamic-forms-ionic-lazy-select.mjs.map +1 -0
  22. package/fesm2022/ng-forge-dynamic-forms-ionic-lazy-slider.mjs +76 -0
  23. package/fesm2022/ng-forge-dynamic-forms-ionic-lazy-slider.mjs.map +1 -0
  24. package/fesm2022/ng-forge-dynamic-forms-ionic-lazy-textarea.mjs +96 -0
  25. package/fesm2022/ng-forge-dynamic-forms-ionic-lazy-textarea.mjs.map +1 -0
  26. package/fesm2022/ng-forge-dynamic-forms-ionic-lazy-toggle.mjs +146 -0
  27. package/fesm2022/ng-forge-dynamic-forms-ionic-lazy-toggle.mjs.map +1 -0
  28. package/fesm2022/ng-forge-dynamic-forms-ionic-shared.mjs +83 -0
  29. package/fesm2022/ng-forge-dynamic-forms-ionic-shared.mjs.map +1 -0
  30. package/fesm2022/ng-forge-dynamic-forms-ionic.mjs +85 -198
  31. package/fesm2022/ng-forge-dynamic-forms-ionic.mjs.map +1 -1
  32. package/package.json +56 -4
  33. package/types/ng-forge-dynamic-forms-ionic-lazy-addon-button.d.ts +29 -0
  34. package/types/ng-forge-dynamic-forms-ionic-lazy-addon-icon.d.ts +18 -0
  35. package/types/ng-forge-dynamic-forms-ionic-lazy-button.d.ts +119 -0
  36. package/types/ng-forge-dynamic-forms-ionic-lazy-checkbox.d.ts +23 -0
  37. package/types/ng-forge-dynamic-forms-ionic-lazy-datepicker.d.ts +39 -0
  38. package/types/ng-forge-dynamic-forms-ionic-lazy-input.d.ts +70 -0
  39. package/types/ng-forge-dynamic-forms-ionic-lazy-multi-checkbox.d.ts +28 -0
  40. package/types/ng-forge-dynamic-forms-ionic-lazy-radio.d.ts +25 -0
  41. package/types/ng-forge-dynamic-forms-ionic-lazy-select.d.ts +31 -0
  42. package/types/ng-forge-dynamic-forms-ionic-lazy-slider.d.ts +43 -0
  43. package/types/ng-forge-dynamic-forms-ionic-lazy-textarea.d.ts +28 -0
  44. package/types/ng-forge-dynamic-forms-ionic-lazy-toggle.d.ts +66 -0
  45. package/types/ng-forge-dynamic-forms-ionic-shared.d.ts +116 -0
  46. package/types/ng-forge-dynamic-forms-ionic.d.ts +10 -164
@@ -0,0 +1,119 @@
1
+ import { FormEvent, AppendArrayItemEvent, ArrayAllowedChildren, InsertArrayItemEvent, NextPageEvent, PopArrayItemEvent, PrependArrayItemEvent, PreviousPageEvent, RemoveAtIndexEvent, ShiftArrayItemEvent, FormSubmitEvent } from '@ng-forge/dynamic-forms';
2
+ import * as _ng_forge_dynamic_forms_integration from '@ng-forge/dynamic-forms/integration';
3
+ import { ButtonField } from '@ng-forge/dynamic-forms/integration';
4
+ import * as _angular_core from '@angular/core';
5
+
6
+ interface IonicButtonProps {
7
+ expand?: 'full' | 'block';
8
+ fill?: 'clear' | 'outline' | 'solid' | 'default';
9
+ shape?: 'round';
10
+ size?: 'small' | 'default' | 'large';
11
+ color?: 'primary' | 'secondary' | 'tertiary' | 'success' | 'warning' | 'danger' | 'light' | 'medium' | 'dark';
12
+ strong?: boolean;
13
+ type?: 'button' | 'submit' | 'reset';
14
+ }
15
+ type IonicButtonField<TEvent extends FormEvent> = ButtonField<IonicButtonProps, TEvent>;
16
+ /** Specific button field types with preconfigured events */
17
+ /** Submit button field - automatically disabled when form is invalid */
18
+ type IonicSubmitButtonField = Omit<IonicButtonField<FormSubmitEvent>, 'event' | 'type' | 'eventArgs'> & {
19
+ type: 'submit';
20
+ };
21
+ /** Next page button field - with preconfigured NextPageEvent */
22
+ type IonicNextButtonField = Omit<IonicButtonField<NextPageEvent>, 'event' | 'type' | 'eventArgs'> & {
23
+ type: 'next';
24
+ };
25
+ /** Previous page button field - with preconfigured PreviousPageEvent */
26
+ type IonicPreviousButtonField = Omit<IonicButtonField<PreviousPageEvent>, 'event' | 'type' | 'eventArgs'> & {
27
+ type: 'previous';
28
+ };
29
+ /** Add array item button field - dispatches AppendArrayItemEvent */
30
+ type IonicAddArrayItemButtonField = Omit<IonicButtonField<AppendArrayItemEvent>, 'event' | 'type' | 'eventArgs'> & {
31
+ type: 'add-array-item' | 'addArrayItem';
32
+ /**
33
+ * The key of the array field to add items to.
34
+ * Required when the button is placed outside the array.
35
+ * When inside an array, this is automatically determined from context.
36
+ */
37
+ arrayKey?: string;
38
+ /**
39
+ * Template for the new array item. REQUIRED.
40
+ * - Single field (ArrayAllowedChildren): Creates a primitive item (field's value is extracted directly)
41
+ * - Array of fields (ArrayAllowedChildren[]): Creates an object item (fields merged into object)
42
+ */
43
+ template: ArrayAllowedChildren | readonly ArrayAllowedChildren[];
44
+ };
45
+ /** Prepend array item button field - dispatches PrependArrayItemEvent (adds at beginning) */
46
+ type IonicPrependArrayItemButtonField = Omit<IonicButtonField<PrependArrayItemEvent>, 'event' | 'type' | 'eventArgs'> & {
47
+ type: 'prepend-array-item' | 'prependArrayItem';
48
+ /**
49
+ * The key of the array field to prepend items to.
50
+ * Required when the button is placed outside the array.
51
+ * When inside an array, this is automatically determined from context.
52
+ */
53
+ arrayKey?: string;
54
+ /**
55
+ * Template for the new array item. REQUIRED.
56
+ * - Single field (ArrayAllowedChildren): Creates a primitive item (field's value is extracted directly)
57
+ * - Array of fields (ArrayAllowedChildren[]): Creates an object item (fields merged into object)
58
+ */
59
+ template: ArrayAllowedChildren | readonly ArrayAllowedChildren[];
60
+ };
61
+ /** Insert array item button field - dispatches InsertArrayItemEvent (adds at specific index) */
62
+ type IonicInsertArrayItemButtonField = Omit<IonicButtonField<InsertArrayItemEvent>, 'event' | 'type' | 'eventArgs'> & {
63
+ type: 'insert-array-item' | 'insertArrayItem';
64
+ /**
65
+ * The key of the array field to insert items into.
66
+ * Required when the button is placed outside the array.
67
+ * When inside an array, this is automatically determined from context.
68
+ */
69
+ arrayKey?: string;
70
+ /** The index at which to insert the new item. */
71
+ index: number;
72
+ /**
73
+ * Template for the new array item. REQUIRED.
74
+ * - Single field (ArrayAllowedChildren): Creates a primitive item (field's value is extracted directly)
75
+ * - Array of fields (ArrayAllowedChildren[]): Creates an object item (fields merged into object)
76
+ */
77
+ template: ArrayAllowedChildren | readonly ArrayAllowedChildren[];
78
+ };
79
+ /** Remove array item button field - dispatches RemoveAtIndexEvent or PopArrayItemEvent */
80
+ type IonicRemoveArrayItemButtonField = Omit<IonicButtonField<RemoveAtIndexEvent>, 'event' | 'type' | 'eventArgs'> & {
81
+ type: 'remove-array-item' | 'removeArrayItem';
82
+ /**
83
+ * The key of the array field to remove items from.
84
+ * Required when the button is placed outside the array.
85
+ * When inside an array, this is automatically determined from context.
86
+ */
87
+ arrayKey?: string;
88
+ };
89
+ /** Pop array item button field - dispatches PopArrayItemEvent (removes last item) */
90
+ type IonicPopArrayItemButtonField = Omit<IonicButtonField<PopArrayItemEvent>, 'event' | 'type' | 'eventArgs'> & {
91
+ type: 'pop-array-item' | 'popArrayItem';
92
+ /**
93
+ * The key of the array field to remove the last item from.
94
+ * REQUIRED - must specify which array to pop from.
95
+ */
96
+ arrayKey: string;
97
+ };
98
+ /** Shift array item button field - dispatches ShiftArrayItemEvent (removes first item) */
99
+ type IonicShiftArrayItemButtonField = Omit<IonicButtonField<ShiftArrayItemEvent>, 'event' | 'type' | 'eventArgs'> & {
100
+ type: 'shift-array-item' | 'shiftArrayItem';
101
+ /**
102
+ * The key of the array field to remove the first item from.
103
+ * REQUIRED - must specify which array to shift from.
104
+ */
105
+ arrayKey: string;
106
+ };
107
+
108
+ declare class IonicButtonFieldComponent<TEvent extends FormEvent> {
109
+ protected readonly action: _ng_forge_dynamic_forms_integration.NgForgeAction<TEvent>;
110
+ readonly props: _angular_core.InputSignal<IonicButtonProps | undefined>;
111
+ readonly buttonType: _angular_core.Signal<"button" | "submit" | "reset">;
112
+ readonly buttonTestId: _angular_core.Signal<string>;
113
+ onClick(): void;
114
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<IonicButtonFieldComponent<any>, never>;
115
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<IonicButtonFieldComponent<any>, "df-ion-button", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof _ng_forge_dynamic_forms_integration.NgForgeActionHost; inputs: {}; outputs: {}; }]>;
116
+ }
117
+
118
+ export { IonicButtonFieldComponent };
119
+ export type { IonicAddArrayItemButtonField, IonicButtonField, IonicButtonProps, IonicInsertArrayItemButtonField, IonicNextButtonField, IonicPopArrayItemButtonField, IonicPrependArrayItemButtonField, IonicPreviousButtonField, IonicRemoveArrayItemButtonField, IonicShiftArrayItemButtonField, IonicSubmitButtonField };
@@ -0,0 +1,23 @@
1
+ import { DynamicText } from '@ng-forge/dynamic-forms';
2
+ import * as _ng_forge_dynamic_forms_integration from '@ng-forge/dynamic-forms/integration';
3
+ import { CheckboxField } from '@ng-forge/dynamic-forms/integration';
4
+ import * as i0 from '@angular/core';
5
+
6
+ interface IonicCheckboxProps {
7
+ labelPlacement?: 'start' | 'end' | 'fixed' | 'stacked';
8
+ justify?: 'start' | 'end' | 'space-between';
9
+ color?: 'primary' | 'secondary' | 'tertiary' | 'success' | 'warning' | 'danger';
10
+ indeterminate?: boolean;
11
+ hint?: DynamicText;
12
+ }
13
+ type IonicCheckboxField = CheckboxField<IonicCheckboxProps>;
14
+
15
+ declare class IonicCheckboxFieldComponent {
16
+ protected readonly ngf: _ng_forge_dynamic_forms_integration.TypedNgForgeField<boolean>;
17
+ readonly props: i0.InputSignal<IonicCheckboxProps | undefined>;
18
+ static ɵfac: i0.ɵɵFactoryDeclaration<IonicCheckboxFieldComponent, never>;
19
+ static ɵcmp: i0.ɵɵComponentDeclaration<IonicCheckboxFieldComponent, "df-ion-checkbox", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof _ng_forge_dynamic_forms_integration.NgForgeFieldHost; inputs: {}; outputs: {}; }]>;
20
+ }
21
+
22
+ export { IonicCheckboxFieldComponent };
23
+ export type { IonicCheckboxField, IonicCheckboxProps };
@@ -0,0 +1,39 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import * as _ng_forge_dynamic_forms_integration from '@ng-forge/dynamic-forms/integration';
3
+ import { DatepickerField, DatepickerProps } from '@ng-forge/dynamic-forms/integration';
4
+ import { DynamicText } from '@ng-forge/dynamic-forms';
5
+
6
+ interface IonicDatepickerProps extends DatepickerProps {
7
+ presentation?: 'date' | 'date-time' | 'time' | 'time-date' | 'month' | 'month-year' | 'year';
8
+ multiple?: boolean;
9
+ preferWheel?: boolean;
10
+ showDefaultButtons?: boolean;
11
+ showDefaultTitle?: boolean;
12
+ showDefaultTimeLabel?: boolean;
13
+ showClearButton?: boolean;
14
+ doneText?: string;
15
+ cancelText?: string;
16
+ size?: 'cover' | 'fixed';
17
+ color?: 'primary' | 'secondary' | 'tertiary' | 'success' | 'warning' | 'danger';
18
+ hint?: DynamicText;
19
+ }
20
+ type IonicDatepickerField = DatepickerField<IonicDatepickerProps>;
21
+
22
+ declare class IonicDatepickerFieldComponent {
23
+ protected readonly ngf: _ng_forge_dynamic_forms_integration.TypedNgForgeField<Date | null>;
24
+ readonly minDate: _angular_core.InputSignal<Date | null>;
25
+ readonly maxDate: _angular_core.InputSignal<Date | null>;
26
+ readonly startAt: _angular_core.InputSignal<Date | null>;
27
+ readonly props: _angular_core.InputSignal<IonicDatepickerProps | undefined>;
28
+ readonly isModalOpen: _angular_core.WritableSignal<boolean>;
29
+ openModal(): void;
30
+ closeModal(): void;
31
+ onDateChange(event: CustomEvent): void;
32
+ dateToIsoString(date: Date | null | undefined): string | undefined;
33
+ formatDisplayDate(date: Date | null | undefined): string;
34
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<IonicDatepickerFieldComponent, never>;
35
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<IonicDatepickerFieldComponent, "df-ion-datepicker", never, { "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "startAt": { "alias": "startAt"; "required": false; "isSignal": true; }; "props": { "alias": "props"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof _ng_forge_dynamic_forms_integration.NgForgeFieldHost; inputs: {}; outputs: {}; }]>;
36
+ }
37
+
38
+ export { IonicDatepickerFieldComponent };
39
+ export type { IonicDatepickerField, IonicDatepickerProps };
@@ -0,0 +1,70 @@
1
+ import * as _ng_forge_dynamic_forms from '@ng-forge/dynamic-forms';
2
+ import { DynamicText, TextAddon, TemplateAddon } from '@ng-forge/dynamic-forms';
3
+ import * as _ng_forge_dynamic_forms_integration from '@ng-forge/dynamic-forms/integration';
4
+ import { InputField, InputProps, WrapperFieldInputs } from '@ng-forge/dynamic-forms/integration';
5
+ import * as _ng_forge_dynamic_forms_ionic_shared from '@ng-forge/dynamic-forms-ionic/shared';
6
+ import { IonicIconAddon, IonicButtonAddon } from '@ng-forge/dynamic-forms-ionic/shared';
7
+ import * as _angular_core from '@angular/core';
8
+
9
+ interface IonicInputProps extends InputProps {
10
+ fill?: 'solid' | 'outline';
11
+ shape?: 'round';
12
+ labelPlacement?: 'start' | 'end' | 'fixed' | 'stacked' | 'floating';
13
+ color?: 'primary' | 'secondary' | 'tertiary' | 'success' | 'warning' | 'danger' | 'light' | 'medium' | 'dark';
14
+ hint?: DynamicText;
15
+ errorText?: DynamicText;
16
+ counter?: boolean;
17
+ clearInput?: boolean;
18
+ }
19
+ /**
20
+ * Module-augmentable seam for adding custom addon types to `ion-input` at
21
+ * the type level. Pair with `withCustomAddon(...)` for the runtime side:
22
+ */
23
+ interface IonicAddonExtensions {
24
+ }
25
+ type IonicAddonExtension = IonicAddonExtensions[keyof IonicAddonExtensions];
26
+ /** Addon types accepted by `ion-input`. */
27
+ type IonicInputAddon = IonicIconAddon | IonicButtonAddon | TextAddon | TemplateAddon | IonicAddonExtension;
28
+ type IonicInputField = InputField<IonicInputProps> & {
29
+ addons?: ReadonlyArray<IonicInputAddon>;
30
+ };
31
+
32
+ declare class IonicInputFieldComponent {
33
+ private readonly elementRef;
34
+ private ionicConfig;
35
+ protected readonly ngf: _ng_forge_dynamic_forms_integration.TypedNgForgeField<string>;
36
+ protected readonly ngfa: _ng_forge_dynamic_forms_integration.TypedNgForgeAddons<IonicInputAddon>;
37
+ readonly props: _angular_core.InputSignal<IonicInputProps | undefined>;
38
+ /**
39
+ * Wrapper-style host bag pushed by `DfFieldOutlet`. Declared at the
40
+ * component level so `setInputIfDeclared` (which uses
41
+ * `reflectComponentType`) can write it.
42
+ */
43
+ readonly fieldInputs: _angular_core.InputSignal<WrapperFieldInputs | undefined>;
44
+ /** Per-instance type override populated by `toggle-password-visibility` preset. */
45
+ private readonly typeOverride;
46
+ protected readonly fill: _angular_core.Signal<"solid" | "outline">;
47
+ protected readonly shape: _angular_core.Signal<"round" | undefined>;
48
+ /** Bootstrap / PrimeNG. Consumers can opt into Ionic's native inline 'start' */
49
+ protected readonly labelPlacement: _angular_core.Signal<"start" | "end" | "fixed" | "stacked" | "floating">;
50
+ protected readonly color: _angular_core.Signal<"primary" | "secondary" | "tertiary" | "success" | "warning" | "danger" | "light" | "medium" | "dark" | undefined>;
51
+ /** Override (set by `toggle-password-visibility` preset) wins over `props().type`. */
52
+ protected readonly type: _angular_core.Signal<string>;
53
+ /** Per-type split: ion-button addons render inline via the attribute-
54
+ * selector inline component (so the slotted element is a native
55
+ * <ion-button> Ionic can style); everything else (icon/text/template/
56
+ * component types) goes through the universal <df-addon-slot> dispatcher
57
+ * wrapped in <span slot="start|end"> for safe shadow-DOM projection. */
58
+ protected readonly buttonPrefixAddons: _angular_core.Signal<_ng_forge_dynamic_forms_ionic_shared.IonicButtonAddon[]>;
59
+ protected readonly buttonSuffixAddons: _angular_core.Signal<_ng_forge_dynamic_forms_ionic_shared.IonicButtonAddon[]>;
60
+ protected readonly decorativePrefixAddons: _angular_core.Signal<(_ng_forge_dynamic_forms_ionic_shared.IonicIconAddon | _ng_forge_dynamic_forms.TextAddon | _ng_forge_dynamic_forms.TemplateAddon)[]>;
61
+ protected readonly decorativeSuffixAddons: _angular_core.Signal<(_ng_forge_dynamic_forms_ionic_shared.IonicIconAddon | _ng_forge_dynamic_forms.TextAddon | _ng_forge_dynamic_forms.TemplateAddon)[]>;
62
+ /** Set when the component is destroyed — guards async aria-describedby sync against teardown. */
63
+ private destroyed;
64
+ constructor();
65
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<IonicInputFieldComponent, never>;
66
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<IonicInputFieldComponent, "df-ion-input", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; "fieldInputs": { "alias": "fieldInputs"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof _ng_forge_dynamic_forms_integration.NgForgeFieldHost; inputs: {}; outputs: {}; }, { directive: typeof _ng_forge_dynamic_forms_integration.NgForgeAddons; inputs: {}; outputs: {}; }]>;
67
+ }
68
+
69
+ export { IonicInputFieldComponent };
70
+ export type { IonicInputField, IonicInputProps };
@@ -0,0 +1,28 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import * as _ng_forge_dynamic_forms_integration from '@ng-forge/dynamic-forms/integration';
3
+ import { MultiCheckboxField } from '@ng-forge/dynamic-forms/integration';
4
+ import { DynamicText, ValueType, FieldOption } from '@ng-forge/dynamic-forms';
5
+
6
+ interface IonicMultiCheckboxProps {
7
+ labelPlacement?: 'start' | 'end' | 'fixed' | 'stacked';
8
+ justify?: 'start' | 'end' | 'space-between';
9
+ color?: 'primary' | 'secondary' | 'tertiary' | 'success' | 'warning' | 'danger';
10
+ hint?: DynamicText;
11
+ }
12
+ type IonicMultiCheckboxField<T> = MultiCheckboxField<T, IonicMultiCheckboxProps>;
13
+
14
+ declare class IonicMultiCheckboxFieldComponent {
15
+ protected readonly ngf: _ng_forge_dynamic_forms_integration.TypedNgForgeField<ValueType[]>;
16
+ readonly options: _angular_core.InputSignal<FieldOption<ValueType>[]>;
17
+ readonly props: _angular_core.InputSignal<IonicMultiCheckboxProps | undefined>;
18
+ valueViewModel: _angular_core.WritableSignal<FieldOption<ValueType>[]>;
19
+ /** Computed map of checked option values for O(1) lookup in template */
20
+ readonly checkedValuesMap: _angular_core.Signal<Record<string, boolean>>;
21
+ constructor();
22
+ onCheckboxChange(option: FieldOption<ValueType>, checked: boolean): void;
23
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<IonicMultiCheckboxFieldComponent, never>;
24
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<IonicMultiCheckboxFieldComponent, "df-ion-multi-checkbox", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "props": { "alias": "props"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof _ng_forge_dynamic_forms_integration.NgForgeFieldHost; inputs: {}; outputs: {}; }]>;
25
+ }
26
+
27
+ export { IonicMultiCheckboxFieldComponent };
28
+ export type { IonicMultiCheckboxField, IonicMultiCheckboxProps };
@@ -0,0 +1,25 @@
1
+ import { ValueType, DynamicText, FieldOption } from '@ng-forge/dynamic-forms';
2
+ import * as _ng_forge_dynamic_forms_integration from '@ng-forge/dynamic-forms/integration';
3
+ import { RadioField } from '@ng-forge/dynamic-forms/integration';
4
+ import * as _angular_core from '@angular/core';
5
+
6
+ interface IonicRadioProps {
7
+ labelPlacement?: 'start' | 'end' | 'fixed' | 'stacked';
8
+ justify?: 'start' | 'end' | 'space-between';
9
+ color?: 'primary' | 'secondary' | 'tertiary' | 'success' | 'warning' | 'danger';
10
+ compareWith?: (o1: ValueType, o2: ValueType) => boolean;
11
+ hint?: DynamicText;
12
+ }
13
+ type IonicRadioField<T> = RadioField<T, IonicRadioProps>;
14
+
15
+ declare class IonicRadioFieldComponent {
16
+ protected readonly ngf: _ng_forge_dynamic_forms_integration.TypedNgForgeField<ValueType>;
17
+ readonly options: _angular_core.InputSignal<FieldOption<ValueType>[]>;
18
+ readonly props: _angular_core.InputSignal<IonicRadioProps | undefined>;
19
+ defaultCompare: (value1: any, value2: any) => boolean;
20
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<IonicRadioFieldComponent, never>;
21
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<IonicRadioFieldComponent, "df-ion-radio", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "props": { "alias": "props"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof _ng_forge_dynamic_forms_integration.NgForgeFieldHost; inputs: {}; outputs: {}; }]>;
22
+ }
23
+
24
+ export { IonicRadioFieldComponent };
25
+ export type { IonicRadioField, IonicRadioProps };
@@ -0,0 +1,31 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import * as _ng_forge_dynamic_forms_integration from '@ng-forge/dynamic-forms/integration';
3
+ import { SelectField, SelectProps } from '@ng-forge/dynamic-forms/integration';
4
+ import { ValueType, DynamicText, FieldOption } from '@ng-forge/dynamic-forms';
5
+
6
+ interface IonicSelectProps extends SelectProps {
7
+ multiple?: boolean;
8
+ interface?: 'action-sheet' | 'popover' | 'alert';
9
+ interfaceOptions?: unknown;
10
+ cancelText?: string;
11
+ okText?: string;
12
+ fill?: 'solid' | 'outline';
13
+ shape?: 'round';
14
+ labelPlacement?: 'start' | 'end' | 'fixed' | 'stacked' | 'floating';
15
+ color?: 'primary' | 'secondary' | 'tertiary' | 'success' | 'warning' | 'danger';
16
+ compareWith?: (o1: ValueType, o2: ValueType) => boolean;
17
+ hint?: DynamicText;
18
+ }
19
+ type IonicSelectField<T> = SelectField<T, IonicSelectProps>;
20
+
21
+ declare class IonicSelectFieldComponent {
22
+ protected readonly ngf: _ng_forge_dynamic_forms_integration.TypedNgForgeField<ValueType>;
23
+ readonly options: _angular_core.InputSignal<FieldOption<ValueType>[]>;
24
+ readonly props: _angular_core.InputSignal<IonicSelectProps | undefined>;
25
+ defaultCompare: (value1: any, value2: any) => boolean;
26
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<IonicSelectFieldComponent, never>;
27
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<IonicSelectFieldComponent, "df-ion-select", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "props": { "alias": "props"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof _ng_forge_dynamic_forms_integration.NgForgeFieldHost; inputs: {}; outputs: {}; }]>;
28
+ }
29
+
30
+ export { IonicSelectFieldComponent };
31
+ export type { IonicSelectField, IonicSelectProps };
@@ -0,0 +1,43 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import * as i1 from '@ng-forge/dynamic-forms/integration';
3
+ import { SliderField } from '@ng-forge/dynamic-forms/integration';
4
+ import { DynamicText } from '@ng-forge/dynamic-forms';
5
+
6
+ interface IonicSliderProps {
7
+ /**
8
+ * Adapter-level override for the slider minimum.
9
+ * Field-level `minValue` (or the validator `min`) takes precedence.
10
+ */
11
+ min?: number;
12
+ /**
13
+ * Adapter-level override for the slider maximum.
14
+ * Field-level `maxValue` (or the validator `max`) takes precedence.
15
+ */
16
+ max?: number;
17
+ /**
18
+ * Adapter-level override for the slider step increment.
19
+ * Field-level `step` on `SliderField` takes precedence.
20
+ */
21
+ step?: number;
22
+ dualKnobs?: boolean;
23
+ pin?: boolean;
24
+ pinFormatter?: (value: number) => string | number;
25
+ ticks?: boolean;
26
+ snaps?: boolean;
27
+ color?: 'primary' | 'secondary' | 'tertiary' | 'success' | 'warning' | 'danger';
28
+ labelPlacement?: 'start' | 'end' | 'fixed' | 'stacked';
29
+ hint?: DynamicText;
30
+ }
31
+ type IonicSliderField = SliderField<IonicSliderProps>;
32
+
33
+ declare class IonicSliderFieldComponent {
34
+ protected readonly ngf: i1.TypedNgForgeField<number>;
35
+ readonly step: _angular_core.InputSignal<number | undefined>;
36
+ readonly props: _angular_core.InputSignal<IonicSliderProps | undefined>;
37
+ protected defaultPinFormatter: (value: number) => string;
38
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<IonicSliderFieldComponent, never>;
39
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<IonicSliderFieldComponent, "df-ion-slider", never, { "step": { "alias": "step"; "required": false; "isSignal": true; }; "props": { "alias": "props"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.NgForgeFieldHost; inputs: {}; outputs: {}; }, { directive: typeof i1.NgForgeHostControl; inputs: {}; outputs: {}; }]>;
40
+ }
41
+
42
+ export { IonicSliderFieldComponent };
43
+ export type { IonicSliderField, IonicSliderProps };
@@ -0,0 +1,28 @@
1
+ import * as i0 from '@angular/core';
2
+ import * as _ng_forge_dynamic_forms_integration from '@ng-forge/dynamic-forms/integration';
3
+ import { TextareaField, TextareaProps } from '@ng-forge/dynamic-forms/integration';
4
+ import { DynamicText } from '@ng-forge/dynamic-forms';
5
+
6
+ interface IonicTextareaProps extends TextareaProps {
7
+ autoGrow?: boolean;
8
+ counter?: boolean;
9
+ fill?: 'solid' | 'outline';
10
+ shape?: 'round';
11
+ labelPlacement?: 'start' | 'end' | 'fixed' | 'stacked' | 'floating';
12
+ hint?: DynamicText;
13
+ errorText?: DynamicText;
14
+ color?: 'primary' | 'secondary' | 'tertiary' | 'success' | 'warning' | 'danger' | 'light' | 'medium' | 'dark';
15
+ }
16
+ type IonicTextareaField = TextareaField<IonicTextareaProps>;
17
+
18
+ declare class IonicTextareaFieldComponent {
19
+ private readonly elementRef;
20
+ protected readonly ngf: _ng_forge_dynamic_forms_integration.TypedNgForgeField<string>;
21
+ readonly props: i0.InputSignal<IonicTextareaProps | undefined>;
22
+ constructor();
23
+ static ɵfac: i0.ɵɵFactoryDeclaration<IonicTextareaFieldComponent, never>;
24
+ static ɵcmp: i0.ɵɵComponentDeclaration<IonicTextareaFieldComponent, "df-ion-textarea", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof _ng_forge_dynamic_forms_integration.NgForgeFieldHost; inputs: {}; outputs: {}; }]>;
25
+ }
26
+
27
+ export { IonicTextareaFieldComponent };
28
+ export type { IonicTextareaField, IonicTextareaProps };
@@ -0,0 +1,66 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import * as _ng_forge_dynamic_forms_integration from '@ng-forge/dynamic-forms/integration';
3
+ import { ToggleField } from '@ng-forge/dynamic-forms/integration';
4
+ import { DynamicText } from '@ng-forge/dynamic-forms';
5
+ import { FormCheckboxControl } from '@angular/forms/signals';
6
+
7
+ interface IonicToggleProps {
8
+ labelPlacement?: 'start' | 'end' | 'fixed' | 'stacked';
9
+ justify?: 'start' | 'end' | 'space-between';
10
+ color?: 'primary' | 'secondary' | 'tertiary' | 'success' | 'warning' | 'danger';
11
+ enableOnOffLabels?: boolean;
12
+ hint?: DynamicText;
13
+ }
14
+ type IonicToggleField = ToggleField<IonicToggleProps>;
15
+
16
+ declare class IonicToggleFieldComponent {
17
+ protected readonly ngf: _ng_forge_dynamic_forms_integration.TypedNgForgeField<boolean>;
18
+ readonly props: _angular_core.InputSignal<IonicToggleProps | undefined>;
19
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<IonicToggleFieldComponent, never>;
20
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<IonicToggleFieldComponent, "df-ion-toggle", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof _ng_forge_dynamic_forms_integration.NgForgeFieldHost; inputs: {}; outputs: {}; }]>;
21
+ }
22
+
23
+ /**
24
+ * ion-toggle wrapper implementing FormCheckboxControl. Rendered inside
25
+ * `df-ion-toggle`. `NgForgeControl` on `<ion-toggle>` claims the ambient
26
+ * parent NgForgeField and routes meta + aria onto that element.
27
+ */
28
+ declare class IonicToggleControlComponent implements FormCheckboxControl {
29
+ /** The checked state - required by FormCheckboxControl */
30
+ readonly checked: _angular_core.ModelSignal<boolean>;
31
+ /** Tracks whether the field has been touched - used by Field directive */
32
+ readonly touched: _angular_core.ModelSignal<boolean>;
33
+ /** Whether the field is disabled */
34
+ readonly disabled: _angular_core.InputSignal<boolean>;
35
+ /** Whether the field is readonly */
36
+ readonly readonly: _angular_core.InputSignal<boolean>;
37
+ /** Whether the field is invalid (from Field directive) */
38
+ readonly invalid: _angular_core.InputSignal<boolean>;
39
+ /** Whether the field is required (from Field directive) */
40
+ readonly required: _angular_core.InputSignal<boolean>;
41
+ readonly labelPlacement: _angular_core.InputSignal<"start" | "end" | "fixed" | "stacked">;
42
+ readonly justify: _angular_core.InputSignal<"start" | "end" | "space-between" | undefined>;
43
+ readonly color: _angular_core.InputSignal<string>;
44
+ readonly enableOnOffLabels: _angular_core.InputSignal<boolean>;
45
+ readonly tabIndex: _angular_core.InputSignal<number | undefined>;
46
+ protected readonly ariaReadonly: _angular_core.Signal<true | null>;
47
+ /** Computed checked state - ensures proper boolean conversion for ion-toggle */
48
+ protected readonly isChecked: _angular_core.Signal<boolean>;
49
+ /**
50
+ * ion-toggle doesn't have a native readonly attribute.
51
+ * When readonly, we disable the toggle to prevent changes while maintaining the visual state.
52
+ */
53
+ protected readonly isEffectivelyDisabled: _angular_core.Signal<boolean>;
54
+ /** Handle toggle change - sync ion-toggle's checked state to our checked model */
55
+ onToggleChange(event: CustomEvent<{
56
+ checked: boolean;
57
+ value: string;
58
+ }>): void;
59
+ /** Marks the field as touched when toggle loses focus */
60
+ onBlur(): void;
61
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<IonicToggleControlComponent, never>;
62
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<IonicToggleControlComponent, "df-ion-toggle-control", never, { "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "labelPlacement": { "alias": "labelPlacement"; "required": false; "isSignal": true; }; "justify": { "alias": "justify"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "enableOnOffLabels": { "alias": "enableOnOffLabels"; "required": false; "isSignal": true; }; "tabIndex": { "alias": "tabIndex"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "touched": "touchedChange"; }, never, ["*"], true, never>;
63
+ }
64
+
65
+ export { IonicToggleControlComponent, IonicToggleFieldComponent };
66
+ export type { IonicToggleField, IonicToggleProps };
@@ -0,0 +1,116 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, WritableSignal, Signal } from '@angular/core';
3
+ import * as _ng_forge_dynamic_forms_integration from '@ng-forge/dynamic-forms/integration';
4
+ import { AddonActionHandler, PresetCollaborators } from '@ng-forge/dynamic-forms/integration';
5
+ export { PresetCollaborators } from '@ng-forge/dynamic-forms/integration';
6
+ import { BaseAddon, DynamicText, DynamicValue, AddonActionPreset, RegisteredActionRef, AddonActionContext } from '@ng-forge/dynamic-forms';
7
+
8
+ /** Configuration options for Ionic form fields. */
9
+ interface IonicConfig {
10
+ /** Default fill style for form inputs. */
11
+ fill?: 'solid' | 'outline';
12
+ /** Default shape for form controls. */
13
+ shape?: 'round';
14
+ /** Default label placement for form inputs. */
15
+ labelPlacement?: 'start' | 'end' | 'fixed' | 'stacked' | 'floating';
16
+ /** Default color theme for form controls. */
17
+ color?: 'primary' | 'secondary' | 'tertiary' | 'success' | 'warning' | 'danger' | 'light' | 'medium' | 'dark';
18
+ /** Default size for buttons. */
19
+ size?: 'small' | 'default' | 'large';
20
+ /** Default expand behavior for buttons. */
21
+ expand?: 'full' | 'block';
22
+ /** Default fill style for buttons, overriding the general fill. */
23
+ buttonFill?: 'clear' | 'outline' | 'solid' | 'default';
24
+ /** Whether buttons should use strong text by default. */
25
+ strong?: boolean;
26
+ }
27
+
28
+ /** Global configuration for Ionic form fields. */
29
+ declare const IONIC_CONFIG: InjectionToken<IonicConfig>;
30
+
31
+ /** Per-field writable signal that overrides the input's `type` attribute. */
32
+ declare const IONIC_INPUT_TYPE_OVERRIDE: InjectionToken<WritableSignal<string | undefined>>;
33
+
34
+ /** Decorative icon addon for Ionic fields. */
35
+ interface IonicIconAddon extends BaseAddon {
36
+ readonly type: 'ion-icon';
37
+ /** Ionons name (e.g., `'search-outline'`, `'close-outline'`). */
38
+ readonly icon: string;
39
+ /** Accessible label for icons that convey meaning. */
40
+ readonly ariaLabel?: DynamicText;
41
+ }
42
+ interface IonicButtonBase extends BaseAddon {
43
+ readonly type: 'ion-button';
44
+ readonly color?: 'primary' | 'secondary' | 'tertiary' | 'success' | 'warning' | 'danger' | 'light' | 'medium' | 'dark';
45
+ readonly fill?: 'clear' | 'outline' | 'solid' | 'default';
46
+ readonly loading?: DynamicValue<boolean>;
47
+ }
48
+ type IonicButtonActionRef = [RegisteredActionRef] extends [never] ? string : RegisteredActionRef;
49
+ type IonicButtonClick = {
50
+ readonly preset: AddonActionPreset;
51
+ readonly actionRef?: never;
52
+ readonly action?: never;
53
+ } | {
54
+ readonly preset?: never;
55
+ readonly actionRef: IonicButtonActionRef;
56
+ readonly action?: never;
57
+ } | {
58
+ readonly preset?: never;
59
+ readonly actionRef?: never;
60
+ readonly action: AddonActionHandler;
61
+ } | {
62
+ readonly preset?: never;
63
+ readonly actionRef?: never;
64
+ readonly action?: never;
65
+ };
66
+ type IonicButtonContent = {
67
+ readonly icon: string;
68
+ readonly label?: never;
69
+ readonly ariaLabel: DynamicText;
70
+ } | {
71
+ readonly icon?: string;
72
+ readonly label: DynamicText;
73
+ readonly ariaLabel?: DynamicText;
74
+ } | {
75
+ readonly icon?: never;
76
+ readonly label?: never;
77
+ readonly ariaLabel?: DynamicText;
78
+ };
79
+ /** Interactive button addon for Ionic fields. */
80
+ type IonicButtonAddon = IonicButtonBase & IonicButtonContent & IonicButtonClick;
81
+ /** Union of all Ionic-shipped addon types. */
82
+ type IonicAddon = IonicIconAddon | IonicButtonAddon;
83
+ declare module '@ng-forge/dynamic-forms' {
84
+ interface DynamicFormAddonRegistry {
85
+ 'ion-icon': IonicIconAddon;
86
+ 'ion-button': IonicButtonAddon;
87
+ }
88
+ }
89
+
90
+ /**
91
+ * Inline `ion-button` addon whose host is the slotted Ionic button itself.
92
+ * It lives in the shared entry because the lazily loaded input component
93
+ * consumes it while the primary package must not pull in field renderers.
94
+ */
95
+ declare class IonicInlineButtonAddonComponent {
96
+ private readonly injector;
97
+ protected readonly action: _ng_forge_dynamic_forms_integration.TypedNgForgeAddonAction<IonicButtonAddon>;
98
+ protected readonly addon: Signal<IonicButtonAddon>;
99
+ protected readonly label: Signal<DynamicText | undefined>;
100
+ protected readonly ariaLabel: Signal<DynamicText | undefined>;
101
+ protected readonly icon: Signal<string | undefined>;
102
+ protected readonly color: Signal<"primary" | "secondary" | "tertiary" | "success" | "warning" | "danger" | "light" | "medium" | "dark" | undefined>;
103
+ protected readonly fill: Signal<"solid" | "outline" | "default" | "clear">;
104
+ protected readonly iconOnly: Signal<boolean>;
105
+ private readonly ariaLabelSignal;
106
+ protected readonly resolvedAriaLabel: Signal<string | undefined>;
107
+ constructor();
108
+ static ɵfac: i0.ɵɵFactoryDeclaration<IonicInlineButtonAddonComponent, never>;
109
+ static ɵcmp: i0.ɵɵComponentDeclaration<IonicInlineButtonAddonComponent, "ion-button[df-ion-button-addon]", never, {}, {}, never, never, true, [{ directive: typeof _ng_forge_dynamic_forms_integration.NgForgeAddonAction; inputs: {}; outputs: {}; }]>;
110
+ }
111
+
112
+ /** Ionic adapter binding for the shared preset runner. */
113
+ declare function runIonicPresetAction(preset: AddonActionPreset, context: AddonActionContext, collaborators: PresetCollaborators): Promise<void>;
114
+
115
+ export { IONIC_CONFIG, IONIC_INPUT_TYPE_OVERRIDE, IonicInlineButtonAddonComponent, runIonicPresetAction };
116
+ export type { IonicAddon, IonicButtonAddon, IonicConfig, IonicIconAddon };