@tehw0lf/contact-form 0.17.5 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,36 +1,37 @@
|
|
|
1
1
|
import { LayoutModule } from '@angular/cdk/layout';
|
|
2
2
|
import { AsyncPipe, NgStyle } from '@angular/common';
|
|
3
|
-
import { Component,
|
|
3
|
+
import { Component, input, ViewEncapsulation } from '@angular/core';
|
|
4
4
|
import { FormGroup, ReactiveFormsModule } from '@angular/forms';
|
|
5
5
|
import { FormlyModule } from '@ngx-formly/core';
|
|
6
6
|
import { FormlyMaterialModule } from '@ngx-formly/material';
|
|
7
|
-
import { Subject } from 'rxjs';
|
|
8
|
-
import { takeUntil, tap } from 'rxjs/operators';
|
|
7
|
+
import { Subject, takeUntil, tap } from 'rxjs';
|
|
9
8
|
import * as i0 from "@angular/core";
|
|
10
9
|
import * as i1 from "@angular/forms";
|
|
11
10
|
import * as i2 from "@ngx-formly/core";
|
|
12
11
|
export class ContactFormComponent {
|
|
13
12
|
constructor() {
|
|
14
|
-
this.buttonStyle = {
|
|
13
|
+
this.buttonStyle = input({
|
|
15
14
|
'background-color': '#333333',
|
|
16
15
|
border: 'none',
|
|
17
16
|
color: '#cc7832'
|
|
18
|
-
};
|
|
19
|
-
this.formStyle = {
|
|
17
|
+
});
|
|
18
|
+
this.formStyle = input({
|
|
20
19
|
color: '#437da8',
|
|
21
20
|
'background-color': 'rgba(34, 34, 34, 0.75)',
|
|
22
21
|
'backdrop-filter': 'blur(50px)',
|
|
23
22
|
'box-shadow': '0 2px 10px rgba(0, 0, 0, 0.075)'
|
|
24
|
-
};
|
|
25
|
-
this.textStyle = { color: '#cc7832' };
|
|
26
|
-
this.sendText = 'Send';
|
|
27
|
-
this.sendSuccessfulText = 'E-Mail successfully sent';
|
|
28
|
-
this.sendErrorText = 'Send error';
|
|
29
|
-
this.formConfig = [
|
|
23
|
+
});
|
|
24
|
+
this.textStyle = input({ color: '#cc7832' });
|
|
25
|
+
this.sendText = input('Send');
|
|
26
|
+
this.sendSuccessfulText = input('E-Mail successfully sent');
|
|
27
|
+
this.sendErrorText = input('Send error');
|
|
28
|
+
this.formConfig = input([
|
|
30
29
|
{ field: 'name', required: true },
|
|
31
30
|
{ field: 'email', required: true },
|
|
32
31
|
{ field: 'message', required: true, type: 'textarea' }
|
|
33
|
-
];
|
|
32
|
+
]);
|
|
33
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
34
|
+
this.apiCallback = input.required();
|
|
34
35
|
this.form = new FormGroup({});
|
|
35
36
|
this.fields = [];
|
|
36
37
|
this.model = {};
|
|
@@ -47,12 +48,12 @@ export class ContactFormComponent {
|
|
|
47
48
|
this.unsubscribe$.complete();
|
|
48
49
|
}
|
|
49
50
|
submitFormData(formData) {
|
|
50
|
-
this.apiCallback(formData)
|
|
51
|
+
this.apiCallback()(formData)
|
|
51
52
|
.pipe(tap((success) => this.emailSent.next(success)), takeUntil(this.unsubscribe$))
|
|
52
53
|
.subscribe();
|
|
53
54
|
}
|
|
54
55
|
buildConfig() {
|
|
55
|
-
this.formConfig.forEach((entry) => {
|
|
56
|
+
this.formConfig().forEach((entry) => {
|
|
56
57
|
if (entry.value) {
|
|
57
58
|
this.model[entry.field] = entry.value;
|
|
58
59
|
}
|
|
@@ -62,8 +63,8 @@ export class ContactFormComponent {
|
|
|
62
63
|
props: {
|
|
63
64
|
label: entry.field.toLocaleUpperCase(),
|
|
64
65
|
placeholder: 'Enter ' + entry.field,
|
|
65
|
-
required:
|
|
66
|
-
attributes: { style: this.flattenStyle(this.textStyle) }
|
|
66
|
+
required: entry.required,
|
|
67
|
+
attributes: { style: this.flattenStyle(this.textStyle()) }
|
|
67
68
|
},
|
|
68
69
|
templateOptions: entry.type === 'textarea'
|
|
69
70
|
? {
|
|
@@ -82,10 +83,10 @@ export class ContactFormComponent {
|
|
|
82
83
|
})
|
|
83
84
|
.join('');
|
|
84
85
|
}
|
|
85
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
86
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
86
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: ContactFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
87
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.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$ | async) === true) {\n {{ sendSuccessfulText() }}\n } @else if ((emailSent$ | async) === false) {\n {{ sendErrorText() }}\n }\n </div>\n</form>\n", styles: [".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}.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}\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.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "ngmodule", type: FormlyMaterialModule }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
87
88
|
}
|
|
88
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
89
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: ContactFormComponent, decorators: [{
|
|
89
90
|
type: Component,
|
|
90
91
|
args: [{ selector: 'contact-form', encapsulation: ViewEncapsulation.None, standalone: true, imports: [
|
|
91
92
|
LayoutModule,
|
|
@@ -94,22 +95,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
94
95
|
FormlyMaterialModule,
|
|
95
96
|
NgStyle,
|
|
96
97
|
AsyncPipe
|
|
97
|
-
], 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$ | async) === true) {\n {{ sendSuccessfulText }}\n } @else if ((emailSent$ | async) === false) {\n {{ sendErrorText }}\n }\n </div>\n</form>\n", styles: [".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}.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}\n"] }]
|
|
98
|
-
}], ctorParameters: () => []
|
|
99
|
-
type: Input
|
|
100
|
-
}], formStyle: [{
|
|
101
|
-
type: Input
|
|
102
|
-
}], textStyle: [{
|
|
103
|
-
type: Input
|
|
104
|
-
}], sendText: [{
|
|
105
|
-
type: Input
|
|
106
|
-
}], sendSuccessfulText: [{
|
|
107
|
-
type: Input
|
|
108
|
-
}], sendErrorText: [{
|
|
109
|
-
type: Input
|
|
110
|
-
}], formConfig: [{
|
|
111
|
-
type: Input
|
|
112
|
-
}], apiCallback: [{
|
|
113
|
-
type: Input
|
|
114
|
-
}] } });
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29udGFjdC1mb3JtL3NyYy9saWIvY29udGFjdC1mb3JtL2NvbnRhY3QtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbnRhY3QtZm9ybS9zcmMvbGliL2NvbnRhY3QtZm9ybS9jb250YWN0LWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBR0wsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQXFCLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVELE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQTBCaEQsTUFBTSxPQUFPLG9CQUFvQjtJQXdDL0I7UUF2Q1MsZ0JBQVcsR0FBRztZQUNyQixrQkFBa0IsRUFBRSxTQUFTO1lBQzdCLE1BQU0sRUFBRSxNQUFNO1lBQ2QsS0FBSyxFQUFFLFNBQVM7U0FDakIsQ0FBQztRQUVPLGNBQVMsR0FBRztZQUNuQixLQUFLLEVBQUUsU0FBUztZQUNoQixrQkFBa0IsRUFBRSx3QkFBd0I7WUFDNUMsaUJBQWlCLEVBQUUsWUFBWTtZQUMvQixZQUFZLEVBQUUsaUNBQWlD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QUFXLENBQUM7YUFDL0IsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDakIsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUNyQyxDQUFDLENBQUM7YUFDRCxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDZCxDQUFDOzhHQS9GVSxvQkFBb0I7a0dBQXBCLG9CQUFvQixzVEN2Q2pDLHduQkF1QkEsMDZCRFFJLFlBQVksOEJBQ1osbUJBQW1CLG9iQUNuQixZQUFZLDZLQUNaLG9CQUFvQiwrQkFDcEIsT0FBTyxzRUFDUCxTQUFTOzsyRkFHQSxvQkFBb0I7a0JBaEJoQyxTQUFTOytCQUVFLGNBQWMsaUJBRVQsaUJBQWlCLENBQUMsSUFBSSxjQUV6QixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLFlBQVk7d0JBQ1osb0JBQW9CO3dCQUNwQixPQUFPO3dCQUNQLFNBQVM7cUJBQ1Y7d0RBR1EsV0FBVztzQkFBbkIsS0FBSztnQkFNRyxTQUFTO3NCQUFqQixLQUFLO2dCQU9HLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQU9HLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMYXlvdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdTdHlsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZywgRm9ybWx5TW9kdWxlIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBGb3JtbHlNYXRlcmlhbE1vZHVsZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L21hdGVyaWFsJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbnRlcmZhY2UgRm9ybUNvbmZpZ0VudHJ5IHtcbiAgZmllbGQ6IHN0cmluZztcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgdmFsdWU/OiBhbnk7XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgdHlwZT86IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnY29udGFjdC1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbnRhY3QtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHN0eWxlVXJsczogWycuL2NvbnRhY3QtZm9ybS5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTGF5b3V0TW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgRm9ybWx5TW9kdWxlLFxuICAgIEZvcm1seU1hdGVyaWFsTW9kdWxlLFxuICAgIE5nU3R5bGUsXG4gICAgQXN5bmNQaXBlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQ29udGFjdEZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGJ1dHRvblN0eWxlID0ge1xuICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogJyMzMzMzMzMnLFxuICAgIGJvcmRlcjogJ25vbmUnLFxuICAgIGNvbG9yOiAnI2NjNzgzMidcbiAgfTtcblxuICBASW5wdXQoKSBmb3JtU3R5bGUgPSB7XG4gICAgY29sb3I6ICcjNDM3ZGE4JyxcbiAgICAnYmFja2dyb3VuZC1jb2xvcic6ICdyZ2JhKDM0LCAzNCwgMzQsIDAuNzUpJyxcbiAgICAnYmFja2Ryb3AtZmlsdGVyJzogJ2JsdXIoNTBweCknLFxuICAgICdib3gtc2hhZG93JzogJzAgMnB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjA3NSknXG4gIH07XG5cbiAgQElucHV0KCkgdGV4dFN0eWxlID0geyBjb2xvcjogJyNjYzc4MzInIH07XG5cbiAgQElucHV0KCkgc2VuZFRleHQgPSAnU2VuZCc7XG5cbiAgQElucHV0KCkgc2VuZFN1Y2Nlc3NmdWxUZXh0ID0gJ0UtTWFpbCBzdWNjZXNzZnVsbHkgc2VudCc7XG5cbiAgQElucHV0KCkgc2VuZEVycm9yVGV4dCA9ICdTZW5kIGVycm9yJztcblxuICBASW5wdXQoKSBmb3JtQ29uZmlnOiBGb3JtQ29uZmlnRW50cnlbXSA9IFtcbiAgICB7IGZpZWxkOiAnbmFtZScsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgeyBmaWVsZDogJ2VtYWlsJywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB7IGZpZWxkOiAnbWVzc2FnZScsIHJlcXVpcmVkOiB0cnVlLCB0eXBlOiAndGV4dGFyZWEnIH1cbiAgXTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBASW5wdXQoKSBhcGlDYWxsYmFjayE6IChmb3JtVmFsdWU6IGFueSkgPT4gT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICBmb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gIGZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSA9IFtdO1xuICBtb2RlbDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuXG4gIGVtYWlsU2VudDogU3ViamVjdDxib29sZWFuIHwgbnVsbD4gPSBuZXcgU3ViamVjdCgpO1xuICBlbWFpbFNlbnQkID0gdGhpcy5lbWFpbFNlbnQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgcHJpdmF0ZSB1bnN1YnNjcmliZSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuZW1haWxTZW50Lm5leHQobnVsbCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmJ1aWxkQ29uZmlnKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHN1Ym1pdEZvcm1EYXRhKGZvcm1EYXRhOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KSB7XG4gICAgdGhpcy5hcGlDYWxsYmFjayhmb3JtRGF0YSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHRoaXMuZW1haWxTZW50Lm5leHQoc3VjY2VzcykpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQ29uZmlnKCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUNvbmZpZy5mb3JFYWNoKChlbnRyeTogRm9ybUNvbmZpZ0VudHJ5KSA9PiB7XG4gICAgICBpZiAoZW50cnkudmFsdWUpIHtcbiAgICAgICAgdGhpcy5tb2RlbFtlbnRyeS5maWVsZF0gPSBlbnRyeS52YWx1ZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5maWVsZHMucHVzaCh7XG4gICAgICAgIGtleTogZW50cnkuZmllbGQsXG4gICAgICAgIHR5cGU6IGVudHJ5LnR5cGUgPyBlbnRyeS50eXBlIDogJ2lucHV0JyxcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICBsYWJlbDogZW50cnkuZmllbGQudG9Mb2NhbGVVcHBlckNhc2UoKSxcbiAgICAgICAgICBwbGFjZWhvbGRlcjogJ0VudGVyICcgKyBlbnRyeS5maWVsZCxcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICBhdHRyaWJ1dGVzOiB7IHN0eWxlOiB0aGlzLmZsYXR0ZW5TdHlsZSh0aGlzLnRleHRTdHlsZSkgfVxuICAgICAgICB9LFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6XG4gICAgICAgICAgZW50cnkudHlwZSA9PT0gJ3RleHRhcmVhJ1xuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgYXV0b3NpemU6IHRydWUsXG4gICAgICAgICAgICAgICAgbWluUm93czogNSxcbiAgICAgICAgICAgICAgICBtYXhSb3dzOiAxMFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHt9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZmxhdHRlblN0eWxlKHN0eWxlT2JqZWN0OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KTogc3RyaW5nIHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoc3R5bGVPYmplY3QpXG4gICAgICAuZmxhdE1hcCgoZW50cnkpID0+IHtcbiAgICAgICAgcmV0dXJuIGAke2VudHJ5WzBdfTogJHtlbnRyeVsxXX07YDtcbiAgICAgIH0pXG4gICAgICAuam9pbignJyk7XG4gIH1cbn1cbiIsIjxmb3JtXG4gIFtuZ1N0eWxlXT1cImZvcm1TdHlsZVwiXG4gIGNsYXNzPVwiY29udGFjdC1mb3JtIGZsZXgtY29sdW1uIGZsZXgtZnhmbGV4XCJcbiAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgKG5nU3VibWl0KT1cInN1Ym1pdEZvcm1EYXRhKG1vZGVsKVwiXG4+XG4gIDxmb3JtbHktZm9ybSBbZm9ybV09XCJmb3JtXCIgW2ZpZWxkc109XCJmaWVsZHNcIiBbbW9kZWxdPVwibW9kZWxcIj48L2Zvcm1seS1mb3JtPlxuICA8YnV0dG9uXG4gICAgW25nU3R5bGVdPVwiYnV0dG9uU3R5bGVcIlxuICAgIGNsYXNzPVwiZm9ybS1idXR0b25cIlxuICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgIFtkaXNhYmxlZF09XCIhZm9ybS52YWxpZFwiXG4gID5cbiAgICB7eyBzZW5kVGV4dCB9fVxuICA8L2J1dHRvbj5cbiAgPGRpdiBbbmdTdHlsZV09XCJ0ZXh0U3R5bGVcIiBjbGFzcz1cImZvcm0tc3RhdHVzXCI+XG4gICAgQGlmICgoZW1haWxTZW50JCB8IGFzeW5jKSA9PT0gdHJ1ZSkge1xuICAgICAge3sgc2VuZFN1Y2Nlc3NmdWxUZXh0IH19XG4gICAgfSBAZWxzZSBpZiAoKGVtYWlsU2VudCQgfCBhc3luYykgPT09IGZhbHNlKSB7XG4gICAgICB7eyBzZW5kRXJyb3JUZXh0IH19XG4gICAgfVxuICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
|
|
98
|
+
], 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$ | async) === true) {\n {{ sendSuccessfulText() }}\n } @else if ((emailSent$ | async) === false) {\n {{ sendErrorText() }}\n }\n </div>\n</form>\n", styles: [".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}.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}\n"] }]
|
|
99
|
+
}], ctorParameters: () => [] });
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29udGFjdC1mb3JtL3NyYy9saWIvY29udGFjdC1mb3JtL2NvbnRhY3QtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbnRhY3QtZm9ybS9zcmMvbGliL2NvbnRhY3QtZm9ybS9jb250YWN0LWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBR0wsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQXFCLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVELE9BQU8sRUFBYyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQTBCM0QsTUFBTSxPQUFPLG9CQUFvQjtJQXdDL0I7UUF2Q0EsZ0JBQVcsR0FBRyxLQUFLLENBQUM7WUFDbEIsa0JBQWtCLEVBQUUsU0FBUztZQUM3QixNQUFNLEVBQUUsTUFBTTtZQUNkLEtBQUssRUFBRSxTQUFTO1NBQ2pCLENBQUMsQ0FBQztRQUVILGNBQVMsR0FBRyxLQUFLLENBQUM7WUFDaEIsS0FBSyxFQUFFLFNBQVM7WUFDaEIsa0JBQWtCLEVBQUUsd0JBQXdCO1lBQzVDLGlCQUFpQixFQUFFLFlBQVk7WUFDL0IsWUFBWSxFQUFFLGlDQUFpQztTQUNoRCxD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QUUsQ0FBQzt3QkFDVixPQUFPLEVBQUUsRUFBRTtxQkFDWjtvQkFDSCxDQUFDLENBQUMsRUFBRTthQUNULENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFlBQVksQ0FBQyxXQUFzQztRQUN6RCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO2FBQy9CLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2pCLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDckMsQ0FBQyxDQUFDO2FBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2QsQ0FBQzs4R0EvRlUsb0JBQW9CO2tHQUFwQixvQkFBb0Isc3FDQ3RDakMsb29CQXVCQSwwNkJET0ksWUFBWSw4QkFDWixtQkFBbUIsb2JBQ25CLFlBQVksNktBQ1osb0JBQW9CLCtCQUNwQixPQUFPLHNFQUNQLFNBQVM7OzJGQUdBLG9CQUFvQjtrQkFoQmhDLFNBQVM7K0JBRUUsY0FBYyxpQkFFVCxpQkFBaUIsQ0FBQyxJQUFJLGNBRXpCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixvQkFBb0I7d0JBQ3BCLE9BQU87d0JBQ1AsU0FBUztxQkFDViIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExheW91dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ1N0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgaW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnLCBGb3JtbHlNb2R1bGUgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IEZvcm1seU1hdGVyaWFsTW9kdWxlIH0gZnJvbSAnQG5neC1mb3JtbHkvbWF0ZXJpYWwnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW50ZXJmYWNlIEZvcm1Db25maWdFbnRyeSB7XG4gIGZpZWxkOiBzdHJpbmc7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHZhbHVlPzogYW55O1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIHR5cGU/OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2NvbnRhY3QtZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb250YWN0LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdHlsZVVybHM6IFsnLi9jb250YWN0LWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIExheW91dE1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEZvcm1seU1vZHVsZSxcbiAgICBGb3JtbHlNYXRlcmlhbE1vZHVsZSxcbiAgICBOZ1N0eWxlLFxuICAgIEFzeW5jUGlwZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIENvbnRhY3RGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBidXR0b25TdHlsZSA9IGlucHV0KHtcbiAgICAnYmFja2dyb3VuZC1jb2xvcic6ICcjMzMzMzMzJyxcbiAgICBib3JkZXI6ICdub25lJyxcbiAgICBjb2xvcjogJyNjYzc4MzInXG4gIH0pO1xuXG4gIGZvcm1TdHlsZSA9IGlucHV0KHtcbiAgICBjb2xvcjogJyM0MzdkYTgnLFxuICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogJ3JnYmEoMzQsIDM0LCAzNCwgMC43NSknLFxuICAgICdiYWNrZHJvcC1maWx0ZXInOiAnYmx1cig1MHB4KScsXG4gICAgJ2JveC1zaGFkb3cnOiAnMCAycHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMDc1KSdcbiAgfSk7XG5cbiAgdGV4dFN0eWxlID0gaW5wdXQoeyBjb2xvcjogJyNjYzc4MzInIH0pO1xuXG4gIHNlbmRUZXh0ID0gaW5wdXQoJ1NlbmQnKTtcblxuICBzZW5kU3VjY2Vzc2Z1bFRleHQgPSBpbnB1dCgnRS1NYWlsIHN1Y2Nlc3NmdWxseSBzZW50Jyk7XG5cbiAgc2VuZEVycm9yVGV4dCA9IGlucHV0KCdTZW5kIGVycm9yJyk7XG5cbiAgZm9ybUNvbmZpZyA9IGlucHV0PEZvcm1Db25maWdFbnRyeVtdPihbXG4gICAgeyBmaWVsZDogJ25hbWUnLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIHsgZmllbGQ6ICdlbWFpbCcsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgeyBmaWVsZDogJ21lc3NhZ2UnLCByZXF1aXJlZDogdHJ1ZSwgdHlwZTogJ3RleHRhcmVhJyB9XG4gIF0pO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIGFwaUNhbGxiYWNrID0gaW5wdXQucmVxdWlyZWQ8KGZvcm1WYWx1ZTogYW55KSA9PiBPYnNlcnZhYmxlPGJvb2xlYW4+PigpO1xuXG4gIGZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgZmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdID0gW107XG4gIG1vZGVsOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cbiAgZW1haWxTZW50OiBTdWJqZWN0PGJvb2xlYW4gfCBudWxsPiA9IG5ldyBTdWJqZWN0KCk7XG4gIGVtYWlsU2VudCQgPSB0aGlzLmVtYWlsU2VudC5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIHVuc3Vic2NyaWJlJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5lbWFpbFNlbnQubmV4dChudWxsKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYnVpbGRDb25maWcoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgc3VibWl0Rm9ybURhdGEoZm9ybURhdGE6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0pIHtcbiAgICB0aGlzLmFwaUNhbGxiYWNrKCkoZm9ybURhdGEpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChzdWNjZXNzOiBib29sZWFuKSA9PiB0aGlzLmVtYWlsU2VudC5uZXh0KHN1Y2Nlc3MpKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZENvbmZpZygpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1Db25maWcoKS5mb3JFYWNoKChlbnRyeTogRm9ybUNvbmZpZ0VudHJ5KSA9PiB7XG4gICAgICBpZiAoZW50cnkudmFsdWUpIHtcbiAgICAgICAgdGhpcy5tb2RlbFtlbnRyeS5maWVsZF0gPSBlbnRyeS52YWx1ZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5maWVsZHMucHVzaCh7XG4gICAgICAgIGtleTogZW50cnkuZmllbGQsXG4gICAgICAgIHR5cGU6IGVudHJ5LnR5cGUgPyBlbnRyeS50eXBlIDogJ2lucHV0JyxcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICBsYWJlbDogZW50cnkuZmllbGQudG9Mb2NhbGVVcHBlckNhc2UoKSxcbiAgICAgICAgICBwbGFjZWhvbGRlcjogJ0VudGVyICcgKyBlbnRyeS5maWVsZCxcbiAgICAgICAgICByZXF1aXJlZDogZW50cnkucmVxdWlyZWQsXG4gICAgICAgICAgYXR0cmlidXRlczogeyBzdHlsZTogdGhpcy5mbGF0dGVuU3R5bGUodGhpcy50ZXh0U3R5bGUoKSkgfVxuICAgICAgICB9LFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6XG4gICAgICAgICAgZW50cnkudHlwZSA9PT0gJ3RleHRhcmVhJ1xuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgYXV0b3NpemU6IHRydWUsXG4gICAgICAgICAgICAgICAgbWluUm93czogNSxcbiAgICAgICAgICAgICAgICBtYXhSb3dzOiAxMFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHt9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZmxhdHRlblN0eWxlKHN0eWxlT2JqZWN0OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KTogc3RyaW5nIHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoc3R5bGVPYmplY3QpXG4gICAgICAuZmxhdE1hcCgoZW50cnkpID0+IHtcbiAgICAgICAgcmV0dXJuIGAke2VudHJ5WzBdfTogJHtlbnRyeVsxXX07YDtcbiAgICAgIH0pXG4gICAgICAuam9pbignJyk7XG4gIH1cbn1cbiIsIjxmb3JtXG4gIFtuZ1N0eWxlXT1cImZvcm1TdHlsZSgpXCJcbiAgY2xhc3M9XCJjb250YWN0LWZvcm0gZmxleC1jb2x1bW4gZmxleC1meGZsZXhcIlxuICBbZm9ybUdyb3VwXT1cImZvcm1cIlxuICAobmdTdWJtaXQpPVwic3VibWl0Rm9ybURhdGEobW9kZWwpXCJcbj5cbiAgPGZvcm1seS1mb3JtIFtmb3JtXT1cImZvcm1cIiBbZmllbGRzXT1cImZpZWxkc1wiIFttb2RlbF09XCJtb2RlbFwiPjwvZm9ybWx5LWZvcm0+XG4gIDxidXR0b25cbiAgICBbbmdTdHlsZV09XCJidXR0b25TdHlsZSgpXCJcbiAgICBjbGFzcz1cImZvcm0tYnV0dG9uXCJcbiAgICB0eXBlPVwic3VibWl0XCJcbiAgICBbZGlzYWJsZWRdPVwiIWZvcm0udmFsaWRcIlxuICA+XG4gICAge3sgc2VuZFRleHQoKSB9fVxuICA8L2J1dHRvbj5cbiAgPGRpdiBbbmdTdHlsZV09XCJ0ZXh0U3R5bGUoKVwiIGNsYXNzPVwiZm9ybS1zdGF0dXNcIj5cbiAgICBAaWYgKChlbWFpbFNlbnQkIHwgYXN5bmMpID09PSB0cnVlKSB7XG4gICAgICB7eyBzZW5kU3VjY2Vzc2Z1bFRleHQoKSB9fVxuICAgIH0gQGVsc2UgaWYgKChlbWFpbFNlbnQkIHwgYXN5bmMpID09PSBmYWxzZSkge1xuICAgICAge3sgc2VuZEVycm9yVGV4dCgpIH19XG4gICAgfVxuICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
|
|
@@ -1,37 +1,38 @@
|
|
|
1
1
|
import { LayoutModule } from '@angular/cdk/layout';
|
|
2
2
|
import { NgStyle, AsyncPipe } from '@angular/common';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { Component, ViewEncapsulation
|
|
4
|
+
import { input, Component, ViewEncapsulation } from '@angular/core';
|
|
5
5
|
import * as i1 from '@angular/forms';
|
|
6
6
|
import { FormGroup, ReactiveFormsModule } from '@angular/forms';
|
|
7
7
|
import * as i2 from '@ngx-formly/core';
|
|
8
8
|
import { FormlyModule } from '@ngx-formly/core';
|
|
9
9
|
import { FormlyMaterialModule } from '@ngx-formly/material';
|
|
10
|
-
import { Subject } from 'rxjs';
|
|
11
|
-
import { tap, takeUntil } from 'rxjs/operators';
|
|
10
|
+
import { Subject, tap, takeUntil } from 'rxjs';
|
|
12
11
|
|
|
13
12
|
class ContactFormComponent {
|
|
14
13
|
constructor() {
|
|
15
|
-
this.buttonStyle = {
|
|
14
|
+
this.buttonStyle = input({
|
|
16
15
|
'background-color': '#333333',
|
|
17
16
|
border: 'none',
|
|
18
17
|
color: '#cc7832'
|
|
19
|
-
};
|
|
20
|
-
this.formStyle = {
|
|
18
|
+
});
|
|
19
|
+
this.formStyle = input({
|
|
21
20
|
color: '#437da8',
|
|
22
21
|
'background-color': 'rgba(34, 34, 34, 0.75)',
|
|
23
22
|
'backdrop-filter': 'blur(50px)',
|
|
24
23
|
'box-shadow': '0 2px 10px rgba(0, 0, 0, 0.075)'
|
|
25
|
-
};
|
|
26
|
-
this.textStyle = { color: '#cc7832' };
|
|
27
|
-
this.sendText = 'Send';
|
|
28
|
-
this.sendSuccessfulText = 'E-Mail successfully sent';
|
|
29
|
-
this.sendErrorText = 'Send error';
|
|
30
|
-
this.formConfig = [
|
|
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');
|
|
29
|
+
this.formConfig = input([
|
|
31
30
|
{ field: 'name', required: true },
|
|
32
31
|
{ field: 'email', required: true },
|
|
33
32
|
{ field: 'message', required: true, type: 'textarea' }
|
|
34
|
-
];
|
|
33
|
+
]);
|
|
34
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
35
|
+
this.apiCallback = input.required();
|
|
35
36
|
this.form = new FormGroup({});
|
|
36
37
|
this.fields = [];
|
|
37
38
|
this.model = {};
|
|
@@ -48,12 +49,12 @@ class ContactFormComponent {
|
|
|
48
49
|
this.unsubscribe$.complete();
|
|
49
50
|
}
|
|
50
51
|
submitFormData(formData) {
|
|
51
|
-
this.apiCallback(formData)
|
|
52
|
+
this.apiCallback()(formData)
|
|
52
53
|
.pipe(tap((success) => this.emailSent.next(success)), takeUntil(this.unsubscribe$))
|
|
53
54
|
.subscribe();
|
|
54
55
|
}
|
|
55
56
|
buildConfig() {
|
|
56
|
-
this.formConfig.forEach((entry) => {
|
|
57
|
+
this.formConfig().forEach((entry) => {
|
|
57
58
|
if (entry.value) {
|
|
58
59
|
this.model[entry.field] = entry.value;
|
|
59
60
|
}
|
|
@@ -63,8 +64,8 @@ class ContactFormComponent {
|
|
|
63
64
|
props: {
|
|
64
65
|
label: entry.field.toLocaleUpperCase(),
|
|
65
66
|
placeholder: 'Enter ' + entry.field,
|
|
66
|
-
required:
|
|
67
|
-
attributes: { style: this.flattenStyle(this.textStyle) }
|
|
67
|
+
required: entry.required,
|
|
68
|
+
attributes: { style: this.flattenStyle(this.textStyle()) }
|
|
68
69
|
},
|
|
69
70
|
templateOptions: entry.type === 'textarea'
|
|
70
71
|
? {
|
|
@@ -83,10 +84,10 @@ class ContactFormComponent {
|
|
|
83
84
|
})
|
|
84
85
|
.join('');
|
|
85
86
|
}
|
|
86
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
87
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
87
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: ContactFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
88
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.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$ | async) === true) {\n {{ sendSuccessfulText() }}\n } @else if ((emailSent$ | async) === false) {\n {{ sendErrorText() }}\n }\n </div>\n</form>\n", styles: [".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}.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}\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.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "ngmodule", type: FormlyMaterialModule }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
88
89
|
}
|
|
89
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
90
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: ContactFormComponent, decorators: [{
|
|
90
91
|
type: Component,
|
|
91
92
|
args: [{ selector: 'contact-form', encapsulation: ViewEncapsulation.None, standalone: true, imports: [
|
|
92
93
|
LayoutModule,
|
|
@@ -95,24 +96,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
95
96
|
FormlyMaterialModule,
|
|
96
97
|
NgStyle,
|
|
97
98
|
AsyncPipe
|
|
98
|
-
], 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$ | async) === true) {\n {{ sendSuccessfulText }}\n } @else if ((emailSent$ | async) === false) {\n {{ sendErrorText }}\n }\n </div>\n</form>\n", styles: [".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}.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}\n"] }]
|
|
99
|
-
}], ctorParameters: () => []
|
|
100
|
-
type: Input
|
|
101
|
-
}], formStyle: [{
|
|
102
|
-
type: Input
|
|
103
|
-
}], textStyle: [{
|
|
104
|
-
type: Input
|
|
105
|
-
}], sendText: [{
|
|
106
|
-
type: Input
|
|
107
|
-
}], sendSuccessfulText: [{
|
|
108
|
-
type: Input
|
|
109
|
-
}], sendErrorText: [{
|
|
110
|
-
type: Input
|
|
111
|
-
}], formConfig: [{
|
|
112
|
-
type: Input
|
|
113
|
-
}], apiCallback: [{
|
|
114
|
-
type: Input
|
|
115
|
-
}] } });
|
|
99
|
+
], 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$ | async) === true) {\n {{ sendSuccessfulText() }}\n } @else if ((emailSent$ | async) === false) {\n {{ sendErrorText() }}\n }\n </div>\n</form>\n", styles: [".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}.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}\n"] }]
|
|
100
|
+
}], ctorParameters: () => [] });
|
|
116
101
|
|
|
117
102
|
/**
|
|
118
103
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tehw0lf-contact-form.mjs","sources":["../../../../libs/contact-form/src/lib/contact-form/contact-form.component.ts","../../../../libs/contact-form/src/lib/contact-form/contact-form.component.html","../../../../libs/contact-form/src/tehw0lf-contact-form.ts"],"sourcesContent":["import { LayoutModule } from '@angular/cdk/layout';\nimport { AsyncPipe, NgStyle } from '@angular/common';\nimport {\n Component,\n
|
|
1
|
+
{"version":3,"file":"tehw0lf-contact-form.mjs","sources":["../../../../libs/contact-form/src/lib/contact-form/contact-form.component.ts","../../../../libs/contact-form/src/lib/contact-form/contact-form.component.html","../../../../libs/contact-form/src/tehw0lf-contact-form.ts"],"sourcesContent":["import { LayoutModule } from '@angular/cdk/layout';\nimport { AsyncPipe, NgStyle } from '@angular/common';\nimport {\n Component,\n input,\n OnDestroy,\n OnInit,\n ViewEncapsulation\n} from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { FormlyFieldConfig, FormlyModule } from '@ngx-formly/core';\nimport { FormlyMaterialModule } from '@ngx-formly/material';\nimport { Observable, Subject, takeUntil, tap } from 'rxjs';\n\ninterface FormConfigEntry {\n field: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value?: any;\n required?: boolean;\n type?: string;\n}\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'contact-form',\n templateUrl: './contact-form.component.html',\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./contact-form.component.scss'],\n standalone: true,\n imports: [\n LayoutModule,\n ReactiveFormsModule,\n FormlyModule,\n FormlyMaterialModule,\n NgStyle,\n AsyncPipe\n ]\n})\nexport class ContactFormComponent implements OnInit, OnDestroy {\n buttonStyle = input({\n 'background-color': '#333333',\n border: 'none',\n color: '#cc7832'\n });\n\n 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\n textStyle = input({ color: '#cc7832' });\n\n sendText = input('Send');\n\n sendSuccessfulText = input('E-Mail successfully sent');\n\n sendErrorText = input('Send error');\n\n formConfig = input<FormConfigEntry[]>([\n { field: 'name', required: true },\n { field: 'email', required: true },\n { field: 'message', required: true, type: 'textarea' }\n ]);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n apiCallback = input.required<(formValue: any) => Observable<boolean>>();\n\n form = new FormGroup({});\n fields: FormlyFieldConfig[] = [];\n model: { [key: string]: string } = {};\n\n emailSent: Subject<boolean | null> = new Subject();\n emailSent$ = this.emailSent.asObservable();\n\n private unsubscribe$: Subject<void> = new Subject();\n\n constructor() {\n this.emailSent.next(null);\n }\n\n ngOnInit(): void {\n this.buildConfig();\n }\n\n ngOnDestroy(): void {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n submitFormData(formData: { [key: string]: string }) {\n this.apiCallback()(formData)\n .pipe(\n tap((success: boolean) => this.emailSent.next(success)),\n takeUntil(this.unsubscribe$)\n )\n .subscribe();\n }\n\n private buildConfig(): void {\n this.formConfig().forEach((entry: FormConfigEntry) => {\n if (entry.value) {\n this.model[entry.field] = entry.value;\n }\n\n this.fields.push({\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:\n entry.type === 'textarea'\n ? {\n autosize: true,\n minRows: 5,\n maxRows: 10\n }\n : {}\n });\n });\n }\n\n private flattenStyle(styleObject: { [key: string]: string }): string {\n return Object.entries(styleObject)\n .flatMap((entry) => {\n return `${entry[0]}: ${entry[1]};`;\n })\n .join('');\n }\n}\n","<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$ | async) === true) {\n {{ sendSuccessfulText() }}\n } @else if ((emailSent$ | async) === false) {\n {{ sendErrorText() }}\n }\n </div>\n</form>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -10,25 +10,25 @@ interface FormConfigEntry {
|
|
|
10
10
|
type?: string;
|
|
11
11
|
}
|
|
12
12
|
export declare class ContactFormComponent implements OnInit, OnDestroy {
|
|
13
|
-
buttonStyle: {
|
|
13
|
+
buttonStyle: import("@angular/core").InputSignal<{
|
|
14
14
|
'background-color': string;
|
|
15
15
|
border: string;
|
|
16
16
|
color: string;
|
|
17
|
-
}
|
|
18
|
-
formStyle: {
|
|
17
|
+
}>;
|
|
18
|
+
formStyle: import("@angular/core").InputSignal<{
|
|
19
19
|
color: string;
|
|
20
20
|
'background-color': string;
|
|
21
21
|
'backdrop-filter': string;
|
|
22
22
|
'box-shadow': string;
|
|
23
|
-
}
|
|
24
|
-
textStyle: {
|
|
23
|
+
}>;
|
|
24
|
+
textStyle: import("@angular/core").InputSignal<{
|
|
25
25
|
color: string;
|
|
26
|
-
}
|
|
27
|
-
sendText: string
|
|
28
|
-
sendSuccessfulText: string
|
|
29
|
-
sendErrorText: string
|
|
30
|
-
formConfig: FormConfigEntry[]
|
|
31
|
-
apiCallback: (formValue: any) => Observable<boolean
|
|
26
|
+
}>;
|
|
27
|
+
sendText: import("@angular/core").InputSignal<string>;
|
|
28
|
+
sendSuccessfulText: import("@angular/core").InputSignal<string>;
|
|
29
|
+
sendErrorText: import("@angular/core").InputSignal<string>;
|
|
30
|
+
formConfig: import("@angular/core").InputSignal<FormConfigEntry[]>;
|
|
31
|
+
apiCallback: import("@angular/core").InputSignal<(formValue: any) => Observable<boolean>>;
|
|
32
32
|
form: FormGroup<{}>;
|
|
33
33
|
fields: FormlyFieldConfig[];
|
|
34
34
|
model: {
|
|
@@ -46,6 +46,6 @@ export declare class ContactFormComponent implements OnInit, OnDestroy {
|
|
|
46
46
|
private buildConfig;
|
|
47
47
|
private flattenStyle;
|
|
48
48
|
static ɵfac: i0.ɵɵFactoryDeclaration<ContactFormComponent, never>;
|
|
49
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ContactFormComponent, "contact-form", never, { "buttonStyle": { "alias": "buttonStyle"; "required": false; }; "formStyle": { "alias": "formStyle"; "required": false; }; "textStyle": { "alias": "textStyle"; "required": false; }; "sendText": { "alias": "sendText"; "required": false; }; "sendSuccessfulText": { "alias": "sendSuccessfulText"; "required": false; }; "sendErrorText": { "alias": "sendErrorText"; "required": false; }; "formConfig": { "alias": "formConfig"; "required": false; }; "apiCallback": { "alias": "apiCallback"; "required":
|
|
49
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ContactFormComponent, "contact-form", never, { "buttonStyle": { "alias": "buttonStyle"; "required": false; "isSignal": true; }; "formStyle": { "alias": "formStyle"; "required": false; "isSignal": true; }; "textStyle": { "alias": "textStyle"; "required": false; "isSignal": true; }; "sendText": { "alias": "sendText"; "required": false; "isSignal": true; }; "sendSuccessfulText": { "alias": "sendSuccessfulText"; "required": false; "isSignal": true; }; "sendErrorText": { "alias": "sendErrorText"; "required": false; "isSignal": true; }; "formConfig": { "alias": "formConfig"; "required": false; "isSignal": true; }; "apiCallback": { "alias": "apiCallback"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
50
50
|
}
|
|
51
51
|
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tehw0lf/contact-form",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.18.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"homepage": "https://github.com/tehw0lf/tehwolf.de.git",
|
|
6
6
|
"repository": {
|
|
@@ -8,12 +8,12 @@
|
|
|
8
8
|
"url": "https://github.com/tehw0lf/tehwolf.de.git"
|
|
9
9
|
},
|
|
10
10
|
"peerDependencies": {
|
|
11
|
-
"@angular/animations": "
|
|
12
|
-
"@angular/common": "
|
|
13
|
-
"@angular/core": "
|
|
14
|
-
"@angular/forms": "
|
|
15
|
-
"@ngx-formly/core": "^6.3.
|
|
16
|
-
"@ngx-formly/material": "^6.3.
|
|
11
|
+
"@angular/animations": "18.2.3",
|
|
12
|
+
"@angular/common": "18.2.3",
|
|
13
|
+
"@angular/core": "18.2.3",
|
|
14
|
+
"@angular/forms": "18.2.3",
|
|
15
|
+
"@ngx-formly/core": "^6.3.6",
|
|
16
|
+
"@ngx-formly/material": "^6.3.6",
|
|
17
17
|
"@tehw0lf/mvc": "^0.0.2"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|