@ng-forge/dynamic-forms-material 0.9.0-next.11 → 0.9.0-next.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { InjectionToken, Provider } from '@angular/core';
|
|
2
|
+
import { InjectionToken, Provider, WritableSignal } from '@angular/core';
|
|
3
3
|
import * as _ng_forge_dynamic_forms_integration from '@ng-forge/dynamic-forms/integration';
|
|
4
4
|
import { CheckboxField, DatepickerField, DatepickerProps, InputField, InputProps, MultiCheckboxField, RadioField, SelectField, SelectProps, SliderField, ButtonField, TextareaField, TextareaProps, ToggleField } from '@ng-forge/dynamic-forms/integration';
|
|
5
|
-
import
|
|
5
|
+
import * as _ng_forge_dynamic_forms from '@ng-forge/dynamic-forms';
|
|
6
|
+
import { DynamicText, CheckedFieldComponent, ValueFieldComponent, BaseAddon, DynamicValue, AddonActionPreset, RegisteredActionRef, AddonActionHandler, TextAddon, TemplateAddon, WrapperFieldInputs, ValueType, FieldOption, FormEvent, NextPageEvent, PreviousPageEvent, AppendArrayItemEvent, ArrayAllowedChildren, PrependArrayItemEvent, InsertArrayItemEvent, RemoveAtIndexEvent, PopArrayItemEvent, ShiftArrayItemEvent, FieldTypeDefinition, NarrowFields, RegisteredFieldTypes, InferFormValue, FormConfig } from '@ng-forge/dynamic-forms';
|
|
6
7
|
import { ThemePalette } from '@angular/material/core';
|
|
7
8
|
import * as _angular_material_form_field from '@angular/material/form-field';
|
|
8
9
|
import { MatFormFieldAppearance, SubscriptSizing, FloatLabelType } from '@angular/material/form-field';
|
|
@@ -57,6 +58,122 @@ declare class MatDatepickerFieldComponent {
|
|
|
57
58
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MatDatepickerFieldComponent, "df-mat-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: {}; }]>;
|
|
58
59
|
}
|
|
59
60
|
|
|
61
|
+
/**
|
|
62
|
+
* Decorative icon addon for Material fields.
|
|
63
|
+
*
|
|
64
|
+
* Renders `<mat-icon>{icon}</mat-icon>` using Material Icons ligatures —
|
|
65
|
+
* `icon: 'search'` produces `<mat-icon>search</mat-icon>`.
|
|
66
|
+
*
|
|
67
|
+
* Add `ariaLabel` for icons that convey meaning (search, error, success);
|
|
68
|
+
* leave it omitted for purely decorative icons (will be `aria-hidden="true"`).
|
|
69
|
+
*/
|
|
70
|
+
interface MatIconAddon extends BaseAddon {
|
|
71
|
+
readonly kind: 'mat-icon';
|
|
72
|
+
/** Material Icons name (ligature, e.g., `'search'`, `'close'`). */
|
|
73
|
+
readonly icon: string;
|
|
74
|
+
/** Accessible label for icons that convey meaning. */
|
|
75
|
+
readonly ariaLabel?: DynamicText;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Common shape of every `mat-button` addon — properties that don't
|
|
79
|
+
* participate in either XOR axis.
|
|
80
|
+
*/
|
|
81
|
+
interface MatButtonBase extends BaseAddon {
|
|
82
|
+
readonly kind: 'mat-button';
|
|
83
|
+
/** Material button colour variant. */
|
|
84
|
+
readonly color?: 'primary' | 'accent' | 'warn';
|
|
85
|
+
/** Reactive loading state — when truthy the button is disabled. */
|
|
86
|
+
readonly loading?: DynamicValue<boolean>;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Click axis — XOR enforced at type level so configurations that combine
|
|
90
|
+
* two click handlers (e.g., `preset` AND `actionRef`) are rejected by
|
|
91
|
+
* TypeScript. Runtime XOR validation stays as defence-in-depth for
|
|
92
|
+
* JSON-source configs that bypass the type checker.
|
|
93
|
+
*/
|
|
94
|
+
type MatButtonClickPreset = {
|
|
95
|
+
/** Built-in preset action (e.g., `'clear'`, `'toggle-password-visibility'`). JSON-safe. */
|
|
96
|
+
readonly preset: AddonActionPreset;
|
|
97
|
+
readonly actionRef?: never;
|
|
98
|
+
readonly action?: never;
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* Value type for the `actionRef` slot. When no actions have been registered
|
|
102
|
+
* via `provideAddonActions(...)`, `RegisteredActionRef` resolves to `never` —
|
|
103
|
+
* which would make this variant uninhabitable and break `addon.actionRef`
|
|
104
|
+
* narrowing in the renderer. Fall back to `string` so the variant stays
|
|
105
|
+
* usable; once the user augments `DynamicFormActionRegistry`, autocomplete
|
|
106
|
+
* tightens to the registered keys.
|
|
107
|
+
*/
|
|
108
|
+
type MatButtonActionRef = [RegisteredActionRef] extends [never] ? string : RegisteredActionRef;
|
|
109
|
+
type MatButtonClickActionRef = {
|
|
110
|
+
readonly preset?: never;
|
|
111
|
+
/** Reference to a handler registered via `provideAddonActions(...)`. JSON-safe. */
|
|
112
|
+
readonly actionRef: MatButtonActionRef;
|
|
113
|
+
readonly action?: never;
|
|
114
|
+
};
|
|
115
|
+
type MatButtonClickAction = {
|
|
116
|
+
readonly preset?: never;
|
|
117
|
+
readonly actionRef?: never;
|
|
118
|
+
/** Inline handler — code-only; dropped from JSON-derived configs. */
|
|
119
|
+
readonly action: AddonActionHandler;
|
|
120
|
+
};
|
|
121
|
+
type MatButtonClickNone = {
|
|
122
|
+
readonly preset?: never;
|
|
123
|
+
readonly actionRef?: never;
|
|
124
|
+
readonly action?: never;
|
|
125
|
+
};
|
|
126
|
+
type MatButtonClick = MatButtonClickPreset | MatButtonClickActionRef | MatButtonClickAction | MatButtonClickNone;
|
|
127
|
+
/**
|
|
128
|
+
* Content axis — XOR enforced at type level so an icon-only button is
|
|
129
|
+
* forced to declare `ariaLabel`. The three shapes:
|
|
130
|
+
*
|
|
131
|
+
* - `IconOnly` — just `icon`; `ariaLabel` is REQUIRED
|
|
132
|
+
* - `Labeled` — `label` set; `icon` and `ariaLabel` optional
|
|
133
|
+
* - `Decorative` — neither icon nor label
|
|
134
|
+
*/
|
|
135
|
+
type MatButtonContentIconOnly = {
|
|
136
|
+
readonly icon: string;
|
|
137
|
+
readonly label?: never;
|
|
138
|
+
/** REQUIRED: icon-only buttons must carry an accessible label. */
|
|
139
|
+
readonly ariaLabel: DynamicText;
|
|
140
|
+
};
|
|
141
|
+
type MatButtonContentLabeled = {
|
|
142
|
+
readonly icon?: string;
|
|
143
|
+
readonly label: DynamicText;
|
|
144
|
+
readonly ariaLabel?: DynamicText;
|
|
145
|
+
};
|
|
146
|
+
type MatButtonContentDecorative = {
|
|
147
|
+
readonly icon?: never;
|
|
148
|
+
readonly label?: never;
|
|
149
|
+
readonly ariaLabel?: DynamicText;
|
|
150
|
+
};
|
|
151
|
+
type MatButtonContent = MatButtonContentIconOnly | MatButtonContentLabeled | MatButtonContentDecorative;
|
|
152
|
+
/**
|
|
153
|
+
* Interactive button addon for Material fields.
|
|
154
|
+
*
|
|
155
|
+
* Renders `<button mat-icon-button>` (icon-only) or `<button mat-button>`
|
|
156
|
+
* (labeled). Click dispatch (preset / actionRef / action precedence) lives
|
|
157
|
+
* on `NgForgeAddonAction`; this addon shape focuses on configuration.
|
|
158
|
+
*
|
|
159
|
+
* Type-level guarantees:
|
|
160
|
+
*
|
|
161
|
+
* - **Content axis (XOR):** `IconOnly` (icon + required ariaLabel) |
|
|
162
|
+
* `Labeled` (label, icon optional) | `Decorative` (neither). The IDE
|
|
163
|
+
* rejects icon-only configs that omit `ariaLabel`.
|
|
164
|
+
* - **Click axis (XOR):** exactly one of `preset` / `actionRef` / `action`,
|
|
165
|
+
* or none.
|
|
166
|
+
*/
|
|
167
|
+
type MatButtonAddon = MatButtonBase & MatButtonContent & MatButtonClick;
|
|
168
|
+
/** Union of all Material-shipped addon kinds. */
|
|
169
|
+
type MatAddon = MatIconAddon | MatButtonAddon;
|
|
170
|
+
declare module '@ng-forge/dynamic-forms' {
|
|
171
|
+
interface DynamicFormAddonRegistry {
|
|
172
|
+
'mat-icon': MatIconAddon;
|
|
173
|
+
'mat-button': MatButtonAddon;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
60
177
|
interface MatInputProps extends InputProps {
|
|
61
178
|
appearance?: MatFormFieldAppearance;
|
|
62
179
|
disableRipple?: boolean;
|
|
@@ -66,20 +183,63 @@ interface MatInputProps extends InputProps {
|
|
|
66
183
|
type?: 'text' | 'email' | 'password' | 'number' | 'tel' | 'url';
|
|
67
184
|
hint?: DynamicText;
|
|
68
185
|
}
|
|
69
|
-
|
|
186
|
+
/**
|
|
187
|
+
* Module-augmentable seam for adding custom addon kinds to `mat-input` at
|
|
188
|
+
* the type level. Pair with `withCustomAddon(...)` for the runtime side:
|
|
189
|
+
*
|
|
190
|
+
* ```ts
|
|
191
|
+
* declare module '@ng-forge/dynamic-forms-material' {
|
|
192
|
+
* interface MatAddonExtensions {
|
|
193
|
+
* 'my-rating': MyRatingAddon;
|
|
194
|
+
* }
|
|
195
|
+
* }
|
|
196
|
+
* ```
|
|
197
|
+
*
|
|
198
|
+
* Empty by default — the extension lookup resolves to `never` and contributes
|
|
199
|
+
* nothing to the union.
|
|
200
|
+
*/
|
|
201
|
+
interface MatAddonExtensions {
|
|
202
|
+
}
|
|
203
|
+
type MatAddonExtension = MatAddonExtensions[keyof MatAddonExtensions];
|
|
204
|
+
/**
|
|
205
|
+
* Addon kinds accepted by `mat-input`.
|
|
206
|
+
*
|
|
207
|
+
* Material-specific kinds (`mat-icon`, `mat-button`) plus the universal
|
|
208
|
+
* `text` and `template` kinds. `component` is permitted at runtime via the
|
|
209
|
+
* broader `BaseAddon` union (and dropped in JSON-derived configs by the
|
|
210
|
+
* validator) but excluded here so the IDE narrows tightly to declarative
|
|
211
|
+
* shapes.
|
|
212
|
+
*
|
|
213
|
+
* To extend with custom kinds, augment `MatAddonExtensions`.
|
|
214
|
+
*/
|
|
215
|
+
type MatInputAddon = MatIconAddon | MatButtonAddon | TextAddon | TemplateAddon | MatAddonExtension;
|
|
216
|
+
type MatInputField = InputField<MatInputProps> & {
|
|
217
|
+
addons?: ReadonlyArray<MatInputAddon>;
|
|
218
|
+
};
|
|
70
219
|
/** @deprecated Scheduled for removal in v1. Use `injectNgForgeField<T>()` for typed access to a field component's directive instance. */
|
|
71
220
|
type MatInputComponent = ValueFieldComponent<MatInputField>;
|
|
72
221
|
|
|
73
222
|
declare class MatInputFieldComponent {
|
|
74
223
|
private materialConfig;
|
|
75
224
|
protected readonly ngf: _ng_forge_dynamic_forms_integration.TypedNgForgeField<string>;
|
|
225
|
+
protected readonly ngfa: _ng_forge_dynamic_forms_integration.TypedNgForgeAddons<MatInputAddon>;
|
|
76
226
|
readonly props: _angular_core.InputSignal<MatInputProps | undefined>;
|
|
227
|
+
/**
|
|
228
|
+
* Wrapper-style host bag pushed by `DfFieldOutlet`. Declared at the
|
|
229
|
+
* component level so `setInputIfDeclared` (which uses
|
|
230
|
+
* `reflectComponentType`) can write it.
|
|
231
|
+
*/
|
|
232
|
+
readonly fieldInputs: _angular_core.InputSignal<WrapperFieldInputs | undefined>;
|
|
233
|
+
/** Per-instance type override populated by `toggle-password-visibility` preset. */
|
|
234
|
+
private readonly typeOverride;
|
|
77
235
|
readonly appearance: _angular_core.Signal<_angular_material_form_field.MatFormFieldAppearance>;
|
|
78
236
|
readonly subscriptSizing: _angular_core.Signal<_angular_material_form_field.SubscriptSizing>;
|
|
79
237
|
readonly floatLabel: _angular_core.Signal<_angular_material_form_field.FloatLabelType>;
|
|
80
238
|
readonly hideRequiredMarker: _angular_core.Signal<boolean>;
|
|
239
|
+
/** Override (set by `toggle-password-visibility` preset) wins over `props().type`. */
|
|
240
|
+
protected readonly type: _angular_core.Signal<string>;
|
|
81
241
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MatInputFieldComponent, never>;
|
|
82
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MatInputFieldComponent, "df-mat-input", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof _ng_forge_dynamic_forms_integration.NgForgeFieldHost; inputs: {}; outputs: {}; }]>;
|
|
242
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MatInputFieldComponent, "df-mat-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: {}; }]>;
|
|
83
243
|
}
|
|
84
244
|
|
|
85
245
|
interface MatMultiCheckboxProps {
|
|
@@ -299,31 +459,6 @@ declare class MatTextareaFieldComponent {
|
|
|
299
459
|
private materialConfig;
|
|
300
460
|
protected readonly ngf: _ng_forge_dynamic_forms_integration.TypedNgForgeField<string>;
|
|
301
461
|
readonly props: _angular_core.InputSignal<MatTextareaProps | undefined>;
|
|
302
|
-
/**
|
|
303
|
-
* Reference to the native textarea element.
|
|
304
|
-
* Used to imperatively sync the readonly attribute since Angular Signal Forms'
|
|
305
|
-
* [field] directive doesn't sync FieldState.readonly() to the DOM.
|
|
306
|
-
*/
|
|
307
|
-
private readonly textareaRef;
|
|
308
|
-
/**
|
|
309
|
-
* Computed signal that extracts the readonly state from the field.
|
|
310
|
-
* Used by the effect to reactively sync the readonly attribute to the DOM.
|
|
311
|
-
*/
|
|
312
|
-
private readonly isReadonly;
|
|
313
|
-
/**
|
|
314
|
-
* Workaround: Angular Signal Forms' [field] directive does NOT sync the readonly
|
|
315
|
-
* attribute to the DOM, even though FieldState.readonly() returns the correct value.
|
|
316
|
-
* This effect imperatively sets/removes the readonly attribute on the native textarea
|
|
317
|
-
* element whenever the readonly state changes.
|
|
318
|
-
*
|
|
319
|
-
* Note: We cannot use [readonly] or [attr.readonly] bindings because Angular throws
|
|
320
|
-
* NG8022: "Binding to '[readonly]' is not allowed on nodes using the '[field]' directive"
|
|
321
|
-
*
|
|
322
|
-
* Uses afterRenderEffect to ensure DOM is ready before manipulating attributes.
|
|
323
|
-
*
|
|
324
|
-
* @see https://github.com/angular/angular/issues/65897
|
|
325
|
-
*/
|
|
326
|
-
private readonly syncReadonlyToDom;
|
|
327
462
|
readonly appearance: _angular_core.Signal<_angular_material_form_field.MatFormFieldAppearance>;
|
|
328
463
|
readonly subscriptSizing: _angular_core.Signal<_angular_material_form_field.SubscriptSizing>;
|
|
329
464
|
readonly floatLabel: _angular_core.Signal<_angular_material_form_field.FloatLabelType>;
|
|
@@ -551,19 +686,29 @@ type MaterialConfigFeature = {
|
|
|
551
686
|
ɵkind: 'material-config';
|
|
552
687
|
ɵproviders: Provider[];
|
|
553
688
|
};
|
|
554
|
-
type MaterialFieldsWithConfig = [...MaterialFieldTypes, MaterialConfigFeature];
|
|
555
689
|
/**
|
|
556
|
-
*
|
|
557
|
-
*
|
|
690
|
+
* Default `withMaterialFields()` shape — field defs + the auto-included
|
|
691
|
+
* addons feature so `mat-icon` / `mat-button` work out of the box.
|
|
692
|
+
*/
|
|
693
|
+
type MaterialFieldsWithAddons = [...MaterialFieldTypes, MaterialAddonsFeature];
|
|
694
|
+
type MaterialFieldsWithConfig = [...MaterialFieldTypes, MaterialAddonsFeature, MaterialConfigFeature];
|
|
695
|
+
/**
|
|
696
|
+
* Configure dynamic forms with Material Design field types, with
|
|
697
|
+
* Material-shipped addon kinds (`mat-icon`, `mat-button`) auto-included so
|
|
698
|
+
* addons work out of the box.
|
|
699
|
+
*
|
|
700
|
+
* If you want field types WITHOUT addons (rare), pass them through
|
|
701
|
+
* `provideDynamicForm` directly and skip this helper. If you want addons
|
|
702
|
+
* WITHOUT the field types (also rare), call `withMaterialAddons()` standalone.
|
|
558
703
|
*
|
|
559
704
|
* @param config - Optional global configuration for Material form fields
|
|
560
705
|
*
|
|
561
706
|
* @example
|
|
562
707
|
* ```typescript
|
|
563
|
-
* // Application-level setup
|
|
708
|
+
* // Application-level setup — addons (mat-icon, mat-button) ship in automatically
|
|
564
709
|
* import { ApplicationConfig } from '@angular/core';
|
|
565
|
-
* import { provideDynamicForm } from '@ng-forge/dynamic-
|
|
566
|
-
* import { withMaterialFields } from '@ng-forge/dynamic-
|
|
710
|
+
* import { provideDynamicForm } from '@ng-forge/dynamic-forms';
|
|
711
|
+
* import { withMaterialFields } from '@ng-forge/dynamic-forms-material';
|
|
567
712
|
*
|
|
568
713
|
* export const appConfig: ApplicationConfig = {
|
|
569
714
|
* providers: [
|
|
@@ -587,11 +732,100 @@ type MaterialFieldsWithConfig = [...MaterialFieldTypes, MaterialConfigFeature];
|
|
|
587
732
|
* };
|
|
588
733
|
* ```
|
|
589
734
|
*
|
|
590
|
-
* @returns
|
|
735
|
+
* @returns Tuple of field type definitions, the addons feature, and
|
|
736
|
+
* optionally a config feature.
|
|
591
737
|
*/
|
|
592
|
-
declare function withMaterialFields():
|
|
738
|
+
declare function withMaterialFields(): MaterialFieldsWithAddons;
|
|
593
739
|
declare function withMaterialFields(config: MaterialConfig): MaterialFieldsWithConfig;
|
|
594
|
-
declare function withMaterialFields(config: MaterialConfig | undefined):
|
|
740
|
+
declare function withMaterialFields(config: MaterialConfig | undefined): MaterialFieldsWithAddons | MaterialFieldsWithConfig;
|
|
741
|
+
/**
|
|
742
|
+
* Feature kind discriminant for the Material addons feature. Matches core's
|
|
743
|
+
* `'addons'` kind so providers flow through the standard addon-kind pipeline
|
|
744
|
+
* in `provideDynamicForm`.
|
|
745
|
+
*/
|
|
746
|
+
type MaterialAddonsFeature = {
|
|
747
|
+
ɵkind: 'addons';
|
|
748
|
+
ɵproviders: Provider[];
|
|
749
|
+
};
|
|
750
|
+
/**
|
|
751
|
+
* Register Material-shipped addon kinds (`mat-icon`, `mat-button`) standalone.
|
|
752
|
+
*
|
|
753
|
+
* **Most users don't need this** — `withMaterialFields()` auto-includes
|
|
754
|
+
* these kinds. Call `withMaterialAddons()` directly only when you want
|
|
755
|
+
* Material addon kinds without the Material field types (e.g., a custom
|
|
756
|
+
* field set that wants to render `mat-icon` prefixes), or when you're
|
|
757
|
+
* stitching addons through a different DI scope.
|
|
758
|
+
*
|
|
759
|
+
* @example
|
|
760
|
+
* ```typescript
|
|
761
|
+
* // Custom field types + Material addon kinds.
|
|
762
|
+
* provideDynamicForm(
|
|
763
|
+
* ...myCustomFields(),
|
|
764
|
+
* withMaterialAddons(),
|
|
765
|
+
* );
|
|
766
|
+
* ```
|
|
767
|
+
*
|
|
768
|
+
* Adapter authors who need to override a kind with a customised renderer
|
|
769
|
+
* should call `withCustomAddon(...)` directly instead.
|
|
770
|
+
*/
|
|
771
|
+
declare function withMaterialAddons(): MaterialAddonsFeature;
|
|
772
|
+
|
|
773
|
+
/**
|
|
774
|
+
* Renderer for the `mat-icon` addon kind.
|
|
775
|
+
*
|
|
776
|
+
* Outputs `<mat-icon>{icon}</mat-icon>` using Material Icons ligatures. The
|
|
777
|
+
* host is set `aria-hidden="true"` by default; if the addon supplies an
|
|
778
|
+
* `ariaLabel`, it is applied so the icon is announced by screen readers.
|
|
779
|
+
*/
|
|
780
|
+
declare class MatIconAddonComponent {
|
|
781
|
+
readonly addon: _angular_core.InputSignal<MatIconAddon>;
|
|
782
|
+
/** Accepted for contract uniformity — `NgComponentOutlet` setInput is strict; every kind must declare it. */
|
|
783
|
+
readonly fieldInputs: _angular_core.InputSignal<WrapperFieldInputs | undefined>;
|
|
784
|
+
protected readonly ariaLabel: _angular_core.Signal<_ng_forge_dynamic_forms.DynamicText | undefined>;
|
|
785
|
+
protected readonly hasAriaLabel: _angular_core.Signal<boolean>;
|
|
786
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MatIconAddonComponent, never>;
|
|
787
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MatIconAddonComponent, "df-mat-icon-addon", never, { "addon": { "alias": "addon"; "required": true; "isSignal": true; }; "fieldInputs": { "alias": "fieldInputs"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
788
|
+
}
|
|
789
|
+
|
|
790
|
+
/**
|
|
791
|
+
* Renderer for the `mat-button` addon kind.
|
|
792
|
+
*
|
|
793
|
+
* Renders `<button mat-icon-button>` when icon-only (no label), or
|
|
794
|
+
* `<button mat-button>` when labeled. Click dispatch (preset / actionRef /
|
|
795
|
+
* action precedence, multi-set warning, `disabled` / `loading` resolution)
|
|
796
|
+
* lives on `NgForgeAddonAction`; this component focuses on the visual layer.
|
|
797
|
+
*/
|
|
798
|
+
declare class MatButtonAddonComponent {
|
|
799
|
+
protected readonly action: _ng_forge_dynamic_forms_integration.TypedNgForgeAddonAction<MatButtonAddon>;
|
|
800
|
+
/** Re-exposed for template binding — same signal stored on the directive. */
|
|
801
|
+
protected readonly addon: _angular_core.Signal<MatButtonAddon>;
|
|
802
|
+
protected readonly label: _angular_core.Signal<_ng_forge_dynamic_forms.DynamicText | undefined>;
|
|
803
|
+
protected readonly ariaLabel: _angular_core.Signal<_ng_forge_dynamic_forms.DynamicText | undefined>;
|
|
804
|
+
protected readonly isIconOnly: _angular_core.Signal<boolean>;
|
|
805
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MatButtonAddonComponent, never>;
|
|
806
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MatButtonAddonComponent, "df-mat-button-addon", never, {}, {}, never, never, true, [{ directive: typeof _ng_forge_dynamic_forms_integration.NgForgeAddonAction; inputs: {}; outputs: {}; }]>;
|
|
807
|
+
}
|
|
808
|
+
|
|
809
|
+
/**
|
|
810
|
+
* Per-field writable signal that overrides the input's `type` attribute.
|
|
811
|
+
*
|
|
812
|
+
* Provided at the `mat-input` field component level. The button addon's
|
|
813
|
+
* `'toggle-password-visibility'` preset writes to it; the field component
|
|
814
|
+
* reads it to compute its effective `type`.
|
|
815
|
+
*
|
|
816
|
+
* Optional from a button's perspective — when the button is hosted inside a
|
|
817
|
+
* field that doesn't provide this token (e.g., textarea or a future
|
|
818
|
+
* non-input field), the toggle preset is a no-op.
|
|
819
|
+
*
|
|
820
|
+
* @example provided per-field:
|
|
821
|
+
* ```typescript
|
|
822
|
+
* @Component({
|
|
823
|
+
* providers: [{ provide: MAT_INPUT_TYPE_OVERRIDE, useValue: signal(undefined) }],
|
|
824
|
+
* })
|
|
825
|
+
* class MatInputFieldComponent { ... }
|
|
826
|
+
* ```
|
|
827
|
+
*/
|
|
828
|
+
declare const MAT_INPUT_TYPE_OVERRIDE: InjectionToken<WritableSignal<string | undefined>>;
|
|
595
829
|
|
|
596
|
-
export { MATERIAL_CONFIG, MATERIAL_FIELD_TYPES, MatButtonFieldComponent, MatCheckboxFieldComponent, MatDatepickerFieldComponent, MatField, MatInputFieldComponent, MatMultiCheckboxFieldComponent, MatRadioFieldComponent, MatSelectFieldComponent, MatSliderFieldComponent, MatTextareaFieldComponent, MatToggleFieldComponent, withMaterialFields };
|
|
597
|
-
export type { AddArrayItemButtonField, InsertArrayItemButtonField, MatButtonField, MatButtonProps, MatCheckboxComponent, MatCheckboxField, MatCheckboxProps, MatDatepickerComponent, MatDatepickerField, MatDatepickerProps, MatFieldType, MatFormConfig, MatFormProps, MatInputComponent, MatInputField, MatInputProps, MatMultiCheckboxComponent, MatMultiCheckboxField, MatMultiCheckboxProps, MatNextButtonField, MatPreviousButtonField, MatRadioComponent, MatRadioField, MatRadioProps, MatSelectComponent, MatSelectField, MatSelectProps, MatSliderComponent, MatSliderField, MatSliderProps, MatSubmitButtonField, MatTextareaComponent, MatTextareaField, MatTextareaProps, MatToggleComponent, MatToggleField, MatToggleProps, MaterialConfig, PopArrayItemButtonField, PrependArrayItemButtonField, RemoveArrayItemButtonField, ShiftArrayItemButtonField };
|
|
830
|
+
export { MATERIAL_CONFIG, MATERIAL_FIELD_TYPES, MAT_INPUT_TYPE_OVERRIDE, MatButtonAddonComponent, MatButtonFieldComponent, MatCheckboxFieldComponent, MatDatepickerFieldComponent, MatField, MatIconAddonComponent, MatInputFieldComponent, MatMultiCheckboxFieldComponent, MatRadioFieldComponent, MatSelectFieldComponent, MatSliderFieldComponent, MatTextareaFieldComponent, MatToggleFieldComponent, withMaterialAddons, withMaterialFields };
|
|
831
|
+
export type { AddArrayItemButtonField, InsertArrayItemButtonField, MatAddon, MatAddonExtensions, MatButtonAddon, MatButtonField, MatButtonProps, MatCheckboxComponent, MatCheckboxField, MatCheckboxProps, MatDatepickerComponent, MatDatepickerField, MatDatepickerProps, MatFieldType, MatFormConfig, MatFormProps, MatIconAddon, MatInputAddon, MatInputComponent, MatInputField, MatInputProps, MatMultiCheckboxComponent, MatMultiCheckboxField, MatMultiCheckboxProps, MatNextButtonField, MatPreviousButtonField, MatRadioComponent, MatRadioField, MatRadioProps, MatSelectComponent, MatSelectField, MatSelectProps, MatSliderComponent, MatSliderField, MatSliderProps, MatSubmitButtonField, MatTextareaComponent, MatTextareaField, MatTextareaProps, MatToggleComponent, MatToggleField, MatToggleProps, MaterialConfig, PopArrayItemButtonField, PrependArrayItemButtonField, RemoveArrayItemButtonField, ShiftArrayItemButtonField };
|