@ngil/form-cva 1.4.0 → 3.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.
Files changed (29) hide show
  1. package/{esm2020 → esm2022}/index.mjs +7 -7
  2. package/esm2022/lib/error-messages.mjs +15 -0
  3. package/esm2022/lib/models/abstract-form-array-component.mjs +90 -0
  4. package/esm2022/lib/models/abstract-form-component.mjs +53 -0
  5. package/esm2022/lib/models/abstract-form-group.component.mjs +60 -0
  6. package/esm2022/lib/models/abstract-input-component.mjs +99 -0
  7. package/{esm2020 → esm2022}/lib/models/form.model.mjs +1 -1
  8. package/{esm2020 → esm2022}/lib/ngil-ui-common-form-cva.module.mjs +15 -15
  9. package/{esm2020 → esm2022}/lib/utils/control-value-accessor.util.mjs +16 -16
  10. package/{esm2020 → esm2022}/ngil-form-cva.mjs +4 -4
  11. package/{fesm2020 → fesm2022}/ngil-form-cva.mjs +315 -315
  12. package/{fesm2020 → fesm2022}/ngil-form-cva.mjs.map +1 -1
  13. package/index.d.ts +7 -7
  14. package/lib/error-messages.d.ts +1 -1
  15. package/lib/models/abstract-form-array-component.d.ts +32 -32
  16. package/lib/models/abstract-form-component.d.ts +19 -19
  17. package/lib/models/abstract-form-group.component.d.ts +34 -34
  18. package/lib/models/abstract-input-component.d.ts +34 -34
  19. package/lib/models/form.model.d.ts +17 -17
  20. package/lib/ngil-ui-common-form-cva.module.d.ts +7 -7
  21. package/lib/utils/control-value-accessor.util.d.ts +6 -6
  22. package/package.json +8 -141
  23. package/esm2020/lib/error-messages.mjs +0 -15
  24. package/esm2020/lib/models/abstract-form-array-component.mjs +0 -90
  25. package/esm2020/lib/models/abstract-form-component.mjs +0 -53
  26. package/esm2020/lib/models/abstract-form-group.component.mjs +0 -60
  27. package/esm2020/lib/models/abstract-input-component.mjs +0 -99
  28. package/fesm2015/ngil-form-cva.mjs +0 -341
  29. 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
