@stemy/ngx-dynamic-form 12.0.0 → 13.0.2
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.
- package/esm2020/ngx-dynamic-form/common-types.mjs +97 -0
- package/esm2020/ngx-dynamic-form/components/base/dynamic-base-form-array.component.mjs +85 -0
- package/esm2020/ngx-dynamic-form/components/base/dynamic-base-form-control-container.component.mjs +109 -0
- package/esm2020/ngx-dynamic-form/components/base/dynamic-base-form-group.component.mjs +74 -0
- package/esm2020/ngx-dynamic-form/components/base/dynamic-base-form.component.mjs +158 -0
- package/esm2020/ngx-dynamic-form/directives/async-submit.directive.mjs +111 -0
- package/esm2020/ngx-dynamic-form/ngx-dynamic-form.imports.mjs +22 -0
- package/esm2020/ngx-dynamic-form/ngx-dynamic-form.module.mjs +115 -0
- package/esm2020/ngx-dynamic-form/services/dynamic-form.service.mjs +451 -0
- package/esm2020/ngx-dynamic-form/utils/dynamic-form-array.model.mjs +16 -0
- package/esm2020/ngx-dynamic-form/utils/form-select-subject.mjs +23 -0
- package/esm2020/ngx-dynamic-form/utils/form-subject.mjs +29 -0
- package/esm2020/ngx-dynamic-form/utils/misc.mjs +20 -0
- package/esm2020/ngx-dynamic-form/utils/validators.mjs +56 -0
- package/esm2020/public_api.mjs +14 -0
- package/esm2020/stemy-ngx-dynamic-form.mjs +5 -0
- package/fesm2015/stemy-ngx-dynamic-form.mjs +1341 -0
- package/fesm2015/stemy-ngx-dynamic-form.mjs.map +1 -0
- package/fesm2020/stemy-ngx-dynamic-form.mjs +1313 -0
- package/fesm2020/stemy-ngx-dynamic-form.mjs.map +1 -0
- package/ngx-dynamic-form/common-types.d.ts +42 -262
- package/ngx-dynamic-form/components/base/dynamic-base-form-array.component.d.ts +29 -0
- package/ngx-dynamic-form/components/base/dynamic-base-form-control-container.component.d.ts +41 -0
- package/ngx-dynamic-form/components/base/dynamic-base-form-group.component.d.ts +24 -0
- package/ngx-dynamic-form/components/base/dynamic-base-form.component.d.ts +41 -0
- package/ngx-dynamic-form/directives/async-submit.directive.d.ts +10 -3
- package/ngx-dynamic-form/ngx-dynamic-form.imports.d.ts +10 -0
- package/ngx-dynamic-form/ngx-dynamic-form.module.d.ts +14 -17
- package/ngx-dynamic-form/services/dynamic-form.service.d.ts +47 -10
- package/ngx-dynamic-form/utils/dynamic-form-array.model.d.ts +22 -0
- package/ngx-dynamic-form/utils/form-select-subject.d.ts +6 -0
- package/ngx-dynamic-form/utils/form-subject.d.ts +10 -0
- package/ngx-dynamic-form/utils/misc.d.ts +5 -0
- package/ngx-dynamic-form/utils/validators.d.ts +8 -0
- package/package.json +42 -22
- package/public_api.d.ts +10 -14
- package/stemy-ngx-dynamic-form.d.ts +1 -3
- package/bundles/stemy-ngx-dynamic-form.umd.js +0 -2344
- package/bundles/stemy-ngx-dynamic-form.umd.js.map +0 -1
- package/esm2015/ngx-dynamic-form/common-types.js +0 -590
- package/esm2015/ngx-dynamic-form/components/base/dynamic-form-base.component.js +0 -87
- package/esm2015/ngx-dynamic-form/components/dynamic-form/dynamic-form.component.js +0 -91
- package/esm2015/ngx-dynamic-form/components/dynamic-form-file/dynamic-form-file.component.js +0 -112
- package/esm2015/ngx-dynamic-form/components/dynamic-form-group/dynamic-form-group.component.js +0 -19
- package/esm2015/ngx-dynamic-form/components/dynamic-form-input/dynamic-form-input.component.js +0 -69
- package/esm2015/ngx-dynamic-form/components/dynamic-form-model/dynamic-form-model.component.js +0 -23
- package/esm2015/ngx-dynamic-form/components/dynamic-form-select/dynamic-form-select.component.js +0 -73
- package/esm2015/ngx-dynamic-form/components/dynamic-form-static/dynamic-form-static.component.js +0 -20
- package/esm2015/ngx-dynamic-form/components/dynamic-forms/dynamic-forms.component.js +0 -134
- package/esm2015/ngx-dynamic-form/directives/async-submit.directive.js +0 -89
- package/esm2015/ngx-dynamic-form/directives/dynamic-form-control.directive.js +0 -32
- package/esm2015/ngx-dynamic-form/directives/dynamic-form-group.directive.js +0 -40
- package/esm2015/ngx-dynamic-form/directives/dynamic-form-template.directive.js +0 -38
- package/esm2015/ngx-dynamic-form/ngx-dynamic-form.module.js +0 -83
- package/esm2015/ngx-dynamic-form/services/dynamic-form.service.js +0 -48
- package/esm2015/ngx-dynamic-form/services/form-utilities.js +0 -108
- package/esm2015/ngx-dynamic-form/services/open-api.service.js +0 -130
- package/esm2015/public_api.js +0 -18
- package/esm2015/stemy-ngx-dynamic-form.js +0 -8
- package/fesm2015/stemy-ngx-dynamic-form.js +0 -1731
- package/fesm2015/stemy-ngx-dynamic-form.js.map +0 -1
- package/ngx-dynamic-form/components/base/dynamic-form-base.component.d.ts +0 -44
- package/ngx-dynamic-form/components/dynamic-form/dynamic-form.component.d.ts +0 -21
- package/ngx-dynamic-form/components/dynamic-form-file/dynamic-form-file.component.d.ts +0 -16
- package/ngx-dynamic-form/components/dynamic-form-group/dynamic-form-group.component.d.ts +0 -6
- package/ngx-dynamic-form/components/dynamic-form-input/dynamic-form-input.component.d.ts +0 -12
- package/ngx-dynamic-form/components/dynamic-form-model/dynamic-form-model.component.d.ts +0 -6
- package/ngx-dynamic-form/components/dynamic-form-select/dynamic-form-select.component.d.ts +0 -9
- package/ngx-dynamic-form/components/dynamic-form-static/dynamic-form-static.component.d.ts +0 -5
- package/ngx-dynamic-form/components/dynamic-forms/dynamic-forms.component.d.ts +0 -26
- package/ngx-dynamic-form/directives/dynamic-form-control.directive.d.ts +0 -12
- package/ngx-dynamic-form/directives/dynamic-form-group.directive.d.ts +0 -14
- package/ngx-dynamic-form/directives/dynamic-form-template.directive.d.ts +0 -16
- package/ngx-dynamic-form/services/form-utilities.d.ts +0 -19
- package/ngx-dynamic-form/services/open-api.service.d.ts +0 -37
- package/stemy-ngx-dynamic-form.metadata.json +0 -1
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Inject, Input, Output, QueryList, ViewChild, ViewChildren } from "@angular/core";
|
|
2
|
+
import { NgForm } from "@angular/forms";
|
|
3
|
+
import { Subscription } from "rxjs";
|
|
4
|
+
import { first } from "rxjs/operators";
|
|
5
|
+
import { DynamicFormComponent, DynamicFormGroupModel, DynamicTemplateDirective } from "@ng-dynamic-forms/core";
|
|
6
|
+
import { EventsService, ObservableUtils } from "@stemy/ngx-utils";
|
|
7
|
+
import { DynamicFormService } from "../../services/dynamic-form.service";
|
|
8
|
+
import { collectPathAble } from "../../utils/misc";
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@ng-dynamic-forms/core";
|
|
11
|
+
import * as i2 from "../../services/dynamic-form.service";
|
|
12
|
+
import * as i3 from "@stemy/ngx-utils";
|
|
13
|
+
export class DynamicBaseFormComponent extends DynamicFormComponent {
|
|
14
|
+
constructor(formService, events, changeDetectorRef, componentService) {
|
|
15
|
+
super(changeDetectorRef, componentService);
|
|
16
|
+
this.formService = formService;
|
|
17
|
+
this.events = events;
|
|
18
|
+
this.blur = new EventEmitter();
|
|
19
|
+
this.change = new EventEmitter();
|
|
20
|
+
this.focus = new EventEmitter();
|
|
21
|
+
this.onValueChange = new EventEmitter();
|
|
22
|
+
this.onStatusChange = new EventEmitter();
|
|
23
|
+
this.onSubmit = new EventEmitter();
|
|
24
|
+
this.templates = new QueryList();
|
|
25
|
+
this.subscription = new Subscription();
|
|
26
|
+
this.groupSubscription = new Subscription();
|
|
27
|
+
this.labelPrefix = "label";
|
|
28
|
+
}
|
|
29
|
+
get status() {
|
|
30
|
+
return !this.group ? null : this.group.status;
|
|
31
|
+
}
|
|
32
|
+
ngOnChanges(changes) {
|
|
33
|
+
this.groupSubscription.unsubscribe();
|
|
34
|
+
if (this.group) {
|
|
35
|
+
this.groupSubscription = ObservableUtils.multiSubscription(this.group.statusChanges.subscribe(() => {
|
|
36
|
+
this.onStatusChange.emit(this);
|
|
37
|
+
}), this.group.valueChanges.subscribe(() => {
|
|
38
|
+
this.formService.notifyChanges(this.model, this.group, this.model);
|
|
39
|
+
}), this.change.subscribe(ev => {
|
|
40
|
+
this.onValueChange.emit({ ...ev, form: this });
|
|
41
|
+
}));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
ngAfterViewInit() {
|
|
45
|
+
this.subscription = ObservableUtils.multiSubscription(ObservableUtils.subscribe({
|
|
46
|
+
subjects: [this.contentTemplates.changes, this.viewTemplates.changes],
|
|
47
|
+
cb: () => {
|
|
48
|
+
const templates = this.contentTemplates.toArray().concat(this.viewTemplates.toArray());
|
|
49
|
+
this.templates.reset(templates);
|
|
50
|
+
}
|
|
51
|
+
}), this.events.languageChanged.subscribe(() => {
|
|
52
|
+
this.formService.detectChanges(this);
|
|
53
|
+
}), this.ngForm.ngSubmit.subscribe(() => {
|
|
54
|
+
this.onSubmit.emit(this);
|
|
55
|
+
}));
|
|
56
|
+
}
|
|
57
|
+
ngOnDestroy() {
|
|
58
|
+
super.ngOnDestroy();
|
|
59
|
+
this.subscription.unsubscribe();
|
|
60
|
+
this.groupSubscription.unsubscribe();
|
|
61
|
+
}
|
|
62
|
+
insertFormArrayGroup(index, formArray, formArrayModel) {
|
|
63
|
+
this.formService.insertFormArrayGroup(index, formArray, formArrayModel);
|
|
64
|
+
this.changeDetectorRef.detectChanges();
|
|
65
|
+
}
|
|
66
|
+
removeFormArrayGroup(index, formArray, formArrayModel) {
|
|
67
|
+
this.formService.removeFormArrayGroup(index, formArray, formArrayModel);
|
|
68
|
+
this.changeDetectorRef.detectChanges();
|
|
69
|
+
}
|
|
70
|
+
moveFormArrayGroup(index, step, formArray, formArrayModel) {
|
|
71
|
+
this.formService.moveFormArrayGroup(index, step, formArray, formArrayModel);
|
|
72
|
+
this.changeDetectorRef.detectChanges();
|
|
73
|
+
}
|
|
74
|
+
clearFormArray(formArray, formArrayModel) {
|
|
75
|
+
this.formService.clearFormArray(formArray, formArrayModel);
|
|
76
|
+
this.changeDetectorRef.detectChanges();
|
|
77
|
+
}
|
|
78
|
+
getClass(model) {
|
|
79
|
+
const parts = collectPathAble(model, p => p.id);
|
|
80
|
+
if (parts.length == 0)
|
|
81
|
+
return "";
|
|
82
|
+
if (model instanceof DynamicFormGroupModel) {
|
|
83
|
+
return `form-group-${parts.join("-")}`;
|
|
84
|
+
}
|
|
85
|
+
return `form-control-${parts.join("-")}`;
|
|
86
|
+
}
|
|
87
|
+
validate(showErrors = true) {
|
|
88
|
+
if (!this.group)
|
|
89
|
+
return Promise.resolve();
|
|
90
|
+
return new Promise((resolve, reject) => {
|
|
91
|
+
this.group.statusChanges.pipe(first(status => status == "VALID" || status == "INVALID")).subscribe(status => {
|
|
92
|
+
if (showErrors) {
|
|
93
|
+
this.formService.showErrors(this);
|
|
94
|
+
}
|
|
95
|
+
if (status == "VALID") {
|
|
96
|
+
resolve(null);
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
reject(null);
|
|
100
|
+
});
|
|
101
|
+
this.group.updateValueAndValidity();
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
async serialize(validate) {
|
|
105
|
+
if (!this.group)
|
|
106
|
+
return null;
|
|
107
|
+
if (validate) {
|
|
108
|
+
await this.validate();
|
|
109
|
+
}
|
|
110
|
+
return await this.formService.serialize(this.model, this.group);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
DynamicBaseFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: DynamicBaseFormComponent, deps: [{ token: DynamicFormService }, { token: EventsService }, { token: i0.ChangeDetectorRef }, { token: i1.DynamicFormComponentService }], target: i0.ɵɵFactoryTarget.Component });
|
|
114
|
+
DynamicBaseFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: DynamicBaseFormComponent, selector: "dynamic-base-form", inputs: { group: "group", model: "model", layout: "layout", labelPrefix: "labelPrefix" }, outputs: { blur: "blur", change: "change", focus: "focus", onValueChange: "onValueChange", onStatusChange: "onStatusChange", onSubmit: "onSubmit" }, queries: [{ propertyName: "contentTemplates", predicate: DynamicTemplateDirective }], viewQueries: [{ propertyName: "ngForm", first: true, predicate: NgForm, descendants: true }, { propertyName: "viewTemplates", predicate: DynamicTemplateDirective, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "", isInline: true, changeDetection: i0.ChangeDetectionStrategy.Default });
|
|
115
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: DynamicBaseFormComponent, decorators: [{
|
|
116
|
+
type: Component,
|
|
117
|
+
args: [{
|
|
118
|
+
selector: "dynamic-base-form",
|
|
119
|
+
template: "",
|
|
120
|
+
changeDetection: ChangeDetectionStrategy.Default
|
|
121
|
+
}]
|
|
122
|
+
}], ctorParameters: function () { return [{ type: i2.DynamicFormService, decorators: [{
|
|
123
|
+
type: Inject,
|
|
124
|
+
args: [DynamicFormService]
|
|
125
|
+
}] }, { type: i3.EventsService, decorators: [{
|
|
126
|
+
type: Inject,
|
|
127
|
+
args: [EventsService]
|
|
128
|
+
}] }, { type: i0.ChangeDetectorRef }, { type: i1.DynamicFormComponentService }]; }, propDecorators: { group: [{
|
|
129
|
+
type: Input
|
|
130
|
+
}], model: [{
|
|
131
|
+
type: Input
|
|
132
|
+
}], layout: [{
|
|
133
|
+
type: Input
|
|
134
|
+
}], labelPrefix: [{
|
|
135
|
+
type: Input
|
|
136
|
+
}], blur: [{
|
|
137
|
+
type: Output
|
|
138
|
+
}], change: [{
|
|
139
|
+
type: Output
|
|
140
|
+
}], focus: [{
|
|
141
|
+
type: Output
|
|
142
|
+
}], contentTemplates: [{
|
|
143
|
+
type: ContentChildren,
|
|
144
|
+
args: [DynamicTemplateDirective]
|
|
145
|
+
}], viewTemplates: [{
|
|
146
|
+
type: ViewChildren,
|
|
147
|
+
args: [DynamicTemplateDirective]
|
|
148
|
+
}], onValueChange: [{
|
|
149
|
+
type: Output
|
|
150
|
+
}], onStatusChange: [{
|
|
151
|
+
type: Output
|
|
152
|
+
}], onSubmit: [{
|
|
153
|
+
type: Output
|
|
154
|
+
}], ngForm: [{
|
|
155
|
+
type: ViewChild,
|
|
156
|
+
args: [NgForm]
|
|
157
|
+
}] } });
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1iYXNlLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL25neC1keW5hbWljLWZvcm0vY29tcG9uZW50cy9iYXNlL2R5bmFtaWMtYmFzZS1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFFVCxTQUFTLEVBQ1QsWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBdUIsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUVILG9CQUFvQixFQUlwQixxQkFBcUIsRUFHckIsd0JBQXdCLEVBQzNCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFDLGFBQWEsRUFBRSxlQUFlLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUN2RSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7Ozs7O0FBT2pELE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxvQkFBb0I7SUEyQjlELFlBQWlELFdBQStCLEVBQ3BDLE1BQXFCLEVBQ3JELGlCQUFvQyxFQUNwQyxnQkFBNkM7UUFDckQsS0FBSyxDQUFDLGlCQUFpQixFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFKRSxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDcEMsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUk3RCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksWUFBWSxFQUEyQixD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QUFDO1FBQzdCLElBQUksUUFBUSxFQUFFO1lBQ1YsTUFBTSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDekI7UUFDRCxPQUFPLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEUsQ0FBQzs7cUhBM0lRLHdCQUF3QixrQkEyQmIsa0JBQWtCLGFBQ2xCLGFBQWE7eUdBNUJ4Qix3QkFBd0IseVVBV2hCLHdCQUF3QixxRUFXOUIsTUFBTSxtRUFWSCx3QkFBd0IsNEZBZjVCLEVBQUU7MkZBR0gsd0JBQXdCO2tCQUxwQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFFBQVEsRUFBRSxFQUFFO29CQUNaLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxPQUFPO2lCQUNuRDs7MEJBNEJnQixNQUFNOzJCQUFDLGtCQUFrQjs7MEJBQ3pCLE1BQU07MkJBQUMsYUFBYTtzSEExQnhCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUksSUFBSTtzQkFBYixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU07Z0JBRW9DLGdCQUFnQjtzQkFBMUQsZUFBZTt1QkFBQyx3QkFBd0I7Z0JBQ0QsYUFBYTtzQkFBcEQsWUFBWTt1QkFBQyx3QkFBd0I7Z0JBTW5CLGFBQWE7c0JBQS9CLE1BQU07Z0JBQ1ksY0FBYztzQkFBaEMsTUFBTTtnQkFDWSxRQUFRO3NCQUExQixNQUFNO2dCQUdHLE1BQU07c0JBRGYsU0FBUzt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIEFmdGVyVmlld0luaXQsXHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgQ29udGVudENoaWxkcmVuLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSW5qZWN0LFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBRdWVyeUxpc3QsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgVmlld0NoaWxkcmVuXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtGb3JtQXJyYXksIEZvcm1Hcm91cCwgTmdGb3JtfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7Zmlyc3R9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQge1xyXG4gICAgRHluYW1pY0Zvcm1BcnJheU1vZGVsLFxyXG4gICAgRHluYW1pY0Zvcm1Db21wb25lbnQsXHJcbiAgICBEeW5hbWljRm9ybUNvbXBvbmVudFNlcnZpY2UsXHJcbiAgICBEeW5hbWljRm9ybUNvbnRyb2xFdmVudCxcclxuICAgIER5bmFtaWNGb3JtQ29udHJvbE1vZGVsLFxyXG4gICAgRHluYW1pY0Zvcm1Hcm91cE1vZGVsLFxyXG4gICAgRHluYW1pY0Zvcm1MYXlvdXQsXHJcbiAgICBEeW5hbWljRm9ybU1vZGVsLFxyXG4gICAgRHluYW1pY1RlbXBsYXRlRGlyZWN0aXZlXHJcbn0gZnJvbSBcIkBuZy1keW5hbWljLWZvcm1zL2NvcmVcIjtcclxuaW1wb3J0IHtFdmVudHNTZXJ2aWNlLCBPYnNlcnZhYmxlVXRpbHN9IGZyb20gXCJAc3RlbXkvbmd4LXV0aWxzXCI7XHJcbmltcG9ydCB7RHluYW1pY0Zvcm1TdGF0ZSwgSUR5bmFtaWNGb3JtLCBJRHluYW1pY0Zvcm1FdmVudH0gZnJvbSBcIi4uLy4uL2NvbW1vbi10eXBlc1wiO1xyXG5pbXBvcnQge0R5bmFtaWNGb3JtU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2R5bmFtaWMtZm9ybS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7Y29sbGVjdFBhdGhBYmxlfSBmcm9tIFwiLi4vLi4vdXRpbHMvbWlzY1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJkeW5hbWljLWJhc2UtZm9ybVwiLFxyXG4gICAgdGVtcGxhdGU6IFwiXCIsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHRcclxufSlcclxuZXhwb3J0IGNsYXNzIER5bmFtaWNCYXNlRm9ybUNvbXBvbmVudCBleHRlbmRzIER5bmFtaWNGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBJRHluYW1pY0Zvcm0ge1xyXG5cclxuICAgIEBJbnB1dCgpIGdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgICBASW5wdXQoKSBtb2RlbDogRHluYW1pY0Zvcm1Nb2RlbDtcclxuICAgIEBJbnB1dCgpIGxheW91dDogRHluYW1pY0Zvcm1MYXlvdXQ7XHJcbiAgICBASW5wdXQoKSBsYWJlbFByZWZpeDogc3RyaW5nO1xyXG5cclxuICAgIEBPdXRwdXQoKSBibHVyOiBFdmVudEVtaXR0ZXI8RHluYW1pY0Zvcm1Db250cm9sRXZlbnQ+O1xyXG4gICAgQE91dHB1dCgpIGNoYW5nZTogRXZlbnRFbWl0dGVyPER5bmFtaWNGb3JtQ29udHJvbEV2ZW50PjtcclxuICAgIEBPdXRwdXQoKSBmb2N1czogRXZlbnRFbWl0dGVyPER5bmFtaWNGb3JtQ29udHJvbEV2ZW50PjtcclxuXHJcbiAgICBAQ29udGVudENoaWxkcmVuKER5bmFtaWNUZW1wbGF0ZURpcmVjdGl2ZSkgY29udGVudFRlbXBsYXRlczogUXVlcnlMaXN0PER5bmFtaWNUZW1wbGF0ZURpcmVjdGl2ZT47XHJcbiAgICBAVmlld0NoaWxkcmVuKER5bmFtaWNUZW1wbGF0ZURpcmVjdGl2ZSkgdmlld1RlbXBsYXRlczogUXVlcnlMaXN0PER5bmFtaWNUZW1wbGF0ZURpcmVjdGl2ZT47XHJcblxyXG4gICAgZ2V0IHN0YXR1cygpOiBEeW5hbWljRm9ybVN0YXRlIHtcclxuICAgICAgICByZXR1cm4gIXRoaXMuZ3JvdXAgPyBudWxsIDogdGhpcy5ncm91cC5zdGF0dXMgYXMgRHluYW1pY0Zvcm1TdGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgb25WYWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPElEeW5hbWljRm9ybUV2ZW50PjtcclxuICAgIEBPdXRwdXQoKSByZWFkb25seSBvblN0YXR1c0NoYW5nZTogRXZlbnRFbWl0dGVyPElEeW5hbWljRm9ybT47XHJcbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgb25TdWJtaXQ6IEV2ZW50RW1pdHRlcjxJRHluYW1pY0Zvcm0+O1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoTmdGb3JtKVxyXG4gICAgcHJvdGVjdGVkIG5nRm9ybTogTmdGb3JtO1xyXG4gICAgcHJvdGVjdGVkIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gICAgcHJvdGVjdGVkIGdyb3VwU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gICAgY29uc3RydWN0b3IoQEluamVjdChEeW5hbWljRm9ybVNlcnZpY2UpIHJlYWRvbmx5IGZvcm1TZXJ2aWNlOiBEeW5hbWljRm9ybVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBASW5qZWN0KEV2ZW50c1NlcnZpY2UpIHJlYWRvbmx5IGV2ZW50czogRXZlbnRzU2VydmljZSxcclxuICAgICAgICAgICAgICAgIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICAgICAgICAgIGNvbXBvbmVudFNlcnZpY2U6IER5bmFtaWNGb3JtQ29tcG9uZW50U2VydmljZSwpIHtcclxuICAgICAgICBzdXBlcihjaGFuZ2VEZXRlY3RvclJlZiwgY29tcG9uZW50U2VydmljZSk7XHJcbiAgICAgICAgdGhpcy5ibHVyID0gbmV3IEV2ZW50RW1pdHRlcjxEeW5hbWljRm9ybUNvbnRyb2xFdmVudD4oKTtcclxuICAgICAgICB0aGlzLmNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RHluYW1pY0Zvcm1Db250cm9sRXZlbnQ+KCk7XHJcbiAgICAgICAgdGhpcy5mb2N1cyA9IG5ldyBFdmVudEVtaXR0ZXI8RHluYW1pY0Zvcm1Db250cm9sRXZlbnQ+KCk7XHJcbiAgICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxJRHluYW1pY0Zvcm1FdmVudD4oKTtcclxuICAgICAgICB0aGlzLm9uU3RhdHVzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxJRHluYW1pY0Zvcm0+KCk7XHJcbiAgICAgICAgdGhpcy5vblN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8SUR5bmFtaWNGb3JtPigpO1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVzID0gbmV3IFF1ZXJ5TGlzdDxEeW5hbWljVGVtcGxhdGVEaXJlY3RpdmU+KCk7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgICAgICAgdGhpcy5ncm91cFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICAgICAgICB0aGlzLmxhYmVsUHJlZml4ID0gXCJsYWJlbFwiO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmdyb3VwU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXApIHtcclxuICAgICAgICAgICAgdGhpcy5ncm91cFN1YnNjcmlwdGlvbiA9IE9ic2VydmFibGVVdGlscy5tdWx0aVN1YnNjcmlwdGlvbihcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXAuc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25TdGF0dXNDaGFuZ2UuZW1pdCh0aGlzKTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5ncm91cC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1TZXJ2aWNlLm5vdGlmeUNoYW5nZXModGhpcy5tb2RlbCwgdGhpcy5ncm91cCwgdGhpcy5tb2RlbCk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlLnN1YnNjcmliZShldiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlLmVtaXQoey4uLmV2LCBmb3JtOiB0aGlzfSk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSBPYnNlcnZhYmxlVXRpbHMubXVsdGlTdWJzY3JpcHRpb24oXHJcbiAgICAgICAgICAgIE9ic2VydmFibGVVdGlscy5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3ViamVjdHM6IFt0aGlzLmNvbnRlbnRUZW1wbGF0ZXMuY2hhbmdlcywgdGhpcy52aWV3VGVtcGxhdGVzLmNoYW5nZXNdLFxyXG4gICAgICAgICAgICAgICAgICAgIGNiOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRlbXBsYXRlcyA9IHRoaXMuY29udGVudFRlbXBsYXRlcy50b0FycmF5KCkuY29uY2F0KHRoaXMudmlld1RlbXBsYXRlcy50b0FycmF5KCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRlbXBsYXRlcy5yZXNldCh0ZW1wbGF0ZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgdGhpcy5ldmVudHMubGFuZ3VhZ2VDaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1TZXJ2aWNlLmRldGVjdENoYW5nZXModGhpcylcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIHRoaXMubmdGb3JtLm5nU3VibWl0LnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uU3VibWl0LmVtaXQodGhpcyk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgdGhpcy5ncm91cFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGluc2VydEZvcm1BcnJheUdyb3VwKGluZGV4OiBudW1iZXIsIGZvcm1BcnJheTogRm9ybUFycmF5LCBmb3JtQXJyYXlNb2RlbDogRHluYW1pY0Zvcm1BcnJheU1vZGVsKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5mb3JtU2VydmljZS5pbnNlcnRGb3JtQXJyYXlHcm91cChpbmRleCwgZm9ybUFycmF5LCBmb3JtQXJyYXlNb2RlbCk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlRm9ybUFycmF5R3JvdXAoaW5kZXg6IG51bWJlciwgZm9ybUFycmF5OiBGb3JtQXJyYXksIGZvcm1BcnJheU1vZGVsOiBEeW5hbWljRm9ybUFycmF5TW9kZWwpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZvcm1TZXJ2aWNlLnJlbW92ZUZvcm1BcnJheUdyb3VwKGluZGV4LCBmb3JtQXJyYXksIGZvcm1BcnJheU1vZGVsKTtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBtb3ZlRm9ybUFycmF5R3JvdXAoaW5kZXg6IG51bWJlciwgc3RlcDogbnVtYmVyLCBmb3JtQXJyYXk6IEZvcm1BcnJheSwgZm9ybUFycmF5TW9kZWw6IER5bmFtaWNGb3JtQXJyYXlNb2RlbCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZm9ybVNlcnZpY2UubW92ZUZvcm1BcnJheUdyb3VwKGluZGV4LCBzdGVwLCBmb3JtQXJyYXksIGZvcm1BcnJheU1vZGVsKTtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBjbGVhckZvcm1BcnJheShmb3JtQXJyYXk6IEZvcm1BcnJheSwgZm9ybUFycmF5TW9kZWw6IER5bmFtaWNGb3JtQXJyYXlNb2RlbCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZm9ybVNlcnZpY2UuY2xlYXJGb3JtQXJyYXkoZm9ybUFycmF5LCBmb3JtQXJyYXlNb2RlbCk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Q2xhc3MobW9kZWw/OiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbCk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgcGFydHMgPSBjb2xsZWN0UGF0aEFibGUobW9kZWwsIHAgPT4gcC5pZCk7XHJcbiAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA9PSAwKSByZXR1cm4gXCJcIjtcclxuICAgICAgICBpZiAobW9kZWwgaW5zdGFuY2VvZiBEeW5hbWljRm9ybUdyb3VwTW9kZWwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGBmb3JtLWdyb3VwLSR7cGFydHMuam9pbihcIi1cIil9YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGBmb3JtLWNvbnRyb2wtJHtwYXJ0cy5qb2luKFwiLVwiKX1gO1xyXG4gICAgfVxyXG5cclxuICAgIHZhbGlkYXRlKHNob3dFcnJvcnM6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICBpZiAoIXRoaXMuZ3JvdXApIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8YW55PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JvdXAuc3RhdHVzQ2hhbmdlcy5waXBlKGZpcnN0KHN0YXR1cyA9PiBzdGF0dXMgPT0gXCJWQUxJRFwiIHx8IHN0YXR1cyA9PSBcIklOVkFMSURcIikpLnN1YnNjcmliZShzdGF0dXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHNob3dFcnJvcnMpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1TZXJ2aWNlLnNob3dFcnJvcnModGhpcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoc3RhdHVzID09IFwiVkFMSURcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmVqZWN0KG51bGwpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5ncm91cC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc2VyaWFsaXplKHZhbGlkYXRlPzogYm9vbGVhbik6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmdyb3VwKSByZXR1cm4gbnVsbDtcclxuICAgICAgICBpZiAodmFsaWRhdGUpIHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy52YWxpZGF0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5mb3JtU2VydmljZS5zZXJpYWxpemUodGhpcy5tb2RlbCwgdGhpcy5ncm91cCk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { Directive, EventEmitter, HostBinding, HostListener, Inject, Input, Output } from "@angular/core";
|
|
2
|
+
import { TOASTER_SERVICE } from "@stemy/ngx-utils";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class AsyncSubmitDirective {
|
|
5
|
+
constructor(toaster, cdr, elem, renderer) {
|
|
6
|
+
this.toaster = toaster;
|
|
7
|
+
this.cdr = cdr;
|
|
8
|
+
this.elem = elem;
|
|
9
|
+
this.renderer = renderer;
|
|
10
|
+
this.onSuccess = new EventEmitter();
|
|
11
|
+
this.onError = new EventEmitter();
|
|
12
|
+
if (elem.nativeElement.tagName !== "BUTTON")
|
|
13
|
+
return;
|
|
14
|
+
renderer.setAttribute(elem.nativeElement, "type", "button");
|
|
15
|
+
}
|
|
16
|
+
get isDisabled() {
|
|
17
|
+
return this.disabled;
|
|
18
|
+
}
|
|
19
|
+
set isDisabled(value) {
|
|
20
|
+
this.disabled = value;
|
|
21
|
+
if (value) {
|
|
22
|
+
this.renderer.setAttribute(this.elem.nativeElement, "disabled", "disabled");
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
this.renderer.removeAttribute(this.elem.nativeElement, "disabled");
|
|
26
|
+
}
|
|
27
|
+
get isLoading() {
|
|
28
|
+
return this.loading;
|
|
29
|
+
}
|
|
30
|
+
ngOnInit() {
|
|
31
|
+
if (!this.form)
|
|
32
|
+
return;
|
|
33
|
+
this.isDisabled = this.form.status !== "VALID";
|
|
34
|
+
this.cdr.detectChanges();
|
|
35
|
+
this.onStatusChange = this.form.onStatusChange.subscribe(() => {
|
|
36
|
+
this.isDisabled = this.form.status !== "VALID";
|
|
37
|
+
this.cdr.detectChanges();
|
|
38
|
+
if (!this.callback || this.form.status == "PENDING")
|
|
39
|
+
return;
|
|
40
|
+
if (!this.disabled) {
|
|
41
|
+
this.callback();
|
|
42
|
+
}
|
|
43
|
+
this.callback = null;
|
|
44
|
+
});
|
|
45
|
+
this.onSubmit = this.form.onSubmit.subscribe(() => this.callMethod());
|
|
46
|
+
}
|
|
47
|
+
ngOnDestroy() {
|
|
48
|
+
if (this.onStatusChange)
|
|
49
|
+
this.onStatusChange.unsubscribe();
|
|
50
|
+
if (this.onSubmit)
|
|
51
|
+
this.onSubmit.unsubscribe();
|
|
52
|
+
}
|
|
53
|
+
click() {
|
|
54
|
+
this.callback = () => this.callMethod();
|
|
55
|
+
if (this.form.status !== "VALID" && this.form.status !== "INVALID")
|
|
56
|
+
return;
|
|
57
|
+
this.callback();
|
|
58
|
+
this.callback = null;
|
|
59
|
+
}
|
|
60
|
+
callMethod() {
|
|
61
|
+
if (this.loading)
|
|
62
|
+
return;
|
|
63
|
+
this.loading = true;
|
|
64
|
+
this.method(this.form, this.context).then(result => {
|
|
65
|
+
this.loading = false;
|
|
66
|
+
if (result) {
|
|
67
|
+
this.onSuccess.emit(result);
|
|
68
|
+
this.toaster.success(result.message, result.context);
|
|
69
|
+
}
|
|
70
|
+
}, reason => {
|
|
71
|
+
if (!reason || !reason.message)
|
|
72
|
+
throw new Error("Reason must implement IAsyncMessage interface");
|
|
73
|
+
this.loading = false;
|
|
74
|
+
this.onError.emit(reason);
|
|
75
|
+
this.toaster.error(reason.message, reason.context);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
AsyncSubmitDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: AsyncSubmitDirective, deps: [{ token: TOASTER_SERVICE }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
|
80
|
+
AsyncSubmitDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.8", type: AsyncSubmitDirective, selector: "[async-submit]", inputs: { method: ["async-submit", "method"], form: "form", context: "context" }, outputs: { onSuccess: "onSuccess", onError: "onError" }, host: { listeners: { "click": "click()" }, properties: { "class.disabled": "this.isDisabled", "class.loading": "this.isLoading" } }, exportAs: ["async-submit"], ngImport: i0 });
|
|
81
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: AsyncSubmitDirective, decorators: [{
|
|
82
|
+
type: Directive,
|
|
83
|
+
args: [{
|
|
84
|
+
selector: "[async-submit]",
|
|
85
|
+
exportAs: "async-submit"
|
|
86
|
+
}]
|
|
87
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
88
|
+
type: Inject,
|
|
89
|
+
args: [TOASTER_SERVICE]
|
|
90
|
+
}] }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { method: [{
|
|
91
|
+
type: Input,
|
|
92
|
+
args: ["async-submit"]
|
|
93
|
+
}], form: [{
|
|
94
|
+
type: Input
|
|
95
|
+
}], context: [{
|
|
96
|
+
type: Input
|
|
97
|
+
}], onSuccess: [{
|
|
98
|
+
type: Output
|
|
99
|
+
}], onError: [{
|
|
100
|
+
type: Output
|
|
101
|
+
}], isDisabled: [{
|
|
102
|
+
type: HostBinding,
|
|
103
|
+
args: ["class.disabled"]
|
|
104
|
+
}], isLoading: [{
|
|
105
|
+
type: HostBinding,
|
|
106
|
+
args: ["class.loading"]
|
|
107
|
+
}], click: [{
|
|
108
|
+
type: HostListener,
|
|
109
|
+
args: ["click"]
|
|
110
|
+
}] } });
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtc3VibWl0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtZHluYW1pYy1mb3JtL2RpcmVjdGl2ZXMvYXN5bmMtc3VibWl0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsTUFBTSxFQUVULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBaUMsZUFBZSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7O0FBT2pGLE1BQU0sT0FBTyxvQkFBb0I7SUFrQzdCLFlBQTZDLE9BQXdCLEVBQ2hELEdBQXNCLEVBQ3RCLElBQWdCLEVBQ2hCLFFBQW1CO1FBSEssWUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUFDaEQsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ3BDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFDbkQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUNqRCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxLQUFLLFFBQVE7WUFBRSxPQUFPO1FBQ3BELFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQTNCRCxJQUNJLFVBQVU7UUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksVUFBVSxDQUFDLEtBQWM7UUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxLQUFLLEVBQUU7WUFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVks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Q0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7aUhBekZRLG9CQUFvQixrQkFrQ1QsZUFBZTtxR0FsQzFCLG9CQUFvQjsyRkFBcEIsb0JBQW9CO2tCQUpoQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFFBQVEsRUFBRSxjQUFjO2lCQUMzQjs7MEJBbUNnQixNQUFNOzJCQUFDLGVBQWU7NkhBaENaLE1BQU07c0JBQTVCLEtBQUs7dUJBQUMsY0FBYztnQkFDWixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFTSCxVQUFVO3NCQURiLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQWV6QixTQUFTO3NCQURaLFdBQVc7dUJBQUMsZUFBZTtnQkFxQzVCLEtBQUs7c0JBREosWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgRGlyZWN0aXZlLFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIEhvc3RCaW5kaW5nLFxyXG4gICAgSG9zdExpc3RlbmVyLFxyXG4gICAgSW5qZWN0LFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBPbkluaXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBSZW5kZXJlcjJcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtJQXN5bmNNZXNzYWdlLCBJVG9hc3RlclNlcnZpY2UsIFRPQVNURVJfU0VSVklDRX0gZnJvbSBcIkBzdGVteS9uZ3gtdXRpbHNcIjtcclxuaW1wb3J0IHtBc3luY1N1Ym1pdE1ldGhvZCwgSUR5bmFtaWNGb3JtfSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiBcIlthc3luYy1zdWJtaXRdXCIsXHJcbiAgICBleHBvcnRBczogXCJhc3luYy1zdWJtaXRcIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXN5bmNTdWJtaXREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gICAgQElucHV0KFwiYXN5bmMtc3VibWl0XCIpIG1ldGhvZDogQXN5bmNTdWJtaXRNZXRob2Q7XHJcbiAgICBASW5wdXQoKSBmb3JtOiBJRHluYW1pY0Zvcm07XHJcbiAgICBASW5wdXQoKSBjb250ZXh0OiBhbnk7XHJcblxyXG4gICAgQE91dHB1dCgpIG9uU3VjY2VzczogRXZlbnRFbWl0dGVyPElBc3luY01lc3NhZ2U+O1xyXG4gICAgQE91dHB1dCgpIG9uRXJyb3I6IEV2ZW50RW1pdHRlcjxJQXN5bmNNZXNzYWdlPjtcclxuXHJcbiAgICBwcml2YXRlIGxvYWRpbmc6IGJvb2xlYW47XHJcbiAgICBwcml2YXRlIGRpc2FibGVkOiBib29sZWFuO1xyXG4gICAgcHJpdmF0ZSBjYWxsYmFjazogRnVuY3Rpb247XHJcbiAgICBwcml2YXRlIG9uU3RhdHVzQ2hhbmdlOiBTdWJzY3JpcHRpb247XHJcbiAgICBwcml2YXRlIG9uU3VibWl0OiBTdWJzY3JpcHRpb247XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuZGlzYWJsZWRcIilcclxuICAgIGdldCBpc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBpc0Rpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHZhbHVlO1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW0ubmF0aXZlRWxlbWVudCwgXCJkaXNhYmxlZFwiLCBcImRpc2FibGVkXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuZWxlbS5uYXRpdmVFbGVtZW50LCBcImRpc2FibGVkXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0QmluZGluZyhcImNsYXNzLmxvYWRpbmdcIilcclxuICAgIGdldCBpc0xvYWRpbmcoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGluZztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KFRPQVNURVJfU0VSVklDRSkgcHJpdmF0ZSB0b2FzdGVyOiBJVG9hc3RlclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgICAgICAgICAgcmVhZG9ubHkgZWxlbTogRWxlbWVudFJlZixcclxuICAgICAgICAgICAgICAgIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcclxuICAgICAgICB0aGlzLm9uU3VjY2VzcyA9IG5ldyBFdmVudEVtaXR0ZXI8SUFzeW5jTWVzc2FnZT4oKTtcclxuICAgICAgICB0aGlzLm9uRXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPElBc3luY01lc3NhZ2U+KCk7XHJcbiAgICAgICAgaWYgKGVsZW0ubmF0aXZlRWxlbWVudC50YWdOYW1lICE9PSBcIkJVVFRPTlwiKSByZXR1cm47XHJcbiAgICAgICAgcmVuZGVyZXIuc2V0QXR0cmlidXRlKGVsZW0ubmF0aXZlRWxlbWVudCwgXCJ0eXBlXCIsIFwiYnV0dG9uXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5mb3JtKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5pc0Rpc2FibGVkID0gdGhpcy5mb3JtLnN0YXR1cyAhPT0gXCJWQUxJRFwiO1xyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLm9uU3RhdHVzQ2hhbmdlID0gdGhpcy5mb3JtLm9uU3RhdHVzQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNEaXNhYmxlZCA9IHRoaXMuZm9ybS5zdGF0dXMgIT09IFwiVkFMSURcIjtcclxuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY2FsbGJhY2sgfHwgdGhpcy5mb3JtLnN0YXR1cyA9PSBcIlBFTkRJTkdcIikgcmV0dXJuO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2FsbGJhY2soKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmNhbGxiYWNrID0gbnVsbDtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLm9uU3VibWl0ID0gdGhpcy5mb3JtLm9uU3VibWl0LnN1YnNjcmliZSgoKSA9PiB0aGlzLmNhbGxNZXRob2QoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMub25TdGF0dXNDaGFuZ2UpIHRoaXMub25TdGF0dXNDaGFuZ2UudW5zdWJzY3JpYmUoKTtcclxuICAgICAgICBpZiAodGhpcy5vblN1Ym1pdCkgdGhpcy5vblN1Ym1pdC51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoXCJjbGlja1wiKVxyXG4gICAgY2xpY2soKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jYWxsYmFjayA9ICgpID0+IHRoaXMuY2FsbE1ldGhvZCgpO1xyXG4gICAgICAgIGlmICh0aGlzLmZvcm0uc3RhdHVzICE9PSBcIlZBTElEXCIgJiYgdGhpcy5mb3JtLnN0YXR1cyAhPT0gXCJJTlZBTElEXCIpIHJldHVybjtcclxuICAgICAgICB0aGlzLmNhbGxiYWNrKCk7XHJcbiAgICAgICAgdGhpcy5jYWxsYmFjayA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY2FsbE1ldGhvZCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5sb2FkaW5nKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm1ldGhvZCh0aGlzLmZvcm0sIHRoaXMuY29udGV4dCkudGhlbihyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vblN1Y2Nlc3MuZW1pdChyZXN1bHQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyLnN1Y2Nlc3MocmVzdWx0Lm1lc3NhZ2UsIHJlc3VsdC5jb250ZXh0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIHJlYXNvbiA9PiB7XHJcbiAgICAgICAgICAgIGlmICghcmVhc29uIHx8ICFyZWFzb24ubWVzc2FnZSlcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlJlYXNvbiBtdXN0IGltcGxlbWVudCBJQXN5bmNNZXNzYWdlIGludGVyZmFjZVwiKTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMub25FcnJvci5lbWl0KHJlYXNvbik7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3Rlci5lcnJvcihyZWFzb24ubWVzc2FnZSwgcmVhc29uLmNvbnRleHQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { AsyncSubmitDirective } from "./directives/async-submit.directive";
|
|
2
|
+
import { DynamicBaseFormComponent } from "./components/base/dynamic-base-form.component";
|
|
3
|
+
import { DynamicBaseFormArrayComponent } from "./components/base/dynamic-base-form-array.component";
|
|
4
|
+
import { DynamicBaseFormControlContainerComponent } from "./components/base/dynamic-base-form-control-container.component";
|
|
5
|
+
import { DynamicBaseFormGroupComponent } from "./components/base/dynamic-base-form-group.component";
|
|
6
|
+
// --- Components ---
|
|
7
|
+
export const components = [
|
|
8
|
+
DynamicBaseFormComponent,
|
|
9
|
+
DynamicBaseFormArrayComponent,
|
|
10
|
+
DynamicBaseFormControlContainerComponent,
|
|
11
|
+
DynamicBaseFormGroupComponent
|
|
12
|
+
];
|
|
13
|
+
// --- Directives ---
|
|
14
|
+
export const directives = [
|
|
15
|
+
AsyncSubmitDirective,
|
|
16
|
+
];
|
|
17
|
+
// --- Pipes ---
|
|
18
|
+
export const pipes = [];
|
|
19
|
+
export function defaultFormControlProvider() {
|
|
20
|
+
return () => null;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWR5bmFtaWMtZm9ybS5pbXBvcnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25neC1keW5hbWljLWZvcm0vbmd4LWR5bmFtaWMtZm9ybS5pbXBvcnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBRXpFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLCtDQUErQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLHFEQUFxRCxDQUFDO0FBQ2xHLE9BQU8sRUFDSCx3Q0FBd0MsRUFDM0MsTUFBTSxpRUFBaUUsQ0FBQztBQUN6RSxPQUFPLEVBQUMsNkJBQTZCLEVBQUMsTUFBTSxxREFBcUQsQ0FBQztBQUdsRyxxQkFBcUI7QUFDckIsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3RCLHdCQUF3QjtJQUN4Qiw2QkFBNkI7SUFDN0Isd0NBQXdDO0lBQ3hDLDZCQUE2QjtDQUNoQyxDQUFDO0FBRUYscUJBQXFCO0FBQ3JCLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN0QixvQkFBb0I7Q0FDdkIsQ0FBQztBQUVGLGdCQUFnQjtBQUNoQixNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBRXhCLE1BQU0sVUFBVSwwQkFBMEI7SUFDdEMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7QUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXN5bmNTdWJtaXREaXJlY3RpdmV9IGZyb20gXCIuL2RpcmVjdGl2ZXMvYXN5bmMtc3VibWl0LmRpcmVjdGl2ZVwiO1xyXG5cclxuaW1wb3J0IHtEeW5hbWljQmFzZUZvcm1Db21wb25lbnR9IGZyb20gXCIuL2NvbXBvbmVudHMvYmFzZS9keW5hbWljLWJhc2UtZm9ybS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtEeW5hbWljQmFzZUZvcm1BcnJheUNvbXBvbmVudH0gZnJvbSBcIi4vY29tcG9uZW50cy9iYXNlL2R5bmFtaWMtYmFzZS1mb3JtLWFycmF5LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1xyXG4gICAgRHluYW1pY0Jhc2VGb3JtQ29udHJvbENvbnRhaW5lckNvbXBvbmVudFxyXG59IGZyb20gXCIuL2NvbXBvbmVudHMvYmFzZS9keW5hbWljLWJhc2UtZm9ybS1jb250cm9sLWNvbnRhaW5lci5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtEeW5hbWljQmFzZUZvcm1Hcm91cENvbXBvbmVudH0gZnJvbSBcIi4vY29tcG9uZW50cy9iYXNlL2R5bmFtaWMtYmFzZS1mb3JtLWdyb3VwLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0R5bmFtaWNGb3JtQ29udHJvbE1hcEZufSBmcm9tIFwiQG5nLWR5bmFtaWMtZm9ybXMvY29yZS9saWIvc2VydmljZS9keW5hbWljLWZvcm0tY29tcG9uZW50LnNlcnZpY2VcIjtcclxuXHJcbi8vIC0tLSBDb21wb25lbnRzIC0tLVxyXG5leHBvcnQgY29uc3QgY29tcG9uZW50cyA9IFtcclxuICAgIER5bmFtaWNCYXNlRm9ybUNvbXBvbmVudCxcclxuICAgIER5bmFtaWNCYXNlRm9ybUFycmF5Q29tcG9uZW50LFxyXG4gICAgRHluYW1pY0Jhc2VGb3JtQ29udHJvbENvbnRhaW5lckNvbXBvbmVudCxcclxuICAgIER5bmFtaWNCYXNlRm9ybUdyb3VwQ29tcG9uZW50XHJcbl07XHJcblxyXG4vLyAtLS0gRGlyZWN0aXZlcyAtLS1cclxuZXhwb3J0IGNvbnN0IGRpcmVjdGl2ZXMgPSBbXHJcbiAgICBBc3luY1N1Ym1pdERpcmVjdGl2ZSxcclxuXTtcclxuXHJcbi8vIC0tLSBQaXBlcyAtLS1cclxuZXhwb3J0IGNvbnN0IHBpcGVzID0gW107XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdEZvcm1Db250cm9sUHJvdmlkZXIoKTogRHluYW1pY0Zvcm1Db250cm9sTWFwRm4ge1xyXG4gICAgcmV0dXJuICgpID0+IG51bGw7XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { Injector, NgModule } from "@angular/core";
|
|
2
|
+
import { CommonModule } from "@angular/common";
|
|
3
|
+
import { FormsModule, NG_VALIDATORS, ReactiveFormsModule } from "@angular/forms";
|
|
4
|
+
import { DYNAMIC_FORM_CONTROL_MAP_FN, DYNAMIC_VALIDATORS, DynamicFormService as BaseDynamicFormService } from "@ng-dynamic-forms/core";
|
|
5
|
+
import { NgxUtilsModule } from "@stemy/ngx-utils";
|
|
6
|
+
import { validateItemsMaxLength, validateItemsMaxValue, validateItemsMinLength, validateItemsMinValue, validateJSON, validatePhone, validateRequiredTranslation } from "./utils/validators";
|
|
7
|
+
import { DynamicFormService } from "./services/dynamic-form.service";
|
|
8
|
+
import { components, defaultFormControlProvider, directives, pipes } from "./ngx-dynamic-form.imports";
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "./components/base/dynamic-base-form.component";
|
|
11
|
+
import * as i2 from "./components/base/dynamic-base-form-array.component";
|
|
12
|
+
import * as i3 from "./components/base/dynamic-base-form-control-container.component";
|
|
13
|
+
import * as i4 from "./components/base/dynamic-base-form-group.component";
|
|
14
|
+
import * as i5 from "./directives/async-submit.directive";
|
|
15
|
+
export class NgxDynamicFormModule {
|
|
16
|
+
static forRoot(config) {
|
|
17
|
+
return {
|
|
18
|
+
ngModule: NgxDynamicFormModule,
|
|
19
|
+
providers: [
|
|
20
|
+
DynamicFormService,
|
|
21
|
+
{
|
|
22
|
+
provide: BaseDynamicFormService,
|
|
23
|
+
useExisting: DynamicFormService
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
provide: DYNAMIC_FORM_CONTROL_MAP_FN,
|
|
27
|
+
useFactory: (config?.controlProvider || defaultFormControlProvider),
|
|
28
|
+
deps: [Injector]
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
NgxDynamicFormModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: NgxDynamicFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
35
|
+
NgxDynamicFormModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: NgxDynamicFormModule, declarations: [i1.DynamicBaseFormComponent, i2.DynamicBaseFormArrayComponent, i3.DynamicBaseFormControlContainerComponent, i4.DynamicBaseFormGroupComponent, i5.AsyncSubmitDirective], imports: [CommonModule,
|
|
36
|
+
FormsModule,
|
|
37
|
+
ReactiveFormsModule,
|
|
38
|
+
NgxUtilsModule], exports: [i1.DynamicBaseFormComponent, i2.DynamicBaseFormArrayComponent, i3.DynamicBaseFormControlContainerComponent, i4.DynamicBaseFormGroupComponent, i5.AsyncSubmitDirective, FormsModule,
|
|
39
|
+
ReactiveFormsModule,
|
|
40
|
+
NgxUtilsModule] });
|
|
41
|
+
NgxDynamicFormModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: NgxDynamicFormModule, providers: [
|
|
42
|
+
...pipes,
|
|
43
|
+
{ provide: NG_VALIDATORS, useValue: validateJSON, multi: true },
|
|
44
|
+
{ provide: NG_VALIDATORS, useValue: validateRequiredTranslation, multi: true },
|
|
45
|
+
{ provide: NG_VALIDATORS, useValue: validateItemsMinLength, multi: true },
|
|
46
|
+
{ provide: NG_VALIDATORS, useValue: validateItemsMaxLength, multi: true },
|
|
47
|
+
{ provide: NG_VALIDATORS, useValue: validateItemsMinValue, multi: true },
|
|
48
|
+
{ provide: NG_VALIDATORS, useValue: validateItemsMaxValue, multi: true },
|
|
49
|
+
{
|
|
50
|
+
provide: DYNAMIC_VALIDATORS,
|
|
51
|
+
useValue: new Map([
|
|
52
|
+
["json", validateJSON],
|
|
53
|
+
["requiredTranslation", validateRequiredTranslation],
|
|
54
|
+
["phone", validatePhone],
|
|
55
|
+
["itemsMinLength", validateItemsMinLength],
|
|
56
|
+
["itemsMaxLength", validateItemsMaxLength],
|
|
57
|
+
["itemsMinValue", validateItemsMinValue],
|
|
58
|
+
["itemsMaxValue", validateItemsMaxValue],
|
|
59
|
+
])
|
|
60
|
+
}
|
|
61
|
+
], imports: [[
|
|
62
|
+
CommonModule,
|
|
63
|
+
FormsModule,
|
|
64
|
+
ReactiveFormsModule,
|
|
65
|
+
NgxUtilsModule
|
|
66
|
+
], FormsModule,
|
|
67
|
+
ReactiveFormsModule,
|
|
68
|
+
NgxUtilsModule] });
|
|
69
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: NgxDynamicFormModule, decorators: [{
|
|
70
|
+
type: NgModule,
|
|
71
|
+
args: [{
|
|
72
|
+
declarations: [
|
|
73
|
+
...components,
|
|
74
|
+
...directives,
|
|
75
|
+
...pipes
|
|
76
|
+
],
|
|
77
|
+
imports: [
|
|
78
|
+
CommonModule,
|
|
79
|
+
FormsModule,
|
|
80
|
+
ReactiveFormsModule,
|
|
81
|
+
NgxUtilsModule
|
|
82
|
+
],
|
|
83
|
+
exports: [
|
|
84
|
+
...components,
|
|
85
|
+
...directives,
|
|
86
|
+
...pipes,
|
|
87
|
+
FormsModule,
|
|
88
|
+
ReactiveFormsModule,
|
|
89
|
+
NgxUtilsModule
|
|
90
|
+
],
|
|
91
|
+
entryComponents: components,
|
|
92
|
+
providers: [
|
|
93
|
+
...pipes,
|
|
94
|
+
{ provide: NG_VALIDATORS, useValue: validateJSON, multi: true },
|
|
95
|
+
{ provide: NG_VALIDATORS, useValue: validateRequiredTranslation, multi: true },
|
|
96
|
+
{ provide: NG_VALIDATORS, useValue: validateItemsMinLength, multi: true },
|
|
97
|
+
{ provide: NG_VALIDATORS, useValue: validateItemsMaxLength, multi: true },
|
|
98
|
+
{ provide: NG_VALIDATORS, useValue: validateItemsMinValue, multi: true },
|
|
99
|
+
{ provide: NG_VALIDATORS, useValue: validateItemsMaxValue, multi: true },
|
|
100
|
+
{
|
|
101
|
+
provide: DYNAMIC_VALIDATORS,
|
|
102
|
+
useValue: new Map([
|
|
103
|
+
["json", validateJSON],
|
|
104
|
+
["requiredTranslation", validateRequiredTranslation],
|
|
105
|
+
["phone", validatePhone],
|
|
106
|
+
["itemsMinLength", validateItemsMinLength],
|
|
107
|
+
["itemsMaxLength", validateItemsMaxLength],
|
|
108
|
+
["itemsMinValue", validateItemsMinValue],
|
|
109
|
+
["itemsMaxValue", validateItemsMaxValue],
|
|
110
|
+
])
|
|
111
|
+
}
|
|
112
|
+
]
|
|
113
|
+
}]
|
|
114
|
+
}] });
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWR5bmFtaWMtZm9ybS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmd4LWR5bmFtaWMtZm9ybS9uZ3gtZHluYW1pYy1mb3JtLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUF1QixRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxXQUFXLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUNILDJCQUEyQixFQUMzQixrQkFBa0IsRUFDbEIsa0JBQWtCLElBQUksc0JBQXNCLEVBRy9DLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBRWhELE9BQU8sRUFDSCxzQkFBc0IsRUFDdEIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QixxQkFBcUIsRUFDckIsWUFBWSxFQUNaLGFBQWEsRUFDYiwyQkFBMkIsRUFDOUIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUMsVUFBVSxFQUFFLDBCQUEwQixFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7OztBQThDckcsTUFBTSxPQUFPLG9CQUFvQjtJQUU3QixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQWlDO1FBQzVDLE9BQU87WUFDSCxRQUFRLEVBQUUsb0JBQW9CO1lBQzlCLFNBQVMsRUFBRTtnQkFDUCxrQkFBa0I7Z0JBQ2xCO29CQUNJLE9BQU8sRUFBRSxzQkFBc0I7b0JBQy9CLFdBQVcsRUFBRSxrQkFBa0I7aUJBQ2xDO2dCQUNEO29CQUNJLE9BQU8sRUFBRSwyQkFBMkI7b0JB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RUFBQzt3QkFDdEUsRUFBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDO3dCQUN0RTs0QkFDSSxPQUFPLEVBQUUsa0JBQWtCOzRCQUMzQixRQUFRLEVBQUUsSUFBSSxHQUFHLENBQXVDO2dDQUNwRCxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUM7Z0NBQ3RCLENBQUMscUJBQXFCLEVBQUUsMkJBQTJCLENBQUM7Z0NBQ3BELENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQztnQ0FDeEIsQ0FBQyxnQkFBZ0IsRUFBRSxzQkFBc0IsQ0FBQztnQ0FDMUMsQ0FBQyxnQkFBZ0IsRUFBRSxzQkFBc0IsQ0FBQztnQ0FDMUMsQ0FBQyxlQUFlLEVBQUUscUJBQXFCLENBQUM7Z0NBQ3hDLENBQUMsZUFBZSxFQUFFLHFCQUFxQixDQUFDOzZCQUMzQyxDQUFDO3lCQUNMO3FCQUNKO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RvciwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7Rm9ybXNNb2R1bGUsIE5HX1ZBTElEQVRPUlMsIFJlYWN0aXZlRm9ybXNNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge1xyXG4gICAgRFlOQU1JQ19GT1JNX0NPTlRST0xfTUFQX0ZOLFxyXG4gICAgRFlOQU1JQ19WQUxJREFUT1JTLFxyXG4gICAgRHluYW1pY0Zvcm1TZXJ2aWNlIGFzIEJhc2VEeW5hbWljRm9ybVNlcnZpY2UsXHJcbiAgICBWYWxpZGF0b3IsXHJcbiAgICBWYWxpZGF0b3JGYWN0b3J5XHJcbn0gZnJvbSBcIkBuZy1keW5hbWljLWZvcm1zL2NvcmVcIjtcclxuaW1wb3J0IHtOZ3hVdGlsc01vZHVsZX0gZnJvbSBcIkBzdGVteS9uZ3gtdXRpbHNcIjtcclxuXHJcbmltcG9ydCB7XHJcbiAgICB2YWxpZGF0ZUl0ZW1zTWF4TGVuZ3RoLFxyXG4gICAgdmFsaWRhdGVJdGVtc01heFZhbHVlLFxyXG4gICAgdmFsaWRhdGVJdGVtc01pbkxlbmd0aCxcclxuICAgIHZhbGlkYXRlSXRlbXNNaW5WYWx1ZSxcclxuICAgIHZhbGlkYXRlSlNPTixcclxuICAgIHZhbGlkYXRlUGhvbmUsXHJcbiAgICB2YWxpZGF0ZVJlcXVpcmVkVHJhbnNsYXRpb25cclxufSBmcm9tIFwiLi91dGlscy92YWxpZGF0b3JzXCI7XHJcbmltcG9ydCB7RHluYW1pY0Zvcm1TZXJ2aWNlfSBmcm9tIFwiLi9zZXJ2aWNlcy9keW5hbWljLWZvcm0uc2VydmljZVwiO1xyXG5pbXBvcnQge2NvbXBvbmVudHMsIGRlZmF1bHRGb3JtQ29udHJvbFByb3ZpZGVyLCBkaXJlY3RpdmVzLCBwaXBlc30gZnJvbSBcIi4vbmd4LWR5bmFtaWMtZm9ybS5pbXBvcnRzXCI7XHJcbmltcG9ydCB7SUR5bmFtaWNGb3JtTW9kdWxlQ29uZmlnfSBmcm9tIFwiLi9jb21tb24tdHlwZXNcIjtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBkZWNsYXJhdGlvbnM6IFtcclxuICAgICAgICAuLi5jb21wb25lbnRzLFxyXG4gICAgICAgIC4uLmRpcmVjdGl2ZXMsXHJcbiAgICAgICAgLi4ucGlwZXNcclxuICAgIF0sXHJcbiAgICBpbXBvcnRzOiBbXHJcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICAgICAgTmd4VXRpbHNNb2R1bGVcclxuICAgIF0sXHJcbiAgICBleHBvcnRzOiBbXHJcbiAgICAgICAgLi4uY29tcG9uZW50cyxcclxuICAgICAgICAuLi5kaXJlY3RpdmVzLFxyXG4gICAgICAgIC4uLnBpcGVzLFxyXG4gICAgICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICAgICAgTmd4VXRpbHNNb2R1bGVcclxuICAgIF0sXHJcbiAgICBlbnRyeUNvbXBvbmVudHM6IGNvbXBvbmVudHMsXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICAuLi5waXBlcyxcclxuICAgICAgICB7cHJvdmlkZTogTkdfVkFMSURBVE9SUywgdXNlVmFsdWU6IHZhbGlkYXRlSlNPTiwgbXVsdGk6IHRydWV9LFxyXG4gICAgICAgIHtwcm92aWRlOiBOR19WQUxJREFUT1JTLCB1c2VWYWx1ZTogdmFsaWRhdGVSZXF1aXJlZFRyYW5zbGF0aW9uLCBtdWx0aTogdHJ1ZX0sXHJcbiAgICAgICAge3Byb3ZpZGU6IE5HX1ZBTElEQVRPUlMsIHVzZVZhbHVlOiB2YWxpZGF0ZUl0ZW1zTWluTGVuZ3RoLCBtdWx0aTogdHJ1ZX0sXHJcbiAgICAgICAge3Byb3ZpZGU6IE5HX1ZBTElEQVRPUlMsIHVzZVZhbHVlOiB2YWxpZGF0ZUl0ZW1zTWF4TGVuZ3RoLCBtdWx0aTogdHJ1ZX0sXHJcbiAgICAgICAge3Byb3ZpZGU6IE5HX1ZBTElEQVRPUlMsIHVzZVZhbHVlOiB2YWxpZGF0ZUl0ZW1zTWluVmFsdWUsIG11bHRpOiB0cnVlfSxcclxuICAgICAgICB7cHJvdmlkZTogTkdfVkFMSURBVE9SUywgdXNlVmFsdWU6IHZhbGlkYXRlSXRlbXNNYXhWYWx1ZSwgbXVsdGk6IHRydWV9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogRFlOQU1JQ19WQUxJREFUT1JTLFxyXG4gICAgICAgICAgICB1c2VWYWx1ZTogbmV3IE1hcDxzdHJpbmcsIFZhbGlkYXRvciB8IFZhbGlkYXRvckZhY3Rvcnk+KFtcclxuICAgICAgICAgICAgICAgIFtcImpzb25cIiwgdmFsaWRhdGVKU09OXSxcclxuICAgICAgICAgICAgICAgIFtcInJlcXVpcmVkVHJhbnNsYXRpb25cIiwgdmFsaWRhdGVSZXF1aXJlZFRyYW5zbGF0aW9uXSxcclxuICAgICAgICAgICAgICAgIFtcInBob25lXCIsIHZhbGlkYXRlUGhvbmVdLFxyXG4gICAgICAgICAgICAgICAgW1wiaXRlbXNNaW5MZW5ndGhcIiwgdmFsaWRhdGVJdGVtc01pbkxlbmd0aF0sXHJcbiAgICAgICAgICAgICAgICBbXCJpdGVtc01heExlbmd0aFwiLCB2YWxpZGF0ZUl0ZW1zTWF4TGVuZ3RoXSxcclxuICAgICAgICAgICAgICAgIFtcIml0ZW1zTWluVmFsdWVcIiwgdmFsaWRhdGVJdGVtc01pblZhbHVlXSxcclxuICAgICAgICAgICAgICAgIFtcIml0ZW1zTWF4VmFsdWVcIiwgdmFsaWRhdGVJdGVtc01heFZhbHVlXSxcclxuICAgICAgICAgICAgXSlcclxuICAgICAgICB9XHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hEeW5hbWljRm9ybU1vZHVsZSB7XHJcblxyXG4gICAgc3RhdGljIGZvclJvb3QoY29uZmlnPzogSUR5bmFtaWNGb3JtTW9kdWxlQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxOZ3hEeW5hbWljRm9ybU1vZHVsZT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIG5nTW9kdWxlOiBOZ3hEeW5hbWljRm9ybU1vZHVsZSxcclxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgICAgICAgICBEeW5hbWljRm9ybVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZTogQmFzZUR5bmFtaWNGb3JtU2VydmljZSxcclxuICAgICAgICAgICAgICAgICAgICB1c2VFeGlzdGluZzogRHluYW1pY0Zvcm1TZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGU6IERZTkFNSUNfRk9STV9DT05UUk9MX01BUF9GTixcclxuICAgICAgICAgICAgICAgICAgICB1c2VGYWN0b3J5OiAoY29uZmlnPy5jb250cm9sUHJvdmlkZXIgfHwgZGVmYXVsdEZvcm1Db250cm9sUHJvdmlkZXIpLFxyXG4gICAgICAgICAgICAgICAgICAgIGRlcHM6IFtJbmplY3Rvcl1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
|