@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.
@@ -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
- AbstractFormArrayComponentfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AbstractFormArrayComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
86
- AbstractFormArrayComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: AbstractFormArrayComponent, ngImport: i0 });
87
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", 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
+ 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 { thisdir = 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
- AbstractFormComponentfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AbstractFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
45
- AbstractFormComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: AbstractFormComponent, inputs: { formViewModel: "formViewModel" }, outputs: { submitted: "submitted" }, ngImport: i0 });
46
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZm9ybS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25naWwvdWkvY29tbW9uL2Zvcm0tY3ZhL3NyYy9saWIvbW9kZWxzL2Fic3RyYWN0LWZvcm0tY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBRy9CLE1BQU0sT0FBZ0IscUJBQXFCO0lBRDNDO1FBSVksY0FBUyxHQUFvQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBSXZDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0tBeUNuRDtJQXZDQyxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRVMsbUJBQW1CLENBQUMsS0FBUztRQUNyQyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7Z0JBQ2xCLEdBQUcsSUFBSSxDQUFDLGFBQWE7Z0JBQ3JCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLO2FBQ25CLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztTQUN4RjtJQUNILENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDcEYsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQzdCO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7a0hBL0NtQixxQkFBcUI7c0dBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQUQxQyxTQUFTOzhCQUVDLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUksU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RGb3JtQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGZvcm1WaWV3TW9kZWw/OiBUO1xyXG5cclxuICBAT3V0cHV0KCkgc3VibWl0dGVkOiBFdmVudEVtaXR0ZXI8VD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGFic3RyYWN0IGZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgZ2V0IGlzU3VibWl0RGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIXRoaXMuZm9ybS52YWxpZCB8fCB0aGlzLmZvcm0ucHJpc3RpbmU7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNDYW5jZWxEaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5mb3JtLmRpcnR5O1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldEZvcm1EZWZhdWx0VmFsdWUobW9kZWw/OiBUKTogVCB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gbW9kZWw7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHRoaXMuZ2V0Rm9ybURlZmF1bHRWYWx1ZSh0aGlzLmZvcm1WaWV3TW9kZWwpIHx8IHt9LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgfVxyXG5cclxuICBzdWJtaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNTdWJtaXREaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLnN1Ym1pdHRlZC5lbWl0KHtcclxuICAgICAgICAuLi50aGlzLmZvcm1WaWV3TW9kZWwsXHJcbiAgICAgICAgLi4udGhpcy5mb3JtLnZhbHVlXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgT2JqZWN0LnZhbHVlcyh0aGlzLmZvcm0uY29udHJvbHMpLmZvckVhY2goY29udHJvbCA9PiBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYW5jZWwoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNDYW5jZWxEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmZvcm0ucmVzZXQodGhpcy5nZXRGb3JtRGVmYXVsdFZhbHVlKHRoaXMuZm9ybVZpZXdNb2RlbCksIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgdGhpcy5mb3JtLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgICAgIHRoaXMuZm9ybS5tYXJrQXNVbnRvdWNoZWQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
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 { thisdir = 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
- AbstractFormGroupComponentfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AbstractFormGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
56
- AbstractFormGroupComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: AbstractFormGroupComponent, ngImport: i0 });
57
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AbstractFormGroupComponent, decorators: [{
58
- type: Directive
59
- }] });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZm9ybS1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25naWwvdWkvY29tbW9uL2Zvcm0tY3ZhL3NyYy9saWIvbW9kZWxzL2Fic3RyYWN0LWZvcm0tZ3JvdXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFpQixTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFcEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSTFDLE1BQU0sT0FBZ0IsMEJBQTBCO0lBRGhEO1FBUXFCLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0tBZ0RuRDtJQTVDQyxlQUFlO1FBQ2IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVTLGtCQUFrQjtRQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDeEUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQzthQUM3QztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQThDO1FBQzdELElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFjO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxVQUFVLENBQUMsU0FBK0I7UUFDeEMsSUFBSSxTQUFTLEVBQUU7WUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUM1RDthQUFNO1lBQ0wsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDdkQ7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsVUFBbUI7UUFDbEMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFHLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRTtZQUMxQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLENBQUM7U0FDbkM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7O3VIQXREbUIsMEJBQTBCOzJHQUExQiwwQkFBMEI7MkZBQTFCLDBCQUEwQjtrQkFEL0MsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBUaGlzIGNsYXNzIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IgbG9naWMgZm9yIGEgRm9ybUdyb3VwLlxyXG4gKiBOR19WQUxVRV9BQ0NFU1NPUiBhbmQgTkdfVkFMSURBVE9SUyBtdXN0IGJlIHByb3ZpZGVkIGluIHRoZSBjb21wb25lbnQuXHJcbiAqXHJcbiAqIFRoZSBGb3JtR3JvdXAgY2hhbmdlcyB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgY2hhbmdlIHRoZSBwYXJlbnQgRm9ybUNvbnRyb2wgdmFsdWUuXHJcbiAqXHJcbiAqIEV4YW1wbGU6XHJcblxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Hcm91cCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRmxhdEZvcm1Db250cm9sc09mLCBGb3JtVmFsdWVPZiB9IGZyb20gJy4vZm9ybS5tb2RlbCc7XHJcblxyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0Rm9ybUdyb3VwQ29tcG9uZW50PFxyXG4gIFQgZXh0ZW5kcyB7IFtLIGluIGtleW9mIFRdOiBhbnkgfSxcclxuICBGIGV4dGVuZHMgeyBbSyBpbiBrZXlvZiBUXTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PiB9ID0gRmxhdEZvcm1Db250cm9sc09mPFQ+XHJcbj4gaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXRcclxue1xyXG4gIGFic3RyYWN0IGZvcm1Hcm91cDogRm9ybUdyb3VwPEY+O1xyXG5cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByb3RlY3RlZCBvbkNoYW5nZT86ICh2YWx1ZTogRm9ybVZhbHVlT2Y8Rm9ybUdyb3VwPEY+PikgPT4gdm9pZDtcclxuICBwcm90ZWN0ZWQgb25Ub3VjaGVkPzogKCkgPT4gdm9pZDtcclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5saXN0ZW5WYWx1ZUNoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBsaXN0ZW5WYWx1ZUNoYW5nZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm1Hcm91cC52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLm9uQ2hhbmdlKSB7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IEZvcm1WYWx1ZU9mPEZvcm1Hcm91cDxGPj4pID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZShmb3JtVmFsdWU6IFQgfCB1bmRlZmluZWQgfCBudWxsKTogdm9pZCB7XHJcbiAgICBpZiAoZm9ybVZhbHVlKSB7XHJcbiAgICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUoZm9ybVZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZvcm1Hcm91cC5yZXNldCh1bmRlZmluZWQsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaXNEaXNhYmxlZCA/IHRoaXMuZm9ybUdyb3VwLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pIDogdGhpcy5mb3JtR3JvdXAuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlKCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGlmICh0aGlzLmZvcm1Hcm91cC5pbnZhbGlkKSB7XHJcbiAgICAgIHJldHVybiB7IGludmFsaWRGb3JtR3JvdXA6IHRydWUgfTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
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 { thisdir = 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==