@@ -0,0 +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
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItbWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25naWwvdWkvY29tbW9uL2Zvcm0tY3ZhL3NyYy9saWIvZXJyb3ItbWVzc2FnZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxhQUFhLEdBQTJCO0lBQzVDLFFBQVEsRUFBRSw0QkFBNEI7SUFDdEMsR0FBRyxFQUFFLG1DQUFtQztJQUN4QyxHQUFHLEVBQUUsbUNBQW1DO0lBQ3hDLFNBQVMsRUFBRSw4REFBOEQ7SUFDekUsU0FBUyxFQUFFLG9FQUFvRTtJQUMvRSxLQUFLLEVBQUUsaUNBQWlDO0NBQ3pDLENBQUM7QUFFRixNQUFNLFVBQVUsZUFBZSxDQUFDLFFBQWdCLEVBQUUsWUFBb0M7SUFDcEYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzdCLE9BQU8sK0NBQStDLFFBQVEsRUFBRSxDQUFDO0lBQ25FLENBQUM7SUFFRCxPQUFPLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMseUJBQXlCLEVBQUUsNEJBQTRCLEVBQUUsRUFBRSxDQUMvRyxZQUFZLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxDQUFDLHlCQUF5QixDQUNwSCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGVycm9yTWVzc2FnZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XHJcbiAgcmVxdWlyZWQ6ICd7e2ZpZWxkTmFtZX19IGlzIHJlcXVpcmVkLicsXHJcbiAgbWF4OiAnTWF4aW11bSB7e2ZpZWxkTmFtZX19IGlzIHt7bWF4fX0uJyxcclxuICBtaW46ICdNaW5pbXVtIHt7ZmllbGROYW1lfX0gaXMge3ttaW59fS4nLFxyXG4gIG1heGxlbmd0aDogJ3t7ZmllbGROYW1lfX0gY2FuIGJlIG1heCB7e3JlcXVpcmVkTGVuZ3RofX0gY2hhcmFjdGVycyBsb25nLicsXHJcbiAgbWlubGVuZ3RoOiAne3tmaWVsZE5hbWV9fSBtdXN0IGJlIGF0IGxlYXN0IHt7cmVxdWlyZWRMZW5ndGh9fSBjaGFyYWN0ZXJzIGxvbmcuJyxcclxuICBlbWFpbDogJ3t7ZmllbGROYW1lfX0gbXVzdCBiZSBhbiBlbWFpbC4nXHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXJyb3JNZXNzYWdlKGVycm9yS2V5OiBzdHJpbmcsIHJlcGxhY2VtZW50czogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHN0cmluZyB7XHJcbiAgaWYgKCFlcnJvck1lc3NhZ2VzW2Vycm9yS2V5XSkge1xyXG4gICAgcmV0dXJuIGBNaXNzaW5nIGVycm9yIG1lc3NhZ2UgdG8gdGhlIGVycm9yIHdpdGgga2V5ICR7ZXJyb3JLZXl9YDtcclxuICB9XHJcblxyXG4gIHJldHVybiBlcnJvck1lc3NhZ2VzW2Vycm9yS2V5XS5yZXBsYWNlKC97eyhcXHcrKX19L2csIChwbGFjZWhvbGRlcldpdGhEZWxpbWl0ZXJzLCBwbGFjZWhvbGRlcldpdGhvdXREZWxpbWl0ZXJzKSA9PlxyXG4gICAgcmVwbGFjZW1lbnRzW3BsYWNlaG9sZGVyV2l0aG91dERlbGltaXRlcnNdID8gcmVwbGFjZW1lbnRzW3BsYWNlaG9sZGVyV2l0aG91dERlbGltaXRlcnNdIDogcGxhY2Vob2xkZXJXaXRoRGVsaW1pdGVyc1xyXG4gICk7XHJcbn1cclxuIl19
@@ -0,0 +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
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: AbstractFormArrayComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
85
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.2", type: AbstractFormArrayComponent, ngImport: i0 }); }
86
+ }
87
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: AbstractFormArrayComponent, decorators: [{
88
+ type: Directive
89
+ }] });
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZm9ybS1hcnJheS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25naWwvdWkvY29tbW9uL2Zvcm0tY3ZhL3NyYy9saWIvbW9kZWxzL2Fic3RyYWN0LWZvcm0tYXJyYXktY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFJTCxTQUFTLEVBR1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFHMUM7O0dBRUc7QUFFSCxNQUFNLE9BQWdCLDBCQUEwQjtJQURoRDtRQU9xQixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUlsRCxjQUFTLEdBQUcsSUFBSSxTQUFTLENBQUM7WUFDeEIsU0FBUyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUU7U0FDbEMsQ0FBQyxDQUFDO0tBbUZKO0lBbEZDLElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO0lBQzNDLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVTLGtCQUFrQjtRQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDeEUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNM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QzNCLENBQUM7OEdBOUZtQiwwQkFBMEI7a0dBQTFCLDBCQUEwQjs7MkZBQTFCLDBCQUEwQjtrQkFEL0MsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxyXG4gIEZvcm1BcnJheSxcclxuICBGb3JtR3JvdXAsXHJcbiAgVmFsaWRhdGlvbkVycm9ycyxcclxuICBWYWxpZGF0b3JcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBGb3JtVmFsdWVPZiB9IGZyb20gJy4vZm9ybS5tb2RlbCc7XHJcblxyXG4vKipcclxuICpcclxuICovXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RGb3JtQXJyYXlDb21wb25lbnQ8RiBleHRlbmRzIEFic3RyYWN0Q29udHJvbDxhbnk+PlxyXG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yXHJcbntcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY3JlYXRlRm9ybUFycmF5KCk6IEZvcm1BcnJheTxGPjtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY3JlYXRlRm9ybUFycmF5SXRlbShpdGVtPzogRm9ybVZhbHVlT2Y8Rj4pOiBGO1xyXG5cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByb3RlY3RlZCBvbkNoYW5nZT86ICh2YWx1ZTogRm9ybVZhbHVlT2Y8Rj5bXSkgPT4gdm9pZDtcclxuICBwcm90ZWN0ZWQgb25Ub3VjaGVkPzogKCkgPT4gdm9pZDtcclxuXHJcbiAgZm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICBmb3JtQXJyYXk6IHRoaXMuY3JlYXRlRm9ybUFycmF5KClcclxuICB9KTtcclxuICBnZXQgZm9ybUFycmF5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLmZvcm1BcnJheTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMubGlzdGVuVmFsdWVDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgbGlzdGVuVmFsdWVDaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5vbkNoYW5nZSkge1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5mb3JtQXJyYXkuZ2V0UmF3VmFsdWUoKSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBGb3JtVmFsdWVPZjxGPltdKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUoaXRlbXM6IEZvcm1WYWx1ZU9mPEY+W10gfCB1bmRlZmluZWQgfCBudWxsKTogdm9pZCB7XHJcbiAgICB0aGlzLnByZXBhcmVDb250cm9scyhpdGVtcyk7XHJcblxyXG4gICAgaWYgKGl0ZW1zKSB7XHJcbiAgICAgIHRoaXMuZm9ybUFycmF5LnBhdGNoVmFsdWUoaXRlbXMsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybUFycmF5LnJlc2V0KHVuZGVmaW5lZCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpc0Rpc2FibGVkID8gdGhpcy5mb3JtR3JvdXAuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSkgOiB0aGlzLmZvcm1Hcm91cC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGUoKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgaWYgKHRoaXMuZm9ybUFycmF5LmludmFsaWQpIHtcclxuICAgICAgcmV0dXJuIHsgaW52YWxpZEZvcm1BcnJheTogdHJ1ZSB9O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHByZXBhcmVDb250cm9scyhpdGVtczogRm9ybVZhbHVlT2Y8Rj5bXSB8IHVuZGVmaW5lZCB8IG51bGwpOiB2b2lkIHtcclxuICAgIGl0ZW1zID0gaXRlbXMgfHwgW107XHJcblxyXG4gICAgaWYgKHRoaXMuZm9ybUFycmF5LnZhbHVlLmxlbmd0aCA8IGl0ZW1zLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmFkZEV4dHJhQ29udHJvbHMoaXRlbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmZvcm1BcnJheS52YWx1ZS5sZW5ndGggPiBpdGVtcy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5yZW1vdmVFeHRyYUNvbnRyb2xzKGl0ZW1zKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkRXh0cmFDb250cm9scyhpdGVtczogRm9ybVZhbHVlT2Y8Rj5bXSk6IHZvaWQge1xyXG4gICAgaXRlbXMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybUFycmF5LmF0KGluZGV4KTtcclxuICAgICAgaWYgKCFjb250cm9sKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtQXJyYXkucHVzaCh0aGlzLmNyZWF0ZUZvcm1BcnJheUl0ZW0oaXRlbSkpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlRXh0cmFDb250cm9scyhpdGVtczogRm9ybVZhbHVlT2Y8Rj5bXSk6IHZvaWQge1xyXG4gICAgbGV0IGZvcm1BcnJheUluZGV4ID0gMDtcclxuICAgIHRoaXMuZm9ybUFycmF5LnZhbHVlLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmICghaXRlbXNbaW5kZXhdKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtQXJyYXkucmVtb3ZlQXQoZm9ybUFycmF5SW5kZXgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZvcm1BcnJheUluZGV4Kys7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +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
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: AbstractFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
44
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.2", type: AbstractFormComponent, inputs: { formViewModel: "formViewModel" }, outputs: { submitted: "submitted" }, ngImport: i0 }); }
45
+ }
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZm9ybS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25naWwvdWkvY29tbW9uL2Zvcm0tY3ZhL3NyYy9saWIvbW9kZWxzL2Fic3RyYWN0LWZvcm0tY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBRy9CLE1BQU0sT0FBZ0IscUJBQXFCO0lBRDNDO1FBSVksY0FBUyxHQUFvQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBSXZDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0tBeUNuRDtJQXZDQyxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRVMsbUJBQW1CLENBQUMsS0FBUztRQUNyQyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDbEIsR0FBRyxJQUFJLENBQUMsYUFBYTtnQkFDckIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7YUFDbkIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztRQUN6RixDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ3BGLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs4R0EvQ21CLHFCQUFxQjtrR0FBckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQUQxQyxTQUFTOzhCQUVDLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUksU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RGb3JtQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGZvcm1WaWV3TW9kZWw/OiBUO1xyXG5cclxuICBAT3V0cHV0KCkgc3VibWl0dGVkOiBFdmVudEVtaXR0ZXI8VD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGFic3RyYWN0IGZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgZ2V0IGlzU3VibWl0RGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIXRoaXMuZm9ybS52YWxpZCB8fCB0aGlzLmZvcm0ucHJpc3RpbmU7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNDYW5jZWxEaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5mb3JtLmRpcnR5O1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldEZvcm1EZWZhdWx0VmFsdWUobW9kZWw/OiBUKTogVCB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gbW9kZWw7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHRoaXMuZ2V0Rm9ybURlZmF1bHRWYWx1ZSh0aGlzLmZvcm1WaWV3TW9kZWwpIHx8IHt9LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgfVxyXG5cclxuICBzdWJtaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNTdWJtaXREaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLnN1Ym1pdHRlZC5lbWl0KHtcclxuICAgICAgICAuLi50aGlzLmZvcm1WaWV3TW9kZWwsXHJcbiAgICAgICAgLi4udGhpcy5mb3JtLnZhbHVlXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgT2JqZWN0LnZhbHVlcyh0aGlzLmZvcm0uY29udHJvbHMpLmZvckVhY2goY29udHJvbCA9PiBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYW5jZWwoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNDYW5jZWxEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmZvcm0ucmVzZXQodGhpcy5nZXRGb3JtRGVmYXVsdFZhbHVlKHRoaXMuZm9ybVZpZXdNb2RlbCksIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgdGhpcy5mb3JtLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgICAgIHRoaXMuZm9ybS5tYXJrQXNVbnRvdWNoZWQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +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
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: AbstractFormGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
55
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.2", type: AbstractFormGroupComponent, ngImport: i0 }); }
56
+ }
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: AbstractFormGroupComponent, decorators: [{
58
+ type: Directive
59
+ }] });
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZm9ybS1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25naWwvdWkvY29tbW9uL2Zvcm0tY3ZhL3NyYy9saWIvbW9kZWxzL2Fic3RyYWN0LWZvcm0tZ3JvdXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFpQixTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFcEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSTFDLE1BQU0sT0FBZ0IsMEJBQTBCO0lBRGhEO1FBUXFCLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0tBZ0RuRDtJQTVDQyxlQUFlO1FBQ2IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVTLGtCQUFrQjtRQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDeEUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUE4QztRQUM3RCxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBYztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsVUFBVSxDQUFDLFNBQStCO1FBQ3hDLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM3RCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELENBQUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsVUFBbUI7UUFDbEMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFHLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzNCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNwQyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDOzhHQXREbUIsMEJBQTBCO2tHQUExQiwwQkFBMEI7OzJGQUExQiwwQkFBMEI7a0JBRC9DLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogVGhpcyBjbGFzcyBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGxvZ2ljIGZvciBhIEZvcm1Hcm91cC5cclxuICogTkdfVkFMVUVfQUNDRVNTT1IgYW5kIE5HX1ZBTElEQVRPUlMgbXVzdCBiZSBwcm92aWRlZCBpbiB0aGUgY29tcG9uZW50LlxyXG4gKlxyXG4gKiBUaGUgRm9ybUdyb3VwIGNoYW5nZXMgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGNoYW5nZSB0aGUgcGFyZW50IEZvcm1Db250cm9sIHZhbHVlLlxyXG4gKlxyXG4gKiBFeGFtcGxlOlxyXG5cclxuICovXHJcblxyXG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtR3JvdXAsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEZsYXRGb3JtQ29udHJvbHNPZiwgRm9ybVZhbHVlT2YgfSBmcm9tICcuL2Zvcm0ubW9kZWwnO1xyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdEZvcm1Hcm91cENvbXBvbmVudDxcclxuICBUIGV4dGVuZHMgeyBbSyBpbiBrZXlvZiBUXTogYW55IH0sXHJcbiAgRiBleHRlbmRzIHsgW0sgaW4ga2V5b2YgVF06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT4gfSA9IEZsYXRGb3JtQ29udHJvbHNPZjxUPlxyXG4+IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0XHJcbntcclxuICBhYnN0cmFjdCBmb3JtR3JvdXA6IEZvcm1Hcm91cDxGPjtcclxuXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcm90ZWN0ZWQgb25DaGFuZ2U/OiAodmFsdWU6IEZvcm1WYWx1ZU9mPEZvcm1Hcm91cDxGPj4pID0+IHZvaWQ7XHJcbiAgcHJvdGVjdGVkIG9uVG91Y2hlZD86ICgpID0+IHZvaWQ7XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMubGlzdGVuVmFsdWVDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgbGlzdGVuVmFsdWVDaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5vbkNoYW5nZSkge1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5mb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBGb3JtVmFsdWVPZjxGb3JtR3JvdXA8Rj4+KSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUoZm9ybVZhbHVlOiBUIHwgdW5kZWZpbmVkIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgaWYgKGZvcm1WYWx1ZSkge1xyXG4gICAgICB0aGlzLmZvcm1Hcm91cC5wYXRjaFZhbHVlKGZvcm1WYWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5mb3JtR3JvdXAucmVzZXQodW5kZWZpbmVkLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlzRGlzYWJsZWQgPyB0aGlzLmZvcm1Hcm91cC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KSA6IHRoaXMuZm9ybUdyb3VwLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZSgpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICBpZiAodGhpcy5mb3JtR3JvdXAuaW52YWxpZCkge1xyXG4gICAgICByZXR1cm4geyBpbnZhbGlkRm9ybUdyb3VwOiB0cnVlIH07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,99 @@
1
+ import { Directive, Input, Optional } from '@angular/core';
2
+ import { ControlContainer, FormArray } from '@angular/forms';
3
+ import { BehaviorSubject, Subject, combineLatest } from 'rxjs';
4
+ import { takeUntil } from 'rxjs/operators';
5
+ import { getErrorMessage } from '../error-messages';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/forms";
8
+ export class AbstractInputComponent {
9
+ set errorMessage(errorMessage) {
10
+ this.errorMessage$.next(errorMessage);
11
+ }
12
+ constructor(controlContainer) {
13
+ this.controlContainer = controlContainer;
14
+ this.formControlName = '';
15
+ this.label = '';
16
+ this.readonly = false;
17
+ this.required = false;
18
+ this.disabled = false;
19
+ this.destroy$ = new Subject();
20
+ this.errorMessage$ = new BehaviorSubject('');
21
+ this.model$ = combineLatest({
22
+ errorMessage: this.errorMessage$
23
+ });
24
+ }
25
+ ngOnInit() {
26
+ if (this.controlContainer?.control instanceof FormArray) {
27
+ this.parentControl = this.controlContainer?.control.at(+this.formControlName);
28
+ }
29
+ else {
30
+ this.parentControl = this.controlContainer?.control?.get(this.formControlName);
31
+ }
32
+ this.setRequiredState();
33
+ this.listenStatusChanges();
34
+ }
35
+ setRequiredState() {
36
+ if (!this.parentControl || !this.parentControl?.validator) {
37
+ return;
38
+ }
39
+ const validators = this.parentControl?.validator({ value: '' });
40
+ if (validators && Object.keys(validators).includes('required')) {
41
+ this.required = true;
42
+ }
43
+ }
44
+ onBlur() {
45
+ if (this.onTouched) {
46
+ this.onTouched();
47
+ }
48
+ this.setErrors();
49
+ }
50
+ registerOnChange(fn) {
51
+ this.onChange = fn;
52
+ }
53
+ registerOnTouched(fn) {
54
+ this.onTouched = fn;
55
+ }
56
+ setDisabledState(isDisabled) {
57
+ this.disabled = isDisabled;
58
+ }
59
+ listenStatusChanges() {
60
+ this.parentControl?.statusChanges.pipe(takeUntil(this.destroy$)).subscribe(() => this.setErrors());
61
+ }
62
+ setErrors() {
63
+ if (this.parentControl?.errors) {
64
+ const errorKey = Object.keys(this.parentControl?.errors)[0];
65
+ const errorObj = this.parentControl?.errors[`${errorKey}`];
66
+ this.errorMessage$.next(getErrorMessage(errorKey, {
67
+ fieldName: this.label,
68
+ ...errorObj
69
+ }));
70
+ }
71
+ else {
72
+ this.errorMessage$.next('');
73
+ }
74
+ }
75
+ ngOnDestroy() {
76
+ this.destroy$.next();
77
+ this.destroy$.complete();
78
+ }
79
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: AbstractInputComponent, deps: [{ token: i1.ControlContainer, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
80
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.2", type: AbstractInputComponent, inputs: { formControlName: "formControlName", errorMessage: "errorMessage", label: "label", readonly: "readonly", required: "required", disabled: "disabled" }, ngImport: i0 }); }
81
+ }
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: AbstractInputComponent, decorators: [{
83
+ type: Directive
84
+ }], ctorParameters: () => [{ type: i1.ControlContainer, decorators: [{
85
+ type: Optional
86
+ }] }], propDecorators: { formControlName: [{
87
+ type: Input
88
+ }], errorMessage: [{
89
+ type: Input
90
+ }], label: [{
91
+ type: Input
92
+ }], readonly: [{
93
+ type: Input
94
+ }], required: [{
95
+ type: Input
96
+ }], disabled: [{
97
+ type: Input
98
+ }] } });
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtaW5wdXQtY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2lsL3VpL2NvbW1vbi9mb3JtLWN2YS9zcmMvbGliL21vZGVscy9hYnN0cmFjdC1pbnB1dC1jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBQW1CLGdCQUFnQixFQUF3QixTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBR3BELE1BQU0sT0FBZ0Isc0JBQXNCO0lBRTFDLElBQWEsWUFBWSxDQUFDLFlBQW9CO1FBQzVDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFnQkQsWUFBeUMsZ0JBQW1DO1FBQW5DLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBbUI7UUFuQm5FLG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBSXJCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUtQLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQy9CLGtCQUFhLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUM7UUFFbkUsV0FBTSxHQUFHLGFBQWEsQ0FBQztZQUNyQixZQUFZLEVBQUUsSUFBSSxDQUFDLGFB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QkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBRDNDLFNBQVM7OzBCQXFCSyxRQUFRO3lDQW5CWixlQUFlO3NCQUF2QixLQUFLO2dCQUNPLFlBQVk7c0JBQXhCLEtBQUs7Z0JBR0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbENvbnRhaW5lciwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vZXJyb3ItbWVzc2FnZXMnO1xyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdElucHV0Q29tcG9uZW50PFQgPSBzdHJpbmc+IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBmb3JtQ29udHJvbE5hbWUgPSAnJztcclxuICBASW5wdXQoKSBzZXQgZXJyb3JNZXNzYWdlKGVycm9yTWVzc2FnZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmVycm9yTWVzc2FnZSQubmV4dChlcnJvck1lc3NhZ2UpO1xyXG4gIH1cclxuICBASW5wdXQoKSBsYWJlbCA9ICcnO1xyXG4gIEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcmVxdWlyZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICBwcm90ZWN0ZWQgcGFyZW50Q29udHJvbD86IEFic3RyYWN0Q29udHJvbCB8IG51bGw7XHJcbiAgcHJvdGVjdGVkIG9uQ2hhbmdlPzogKHZhbHVlOiBUIHwgbnVsbCkgPT4gdm9pZDtcclxuICBwcm90ZWN0ZWQgb25Ub3VjaGVkPzogKCkgPT4gdm9pZDtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBlcnJvck1lc3NhZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcclxuXHJcbiAgbW9kZWwkID0gY29tYmluZUxhdGVzdCh7XHJcbiAgICBlcnJvck1lc3NhZ2U6IHRoaXMuZXJyb3JNZXNzYWdlJFxyXG4gIH0pO1xyXG5cclxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IGNvbnRyb2xDb250YWluZXI/OiBDb250cm9sQ29udGFpbmVyKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNvbnRyb2xDb250YWluZXI/LmNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcclxuICAgICAgdGhpcy5wYXJlbnRDb250cm9sID0gdGhpcy5jb250cm9sQ29udGFpbmVyPy5jb250cm9sLmF0KCt0aGlzLmZvcm1Db250cm9sTmFtZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnBhcmVudENvbnRyb2wgPSB0aGlzLmNvbnRyb2xDb250YWluZXI/LmNvbnRyb2w/LmdldCh0aGlzLmZvcm1Db250cm9sTmFtZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFJlcXVpcmVkU3RhdGUoKTtcclxuICAgIHRoaXMubGlzdGVuU3RhdHVzQ2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRSZXF1aXJlZFN0YXRlKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnBhcmVudENvbnRyb2wgfHwgIXRoaXMucGFyZW50Q29udHJvbD8udmFsaWRhdG9yKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB2YWxpZGF0b3JzID0gdGhpcy5wYXJlbnRDb250cm9sPy52YWxpZGF0b3IoeyB2YWx1ZTogJycgfSBhcyBBYnN0cmFjdENvbnRyb2wpO1xyXG4gICAgaWYgKHZhbGlkYXRvcnMgJiYgT2JqZWN0LmtleXModmFsaWRhdG9ycykuaW5jbHVkZXMoJ3JlcXVpcmVkJykpIHtcclxuICAgICAgdGhpcy5yZXF1aXJlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5vblRvdWNoZWQpIHtcclxuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0RXJyb3JzKCk7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IFQgfCBudWxsKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBhYnN0cmFjdCB3cml0ZVZhbHVlKHZhbHVlOiBUKTogdm9pZDtcclxuXHJcbiAgcHJvdGVjdGVkIGxpc3RlblN0YXR1c0NoYW5nZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnBhcmVudENvbnRyb2w/LnN0YXR1c0NoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnNldEVycm9ycygpKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBzZXRFcnJvcnMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5wYXJlbnRDb250cm9sPy5lcnJvcnMpIHtcclxuICAgICAgY29uc3QgZXJyb3JLZXkgPSBPYmplY3Qua2V5cyh0aGlzLnBhcmVudENvbnRyb2w/LmVycm9ycylbMF07XHJcbiAgICAgIGNvbnN0IGVycm9yT2JqID0gdGhpcy5wYXJlbnRDb250cm9sPy5lcnJvcnNbYCR7ZXJyb3JLZXl9YF07XHJcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlJC5uZXh0KFxyXG4gICAgICAgIGdldEVycm9yTWVzc2FnZShlcnJvcktleSwge1xyXG4gICAgICAgICAgZmllbGROYW1lOiB0aGlzLmxhYmVsLFxyXG4gICAgICAgICAgLi4uZXJyb3JPYmpcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UkLm5leHQoJycpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdpbC91aS9jb21tb24vZm9ybS1jdmEvc3JjL2xpYi9tb2RlbHMvZm9ybS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuLyoqXHJcbiAqIENyZWF0ZSBGb3JtQ29udHJvbCBvciBGb3JtR3JvdXAgdHlwZXMgdG8gdXNlZCBpbiBhIEZvcm1Hcm91cCB1c2luZyBhIGludGVyZmFjZVxyXG4gKi9cclxuZXhwb3J0IHR5cGUgRm9ybUNvbnRyb2xzT2Y8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4+ID0ge1xyXG4gIFtLIGluIGtleW9mIFJlcXVpcmVkPFQ+XTogUmVxdWlyZWQ8VD5bS10gZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+XHJcbiAgICA/IFJlcXVpcmVkPFQ+W0tdIGV4dGVuZHMgYW55W11cclxuICAgICAgPyBGb3JtQ29udHJvbDxUW0tdIHwgbnVsbD5cclxuICAgICAgOiBGb3JtR3JvdXA8Rm9ybUNvbnRyb2xzT2Y8UmVxdWlyZWQ8VD5bS10+PlxyXG4gICAgOiBGb3JtQ29udHJvbDxUW0tdIHwgbnVsbD47XHJcbn07XHJcblxyXG4vKipcclxuICogV3JhcCBldmVyeSBwcm9wZXJ0eSBpbiB0aGUgUmVjb3JkIFQgaW4gYSBGb3JtQ29udHJvbCB0eXBlXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBGbGF0Rm9ybUNvbnRyb2xzT2Y8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4+ID0ge1xyXG4gIFtLIGluIGtleW9mIFRdOiBGb3JtQ29udHJvbDxUW0tdIHwgbnVsbD47XHJcbn07XHJcblxyXG4vKipcclxuICogR2l2ZXMgdGhlIGZvcm0gdmFsdWUgdHlwZVxyXG4gKi9cclxuZXhwb3J0IHR5cGUgRm9ybVZhbHVlT2Y8VCBleHRlbmRzIEFic3RyYWN0Q29udHJvbDxhbnk+PiA9IFRbJ3ZhbHVlJ107XHJcbiJdfQ==
@@ -1,15 +1,15 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import * as i0 from "@angular/core";
4
- export class NgilUiCommonFormCvaModule {
5
- }
6
- NgilUiCommonFormCvaModulefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NgilUiCommonFormCvaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7
- NgilUiCommonFormCvaModulemod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: NgilUiCommonFormCvaModule, imports: [CommonModule] });
8
- NgilUiCommonFormCvaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NgilUiCommonFormCvaModule, imports: [CommonModule] });
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NgilUiCommonFormCvaModule, decorators: [{
10
- type: NgModule,
11
- args: [{
12
- imports: [CommonModule]
13
- }]
14
- }] });
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdpbC11aS1jb21tb24tZm9ybS1jdmEubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2lsL3VpL2NvbW1vbi9mb3JtLWN2YS9zcmMvbGliL25naWwtdWktY29tbW9uLWZvcm0tY3ZhLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFLL0MsTUFBTSxPQUFPLHlCQUF5Qjs7c0hBQXpCLHlCQUF5Qjt1SEFBekIseUJBQXlCLFlBRjFCLFlBQVk7dUhBRVgseUJBQXlCLFlBRjFCLFlBQVk7MkZBRVgseUJBQXlCO2tCQUhyQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmdpbFVpQ29tbW9uRm9ybUN2YU1vZHVsZSB7fVxyXG4iXX0=
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import * as i0 from "@angular/core";
4
+ export class NgilUiCommonFormCvaModule {
5
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgilUiCommonFormCvaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6
+ static { thismod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.2", ngImport: i0, type: NgilUiCommonFormCvaModule, imports: [CommonModule] }); }
7
+ static { thisinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgilUiCommonFormCvaModule, imports: [CommonModule] }); }
8
+ }
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgilUiCommonFormCvaModule, decorators: [{
10
+ type: NgModule,
11
+ args: [{
12
+ imports: [CommonModule]
13
+ }]
14
+ }] });
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdpbC11aS1jb21tb24tZm9ybS1jdmEubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2lsL3VpL2NvbW1vbi9mb3JtLWN2YS9zcmMvbGliL25naWwtdWktY29tbW9uLWZvcm0tY3ZhLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFLL0MsTUFBTSxPQUFPLHlCQUF5Qjs4R0FBekIseUJBQXlCOytHQUF6Qix5QkFBeUIsWUFGMUIsWUFBWTsrR0FFWCx5QkFBeUIsWUFGMUIsWUFBWTs7MkZBRVgseUJBQXlCO2tCQUhyQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmdpbFVpQ29tbW9uRm9ybUN2YU1vZHVsZSB7fVxyXG4iXX0=
@@ -1,17 +1,17 @@
1
- import { forwardRef } from '@angular/core';
2
- import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
3
- export function createControlValueAccessorProviders(component) {
4
- return [
5
- {
6
- provide: NG_VALUE_ACCESSOR,
7
- useExisting: forwardRef(() => component),
8
- multi: true
9
- },
10
- {
11
- provide: NG_VALIDATORS,
12
- useExisting: forwardRef(() => component),
13
- multi: true
14
- }
15
- ];
16
- }
1
+ import { forwardRef } from '@angular/core';
2
+ import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ export function createControlValueAccessorProviders(component) {
4
+ return [
5
+ {
6
+ provide: NG_VALUE_ACCESSOR,
7
+ useExisting: forwardRef(() => component),
8
+ multi: true
9
+ },
10
+ {
11
+ provide: NG_VALIDATORS,
12
+ useExisting: forwardRef(() => component),
13
+ multi: true
14
+ }
15
+ ];
16
+ }
17
17
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC12YWx1ZS1hY2Nlc3Nvci51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2lsL3VpL2NvbW1vbi9mb3JtLWN2YS9zcmMvbGliL3V0aWxzL2NvbnRyb2wtdmFsdWUtYWNjZXNzb3IudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRSxNQUFNLFVBQVUsbUNBQW1DLENBQUMsU0FBd0I7SUFDMUUsT0FBTztRQUNMO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUN4QyxLQUFLLEVBQUUsSUFBSTtTQUNaO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsYUFBYTtZQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUN4QyxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmb3J3YXJkUmVmLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbnRyb2xWYWx1ZUFjY2Vzc29yUHJvdmlkZXJzKGNvbXBvbmVudDogVHlwZTx1bmtub3duPikge1xyXG4gIHJldHVybiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBjb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gY29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1cclxuICBdO1xyXG59XHJcbiJdfQ==
@@ -1,5 +1,5 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
5
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdpbC1mb3JtLWN2YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdpbC91aS9jb21tb24vZm9ybS1jdmEvc3JjL25naWwtZm9ybS1jdmEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=