@3kles/kles-material-dynamicforms 14.0.3 → 14.0.6

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 (102) hide show
  1. package/README.md +24 -24
  2. package/esm2020/3kles-kles-material-dynamicforms.mjs +4 -4
  3. package/esm2020/lib/decorators/component.decorator.mjs +7 -7
  4. package/esm2020/lib/directive/dynamic-component.directive.mjs +44 -44
  5. package/esm2020/lib/directive/dynamic-field.directive.mjs +50 -50
  6. package/esm2020/lib/dynamic-form.component.mjs +287 -251
  7. package/esm2020/lib/enums/type.enum.mjs +19 -19
  8. package/esm2020/lib/fields/array.component.mjs +57 -57
  9. package/esm2020/lib/fields/badge.component.mjs +40 -40
  10. package/esm2020/lib/fields/button-form.component.mjs +44 -44
  11. package/esm2020/lib/fields/button-submit.component.mjs +38 -38
  12. package/esm2020/lib/fields/button-toogle-group.component.mjs +51 -51
  13. package/esm2020/lib/fields/buttonchecker-form.component.mjs +44 -44
  14. package/esm2020/lib/fields/buttonfile-form.component.mjs +42 -42
  15. package/esm2020/lib/fields/checkbox.component.mjs +50 -50
  16. package/esm2020/lib/fields/chip.component.mjs +41 -41
  17. package/esm2020/lib/fields/color.component.mjs +84 -84
  18. package/esm2020/lib/fields/date.component.mjs +52 -52
  19. package/esm2020/lib/fields/field.abstract.mjs +66 -66
  20. package/esm2020/lib/fields/group.component.mjs +48 -48
  21. package/esm2020/lib/fields/icon.component.mjs +28 -28
  22. package/esm2020/lib/fields/input.clearable.component.mjs +112 -112
  23. package/esm2020/lib/fields/input.component.mjs +158 -158
  24. package/esm2020/lib/fields/label.component.mjs +40 -40
  25. package/esm2020/lib/fields/line-break.component.mjs +23 -23
  26. package/esm2020/lib/fields/link.component.mjs +32 -32
  27. package/esm2020/lib/fields/list-field.component.mjs +114 -114
  28. package/esm2020/lib/fields/radio.component.mjs +49 -49
  29. package/esm2020/lib/fields/select.component.mjs +268 -211
  30. package/esm2020/lib/fields/select.search.component.mjs +357 -307
  31. package/esm2020/lib/fields/selection-list.component.mjs +63 -63
  32. package/esm2020/lib/fields/slide-toggle.component.mjs +43 -43
  33. package/esm2020/lib/fields/text.component.mjs +40 -40
  34. package/esm2020/lib/fields/textarea.component.mjs +56 -56
  35. package/esm2020/lib/forms/button-control.component.mjs +115 -115
  36. package/esm2020/lib/forms/buttonchecker-control.component.mjs +85 -85
  37. package/esm2020/lib/forms/buttonfile-control.component.mjs +118 -118
  38. package/esm2020/lib/interfaces/component.interface.mjs +2 -2
  39. package/esm2020/lib/interfaces/directive.interface.mjs +2 -2
  40. package/esm2020/lib/interfaces/field.config.interface.mjs +2 -2
  41. package/esm2020/lib/interfaces/field.interface.mjs +2 -2
  42. package/esm2020/lib/interfaces/validator.interface.mjs +2 -2
  43. package/esm2020/lib/kles-material-dynamicforms.module.mjs +196 -191
  44. package/esm2020/lib/matcher/form-error.matcher.mjs +16 -16
  45. package/esm2020/lib/modules/material.module.mjs +278 -278
  46. package/esm2020/lib/pipe/array.pipe.mjs +22 -22
  47. package/esm2020/lib/pipe/transform.pipe.mjs +27 -27
  48. package/esm2020/lib/validators/autocomplete.validator.mjs +23 -23
  49. package/esm2020/public-api.mjs +59 -59
  50. package/fesm2015/3kles-kles-material-dynamicforms.mjs +2843 -2700
  51. package/fesm2015/3kles-kles-material-dynamicforms.mjs.map +1 -1
  52. package/fesm2020/3kles-kles-material-dynamicforms.mjs +2839 -2696
  53. package/fesm2020/3kles-kles-material-dynamicforms.mjs.map +1 -1
  54. package/index.d.ts +5 -5
  55. package/lib/decorators/component.decorator.d.ts +8 -8
  56. package/lib/directive/dynamic-component.directive.d.ts +16 -16
  57. package/lib/directive/dynamic-field.directive.d.ts +18 -18
  58. package/lib/dynamic-form.component.d.ts +32 -31
  59. package/lib/enums/type.enum.d.ts +17 -17
  60. package/lib/fields/array.component.d.ts +11 -11
  61. package/lib/fields/badge.component.d.ts +9 -9
  62. package/lib/fields/button-form.component.d.ts +9 -9
  63. package/lib/fields/button-submit.component.d.ts +9 -9
  64. package/lib/fields/button-toogle-group.component.d.ts +11 -11
  65. package/lib/fields/buttonchecker-form.component.d.ts +9 -9
  66. package/lib/fields/buttonfile-form.component.d.ts +9 -9
  67. package/lib/fields/checkbox.component.d.ts +9 -9
  68. package/lib/fields/chip.component.d.ts +9 -9
  69. package/lib/fields/color.component.d.ts +10 -10
  70. package/lib/fields/date.component.d.ts +9 -9
  71. package/lib/fields/field.abstract.d.ts +21 -21
  72. package/lib/fields/group.component.d.ts +11 -11
  73. package/lib/fields/icon.component.d.ts +9 -9
  74. package/lib/fields/input.clearable.component.d.ts +8 -8
  75. package/lib/fields/input.component.d.ts +15 -15
  76. package/lib/fields/label.component.d.ts +9 -9
  77. package/lib/fields/line-break.component.d.ts +9 -9
  78. package/lib/fields/link.component.d.ts +9 -9
  79. package/lib/fields/list-field.component.d.ts +19 -19
  80. package/lib/fields/radio.component.d.ts +9 -9
  81. package/lib/fields/select.component.d.ts +20 -19
  82. package/lib/fields/select.search.component.d.ts +23 -22
  83. package/lib/fields/selection-list.component.d.ts +11 -11
  84. package/lib/fields/slide-toggle.component.d.ts +9 -9
  85. package/lib/fields/text.component.d.ts +9 -9
  86. package/lib/fields/textarea.component.d.ts +9 -9
  87. package/lib/forms/button-control.component.d.ts +36 -36
  88. package/lib/forms/buttonchecker-control.component.d.ts +14 -14
  89. package/lib/forms/buttonfile-control.component.d.ts +20 -20
  90. package/lib/interfaces/component.interface.d.ts +5 -5
  91. package/lib/interfaces/directive.interface.d.ts +3 -3
  92. package/lib/interfaces/field.config.interface.d.ts +59 -58
  93. package/lib/interfaces/field.interface.d.ts +7 -7
  94. package/lib/interfaces/validator.interface.d.ts +5 -5
  95. package/lib/kles-material-dynamicforms.module.d.ts +56 -47
  96. package/lib/matcher/form-error.matcher.d.ts +9 -9
  97. package/lib/modules/material.module.d.ts +42 -42
  98. package/lib/pipe/array.pipe.d.ts +7 -7
  99. package/lib/pipe/transform.pipe.d.ts +10 -10
  100. package/lib/validators/autocomplete.validator.d.ts +3 -3
  101. package/package.json +1 -3
  102. package/public-api.d.ts +54 -54
