@ng-forge/dynamic-forms-material 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-material-lazy-addon-button.mjs +106 -0
  3. package/fesm2022/ng-forge-dynamic-forms-material-lazy-addon-button.mjs.map +1 -0
  4. package/fesm2022/ng-forge-dynamic-forms-material-lazy-addon-icon.mjs +34 -0
  5. package/fesm2022/ng-forge-dynamic-forms-material-lazy-addon-icon.mjs.map +1 -0
  6. package/fesm2022/ng-forge-dynamic-forms-material-lazy-button.mjs +60 -0
  7. package/fesm2022/ng-forge-dynamic-forms-material-lazy-button.mjs.map +1 -0
  8. package/fesm2022/ng-forge-dynamic-forms-material-lazy-checkbox.mjs +76 -0
  9. package/fesm2022/ng-forge-dynamic-forms-material-lazy-checkbox.mjs.map +1 -0
  10. package/fesm2022/ng-forge-dynamic-forms-material-lazy-datepicker.mjs +165 -0
  11. package/fesm2022/ng-forge-dynamic-forms-material-lazy-datepicker.mjs.map +1 -0
  12. package/fesm2022/ng-forge-dynamic-forms-material-lazy-input.mjs +196 -0
  13. package/fesm2022/ng-forge-dynamic-forms-material-lazy-input.mjs.map +1 -0
  14. package/fesm2022/ng-forge-dynamic-forms-material-lazy-multi-checkbox.mjs +136 -0
  15. package/fesm2022/ng-forge-dynamic-forms-material-lazy-multi-checkbox.mjs.map +1 -0
  16. package/fesm2022/ng-forge-dynamic-forms-material-lazy-radio.mjs +92 -0
  17. package/fesm2022/ng-forge-dynamic-forms-material-lazy-radio.mjs.map +1 -0
  18. package/fesm2022/ng-forge-dynamic-forms-material-lazy-select.mjs +163 -0
  19. package/fesm2022/ng-forge-dynamic-forms-material-lazy-select.mjs.map +1 -0
  20. package/fesm2022/ng-forge-dynamic-forms-material-lazy-slider.mjs +76 -0
  21. package/fesm2022/ng-forge-dynamic-forms-material-lazy-slider.mjs.map +1 -0
  22. package/fesm2022/ng-forge-dynamic-forms-material-lazy-textarea.mjs +144 -0
  23. package/fesm2022/ng-forge-dynamic-forms-material-lazy-textarea.mjs.map +1 -0
  24. package/fesm2022/ng-forge-dynamic-forms-material-lazy-toggle.mjs +76 -0
  25. package/fesm2022/ng-forge-dynamic-forms-material-lazy-toggle.mjs.map +1 -0
  26. package/fesm2022/ng-forge-dynamic-forms-material-mat-field-errors-wrapper.component-Dz2-IbBh.mjs +26 -0
  27. package/fesm2022/ng-forge-dynamic-forms-material-mat-field-errors-wrapper.component-Dz2-IbBh.mjs.map +1 -0
  28. package/fesm2022/ng-forge-dynamic-forms-material-shared.mjs +14 -0
  29. package/fesm2022/ng-forge-dynamic-forms-material-shared.mjs.map +1 -0
  30. package/fesm2022/ng-forge-dynamic-forms-material.mjs +267 -157
  31. package/fesm2022/ng-forge-dynamic-forms-material.mjs.map +1 -1
  32. package/package.json +56 -4
  33. package/types/ng-forge-dynamic-forms-material-lazy-addon-button.d.ts +18 -0
  34. package/types/ng-forge-dynamic-forms-material-lazy-addon-icon.d.ts +17 -0
  35. package/types/ng-forge-dynamic-forms-material-lazy-button.d.ts +114 -0
  36. package/types/ng-forge-dynamic-forms-material-lazy-checkbox.d.ts +26 -0
  37. package/types/ng-forge-dynamic-forms-material-lazy-datepicker.d.ts +45 -0
  38. package/types/ng-forge-dynamic-forms-material-lazy-input.d.ts +55 -0
  39. package/types/ng-forge-dynamic-forms-material-lazy-multi-checkbox.d.ts +29 -0
  40. package/types/ng-forge-dynamic-forms-material-lazy-radio.d.ts +24 -0
  41. package/types/ng-forge-dynamic-forms-material-lazy-select.d.ts +43 -0
  42. package/types/ng-forge-dynamic-forms-material-lazy-slider.d.ts +27 -0
  43. package/types/ng-forge-dynamic-forms-material-lazy-textarea.d.ts +39 -0
  44. package/types/ng-forge-dynamic-forms-material-lazy-toggle.d.ts +28 -0
  45. package/types/ng-forge-dynamic-forms-material-shared.d.ts +91 -0
  46. package/types/ng-forge-dynamic-forms-material.d.ts +34 -164
