@tehw0lf/contact-form 0.20.5 → 0.20.6
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.
|
@@ -15,27 +15,27 @@ class ContactFormComponent {
|
|
|
15
15
|
'background-color': '#333333',
|
|
16
16
|
border: 'none',
|
|
17
17
|
color: '#cc7832'
|
|
18
|
-
});
|
|
18
|
+
}, ...(ngDevMode ? [{ debugName: "buttonStyle" }] : []));
|
|
19
19
|
this.formStyle = input({
|
|
20
20
|
color: '#437da8',
|
|
21
21
|
'background-color': 'rgba(34, 34, 34, 0.75)',
|
|
22
22
|
'backdrop-filter': 'blur(50px)',
|
|
23
23
|
'box-shadow': '0 2px 10px rgba(0, 0, 0, 0.075)'
|
|
24
|
-
});
|
|
25
|
-
this.textStyle = input({ color: '#cc7832' });
|
|
26
|
-
this.sendText = input('Send');
|
|
27
|
-
this.sendSuccessfulText = input('E-Mail successfully sent');
|
|
28
|
-
this.sendErrorText = input('Send error');
|
|
24
|
+
}, ...(ngDevMode ? [{ debugName: "formStyle" }] : []));
|
|
25
|
+
this.textStyle = input({ color: '#cc7832' }, ...(ngDevMode ? [{ debugName: "textStyle" }] : []));
|
|
26
|
+
this.sendText = input('Send', ...(ngDevMode ? [{ debugName: "sendText" }] : []));
|
|
27
|
+
this.sendSuccessfulText = input('E-Mail successfully sent', ...(ngDevMode ? [{ debugName: "sendSuccessfulText" }] : []));
|
|
28
|
+
this.sendErrorText = input('Send error', ...(ngDevMode ? [{ debugName: "sendErrorText" }] : []));
|
|
29
29
|
this.formConfig = input([
|
|
30
30
|
{ field: 'name', required: true },
|
|
31
31
|
{ field: 'email', required: true },
|
|
32
32
|
{ field: 'message', required: true, type: 'textarea' }
|
|
33
|
-
]);
|
|
34
|
-
this.apiCallback = input.required();
|
|
33
|
+
], ...(ngDevMode ? [{ debugName: "formConfig" }] : []));
|
|
34
|
+
this.apiCallback = input.required(...(ngDevMode ? [{ debugName: "apiCallback" }] : []));
|
|
35
35
|
this.form = new FormGroup({});
|
|
36
36
|
this.fields = [];
|
|
37
37
|
this.model = {};
|
|
38
|
-
this.emailSent = signal(null);
|
|
38
|
+
this.emailSent = signal(null, ...(ngDevMode ? [{ debugName: "emailSent" }] : []));
|
|
39
39
|
this.unsubscribe$ = new Subject();
|
|
40
40
|
// Use an effect to rebuild config when formConfig changes
|
|
41
41
|
effect(() => {
|
|
@@ -87,8 +87,7 @@ class ContactFormComponent {
|
|
|
87
87
|
}
|
|
88
88
|
fieldConfig.validators = {
|
|
89
89
|
email: {
|
|
90
|
-
expression: (control) => !control.value ||
|
|
91
|
-
/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(control.value),
|
|
90
|
+
expression: (control) => !control.value || /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(control.value),
|
|
92
91
|
message: 'Please enter a valid email address'
|
|
93
92
|
}
|
|
94
93
|
};
|
|
@@ -113,10 +112,10 @@ class ContactFormComponent {
|
|
|
113
112
|
})
|
|
114
113
|
.join('');
|
|
115
114
|
}
|
|
116
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
117
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.
|
|
115
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: ContactFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
116
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: ContactFormComponent, isStandalone: true, selector: "contact-form", inputs: { buttonStyle: { classPropertyName: "buttonStyle", publicName: "buttonStyle", isSignal: true, isRequired: false, transformFunction: null }, formStyle: { classPropertyName: "formStyle", publicName: "formStyle", isSignal: true, isRequired: false, transformFunction: null }, textStyle: { classPropertyName: "textStyle", publicName: "textStyle", isSignal: true, isRequired: false, transformFunction: null }, sendText: { classPropertyName: "sendText", publicName: "sendText", isSignal: true, isRequired: false, transformFunction: null }, sendSuccessfulText: { classPropertyName: "sendSuccessfulText", publicName: "sendSuccessfulText", isSignal: true, isRequired: false, transformFunction: null }, sendErrorText: { classPropertyName: "sendErrorText", publicName: "sendErrorText", isSignal: true, isRequired: false, transformFunction: null }, formConfig: { classPropertyName: "formConfig", publicName: "formConfig", isSignal: true, isRequired: false, transformFunction: null }, apiCallback: { classPropertyName: "apiCallback", publicName: "apiCallback", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<form\n [ngStyle]=\"formStyle()\"\n class=\"contact-form flex-column flex-fxflex\"\n [formGroup]=\"form\"\n (ngSubmit)=\"submitFormData(model)\"\n>\n <formly-form [form]=\"form\" [fields]=\"fields\" [model]=\"model\"></formly-form>\n <button\n [ngStyle]=\"buttonStyle()\"\n class=\"form-button\"\n type=\"submit\"\n [disabled]=\"!form.valid\"\n >\n {{ sendText() }}\n </button>\n <div [ngStyle]=\"textStyle()\" class=\"form-status\">\n @if (emailSent()) {\n {{ sendSuccessfulText() }}\n } @else if (emailSent() === false) {\n {{ sendErrorText() }}\n }\n </div>\n</form>\n", styles: [".flex-align-start{justify-content:flex-start}.flex-align-stretch{align-content:stretch;align-items:stretch}.flex-column{display:flex;flex-direction:column;box-sizing:border-box}.flex-row{display:flex;flex-direction:row;box-sizing:border-box}.flex-row-wrap{display:flex;flex-direction:row;flex-wrap:wrap;box-sizing:border-box}.flex-fxflex{flex:1 1 0%}.flex-fxflex-responsive{flex:0 1 calc(33.3% - 32px)}.flex-fxflex-lt-md{flex:0 1 calc(50% - 32px)}.flex-fxflex-lt-sm{flex:100%}.flex-fxflex-fill{height:100%;min-height:100%;min-width:100%;width:100%}.flex-gap-5{margin-right:5px}.flex-gap-12{margin-right:12px}.flex-gap-20{margin-right:20px}.contact-form{max-width:500px;margin:auto;padding:40px 40px 30px;box-sizing:border-box}.form-button{margin-top:.33rem;display:block;border-radius:.25rem;height:36px;width:100%;padding:.375rem .75rem}.form-status{height:19px;margin-top:1rem}\n"], dependencies: [{ kind: "ngmodule", type: LayoutModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i2.LegacyFormlyForm, selector: "formly-form" }, { kind: "ngmodule", type: FormlyMaterialModule }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
118
117
|
}
|
|
119
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
118
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: ContactFormComponent, decorators: [{
|
|
120
119
|
type: Component,
|
|
121
120
|
args: [{ selector: 'contact-form', encapsulation: ViewEncapsulation.None, imports: [
|
|
122
121
|
LayoutModule,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tehw0lf-contact-form.mjs","sources":["../tmp-esm2022/lib/contact-form/contact-form.component.js","../tmp-esm2022/tehw0lf-contact-form.js"],"sourcesContent":["import { LayoutModule } from '@angular/cdk/layout';\nimport { NgStyle } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input, signal, ViewEncapsulation, effect } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { FormlyMaterialModule } from '@ngx-formly/material';\nimport { Subject, takeUntil, tap } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@ngx-formly/core\";\nexport class ContactFormComponent {\n constructor() {\n this.buttonStyle = input({\n 'background-color': '#333333',\n border: 'none',\n color: '#cc7832'\n });\n this.formStyle = input({\n color: '#437da8',\n 'background-color': 'rgba(34, 34, 34, 0.75)',\n 'backdrop-filter': 'blur(50px)',\n 'box-shadow': '0 2px 10px rgba(0, 0, 0, 0.075)'\n });\n this.textStyle = input({ color: '#cc7832' });\n this.sendText = input('Send');\n this.sendSuccessfulText = input('E-Mail successfully sent');\n this.sendErrorText = input('Send error');\n this.formConfig = input([\n { field: 'name', required: true },\n { field: 'email', required: true },\n { field: 'message', required: true, type: 'textarea' }\n ]);\n this.apiCallback = input.required();\n this.form = new FormGroup({});\n this.fields = [];\n this.model = {};\n this.emailSent = signal(null);\n this.unsubscribe$ = new Subject();\n // Use an effect to rebuild config when formConfig changes\n effect(() => {\n // Read the formConfig signal to establish dependency\n this.formConfig();\n this.buildConfig();\n });\n }\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n submitFormData(formData) {\n this.apiCallback()(formData)\n .pipe(tap((success) => {\n this.emailSent.set(success);\n }), takeUntil(this.unsubscribe$))\n .subscribe();\n }\n buildConfig() {\n // Clear existing fields and model\n this.fields = [];\n this.model = {};\n this.formConfig().forEach((entry) => {\n if (entry.value) {\n this.model[entry.field] = entry.value;\n }\n const fieldConfig = {\n key: entry.field,\n type: entry.type ? entry.type : 'input',\n props: {\n label: entry.field.toLocaleUpperCase(),\n placeholder: 'Enter ' + entry.field,\n required: entry.required,\n attributes: { style: this.flattenStyle(this.textStyle()) }\n },\n templateOptions: entry.type === 'textarea'\n ? {\n autosize: true,\n minRows: 5,\n maxRows: 10\n }\n : {}\n };\n // Add email validation for email fields\n if (entry.field.toLowerCase() === 'email') {\n if (fieldConfig.props) {\n fieldConfig.props.type = 'email';\n }\n fieldConfig.validators = {\n email: {\n expression: (control) => !control.value ||\n /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/.test(control.value),\n message: 'Please enter a valid email address'\n }\n };\n }\n // Add required validation message\n if (entry.required) {\n fieldConfig.validators = {\n ...fieldConfig.validators,\n required: {\n expression: (control) => !!control.value,\n message: `${entry.field} is required`\n }\n };\n }\n this.fields.push(fieldConfig);\n });\n }\n flattenStyle(styleObject) {\n return Object.entries(styleObject)\n .flatMap((entry) => {\n return `${entry[0]}: ${entry[1]};`;\n })\n .join('');\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.3\", ngImport: i0, type: ContactFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.3\", type: ContactFormComponent, isStandalone: true, selector: \"contact-form\", inputs: { buttonStyle: { classPropertyName: \"buttonStyle\", publicName: \"buttonStyle\", isSignal: true, isRequired: false, transformFunction: null }, formStyle: { classPropertyName: \"formStyle\", publicName: \"formStyle\", isSignal: true, isRequired: false, transformFunction: null }, textStyle: { classPropertyName: \"textStyle\", publicName: \"textStyle\", isSignal: true, isRequired: false, transformFunction: null }, sendText: { classPropertyName: \"sendText\", publicName: \"sendText\", isSignal: true, isRequired: false, transformFunction: null }, sendSuccessfulText: { classPropertyName: \"sendSuccessfulText\", publicName: \"sendSuccessfulText\", isSignal: true, isRequired: false, transformFunction: null }, sendErrorText: { classPropertyName: \"sendErrorText\", publicName: \"sendErrorText\", isSignal: true, isRequired: false, transformFunction: null }, formConfig: { classPropertyName: \"formConfig\", publicName: \"formConfig\", isSignal: true, isRequired: false, transformFunction: null }, apiCallback: { classPropertyName: \"apiCallback\", publicName: \"apiCallback\", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: \"<form\\n [ngStyle]=\\\"formStyle()\\\"\\n class=\\\"contact-form flex-column flex-fxflex\\\"\\n [formGroup]=\\\"form\\\"\\n (ngSubmit)=\\\"submitFormData(model)\\\"\\n>\\n <formly-form [form]=\\\"form\\\" [fields]=\\\"fields\\\" [model]=\\\"model\\\"></formly-form>\\n <button\\n [ngStyle]=\\\"buttonStyle()\\\"\\n class=\\\"form-button\\\"\\n type=\\\"submit\\\"\\n [disabled]=\\\"!form.valid\\\"\\n >\\n {{ sendText() }}\\n </button>\\n <div [ngStyle]=\\\"textStyle()\\\" class=\\\"form-status\\\">\\n @if (emailSent()) {\\n {{ sendSuccessfulText() }}\\n } @else if (emailSent() === false) {\\n {{ sendErrorText() }}\\n }\\n </div>\\n</form>\\n\", styles: [\".flex-align-start{justify-content:flex-start}.flex-align-stretch{align-content:stretch;align-items:stretch}.flex-column{display:flex;flex-direction:column;box-sizing:border-box}.flex-row{display:flex;flex-direction:row;box-sizing:border-box}.flex-row-wrap{display:flex;flex-direction:row;flex-wrap:wrap;box-sizing:border-box}.flex-fxflex{flex:1 1 0%}.flex-fxflex-responsive{flex:0 1 calc(33.3% - 32px)}.flex-fxflex-lt-md{flex:0 1 calc(50% - 32px)}.flex-fxflex-lt-sm{flex:100%}.flex-fxflex-fill{height:100%;min-height:100%;min-width:100%;width:100%}.flex-gap-5{margin-right:5px}.flex-gap-12{margin-right:12px}.flex-gap-20{margin-right:20px}.contact-form{max-width:500px;margin:auto;padding:40px 40px 30px;box-sizing:border-box}.form-button{margin-top:.33rem;display:block;border-radius:.25rem;height:36px;width:100%;padding:.375rem .75rem}.form-status{height:19px;margin-top:1rem}\\n\"], dependencies: [{ kind: \"ngmodule\", type: LayoutModule }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"directive\", type: i1.ɵNgNoValidate, selector: \"form:not([ngNoForm]):not([ngNativeValidate])\" }, { kind: \"directive\", type: i1.NgControlStatusGroup, selector: \"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]\" }, { kind: \"directive\", type: i1.FormGroupDirective, selector: \"[formGroup]\", inputs: [\"formGroup\"], outputs: [\"ngSubmit\"], exportAs: [\"ngForm\"] }, { kind: \"ngmodule\", type: FormlyModule }, { kind: \"component\", type: i2.LegacyFormlyForm, selector: \"formly-form\" }, { kind: \"ngmodule\", type: FormlyMaterialModule }, { kind: \"directive\", type: NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.3\", ngImport: i0, type: ContactFormComponent, decorators: [{\n type: Component,\n args: [{ selector: 'contact-form', encapsulation: ViewEncapsulation.None, imports: [\n LayoutModule,\n ReactiveFormsModule,\n FormlyModule,\n FormlyMaterialModule,\n NgStyle\n ], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<form\\n [ngStyle]=\\\"formStyle()\\\"\\n class=\\\"contact-form flex-column flex-fxflex\\\"\\n [formGroup]=\\\"form\\\"\\n (ngSubmit)=\\\"submitFormData(model)\\\"\\n>\\n <formly-form [form]=\\\"form\\\" [fields]=\\\"fields\\\" [model]=\\\"model\\\"></formly-form>\\n <button\\n [ngStyle]=\\\"buttonStyle()\\\"\\n class=\\\"form-button\\\"\\n type=\\\"submit\\\"\\n [disabled]=\\\"!form.valid\\\"\\n >\\n {{ sendText() }}\\n </button>\\n <div [ngStyle]=\\\"textStyle()\\\" class=\\\"form-status\\\">\\n @if (emailSent()) {\\n {{ sendSuccessfulText() }}\\n } @else if (emailSent() === false) {\\n {{ sendErrorText() }}\\n }\\n </div>\\n</form>\\n\", styles: [\".flex-align-start{justify-content:flex-start}.flex-align-stretch{align-content:stretch;align-items:stretch}.flex-column{display:flex;flex-direction:column;box-sizing:border-box}.flex-row{display:flex;flex-direction:row;box-sizing:border-box}.flex-row-wrap{display:flex;flex-direction:row;flex-wrap:wrap;box-sizing:border-box}.flex-fxflex{flex:1 1 0%}.flex-fxflex-responsive{flex:0 1 calc(33.3% - 32px)}.flex-fxflex-lt-md{flex:0 1 calc(50% - 32px)}.flex-fxflex-lt-sm{flex:100%}.flex-fxflex-fill{height:100%;min-height:100%;min-width:100%;width:100%}.flex-gap-5{margin-right:5px}.flex-gap-12{margin-right:12px}.flex-gap-20{margin-right:20px}.contact-form{max-width:500px;margin:auto;padding:40px 40px 30px;box-sizing:border-box}.form-button{margin-top:.33rem;display:block;border-radius:.25rem;height:36px;width:100%;padding:.375rem .75rem}.form-status{height:19px;margin-top:1rem}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29udGFjdC1mb3JtL3NyYy9saWIvY29udGFjdC1mb3JtL2NvbnRhY3QtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbnRhY3QtZm9ybS9zcmMvbGliL2NvbnRhY3QtZm9ybS9jb250YWN0LWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEVBRUwsTUFBTSxFQUNOLGlCQUFpQixFQUNqQixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLFNBQVMsRUFDVCxtQkFBbUIsRUFFcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQXFCLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVELE9BQU8sRUFBYyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQTRCM0QsTUFBTSxPQUFPLG9CQUFvQjtJQXNDL0I7UUFyQ0EsZ0JBQVcsR0FBRyxLQUFLLENBQUM7WUFDbEIsa0JBQWtCLEVBQUUsU0FBUztZQUM3QixNQUFNLEVBQUUsTUFBTTtZQUNkLEtBQUssRUFBRSxTQUFTO1NBQ2pCLENBQUMsQ0FBQztRQUVILGNBQVMsR0FBRyxLQUFLLENBQUM7WUFDaEIsS0FBSyxFQUFFLFNBQVM7WUFDaEIsa0JBQWtCLEVBQUUsd0JBQXdCO1lBQzVDLGlCQUFpQixFQUFFLFlBQVk7WUFDL0Is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QUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7YUFDL0IsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDakIsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUNyQyxDQUFDLENBQUM7YUFDRCxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDZCxDQUFDOzhHQWxJVSxvQkFBb0I7a0dBQXBCLG9CQUFvQixzcUNDOUNqQyx5bUJBdUJBLDA2QkRlSSxZQUFZLDhCQUNaLG1CQUFtQixvYkFDbkIsWUFBWSx5R0FDWixvQkFBb0IsK0JBQ3BCLE9BQU87OzJGQUlFLG9CQUFvQjtrQkFmaEMsU0FBUzsrQkFFRSxjQUFjLGlCQUVULGlCQUFpQixDQUFDLElBQUksV0FFNUI7d0JBQ1AsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLFlBQVk7d0JBQ1osb0JBQW9CO3dCQUNwQixPQUFPO3FCQUNSLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGF5b3V0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBOZ1N0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGlucHV0LFxuICBPbkRlc3Ryb3ksXG4gIHNpZ25hbCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGVmZmVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEZvcm1Hcm91cCxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgQWJzdHJhY3RDb250cm9sXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnLCBGb3JtbHlNb2R1bGUgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IEZvcm1seU1hdGVyaWFsTW9kdWxlIH0gZnJvbSAnQG5neC1mb3JtbHkvbWF0ZXJpYWwnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW50ZXJmYWNlIEZvcm1WYWx1ZSB7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEZvcm1Db25maWdFbnRyeSB7XG4gIGZpZWxkOiBzdHJpbmc7XG4gIHZhbHVlPzogc3RyaW5nO1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIHR5cGU/OiAnaW5wdXQnIHwgJ3RleHRhcmVhJyB8ICdlbWFpbCcgfCAnbnVtYmVyJztcbn1cblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnY29udGFjdC1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbnRhY3QtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHN0eWxlVXJsczogWycuL2NvbnRhY3QtZm9ybS5jb21wb25lbnQuc2NzcyddLFxuICBpbXBvcnRzOiBbXG4gICAgTGF5b3V0TW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgRm9ybWx5TW9kdWxlLFxuICAgIEZvcm1seU1hdGVyaWFsTW9kdWxlLFxuICAgIE5nU3R5bGVcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQ29udGFjdEZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBidXR0b25TdHlsZSA9IGlucHV0KHtcbiAgICAnYmFja2dyb3VuZC1jb2xvcic6ICcjMzMzMzMzJyxcbiAgICBib3JkZXI6ICdub25lJyxcbiAgICBjb2xvcjogJyNjYzc4MzInXG4gIH0pO1xuXG4gIGZvcm1TdHlsZSA9IGlucHV0KHtcbiAgICBjb2xvcjogJyM0MzdkYTgnLFxuICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogJ3JnYmEoMzQsIDM0LCAzNCwgMC43NSknLFxuICAgICdiYWNrZHJvcC1maWx0ZXInOiAnYmx1cig1MHB4KScsXG4gICAgJ2JveC1zaGFkb3cnOiAnMCAycHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMDc1KSdcbiAgfSk7XG5cbiAgdGV4dFN0eWxlID0gaW5wdXQoeyBjb2xvcjogJyNjYzc4MzInIH0pO1xuXG4gIHNlbmRUZXh0ID0gaW5wdXQoJ1NlbmQnKTtcblxuICBzZW5kU3VjY2Vzc2Z1bFRleHQgPSBpbnB1dCgnRS1NYWlsIHN1Y2Nlc3NmdWxseSBzZW50Jyk7XG5cbiAgc2VuZEVycm9yVGV4dCA9IGlucHV0KCdTZW5kIGVycm9yJyk7XG5cbiAgZm9ybUNvbmZpZyA9IGlucHV0PEZvcm1Db25maWdFbnRyeVtdPihbXG4gICAgeyBmaWVsZDogJ25hbWUnLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHsgZmllbGQ6ICdlbWFpbCcsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgeyBmaWVsZDogJ21lc3NhZ2UnLCByZXF1aXJlZDogdHJ1ZSwgdHlwZTogJ3RleHRhcmVhJyB9XG4gIF0pO1xuXG4gIGFwaUNhbGxiYWNrID0gaW5wdXQucmVxdWlyZWQ8KGZvcm1WYWx1ZTogRm9ybVZhbHVlKSA9PiBPYnNlcnZhYmxlPGJvb2xlYW4+PigpO1xuXG4gIGZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgZmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdID0gW107XG4gIG1vZGVsOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cbiAgZW1haWxTZW50ID0gc2lnbmFsPGJvb2xlYW4gfCBudWxsPihudWxsKTtcblxuICBwcml2YXRlIHVuc3Vic2NyaWJlJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gVXNlIGFuIGVmZmVjdCB0byByZWJ1aWxkIGNvbmZpZyB3aGVuIGZvcm1Db25maWcgY2hhbmdlc1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAvLyBSZWFkIHRoZSBmb3JtQ29uZmlnIHNpZ25hbCB0byBlc3RhYmxpc2ggZGVwZW5kZW5jeVxuICAgICAgdGhpcy5mb3JtQ29uZmlnKCk7XG4gICAgICB0aGlzLmJ1aWxkQ29uZmlnKCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHN1Ym1pdEZvcm1EYXRhKGZvcm1EYXRhOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KSB7XG4gICAgdGhpcy5hcGlDYWxsYmFjaygpKGZvcm1EYXRhKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoc3VjY2VzczogYm9vbGVhbikgPT4ge1xuICAgICAgICAgIHRoaXMuZW1haWxTZW50LnNldChzdWNjZXNzKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDb25maWcoKTogdm9pZCB7XG4gICAgLy8gQ2xlYXIgZXhpc3RpbmcgZmllbGRzIGFuZCBtb2RlbFxuICAgIHRoaXMuZmllbGRzID0gW107XG4gICAgdGhpcy5tb2RlbCA9IHt9O1xuXG4gICAgdGhpcy5mb3JtQ29uZmlnKCkuZm9yRWFjaCgoZW50cnk6IEZvcm1Db25maWdFbnRyeSkgPT4ge1xuICAgICAgaWYgKGVudHJ5LnZhbHVlKSB7XG4gICAgICAgIHRoaXMubW9kZWxbZW50cnkuZmllbGRdID0gZW50cnkudmFsdWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpZWxkQ29uZmlnOiBGb3JtbHlGaWVsZENvbmZpZyA9IHtcbiAgICAgICAga2V5OiBlbnRyeS5maWVsZCxcbiAgICAgICAgdHlwZTogZW50cnkudHlwZSA/IGVudHJ5LnR5cGUgOiAnaW5wdXQnLFxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgIGxhYmVsOiBlbnRyeS5maWVsZC50b0xvY2FsZVVwcGVyQ2FzZSgpLFxuICAgICAgICAgIHBsYWNlaG9sZGVyOiAnRW50ZXIgJyArIGVudHJ5LmZpZWxkLFxuICAgICAgICAgIHJlcXVpcmVkOiBlbnRyeS5yZXF1aXJlZCxcbiAgICAgICAgICBhdHRyaWJ1dGVzOiB7IHN0eWxlOiB0aGlzLmZsYXR0ZW5TdHlsZSh0aGlzLnRleHRTdHlsZSgpKSB9XG4gICAgICAgIH0sXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczpcbiAgICAgICAgICBlbnRyeS50eXBlID09PSAndGV4dGFyZWEnXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBhdXRvc2l6ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBtaW5Sb3dzOiA1LFxuICAgICAgICAgICAgICAgIG1heFJvd3M6IDEwXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDoge31cbiAgICAgIH07XG5cbiAgICAgIC8vIEFkZCBlbWFpbCB2YWxpZGF0aW9uIGZvciBlbWFpbCBmaWVsZHNcbiAgICAgIGlmIChlbnRyeS5maWVsZC50b0xvd2VyQ2FzZSgpID09PSAnZW1haWwnKSB7XG4gICAgICAgIGlmIChmaWVsZENvbmZpZy5wcm9wcykge1xuICAgICAgICAgIGZpZWxkQ29uZmlnLnByb3BzLnR5cGUgPSAnZW1haWwnO1xuICAgICAgICB9XG4gICAgICAgIGZpZWxkQ29uZmlnLnZhbGlkYXRvcnMgPSB7XG4gICAgICAgICAgZW1haWw6IHtcbiAgICAgICAgICAgIGV4cHJlc3Npb246IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+XG4gICAgICAgICAgICAgICFjb250cm9sLnZhbHVlIHx8XG4gICAgICAgICAgICAgIC9eW2EtekEtWjAtOS5fJSstXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLH0kLy50ZXN0KFxuICAgICAgICAgICAgICAgIGNvbnRyb2wudmFsdWVcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzJ1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgLy8gQWRkIHJlcXVpcmVkIHZhbGlkYXRpb24gbWVzc2FnZVxuICAgICAgaWYgKGVudHJ5LnJlcXVpcmVkKSB7XG4gICAgICAgIGZpZWxkQ29uZmlnLnZhbGlkYXRvcnMgPSB7XG4gICAgICAgICAgLi4uZmllbGRDb25maWcudmFsaWRhdG9ycyxcbiAgICAgICAgICByZXF1aXJlZDoge1xuICAgICAgICAgICAgZXhwcmVzc2lvbjogKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4gISFjb250cm9sLnZhbHVlLFxuICAgICAgICAgICAgbWVzc2FnZTogYCR7ZW50cnkuZmllbGR9IGlzIHJlcXVpcmVkYFxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5maWVsZHMucHVzaChmaWVsZENvbmZpZyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGZsYXR0ZW5TdHlsZShzdHlsZU9iamVjdDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHN0eWxlT2JqZWN0KVxuICAgICAgLmZsYXRNYXAoKGVudHJ5KSA9PiB7XG4gICAgICAgIHJldHVybiBgJHtlbnRyeVswXX06ICR7ZW50cnlbMV19O2A7XG4gICAgICB9KVxuICAgICAgLmpvaW4oJycpO1xuICB9XG59XG4iLCI8Zm9ybVxuICBbbmdTdHlsZV09XCJmb3JtU3R5bGUoKVwiXG4gIGNsYXNzPVwiY29udGFjdC1mb3JtIGZsZXgtY29sdW1uIGZsZXgtZnhmbGV4XCJcbiAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgKG5nU3VibWl0KT1cInN1Ym1pdEZvcm1EYXRhKG1vZGVsKVwiXG4+XG4gIDxmb3JtbHktZm9ybSBbZm9ybV09XCJmb3JtXCIgW2ZpZWxkc109XCJmaWVsZHNcIiBbbW9kZWxdPVwibW9kZWxcIj48L2Zvcm1seS1mb3JtPlxuICA8YnV0dG9uXG4gICAgW25nU3R5bGVdPVwiYnV0dG9uU3R5bGUoKVwiXG4gICAgY2xhc3M9XCJmb3JtLWJ1dHRvblwiXG4gICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgW2Rpc2FibGVkXT1cIiFmb3JtLnZhbGlkXCJcbiAgPlxuICAgIHt7IHNlbmRUZXh0KCkgfX1cbiAgPC9idXR0b24+XG4gIDxkaXYgW25nU3R5bGVdPVwidGV4dFN0eWxlKClcIiBjbGFzcz1cImZvcm0tc3RhdHVzXCI+XG4gICAgQGlmIChlbWFpbFNlbnQoKSkge1xuICAgICAge3sgc2VuZFN1Y2Nlc3NmdWxUZXh0KCkgfX1cbiAgICB9IEBlbHNlIGlmIChlbWFpbFNlbnQoKSA9PT0gZmFsc2UpIHtcbiAgICAgIHt7IHNlbmRFcnJvclRleHQoKSB9fVxuICAgIH1cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVodzBsZi1jb250YWN0LWZvcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2NvbnRhY3QtZm9ybS9zcmMvdGVodzBsZi1jb250YWN0LWZvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tehw0lf-contact-form.mjs","sources":["../tmp-esm2022/lib/contact-form/contact-form.component.js","../tmp-esm2022/tehw0lf-contact-form.js"],"sourcesContent":["import { LayoutModule } from '@angular/cdk/layout';\nimport { NgStyle } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input, signal, ViewEncapsulation, effect } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { FormlyMaterialModule } from '@ngx-formly/material';\nimport { Subject, takeUntil, tap } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@ngx-formly/core\";\nexport class ContactFormComponent {\n constructor() {\n this.buttonStyle = input({\n 'background-color': '#333333',\n border: 'none',\n color: '#cc7832'\n }, ...(ngDevMode ? [{ debugName: \"buttonStyle\" }] : []));\n this.formStyle = input({\n color: '#437da8',\n 'background-color': 'rgba(34, 34, 34, 0.75)',\n 'backdrop-filter': 'blur(50px)',\n 'box-shadow': '0 2px 10px rgba(0, 0, 0, 0.075)'\n }, ...(ngDevMode ? [{ debugName: \"formStyle\" }] : []));\n this.textStyle = input({ color: '#cc7832' }, ...(ngDevMode ? [{ debugName: \"textStyle\" }] : []));\n this.sendText = input('Send', ...(ngDevMode ? [{ debugName: \"sendText\" }] : []));\n this.sendSuccessfulText = input('E-Mail successfully sent', ...(ngDevMode ? [{ debugName: \"sendSuccessfulText\" }] : []));\n this.sendErrorText = input('Send error', ...(ngDevMode ? [{ debugName: \"sendErrorText\" }] : []));\n this.formConfig = input([\n { field: 'name', required: true },\n { field: 'email', required: true },\n { field: 'message', required: true, type: 'textarea' }\n ], ...(ngDevMode ? [{ debugName: \"formConfig\" }] : []));\n this.apiCallback = input.required(...(ngDevMode ? [{ debugName: \"apiCallback\" }] : []));\n this.form = new FormGroup({});\n this.fields = [];\n this.model = {};\n this.emailSent = signal(null, ...(ngDevMode ? [{ debugName: \"emailSent\" }] : []));\n this.unsubscribe$ = new Subject();\n // Use an effect to rebuild config when formConfig changes\n effect(() => {\n // Read the formConfig signal to establish dependency\n this.formConfig();\n this.buildConfig();\n });\n }\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n submitFormData(formData) {\n this.apiCallback()(formData)\n .pipe(tap((success) => {\n this.emailSent.set(success);\n }), takeUntil(this.unsubscribe$))\n .subscribe();\n }\n buildConfig() {\n // Clear existing fields and model\n this.fields = [];\n this.model = {};\n this.formConfig().forEach((entry) => {\n if (entry.value) {\n this.model[entry.field] = entry.value;\n }\n const fieldConfig = {\n key: entry.field,\n type: entry.type ? entry.type : 'input',\n props: {\n label: entry.field.toLocaleUpperCase(),\n placeholder: 'Enter ' + entry.field,\n required: entry.required,\n attributes: { style: this.flattenStyle(this.textStyle()) }\n },\n templateOptions: entry.type === 'textarea'\n ? {\n autosize: true,\n minRows: 5,\n maxRows: 10\n }\n : {}\n };\n // Add email validation for email fields\n if (entry.field.toLowerCase() === 'email') {\n if (fieldConfig.props) {\n fieldConfig.props.type = 'email';\n }\n fieldConfig.validators = {\n email: {\n expression: (control) => !control.value || /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/.test(control.value),\n message: 'Please enter a valid email address'\n }\n };\n }\n // Add required validation message\n if (entry.required) {\n fieldConfig.validators = {\n ...fieldConfig.validators,\n required: {\n expression: (control) => !!control.value,\n message: `${entry.field} is required`\n }\n };\n }\n this.fields.push(fieldConfig);\n });\n }\n flattenStyle(styleObject) {\n return Object.entries(styleObject)\n .flatMap((entry) => {\n return `${entry[0]}: ${entry[1]};`;\n })\n .join('');\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: ContactFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.6\", type: ContactFormComponent, isStandalone: true, selector: \"contact-form\", inputs: { buttonStyle: { classPropertyName: \"buttonStyle\", publicName: \"buttonStyle\", isSignal: true, isRequired: false, transformFunction: null }, formStyle: { classPropertyName: \"formStyle\", publicName: \"formStyle\", isSignal: true, isRequired: false, transformFunction: null }, textStyle: { classPropertyName: \"textStyle\", publicName: \"textStyle\", isSignal: true, isRequired: false, transformFunction: null }, sendText: { classPropertyName: \"sendText\", publicName: \"sendText\", isSignal: true, isRequired: false, transformFunction: null }, sendSuccessfulText: { classPropertyName: \"sendSuccessfulText\", publicName: \"sendSuccessfulText\", isSignal: true, isRequired: false, transformFunction: null }, sendErrorText: { classPropertyName: \"sendErrorText\", publicName: \"sendErrorText\", isSignal: true, isRequired: false, transformFunction: null }, formConfig: { classPropertyName: \"formConfig\", publicName: \"formConfig\", isSignal: true, isRequired: false, transformFunction: null }, apiCallback: { classPropertyName: \"apiCallback\", publicName: \"apiCallback\", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: \"<form\\n [ngStyle]=\\\"formStyle()\\\"\\n class=\\\"contact-form flex-column flex-fxflex\\\"\\n [formGroup]=\\\"form\\\"\\n (ngSubmit)=\\\"submitFormData(model)\\\"\\n>\\n <formly-form [form]=\\\"form\\\" [fields]=\\\"fields\\\" [model]=\\\"model\\\"></formly-form>\\n <button\\n [ngStyle]=\\\"buttonStyle()\\\"\\n class=\\\"form-button\\\"\\n type=\\\"submit\\\"\\n [disabled]=\\\"!form.valid\\\"\\n >\\n {{ sendText() }}\\n </button>\\n <div [ngStyle]=\\\"textStyle()\\\" class=\\\"form-status\\\">\\n @if (emailSent()) {\\n {{ sendSuccessfulText() }}\\n } @else if (emailSent() === false) {\\n {{ sendErrorText() }}\\n }\\n </div>\\n</form>\\n\", styles: [\".flex-align-start{justify-content:flex-start}.flex-align-stretch{align-content:stretch;align-items:stretch}.flex-column{display:flex;flex-direction:column;box-sizing:border-box}.flex-row{display:flex;flex-direction:row;box-sizing:border-box}.flex-row-wrap{display:flex;flex-direction:row;flex-wrap:wrap;box-sizing:border-box}.flex-fxflex{flex:1 1 0%}.flex-fxflex-responsive{flex:0 1 calc(33.3% - 32px)}.flex-fxflex-lt-md{flex:0 1 calc(50% - 32px)}.flex-fxflex-lt-sm{flex:100%}.flex-fxflex-fill{height:100%;min-height:100%;min-width:100%;width:100%}.flex-gap-5{margin-right:5px}.flex-gap-12{margin-right:12px}.flex-gap-20{margin-right:20px}.contact-form{max-width:500px;margin:auto;padding:40px 40px 30px;box-sizing:border-box}.form-button{margin-top:.33rem;display:block;border-radius:.25rem;height:36px;width:100%;padding:.375rem .75rem}.form-status{height:19px;margin-top:1rem}\\n\"], dependencies: [{ kind: \"ngmodule\", type: LayoutModule }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"directive\", type: i1.ɵNgNoValidate, selector: \"form:not([ngNoForm]):not([ngNativeValidate])\" }, { kind: \"directive\", type: i1.NgControlStatusGroup, selector: \"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]\" }, { kind: \"directive\", type: i1.FormGroupDirective, selector: \"[formGroup]\", inputs: [\"formGroup\"], outputs: [\"ngSubmit\"], exportAs: [\"ngForm\"] }, { kind: \"ngmodule\", type: FormlyModule }, { kind: \"component\", type: i2.LegacyFormlyForm, selector: \"formly-form\" }, { kind: \"ngmodule\", type: FormlyMaterialModule }, { kind: \"directive\", type: NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: ContactFormComponent, decorators: [{\n type: Component,\n args: [{ selector: 'contact-form', encapsulation: ViewEncapsulation.None, imports: [\n LayoutModule,\n ReactiveFormsModule,\n FormlyModule,\n FormlyMaterialModule,\n NgStyle\n ], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<form\\n [ngStyle]=\\\"formStyle()\\\"\\n class=\\\"contact-form flex-column flex-fxflex\\\"\\n [formGroup]=\\\"form\\\"\\n (ngSubmit)=\\\"submitFormData(model)\\\"\\n>\\n <formly-form [form]=\\\"form\\\" [fields]=\\\"fields\\\" [model]=\\\"model\\\"></formly-form>\\n <button\\n [ngStyle]=\\\"buttonStyle()\\\"\\n class=\\\"form-button\\\"\\n type=\\\"submit\\\"\\n [disabled]=\\\"!form.valid\\\"\\n >\\n {{ sendText() }}\\n </button>\\n <div [ngStyle]=\\\"textStyle()\\\" class=\\\"form-status\\\">\\n @if (emailSent()) {\\n {{ sendSuccessfulText() }}\\n } @else if (emailSent() === false) {\\n {{ sendErrorText() }}\\n }\\n </div>\\n</form>\\n\", styles: [\".flex-align-start{justify-content:flex-start}.flex-align-stretch{align-content:stretch;align-items:stretch}.flex-column{display:flex;flex-direction:column;box-sizing:border-box}.flex-row{display:flex;flex-direction:row;box-sizing:border-box}.flex-row-wrap{display:flex;flex-direction:row;flex-wrap:wrap;box-sizing:border-box}.flex-fxflex{flex:1 1 0%}.flex-fxflex-responsive{flex:0 1 calc(33.3% - 32px)}.flex-fxflex-lt-md{flex:0 1 calc(50% - 32px)}.flex-fxflex-lt-sm{flex:100%}.flex-fxflex-fill{height:100%;min-height:100%;min-width:100%;width:100%}.flex-gap-5{margin-right:5px}.flex-gap-12{margin-right:12px}.flex-gap-20{margin-right:20px}.contact-form{max-width:500px;margin:auto;padding:40px 40px 30px;box-sizing:border-box}.form-button{margin-top:.33rem;display:block;border-radius:.25rem;height:36px;width:100%;padding:.375rem .75rem}.form-status{height:19px;margin-top:1rem}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29udGFjdC1mb3JtL3NyYy9saWIvY29udGFjdC1mb3JtL2NvbnRhY3QtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbnRhY3QtZm9ybS9zcmMvbGliL2NvbnRhY3QtZm9ybS9jb250YWN0LWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEVBRUwsTUFBTSxFQUNOLGlCQUFpQixFQUNqQixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBbUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBQXFCLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVELE9BQU8sRUFBYyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQTRCM0QsTUFBTSxPQUFPLG9CQUFvQjtJQXNDL0I7UUFyQ0EsZ0JBQVcsR0FBRyxLQUFLLENBQUM7WUFDbEIsa0JBQWtCLEVBQUUsU0FBUztZQUM3QixNQUFNLEVBQUUsTUFBTTtZQUNkLEtBQUssRUFBRSxTQUFTO1NBQ2pCLHVEQUFDLENBQUM7UUFFSCxjQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ2hCLEtBQUssRUFBRSxTQUFTO1lBQ2hCLGtCQUFrQixFQUFFLHdCQUF3QjtZQUM1QyxpQkFBaUIsRUFBRSxZQUFZO1lBQy9C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LE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO2FBQy9CLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2pCLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDckMsQ0FBQyxDQUFDO2FBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2QsQ0FBQzs4R0E5SFUsb0JBQW9CO2tHQUFwQixvQkFBb0Isc3FDQzFDakMseW1CQXVCQSwwNkJEV1EsWUFBWSw4QkFDWixtQkFBbUIsb2JBQ25CLFlBQVkseUdBQ1osb0JBQW9CLCtCQUNwQixPQUFPOzsyRkFJRixvQkFBb0I7a0JBZmhDLFNBQVM7K0JBRUksY0FBYyxpQkFFVCxpQkFBaUIsQ0FBQyxJQUFJLFdBRTVCO3dCQUNMLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsT0FBTztxQkFDVixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExheW91dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgTmdTdHlsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBpbnB1dCxcbiAgT25EZXN0cm95LFxuICBzaWduYWwsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBlZmZlY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnLCBGb3JtbHlNb2R1bGUgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IEZvcm1seU1hdGVyaWFsTW9kdWxlIH0gZnJvbSAnQG5neC1mb3JtbHkvbWF0ZXJpYWwnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW50ZXJmYWNlIEZvcm1WYWx1ZSB7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEZvcm1Db25maWdFbnRyeSB7XG4gIGZpZWxkOiBzdHJpbmc7XG4gIHZhbHVlPzogc3RyaW5nO1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIHR5cGU/OiAnaW5wdXQnIHwgJ3RleHRhcmVhJyB8ICdlbWFpbCcgfCAnbnVtYmVyJztcbn1cblxuQENvbXBvbmVudCh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ2NvbnRhY3QtZm9ybScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbnRhY3QtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi9jb250YWN0LWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIExheW91dE1vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgRm9ybWx5TW9kdWxlLFxuICAgICAgICBGb3JtbHlNYXRlcmlhbE1vZHVsZSxcbiAgICAgICAgTmdTdHlsZVxuICAgIF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQ29udGFjdEZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBidXR0b25TdHlsZSA9IGlucHV0KHtcbiAgICAnYmFja2dyb3VuZC1jb2xvcic6ICcjMzMzMzMzJyxcbiAgICBib3JkZXI6ICdub25lJyxcbiAgICBjb2xvcjogJyNjYzc4MzInXG4gIH0pO1xuXG4gIGZvcm1TdHlsZSA9IGlucHV0KHtcbiAgICBjb2xvcjogJyM0MzdkYTgnLFxuICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogJ3JnYmEoMzQsIDM0LCAzNCwgMC43NSknLFxuICAgICdiYWNrZHJvcC1maWx0ZXInOiAnYmx1cig1MHB4KScsXG4gICAgJ2JveC1zaGFkb3cnOiAnMCAycHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMDc1KSdcbiAgfSk7XG5cbiAgdGV4dFN0eWxlID0gaW5wdXQoeyBjb2xvcjogJyNjYzc4MzInIH0pO1xuXG4gIHNlbmRUZXh0ID0gaW5wdXQoJ1NlbmQnKTtcblxuICBzZW5kU3VjY2Vzc2Z1bFRleHQgPSBpbnB1dCgnRS1NYWlsIHN1Y2Nlc3NmdWxseSBzZW50Jyk7XG5cbiAgc2VuZEVycm9yVGV4dCA9IGlucHV0KCdTZW5kIGVycm9yJyk7XG5cbiAgZm9ybUNvbmZpZyA9IGlucHV0PEZvcm1Db25maWdFbnRyeVtdPihbXG4gICAgeyBmaWVsZDogJ25hbWUnLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHsgZmllbGQ6ICdlbWFpbCcsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgeyBmaWVsZDogJ21lc3NhZ2UnLCByZXF1aXJlZDogdHJ1ZSwgdHlwZTogJ3RleHRhcmVhJyB9XG4gIF0pO1xuXG4gIGFwaUNhbGxiYWNrID0gaW5wdXQucmVxdWlyZWQ8KGZvcm1WYWx1ZTogRm9ybVZhbHVlKSA9PiBPYnNlcnZhYmxlPGJvb2xlYW4+PigpO1xuXG4gIGZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgZmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdID0gW107XG4gIG1vZGVsOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cbiAgZW1haWxTZW50ID0gc2lnbmFsPGJvb2xlYW4gfCBudWxsPihudWxsKTtcblxuICBwcml2YXRlIHVuc3Vic2NyaWJlJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gVXNlIGFuIGVmZmVjdCB0byByZWJ1aWxkIGNvbmZpZyB3aGVuIGZvcm1Db25maWcgY2hhbmdlc1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAvLyBSZWFkIHRoZSBmb3JtQ29uZmlnIHNpZ25hbCB0byBlc3RhYmxpc2ggZGVwZW5kZW5jeVxuICAgICAgdGhpcy5mb3JtQ29uZmlnKCk7XG4gICAgICB0aGlzLmJ1aWxkQ29uZmlnKCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHN1Ym1pdEZvcm1EYXRhKGZvcm1EYXRhOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KSB7XG4gICAgdGhpcy5hcGlDYWxsYmFjaygpKGZvcm1EYXRhKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoc3VjY2VzczogYm9vbGVhbikgPT4ge1xuICAgICAgICAgIHRoaXMuZW1haWxTZW50LnNldChzdWNjZXNzKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDb25maWcoKTogdm9pZCB7XG4gICAgLy8gQ2xlYXIgZXhpc3RpbmcgZmllbGRzIGFuZCBtb2RlbFxuICAgIHRoaXMuZmllbGRzID0gW107XG4gICAgdGhpcy5tb2RlbCA9IHt9O1xuICAgIFxuICAgIHRoaXMuZm9ybUNvbmZpZygpLmZvckVhY2goKGVudHJ5OiBGb3JtQ29uZmlnRW50cnkpID0+IHtcbiAgICAgIGlmIChlbnRyeS52YWx1ZSkge1xuICAgICAgICB0aGlzLm1vZGVsW2VudHJ5LmZpZWxkXSA9IGVudHJ5LnZhbHVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmaWVsZENvbmZpZzogRm9ybWx5RmllbGRDb25maWcgPSB7XG4gICAgICAgIGtleTogZW50cnkuZmllbGQsXG4gICAgICAgIHR5cGU6IGVudHJ5LnR5cGUgPyBlbnRyeS50eXBlIDogJ2lucHV0JyxcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICBsYWJlbDogZW50cnkuZmllbGQudG9Mb2NhbGVVcHBlckNhc2UoKSxcbiAgICAgICAgICBwbGFjZWhvbGRlcjogJ0VudGVyICcgKyBlbnRyeS5maWVsZCxcbiAgICAgICAgICByZXF1aXJlZDogZW50cnkucmVxdWlyZWQsXG4gICAgICAgICAgYXR0cmlidXRlczogeyBzdHlsZTogdGhpcy5mbGF0dGVuU3R5bGUodGhpcy50ZXh0U3R5bGUoKSkgfVxuICAgICAgICB9LFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6XG4gICAgICAgICAgZW50cnkudHlwZSA9PT0gJ3RleHRhcmVhJ1xuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgYXV0b3NpemU6IHRydWUsXG4gICAgICAgICAgICAgICAgbWluUm93czogNSxcbiAgICAgICAgICAgICAgICBtYXhSb3dzOiAxMFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHt9XG4gICAgICB9O1xuXG4gICAgICAvLyBBZGQgZW1haWwgdmFsaWRhdGlvbiBmb3IgZW1haWwgZmllbGRzXG4gICAgICBpZiAoZW50cnkuZmllbGQudG9Mb3dlckNhc2UoKSA9PT0gJ2VtYWlsJykge1xuICAgICAgICBpZiAoZmllbGRDb25maWcucHJvcHMpIHtcbiAgICAgICAgICBmaWVsZENvbmZpZy5wcm9wcy50eXBlID0gJ2VtYWlsJztcbiAgICAgICAgfVxuICAgICAgICBmaWVsZENvbmZpZy52YWxpZGF0b3JzID0ge1xuICAgICAgICAgIGVtYWlsOiB7XG4gICAgICAgICAgICBleHByZXNzaW9uOiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiAhY29udHJvbC52YWx1ZSB8fCAvXlthLXpBLVowLTkuXyUrLV0rQFthLXpBLVowLTkuLV0rXFwuW2EtekEtWl17Mix9JC8udGVzdChjb250cm9sLnZhbHVlKSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzJ1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgLy8gQWRkIHJlcXVpcmVkIHZhbGlkYXRpb24gbWVzc2FnZVxuICAgICAgaWYgKGVudHJ5LnJlcXVpcmVkKSB7XG4gICAgICAgIGZpZWxkQ29uZmlnLnZhbGlkYXRvcnMgPSB7XG4gICAgICAgICAgLi4uZmllbGRDb25maWcudmFsaWRhdG9ycyxcbiAgICAgICAgICByZXF1aXJlZDoge1xuICAgICAgICAgICAgZXhwcmVzc2lvbjogKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4gISFjb250cm9sLnZhbHVlLFxuICAgICAgICAgICAgbWVzc2FnZTogYCR7ZW50cnkuZmllbGR9IGlzIHJlcXVpcmVkYFxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5maWVsZHMucHVzaChmaWVsZENvbmZpZyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGZsYXR0ZW5TdHlsZShzdHlsZU9iamVjdDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHN0eWxlT2JqZWN0KVxuICAgICAgLmZsYXRNYXAoKGVudHJ5KSA9PiB7XG4gICAgICAgIHJldHVybiBgJHtlbnRyeVswXX06ICR7ZW50cnlbMV19O2A7XG4gICAgICB9KVxuICAgICAgLmpvaW4oJycpO1xuICB9XG59XG4iLCI8Zm9ybVxuICBbbmdTdHlsZV09XCJmb3JtU3R5bGUoKVwiXG4gIGNsYXNzPVwiY29udGFjdC1mb3JtIGZsZXgtY29sdW1uIGZsZXgtZnhmbGV4XCJcbiAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgKG5nU3VibWl0KT1cInN1Ym1pdEZvcm1EYXRhKG1vZGVsKVwiXG4+XG4gIDxmb3JtbHktZm9ybSBbZm9ybV09XCJmb3JtXCIgW2ZpZWxkc109XCJmaWVsZHNcIiBbbW9kZWxdPVwibW9kZWxcIj48L2Zvcm1seS1mb3JtPlxuICA8YnV0dG9uXG4gICAgW25nU3R5bGVdPVwiYnV0dG9uU3R5bGUoKVwiXG4gICAgY2xhc3M9XCJmb3JtLWJ1dHRvblwiXG4gICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgW2Rpc2FibGVkXT1cIiFmb3JtLnZhbGlkXCJcbiAgPlxuICAgIHt7IHNlbmRUZXh0KCkgfX1cbiAgPC9idXR0b24+XG4gIDxkaXYgW25nU3R5bGVdPVwidGV4dFN0eWxlKClcIiBjbGFzcz1cImZvcm0tc3RhdHVzXCI+XG4gICAgQGlmIChlbWFpbFNlbnQoKSkge1xuICAgICAge3sgc2VuZFN1Y2Nlc3NmdWxUZXh0KCkgfX1cbiAgICB9IEBlbHNlIGlmIChlbWFpbFNlbnQoKSA9PT0gZmFsc2UpIHtcbiAgICAgIHt7IHNlbmRFcnJvclRleHQoKSB9fVxuICAgIH1cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVodzBsZi1jb250YWN0LWZvcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2NvbnRhY3QtZm9ybS9zcmMvdGVodzBsZi1jb250YWN0LWZvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tehw0lf/contact-form",
|
|
3
|
-
"version": "0.20.
|
|
3
|
+
"version": "0.20.6",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"homepage": "https://github.com/tehw0lf/tehwolf.de.git",
|
|
6
6
|
"repository": {
|
|
@@ -8,16 +8,16 @@
|
|
|
8
8
|
"url": "git+https://github.com/tehw0lf/tehwolf.de.git"
|
|
9
9
|
},
|
|
10
10
|
"peerDependencies": {
|
|
11
|
-
"@angular/animations": "20.
|
|
12
|
-
"@angular/common": "20.
|
|
13
|
-
"@angular/core": "20.
|
|
14
|
-
"@angular/forms": "20.
|
|
15
|
-
"@ngx-formly/core": "
|
|
16
|
-
"@ngx-formly/material": "
|
|
17
|
-
"@tehw0lf/mvc": "
|
|
11
|
+
"@angular/animations": "20.1.6",
|
|
12
|
+
"@angular/common": "20.1.6",
|
|
13
|
+
"@angular/core": "20.1.6",
|
|
14
|
+
"@angular/forms": "20.1.6",
|
|
15
|
+
"@ngx-formly/core": "7.0.0",
|
|
16
|
+
"@ngx-formly/material": "7.0.0",
|
|
17
|
+
"@tehw0lf/mvc": "0.0.7"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"tslib": "
|
|
20
|
+
"tslib": "2.8.1"
|
|
21
21
|
},
|
|
22
22
|
"module": "fesm2022/tehw0lf-contact-form.mjs",
|
|
23
23
|
"typings": "index.d.ts",
|