@@ -1,32 +1,32 @@
1
- import { Component } from "@angular/core";
2
- import { KlesFieldAbstract } from "./field.abstract";
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- import * as i2 from "@angular/flex-layout/extended";
6
- import * as i3 from "@angular/material/tooltip";
7
- export class KlesFormLinkComponent extends KlesFieldAbstract {
8
- ngOnInit() {
9
- super.ngOnInit();
10
- }
11
- ngOnDestroy() {
12
- super.ngOnDestroy();
13
- }
14
- }
15
- KlesFormLinkComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: KlesFormLinkComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
16
- KlesFormLinkComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.1", type: KlesFormLinkComponent, selector: "kles-form-link", usesInheritance: true, ngImport: i0, template: `
17
- <a [href]="group.controls[field.name].value" matTooltip="{{field.tooltip}}" [attr.id]="field.id" [ngClass]="field.ngClass">
18
- {{field.label}}
19
- </a>
20
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: KlesFormLinkComponent, decorators: [{
22
- type: Component,
23
- args: [{
24
- selector: 'kles-form-link',
25
- template: `
26
- <a [href]="group.controls[field.name].value" matTooltip="{{field.tooltip}}" [attr.id]="field.id" [ngClass]="field.ngClass">
27
- {{field.label}}
28
- </a>
29
- `
30
- }]
31
- }] });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGVzLW1hdGVyaWFsLWR5bmFtaWNmb3Jtcy9zcmMvbGliL2ZpZWxkcy9saW5rLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7QUFVckQsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGlCQUFpQjtJQUV4RCxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxXQUFXO1FBQ1AsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7O2tIQVJRLHFCQUFxQjtzR0FBckIscUJBQXFCLDZFQU5wQjs7OztDQUliOzJGQUVZLHFCQUFxQjtrQkFSakMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixRQUFRLEVBQUU7Ozs7Q0FJYjtpQkFDQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBLbGVzRmllbGRBYnN0cmFjdCB9IGZyb20gXCIuL2ZpZWxkLmFic3RyYWN0XCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAna2xlcy1mb3JtLWxpbmsnLFxyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgICAgICA8YSBbaHJlZl09XCJncm91cC5jb250cm9sc1tmaWVsZC5uYW1lXS52YWx1ZVwiIG1hdFRvb2x0aXA9XCJ7e2ZpZWxkLnRvb2x0aXB9fVwiIFthdHRyLmlkXT1cImZpZWxkLmlkXCIgW25nQ2xhc3NdPVwiZmllbGQubmdDbGFzc1wiPlxyXG4gICAgICAgICAgICB7e2ZpZWxkLmxhYmVsfX1cclxuICAgICAgICA8L2E+XHJcbmBcclxufSlcclxuZXhwb3J0IGNsYXNzIEtsZXNGb3JtTGlua0NvbXBvbmVudCBleHRlbmRzIEtsZXNGaWVsZEFic3RyYWN0IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcclxuICAgIH1cclxufVxyXG4iXX0=
1
+ import { Component } from "@angular/core";
2
+ import { KlesFieldAbstract } from "./field.abstract";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@angular/flex-layout/extended";
6
+ import * as i3 from "@angular/material/tooltip";
7
+ export class KlesFormLinkComponent extends KlesFieldAbstract {
8
+ ngOnInit() {
9
+ super.ngOnInit();
10
+ }
11
+ ngOnDestroy() {
12
+ super.ngOnDestroy();
13
+ }
14
+ }
15
+ KlesFormLinkComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: KlesFormLinkComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
16
+ KlesFormLinkComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: KlesFormLinkComponent, selector: "kles-form-link", usesInheritance: true, ngImport: i0, template: `
17
+ <a [href]="group.controls[field.name].value" matTooltip="{{field.tooltip}}" [attr.id]="field.id" [ngClass]="field.ngClass">
18
+ {{field.label}}
19
+ </a>
20
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: KlesFormLinkComponent, decorators: [{
22
+ type: Component,
23
+ args: [{
24
+ selector: 'kles-form-link',
25
+ template: `
26
+ <a [href]="group.controls[field.name].value" matTooltip="{{field.tooltip}}" [attr.id]="field.id" [ngClass]="field.ngClass">
27
+ {{field.label}}
28
+ </a>
29
+ `
30
+ }]
31
+ }] });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGVzLW1hdGVyaWFsLWR5bmFtaWNmb3Jtcy9zcmMvbGliL2ZpZWxkcy9saW5rLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7QUFVckQsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGlCQUFpQjtJQUV4RCxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxXQUFXO1FBQ1AsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7O2tIQVJRLHFCQUFxQjtzR0FBckIscUJBQXFCLDZFQU5wQjs7OztDQUliOzJGQUVZLHFCQUFxQjtrQkFSakMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixRQUFRLEVBQUU7Ozs7Q0FJYjtpQkFDQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgS2xlc0ZpZWxkQWJzdHJhY3QgfSBmcm9tIFwiLi9maWVsZC5hYnN0cmFjdFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2tsZXMtZm9ybS1saW5rJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8YSBbaHJlZl09XCJncm91cC5jb250cm9sc1tmaWVsZC5uYW1lXS52YWx1ZVwiIG1hdFRvb2x0aXA9XCJ7e2ZpZWxkLnRvb2x0aXB9fVwiIFthdHRyLmlkXT1cImZpZWxkLmlkXCIgW25nQ2xhc3NdPVwiZmllbGQubmdDbGFzc1wiPlxuICAgICAgICAgICAge3tmaWVsZC5sYWJlbH19XG4gICAgICAgIDwvYT5cbmBcbn0pXG5leHBvcnQgY2xhc3MgS2xlc0Zvcm1MaW5rQ29tcG9uZW50IGV4dGVuZHMgS2xlc0ZpZWxkQWJzdHJhY3QgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG59XG4iXX0=
@@ -1,114 +1,114 @@
1
- import { Component } from '@angular/core';
2
- import { KlesFieldAbstract } from './field.abstract';
3
- import { Validators } from '@angular/forms';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/forms";
6
- import * as i2 from "@angular/common";
7
- import * as i3 from "@angular/flex-layout/flex";
8
- import * as i4 from "@angular/material/button";
9
- import * as i5 from "@angular/material/icon";
10
- import * as i6 from "@angular/material/form-field";
11
- import * as i7 from "@ngx-translate/core";
12
- export class KlesFormListFieldComponent extends KlesFieldAbstract {
13
- constructor(fb, viewRef) {
14
- super(viewRef);
15
- this.fb = fb;
16
- this.viewRef = viewRef;
17
- }
18
- ngOnInit() {
19
- this.formArray = this.group.controls[this.field.name];
20
- super.ngOnInit();
21
- }
22
- createFormGroup() {
23
- const group = this.fb.group({});
24
- this.field.collections.forEach(item => {
25
- const control = this.fb.control(null, this.bindValidations(item.validations || []), this.bindAsyncValidations(item.asyncValidations || []));
26
- group.addControl(item.name, control);
27
- });
28
- return group;
29
- }
30
- deleteField(index) {
31
- this.formArray.removeAt(index);
32
- }
33
- addField() {
34
- this.formArray.push(this.createFormGroup());
35
- }
36
- bindValidations(validations) {
37
- if (validations.length > 0) {
38
- const validList = [];
39
- validations.forEach(valid => {
40
- validList.push(valid.validator);
41
- });
42
- return Validators.compose(validList);
43
- }
44
- return null;
45
- }
46
- bindAsyncValidations(validations) {
47
- if (validations.length > 0) {
48
- const validList = [];
49
- validations.forEach(valid => {
50
- validList.push(valid.validator);
51
- });
52
- return Validators.composeAsync(validList);
53
- }
54
- return null;
55
- }
56
- ngOnDestroy() {
57
- super.ngOnDestroy();
58
- }
59
- }
60
- KlesFormListFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: KlesFormListFieldComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
61
- KlesFormListFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.1", type: KlesFormListFieldComponent, selector: "kles-form-listfield", usesInheritance: true, ngImport: i0, template: `
62
- <div [formGroup]="group" class="form-element">
63
- {{field.label | translate}}
64
- <button mat-icon-button color="primary" (click)="addField()">
65
- <mat-icon>add</mat-icon>
66
- </button>
67
-
68
- <div class="dynamic-form" [formGroupName]="field.name">
69
- <div *ngFor="let subGroup of formArray.controls let index = index;" fxLayout="row" fxLayoutGap="5px">
70
- <ng-container *ngFor="let subfield of field.collections;"
71
- dynamicField [field]="subfield" [group]="subGroup">
72
- </ng-container>
73
- <button mat-icon-button (click)="deleteField(index)" color="primary">
74
- <mat-icon>delete_outlined</mat-icon>
75
- </button>
76
- </div>
77
- <ng-container *ngFor="let validation of field.validations;" ngProjectAs="mat-error">
78
- <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
79
- </ng-container>
80
- <ng-container *ngFor="let validation of field.asyncValidations;" ngProjectAs="mat-error">
81
- <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
82
- </ng-container>
83
- </div>
84
- </div>
85
- `, isInline: true, dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i3.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "component", type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
86
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: KlesFormListFieldComponent, decorators: [{
87
- type: Component,
88
- args: [{ selector: 'kles-form-listfield', template: `
89
- <div [formGroup]="group" class="form-element">
90
- {{field.label | translate}}
91
- <button mat-icon-button color="primary" (click)="addField()">
92
- <mat-icon>add</mat-icon>
93
- </button>
94
-
95
- <div class="dynamic-form" [formGroupName]="field.name">
96
- <div *ngFor="let subGroup of formArray.controls let index = index;" fxLayout="row" fxLayoutGap="5px">
97
- <ng-container *ngFor="let subfield of field.collections;"
98
- dynamicField [field]="subfield" [group]="subGroup">
99
- </ng-container>
100
- <button mat-icon-button (click)="deleteField(index)" color="primary">
101
- <mat-icon>delete_outlined</mat-icon>
102
- </button>
103
- </div>
104
- <ng-container *ngFor="let validation of field.validations;" ngProjectAs="mat-error">
105
- <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
106
- </ng-container>
107
- <ng-container *ngFor="let validation of field.asyncValidations;" ngProjectAs="mat-error">
108
- <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
109
- </ng-container>
110
- </div>
111
- </div>
112
- ` }]
113
- }], ctorParameters: function () { return [{ type: i1.UntypedFormBuilder }, { type: i0.ViewContainerRef }]; } });
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGVzLW1hdGVyaWFsLWR5bmFtaWNmb3Jtcy9zcmMvbGliL2ZpZWxkcy9saXN0LWZpZWxkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUF1QyxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRCxPQUFPLEVBQXVFLFVBQVUsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBZ0NuSSxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsaUJBQWlCO0lBSTdELFlBQW9CLEVBQXNCLEVBQVksT0FBeUI7UUFDM0UsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBREMsT0FBRSxHQUFGLEVBQUUsQ0FBb0I7UUFBWSxZQUFPLEdBQVAsT0FBTyxDQUFrQjtJQUUvRSxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQXFCLENBQUM7UUFDMUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFTyxlQUFlO1FBQ25CLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNsQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FDM0IsSUFBSSxFQUNKLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsRUFDNUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQUMsQ0FDekQsQ0FBQztZQUNGLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUV6QyxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sS0FBSyxDQUFDO0lBRWpCLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYTtRQUNyQixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFHTyxlQUFlLENBQUMsV0FBMEM7UUFDOUQsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN4QixNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7WUFDckIsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDeEIsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEMsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7U0FFeEM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBR08sb0JBQW9CLENBQUMsV0FBK0M7UUFDeEUsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN4QixNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7WUFDckIsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDeEIsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEMsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLFVBQVUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7U0FFN0M7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsV0FBVztRQUNQLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QixDQUFDOzt1SEFqRVEsMEJBQTBCOzJHQUExQiwwQkFBMEIsa0ZBM0J6Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBd0JUOzJGQUdRLDBCQUEwQjtrQkE3QnRDLFNBQVM7K0JBQ0kscUJBQXFCLFlBQ3JCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0F3QlQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEtsZXNGaWVsZEFic3RyYWN0IH0gZnJvbSAnLi9maWVsZC5hYnN0cmFjdCc7XHJcbmltcG9ydCB7IFVudHlwZWRGb3JtR3JvdXAsIFVudHlwZWRGb3JtQXJyYXksIFVudHlwZWRGb3JtQnVpbGRlciwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMsIEFzeW5jVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IElLbGVzVmFsaWRhdG9yIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy92YWxpZGF0b3IuaW50ZXJmYWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdrbGVzLWZvcm0tbGlzdGZpZWxkJyxcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IFtmb3JtR3JvdXBdPVwiZ3JvdXBcIiBjbGFzcz1cImZvcm0tZWxlbWVudFwiPlxyXG4gICAgICAgIHt7ZmllbGQubGFiZWwgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJhZGRGaWVsZCgpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5hZGQ8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1mb3JtXCIgW2Zvcm1Hcm91cE5hbWVdPVwiZmllbGQubmFtZVwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzdWJHcm91cCBvZiBmb3JtQXJyYXkuY29udHJvbHMgbGV0IGluZGV4ID0gaW5kZXg7XCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjVweFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3ViZmllbGQgb2YgZmllbGQuY29sbGVjdGlvbnM7XCJcclxuICAgICAgICAgICAgICAgICAgICBkeW5hbWljRmllbGQgW2ZpZWxkXT1cInN1YmZpZWxkXCIgW2dyb3VwXT1cInN1Ykdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJkZWxldGVGaWVsZChpbmRleClcIiBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+ZGVsZXRlX291dGxpbmVkPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdmFsaWRhdGlvbiBvZiBmaWVsZC52YWxpZGF0aW9ucztcIiBuZ1Byb2plY3RBcz1cIm1hdC1lcnJvclwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImdyb3VwLmdldChmaWVsZC5uYW1lKS5oYXNFcnJvcih2YWxpZGF0aW9uLm5hbWUpXCI+e3t2YWxpZGF0aW9uLm1lc3NhZ2UgfCB0cmFuc2xhdGV9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdmFsaWRhdGlvbiBvZiBmaWVsZC5hc3luY1ZhbGlkYXRpb25zO1wiIG5nUHJvamVjdEFzPVwibWF0LWVycm9yXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZ3JvdXAuZ2V0KGZpZWxkLm5hbWUpLmhhc0Vycm9yKHZhbGlkYXRpb24ubmFtZSlcIj57e3ZhbGlkYXRpb24ubWVzc2FnZSB8IHRyYW5zbGF0ZX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICBgLFxyXG4gICAgc3R5bGVzOiBbXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgS2xlc0Zvcm1MaXN0RmllbGRDb21wb25lbnQgZXh0ZW5kcyBLbGVzRmllbGRBYnN0cmFjdCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgICBmb3JtQXJyYXk6IFVudHlwZWRGb3JtQXJyYXk7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogVW50eXBlZEZvcm1CdWlsZGVyLCBwcm90ZWN0ZWQgdmlld1JlZjogVmlld0NvbnRhaW5lclJlZikge1xyXG4gICAgICAgIHN1cGVyKHZpZXdSZWYpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZm9ybUFycmF5ID0gdGhpcy5ncm91cC5jb250cm9sc1t0aGlzLmZpZWxkLm5hbWVdIGFzIFVudHlwZWRGb3JtQXJyYXk7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNyZWF0ZUZvcm1Hcm91cCgpOiBVbnR5cGVkRm9ybUdyb3VwIHtcclxuICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuZmIuZ3JvdXAoe30pO1xyXG4gICAgICAgIHRoaXMuZmllbGQuY29sbGVjdGlvbnMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZmIuY29udHJvbChcclxuICAgICAgICAgICAgICAgIG51bGwsXHJcbiAgICAgICAgICAgICAgICB0aGlzLmJpbmRWYWxpZGF0aW9ucyhpdGVtLnZhbGlkYXRpb25zIHx8IFtdKSxcclxuICAgICAgICAgICAgICAgIHRoaXMuYmluZEFzeW5jVmFsaWRhdGlvbnMoaXRlbS5hc3luY1ZhbGlkYXRpb25zIHx8IFtdKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBncm91cC5hZGRDb250cm9sKGl0ZW0ubmFtZSwgY29udHJvbCk7XHJcblxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gZ3JvdXA7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZUZpZWxkKGluZGV4OiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLmZvcm1BcnJheS5yZW1vdmVBdChpbmRleCk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkRmllbGQoKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtQXJyYXkucHVzaCh0aGlzLmNyZWF0ZUZvcm1Hcm91cCgpKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJpdmF0ZSBiaW5kVmFsaWRhdGlvbnModmFsaWRhdGlvbnM6IElLbGVzVmFsaWRhdG9yPFZhbGlkYXRvckZuPltdKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgICAgIGlmICh2YWxpZGF0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9ucy5mb3JFYWNoKHZhbGlkID0+IHtcclxuICAgICAgICAgICAgICAgIHZhbGlkTGlzdC5wdXNoKHZhbGlkLnZhbGlkYXRvcik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gVmFsaWRhdG9ycy5jb21wb3NlKHZhbGlkTGlzdCk7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJpdmF0ZSBiaW5kQXN5bmNWYWxpZGF0aW9ucyh2YWxpZGF0aW9uczogSUtsZXNWYWxpZGF0b3I8QXN5bmNWYWxpZGF0b3JGbj5bXSk6IEFzeW5jVmFsaWRhdG9yRm4ge1xyXG4gICAgICAgIGlmICh2YWxpZGF0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9ucy5mb3JFYWNoKHZhbGlkID0+IHtcclxuICAgICAgICAgICAgICAgIHZhbGlkTGlzdC5wdXNoKHZhbGlkLnZhbGlkYXRvcik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gVmFsaWRhdG9ycy5jb21wb3NlQXN5bmModmFsaWRMaXN0KTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbiJdfQ==
1
+ import { Component } from '@angular/core';
2
+ import { KlesFieldAbstract } from './field.abstract';
3
+ import { Validators } from '@angular/forms';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/forms";
6
+ import * as i2 from "@angular/common";
7
+ import * as i3 from "@angular/flex-layout/flex";
8
+ import * as i4 from "@angular/material/button";
9
+ import * as i5 from "@angular/material/icon";
10
+ import * as i6 from "@angular/material/form-field";
11
+ import * as i7 from "@ngx-translate/core";
12
+ export class KlesFormListFieldComponent extends KlesFieldAbstract {
13
+ constructor(fb, viewRef) {
14
+ super(viewRef);
15
+ this.fb = fb;
16
+ this.viewRef = viewRef;
17
+ }
18
+ ngOnInit() {
19
+ this.formArray = this.group.controls[this.field.name];
20
+ super.ngOnInit();
21
+ }
22
+ createFormGroup() {
23
+ const group = this.fb.group({});
24
+ this.field.collections.forEach(item => {
25
+ const control = this.fb.control(null, this.bindValidations(item.validations || []), this.bindAsyncValidations(item.asyncValidations || []));
26
+ group.addControl(item.name, control);
27
+ });
28
+ return group;
29
+ }
30
+ deleteField(index) {
31
+ this.formArray.removeAt(index);
32
+ }
33
+ addField() {
34
+ this.formArray.push(this.createFormGroup());
35
+ }
36
+ bindValidations(validations) {
37
+ if (validations.length > 0) {
38
+ const validList = [];
39
+ validations.forEach(valid => {
40
+ validList.push(valid.validator);
41
+ });
42
+ return Validators.compose(validList);
43
+ }
44
+ return null;
45
+ }
46
+ bindAsyncValidations(validations) {
47
+ if (validations.length > 0) {
48
+ const validList = [];
49
+ validations.forEach(valid => {
50
+ validList.push(valid.validator);
51
+ });
52
+ return Validators.composeAsync(validList);
53
+ }
54
+ return null;
55
+ }
56
+ ngOnDestroy() {
57
+ super.ngOnDestroy();
58
+ }
59
+ }
60
+ KlesFormListFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: KlesFormListFieldComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
61
+ KlesFormListFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: KlesFormListFieldComponent, selector: "kles-form-listfield", usesInheritance: true, ngImport: i0, template: `
62
+ <div [formGroup]="group" class="form-element">
63
+ {{field.label | translate}}
64
+ <button mat-icon-button color="primary" (click)="addField()">
65
+ <mat-icon>add</mat-icon>
66
+ </button>
67
+
68
+ <div class="dynamic-form" [formGroupName]="field.name">
69
+ <div *ngFor="let subGroup of formArray.controls let index = index;" fxLayout="row" fxLayoutGap="5px">
70
+ <ng-container *ngFor="let subfield of field.collections;"
71
+ dynamicField [field]="subfield" [group]="subGroup">
72
+ </ng-container>
73
+ <button mat-icon-button (click)="deleteField(index)" color="primary">
74
+ <mat-icon>delete_outlined</mat-icon>
75
+ </button>
76
+ </div>
77
+ <ng-container *ngFor="let validation of field.validations;" ngProjectAs="mat-error">
78
+ <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
79
+ </ng-container>
80
+ <ng-container *ngFor="let validation of field.asyncValidations;" ngProjectAs="mat-error">
81
+ <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
82
+ </ng-container>
83
+ </div>
84
+ </div>
85
+ `, isInline: true, dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i3.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "component", type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
86
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: KlesFormListFieldComponent, decorators: [{
87
+ type: Component,
88
+ args: [{ selector: 'kles-form-listfield', template: `
89
+ <div [formGroup]="group" class="form-element">
90
+ {{field.label | translate}}
91
+ <button mat-icon-button color="primary" (click)="addField()">
92
+ <mat-icon>add</mat-icon>
93
+ </button>
94
+
95
+ <div class="dynamic-form" [formGroupName]="field.name">
96
+ <div *ngFor="let subGroup of formArray.controls let index = index;" fxLayout="row" fxLayoutGap="5px">
97
+ <ng-container *ngFor="let subfield of field.collections;"
98
+ dynamicField [field]="subfield" [group]="subGroup">
99
+ </ng-container>
100
+ <button mat-icon-button (click)="deleteField(index)" color="primary">
101
+ <mat-icon>delete_outlined</mat-icon>
102
+ </button>
103
+ </div>
104
+ <ng-container *ngFor="let validation of field.validations;" ngProjectAs="mat-error">
105
+ <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
106
+ </ng-container>
107
+ <ng-container *ngFor="let validation of field.asyncValidations;" ngProjectAs="mat-error">
108
+ <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
109
+ </ng-container>
110
+ </div>
111
+ </div>
112
+ ` }]
113
+ }], ctorParameters: function () { return [{ type: i1.UntypedFormBuilder }, { type: i0.ViewContainerRef }]; } });
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGVzLW1hdGVyaWFsLWR5bmFtaWNmb3Jtcy9zcmMvbGliL2ZpZWxkcy9saXN0LWZpZWxkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUF1QyxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRCxPQUFPLEVBQXVFLFVBQVUsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBZ0NuSSxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsaUJBQWlCO0lBSTdELFlBQW9CLEVBQXNCLEVBQVksT0FBeUI7UUFDM0UsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBREMsT0FBRSxHQUFGLEVBQUUsQ0FBb0I7UUFBWSxZQUFPLEdBQVAsT0FBTyxDQUFrQjtJQUUvRSxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQXFCLENBQUM7UUFDMUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFTyxlQUFlO1FBQ25CLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNsQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FDM0IsSUFBSSxFQUNKLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsRUFDNUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQUMsQ0FDekQsQ0FBQztZQUNGLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUV6QyxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sS0FBSyxDQUFDO0lBRWpCLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYTtRQUNyQixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFHTyxlQUFlLENBQUMsV0FBMEM7UUFDOUQsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN4QixNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7WUFDckIsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDeEIsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEMsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7U0FFeEM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBR08sb0JBQW9CLENBQUMsV0FBK0M7UUFDeEUsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN4QixNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7WUFDckIsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDeEIsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEMsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLFVBQVUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7U0FFN0M7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsV0FBVztRQUNQLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QixDQUFDOzt1SEFqRVEsMEJBQTBCOzJHQUExQiwwQkFBMEIsa0ZBM0J6Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBd0JUOzJGQUdRLDBCQUEwQjtrQkE3QnRDLFNBQVM7K0JBQ0kscUJBQXFCLFlBQ3JCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0F3QlQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBLbGVzRmllbGRBYnN0cmFjdCB9IGZyb20gJy4vZmllbGQuYWJzdHJhY3QnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Hcm91cCwgVW50eXBlZEZvcm1BcnJheSwgVW50eXBlZEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycywgQXN5bmNWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElLbGVzVmFsaWRhdG9yIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy92YWxpZGF0b3IuaW50ZXJmYWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdrbGVzLWZvcm0tbGlzdGZpZWxkJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgW2Zvcm1Hcm91cF09XCJncm91cFwiIGNsYXNzPVwiZm9ybS1lbGVtZW50XCI+XG4gICAgICAgIHt7ZmllbGQubGFiZWwgfCB0cmFuc2xhdGV9fVxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiYWRkRmllbGQoKVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uPmFkZDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZvcm1cIiBbZm9ybUdyb3VwTmFtZV09XCJmaWVsZC5uYW1lXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzdWJHcm91cCBvZiBmb3JtQXJyYXkuY29udHJvbHMgbGV0IGluZGV4ID0gaW5kZXg7XCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjVweFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1YmZpZWxkIG9mIGZpZWxkLmNvbGxlY3Rpb25zO1wiXG4gICAgICAgICAgICAgICAgICAgIGR5bmFtaWNGaWVsZCBbZmllbGRdPVwic3ViZmllbGRcIiBbZ3JvdXBdPVwic3ViR3JvdXBcIj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiZGVsZXRlRmllbGQoaW5kZXgpXCIgY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5kZWxldGVfb3V0bGluZWQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2YWxpZGF0aW9uIG9mIGZpZWxkLnZhbGlkYXRpb25zO1wiIG5nUHJvamVjdEFzPVwibWF0LWVycm9yXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImdyb3VwLmdldChmaWVsZC5uYW1lKS5oYXNFcnJvcih2YWxpZGF0aW9uLm5hbWUpXCI+e3t2YWxpZGF0aW9uLm1lc3NhZ2UgfCB0cmFuc2xhdGV9fTwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2YWxpZGF0aW9uIG9mIGZpZWxkLmFzeW5jVmFsaWRhdGlvbnM7XCIgbmdQcm9qZWN0QXM9XCJtYXQtZXJyb3JcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZ3JvdXAuZ2V0KGZpZWxkLm5hbWUpLmhhc0Vycm9yKHZhbGlkYXRpb24ubmFtZSlcIj57e3ZhbGlkYXRpb24ubWVzc2FnZSB8IHRyYW5zbGF0ZX19PC9tYXQtZXJyb3I+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgYCxcbiAgICBzdHlsZXM6IFtdXG59KVxuZXhwb3J0IGNsYXNzIEtsZXNGb3JtTGlzdEZpZWxkQ29tcG9uZW50IGV4dGVuZHMgS2xlc0ZpZWxkQWJzdHJhY3QgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgICBmb3JtQXJyYXk6IFVudHlwZWRGb3JtQXJyYXk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBVbnR5cGVkRm9ybUJ1aWxkZXIsIHByb3RlY3RlZCB2aWV3UmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7XG4gICAgICAgIHN1cGVyKHZpZXdSZWYpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm1BcnJheSA9IHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5maWVsZC5uYW1lXSBhcyBVbnR5cGVkRm9ybUFycmF5O1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlRm9ybUdyb3VwKCk6IFVudHlwZWRGb3JtR3JvdXAge1xuICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuZmIuZ3JvdXAoe30pO1xuICAgICAgICB0aGlzLmZpZWxkLmNvbGxlY3Rpb25zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mYi5jb250cm9sKFxuICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgdGhpcy5iaW5kVmFsaWRhdGlvbnMoaXRlbS52YWxpZGF0aW9ucyB8fCBbXSksXG4gICAgICAgICAgICAgICAgdGhpcy5iaW5kQXN5bmNWYWxpZGF0aW9ucyhpdGVtLmFzeW5jVmFsaWRhdGlvbnMgfHwgW10pXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgZ3JvdXAuYWRkQ29udHJvbChpdGVtLm5hbWUsIGNvbnRyb2wpO1xuXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBncm91cDtcblxuICAgIH1cblxuICAgIGRlbGV0ZUZpZWxkKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5mb3JtQXJyYXkucmVtb3ZlQXQoaW5kZXgpO1xuICAgIH1cblxuICAgIGFkZEZpZWxkKCkge1xuICAgICAgICB0aGlzLmZvcm1BcnJheS5wdXNoKHRoaXMuY3JlYXRlRm9ybUdyb3VwKCkpO1xuICAgIH1cblxuXG4gICAgcHJpdmF0ZSBiaW5kVmFsaWRhdGlvbnModmFsaWRhdGlvbnM6IElLbGVzVmFsaWRhdG9yPFZhbGlkYXRvckZuPltdKTogVmFsaWRhdG9yRm4ge1xuICAgICAgICBpZiAodmFsaWRhdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgdmFsaWRMaXN0ID0gW107XG4gICAgICAgICAgICB2YWxpZGF0aW9ucy5mb3JFYWNoKHZhbGlkID0+IHtcbiAgICAgICAgICAgICAgICB2YWxpZExpc3QucHVzaCh2YWxpZC52YWxpZGF0b3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gVmFsaWRhdG9ycy5jb21wb3NlKHZhbGlkTGlzdCk7XG5cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cblxuICAgIHByaXZhdGUgYmluZEFzeW5jVmFsaWRhdGlvbnModmFsaWRhdGlvbnM6IElLbGVzVmFsaWRhdG9yPEFzeW5jVmFsaWRhdG9yRm4+W10pOiBBc3luY1ZhbGlkYXRvckZuIHtcbiAgICAgICAgaWYgKHZhbGlkYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkTGlzdCA9IFtdO1xuICAgICAgICAgICAgdmFsaWRhdGlvbnMuZm9yRWFjaCh2YWxpZCA9PiB7XG4gICAgICAgICAgICAgICAgdmFsaWRMaXN0LnB1c2godmFsaWQudmFsaWRhdG9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIFZhbGlkYXRvcnMuY29tcG9zZUFzeW5jKHZhbGlkTGlzdCk7XG5cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG59XG5cbiJdfQ==
@@ -1,49 +1,49 @@
1
- import { Component } from '@angular/core';
2
- import { KlesFieldAbstract } from './field.abstract';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- import * as i2 from "@angular/forms";
6
- import * as i3 from "@angular/flex-layout/extended";
7
- import * as i4 from "@angular/material/form-field";
8
- import * as i5 from "@angular/material/radio";
9
- import * as i6 from "@angular/material/tooltip";
10
- import * as i7 from "@ngx-translate/core";
11
- export class KlesFormRadioComponent extends KlesFieldAbstract {
12
- ngOnInit() { super.ngOnInit(); }
13
- ngOnDestroy() {
14
- super.ngOnDestroy();
15
- }
16
- }
17
- KlesFormRadioComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: KlesFormRadioComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
18
- KlesFormRadioComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.1", type: KlesFormRadioComponent, selector: "kles-form-radiobutton", usesInheritance: true, ngImport: i0, template: `
19
- <div [formGroup]="group">
20
- <label class="radio-label-padding">{{field.label}}</label>
21
- <mat-radio-group matTooltip="{{field.tooltip}}" [attr.id]="field.id" [ngClass]="field.ngClass" [formControlName]="field.name">
22
- <mat-radio-button *ngFor="let item of field.options" [value]="item">{{item}}</mat-radio-button>
23
- </mat-radio-group>
24
- <ng-container *ngFor="let validation of field.validations;" ngProjectAs="mat-error">
25
- <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
26
- </ng-container>
27
- <ng-container *ngFor="let validation of field.asyncValidations;" ngProjectAs="mat-error">
28
- <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
29
- </ng-container>
30
- </div>
31
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: i4.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "directive", type: i5.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { kind: "component", type: i5.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: KlesFormRadioComponent, decorators: [{
33
- type: Component,
34
- args: [{ selector: 'kles-form-radiobutton', template: `
35
- <div [formGroup]="group">
36
- <label class="radio-label-padding">{{field.label}}</label>
37
- <mat-radio-group matTooltip="{{field.tooltip}}" [attr.id]="field.id" [ngClass]="field.ngClass" [formControlName]="field.name">
38
- <mat-radio-button *ngFor="let item of field.options" [value]="item">{{item}}</mat-radio-button>
39
- </mat-radio-group>
40
- <ng-container *ngFor="let validation of field.validations;" ngProjectAs="mat-error">
41
- <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
42
- </ng-container>
43
- <ng-container *ngFor="let validation of field.asyncValidations;" ngProjectAs="mat-error">
44
- <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
45
- </ng-container>
46
- </div>
47
- ` }]
48
- }] });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xlcy1tYXRlcmlhbC1keW5hbWljZm9ybXMvc3JjL2xpYi9maWVsZHMvcmFkaW8uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7Ozs7QUFvQnJELE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxpQkFBaUI7SUFFekQsUUFBUSxLQUFLLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFaEMsV0FBVztRQUNQLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QixDQUFDOzttSEFOUSxzQkFBc0I7dUdBQXRCLHNCQUFzQixvRkFoQnJCOzs7Ozs7Ozs7Ozs7O0NBYWI7MkZBR1ksc0JBQXNCO2tCQWxCbEMsU0FBUzsrQkFDSSx1QkFBdUIsWUFDdkI7Ozs7Ozs7Ozs7Ozs7Q0FhYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgS2xlc0ZpZWxkQWJzdHJhY3QgfSBmcm9tICcuL2ZpZWxkLmFic3RyYWN0JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdrbGVzLWZvcm0tcmFkaW9idXR0b24nLFxyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgW2Zvcm1Hcm91cF09XCJncm91cFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInJhZGlvLWxhYmVsLXBhZGRpbmdcIj57e2ZpZWxkLmxhYmVsfX08L2xhYmVsPlxyXG4gICAgICAgIDxtYXQtcmFkaW8tZ3JvdXAgbWF0VG9vbHRpcD1cInt7ZmllbGQudG9vbHRpcH19XCIgW2F0dHIuaWRdPVwiZmllbGQuaWRcIiBbbmdDbGFzc109XCJmaWVsZC5uZ0NsYXNzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lXCI+XHJcbiAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpZWxkLm9wdGlvbnNcIiBbdmFsdWVdPVwiaXRlbVwiPnt7aXRlbX19PC9tYXQtcmFkaW8tYnV0dG9uPlxyXG4gICAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZhbGlkYXRpb24gb2YgZmllbGQudmFsaWRhdGlvbnM7XCIgbmdQcm9qZWN0QXM9XCJtYXQtZXJyb3JcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJncm91cC5nZXQoZmllbGQubmFtZSkuaGFzRXJyb3IodmFsaWRhdGlvbi5uYW1lKVwiPnt7dmFsaWRhdGlvbi5tZXNzYWdlIHwgdHJhbnNsYXRlfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZhbGlkYXRpb24gb2YgZmllbGQuYXN5bmNWYWxpZGF0aW9ucztcIiBuZ1Byb2plY3RBcz1cIm1hdC1lcnJvclwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImdyb3VwLmdldChmaWVsZC5uYW1lKS5oYXNFcnJvcih2YWxpZGF0aW9uLm5hbWUpXCI+e3t2YWxpZGF0aW9uLm1lc3NhZ2UgfCB0cmFuc2xhdGV9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG5gLFxyXG4gICAgc3R5bGVzOiBbXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgS2xlc0Zvcm1SYWRpb0NvbXBvbmVudCBleHRlbmRzIEtsZXNGaWVsZEFic3RyYWN0IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICAgIG5nT25Jbml0KCkgeyBzdXBlci5uZ09uSW5pdCgpOyB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcclxuICAgIH1cclxufSJdfQ==
1
+ import { Component } from '@angular/core';
2
+ import { KlesFieldAbstract } from './field.abstract';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@angular/forms";
6
+ import * as i3 from "@angular/flex-layout/extended";
7
+ import * as i4 from "@angular/material/form-field";
8
+ import * as i5 from "@angular/material/radio";
9
+ import * as i6 from "@angular/material/tooltip";
10
+ import * as i7 from "@ngx-translate/core";
11
+ export class KlesFormRadioComponent extends KlesFieldAbstract {
12
+ ngOnInit() { super.ngOnInit(); }
13
+ ngOnDestroy() {
14
+ super.ngOnDestroy();
15
+ }
16
+ }
17
+ KlesFormRadioComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: KlesFormRadioComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
18
+ KlesFormRadioComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: KlesFormRadioComponent, selector: "kles-form-radiobutton", usesInheritance: true, ngImport: i0, template: `
19
+ <div [formGroup]="group">
20
+ <label class="radio-label-padding">{{field.label}}</label>
21
+ <mat-radio-group matTooltip="{{field.tooltip}}" [attr.id]="field.id" [ngClass]="field.ngClass" [formControlName]="field.name">
22
+ <mat-radio-button *ngFor="let item of field.options" [value]="item">{{item}}</mat-radio-button>
23
+ </mat-radio-group>
24
+ <ng-container *ngFor="let validation of field.validations;" ngProjectAs="mat-error">
25
+ <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
26
+ </ng-container>
27
+ <ng-container *ngFor="let validation of field.asyncValidations;" ngProjectAs="mat-error">
28
+ <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
29
+ </ng-container>
30
+ </div>
31
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: i4.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "directive", type: i5.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { kind: "component", type: i5.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: KlesFormRadioComponent, decorators: [{
33
+ type: Component,
34
+ args: [{ selector: 'kles-form-radiobutton', template: `
35
+ <div [formGroup]="group">
36
+ <label class="radio-label-padding">{{field.label}}</label>
37
+ <mat-radio-group matTooltip="{{field.tooltip}}" [attr.id]="field.id" [ngClass]="field.ngClass" [formControlName]="field.name">
38
+ <mat-radio-button *ngFor="let item of field.options" [value]="item">{{item}}</mat-radio-button>
39
+ </mat-radio-group>
40
+ <ng-container *ngFor="let validation of field.validations;" ngProjectAs="mat-error">
41
+ <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
42
+ </ng-container>
43
+ <ng-container *ngFor="let validation of field.asyncValidations;" ngProjectAs="mat-error">
44
+ <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
45
+ </ng-container>
46
+ </div>
47
+ ` }]
48
+ }] });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xlcy1tYXRlcmlhbC1keW5hbWljZm9ybXMvc3JjL2xpYi9maWVsZHMvcmFkaW8uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7Ozs7QUFvQnJELE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxpQkFBaUI7SUFFekQsUUFBUSxLQUFLLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFaEMsV0FBVztRQUNQLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QixDQUFDOzttSEFOUSxzQkFBc0I7dUdBQXRCLHNCQUFzQixvRkFoQnJCOzs7Ozs7Ozs7Ozs7O0NBYWI7MkZBR1ksc0JBQXNCO2tCQWxCbEMsU0FBUzsrQkFDSSx1QkFBdUIsWUFDdkI7Ozs7Ozs7Ozs7Ozs7Q0FhYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEtsZXNGaWVsZEFic3RyYWN0IH0gZnJvbSAnLi9maWVsZC5hYnN0cmFjdCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAna2xlcy1mb3JtLXJhZGlvYnV0dG9uJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgW2Zvcm1Hcm91cF09XCJncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJyYWRpby1sYWJlbC1wYWRkaW5nXCI+e3tmaWVsZC5sYWJlbH19PC9sYWJlbD5cbiAgICAgICAgPG1hdC1yYWRpby1ncm91cCBtYXRUb29sdGlwPVwie3tmaWVsZC50b29sdGlwfX1cIiBbYXR0ci5pZF09XCJmaWVsZC5pZFwiIFtuZ0NsYXNzXT1cImZpZWxkLm5nQ2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIj5cbiAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpZWxkLm9wdGlvbnNcIiBbdmFsdWVdPVwiaXRlbVwiPnt7aXRlbX19PC9tYXQtcmFkaW8tYnV0dG9uPlxuICAgICAgICA8L21hdC1yYWRpby1ncm91cD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdmFsaWRhdGlvbiBvZiBmaWVsZC52YWxpZGF0aW9ucztcIiBuZ1Byb2plY3RBcz1cIm1hdC1lcnJvclwiPlxuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJncm91cC5nZXQoZmllbGQubmFtZSkuaGFzRXJyb3IodmFsaWRhdGlvbi5uYW1lKVwiPnt7dmFsaWRhdGlvbi5tZXNzYWdlIHwgdHJhbnNsYXRlfX08L21hdC1lcnJvcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdmFsaWRhdGlvbiBvZiBmaWVsZC5hc3luY1ZhbGlkYXRpb25zO1wiIG5nUHJvamVjdEFzPVwibWF0LWVycm9yXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImdyb3VwLmdldChmaWVsZC5uYW1lKS5oYXNFcnJvcih2YWxpZGF0aW9uLm5hbWUpXCI+e3t2YWxpZGF0aW9uLm1lc3NhZ2UgfCB0cmFuc2xhdGV9fTwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5gLFxuICAgIHN0eWxlczogW11cbn0pXG5leHBvcnQgY2xhc3MgS2xlc0Zvcm1SYWRpb0NvbXBvbmVudCBleHRlbmRzIEtsZXNGaWVsZEFic3RyYWN0IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgbmdPbkluaXQoKSB7IHN1cGVyLm5nT25Jbml0KCk7IH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn0iXX0=