@@ -0,0 +1,163 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, input, computed, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { FormField } from '@angular/forms/signals';
4
+ import { MatFormField, MatLabel, MatError, MatPrefix, MatSuffix } from '@angular/material/form-field';
5
+ import { MatSelect, MatOption } from '@angular/material/select';
6
+ import { MatHint } from '@angular/material/input';
7
+ import * as i1 from '@ng-forge/dynamic-forms/integration';
8
+ import { injectNgForgeField, injectNgForgeAddons, NgForgeControl, DfAddonSlot, DynamicTextPipe, NgForgeFieldHost, NgForgeAddons } from '@ng-forge/dynamic-forms/integration';
9
+ import { AsyncPipe } from '@angular/common';
10
+ import { MATERIAL_CONFIG } from '@ng-forge/dynamic-forms-material/shared';
11
+
12
+ class MatSelectFieldComponent {
13
+ materialConfig = inject(MATERIAL_CONFIG, { optional: true });
14
+ ngf = injectNgForgeField();
15
+ ngfa = injectNgForgeAddons();
16
+ options = input([], /* @ts-ignore */
17
+ ...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
18
+ fieldInputs = input(/* @ts-ignore */
19
+ ...(ngDevMode ? [undefined, { debugName: "fieldInputs" }] : /* istanbul ignore next */ []));
20
+ props = input(/* @ts-ignore */
21
+ ...(ngDevMode ? [undefined, { debugName: "props" }] : /* istanbul ignore next */ []));
22
+ appearance = computed(() => this.props()?.appearance ?? this.materialConfig?.appearance ?? 'outline', /* @ts-ignore */
23
+ ...(ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []));
24
+ subscriptSizing = computed(() => this.props()?.subscriptSizing ?? this.materialConfig?.subscriptSizing ?? 'dynamic', /* @ts-ignore */
25
+ ...(ngDevMode ? [{ debugName: "subscriptSizing" }] : /* istanbul ignore next */ []));
26
+ floatLabel = computed(() => this.props()?.floatLabel ?? this.materialConfig?.floatLabel ?? 'auto', /* @ts-ignore */
27
+ ...(ngDevMode ? [{ debugName: "floatLabel" }] : /* istanbul ignore next */ []));
28
+ hideRequiredMarker = computed(() => this.props()?.hideRequiredMarker ?? this.materialConfig?.hideRequiredMarker ?? false, /* @ts-ignore */
29
+ ...(ngDevMode ? [{ debugName: "hideRequiredMarker" }] : /* istanbul ignore next */ []));
30
+ defaultCompare = Object.is;
31
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: MatSelectFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
32
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: MatSelectFieldComponent, isStandalone: true, selector: "df-mat-select", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, fieldInputs: { classPropertyName: "fieldInputs", publicName: "fieldInputs", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null } }, hostDirectives: [{ directive: i1.NgForgeFieldHost }, { directive: i1.NgForgeAddons }], ngImport: i0, template: `
33
+ @let selectId = ngf.key() + '-select';
34
+
35
+ <mat-form-field
36
+ [appearance]="appearance()"
37
+ [subscriptSizing]="subscriptSizing()"
38
+ [floatLabel]="floatLabel()"
39
+ [hideRequiredMarker]="hideRequiredMarker()"
40
+ >
41
+ @if (ngf.label(); as label) {
42
+ <mat-label>{{ label | dynamicText | async }}</mat-label>
43
+ }
44
+
45
+ @for (a of ngfa.prefixAddons(); track $index) {
46
+ <df-addon-slot
47
+ matPrefix
48
+ [class.df-mat-addon-text]="a.type === 'text'"
49
+ [addon]="a"
50
+ [fieldInputs]="fieldInputs()"
51
+ [hidden]="ngfa.hiddenSignalCache().get(a)"
52
+ (click)="$event.stopPropagation()"
53
+ />
54
+ }
55
+ <mat-select
56
+ ngForgeControl
57
+ [id]="selectId"
58
+ [formField]="ngf.field()"
59
+ [placeholder]="(ngf.placeholder() | dynamicText | async) ?? ''"
60
+ [multiple]="props()?.multiple || false"
61
+ [compareWith]="props()?.compareWith || defaultCompare"
62
+ >
63
+ @for (option of options(); track option.value) {
64
+ <mat-option [value]="option.value" [disabled]="option.disabled || false">
65
+ {{ option.label | dynamicText | async }}
66
+ </mat-option>
67
+ }
68
+ </mat-select>
69
+ @for (a of ngfa.suffixAddons(); track $index) {
70
+ <df-addon-slot
71
+ matSuffix
72
+ [class.df-mat-addon-text]="a.type === 'text'"
73
+ [addon]="a"
74
+ [fieldInputs]="fieldInputs()"
75
+ [hidden]="ngfa.hiddenSignalCache().get(a)"
76
+ (click)="$event.stopPropagation()"
77
+ />
78
+ }
79
+
80
+ @if (ngf.errorsToDisplay()[0]; as error) {
81
+ <mat-error [id]="ngf.errorId()">{{ error.message }}</mat-error>
82
+ } @else if (props()?.hint; as hint) {
83
+ <mat-hint [id]="ngf.hintId()">{{ hint | dynamicText | async }}</mat-hint>
84
+ }
85
+ </mat-form-field>
86
+ `, isInline: true, styles: [":host{display:block;width:100%}:host([hidden]){display:none!important}.df-mat-field{display:flex;flex-direction:column;gap:var(--df-field-gap, .5rem);width:100%}.df-mat-label{font-weight:var(--df-label-font-weight, 500);color:var(--df-label-color, inherit)}.df-mat-hint{color:var(--df-hint-color, rgba(0, 0, 0, .6));font-size:var(--df-hint-font-size, .875rem)}.df-mat-error{color:var(--df-error-color, #f44336);font-size:var(--df-error-font-size, .875rem)}:host{--df-mat-addon-prefix-outer-padding: .75em;--df-mat-addon-prefix-inner-padding: .5em;--df-mat-addon-suffix-inner-padding: .5em;--df-mat-addon-suffix-outer-padding: .75em;--df-mat-addon-prefix-text-outer-padding: 1em;--df-mat-addon-prefix-text-inner-padding: 1em;--df-mat-addon-suffix-text-inner-padding: 1em;--df-mat-addon-suffix-text-outer-padding: 1em}df-addon-slot[matprefix]{padding-left:var(--df-mat-addon-prefix-outer-padding);padding-right:var(--df-mat-addon-prefix-inner-padding)}df-addon-slot[matsuffix]{padding-left:var(--df-mat-addon-suffix-inner-padding);padding-right:var(--df-mat-addon-suffix-outer-padding)}df-addon-slot[matprefix].df-mat-addon-text{padding-left:var(--df-mat-addon-prefix-text-outer-padding);padding-right:var(--df-mat-addon-prefix-text-inner-padding)}df-addon-slot[matsuffix].df-mat-addon-text{padding-left:var(--df-mat-addon-suffix-text-inner-padding);padding-right:var(--df-mat-addon-suffix-text-outer-padding)}\n", "mat-form-field{width:100%}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "component", type: MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: FormField, selector: "[formField]", inputs: ["formField"], exportAs: ["formField"] }, { kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: NgForgeControl, selector: "[ngForgeControl]", inputs: ["ngForgeControl"] }, { kind: "component", type: DfAddonSlot, selector: "df-addon-slot", inputs: ["addon", "fieldInputs", "hidden"] }, { kind: "pipe", type: DynamicTextPipe, name: "dynamicText" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
87
+ }
88
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: MatSelectFieldComponent, decorators: [{
89
+ type: Component,
90
+ args: [{ selector: 'df-mat-select', imports: [
91
+ MatFormField,
92
+ MatLabel,
93
+ MatSelect,
94
+ MatOption,
95
+ MatHint,
96
+ FormField,
97
+ MatError,
98
+ MatPrefix,
99
+ MatSuffix,
100
+ DynamicTextPipe,
101
+ AsyncPipe,
102
+ NgForgeControl,
103
+ DfAddonSlot,
104
+ ], hostDirectives: [NgForgeFieldHost, NgForgeAddons], template: `
105
+ @let selectId = ngf.key() + '-select';
106
+
107
+ <mat-form-field
108
+ [appearance]="appearance()"
109
+ [subscriptSizing]="subscriptSizing()"
110
+ [floatLabel]="floatLabel()"
111
+ [hideRequiredMarker]="hideRequiredMarker()"
112
+ >
113
+ @if (ngf.label(); as label) {
114
+ <mat-label>{{ label | dynamicText | async }}</mat-label>
115
+ }
116
+
117
+ @for (a of ngfa.prefixAddons(); track $index) {
118
+ <df-addon-slot
119
+ matPrefix
120
+ [class.df-mat-addon-text]="a.type === 'text'"
121
+ [addon]="a"
122
+ [fieldInputs]="fieldInputs()"
123
+ [hidden]="ngfa.hiddenSignalCache().get(a)"
124
+ (click)="$event.stopPropagation()"
125
+ />
126
+ }
127
+ <mat-select
128
+ ngForgeControl
129
+ [id]="selectId"
130
+ [formField]="ngf.field()"
131
+ [placeholder]="(ngf.placeholder() | dynamicText | async) ?? ''"
132
+ [multiple]="props()?.multiple || false"
133
+ [compareWith]="props()?.compareWith || defaultCompare"
134
+ >
135
+ @for (option of options(); track option.value) {
136
+ <mat-option [value]="option.value" [disabled]="option.disabled || false">
137
+ {{ option.label | dynamicText | async }}
138
+ </mat-option>
139
+ }
140
+ </mat-select>
141
+ @for (a of ngfa.suffixAddons(); track $index) {
142
+ <df-addon-slot
143
+ matSuffix
144
+ [class.df-mat-addon-text]="a.type === 'text'"
145
+ [addon]="a"
146
+ [fieldInputs]="fieldInputs()"
147
+ [hidden]="ngfa.hiddenSignalCache().get(a)"
148
+ (click)="$event.stopPropagation()"
149
+ />
150
+ }
151
+
152
+ @if (ngf.errorsToDisplay()[0]; as error) {
153
+ <mat-error [id]="ngf.errorId()">{{ error.message }}</mat-error>
154
+ } @else if (props()?.hint; as hint) {
155
+ <mat-hint [id]="ngf.hintId()">{{ hint | dynamicText | async }}</mat-hint>
156
+ }
157
+ </mat-form-field>
158
+ `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;width:100%}:host([hidden]){display:none!important}.df-mat-field{display:flex;flex-direction:column;gap:var(--df-field-gap, .5rem);width:100%}.df-mat-label{font-weight:var(--df-label-font-weight, 500);color:var(--df-label-color, inherit)}.df-mat-hint{color:var(--df-hint-color, rgba(0, 0, 0, .6));font-size:var(--df-hint-font-size, .875rem)}.df-mat-error{color:var(--df-error-color, #f44336);font-size:var(--df-error-font-size, .875rem)}:host{--df-mat-addon-prefix-outer-padding: .75em;--df-mat-addon-prefix-inner-padding: .5em;--df-mat-addon-suffix-inner-padding: .5em;--df-mat-addon-suffix-outer-padding: .75em;--df-mat-addon-prefix-text-outer-padding: 1em;--df-mat-addon-prefix-text-inner-padding: 1em;--df-mat-addon-suffix-text-inner-padding: 1em;--df-mat-addon-suffix-text-outer-padding: 1em}df-addon-slot[matprefix]{padding-left:var(--df-mat-addon-prefix-outer-padding);padding-right:var(--df-mat-addon-prefix-inner-padding)}df-addon-slot[matsuffix]{padding-left:var(--df-mat-addon-suffix-inner-padding);padding-right:var(--df-mat-addon-suffix-outer-padding)}df-addon-slot[matprefix].df-mat-addon-text{padding-left:var(--df-mat-addon-prefix-text-outer-padding);padding-right:var(--df-mat-addon-prefix-text-inner-padding)}df-addon-slot[matsuffix].df-mat-addon-text{padding-left:var(--df-mat-addon-suffix-text-inner-padding);padding-right:var(--df-mat-addon-suffix-text-outer-padding)}\n", "mat-form-field{width:100%}\n"] }]
159
+ }], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], fieldInputs: [{ type: i0.Input, args: [{ isSignal: true, alias: "fieldInputs", required: false }] }], props: [{ type: i0.Input, args: [{ isSignal: true, alias: "props", required: false }] }] } });
160
+
161
+
162
+ export { MatSelectFieldComponent };
163
+ //# sourceMappingURL=ng-forge-dynamic-forms-material-lazy-select.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-forge-dynamic-forms-material-lazy-select.mjs","mappings":";;;;;;;;;;;AAuGc;;;;;;AAOZ,IAKS;;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAET;;AAvBmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAlFT;;;;;;;;;;;;;;AAeT","names":[],"ignoreList":[],"sources":["../../../../packages/dynamic-forms-material/src/lib/fields/select/mat-select.component.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { FormField } from '@angular/forms/signals';\nimport { MatError, MatFormField, MatLabel, MatPrefix, MatSuffix } from '@angular/material/form-field';\nimport { MatOption, MatSelect } from '@angular/material/select';\nimport { MatHint } from '@angular/material/input';\nimport { FieldOption, ValueType } from '@ng-forge/dynamic-forms';\nimport { DynamicTextPipe } from '@ng-forge/dynamic-forms/integration';\nimport {\n DfAddonSlot,\n injectNgForgeAddons,\n injectNgForgeField,\n NgForgeAddons,\n NgForgeControl,\n NgForgeFieldHost,\n WrapperFieldInputs,\n} from '@ng-forge/dynamic-forms/integration';\nimport { MatSelectProps } from './mat-select.type';\nimport { AsyncPipe } from '@angular/common';\nimport { MATERIAL_CONFIG } from '@ng-forge/dynamic-forms-material/shared';\n\n@Component({\n selector: 'df-mat-select',\n imports: [\n MatFormField,\n MatLabel,\n MatSelect,\n MatOption,\n MatHint,\n FormField,\n MatError,\n MatPrefix,\n MatSuffix,\n DynamicTextPipe,\n AsyncPipe,\n NgForgeControl,\n DfAddonSlot,\n ],\n hostDirectives: [NgForgeFieldHost, NgForgeAddons],\n template: `\n @let selectId = ngf.key() + '-select';\n\n <mat-form-field\n [appearance]=\"appearance()\"\n [subscriptSizing]=\"subscriptSizing()\"\n [floatLabel]=\"floatLabel()\"\n [hideRequiredMarker]=\"hideRequiredMarker()\"\n >\n @if (ngf.label(); as label) {\n <mat-label>{{ label | dynamicText | async }}</mat-label>\n }\n\n @for (a of ngfa.prefixAddons(); track $index) {\n <df-addon-slot\n matPrefix\n [class.df-mat-addon-text]=\"a.type === 'text'\"\n [addon]=\"a\"\n [fieldInputs]=\"fieldInputs()\"\n [hidden]=\"ngfa.hiddenSignalCache().get(a)\"\n (click)=\"$event.stopPropagation()\"\n />\n }\n <mat-select\n ngForgeControl\n [id]=\"selectId\"\n [formField]=\"ngf.field()\"\n [placeholder]=\"(ngf.placeholder() | dynamicText | async) ?? ''\"\n [multiple]=\"props()?.multiple || false\"\n [compareWith]=\"props()?.compareWith || defaultCompare\"\n >\n @for (option of options(); track option.value) {\n <mat-option [value]=\"option.value\" [disabled]=\"option.disabled || false\">\n {{ option.label | dynamicText | async }}\n </mat-option>\n }\n </mat-select>\n @for (a of ngfa.suffixAddons(); track $index) {\n <df-addon-slot\n matSuffix\n [class.df-mat-addon-text]=\"a.type === 'text'\"\n [addon]=\"a\"\n [fieldInputs]=\"fieldInputs()\"\n [hidden]=\"ngfa.hiddenSignalCache().get(a)\"\n (click)=\"$event.stopPropagation()\"\n />\n }\n\n @if (ngf.errorsToDisplay()[0]; as error) {\n <mat-error [id]=\"ngf.errorId()\">{{ error.message }}</mat-error>\n } @else if (props()?.hint; as hint) {\n <mat-hint [id]=\"ngf.hintId()\">{{ hint | dynamicText | async }}</mat-hint>\n }\n </mat-form-field>\n `,\n styleUrl: '../../styles/_form-field.scss',\n styles: [\n `\n mat-form-field {\n width: 100%;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class MatSelectFieldComponent {\n private materialConfig = inject(MATERIAL_CONFIG, { optional: true });\n\n protected readonly ngf = injectNgForgeField<ValueType>();\n protected readonly ngfa = injectNgForgeAddons();\n\n readonly options = input<FieldOption<ValueType>[]>([]);\n /**\n * Wrapper-style host bag pushed by `DfFieldOutlet`. Declared at the\n * component level so `setInputIfDeclared` (which uses\n * `reflectComponentType`) can write it.\n */\n readonly fieldInputs = input<WrapperFieldInputs | undefined>();\n readonly props = input<MatSelectProps>();\n\n readonly appearance = computed(() => this.props()?.appearance ?? this.materialConfig?.appearance ?? 'outline');\n\n readonly subscriptSizing = computed(() => this.props()?.subscriptSizing ?? this.materialConfig?.subscriptSizing ?? 'dynamic');\n\n readonly floatLabel = computed(() => this.props()?.floatLabel ?? this.materialConfig?.floatLabel ?? 'auto');\n\n readonly hideRequiredMarker = computed(() => this.props()?.hideRequiredMarker ?? this.materialConfig?.hideRequiredMarker ?? false);\n\n defaultCompare = Object.is;\n}\n"]}
@@ -0,0 +1,76 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { FormField } from '@angular/forms/signals';
4
+ import { MatSlider, MatSliderThumb } from '@angular/material/slider';
5
+ import * as i1 from '@ng-forge/dynamic-forms/integration';
6
+ import { injectNgForgeField, NgForgeControl, DynamicTextPipe, NgForgeFieldHost } from '@ng-forge/dynamic-forms/integration';
7
+ import { MatError } from '@angular/material/input';
8
+ import { AsyncPipe } from '@angular/common';
9
+
10
+ class MatSliderFieldComponent {
11
+ ngf = injectNgForgeField();
12
+ step = input(/* @ts-ignore */
13
+ ...(ngDevMode ? [undefined, { debugName: "step" }] : /* istanbul ignore next */ []));
14
+ props = input(/* @ts-ignore */
15
+ ...(ngDevMode ? [undefined, { debugName: "props" }] : /* istanbul ignore next */ []));
16
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: MatSliderFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
17
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: MatSliderFieldComponent, isStandalone: true, selector: "df-mat-slider", inputs: { step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null } }, hostDirectives: [{ directive: i1.NgForgeFieldHost }], ngImport: i0, template: `
18
+ @let f = ngf.field();
19
+ @let inputId = ngf.key() + '-input';
20
+
21
+ @if (ngf.label(); as label) {
22
+ <label class="slider-label" [for]="inputId">{{ label | dynamicText | async }}</label>
23
+ }
24
+
25
+ <mat-slider
26
+ [min]="f().min?.() ?? 0"
27
+ [max]="f().max?.() ?? 100"
28
+ [step]="step() ?? props()?.step ?? 1"
29
+ [discrete]="props()?.thumbLabel || props()?.showThumbLabel"
30
+ [showTickMarks]="props()?.tickInterval !== undefined"
31
+ [color]="props()?.color || 'primary'"
32
+ class="slider-container"
33
+ >
34
+ <input matSliderThumb ngForgeControl [id]="inputId" [formField]="f" [attr.tabindex]="ngf.tabIndex()" />
35
+ </mat-slider>
36
+
37
+ @if (ngf.errorsToDisplay()[0]; as error) {
38
+ <mat-error [id]="ngf.errorId()">{{ error.message }}</mat-error>
39
+ } @else if (props()?.hint; as hint) {
40
+ <div class="mat-hint" [id]="ngf.hintId()">{{ hint | dynamicText | async }}</div>
41
+ }
42
+ `, isInline: true, styles: [":host{display:block;width:100%}:host([hidden]){display:none!important}.df-mat-field{display:flex;flex-direction:column;gap:var(--df-field-gap, .5rem);width:100%}.df-mat-label{font-weight:var(--df-label-font-weight, 500);color:var(--df-label-color, inherit)}.df-mat-hint{color:var(--df-hint-color, rgba(0, 0, 0, .6));font-size:var(--df-hint-font-size, .875rem)}.df-mat-error{color:var(--df-error-color, #f44336);font-size:var(--df-error-font-size, .875rem)}:host{--df-mat-addon-prefix-outer-padding: .75em;--df-mat-addon-prefix-inner-padding: .5em;--df-mat-addon-suffix-inner-padding: .5em;--df-mat-addon-suffix-outer-padding: .75em;--df-mat-addon-prefix-text-outer-padding: 1em;--df-mat-addon-prefix-text-inner-padding: 1em;--df-mat-addon-suffix-text-inner-padding: 1em;--df-mat-addon-suffix-text-outer-padding: 1em}df-addon-slot[matprefix]{padding-left:var(--df-mat-addon-prefix-outer-padding);padding-right:var(--df-mat-addon-prefix-inner-padding)}df-addon-slot[matsuffix]{padding-left:var(--df-mat-addon-suffix-inner-padding);padding-right:var(--df-mat-addon-suffix-outer-padding)}df-addon-slot[matprefix].df-mat-addon-text{padding-left:var(--df-mat-addon-prefix-text-outer-padding);padding-right:var(--df-mat-addon-prefix-text-inner-padding)}df-addon-slot[matsuffix].df-mat-addon-text{padding-left:var(--df-mat-addon-suffix-text-inner-padding);padding-right:var(--df-mat-addon-suffix-text-outer-padding)}\n", ".slider-container{width:100%}\n"], dependencies: [{ kind: "component", type: MatSlider, selector: "mat-slider", inputs: ["disabled", "discrete", "showTickMarks", "min", "color", "disableRipple", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "directive", type: MatSliderThumb, selector: "input[matSliderThumb]", inputs: ["value"], outputs: ["valueChange", "dragStart", "dragEnd"], exportAs: ["matSliderThumb"] }, { kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: FormField, selector: "[formField]", inputs: ["formField"], exportAs: ["formField"] }, { kind: "directive", type: NgForgeControl, selector: "[ngForgeControl]", inputs: ["ngForgeControl"] }, { kind: "pipe", type: DynamicTextPipe, name: "dynamicText" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
43
+ }
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: MatSliderFieldComponent, decorators: [{
45
+ type: Component,
46
+ args: [{ selector: 'df-mat-slider', imports: [MatSlider, MatSliderThumb, MatError, DynamicTextPipe, AsyncPipe, FormField, NgForgeControl], hostDirectives: [NgForgeFieldHost], template: `
47
+ @let f = ngf.field();
48
+ @let inputId = ngf.key() + '-input';
49
+
50
+ @if (ngf.label(); as label) {
51
+ <label class="slider-label" [for]="inputId">{{ label | dynamicText | async }}</label>
52
+ }
53
+
54
+ <mat-slider
55
+ [min]="f().min?.() ?? 0"
56
+ [max]="f().max?.() ?? 100"
57
+ [step]="step() ?? props()?.step ?? 1"
58
+ [discrete]="props()?.thumbLabel || props()?.showThumbLabel"
59
+ [showTickMarks]="props()?.tickInterval !== undefined"
60
+ [color]="props()?.color || 'primary'"
61
+ class="slider-container"
62
+ >
63
+ <input matSliderThumb ngForgeControl [id]="inputId" [formField]="f" [attr.tabindex]="ngf.tabIndex()" />
64
+ </mat-slider>
65
+
66
+ @if (ngf.errorsToDisplay()[0]; as error) {
67
+ <mat-error [id]="ngf.errorId()">{{ error.message }}</mat-error>
68
+ } @else if (props()?.hint; as hint) {
69
+ <div class="mat-hint" [id]="ngf.hintId()">{{ hint | dynamicText | async }}</div>
70
+ }
71
+ `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;width:100%}:host([hidden]){display:none!important}.df-mat-field{display:flex;flex-direction:column;gap:var(--df-field-gap, .5rem);width:100%}.df-mat-label{font-weight:var(--df-label-font-weight, 500);color:var(--df-label-color, inherit)}.df-mat-hint{color:var(--df-hint-color, rgba(0, 0, 0, .6));font-size:var(--df-hint-font-size, .875rem)}.df-mat-error{color:var(--df-error-color, #f44336);font-size:var(--df-error-font-size, .875rem)}:host{--df-mat-addon-prefix-outer-padding: .75em;--df-mat-addon-prefix-inner-padding: .5em;--df-mat-addon-suffix-inner-padding: .5em;--df-mat-addon-suffix-outer-padding: .75em;--df-mat-addon-prefix-text-outer-padding: 1em;--df-mat-addon-prefix-text-inner-padding: 1em;--df-mat-addon-suffix-text-inner-padding: 1em;--df-mat-addon-suffix-text-outer-padding: 1em}df-addon-slot[matprefix]{padding-left:var(--df-mat-addon-prefix-outer-padding);padding-right:var(--df-mat-addon-prefix-inner-padding)}df-addon-slot[matsuffix]{padding-left:var(--df-mat-addon-suffix-inner-padding);padding-right:var(--df-mat-addon-suffix-outer-padding)}df-addon-slot[matprefix].df-mat-addon-text{padding-left:var(--df-mat-addon-prefix-text-outer-padding);padding-right:var(--df-mat-addon-prefix-text-inner-padding)}df-addon-slot[matsuffix].df-mat-addon-text{padding-left:var(--df-mat-addon-suffix-text-inner-padding);padding-right:var(--df-mat-addon-suffix-text-outer-padding)}\n", ".slider-container{width:100%}\n"] }]
72
+ }], propDecorators: { step: [{ type: i0.Input, args: [{ isSignal: true, alias: "step", required: false }] }], props: [{ type: i0.Input, args: [{ isSignal: true, alias: "props", required: false }] }] } });
73
+
74
+
75
+ export { MatSliderFieldComponent };
76
+ //# sourceMappingURL=ng-forge-dynamic-forms-material-lazy-slider.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-forge-dynamic-forms-material-lazy-slider.mjs","mappings":";;;;;;;;;AAiDc;;AAGH;;AAEA;;;AALU;;;;;;;;;;;;;;;;;;;;;;;;;AAXlB","names":[],"ignoreList":[],"sources":["../../../../packages/dynamic-forms-material/src/lib/fields/slider/mat-slider.component.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { FormField } from '@angular/forms/signals';\nimport { MatSlider, MatSliderThumb } from '@angular/material/slider';\nimport { DynamicTextPipe } from '@ng-forge/dynamic-forms/integration';\nimport { NgForgeControl, injectNgForgeField, NgForgeFieldHost } from '@ng-forge/dynamic-forms/integration';\nimport { MatSliderProps } from './mat-slider.type';\nimport { MatError } from '@angular/material/input';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'df-mat-slider',\n imports: [MatSlider, MatSliderThumb, MatError, DynamicTextPipe, AsyncPipe, FormField, NgForgeControl],\n hostDirectives: [NgForgeFieldHost],\n template: `\n @let f = ngf.field();\n @let inputId = ngf.key() + '-input';\n\n @if (ngf.label(); as label) {\n <label class=\"slider-label\" [for]=\"inputId\">{{ label | dynamicText | async }}</label>\n }\n\n <mat-slider\n [min]=\"f().min?.() ?? 0\"\n [max]=\"f().max?.() ?? 100\"\n [step]=\"step() ?? props()?.step ?? 1\"\n [discrete]=\"props()?.thumbLabel || props()?.showThumbLabel\"\n [showTickMarks]=\"props()?.tickInterval !== undefined\"\n [color]=\"props()?.color || 'primary'\"\n class=\"slider-container\"\n >\n <input matSliderThumb ngForgeControl [id]=\"inputId\" [formField]=\"f\" [attr.tabindex]=\"ngf.tabIndex()\" />\n </mat-slider>\n\n @if (ngf.errorsToDisplay()[0]; as error) {\n <mat-error [id]=\"ngf.errorId()\">{{ error.message }}</mat-error>\n } @else if (props()?.hint; as hint) {\n <div class=\"mat-hint\" [id]=\"ngf.hintId()\">{{ hint | dynamicText | async }}</div>\n }\n `,\n styleUrl: '../../styles/_form-field.scss',\n styles: [\n `\n .slider-container {\n width: 100%;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class MatSliderFieldComponent {\n protected readonly ngf = injectNgForgeField<number>();\n\n readonly step = input<number>();\n\n readonly props = input<MatSliderProps>();\n}\n"]}
@@ -0,0 +1,144 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, input, computed, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { FormField } from '@angular/forms/signals';
4
+ import { MatFormField, MatLabel, MatError, MatPrefix, MatSuffix } from '@angular/material/form-field';
5
+ import { MatInput, MatHint } from '@angular/material/input';
6
+ import * as i1 from '@ng-forge/dynamic-forms/integration';
7
+ import { injectNgForgeField, injectNgForgeAddons, NgForgeControl, DfAddonSlot, DynamicTextPipe, NgForgeFieldHost, NgForgeAddons } from '@ng-forge/dynamic-forms/integration';
8
+ import { AsyncPipe } from '@angular/common';
9
+ import { MATERIAL_CONFIG } from '@ng-forge/dynamic-forms-material/shared';
10
+
11
+ class MatTextareaFieldComponent {
12
+ materialConfig = inject(MATERIAL_CONFIG, { optional: true });
13
+ ngf = injectNgForgeField();
14
+ ngfa = injectNgForgeAddons();
15
+ props = input(/* @ts-ignore */
16
+ ...(ngDevMode ? [undefined, { debugName: "props" }] : /* istanbul ignore next */ []));
17
+ fieldInputs = input(/* @ts-ignore */
18
+ ...(ngDevMode ? [undefined, { debugName: "fieldInputs" }] : /* istanbul ignore next */ []));
19
+ appearance = computed(() => this.props()?.appearance ?? this.materialConfig?.appearance ?? 'outline', /* @ts-ignore */
20
+ ...(ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []));
21
+ subscriptSizing = computed(() => this.props()?.subscriptSizing ?? this.materialConfig?.subscriptSizing ?? 'dynamic', /* @ts-ignore */
22
+ ...(ngDevMode ? [{ debugName: "subscriptSizing" }] : /* istanbul ignore next */ []));
23
+ floatLabel = computed(() => this.props()?.floatLabel ?? this.materialConfig?.floatLabel ?? 'auto', /* @ts-ignore */
24
+ ...(ngDevMode ? [{ debugName: "floatLabel" }] : /* istanbul ignore next */ []));
25
+ hideRequiredMarker = computed(() => this.props()?.hideRequiredMarker ?? this.materialConfig?.hideRequiredMarker ?? false, /* @ts-ignore */
26
+ ...(ngDevMode ? [{ debugName: "hideRequiredMarker" }] : /* istanbul ignore next */ []));
27
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: MatTextareaFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
28
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: MatTextareaFieldComponent, isStandalone: true, selector: "df-mat-textarea", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, fieldInputs: { classPropertyName: "fieldInputs", publicName: "fieldInputs", isSignal: true, isRequired: false, transformFunction: null } }, hostDirectives: [{ directive: i1.NgForgeFieldHost }, { directive: i1.NgForgeAddons }], ngImport: i0, template: `
29
+ @let textareaId = ngf.key() + '-textarea';
30
+
31
+ <mat-form-field
32
+ [appearance]="appearance()"
33
+ [subscriptSizing]="subscriptSizing()"
34
+ [floatLabel]="floatLabel()"
35
+ [hideRequiredMarker]="hideRequiredMarker()"
36
+ >
37
+ @if (ngf.label()) {
38
+ <mat-label>{{ ngf.label() | dynamicText | async }}</mat-label>
39
+ }
40
+
41
+ @for (a of ngfa.prefixAddons(); track $index) {
42
+ <df-addon-slot
43
+ matPrefix
44
+ [class.df-mat-addon-text]="a.type === 'text'"
45
+ [addon]="a"
46
+ [fieldInputs]="fieldInputs()"
47
+ [hidden]="ngfa.hiddenSignalCache().get(a)"
48
+ />
49
+ }
50
+ <textarea
51
+ ngForgeControl
52
+ matInput
53
+ [id]="textareaId"
54
+ [formField]="ngf.field()"
55
+ [placeholder]="(ngf.placeholder() | dynamicText | async) ?? ''"
56
+ [attr.tabindex]="ngf.tabIndex()"
57
+ [style.resize]="props()?.resize || 'vertical'"
58
+ ></textarea>
59
+ @for (a of ngfa.suffixAddons(); track $index) {
60
+ <df-addon-slot
61
+ matSuffix
62
+ [class.df-mat-addon-text]="a.type === 'text'"
63
+ [addon]="a"
64
+ [fieldInputs]="fieldInputs()"
65
+ [hidden]="ngfa.hiddenSignalCache().get(a)"
66
+ />
67
+ }
68
+
69
+ @if (ngf.errorsToDisplay()[0]; as error) {
70
+ <mat-error [id]="ngf.errorId()">{{ error.message }}</mat-error>
71
+ } @else if (props()?.hint; as hint) {
72
+ <mat-hint [id]="ngf.hintId()">{{ hint | dynamicText | async }}</mat-hint>
73
+ }
74
+ </mat-form-field>
75
+ `, isInline: true, styles: [":host{display:block;width:100%}:host([hidden]){display:none!important}.df-mat-field{display:flex;flex-direction:column;gap:var(--df-field-gap, .5rem);width:100%}.df-mat-label{font-weight:var(--df-label-font-weight, 500);color:var(--df-label-color, inherit)}.df-mat-hint{color:var(--df-hint-color, rgba(0, 0, 0, .6));font-size:var(--df-hint-font-size, .875rem)}.df-mat-error{color:var(--df-error-color, #f44336);font-size:var(--df-error-font-size, .875rem)}:host{--df-mat-addon-prefix-outer-padding: .75em;--df-mat-addon-prefix-inner-padding: .5em;--df-mat-addon-suffix-inner-padding: .5em;--df-mat-addon-suffix-outer-padding: .75em;--df-mat-addon-prefix-text-outer-padding: 1em;--df-mat-addon-prefix-text-inner-padding: 1em;--df-mat-addon-suffix-text-inner-padding: 1em;--df-mat-addon-suffix-text-outer-padding: 1em}df-addon-slot[matprefix]{padding-left:var(--df-mat-addon-prefix-outer-padding);padding-right:var(--df-mat-addon-prefix-inner-padding)}df-addon-slot[matsuffix]{padding-left:var(--df-mat-addon-suffix-inner-padding);padding-right:var(--df-mat-addon-suffix-outer-padding)}df-addon-slot[matprefix].df-mat-addon-text{padding-left:var(--df-mat-addon-prefix-text-outer-padding);padding-right:var(--df-mat-addon-prefix-text-inner-padding)}df-addon-slot[matsuffix].df-mat-addon-text{padding-left:var(--df-mat-addon-suffix-text-inner-padding);padding-right:var(--df-mat-addon-suffix-text-outer-padding)}\n", "mat-form-field{width:100%}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: FormField, selector: "[formField]", inputs: ["formField"], exportAs: ["formField"] }, { kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: NgForgeControl, selector: "[ngForgeControl]", inputs: ["ngForgeControl"] }, { kind: "component", type: DfAddonSlot, selector: "df-addon-slot", inputs: ["addon", "fieldInputs", "hidden"] }, { kind: "pipe", type: DynamicTextPipe, name: "dynamicText" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
76
+ }
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: MatTextareaFieldComponent, decorators: [{
78
+ type: Component,
79
+ args: [{ selector: 'df-mat-textarea', imports: [
80
+ MatFormField,
81
+ MatLabel,
82
+ MatInput,
83
+ MatHint,
84
+ FormField,
85
+ MatError,
86
+ MatPrefix,
87
+ MatSuffix,
88
+ DynamicTextPipe,
89
+ AsyncPipe,
90
+ NgForgeControl,
91
+ DfAddonSlot,
92
+ ], hostDirectives: [NgForgeFieldHost, NgForgeAddons], template: `
93
+ @let textareaId = ngf.key() + '-textarea';
94
+
95
+ <mat-form-field
96
+ [appearance]="appearance()"
97
+ [subscriptSizing]="subscriptSizing()"
98
+ [floatLabel]="floatLabel()"
99
+ [hideRequiredMarker]="hideRequiredMarker()"
100
+ >
101
+ @if (ngf.label()) {
102
+ <mat-label>{{ ngf.label() | dynamicText | async }}</mat-label>
103
+ }
104
+
105
+ @for (a of ngfa.prefixAddons(); track $index) {
106
+ <df-addon-slot
107
+ matPrefix
108
+ [class.df-mat-addon-text]="a.type === 'text'"
109
+ [addon]="a"
110
+ [fieldInputs]="fieldInputs()"
111
+ [hidden]="ngfa.hiddenSignalCache().get(a)"
112
+ />
113
+ }
114
+ <textarea
115
+ ngForgeControl
116
+ matInput
117
+ [id]="textareaId"
118
+ [formField]="ngf.field()"
119
+ [placeholder]="(ngf.placeholder() | dynamicText | async) ?? ''"
120
+ [attr.tabindex]="ngf.tabIndex()"
121
+ [style.resize]="props()?.resize || 'vertical'"
122
+ ></textarea>
123
+ @for (a of ngfa.suffixAddons(); track $index) {
124
+ <df-addon-slot
125
+ matSuffix
126
+ [class.df-mat-addon-text]="a.type === 'text'"
127
+ [addon]="a"
128
+ [fieldInputs]="fieldInputs()"
129
+ [hidden]="ngfa.hiddenSignalCache().get(a)"
130
+ />
131
+ }
132
+
133
+ @if (ngf.errorsToDisplay()[0]; as error) {
134
+ <mat-error [id]="ngf.errorId()">{{ error.message }}</mat-error>
135
+ } @else if (props()?.hint; as hint) {
136
+ <mat-hint [id]="ngf.hintId()">{{ hint | dynamicText | async }}</mat-hint>
137
+ }
138
+ </mat-form-field>
139
+ `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;width:100%}:host([hidden]){display:none!important}.df-mat-field{display:flex;flex-direction:column;gap:var(--df-field-gap, .5rem);width:100%}.df-mat-label{font-weight:var(--df-label-font-weight, 500);color:var(--df-label-color, inherit)}.df-mat-hint{color:var(--df-hint-color, rgba(0, 0, 0, .6));font-size:var(--df-hint-font-size, .875rem)}.df-mat-error{color:var(--df-error-color, #f44336);font-size:var(--df-error-font-size, .875rem)}:host{--df-mat-addon-prefix-outer-padding: .75em;--df-mat-addon-prefix-inner-padding: .5em;--df-mat-addon-suffix-inner-padding: .5em;--df-mat-addon-suffix-outer-padding: .75em;--df-mat-addon-prefix-text-outer-padding: 1em;--df-mat-addon-prefix-text-inner-padding: 1em;--df-mat-addon-suffix-text-inner-padding: 1em;--df-mat-addon-suffix-text-outer-padding: 1em}df-addon-slot[matprefix]{padding-left:var(--df-mat-addon-prefix-outer-padding);padding-right:var(--df-mat-addon-prefix-inner-padding)}df-addon-slot[matsuffix]{padding-left:var(--df-mat-addon-suffix-inner-padding);padding-right:var(--df-mat-addon-suffix-outer-padding)}df-addon-slot[matprefix].df-mat-addon-text{padding-left:var(--df-mat-addon-prefix-text-outer-padding);padding-right:var(--df-mat-addon-prefix-text-inner-padding)}df-addon-slot[matsuffix].df-mat-addon-text{padding-left:var(--df-mat-addon-suffix-text-inner-padding);padding-right:var(--df-mat-addon-suffix-text-outer-padding)}\n", "mat-form-field{width:100%}\n"] }]
140
+ }], propDecorators: { props: [{ type: i0.Input, args: [{ isSignal: true, alias: "props", required: false }] }], fieldInputs: [{ type: i0.Input, args: [{ isSignal: true, alias: "fieldInputs", required: false }] }] } });
141
+
142
+
143
+ export { MatTextareaFieldComponent };
144
+ //# sourceMappingURL=ng-forge-dynamic-forms-material-lazy-textarea.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-forge-dynamic-forms-material-lazy-textarea.mjs","mappings":";;;;;;;;;;AA6Fc;;;;AAMH;;AACT,IAKS;;AAEA;;AACA;;AAEA;;AACA;;;AAlBU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA1ET;;;;;;;;;;;;;AAcT","names":[],"ignoreList":[],"sources":["../../../../packages/dynamic-forms-material/src/lib/fields/textarea/mat-textarea.component.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { FormField } from '@angular/forms/signals';\nimport { MatError, MatFormField, MatLabel, MatPrefix, MatSuffix } from '@angular/material/form-field';\nimport { MatHint, MatInput } from '@angular/material/input';\nimport { DynamicTextPipe } from '@ng-forge/dynamic-forms/integration';\nimport {\n DfAddonSlot,\n injectNgForgeAddons,\n injectNgForgeField,\n NgForgeAddons,\n NgForgeControl,\n NgForgeFieldHost,\n WrapperFieldInputs,\n} from '@ng-forge/dynamic-forms/integration';\nimport { MatTextareaProps } from './mat-textarea.type';\nimport { AsyncPipe } from '@angular/common';\nimport { MATERIAL_CONFIG } from '@ng-forge/dynamic-forms-material/shared';\n\n@Component({\n selector: 'df-mat-textarea',\n imports: [\n MatFormField,\n MatLabel,\n MatInput,\n MatHint,\n FormField,\n MatError,\n MatPrefix,\n MatSuffix,\n DynamicTextPipe,\n AsyncPipe,\n NgForgeControl,\n DfAddonSlot,\n ],\n hostDirectives: [NgForgeFieldHost, NgForgeAddons],\n template: `\n @let textareaId = ngf.key() + '-textarea';\n\n <mat-form-field\n [appearance]=\"appearance()\"\n [subscriptSizing]=\"subscriptSizing()\"\n [floatLabel]=\"floatLabel()\"\n [hideRequiredMarker]=\"hideRequiredMarker()\"\n >\n @if (ngf.label()) {\n <mat-label>{{ ngf.label() | dynamicText | async }}</mat-label>\n }\n\n @for (a of ngfa.prefixAddons(); track $index) {\n <df-addon-slot\n matPrefix\n [class.df-mat-addon-text]=\"a.type === 'text'\"\n [addon]=\"a\"\n [fieldInputs]=\"fieldInputs()\"\n [hidden]=\"ngfa.hiddenSignalCache().get(a)\"\n />\n }\n <textarea\n ngForgeControl\n matInput\n [id]=\"textareaId\"\n [formField]=\"ngf.field()\"\n [placeholder]=\"(ngf.placeholder() | dynamicText | async) ?? ''\"\n [attr.tabindex]=\"ngf.tabIndex()\"\n [style.resize]=\"props()?.resize || 'vertical'\"\n ></textarea>\n @for (a of ngfa.suffixAddons(); track $index) {\n <df-addon-slot\n matSuffix\n [class.df-mat-addon-text]=\"a.type === 'text'\"\n [addon]=\"a\"\n [fieldInputs]=\"fieldInputs()\"\n [hidden]=\"ngfa.hiddenSignalCache().get(a)\"\n />\n }\n\n @if (ngf.errorsToDisplay()[0]; as error) {\n <mat-error [id]=\"ngf.errorId()\">{{ error.message }}</mat-error>\n } @else if (props()?.hint; as hint) {\n <mat-hint [id]=\"ngf.hintId()\">{{ hint | dynamicText | async }}</mat-hint>\n }\n </mat-form-field>\n `,\n styleUrl: '../../styles/_form-field.scss',\n styles: [\n `\n mat-form-field {\n width: 100%;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class MatTextareaFieldComponent {\n private materialConfig = inject(MATERIAL_CONFIG, { optional: true });\n\n protected readonly ngf = injectNgForgeField<string>();\n protected readonly ngfa = injectNgForgeAddons();\n\n readonly props = input<MatTextareaProps>();\n /**\n * Wrapper-style host bag pushed by `DfFieldOutlet`. Declared at the\n * component level so `setInputIfDeclared` (which uses\n * `reflectComponentType`) can write it.\n */\n readonly fieldInputs = input<WrapperFieldInputs | undefined>();\n\n readonly appearance = computed(() => this.props()?.appearance ?? this.materialConfig?.appearance ?? 'outline');\n readonly subscriptSizing = computed(() => this.props()?.subscriptSizing ?? this.materialConfig?.subscriptSizing ?? 'dynamic');\n\n readonly floatLabel = computed(() => this.props()?.floatLabel ?? this.materialConfig?.floatLabel ?? 'auto');\n readonly hideRequiredMarker = computed(() => this.props()?.hideRequiredMarker ?? this.materialConfig?.hideRequiredMarker ?? false);\n}\n"]}
@@ -0,0 +1,76 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, input, computed, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { FormField } from '@angular/forms/signals';
4
+ import { MatSlideToggle } from '@angular/material/slide-toggle';
5
+ import * as i1 from '@ng-forge/dynamic-forms/integration';
6
+ import { injectNgForgeField, NgForgeControl, DynamicTextPipe, NgForgeFieldHost } from '@ng-forge/dynamic-forms/integration';
7
+ import { MatError } from '@angular/material/input';
8
+ import { AsyncPipe } from '@angular/common';
9
+ import { MATERIAL_CONFIG } from '@ng-forge/dynamic-forms-material/shared';
10
+
11
+ class MatToggleFieldComponent {
12
+ materialConfig = inject(MATERIAL_CONFIG, { optional: true });
13
+ ngf = injectNgForgeField();
14
+ props = input(/* @ts-ignore */
15
+ ...(ngDevMode ? [undefined, { debugName: "props" }] : /* istanbul ignore next */ []));
16
+ disableRipple = computed(() => this.props()?.disableRipple ?? this.materialConfig?.disableRipple ?? false, /* @ts-ignore */
17
+ ...(ngDevMode ? [{ debugName: "disableRipple" }] : /* istanbul ignore next */ []));
18
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: MatToggleFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
19
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: MatToggleFieldComponent, isStandalone: true, selector: "df-mat-toggle", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null } }, hostDirectives: [{ directive: i1.NgForgeFieldHost }], ngImport: i0, template: `
20
+ @let f = ngf.field();
21
+ @let toggleId = ngf.key() + '-toggle';
22
+
23
+ <mat-slide-toggle
24
+ ngForgeControl="button[role='switch']"
25
+ [id]="toggleId"
26
+ [formField]="f"
27
+ [color]="props()?.color || 'primary'"
28
+ [labelPosition]="props()?.labelPosition || 'after'"
29
+ [hideIcon]="props()?.hideIcon || false"
30
+ [disableRipple]="disableRipple()"
31
+ [required]="!!f().required()"
32
+ [tabIndex]="ngf.tabIndex() ?? 0"
33
+ class="toggle-container"
34
+ >
35
+ {{ ngf.label() | dynamicText | async }}
36
+ </mat-slide-toggle>
37
+
38
+ @if (ngf.errorsToDisplay()[0]; as error) {
39
+ <mat-error [id]="ngf.errorId()">{{ error.message }}</mat-error>
40
+ } @else if (props()?.hint; as hint) {
41
+ <div class="mat-hint" [id]="ngf.hintId()">{{ hint | dynamicText | async }}</div>
42
+ }
43
+ `, isInline: true, styles: [":host{display:block;width:100%}:host([hidden]){display:none!important}.df-mat-field{display:flex;flex-direction:column;gap:var(--df-field-gap, .5rem);width:100%}.df-mat-label{font-weight:var(--df-label-font-weight, 500);color:var(--df-label-color, inherit)}.df-mat-hint{color:var(--df-hint-color, rgba(0, 0, 0, .6));font-size:var(--df-hint-font-size, .875rem)}.df-mat-error{color:var(--df-error-color, #f44336);font-size:var(--df-error-font-size, .875rem)}:host{--df-mat-addon-prefix-outer-padding: .75em;--df-mat-addon-prefix-inner-padding: .5em;--df-mat-addon-suffix-inner-padding: .5em;--df-mat-addon-suffix-outer-padding: .75em;--df-mat-addon-prefix-text-outer-padding: 1em;--df-mat-addon-prefix-text-inner-padding: 1em;--df-mat-addon-suffix-text-inner-padding: 1em;--df-mat-addon-suffix-text-outer-padding: 1em}df-addon-slot[matprefix]{padding-left:var(--df-mat-addon-prefix-outer-padding);padding-right:var(--df-mat-addon-prefix-inner-padding)}df-addon-slot[matsuffix]{padding-left:var(--df-mat-addon-suffix-inner-padding);padding-right:var(--df-mat-addon-suffix-outer-padding)}df-addon-slot[matprefix].df-mat-addon-text{padding-left:var(--df-mat-addon-prefix-text-outer-padding);padding-right:var(--df-mat-addon-prefix-text-inner-padding)}df-addon-slot[matsuffix].df-mat-addon-text{padding-left:var(--df-mat-addon-suffix-text-inner-padding);padding-right:var(--df-mat-addon-suffix-text-outer-padding)}\n"], dependencies: [{ kind: "component", type: MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "fullWidth", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: FormField, selector: "[formField]", inputs: ["formField"], exportAs: ["formField"] }, { kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: NgForgeControl, selector: "[ngForgeControl]", inputs: ["ngForgeControl"] }, { kind: "pipe", type: DynamicTextPipe, name: "dynamicText" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
44
+ }
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: MatToggleFieldComponent, decorators: [{
46
+ type: Component,
47
+ args: [{ selector: 'df-mat-toggle', imports: [MatSlideToggle, FormField, MatError, DynamicTextPipe, AsyncPipe, NgForgeControl], hostDirectives: [NgForgeFieldHost], template: `
48
+ @let f = ngf.field();
49
+ @let toggleId = ngf.key() + '-toggle';
50
+
51
+ <mat-slide-toggle
52
+ ngForgeControl="button[role='switch']"
53
+ [id]="toggleId"
54
+ [formField]="f"
55
+ [color]="props()?.color || 'primary'"
56
+ [labelPosition]="props()?.labelPosition || 'after'"
57
+ [hideIcon]="props()?.hideIcon || false"
58
+ [disableRipple]="disableRipple()"
59
+ [required]="!!f().required()"
60
+ [tabIndex]="ngf.tabIndex() ?? 0"
61
+ class="toggle-container"
62
+ >
63
+ {{ ngf.label() | dynamicText | async }}
64
+ </mat-slide-toggle>
65
+
66
+ @if (ngf.errorsToDisplay()[0]; as error) {
67
+ <mat-error [id]="ngf.errorId()">{{ error.message }}</mat-error>
68
+ } @else if (props()?.hint; as hint) {
69
+ <div class="mat-hint" [id]="ngf.hintId()">{{ hint | dynamicText | async }}</div>
70
+ }
71
+ `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;width:100%}:host([hidden]){display:none!important}.df-mat-field{display:flex;flex-direction:column;gap:var(--df-field-gap, .5rem);width:100%}.df-mat-label{font-weight:var(--df-label-font-weight, 500);color:var(--df-label-color, inherit)}.df-mat-hint{color:var(--df-hint-color, rgba(0, 0, 0, .6));font-size:var(--df-hint-font-size, .875rem)}.df-mat-error{color:var(--df-error-color, #f44336);font-size:var(--df-error-font-size, .875rem)}:host{--df-mat-addon-prefix-outer-padding: .75em;--df-mat-addon-prefix-inner-padding: .5em;--df-mat-addon-suffix-inner-padding: .5em;--df-mat-addon-suffix-outer-padding: .75em;--df-mat-addon-prefix-text-outer-padding: 1em;--df-mat-addon-prefix-text-inner-padding: 1em;--df-mat-addon-suffix-text-inner-padding: 1em;--df-mat-addon-suffix-text-outer-padding: 1em}df-addon-slot[matprefix]{padding-left:var(--df-mat-addon-prefix-outer-padding);padding-right:var(--df-mat-addon-prefix-inner-padding)}df-addon-slot[matsuffix]{padding-left:var(--df-mat-addon-suffix-inner-padding);padding-right:var(--df-mat-addon-suffix-outer-padding)}df-addon-slot[matprefix].df-mat-addon-text{padding-left:var(--df-mat-addon-prefix-text-outer-padding);padding-right:var(--df-mat-addon-prefix-text-inner-padding)}df-addon-slot[matsuffix].df-mat-addon-text{padding-left:var(--df-mat-addon-suffix-text-inner-padding);padding-right:var(--df-mat-addon-suffix-text-outer-padding)}\n"] }]
72
+ }], propDecorators: { props: [{ type: i0.Input, args: [{ isSignal: true, alias: "props", required: false }] }] } });
73
+
74
+
75
+ export { MatToggleFieldComponent };
76
+ //# sourceMappingURL=ng-forge-dynamic-forms-material-lazy-toggle.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-forge-dynamic-forms-material-lazy-toggle.mjs","mappings":";;;;;;;;;;AA2Cc;;;AAKH;;AAEA;;;AAPU;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA/BT","names":[],"ignoreList":[],"sources":["../../../../packages/dynamic-forms-material/src/lib/fields/toggle/mat-toggle.component.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { FormField } from '@angular/forms/signals';\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\nimport { DynamicTextPipe } from '@ng-forge/dynamic-forms/integration';\nimport { NgForgeControl, injectNgForgeField, NgForgeFieldHost } from '@ng-forge/dynamic-forms/integration';\n\nimport { MatToggleProps } from './mat-toggle.type';\nimport { MatError } from '@angular/material/input';\nimport { AsyncPipe } from '@angular/common';\nimport { MATERIAL_CONFIG } from '@ng-forge/dynamic-forms-material/shared';\n\n@Component({\n selector: 'df-mat-toggle',\n imports: [MatSlideToggle, FormField, MatError, DynamicTextPipe, AsyncPipe, NgForgeControl],\n hostDirectives: [NgForgeFieldHost],\n template: `\n @let f = ngf.field();\n @let toggleId = ngf.key() + '-toggle';\n\n <mat-slide-toggle\n ngForgeControl=\"button[role='switch']\"\n [id]=\"toggleId\"\n [formField]=\"f\"\n [color]=\"props()?.color || 'primary'\"\n [labelPosition]=\"props()?.labelPosition || 'after'\"\n [hideIcon]=\"props()?.hideIcon || false\"\n [disableRipple]=\"disableRipple()\"\n [required]=\"!!f().required()\"\n [tabIndex]=\"ngf.tabIndex() ?? 0\"\n class=\"toggle-container\"\n >\n {{ ngf.label() | dynamicText | async }}\n </mat-slide-toggle>\n\n @if (ngf.errorsToDisplay()[0]; as error) {\n <mat-error [id]=\"ngf.errorId()\">{{ error.message }}</mat-error>\n } @else if (props()?.hint; as hint) {\n <div class=\"mat-hint\" [id]=\"ngf.hintId()\">{{ hint | dynamicText | async }}</div>\n }\n `,\n styleUrl: '../../styles/_form-field.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class MatToggleFieldComponent {\n private materialConfig = inject(MATERIAL_CONFIG, { optional: true });\n\n protected readonly ngf = injectNgForgeField<boolean>();\n\n readonly props = input<MatToggleProps>();\n\n readonly disableRipple = computed(() => this.props()?.disableRipple ?? this.materialConfig?.disableRipple ?? false);\n}\n"]}
@@ -0,0 +1,26 @@
1
+ import * as i0 from '@angular/core';
2
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { MatError } from '@angular/material/form-field';
4
+ import { FieldErrorsWrapperBase, provideFieldErrorDisplay } from '@ng-forge/dynamic-forms/integration';
5
+
6
+ class MatFieldErrorsWrapperComponent extends FieldErrorsWrapperBase {
7
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: MatFieldErrorsWrapperComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
8
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: MatFieldErrorsWrapperComponent, isStandalone: true, selector: "df-mat-field-errors", providers: [provideFieldErrorDisplay(() => MatFieldErrorsWrapperComponent)], usesInheritance: true, ngImport: i0, template: `
9
+ <ng-container #fieldComponent></ng-container>
10
+ @if (ngf.errorsToDisplay()[0]; as error) {
11
+ <mat-error class="df-mat-field-error" role="alert" [id]="ngf.errorId()">{{ error.message }}</mat-error>
12
+ }
13
+ `, isInline: true, styles: [".df-mat-field-error{display:block;color:var(--df-error-color, var(--mat-form-field-error-text-color, #f44336));font-family:var(--mat-form-field-subscript-text-font, inherit);font-size:var(--df-error-font-size, var(--mat-form-field-subscript-text-size, 12px));font-weight:var(--mat-form-field-subscript-text-weight, 400);line-height:var(--mat-form-field-subscript-text-line-height, 20px);letter-spacing:var(--mat-form-field-subscript-text-tracking, .0333333333em);margin-top:var(--df-field-gap, .5rem);padding-inline-start:var(--df-mat-error-inset, 16px)}\n"], dependencies: [{ kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
14
+ }
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: MatFieldErrorsWrapperComponent, decorators: [{
16
+ type: Component,
17
+ args: [{ selector: 'df-mat-field-errors', imports: [MatError], template: `
18
+ <ng-container #fieldComponent></ng-container>
19
+ @if (ngf.errorsToDisplay()[0]; as error) {
20
+ <mat-error class="df-mat-field-error" role="alert" [id]="ngf.errorId()">{{ error.message }}</mat-error>
21
+ }
22
+ `, changeDetection: ChangeDetectionStrategy.OnPush, providers: [provideFieldErrorDisplay(() => MatFieldErrorsWrapperComponent)], styles: [".df-mat-field-error{display:block;color:var(--df-error-color, var(--mat-form-field-error-text-color, #f44336));font-family:var(--mat-form-field-subscript-text-font, inherit);font-size:var(--df-error-font-size, var(--mat-form-field-subscript-text-size, 12px));font-weight:var(--mat-form-field-subscript-text-weight, 400);line-height:var(--mat-form-field-subscript-text-line-height, 20px);letter-spacing:var(--mat-form-field-subscript-text-tracking, .0333333333em);margin-top:var(--df-field-gap, .5rem);padding-inline-start:var(--df-mat-error-inset, 16px)}\n"] }]
23
+ }] });
24
+
25
+ export { MatFieldErrorsWrapperComponent, MatFieldErrorsWrapperComponent as default };
26
+ //# sourceMappingURL=ng-forge-dynamic-forms-material-mat-field-errors-wrapper.component-Dz2-IbBh.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-forge-dynamic-forms-material-mat-field-errors-wrapper.component-Dz2-IbBh.mjs","mappings":";;;;;AAkBc;;;;;;;AALX;;;;AAPS","names":[],"ignoreList":[],"sources":["../../../../packages/dynamic-forms-material/src/lib/wrappers/field-errors/mat-field-errors-wrapper.component.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { MatError } from '@angular/material/form-field';\nimport { FieldErrorsWrapperBase, provideFieldErrorDisplay } from '@ng-forge/dynamic-forms/integration';\n\n/** Material rendering of a validation message for the wrapped field. Replaces the core default. */\n@Component({\n selector: 'df-mat-field-errors',\n imports: [MatError],\n template: `\n <ng-container #fieldComponent></ng-container>\n @if (ngf.errorsToDisplay()[0]; as error) {\n <mat-error class=\"df-mat-field-error\" role=\"alert\" [id]=\"ngf.errorId()\">{{ error.message }}</mat-error>\n }\n `,\n styleUrl: './mat-field-errors-wrapper.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [provideFieldErrorDisplay(() => MatFieldErrorsWrapperComponent)],\n})\nexport default class MatFieldErrorsWrapperComponent extends FieldErrorsWrapperBase {}\n\nexport { MatFieldErrorsWrapperComponent };\n"]}
@@ -0,0 +1,14 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import { runPresetAction } from '@ng-forge/dynamic-forms/integration';
3
+
4
+ const MATERIAL_CONFIG = new InjectionToken('MATERIAL_CONFIG');
5
+
6
+ const MAT_INPUT_TYPE_OVERRIDE = new InjectionToken('MAT_INPUT_TYPE_OVERRIDE');
7
+
8
+ function runMatPresetAction(preset, context, collaborators) {
9
+ return runPresetAction(preset, context, collaborators, 'Material', 'mat-input');
10
+ }
11
+
12
+
13
+ export { MATERIAL_CONFIG, MAT_INPUT_TYPE_OVERRIDE, runMatPresetAction };
14
+ //# sourceMappingURL=ng-forge-dynamic-forms-material-shared.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-forge-dynamic-forms-material-shared.mjs","mappings":";;;;;;;;AAWE;AACF","names":[],"ignoreList":[],"sources":["../../../../packages/dynamic-forms-material/shared/preset-actions.ts"],"sourcesContent":["import type { AddonActionContext, AddonActionPreset } from '@ng-forge/dynamic-forms';\nimport { runPresetAction, type PresetCollaborators } from '@ng-forge/dynamic-forms/integration';\n\nexport type { PresetCollaborators };\n\n/** Material adapter binding for the shared preset runner. */\nexport function runMatPresetAction(\n preset: AddonActionPreset,\n context: AddonActionContext,\n collaborators: PresetCollaborators,\n): Promise<void> {\n return runPresetAction(preset, context, collaborators, 'Material', 'mat-input');\n}\n"]}