@ngil/form-cva 1.4.0 → 2.0.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.
- package/{esm2020 → esm2022}/index.mjs +7 -7
- package/{esm2020 → esm2022}/lib/error-messages.mjs +14 -14
- package/{esm2020 → esm2022}/lib/models/abstract-form-array-component.mjs +90 -90
- package/{esm2020 → esm2022}/lib/models/abstract-form-component.mjs +53 -53
- package/{esm2020 → esm2022}/lib/models/abstract-form-group.component.mjs +60 -60
- package/{esm2020 → esm2022}/lib/models/abstract-input-component.mjs +99 -99
- package/{esm2020 → esm2022}/lib/models/form.model.mjs +1 -1
- package/{esm2020 → esm2022}/lib/ngil-ui-common-form-cva.module.mjs +15 -15
- package/{esm2020 → esm2022}/lib/utils/control-value-accessor.util.mjs +16 -16
- package/{esm2020 → esm2022}/ngil-form-cva.mjs +4 -4
- package/{fesm2020 → fesm2022}/ngil-form-cva.mjs +315 -315
- package/{fesm2020 → fesm2022}/ngil-form-cva.mjs.map +1 -1
- package/index.d.ts +7 -7
- package/lib/error-messages.d.ts +1 -1
- package/lib/models/abstract-form-array-component.d.ts +32 -32
- package/lib/models/abstract-form-component.d.ts +19 -19
- package/lib/models/abstract-form-group.component.d.ts +34 -34
- package/lib/models/abstract-input-component.d.ts +34 -34
- package/lib/models/form.model.d.ts +17 -17
- package/lib/ngil-ui-common-form-cva.module.d.ts +7 -7
- package/lib/utils/control-value-accessor.util.d.ts +6 -6
- package/package.json +8 -141
- package/fesm2015/ngil-form-cva.mjs +0 -341
- package/fesm2015/ngil-form-cva.mjs.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export * from './lib/models/abstract-form-array-component';
|
|
2
|
-
export * from './lib/models/abstract-form-component';
|
|
3
|
-
export * from './lib/models/abstract-form-group.component';
|
|
4
|
-
export * from './lib/models/abstract-input-component';
|
|
5
|
-
export * from './lib/models/form.model';
|
|
6
|
-
export * from './lib/ngil-ui-common-form-cva.module';
|
|
7
|
-
export * from './lib/utils/control-value-accessor.util';
|
|
1
|
+
export * from './lib/models/abstract-form-array-component';
|
|
2
|
+
export * from './lib/models/abstract-form-component';
|
|
3
|
+
export * from './lib/models/abstract-form-group.component';
|
|
4
|
+
export * from './lib/models/abstract-input-component';
|
|
5
|
+
export * from './lib/models/form.model';
|
|
6
|
+
export * from './lib/ngil-ui-common-form-cva.module';
|
|
7
|
+
export * from './lib/utils/control-value-accessor.util';
|
|
8
8
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25naWwvdWkvY29tbW9uL2Zvcm0tY3ZhL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHlDQUF5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2Fic3RyYWN0LWZvcm0tYXJyYXktY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2Fic3RyYWN0LWZvcm0tY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2Fic3RyYWN0LWZvcm0tZ3JvdXAuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2Fic3RyYWN0LWlucHV0LWNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9mb3JtLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmdpbC11aS1jb21tb24tZm9ybS1jdmEubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvY29udHJvbC12YWx1ZS1hY2Nlc3Nvci51dGlsJztcclxuIl19
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
const errorMessages = {
|
|
2
|
-
required: '{{fieldName}} is required.',
|
|
3
|
-
max: 'Maximum {{fieldName}} is {{max}}.',
|
|
4
|
-
min: 'Minimum {{fieldName}} is {{min}}.',
|
|
5
|
-
maxlength: '{{fieldName}} can be max {{requiredLength}} characters long.',
|
|
6
|
-
minlength: '{{fieldName}} must be at least {{requiredLength}} characters long.',
|
|
7
|
-
email: '{{fieldName}} must be an email.'
|
|
8
|
-
};
|
|
9
|
-
export function getErrorMessage(errorKey, replacements) {
|
|
10
|
-
if (!errorMessages[errorKey]) {
|
|
11
|
-
return `Missing error message to the error with key ${errorKey}`;
|
|
12
|
-
}
|
|
13
|
-
return errorMessages[errorKey].replace(/{{(\w+)}}/g, (placeholderWithDelimiters, placeholderWithoutDelimiters) => replacements[placeholderWithoutDelimiters] ? replacements[placeholderWithoutDelimiters] : placeholderWithDelimiters);
|
|
14
|
-
}
|
|
1
|
+
const errorMessages = {
|
|
2
|
+
required: '{{fieldName}} is required.',
|
|
3
|
+
max: 'Maximum {{fieldName}} is {{max}}.',
|
|
4
|
+
min: 'Minimum {{fieldName}} is {{min}}.',
|
|
5
|
+
maxlength: '{{fieldName}} can be max {{requiredLength}} characters long.',
|
|
6
|
+
minlength: '{{fieldName}} must be at least {{requiredLength}} characters long.',
|
|
7
|
+
email: '{{fieldName}} must be an email.'
|
|
8
|
+
};
|
|
9
|
+
export function getErrorMessage(errorKey, replacements) {
|
|
10
|
+
if (!errorMessages[errorKey]) {
|
|
11
|
+
return `Missing error message to the error with key ${errorKey}`;
|
|
12
|
+
}
|
|
13
|
+
return errorMessages[errorKey].replace(/{{(\w+)}}/g, (placeholderWithDelimiters, placeholderWithoutDelimiters) => replacements[placeholderWithoutDelimiters] ? replacements[placeholderWithoutDelimiters] : placeholderWithDelimiters);
|
|
14
|
+
}
|
|
15
15
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItbWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25naWwvdWkvY29tbW9uL2Zvcm0tY3ZhL3NyYy9saWIvZXJyb3ItbWVzc2FnZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxhQUFhLEdBQTJCO0lBQzVDLFFBQVEsRUFBRSw0QkFBNEI7SUFDdEMsR0FBRyxFQUFFLG1DQUFtQztJQUN4QyxHQUFHLEVBQUUsbUNBQW1DO0lBQ3hDLFNBQVMsRUFBRSw4REFBOEQ7SUFDekUsU0FBUyxFQUFFLG9FQUFvRTtJQUMvRSxLQUFLLEVBQUUsaUNBQWlDO0NBQ3pDLENBQUM7QUFFRixNQUFNLFVBQVUsZUFBZSxDQUFDLFFBQWdCLEVBQUUsWUFBb0M7SUFDcEYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRTtRQUM1QixPQUFPLCtDQUErQyxRQUFRLEVBQUUsQ0FBQztLQUNsRTtJQUVELE9BQU8sYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyx5QkFBeUIsRUFBRSw0QkFBNEIsRUFBRSxFQUFFLENBQy9HLFlBQVksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQ3BILENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXJyb3JNZXNzYWdlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcclxuICByZXF1aXJlZDogJ3t7ZmllbGROYW1lfX0gaXMgcmVxdWlyZWQuJyxcclxuICBtYXg6ICdNYXhpbXVtIHt7ZmllbGROYW1lfX0gaXMge3ttYXh9fS4nLFxyXG4gIG1pbjogJ01pbmltdW0ge3tmaWVsZE5hbWV9fSBpcyB7e21pbn19LicsXHJcbiAgbWF4bGVuZ3RoOiAne3tmaWVsZE5hbWV9fSBjYW4gYmUgbWF4IHt7cmVxdWlyZWRMZW5ndGh9fSBjaGFyYWN0ZXJzIGxvbmcuJyxcclxuICBtaW5sZW5ndGg6ICd7e2ZpZWxkTmFtZX19IG11c3QgYmUgYXQgbGVhc3Qge3tyZXF1aXJlZExlbmd0aH19IGNoYXJhY3RlcnMgbG9uZy4nLFxyXG4gIGVtYWlsOiAne3tmaWVsZE5hbWV9fSBtdXN0IGJlIGFuIGVtYWlsLidcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRFcnJvck1lc3NhZ2UoZXJyb3JLZXk6IHN0cmluZywgcmVwbGFjZW1lbnRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogc3RyaW5nIHtcclxuICBpZiAoIWVycm9yTWVzc2FnZXNbZXJyb3JLZXldKSB7XHJcbiAgICByZXR1cm4gYE1pc3NpbmcgZXJyb3IgbWVzc2FnZSB0byB0aGUgZXJyb3Igd2l0aCBrZXkgJHtlcnJvcktleX1gO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGVycm9yTWVzc2FnZXNbZXJyb3JLZXldLnJlcGxhY2UoL3t7KFxcdyspfX0vZywgKHBsYWNlaG9sZGVyV2l0aERlbGltaXRlcnMsIHBsYWNlaG9sZGVyV2l0aG91dERlbGltaXRlcnMpID0+XHJcbiAgICByZXBsYWNlbWVudHNbcGxhY2Vob2xkZXJXaXRob3V0RGVsaW1pdGVyc10gPyByZXBsYWNlbWVudHNbcGxhY2Vob2xkZXJXaXRob3V0RGVsaW1pdGVyc10gOiBwbGFjZWhvbGRlcldpdGhEZWxpbWl0ZXJzXHJcbiAgKTtcclxufVxyXG4iXX0=
|
|
@@ -1,90 +1,90 @@
|
|
|
1
|
-
import { Directive } from '@angular/core';
|
|
2
|
-
import { FormGroup } from '@angular/forms';
|
|
3
|
-
import { Subject, takeUntil } from 'rxjs';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
/**
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
export class AbstractFormArrayComponent {
|
|
9
|
-
constructor() {
|
|
10
|
-
this.destroy$ = new Subject();
|
|
11
|
-
this.formGroup = new FormGroup({
|
|
12
|
-
formArray: this.createFormArray()
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
get formArray() {
|
|
16
|
-
return this.formGroup.controls.formArray;
|
|
17
|
-
}
|
|
18
|
-
ngAfterViewInit() {
|
|
19
|
-
this.listenValueChanges();
|
|
20
|
-
}
|
|
21
|
-
listenValueChanges() {
|
|
22
|
-
this.formGroup.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(() => {
|
|
23
|
-
if (this.onChange) {
|
|
24
|
-
this.onChange(this.formArray.getRawValue());
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
registerOnChange(fn) {
|
|
29
|
-
this.onChange = fn;
|
|
30
|
-
}
|
|
31
|
-
registerOnTouched(fn) {
|
|
32
|
-
this.onTouched = fn;
|
|
33
|
-
}
|
|
34
|
-
writeValue(items) {
|
|
35
|
-
this.prepareControls(items);
|
|
36
|
-
if (items) {
|
|
37
|
-
this.formArray.patchValue(items, { emitEvent: false });
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
this.formArray.reset(undefined, { emitEvent: false });
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
setDisabledState(isDisabled) {
|
|
44
|
-
isDisabled ? this.formGroup.disable({ emitEvent: false }) : this.formGroup.enable({ emitEvent: false });
|
|
45
|
-
}
|
|
46
|
-
validate() {
|
|
47
|
-
if (this.formArray.invalid) {
|
|
48
|
-
return { invalidFormArray: true };
|
|
49
|
-
}
|
|
50
|
-
return null;
|
|
51
|
-
}
|
|
52
|
-
prepareControls(items) {
|
|
53
|
-
items = items || [];
|
|
54
|
-
if (this.formArray.value.length < items.length) {
|
|
55
|
-
this.addExtraControls(items);
|
|
56
|
-
}
|
|
57
|
-
if (this.formArray.value.length > items.length) {
|
|
58
|
-
this.removeExtraControls(items);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
addExtraControls(items) {
|
|
62
|
-
items.forEach((item, index) => {
|
|
63
|
-
const control = this.formArray.at(index);
|
|
64
|
-
if (!control) {
|
|
65
|
-
this.formArray.push(this.createFormArrayItem(item));
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
removeExtraControls(items) {
|
|
70
|
-
let formArrayIndex = 0;
|
|
71
|
-
this.formArray.value.forEach((item, index) => {
|
|
72
|
-
if (!items[index]) {
|
|
73
|
-
this.formArray.removeAt(formArrayIndex);
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
formArrayIndex++;
|
|
77
|
-
}
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
ngOnDestroy() {
|
|
81
|
-
this.destroy$.next();
|
|
82
|
-
this.destroy$.complete();
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
88
|
-
type: Directive
|
|
89
|
-
}] });
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Directive } from '@angular/core';
|
|
2
|
+
import { FormGroup } from '@angular/forms';
|
|
3
|
+
import { Subject, takeUntil } from 'rxjs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
8
|
+
export class AbstractFormArrayComponent {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.destroy$ = new Subject();
|
|
11
|
+
this.formGroup = new FormGroup({
|
|
12
|
+
formArray: this.createFormArray()
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
get formArray() {
|
|
16
|
+
return this.formGroup.controls.formArray;
|
|
17
|
+
}
|
|
18
|
+
ngAfterViewInit() {
|
|
19
|
+
this.listenValueChanges();
|
|
20
|
+
}
|
|
21
|
+
listenValueChanges() {
|
|
22
|
+
this.formGroup.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(() => {
|
|
23
|
+
if (this.onChange) {
|
|
24
|
+
this.onChange(this.formArray.getRawValue());
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
registerOnChange(fn) {
|
|
29
|
+
this.onChange = fn;
|
|
30
|
+
}
|
|
31
|
+
registerOnTouched(fn) {
|
|
32
|
+
this.onTouched = fn;
|
|
33
|
+
}
|
|
34
|
+
writeValue(items) {
|
|
35
|
+
this.prepareControls(items);
|
|
36
|
+
if (items) {
|
|
37
|
+
this.formArray.patchValue(items, { emitEvent: false });
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
this.formArray.reset(undefined, { emitEvent: false });
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
setDisabledState(isDisabled) {
|
|
44
|
+
isDisabled ? this.formGroup.disable({ emitEvent: false }) : this.formGroup.enable({ emitEvent: false });
|
|
45
|
+
}
|
|
46
|
+
validate() {
|
|
47
|
+
if (this.formArray.invalid) {
|
|
48
|
+
return { invalidFormArray: true };
|
|
49
|
+
}
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
prepareControls(items) {
|
|
53
|
+
items = items || [];
|
|
54
|
+
if (this.formArray.value.length < items.length) {
|
|
55
|
+
this.addExtraControls(items);
|
|
56
|
+
}
|
|
57
|
+
if (this.formArray.value.length > items.length) {
|
|
58
|
+
this.removeExtraControls(items);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
addExtraControls(items) {
|
|
62
|
+
items.forEach((item, index) => {
|
|
63
|
+
const control = this.formArray.at(index);
|
|
64
|
+
if (!control) {
|
|
65
|
+
this.formArray.push(this.createFormArrayItem(item));
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
removeExtraControls(items) {
|
|
70
|
+
let formArrayIndex = 0;
|
|
71
|
+
this.formArray.value.forEach((item, index) => {
|
|
72
|
+
if (!items[index]) {
|
|
73
|
+
this.formArray.removeAt(formArrayIndex);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
formArrayIndex++;
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
ngOnDestroy() {
|
|
81
|
+
this.destroy$.next();
|
|
82
|
+
this.destroy$.complete();
|
|
83
|
+
}
|
|
84
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AbstractFormArrayComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
85
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: AbstractFormArrayComponent, ngImport: i0 }); }
|
|
86
|
+
}
|
|
87
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AbstractFormArrayComponent, decorators: [{
|
|
88
|
+
type: Directive
|
|
89
|
+
}] });
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZm9ybS1hcnJheS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25naWwvdWkvY29tbW9uL2Zvcm0tY3ZhL3NyYy9saWIvbW9kZWxzL2Fic3RyYWN0LWZvcm0tYXJyYXktY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFJTCxTQUFTLEVBR1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFHMUM7O0dBRUc7QUFFSCxNQUFNLE9BQWdCLDBCQUEwQjtJQURoRDtRQU9xQixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUlsRCxjQUFTLEdBQUcsSUFBSSxTQUFTLENBQUM7WUFDeEIsU0FBUyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUU7U0FDbEMsQ0FBQyxDQUFDO0tBbUZKO0lBbEZDLElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO0lBQzNDLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVTLGtCQUFrQjtRQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDeEUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQzthQUM3QztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVE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dCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxyXG4gIEZvcm1BcnJheSxcclxuICBGb3JtR3JvdXAsXHJcbiAgVmFsaWRhdGlvbkVycm9ycyxcclxuICBWYWxpZGF0b3JcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBGb3JtVmFsdWVPZiB9IGZyb20gJy4vZm9ybS5tb2RlbCc7XHJcblxyXG4vKipcclxuICpcclxuICovXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RGb3JtQXJyYXlDb21wb25lbnQ8RiBleHRlbmRzIEFic3RyYWN0Q29udHJvbDxhbnk+PlxyXG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yXHJcbntcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY3JlYXRlRm9ybUFycmF5KCk6IEZvcm1BcnJheTxGPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY3JlYXRlRm9ybUFycmF5SXRlbShpdGVtPzogRm9ybVZhbHVlT2Y8Rj4pOiBGO1xyXG5cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByb3RlY3RlZCBvbkNoYW5nZT86ICh2YWx1ZTogRm9ybVZhbHVlT2Y8Rj5bXSkgPT4gdm9pZDtcclxuICBwcm90ZWN0ZWQgb25Ub3VjaGVkPzogKCkgPT4gdm9pZDtcclxuXHJcbiAgZm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICBmb3JtQXJyYXk6IHRoaXMuY3JlYXRlRm9ybUFycmF5KClcclxuICB9KTtcclxuICBnZXQgZm9ybUFycmF5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLmZvcm1BcnJheTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMubGlzdGVuVmFsdWVDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgbGlzdGVuVmFsdWVDaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5vbkNoYW5nZSkge1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5mb3JtQXJyYXkuZ2V0UmF3VmFsdWUoKSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBGb3JtVmFsdWVPZjxGPltdKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUoaXRlbXM6IEZvcm1WYWx1ZU9mPEY+W10gfCB1bmRlZmluZWQgfCBudWxsKTogdm9pZCB7XHJcbiAgICB0aGlzLnByZXBhcmVDb250cm9scyhpdGVtcyk7XHJcblxyXG4gICAgaWYgKGl0ZW1zKSB7XHJcbiAgICAgIHRoaXMuZm9ybUFycmF5LnBhdGNoVmFsdWUoaXRlbXMsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybUFycmF5LnJlc2V0KHVuZGVmaW5lZCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpc0Rpc2FibGVkID8gdGhpcy5mb3JtR3JvdXAuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSkgOiB0aGlzLmZvcm1Hcm91cC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGUoKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgaWYgKHRoaXMuZm9ybUFycmF5LmludmFsaWQpIHtcclxuICAgICAgcmV0dXJuIHsgaW52YWxpZEZvcm1BcnJheTogdHJ1ZSB9O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHByZXBhcmVDb250cm9scyhpdGVtczogRm9ybVZhbHVlT2Y8Rj5bXSB8IHVuZGVmaW5lZCB8IG51bGwpOiB2b2lkIHtcclxuICAgIGl0ZW1zID0gaXRlbXMgfHwgW107XHJcblxyXG4gICAgaWYgKHRoaXMuZm9ybUFycmF5LnZhbHVlLmxlbmd0aCA8IGl0ZW1zLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmFkZEV4dHJhQ29udHJvbHMoaXRlbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmZvcm1BcnJheS52YWx1ZS5sZW5ndGggPiBpdGVtcy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5yZW1vdmVFeHRyYUNvbnRyb2xzKGl0ZW1zKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkRXh0cmFDb250cm9scyhpdGVtczogRm9ybVZhbHVlT2Y8Rj5bXSk6IHZvaWQge1xyXG4gICAgaXRlbXMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybUFycmF5LmF0KGluZGV4KTtcclxuICAgICAgaWYgKCFjb250cm9sKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtQXJyYXkucHVzaCh0aGlzLmNyZWF0ZUZvcm1BcnJheUl0ZW0oaXRlbSkpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlRXh0cmFDb250cm9scyhpdGVtczogRm9ybVZhbHVlT2Y8Rj5bXSk6IHZvaWQge1xyXG4gICAgbGV0IGZvcm1BcnJheUluZGV4ID0gMDtcclxuICAgIHRoaXMuZm9ybUFycmF5LnZhbHVlLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmICghaXRlbXNbaW5kZXhdKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtQXJyYXkucmVtb3ZlQXQoZm9ybUFycmF5SW5kZXgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZvcm1BcnJheUluZGV4Kys7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
import { Directive, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class AbstractFormComponent {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.submitted = new EventEmitter();
|
|
7
|
-
this.destroy$ = new Subject();
|
|
8
|
-
}
|
|
9
|
-
get isSubmitDisabled() {
|
|
10
|
-
return !this.form.valid || this.form.pristine;
|
|
11
|
-
}
|
|
12
|
-
get isCancelDisabled() {
|
|
13
|
-
return !this.form.dirty;
|
|
14
|
-
}
|
|
15
|
-
getFormDefaultValue(model) {
|
|
16
|
-
return model;
|
|
17
|
-
}
|
|
18
|
-
ngOnInit() {
|
|
19
|
-
this.form.patchValue(this.getFormDefaultValue(this.formViewModel) || {}, { emitEvent: false });
|
|
20
|
-
}
|
|
21
|
-
submit() {
|
|
22
|
-
if (!this.isSubmitDisabled) {
|
|
23
|
-
this.submitted.emit({
|
|
24
|
-
...this.formViewModel,
|
|
25
|
-
...this.form.value
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
Object.values(this.form.controls).forEach(control => control.updateValueAndValidity());
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
cancel() {
|
|
33
|
-
if (!this.isCancelDisabled) {
|
|
34
|
-
this.form.reset(this.getFormDefaultValue(this.formViewModel), { emitEvent: false });
|
|
35
|
-
this.form.markAsPristine();
|
|
36
|
-
this.form.markAsUntouched();
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
ngOnDestroy() {
|
|
40
|
-
this.destroy$.next();
|
|
41
|
-
this.destroy$.complete();
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
47
|
-
type: Directive
|
|
48
|
-
}], propDecorators: { formViewModel: [{
|
|
49
|
-
type: Input
|
|
50
|
-
}], submitted: [{
|
|
51
|
-
type: Output
|
|
52
|
-
}] } });
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Directive, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class AbstractFormComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.submitted = new EventEmitter();
|
|
7
|
+
this.destroy$ = new Subject();
|
|
8
|
+
}
|
|
9
|
+
get isSubmitDisabled() {
|
|
10
|
+
return !this.form.valid || this.form.pristine;
|
|
11
|
+
}
|
|
12
|
+
get isCancelDisabled() {
|
|
13
|
+
return !this.form.dirty;
|
|
14
|
+
}
|
|
15
|
+
getFormDefaultValue(model) {
|
|
16
|
+
return model;
|
|
17
|
+
}
|
|
18
|
+
ngOnInit() {
|
|
19
|
+
this.form.patchValue(this.getFormDefaultValue(this.formViewModel) || {}, { emitEvent: false });
|
|
20
|
+
}
|
|
21
|
+
submit() {
|
|
22
|
+
if (!this.isSubmitDisabled) {
|
|
23
|
+
this.submitted.emit({
|
|
24
|
+
...this.formViewModel,
|
|
25
|
+
...this.form.value
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
Object.values(this.form.controls).forEach(control => control.updateValueAndValidity());
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
cancel() {
|
|
33
|
+
if (!this.isCancelDisabled) {
|
|
34
|
+
this.form.reset(this.getFormDefaultValue(this.formViewModel), { emitEvent: false });
|
|
35
|
+
this.form.markAsPristine();
|
|
36
|
+
this.form.markAsUntouched();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
ngOnDestroy() {
|
|
40
|
+
this.destroy$.next();
|
|
41
|
+
this.destroy$.complete();
|
|
42
|
+
}
|
|
43
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AbstractFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
44
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: AbstractFormComponent, inputs: { formViewModel: "formViewModel" }, outputs: { submitted: "submitted" }, ngImport: i0 }); }
|
|
45
|
+
}
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AbstractFormComponent, decorators: [{
|
|
47
|
+
type: Directive
|
|
48
|
+
}], propDecorators: { formViewModel: [{
|
|
49
|
+
type: Input
|
|
50
|
+
}], submitted: [{
|
|
51
|
+
type: Output
|
|
52
|
+
}] } });
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZm9ybS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25naWwvdWkvY29tbW9uL2Zvcm0tY3ZhL3NyYy9saWIvbW9kZWxzL2Fic3RyYWN0LWZvcm0tY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBRy9CLE1BQU0sT0FBZ0IscUJBQXFCO0lBRDNDO1FBSVksY0FBUyxHQUFvQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBSXZDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0tBeUNuRDtJQXZDQyxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRVMsbUJBQW1CLENBQUMsS0FBUztRQUNyQyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7Z0JBQ2xCLEdBQUcsSUFBSSxDQUFDLGFBQWE7Z0JBQ3JCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLO2FBQ25CLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztTQUN4RjtJQUNILENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDcEYsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQzdCO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQzsrR0EvQ21CLHFCQUFxQjttR0FBckIscUJBQXFCOzs0RkFBckIscUJBQXFCO2tCQUQxQyxTQUFTOzhCQUVDLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUksU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RGb3JtQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGZvcm1WaWV3TW9kZWw/OiBUO1xyXG5cclxuICBAT3V0cHV0KCkgc3VibWl0dGVkOiBFdmVudEVtaXR0ZXI8VD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGFic3RyYWN0IGZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgZ2V0IGlzU3VibWl0RGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIXRoaXMuZm9ybS52YWxpZCB8fCB0aGlzLmZvcm0ucHJpc3RpbmU7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNDYW5jZWxEaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5mb3JtLmRpcnR5O1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldEZvcm1EZWZhdWx0VmFsdWUobW9kZWw/OiBUKTogVCB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gbW9kZWw7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHRoaXMuZ2V0Rm9ybURlZmF1bHRWYWx1ZSh0aGlzLmZvcm1WaWV3TW9kZWwpIHx8IHt9LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgfVxyXG5cclxuICBzdWJtaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNTdWJtaXREaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLnN1Ym1pdHRlZC5lbWl0KHtcclxuICAgICAgICAuLi50aGlzLmZvcm1WaWV3TW9kZWwsXHJcbiAgICAgICAgLi4udGhpcy5mb3JtLnZhbHVlXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgT2JqZWN0LnZhbHVlcyh0aGlzLmZvcm0uY29udHJvbHMpLmZvckVhY2goY29udHJvbCA9PiBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYW5jZWwoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNDYW5jZWxEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmZvcm0ucmVzZXQodGhpcy5nZXRGb3JtRGVmYXVsdFZhbHVlKHRoaXMuZm9ybVZpZXdNb2RlbCksIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgdGhpcy5mb3JtLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgICAgIHRoaXMuZm9ybS5tYXJrQXNVbnRvdWNoZWQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,60 +1,60 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This class implements ControlValueAccessor logic for a FormGroup.
|
|
3
|
-
* NG_VALUE_ACCESSOR and NG_VALIDATORS must be provided in the component.
|
|
4
|
-
*
|
|
5
|
-
* The FormGroup changes will be automatically change the parent FormControl value.
|
|
6
|
-
*
|
|
7
|
-
* Example:
|
|
8
|
-
|
|
9
|
-
*/
|
|
10
|
-
import { Directive } from '@angular/core';
|
|
11
|
-
import { Subject, takeUntil } from 'rxjs';
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
export class AbstractFormGroupComponent {
|
|
14
|
-
constructor() {
|
|
15
|
-
this.destroy$ = new Subject();
|
|
16
|
-
}
|
|
17
|
-
ngAfterViewInit() {
|
|
18
|
-
this.listenValueChanges();
|
|
19
|
-
}
|
|
20
|
-
listenValueChanges() {
|
|
21
|
-
this.formGroup.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(() => {
|
|
22
|
-
if (this.onChange) {
|
|
23
|
-
this.onChange(this.formGroup.getRawValue());
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
registerOnChange(fn) {
|
|
28
|
-
this.onChange = fn;
|
|
29
|
-
}
|
|
30
|
-
registerOnTouched(fn) {
|
|
31
|
-
this.onTouched = fn;
|
|
32
|
-
}
|
|
33
|
-
writeValue(formValue) {
|
|
34
|
-
if (formValue) {
|
|
35
|
-
this.formGroup.patchValue(formValue, { emitEvent: false });
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
this.formGroup.reset(undefined, { emitEvent: false });
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
setDisabledState(isDisabled) {
|
|
42
|
-
isDisabled ? this.formGroup.disable({ emitEvent: false }) : this.formGroup.enable({ emitEvent: false });
|
|
43
|
-
}
|
|
44
|
-
validate() {
|
|
45
|
-
if (this.formGroup.invalid) {
|
|
46
|
-
return { invalidFormGroup: true };
|
|
47
|
-
}
|
|
48
|
-
return null;
|
|
49
|
-
}
|
|
50
|
-
ngOnDestroy() {
|
|
51
|
-
this.destroy$.next();
|
|
52
|
-
this.destroy$.complete();
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
58
|
-
type: Directive
|
|
59
|
-
}] });
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
/**
|
|
2
|
+
* This class implements ControlValueAccessor logic for a FormGroup.
|
|
3
|
+
* NG_VALUE_ACCESSOR and NG_VALIDATORS must be provided in the component.
|
|
4
|
+
*
|
|
5
|
+
* The FormGroup changes will be automatically change the parent FormControl value.
|
|
6
|
+
*
|
|
7
|
+
* Example:
|
|
8
|
+
|
|
9
|
+
*/
|
|
10
|
+
import { Directive } from '@angular/core';
|
|
11
|
+
import { Subject, takeUntil } from 'rxjs';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
export class AbstractFormGroupComponent {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.destroy$ = new Subject();
|
|
16
|
+
}
|
|
17
|
+
ngAfterViewInit() {
|
|
18
|
+
this.listenValueChanges();
|
|
19
|
+
}
|
|
20
|
+
listenValueChanges() {
|
|
21
|
+
this.formGroup.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(() => {
|
|
22
|
+
if (this.onChange) {
|
|
23
|
+
this.onChange(this.formGroup.getRawValue());
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
registerOnChange(fn) {
|
|
28
|
+
this.onChange = fn;
|
|
29
|
+
}
|
|
30
|
+
registerOnTouched(fn) {
|
|
31
|
+
this.onTouched = fn;
|
|
32
|
+
}
|
|
33
|
+
writeValue(formValue) {
|
|
34
|
+
if (formValue) {
|
|
35
|
+
this.formGroup.patchValue(formValue, { emitEvent: false });
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
this.formGroup.reset(undefined, { emitEvent: false });
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
setDisabledState(isDisabled) {
|
|
42
|
+
isDisabled ? this.formGroup.disable({ emitEvent: false }) : this.formGroup.enable({ emitEvent: false });
|
|
43
|
+
}
|
|
44
|
+
validate() {
|
|
45
|
+
if (this.formGroup.invalid) {
|
|
46
|
+
return { invalidFormGroup: true };
|
|
47
|
+
}
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
ngOnDestroy() {
|
|
51
|
+
this.destroy$.next();
|
|
52
|
+
this.destroy$.complete();
|
|
53
|
+
}
|
|
54
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AbstractFormGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
55
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: AbstractFormGroupComponent, ngImport: i0 }); }
|
|
56
|
+
}
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AbstractFormGroupComponent, decorators: [{
|
|
58
|
+
type: Directive
|
|
59
|
+
}] });
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZm9ybS1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25naWwvdWkvY29tbW9uL2Zvcm0tY3ZhL3NyYy9saWIvbW9kZWxzL2Fic3RyYWN0LWZvcm0tZ3JvdXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFpQixTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFcEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSTFDLE1BQU0sT0FBZ0IsMEJBQTBCO0lBRGhEO1FBUXFCLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0tBZ0RuRDtJQTVDQyxlQUFlO1FBQ2IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVTLGtCQUFrQjtRQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDeEUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQzthQUM3QztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQThDO1FBQzdELElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFjO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxVQUFVLENBQUMsU0FBK0I7UUFDeEMsSUFBSSxTQUFTLEVBQUU7WUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUM1RDthQUFNO1lBQ0wsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDdkQ7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsVUFBbUI7UUFDbEMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFHLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRTtZQUMxQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLENBQUM7U0FDbkM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7K0dBdERtQiwwQkFBMEI7bUdBQTFCLDBCQUEwQjs7NEZBQTFCLDBCQUEwQjtrQkFEL0MsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBUaGlzIGNsYXNzIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IgbG9naWMgZm9yIGEgRm9ybUdyb3VwLlxyXG4gKiBOR19WQUxVRV9BQ0NFU1NPUiBhbmQgTkdfVkFMSURBVE9SUyBtdXN0IGJlIHByb3ZpZGVkIGluIHRoZSBjb21wb25lbnQuXHJcbiAqXHJcbiAqIFRoZSBGb3JtR3JvdXAgY2hhbmdlcyB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgY2hhbmdlIHRoZSBwYXJlbnQgRm9ybUNvbnRyb2wgdmFsdWUuXHJcbiAqXHJcbiAqIEV4YW1wbGU6XHJcblxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Hcm91cCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRmxhdEZvcm1Db250cm9sc09mLCBGb3JtVmFsdWVPZiB9IGZyb20gJy4vZm9ybS5tb2RlbCc7XHJcblxyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0Rm9ybUdyb3VwQ29tcG9uZW50PFxyXG4gIFQgZXh0ZW5kcyB7IFtLIGluIGtleW9mIFRdOiBhbnkgfSxcclxuICBGIGV4dGVuZHMgeyBbSyBpbiBrZXlvZiBUXTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PiB9ID0gRmxhdEZvcm1Db250cm9sc09mPFQ+XHJcbj4gaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXRcclxue1xyXG4gIGFic3RyYWN0IGZvcm1Hcm91cDogRm9ybUdyb3VwPEY+O1xyXG5cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByb3RlY3RlZCBvbkNoYW5nZT86ICh2YWx1ZTogRm9ybVZhbHVlT2Y8Rm9ybUdyb3VwPEY+PikgPT4gdm9pZDtcclxuICBwcm90ZWN0ZWQgb25Ub3VjaGVkPzogKCkgPT4gdm9pZDtcclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5saXN0ZW5WYWx1ZUNoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBsaXN0ZW5WYWx1ZUNoYW5nZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm1Hcm91cC52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLm9uQ2hhbmdlKSB7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IEZvcm1WYWx1ZU9mPEZvcm1Hcm91cDxGPj4pID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZShmb3JtVmFsdWU6IFQgfCB1bmRlZmluZWQgfCBudWxsKTogdm9pZCB7XHJcbiAgICBpZiAoZm9ybVZhbHVlKSB7XHJcbiAgICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUoZm9ybVZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZvcm1Hcm91cC5yZXNldCh1bmRlZmluZWQsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaXNEaXNhYmxlZCA/IHRoaXMuZm9ybUdyb3VwLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pIDogdGhpcy5mb3JtR3JvdXAuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlKCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGlmICh0aGlzLmZvcm1Hcm91cC5pbnZhbGlkKSB7XHJcbiAgICAgIHJldHVybiB7IGludmFsaWRGb3JtR3JvdXA6IHRydWUgfTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|