@3kles/kles-material-dynamicforms 1.1.0 → 1.1.4

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 (142) hide show
  1. package/3kles-kles-material-dynamicforms.d.ts +5 -5
  2. package/3kles-kles-material-dynamicforms.metadata.json +1 -1
  3. package/bundles/3kles-kles-material-dynamicforms.umd.js +1478 -1457
  4. package/bundles/3kles-kles-material-dynamicforms.umd.js.map +1 -1
  5. package/bundles/3kles-kles-material-dynamicforms.umd.min.js +2 -2
  6. package/bundles/3kles-kles-material-dynamicforms.umd.min.js.map +1 -1
  7. package/esm2015/3kles-kles-material-dynamicforms.js +5 -5
  8. package/esm2015/lib/directive/dynamic-component.directive.js +50 -46
  9. package/esm2015/lib/directive/dynamic-field.directive.js +94 -94
  10. package/esm2015/lib/dynamic-form.component.js +238 -234
  11. package/esm2015/lib/fields/badge.component.js +20 -20
  12. package/esm2015/lib/fields/button-form.component.js +28 -28
  13. package/esm2015/lib/fields/button-submit.component.js +20 -20
  14. package/esm2015/lib/fields/button-toogle-group.component.js +37 -37
  15. package/esm2015/lib/fields/buttonchecker-form.component.js +28 -28
  16. package/esm2015/lib/fields/buttonfile-form.component.js +27 -27
  17. package/esm2015/lib/fields/checkbox.component.js +24 -24
  18. package/esm2015/lib/fields/chip.component.js +23 -23
  19. package/esm2015/lib/fields/color.component.js +58 -58
  20. package/esm2015/lib/fields/date.component.js +28 -28
  21. package/esm2015/lib/fields/field.abstract.js +40 -40
  22. package/esm2015/lib/fields/group.component.js +27 -27
  23. package/esm2015/lib/fields/icon.component.js +18 -18
  24. package/esm2015/lib/fields/input.clearable.component.js +56 -56
  25. package/esm2015/lib/fields/input.component.js +101 -101
  26. package/esm2015/lib/fields/label.component.js +23 -23
  27. package/esm2015/lib/fields/line-break.component.js +19 -19
  28. package/esm2015/lib/fields/link.component.js +20 -20
  29. package/esm2015/lib/fields/list-field.component.js +83 -83
  30. package/esm2015/lib/fields/radio.component.js +27 -27
  31. package/esm2015/lib/fields/select.component.js +120 -114
  32. package/esm2015/lib/fields/select.search.component.js +205 -199
  33. package/esm2015/lib/fields/selection-list.component.js +40 -41
  34. package/esm2015/lib/fields/slide-toggle.component.js +24 -24
  35. package/esm2015/lib/fields/text.component.js +20 -20
  36. package/esm2015/lib/fields/textarea.component.js +32 -32
  37. package/esm2015/lib/forms/button-control.component.js +102 -102
  38. package/esm2015/lib/forms/buttonchecker-control.component.js +53 -53
  39. package/esm2015/lib/forms/buttonfile-control.component.js +107 -107
  40. package/esm2015/lib/interfaces/component.interface.js +1 -1
  41. package/esm2015/lib/interfaces/field.config.interface.js +1 -1
  42. package/esm2015/lib/interfaces/field.interface.js +1 -1
  43. package/esm2015/lib/interfaces/validator.interface.js +1 -1
  44. package/esm2015/lib/kles-material-dynamicforms.module.js +114 -114
  45. package/esm2015/lib/matcher/form-error.matcher.js +9 -9
  46. package/esm2015/lib/modules/material.module.js +129 -129
  47. package/esm2015/lib/pipe/array.pipe.js +20 -20
  48. package/esm2015/lib/pipe/transform.pipe.js +25 -25
  49. package/esm2015/lib/validators/autocomplete.validator.js +23 -23
  50. package/esm2015/public-api.js +48 -48
  51. package/esm5/3kles-kles-material-dynamicforms.js +5 -5
  52. package/esm5/lib/directive/dynamic-component.directive.js +51 -47
  53. package/esm5/lib/directive/dynamic-field.directive.js +95 -95
  54. package/esm5/lib/dynamic-form.component.js +240 -236
  55. package/esm5/lib/fields/badge.component.js +21 -21
  56. package/esm5/lib/fields/button-form.component.js +21 -21
  57. package/esm5/lib/fields/button-submit.component.js +21 -21
  58. package/esm5/lib/fields/button-toogle-group.component.js +33 -33
  59. package/esm5/lib/fields/buttonchecker-form.component.js +21 -21
  60. package/esm5/lib/fields/buttonfile-form.component.js +21 -21
  61. package/esm5/lib/fields/checkbox.component.js +19 -19
  62. package/esm5/lib/fields/chip.component.js +19 -19
  63. package/esm5/lib/fields/color.component.js +46 -46
  64. package/esm5/lib/fields/date.component.js +19 -19
  65. package/esm5/lib/fields/field.abstract.js +45 -45
  66. package/esm5/lib/fields/group.component.js +25 -25
  67. package/esm5/lib/fields/icon.component.js +19 -19
  68. package/esm5/lib/fields/input.clearable.component.js +19 -19
  69. package/esm5/lib/fields/input.component.js +70 -70
  70. package/esm5/lib/fields/label.component.js +22 -22
  71. package/esm5/lib/fields/line-break.component.js +20 -20
  72. package/esm5/lib/fields/link.component.js +21 -21
  73. package/esm5/lib/fields/list-field.component.js +63 -63
  74. package/esm5/lib/fields/radio.component.js +19 -19
  75. package/esm5/lib/fields/select.component.js +52 -45
  76. package/esm5/lib/fields/select.search.component.js +119 -113
  77. package/esm5/lib/fields/selection-list.component.js +29 -29
  78. package/esm5/lib/fields/slide-toggle.component.js +19 -19
  79. package/esm5/lib/fields/text.component.js +21 -21
  80. package/esm5/lib/fields/textarea.component.js +22 -22
  81. package/esm5/lib/forms/button-control.component.js +95 -95
  82. package/esm5/lib/forms/buttonchecker-control.component.js +37 -37
  83. package/esm5/lib/forms/buttonfile-control.component.js +123 -123
  84. package/esm5/lib/interfaces/component.interface.js +1 -1
  85. package/esm5/lib/interfaces/field.config.interface.js +1 -1
  86. package/esm5/lib/interfaces/field.interface.js +1 -1
  87. package/esm5/lib/interfaces/validator.interface.js +1 -1
  88. package/esm5/lib/kles-material-dynamicforms.module.js +117 -117
  89. package/esm5/lib/matcher/form-error.matcher.js +11 -11
  90. package/esm5/lib/modules/material.module.js +132 -132
  91. package/esm5/lib/pipe/array.pipe.js +23 -23
  92. package/esm5/lib/pipe/transform.pipe.js +28 -28
  93. package/esm5/lib/validators/autocomplete.validator.js +23 -23
  94. package/esm5/public-api.js +48 -48
  95. package/fesm2015/3kles-kles-material-dynamicforms.js +1795 -1776
  96. package/fesm2015/3kles-kles-material-dynamicforms.js.map +1 -1
  97. package/fesm5/3kles-kles-material-dynamicforms.js +1482 -1461
  98. package/fesm5/3kles-kles-material-dynamicforms.js.map +1 -1
  99. package/lib/directive/dynamic-component.directive.d.ts +14 -12
  100. package/lib/directive/dynamic-field.directive.d.ts +16 -16
  101. package/lib/dynamic-form.component.d.ts +28 -28
  102. package/lib/fields/badge.component.d.ts +5 -5
  103. package/lib/fields/button-form.component.d.ts +5 -5
  104. package/lib/fields/button-submit.component.d.ts +5 -5
  105. package/lib/fields/button-toogle-group.component.d.ts +7 -7
  106. package/lib/fields/buttonchecker-form.component.d.ts +5 -5
  107. package/lib/fields/buttonfile-form.component.d.ts +5 -5
  108. package/lib/fields/checkbox.component.d.ts +5 -5
  109. package/lib/fields/chip.component.d.ts +5 -5
  110. package/lib/fields/color.component.d.ts +6 -6
  111. package/lib/fields/date.component.d.ts +5 -5
  112. package/lib/fields/field.abstract.d.ts +12 -12
  113. package/lib/fields/group.component.d.ts +7 -7
  114. package/lib/fields/icon.component.d.ts +5 -5
  115. package/lib/fields/input.clearable.component.d.ts +4 -4
  116. package/lib/fields/input.component.d.ts +11 -11
  117. package/lib/fields/label.component.d.ts +5 -5
  118. package/lib/fields/line-break.component.d.ts +5 -5
  119. package/lib/fields/link.component.d.ts +5 -5
  120. package/lib/fields/list-field.component.d.ts +14 -14
  121. package/lib/fields/radio.component.d.ts +5 -5
  122. package/lib/fields/select.component.d.ts +14 -13
  123. package/lib/fields/select.search.component.d.ts +20 -19
  124. package/lib/fields/selection-list.component.d.ts +7 -7
  125. package/lib/fields/slide-toggle.component.d.ts +5 -5
  126. package/lib/fields/text.component.d.ts +5 -5
  127. package/lib/fields/textarea.component.d.ts +5 -5
  128. package/lib/forms/button-control.component.d.ts +33 -33
  129. package/lib/forms/buttonchecker-control.component.d.ts +11 -11
  130. package/lib/forms/buttonfile-control.component.d.ts +17 -17
  131. package/lib/interfaces/component.interface.d.ts +5 -5
  132. package/lib/interfaces/field.config.interface.d.ts +52 -51
  133. package/lib/interfaces/field.interface.d.ts +7 -7
  134. package/lib/interfaces/validator.interface.d.ts +5 -5
  135. package/lib/kles-material-dynamicforms.module.d.ts +2 -2
  136. package/lib/matcher/form-error.matcher.d.ts +6 -6
  137. package/lib/modules/material.module.d.ts +2 -2
  138. package/lib/pipe/array.pipe.d.ts +4 -4
  139. package/lib/pipe/transform.pipe.d.ts +7 -7
  140. package/lib/validators/autocomplete.validator.d.ts +3 -3
  141. package/package.json +1 -1
  142. package/public-api.d.ts +48 -48
@@ -1,101 +1,101 @@
1
- import { __decorate } from "tslib";
2
- import { KlesFieldAbstract } from './field.abstract';
3
- import { Component } from '@angular/core';
4
- import { Observable, of } from 'rxjs';
5
- import { startWith, map, switchMap } from 'rxjs/operators';
6
- let KlesFormInputComponent = class KlesFormInputComponent extends KlesFieldAbstract {
7
- ngOnInit() {
8
- if (this.field.options instanceof Observable) {
9
- this.options$ = this.field.options;
10
- }
11
- else {
12
- this.options$ = of(this.field.options);
13
- }
14
- this.filteredOption = this.group.get(this.field.name).valueChanges
15
- .pipe(startWith(''),
16
- // map(data => data ? this.filterData(data) : this.field.options.slice())
17
- switchMap(data => data ? this.filterData(data) : this.options$));
18
- if (!this.field.maxLength) {
19
- this.field.maxLength = 524288; // Max default input W3C
20
- }
21
- super.ngOnInit();
22
- }
23
- isPending() {
24
- return (this.group.controls[this.field.name].pending || this.field.pending);
25
- }
26
- filterData(value) {
27
- let filterValue;
28
- if (typeof value === 'string' && Object.prototype.toString.call(value) === '[object String]') {
29
- filterValue = value.toLowerCase();
30
- }
31
- else {
32
- filterValue = value[this.field.property].toLowerCase();
33
- }
34
- if (this.field.property) {
35
- return this.options$
36
- .pipe(map(options => options.filter(option => option[this.field.property].toLowerCase().indexOf(filterValue) === 0)));
37
- // return this.field.options
38
- // .filter(data => data[this.field.property].toLowerCase().indexOf(filterValue) === 0);
39
- }
40
- // return this.field.options.filter(data => data.toLowerCase().indexOf(filterValue) === 0);
41
- return this.options$.pipe(map(options => options.filter(option => option.toLowerCase().indexOf(filterValue) === 0)));
42
- }
43
- displayFn(value) {
44
- if (this.field.displayWith) {
45
- return this.field.displayWith(value);
46
- }
47
- else {
48
- if (value && this.field && this.field.property) {
49
- return value[this.field.property] ? value[this.field.property] : '';
50
- }
51
- return value ? value : '';
52
- }
53
- }
54
- };
55
- KlesFormInputComponent = __decorate([
56
- Component({
57
- selector: 'kles-form-input',
58
- template: `
59
- <mat-form-field [formGroup]="group" class="form-element">
60
-
61
- <ng-container *ngIf="field.autocomplete; else notAutoComplete">
62
- <input matInput matTooltip="{{field.tooltip}}" [attr.id]="field.id" [ngClass]="field.ngClass" [formControlName]="field.name" [placeholder]="field.placeholder | translate" [type]="field.inputType"
63
- [maxLength]="field.maxLength" [min]="field.min" [max]="field.max" [step]="field.step"
64
- [matAutocomplete]="auto">
65
-
66
- <mat-autocomplete #auto="matAutocomplete" [displayWith]="displayFn.bind(this)" [panelWidth]="this.field.panelWidth">
67
- <ng-container *ngIf="!field.autocompleteComponent">
68
- <mat-option *ngFor="let option of filteredOption | async" [value]="option">
69
- {{field.property ? option[field.property] : option}}
70
- </mat-option>
71
- </ng-container>
72
-
73
- <ng-container *ngIf="field.autocompleteComponent">
74
- <mat-option *ngFor="let option of filteredOption | async" [value]="option">
75
- <ng-container klesComponent [component]="field.autocompleteComponent" [value]="option">
76
- </ng-container>
77
- </mat-option>
78
- </ng-container>
79
- </mat-autocomplete>
80
- </ng-container>
81
-
82
- <ng-template #notAutoComplete>
83
- <input matInput matTooltip="{{field.tooltip}}" [attr.id]="field.id" [ngClass]="field.ngClass" [formControlName]="field.name" [placeholder]="field.placeholder | translate" [type]="field.inputType"
84
- [maxLength]="field.maxLength" [min]="field.min" [max]="field.max" [step]="field.step">
85
- </ng-template>
86
-
87
- <mat-spinner matSuffix mode="indeterminate" *ngIf="isPending()" diameter="17"></mat-spinner>
88
-
89
- <ng-container *ngFor="let validation of field.validations;" ngProjectAs="mat-error">
90
- <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
91
- </ng-container>
92
- <ng-container *ngFor="let validation of field.asyncValidations;" ngProjectAs="mat-error">
93
- <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
94
- </ng-container>
95
- </mat-form-field>
96
- `,
97
- styles: ['mat-form-field {width: calc(100%)}']
98
- })
99
- ], KlesFormInputComponent);
100
- export { KlesFormInputComponent };
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQDNrbGVzL2tsZXMtbWF0ZXJpYWwtZHluYW1pY2Zvcm1zLyIsInNvdXJjZXMiOlsibGliL2ZpZWxkcy9pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUE2QzNELElBQWEsc0JBQXNCLEdBQW5DLE1BQWEsc0JBQXVCLFNBQVEsaUJBQWlCO0lBS3pELFFBQVE7UUFFSixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxZQUFZLFVBQVUsRUFBRTtZQUMxQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1NBQ3RDO2FBQU07WUFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzFDO1FBR0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVk7YUFDN0QsSUFBSSxDQUNELFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDYix5RUFBeUU7UUFDekUsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQ2xFLENBQUM7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUU7WUFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLENBQUMsd0JBQXdCO1NBQzFEO1FBQ0QsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxTQUFTO1FBQ0wsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVPLFVBQVUsQ0FBQyxLQUFVO1FBQ3pCLElBQUksV0FBVyxDQUFDO1FBRWhCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxpQkFBaUIsRUFBRTtZQUMxRixXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3JDO2FBQU07WUFDSCxXQUFXLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDMUQ7UUFFRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLFFBQVE7aUJBQ2YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFILDRCQUE0QjtZQUM1QiwyRkFBMkY7U0FDOUY7UUFDRCwyRkFBMkY7UUFDM0YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekgsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFVO1FBQ2hCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUU7WUFDeEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN4QzthQUFNO1lBQ0gsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRTtnQkFDNUMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUN2RTtZQUNELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUM3QjtJQUNMLENBQUM7Q0FDSixDQUFBO0FBM0RZLHNCQUFzQjtJQTNDbEMsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLGlCQUFpQjtRQUMzQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBc0NUO2lCQUNRLG9DQUFvQztLQUNoRCxDQUFDO0dBQ1csc0JBQXNCLENBMkRsQztTQTNEWSxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBLbGVzRmllbGRBYnN0cmFjdCB9IGZyb20gJy4vZmllbGQuYWJzdHJhY3QnO1xyXG5pbXBvcnQgeyBPbkluaXQsIENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBzdGFydFdpdGgsIG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2tsZXMtZm9ybS1pbnB1dCcsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIiBjbGFzcz1cImZvcm0tZWxlbWVudFwiPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQuYXV0b2NvbXBsZXRlOyBlbHNlIG5vdEF1dG9Db21wbGV0ZVwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgbWF0VG9vbHRpcD1cInt7ZmllbGQudG9vbHRpcH19XCIgW2F0dHIuaWRdPVwiZmllbGQuaWRcIiBbbmdDbGFzc109XCJmaWVsZC5uZ0NsYXNzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lXCIgW3BsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyIHwgdHJhbnNsYXRlXCIgW3R5cGVdPVwiZmllbGQuaW5wdXRUeXBlXCIgXHJcbiAgICAgICAgICAgIFttYXhMZW5ndGhdPVwiZmllbGQubWF4TGVuZ3RoXCIgW21pbl09XCJmaWVsZC5taW5cIiBbbWF4XT1cImZpZWxkLm1heFwiIFtzdGVwXT1cImZpZWxkLnN0ZXBcIlxyXG4gICAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIj5cclxuXHJcbiAgICAgICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgW2Rpc3BsYXlXaXRoXT1cImRpc3BsYXlGbi5iaW5kKHRoaXMpXCIgW3BhbmVsV2lkdGhdPVwidGhpcy5maWVsZC5wYW5lbFdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpZWxkLmF1dG9jb21wbGV0ZUNvbXBvbmVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWRPcHRpb24gfCBhc3luY1wiIFt2YWx1ZV09XCJvcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tmaWVsZC5wcm9wZXJ0eSA/IG9wdGlvbltmaWVsZC5wcm9wZXJ0eV0gOiBvcHRpb259fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5hdXRvY29tcGxldGVDb21wb25lbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGZpbHRlcmVkT3B0aW9uIHwgYXN5bmNcIiBbdmFsdWVdPVwib3B0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIga2xlc0NvbXBvbmVudCBbY29tcG9uZW50XT1cImZpZWxkLmF1dG9jb21wbGV0ZUNvbXBvbmVudFwiIFt2YWx1ZV09XCJvcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNub3RBdXRvQ29tcGxldGU+XHJcbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBtYXRUb29sdGlwPVwie3tmaWVsZC50b29sdGlwfX1cIiBbYXR0ci5pZF09XCJmaWVsZC5pZFwiIFtuZ0NsYXNzXT1cImZpZWxkLm5nQ2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIiBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIiBbdHlwZV09XCJmaWVsZC5pbnB1dFR5cGVcIlxyXG4gICAgICAgICAgICBbbWF4TGVuZ3RoXT1cImZpZWxkLm1heExlbmd0aFwiIFttaW5dPVwiZmllbGQubWluXCIgW21heF09XCJmaWVsZC5tYXhcIiBbc3RlcF09XCJmaWVsZC5zdGVwXCI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPG1hdC1zcGlubmVyIG1hdFN1ZmZpeCBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiICpuZ0lmPVwiaXNQZW5kaW5nKClcIiBkaWFtZXRlcj1cIjE3XCI+PC9tYXQtc3Bpbm5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdmFsaWRhdGlvbiBvZiBmaWVsZC52YWxpZGF0aW9ucztcIiBuZ1Byb2plY3RBcz1cIm1hdC1lcnJvclwiPlxyXG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZ3JvdXAuZ2V0KGZpZWxkLm5hbWUpLmhhc0Vycm9yKHZhbGlkYXRpb24ubmFtZSlcIj57e3ZhbGlkYXRpb24ubWVzc2FnZSB8IHRyYW5zbGF0ZX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdmFsaWRhdGlvbiBvZiBmaWVsZC5hc3luY1ZhbGlkYXRpb25zO1wiIG5nUHJvamVjdEFzPVwibWF0LWVycm9yXCI+XHJcbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJncm91cC5nZXQoZmllbGQubmFtZSkuaGFzRXJyb3IodmFsaWRhdGlvbi5uYW1lKVwiPnt7dmFsaWRhdGlvbi5tZXNzYWdlIHwgdHJhbnNsYXRlfX08L21hdC1lcnJvcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICBgLFxyXG4gICAgc3R5bGVzOiBbJ21hdC1mb3JtLWZpZWxkIHt3aWR0aDogY2FsYygxMDAlKX0nXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgS2xlc0Zvcm1JbnB1dENvbXBvbmVudCBleHRlbmRzIEtsZXNGaWVsZEFic3RyYWN0IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgICBmaWx0ZXJlZE9wdGlvbjogT2JzZXJ2YWJsZTxhbnlbXT47XHJcbiAgICBvcHRpb25zJDogT2JzZXJ2YWJsZTxhbnlbXT47XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmZpZWxkLm9wdGlvbnMgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucyQgPSB0aGlzLmZpZWxkLm9wdGlvbnM7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zJCA9IG9mKHRoaXMuZmllbGQub3B0aW9ucyk7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbiA9IHRoaXMuZ3JvdXAuZ2V0KHRoaXMuZmllbGQubmFtZSkudmFsdWVDaGFuZ2VzXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKCcnKSxcclxuICAgICAgICAgICAgICAgIC8vIG1hcChkYXRhID0+IGRhdGEgPyB0aGlzLmZpbHRlckRhdGEoZGF0YSkgOiB0aGlzLmZpZWxkLm9wdGlvbnMuc2xpY2UoKSlcclxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChkYXRhID0+IGRhdGEgPyB0aGlzLmZpbHRlckRhdGEoZGF0YSkgOiB0aGlzLm9wdGlvbnMkKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIGlmICghdGhpcy5maWVsZC5tYXhMZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5maWVsZC5tYXhMZW5ndGggPSA1MjQyODg7IC8vIE1heCBkZWZhdWx0IGlucHV0IFczQ1xyXG4gICAgICAgIH1cclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzUGVuZGluZygpIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5maWVsZC5uYW1lXS5wZW5kaW5nIHx8IHRoaXMuZmllbGQucGVuZGluZyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBmaWx0ZXJEYXRhKHZhbHVlOiBhbnkpOiBPYnNlcnZhYmxlPGFueVtdPiB7XHJcbiAgICAgICAgbGV0IGZpbHRlclZhbHVlO1xyXG5cclxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpID09PSAnW29iamVjdCBTdHJpbmddJykge1xyXG4gICAgICAgICAgICBmaWx0ZXJWYWx1ZSA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZmlsdGVyVmFsdWUgPSB2YWx1ZVt0aGlzLmZpZWxkLnByb3BlcnR5XS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZmllbGQucHJvcGVydHkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucyRcclxuICAgICAgICAgICAgICAgIC5waXBlKG1hcChvcHRpb25zID0+IG9wdGlvbnMuZmlsdGVyKG9wdGlvbiA9PiBvcHRpb25bdGhpcy5maWVsZC5wcm9wZXJ0eV0udG9Mb3dlckNhc2UoKS5pbmRleE9mKGZpbHRlclZhbHVlKSA9PT0gMCkpKTtcclxuICAgICAgICAgICAgLy8gcmV0dXJuIHRoaXMuZmllbGQub3B0aW9uc1xyXG4gICAgICAgICAgICAvLyAgICAgLmZpbHRlcihkYXRhID0+IGRhdGFbdGhpcy5maWVsZC5wcm9wZXJ0eV0udG9Mb3dlckNhc2UoKS5pbmRleE9mKGZpbHRlclZhbHVlKSA9PT0gMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHJldHVybiB0aGlzLmZpZWxkLm9wdGlvbnMuZmlsdGVyKGRhdGEgPT4gZGF0YS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoZmlsdGVyVmFsdWUpID09PSAwKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zJC5waXBlKG1hcChvcHRpb25zID0+IG9wdGlvbnMuZmlsdGVyKG9wdGlvbiA9PiBvcHRpb24udG9Mb3dlckNhc2UoKS5pbmRleE9mKGZpbHRlclZhbHVlKSA9PT0gMCkpKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNwbGF5Rm4odmFsdWU6IGFueSkge1xyXG4gICAgICAgIGlmICh0aGlzLmZpZWxkLmRpc3BsYXlXaXRoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpZWxkLmRpc3BsYXlXaXRoKHZhbHVlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodmFsdWUgJiYgdGhpcy5maWVsZCAmJiB0aGlzLmZpZWxkLnByb3BlcnR5KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVbdGhpcy5maWVsZC5wcm9wZXJ0eV0gPyB2YWx1ZVt0aGlzLmZpZWxkLnByb3BlcnR5XSA6ICcnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZSA/IHZhbHVlIDogJyc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
1
+ import { __decorate } from "tslib";
2
+ import { KlesFieldAbstract } from './field.abstract';
3
+ import { Component } from '@angular/core';
4
+ import { Observable, of } from 'rxjs';
5
+ import { startWith, map, switchMap } from 'rxjs/operators';
6
+ let KlesFormInputComponent = class KlesFormInputComponent extends KlesFieldAbstract {
7
+ ngOnInit() {
8
+ if (this.field.options instanceof Observable) {
9
+ this.options$ = this.field.options;
10
+ }
11
+ else {
12
+ this.options$ = of(this.field.options);
13
+ }
14
+ this.filteredOption = this.group.get(this.field.name).valueChanges
15
+ .pipe(startWith(''),
16
+ // map(data => data ? this.filterData(data) : this.field.options.slice())
17
+ switchMap(data => data ? this.filterData(data) : this.options$));
18
+ if (!this.field.maxLength) {
19
+ this.field.maxLength = 524288; // Max default input W3C
20
+ }
21
+ super.ngOnInit();
22
+ }
23
+ isPending() {
24
+ return (this.group.controls[this.field.name].pending || this.field.pending);
25
+ }
26
+ filterData(value) {
27
+ let filterValue;
28
+ if (typeof value === 'string' && Object.prototype.toString.call(value) === '[object String]') {
29
+ filterValue = value.toLowerCase();
30
+ }
31
+ else {
32
+ filterValue = value[this.field.property].toLowerCase();
33
+ }
34
+ if (this.field.property) {
35
+ return this.options$
36
+ .pipe(map(options => options.filter(option => option[this.field.property].toLowerCase().indexOf(filterValue) === 0)));
37
+ // return this.field.options
38
+ // .filter(data => data[this.field.property].toLowerCase().indexOf(filterValue) === 0);
39
+ }
40
+ // return this.field.options.filter(data => data.toLowerCase().indexOf(filterValue) === 0);
41
+ return this.options$.pipe(map(options => options.filter(option => option.toLowerCase().indexOf(filterValue) === 0)));
42
+ }
43
+ displayFn(value) {
44
+ if (this.field.displayWith) {
45
+ return this.field.displayWith(value);
46
+ }
47
+ else {
48
+ if (value && this.field && this.field.property) {
49
+ return value[this.field.property] ? value[this.field.property] : '';
50
+ }
51
+ return value ? value : '';
52
+ }
53
+ }
54
+ };
55
+ KlesFormInputComponent = __decorate([
56
+ Component({
57
+ selector: 'kles-form-input',
58
+ template: `
59
+ <mat-form-field [formGroup]="group" class="form-element">
60
+
61
+ <ng-container *ngIf="field.autocomplete; else notAutoComplete">
62
+ <input matInput matTooltip="{{field.tooltip}}" [attr.id]="field.id" [ngClass]="field.ngClass" [formControlName]="field.name" [placeholder]="field.placeholder | translate" [type]="field.inputType"
63
+ [maxLength]="field.maxLength" [min]="field.min" [max]="field.max" [step]="field.step"
64
+ [matAutocomplete]="auto">
65
+
66
+ <mat-autocomplete #auto="matAutocomplete" [displayWith]="displayFn.bind(this)" [panelWidth]="this.field.panelWidth">
67
+ <ng-container *ngIf="!field.autocompleteComponent">
68
+ <mat-option *ngFor="let option of filteredOption | async" [value]="option">
69
+ {{field.property ? option[field.property] : option}}
70
+ </mat-option>
71
+ </ng-container>
72
+
73
+ <ng-container *ngIf="field.autocompleteComponent">
74
+ <mat-option *ngFor="let option of filteredOption | async" [value]="option">
75
+ <ng-container klesComponent [component]="field.autocompleteComponent" [value]="option" [field]="field">
76
+ </ng-container>
77
+ </mat-option>
78
+ </ng-container>
79
+ </mat-autocomplete>
80
+ </ng-container>
81
+
82
+ <ng-template #notAutoComplete>
83
+ <input matInput matTooltip="{{field.tooltip}}" [attr.id]="field.id" [ngClass]="field.ngClass" [formControlName]="field.name" [placeholder]="field.placeholder | translate" [type]="field.inputType"
84
+ [maxLength]="field.maxLength" [min]="field.min" [max]="field.max" [step]="field.step">
85
+ </ng-template>
86
+
87
+ <mat-spinner matSuffix mode="indeterminate" *ngIf="isPending()" diameter="17"></mat-spinner>
88
+
89
+ <ng-container *ngFor="let validation of field.validations;" ngProjectAs="mat-error">
90
+ <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
91
+ </ng-container>
92
+ <ng-container *ngFor="let validation of field.asyncValidations;" ngProjectAs="mat-error">
93
+ <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
94
+ </ng-container>
95
+ </mat-form-field>
96
+ `,
97
+ styles: ['mat-form-field {width: calc(100%)}']
98
+ })
99
+ ], KlesFormInputComponent);
100
+ export { KlesFormInputComponent };
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQDNrbGVzL2tsZXMtbWF0ZXJpYWwtZHluYW1pY2Zvcm1zLyIsInNvdXJjZXMiOlsibGliL2ZpZWxkcy9pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUE2QzNELElBQWEsc0JBQXNCLEdBQW5DLE1BQWEsc0JBQXVCLFNBQVEsaUJBQWlCO0lBS3pELFFBQVE7UUFFSixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxZQUFZLFVBQVUsRUFBRTtZQUMxQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1NBQ3RDO2FBQU07WUFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzFDO1FBR0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVk7YUFDN0QsSUFBSSxDQUNELFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDYix5RUFBeUU7UUFDekUsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQ2xFLENBQUM7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUU7WUFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLENBQUMsd0JBQXdCO1NBQzFEO1FBQ0QsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxTQUFTO1FBQ0wsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVPLFVBQVUsQ0FBQyxLQUFVO1FBQ3pCLElBQUksV0FBVyxDQUFDO1FBRWhCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxpQkFBaUIsRUFBRTtZQUMxRixXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3JDO2FBQU07WUFDSCxXQUFXLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDMUQ7UUFFRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLFFBQVE7aUJBQ2YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFILDRCQUE0QjtZQUM1QiwyRkFBMkY7U0FDOUY7UUFDRCwyRkFBMkY7UUFDM0YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekgsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFVO1FBQ2hCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUU7WUFDeEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN4QzthQUFNO1lBQ0gsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRTtnQkFDNUMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUN2RTtZQUNELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUM3QjtJQUNMLENBQUM7Q0FDSixDQUFBO0FBM0RZLHNCQUFzQjtJQTNDbEMsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLGlCQUFpQjtRQUMzQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBc0NUO2lCQUNRLG9DQUFvQztLQUNoRCxDQUFDO0dBQ1csc0JBQXNCLENBMkRsQztTQTNEWSxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBLbGVzRmllbGRBYnN0cmFjdCB9IGZyb20gJy4vZmllbGQuYWJzdHJhY3QnO1xuaW1wb3J0IHsgT25Jbml0LCBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzdGFydFdpdGgsIG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2tsZXMtZm9ybS1pbnB1dCcsXG4gICAgdGVtcGxhdGU6IGBcbiAgICA8bWF0LWZvcm0tZmllbGQgW2Zvcm1Hcm91cF09XCJncm91cFwiIGNsYXNzPVwiZm9ybS1lbGVtZW50XCI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLmF1dG9jb21wbGV0ZTsgZWxzZSBub3RBdXRvQ29tcGxldGVcIj5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBtYXRUb29sdGlwPVwie3tmaWVsZC50b29sdGlwfX1cIiBbYXR0ci5pZF09XCJmaWVsZC5pZFwiIFtuZ0NsYXNzXT1cImZpZWxkLm5nQ2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIiBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIiBbdHlwZV09XCJmaWVsZC5pbnB1dFR5cGVcIiBcbiAgICAgICAgICAgIFttYXhMZW5ndGhdPVwiZmllbGQubWF4TGVuZ3RoXCIgW21pbl09XCJmaWVsZC5taW5cIiBbbWF4XT1cImZpZWxkLm1heFwiIFtzdGVwXT1cImZpZWxkLnN0ZXBcIlxuICAgICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCI+XG5cbiAgICAgICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgW2Rpc3BsYXlXaXRoXT1cImRpc3BsYXlGbi5iaW5kKHRoaXMpXCIgW3BhbmVsV2lkdGhdPVwidGhpcy5maWVsZC5wYW5lbFdpZHRoXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmaWVsZC5hdXRvY29tcGxldGVDb21wb25lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXJlZE9wdGlvbiB8IGFzeW5jXCIgW3ZhbHVlXT1cIm9wdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3tmaWVsZC5wcm9wZXJ0eSA/IG9wdGlvbltmaWVsZC5wcm9wZXJ0eV0gOiBvcHRpb259fVxuICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQuYXV0b2NvbXBsZXRlQ29tcG9uZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWRPcHRpb24gfCBhc3luY1wiIFt2YWx1ZV09XCJvcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIga2xlc0NvbXBvbmVudCBbY29tcG9uZW50XT1cImZpZWxkLmF1dG9jb21wbGV0ZUNvbXBvbmVudFwiIFt2YWx1ZV09XCJvcHRpb25cIiBbZmllbGRdPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L21hdC1hdXRvY29tcGxldGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbm90QXV0b0NvbXBsZXRlPlxuICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IG1hdFRvb2x0aXA9XCJ7e2ZpZWxkLnRvb2x0aXB9fVwiIFthdHRyLmlkXT1cImZpZWxkLmlkXCIgW25nQ2xhc3NdPVwiZmllbGQubmdDbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZVwiIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlciB8IHRyYW5zbGF0ZVwiIFt0eXBlXT1cImZpZWxkLmlucHV0VHlwZVwiXG4gICAgICAgICAgICBbbWF4TGVuZ3RoXT1cImZpZWxkLm1heExlbmd0aFwiIFttaW5dPVwiZmllbGQubWluXCIgW21heF09XCJmaWVsZC5tYXhcIiBbc3RlcF09XCJmaWVsZC5zdGVwXCI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPG1hdC1zcGlubmVyIG1hdFN1ZmZpeCBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiICpuZ0lmPVwiaXNQZW5kaW5nKClcIiBkaWFtZXRlcj1cIjE3XCI+PC9tYXQtc3Bpbm5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2YWxpZGF0aW9uIG9mIGZpZWxkLnZhbGlkYXRpb25zO1wiIG5nUHJvamVjdEFzPVwibWF0LWVycm9yXCI+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZ3JvdXAuZ2V0KGZpZWxkLm5hbWUpLmhhc0Vycm9yKHZhbGlkYXRpb24ubmFtZSlcIj57e3ZhbGlkYXRpb24ubWVzc2FnZSB8IHRyYW5zbGF0ZX19PC9tYXQtZXJyb3I+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2YWxpZGF0aW9uIG9mIGZpZWxkLmFzeW5jVmFsaWRhdGlvbnM7XCIgbmdQcm9qZWN0QXM9XCJtYXQtZXJyb3JcIj5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJncm91cC5nZXQoZmllbGQubmFtZSkuaGFzRXJyb3IodmFsaWRhdGlvbi5uYW1lKVwiPnt7dmFsaWRhdGlvbi5tZXNzYWdlIHwgdHJhbnNsYXRlfX08L21hdC1lcnJvcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICBgLFxuICAgIHN0eWxlczogWydtYXQtZm9ybS1maWVsZCB7d2lkdGg6IGNhbGMoMTAwJSl9J11cbn0pXG5leHBvcnQgY2xhc3MgS2xlc0Zvcm1JbnB1dENvbXBvbmVudCBleHRlbmRzIEtsZXNGaWVsZEFic3RyYWN0IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIGZpbHRlcmVkT3B0aW9uOiBPYnNlcnZhYmxlPGFueVtdPjtcbiAgICBvcHRpb25zJDogT2JzZXJ2YWJsZTxhbnlbXT47XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcblxuICAgICAgICBpZiAodGhpcy5maWVsZC5vcHRpb25zIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSkge1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zJCA9IHRoaXMuZmllbGQub3B0aW9ucztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucyQgPSBvZih0aGlzLmZpZWxkLm9wdGlvbnMpO1xuICAgICAgICB9XG5cblxuICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9uID0gdGhpcy5ncm91cC5nZXQodGhpcy5maWVsZC5uYW1lKS52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN0YXJ0V2l0aCgnJyksXG4gICAgICAgICAgICAgICAgLy8gbWFwKGRhdGEgPT4gZGF0YSA/IHRoaXMuZmlsdGVyRGF0YShkYXRhKSA6IHRoaXMuZmllbGQub3B0aW9ucy5zbGljZSgpKVxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChkYXRhID0+IGRhdGEgPyB0aGlzLmZpbHRlckRhdGEoZGF0YSkgOiB0aGlzLm9wdGlvbnMkKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgaWYgKCF0aGlzLmZpZWxkLm1heExlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5maWVsZC5tYXhMZW5ndGggPSA1MjQyODg7IC8vIE1heCBkZWZhdWx0IGlucHV0IFczQ1xuICAgICAgICB9XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgfVxuXG4gICAgaXNQZW5kaW5nKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5maWVsZC5uYW1lXS5wZW5kaW5nIHx8IHRoaXMuZmllbGQucGVuZGluZyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaWx0ZXJEYXRhKHZhbHVlOiBhbnkpOiBPYnNlcnZhYmxlPGFueVtdPiB7XG4gICAgICAgIGxldCBmaWx0ZXJWYWx1ZTtcblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpID09PSAnW29iamVjdCBTdHJpbmddJykge1xuICAgICAgICAgICAgZmlsdGVyVmFsdWUgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmlsdGVyVmFsdWUgPSB2YWx1ZVt0aGlzLmZpZWxkLnByb3BlcnR5XS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZmllbGQucHJvcGVydHkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMkXG4gICAgICAgICAgICAgICAgLnBpcGUobWFwKG9wdGlvbnMgPT4gb3B0aW9ucy5maWx0ZXIob3B0aW9uID0+IG9wdGlvblt0aGlzLmZpZWxkLnByb3BlcnR5XS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoZmlsdGVyVmFsdWUpID09PSAwKSkpO1xuICAgICAgICAgICAgLy8gcmV0dXJuIHRoaXMuZmllbGQub3B0aW9uc1xuICAgICAgICAgICAgLy8gICAgIC5maWx0ZXIoZGF0YSA9PiBkYXRhW3RoaXMuZmllbGQucHJvcGVydHldLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihmaWx0ZXJWYWx1ZSkgPT09IDApO1xuICAgICAgICB9XG4gICAgICAgIC8vIHJldHVybiB0aGlzLmZpZWxkLm9wdGlvbnMuZmlsdGVyKGRhdGEgPT4gZGF0YS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoZmlsdGVyVmFsdWUpID09PSAwKTtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucyQucGlwZShtYXAob3B0aW9ucyA9PiBvcHRpb25zLmZpbHRlcihvcHRpb24gPT4gb3B0aW9uLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihmaWx0ZXJWYWx1ZSkgPT09IDApKSk7XG4gICAgfVxuXG4gICAgZGlzcGxheUZuKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKHRoaXMuZmllbGQuZGlzcGxheVdpdGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpZWxkLmRpc3BsYXlXaXRoKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSAmJiB0aGlzLmZpZWxkICYmIHRoaXMuZmllbGQucHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVbdGhpcy5maWVsZC5wcm9wZXJ0eV0gPyB2YWx1ZVt0aGlzLmZpZWxkLnByb3BlcnR5XSA6ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlID8gdmFsdWUgOiAnJztcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -1,23 +1,23 @@
1
- import { __decorate } from "tslib";
2
- import { Component } from "@angular/core";
3
- import { KlesFieldAbstract } from './field.abstract';
4
- let KlesFormLabelComponent = class KlesFormLabelComponent extends KlesFieldAbstract {
5
- ngOnInit() {
6
- this.group.controls[this.field.name].disable();
7
- super.ngOnInit();
8
- }
9
- };
10
- KlesFormLabelComponent = __decorate([
11
- Component({
12
- selector: "kles-form-label",
13
- template: `
14
- <div [formGroup]="group" >
15
- <input matInput matTooltip="{{field.tooltip}}" [attr.id]="field.id"
16
- [ngClass]="field.ngClass"
17
- [ngStyle]="{'color':'inherit'}" [formControlName]="field.name" [placeholder]="field.placeholder | translate" [type]="field.inputType">
18
- </div>
19
- `
20
- })
21
- ], KlesFormLabelComponent);
22
- export { KlesFormLabelComponent };
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFiZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQDNrbGVzL2tsZXMtbWF0ZXJpYWwtZHluYW1pY2Zvcm1zLyIsInNvdXJjZXMiOlsibGliL2ZpZWxkcy9sYWJlbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFhckQsSUFBYSxzQkFBc0IsR0FBbkMsTUFBYSxzQkFBdUIsU0FBUSxpQkFBaUI7SUFFekQsUUFBUTtRQUNKLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDL0MsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JCLENBQUM7Q0FDSixDQUFBO0FBTlksc0JBQXNCO0lBVmxDLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSxpQkFBaUI7UUFDM0IsUUFBUSxFQUFFOzs7Ozs7Q0FNYjtLQUNBLENBQUM7R0FDVyxzQkFBc0IsQ0FNbEM7U0FOWSxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBLbGVzRmllbGRBYnN0cmFjdCB9IGZyb20gJy4vZmllbGQuYWJzdHJhY3QnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwia2xlcy1mb3JtLWxhYmVsXCIsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBbZm9ybUdyb3VwXT1cImdyb3VwXCIgPlxyXG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBtYXRUb29sdGlwPVwie3tmaWVsZC50b29sdGlwfX1cIiBbYXR0ci5pZF09XCJmaWVsZC5pZFwiIFxyXG4gICAgICAgIFtuZ0NsYXNzXT1cImZpZWxkLm5nQ2xhc3NcIiBcclxuICAgICAgICBbbmdTdHlsZV09XCJ7J2NvbG9yJzonaW5oZXJpdCd9XCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lXCIgW3BsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyIHwgdHJhbnNsYXRlXCIgW3R5cGVdPVwiZmllbGQuaW5wdXRUeXBlXCI+XHJcbiAgICA8L2Rpdj5cclxuYFxyXG59KVxyXG5leHBvcnQgY2xhc3MgS2xlc0Zvcm1MYWJlbENvbXBvbmVudCBleHRlbmRzIEtsZXNGaWVsZEFic3RyYWN0IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmdyb3VwLmNvbnRyb2xzW3RoaXMuZmllbGQubmFtZV0uZGlzYWJsZSgpO1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB9XHJcbn0iXX0=
1
+ import { __decorate } from "tslib";
2
+ import { Component } from "@angular/core";
3
+ import { KlesFieldAbstract } from './field.abstract';
4
+ let KlesFormLabelComponent = class KlesFormLabelComponent extends KlesFieldAbstract {
5
+ ngOnInit() {
6
+ this.group.controls[this.field.name].disable();
7
+ super.ngOnInit();
8
+ }
9
+ };
10
+ KlesFormLabelComponent = __decorate([
11
+ Component({
12
+ selector: "kles-form-label",
13
+ template: `
14
+ <div [formGroup]="group" >
15
+ <input matInput matTooltip="{{field.tooltip}}" [attr.id]="field.id"
16
+ [ngClass]="field.ngClass"
17
+ [ngStyle]="{'color':'inherit'}" [formControlName]="field.name" [placeholder]="field.placeholder | translate" [type]="field.inputType">
18
+ </div>
19
+ `
20
+ })
21
+ ], KlesFormLabelComponent);
22
+ export { KlesFormLabelComponent };
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFiZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQDNrbGVzL2tsZXMtbWF0ZXJpYWwtZHluYW1pY2Zvcm1zLyIsInNvdXJjZXMiOlsibGliL2ZpZWxkcy9sYWJlbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFhckQsSUFBYSxzQkFBc0IsR0FBbkMsTUFBYSxzQkFBdUIsU0FBUSxpQkFBaUI7SUFFekQsUUFBUTtRQUNKLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDL0MsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JCLENBQUM7Q0FDSixDQUFBO0FBTlksc0JBQXNCO0lBVmxDLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSxpQkFBaUI7UUFDM0IsUUFBUSxFQUFFOzs7Ozs7Q0FNYjtLQUNBLENBQUM7R0FDVyxzQkFBc0IsQ0FNbEM7U0FOWSxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEtsZXNGaWVsZEFic3RyYWN0IH0gZnJvbSAnLi9maWVsZC5hYnN0cmFjdCc7XG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwia2xlcy1mb3JtLWxhYmVsXCIsXG4gICAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IFtmb3JtR3JvdXBdPVwiZ3JvdXBcIiA+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBtYXRUb29sdGlwPVwie3tmaWVsZC50b29sdGlwfX1cIiBbYXR0ci5pZF09XCJmaWVsZC5pZFwiIFxuICAgICAgICBbbmdDbGFzc109XCJmaWVsZC5uZ0NsYXNzXCIgXG4gICAgICAgIFtuZ1N0eWxlXT1cInsnY29sb3InOidpbmhlcml0J31cIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIiBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIiBbdHlwZV09XCJmaWVsZC5pbnB1dFR5cGVcIj5cbiAgICA8L2Rpdj5cbmBcbn0pXG5leHBvcnQgY2xhc3MgS2xlc0Zvcm1MYWJlbENvbXBvbmVudCBleHRlbmRzIEtsZXNGaWVsZEFic3RyYWN0IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmdyb3VwLmNvbnRyb2xzW3RoaXMuZmllbGQubmFtZV0uZGlzYWJsZSgpO1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIH1cbn0iXX0=
@@ -1,19 +1,19 @@
1
- import { __decorate } from "tslib";
2
- import { Component } from "@angular/core";
3
- import { KlesFieldAbstract } from "./field.abstract";
4
- let KlesFormLineBreakComponent = class KlesFormLineBreakComponent extends KlesFieldAbstract {
5
- ngOnInit() { super.ngOnInit(); }
6
- };
7
- KlesFormLineBreakComponent = __decorate([
8
- Component({
9
- selector: "kles-form-line-break",
10
- template: ``,
11
- styles: [`:host{
12
- flex-basis: 100%;
13
- display: flex;
14
- height:0;
15
- }`]
16
- })
17
- ], KlesFormLineBreakComponent);
18
- export { KlesFormLineBreakComponent };
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1icmVhay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AM2tsZXMva2xlcy1tYXRlcmlhbC1keW5hbWljZm9ybXMvIiwic291cmNlcyI6WyJsaWIvZmllbGRzL2xpbmUtYnJlYWsuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBYXJELElBQWEsMEJBQTBCLEdBQXZDLE1BQWEsMEJBQTJCLFNBQVEsaUJBQWlCO0lBQzdELFFBQVEsS0FBSyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ25DLENBQUE7QUFGWSwwQkFBMEI7SUFYdEMsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLHNCQUFzQjtRQUNoQyxRQUFRLEVBQUUsRUFBRTtpQkFFUjs7OztVQUlFO0tBRVQsQ0FBQztHQUNXLDBCQUEwQixDQUV0QztTQUZZLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgS2xlc0ZpZWxkQWJzdHJhY3QgfSBmcm9tIFwiLi9maWVsZC5hYnN0cmFjdFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJrbGVzLWZvcm0tbGluZS1icmVha1wiLFxyXG4gICAgdGVtcGxhdGU6IGBgLFxyXG4gICAgc3R5bGVzOiBbXHJcbiAgICAgICAgYDpob3N0e1xyXG4gICAgICAgICAgICBmbGV4LWJhc2lzOiAxMDAlO1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgICBoZWlnaHQ6MDtcclxuICAgICAgICB9YFxyXG4gICAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgS2xlc0Zvcm1MaW5lQnJlYWtDb21wb25lbnQgZXh0ZW5kcyBLbGVzRmllbGRBYnN0cmFjdCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBuZ09uSW5pdCgpIHsgc3VwZXIubmdPbkluaXQoKTsgfVxyXG59XHJcbiJdfQ==
1
+ import { __decorate } from "tslib";
2
+ import { Component } from "@angular/core";
3
+ import { KlesFieldAbstract } from "./field.abstract";
4
+ let KlesFormLineBreakComponent = class KlesFormLineBreakComponent extends KlesFieldAbstract {
5
+ ngOnInit() { super.ngOnInit(); }
6
+ };
7
+ KlesFormLineBreakComponent = __decorate([
8
+ Component({
9
+ selector: "kles-form-line-break",
10
+ template: ``,
11
+ styles: [`:host{
12
+ flex-basis: 100%;
13
+ display: flex;
14
+ height:0;
15
+ }`]
16
+ })
17
+ ], KlesFormLineBreakComponent);
18
+ export { KlesFormLineBreakComponent };
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1icmVhay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AM2tsZXMva2xlcy1tYXRlcmlhbC1keW5hbWljZm9ybXMvIiwic291cmNlcyI6WyJsaWIvZmllbGRzL2xpbmUtYnJlYWsuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBYXJELElBQWEsMEJBQTBCLEdBQXZDLE1BQWEsMEJBQTJCLFNBQVEsaUJBQWlCO0lBQzdELFFBQVEsS0FBSyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ25DLENBQUE7QUFGWSwwQkFBMEI7SUFYdEMsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLHNCQUFzQjtRQUNoQyxRQUFRLEVBQUUsRUFBRTtpQkFFUjs7OztVQUlFO0tBRVQsQ0FBQztHQUNXLDBCQUEwQixDQUV0QztTQUZZLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEtsZXNGaWVsZEFic3RyYWN0IH0gZnJvbSBcIi4vZmllbGQuYWJzdHJhY3RcIjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwia2xlcy1mb3JtLWxpbmUtYnJlYWtcIixcbiAgICB0ZW1wbGF0ZTogYGAsXG4gICAgc3R5bGVzOiBbXG4gICAgICAgIGA6aG9zdHtcbiAgICAgICAgICAgIGZsZXgtYmFzaXM6IDEwMCU7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgaGVpZ2h0OjA7XG4gICAgICAgIH1gXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBLbGVzRm9ybUxpbmVCcmVha0NvbXBvbmVudCBleHRlbmRzIEtsZXNGaWVsZEFic3RyYWN0IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBuZ09uSW5pdCgpIHsgc3VwZXIubmdPbkluaXQoKTsgfVxufVxuIl19
@@ -1,20 +1,20 @@
1
- import { __decorate } from "tslib";
2
- import { Component } from "@angular/core";
3
- import { KlesFieldAbstract } from "./field.abstract";
4
- let KlesFormLinkComponent = class KlesFormLinkComponent extends KlesFieldAbstract {
5
- ngOnInit() {
6
- super.ngOnInit();
7
- }
8
- };
9
- KlesFormLinkComponent = __decorate([
10
- Component({
11
- selector: 'kles-form-link',
12
- template: `
13
- <a [href]="group.controls[field.name].value" matTooltip="{{field.tooltip}}" [attr.id]="field.id" [ngClass]="field.ngClass">
14
- {{field.label}}
15
- </a>
16
- `
17
- })
18
- ], KlesFormLinkComponent);
19
- export { KlesFormLinkComponent };
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AM2tsZXMva2xlcy1tYXRlcmlhbC1keW5hbWljZm9ybXMvIiwic291cmNlcyI6WyJsaWIvZmllbGRzL2xpbmsuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBVXJELElBQWEscUJBQXFCLEdBQWxDLE1BQWEscUJBQXNCLFNBQVEsaUJBQWlCO0lBRXhELFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDckIsQ0FBQztDQUNKLENBQUE7QUFMWSxxQkFBcUI7SUFSakMsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLGdCQUFnQjtRQUMxQixRQUFRLEVBQUU7Ozs7Q0FJYjtLQUNBLENBQUM7R0FDVyxxQkFBcUIsQ0FLakM7U0FMWSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEtsZXNGaWVsZEFic3RyYWN0IH0gZnJvbSBcIi4vZmllbGQuYWJzdHJhY3RcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdrbGVzLWZvcm0tbGluaycsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxhIFtocmVmXT1cImdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWVdLnZhbHVlXCIgbWF0VG9vbHRpcD1cInt7ZmllbGQudG9vbHRpcH19XCIgW2F0dHIuaWRdPVwiZmllbGQuaWRcIiBbbmdDbGFzc109XCJmaWVsZC5uZ0NsYXNzXCI+XHJcbiAgICAgICAgICAgIHt7ZmllbGQubGFiZWx9fVxyXG4gICAgICAgIDwvYT5cclxuYFxyXG59KVxyXG5leHBvcnQgY2xhc3MgS2xlc0Zvcm1MaW5rQ29tcG9uZW50IGV4dGVuZHMgS2xlc0ZpZWxkQWJzdHJhY3QgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB9XHJcbn1cclxuIl19
1
+ import { __decorate } from "tslib";
2
+ import { Component } from "@angular/core";
3
+ import { KlesFieldAbstract } from "./field.abstract";
4
+ let KlesFormLinkComponent = class KlesFormLinkComponent extends KlesFieldAbstract {
5
+ ngOnInit() {
6
+ super.ngOnInit();
7
+ }
8
+ };
9
+ KlesFormLinkComponent = __decorate([
10
+ Component({
11
+ selector: 'kles-form-link',
12
+ template: `
13
+ <a [href]="group.controls[field.name].value" matTooltip="{{field.tooltip}}" [attr.id]="field.id" [ngClass]="field.ngClass">
14
+ {{field.label}}
15
+ </a>
16
+ `
17
+ })
18
+ ], KlesFormLinkComponent);
19
+ export { KlesFormLinkComponent };
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AM2tsZXMva2xlcy1tYXRlcmlhbC1keW5hbWljZm9ybXMvIiwic291cmNlcyI6WyJsaWIvZmllbGRzL2xpbmsuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBVXJELElBQWEscUJBQXFCLEdBQWxDLE1BQWEscUJBQXNCLFNBQVEsaUJBQWlCO0lBRXhELFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDckIsQ0FBQztDQUNKLENBQUE7QUFMWSxxQkFBcUI7SUFSakMsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLGdCQUFnQjtRQUMxQixRQUFRLEVBQUU7Ozs7Q0FJYjtLQUNBLENBQUM7R0FDVyxxQkFBcUIsQ0FLakM7U0FMWSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBLbGVzRmllbGRBYnN0cmFjdCB9IGZyb20gXCIuL2ZpZWxkLmFic3RyYWN0XCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAna2xlcy1mb3JtLWxpbmsnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxhIFtocmVmXT1cImdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWVdLnZhbHVlXCIgbWF0VG9vbHRpcD1cInt7ZmllbGQudG9vbHRpcH19XCIgW2F0dHIuaWRdPVwiZmllbGQuaWRcIiBbbmdDbGFzc109XCJmaWVsZC5uZ0NsYXNzXCI+XG4gICAgICAgICAgICB7e2ZpZWxkLmxhYmVsfX1cbiAgICAgICAgPC9hPlxuYFxufSlcbmV4cG9ydCBjbGFzcyBLbGVzRm9ybUxpbmtDb21wb25lbnQgZXh0ZW5kcyBLbGVzRmllbGRBYnN0cmFjdCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB9XG59XG4iXX0=
@@ -1,83 +1,83 @@
1
- import { __decorate } from "tslib";
2
- import { Component } from '@angular/core';
3
- import { KlesFieldAbstract } from './field.abstract';
4
- import { FormGroup, FormArray, FormBuilder, ValidatorFn, Validators, AsyncValidatorFn } from '@angular/forms';
5
- let KlesFormListFieldComponent = class KlesFormListFieldComponent extends KlesFieldAbstract {
6
- constructor(fb) {
7
- super();
8
- this.fb = fb;
9
- }
10
- ngOnInit() {
11
- this.formArray = this.group.controls[this.field.name];
12
- super.ngOnInit();
13
- }
14
- createFormGroup() {
15
- const group = this.fb.group({});
16
- this.field.collections.forEach(item => {
17
- const control = this.fb.control(null, this.bindValidations(item.validations || []), this.bindAsyncValidations(item.asyncValidations || []));
18
- group.addControl(item.name, control);
19
- });
20
- return group;
21
- }
22
- deleteField(index) {
23
- this.formArray.removeAt(index);
24
- }
25
- addField() {
26
- this.formArray.push(this.createFormGroup());
27
- }
28
- bindValidations(validations) {
29
- if (validations.length > 0) {
30
- const validList = [];
31
- validations.forEach(valid => {
32
- validList.push(valid.validator);
33
- });
34
- return Validators.compose(validList);
35
- }
36
- return null;
37
- }
38
- bindAsyncValidations(validations) {
39
- if (validations.length > 0) {
40
- const validList = [];
41
- validations.forEach(valid => {
42
- validList.push(valid.validator);
43
- });
44
- return Validators.composeAsync(validList);
45
- }
46
- return null;
47
- }
48
- };
49
- KlesFormListFieldComponent.ctorParameters = () => [
50
- { type: FormBuilder }
51
- ];
52
- KlesFormListFieldComponent = __decorate([
53
- Component({
54
- selector: 'kles-form-listfield',
55
- template: `
56
- <div [formGroup]="group" class="form-element">
57
- {{field.label | translate}}
58
- <button mat-icon-button color="primary" (click)="addField()">
59
- <mat-icon>add</mat-icon>
60
- </button>
61
-
62
- <div class="dynamic-form" [formGroupName]="field.name">
63
- <div *ngFor="let subGroup of formArray.controls let index = index;" fxLayout="row" fxLayoutGap="5px">
64
- <ng-container *ngFor="let subfield of field.collections;"
65
- dynamicField [field]="subfield" [group]="subGroup">
66
- </ng-container>
67
- <button mat-icon-button (click)="deleteField(index)" color="primary">
68
- <mat-icon>delete_outlined</mat-icon>
69
- </button>
70
- </div>
71
- <ng-container *ngFor="let validation of field.validations;" ngProjectAs="mat-error">
72
- <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
73
- </ng-container>
74
- <ng-container *ngFor="let validation of field.asyncValidations;" ngProjectAs="mat-error">
75
- <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
76
- </ng-container>
77
- </div>
78
- </div>
79
- `
80
- })
81
- ], KlesFormListFieldComponent);
82
- export { KlesFormListFieldComponent };
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AM2tsZXMva2xlcy1tYXRlcmlhbC1keW5hbWljZm9ybXMvIiwic291cmNlcyI6WyJsaWIvZmllbGRzL2xpc3QtZmllbGQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFnQzlHLElBQWEsMEJBQTBCLEdBQXZDLE1BQWEsMEJBQTJCLFNBQVEsaUJBQWlCO0lBSTdELFlBQW9CLEVBQWU7UUFDL0IsS0FBSyxFQUFFLENBQUM7UUFEUSxPQUFFLEdBQUYsRUFBRSxDQUFhO0lBRW5DLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBYyxDQUFDO1FBQ25FLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRU8sZUFBZTtRQUNuQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQzNCLElBQUksRUFDSixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLEVBQzVDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDLENBQ3pELENBQUM7WUFDRixLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFekMsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLEtBQUssQ0FBQztJQUVqQixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWE7UUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBR08sZUFBZSxDQUFDLFdBQTBDO1FBQzlELElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDeEIsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3hCLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3BDLENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBRXhDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUdPLG9CQUFvQixDQUFDLFdBQStDO1FBQ3hFLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDeEIsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3hCLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3BDLENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxVQUFVLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBRTdDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztDQUdKLENBQUE7O1lBNUQyQixXQUFXOztBQUoxQiwwQkFBMEI7SUE3QnRDLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSxxQkFBcUI7UUFDL0IsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0F3QlQ7S0FFSixDQUFDO0dBQ1csMEJBQTBCLENBZ0V0QztTQWhFWSwwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBLbGVzRmllbGRBYnN0cmFjdCB9IGZyb20gJy4vZmllbGQuYWJzdHJhY3QnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1BcnJheSwgRm9ybUJ1aWxkZXIsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzLCBBc3luY1ZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBJS2xlc1ZhbGlkYXRvciB9IGZyb20gJy4uL2ludGVyZmFjZXMvdmFsaWRhdG9yLmludGVyZmFjZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAna2xlcy1mb3JtLWxpc3RmaWVsZCcsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBbZm9ybUdyb3VwXT1cImdyb3VwXCIgY2xhc3M9XCJmb3JtLWVsZW1lbnRcIj5cclxuICAgICAgICB7e2ZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiYWRkRmllbGQoKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+YWRkPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZm9ybVwiIFtmb3JtR3JvdXBOYW1lXT1cImZpZWxkLm5hbWVcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc3ViR3JvdXAgb2YgZm9ybUFycmF5LmNvbnRyb2xzIGxldCBpbmRleCA9IGluZGV4O1wiIGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCI1cHhcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1YmZpZWxkIG9mIGZpZWxkLmNvbGxlY3Rpb25zO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgZHluYW1pY0ZpZWxkIFtmaWVsZF09XCJzdWJmaWVsZFwiIFtncm91cF09XCJzdWJHcm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiZGVsZXRlRmllbGQoaW5kZXgpXCIgY29sb3I9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmRlbGV0ZV9vdXRsaW5lZDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZhbGlkYXRpb24gb2YgZmllbGQudmFsaWRhdGlvbnM7XCIgbmdQcm9qZWN0QXM9XCJtYXQtZXJyb3JcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJncm91cC5nZXQoZmllbGQubmFtZSkuaGFzRXJyb3IodmFsaWRhdGlvbi5uYW1lKVwiPnt7dmFsaWRhdGlvbi5tZXNzYWdlIHwgdHJhbnNsYXRlfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZhbGlkYXRpb24gb2YgZmllbGQuYXN5bmNWYWxpZGF0aW9ucztcIiBuZ1Byb2plY3RBcz1cIm1hdC1lcnJvclwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImdyb3VwLmdldChmaWVsZC5uYW1lKS5oYXNFcnJvcih2YWxpZGF0aW9uLm5hbWUpXCI+e3t2YWxpZGF0aW9uLm1lc3NhZ2UgfCB0cmFuc2xhdGV9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgYCxcclxuICAgIHN0eWxlczogW11cclxufSlcclxuZXhwb3J0IGNsYXNzIEtsZXNGb3JtTGlzdEZpZWxkQ29tcG9uZW50IGV4dGVuZHMgS2xlc0ZpZWxkQWJzdHJhY3QgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAgIGZvcm1BcnJheTogRm9ybUFycmF5O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZvcm1BcnJheSA9IHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5maWVsZC5uYW1lXSBhcyBGb3JtQXJyYXk7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNyZWF0ZUZvcm1Hcm91cCgpOiBGb3JtR3JvdXAge1xyXG4gICAgICAgIGNvbnN0IGdyb3VwID0gdGhpcy5mYi5ncm91cCh7fSk7XHJcbiAgICAgICAgdGhpcy5maWVsZC5jb2xsZWN0aW9ucy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mYi5jb250cm9sKFxyXG4gICAgICAgICAgICAgICAgbnVsbCxcclxuICAgICAgICAgICAgICAgIHRoaXMuYmluZFZhbGlkYXRpb25zKGl0ZW0udmFsaWRhdGlvbnMgfHwgW10pLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5iaW5kQXN5bmNWYWxpZGF0aW9ucyhpdGVtLmFzeW5jVmFsaWRhdGlvbnMgfHwgW10pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGdyb3VwLmFkZENvbnRyb2woaXRlbS5uYW1lLCBjb250cm9sKTtcclxuXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBncm91cDtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlRmllbGQoaW5kZXg6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMuZm9ybUFycmF5LnJlbW92ZUF0KGluZGV4KTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRGaWVsZCgpIHtcclxuICAgICAgICB0aGlzLmZvcm1BcnJheS5wdXNoKHRoaXMuY3JlYXRlRm9ybUdyb3VwKCkpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwcml2YXRlIGJpbmRWYWxpZGF0aW9ucyh2YWxpZGF0aW9uczogSUtsZXNWYWxpZGF0b3I8VmFsaWRhdG9yRm4+W10pOiBWYWxpZGF0b3JGbiB7XHJcbiAgICAgICAgaWYgKHZhbGlkYXRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsaWRMaXN0ID0gW107XHJcbiAgICAgICAgICAgIHZhbGlkYXRpb25zLmZvckVhY2godmFsaWQgPT4ge1xyXG4gICAgICAgICAgICAgICAgdmFsaWRMaXN0LnB1c2godmFsaWQudmFsaWRhdG9yKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiBWYWxpZGF0b3JzLmNvbXBvc2UodmFsaWRMaXN0KTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwcml2YXRlIGJpbmRBc3luY1ZhbGlkYXRpb25zKHZhbGlkYXRpb25zOiBJS2xlc1ZhbGlkYXRvcjxBc3luY1ZhbGlkYXRvckZuPltdKTogQXN5bmNWYWxpZGF0b3JGbiB7XHJcbiAgICAgICAgaWYgKHZhbGlkYXRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsaWRMaXN0ID0gW107XHJcbiAgICAgICAgICAgIHZhbGlkYXRpb25zLmZvckVhY2godmFsaWQgPT4ge1xyXG4gICAgICAgICAgICAgICAgdmFsaWRMaXN0LnB1c2godmFsaWQudmFsaWRhdG9yKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiBWYWxpZGF0b3JzLmNvbXBvc2VBc3luYyh2YWxpZExpc3QpO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG5cclxufVxyXG5cclxuIl19
1
+ import { __decorate } from "tslib";
2
+ import { Component } from '@angular/core';
3
+ import { KlesFieldAbstract } from './field.abstract';
4
+ import { FormGroup, FormArray, FormBuilder, ValidatorFn, Validators, AsyncValidatorFn } from '@angular/forms';
5
+ let KlesFormListFieldComponent = class KlesFormListFieldComponent extends KlesFieldAbstract {
6
+ constructor(fb) {
7
+ super();
8
+ this.fb = fb;
9
+ }
10
+ ngOnInit() {
11
+ this.formArray = this.group.controls[this.field.name];
12
+ super.ngOnInit();
13
+ }
14
+ createFormGroup() {
15
+ const group = this.fb.group({});
16
+ this.field.collections.forEach(item => {
17
+ const control = this.fb.control(null, this.bindValidations(item.validations || []), this.bindAsyncValidations(item.asyncValidations || []));
18
+ group.addControl(item.name, control);
19
+ });
20
+ return group;
21
+ }
22
+ deleteField(index) {
23
+ this.formArray.removeAt(index);
24
+ }
25
+ addField() {
26
+ this.formArray.push(this.createFormGroup());
27
+ }
28
+ bindValidations(validations) {
29
+ if (validations.length > 0) {
30
+ const validList = [];
31
+ validations.forEach(valid => {
32
+ validList.push(valid.validator);
33
+ });
34
+ return Validators.compose(validList);
35
+ }
36
+ return null;
37
+ }
38
+ bindAsyncValidations(validations) {
39
+ if (validations.length > 0) {
40
+ const validList = [];
41
+ validations.forEach(valid => {
42
+ validList.push(valid.validator);
43
+ });
44
+ return Validators.composeAsync(validList);
45
+ }
46
+ return null;
47
+ }
48
+ };
49
+ KlesFormListFieldComponent.ctorParameters = () => [
50
+ { type: FormBuilder }
51
+ ];
52
+ KlesFormListFieldComponent = __decorate([
53
+ Component({
54
+ selector: 'kles-form-listfield',
55
+ template: `
56
+ <div [formGroup]="group" class="form-element">
57
+ {{field.label | translate}}
58
+ <button mat-icon-button color="primary" (click)="addField()">
59
+ <mat-icon>add</mat-icon>
60
+ </button>
61
+
62
+ <div class="dynamic-form" [formGroupName]="field.name">
63
+ <div *ngFor="let subGroup of formArray.controls let index = index;" fxLayout="row" fxLayoutGap="5px">
64
+ <ng-container *ngFor="let subfield of field.collections;"
65
+ dynamicField [field]="subfield" [group]="subGroup">
66
+ </ng-container>
67
+ <button mat-icon-button (click)="deleteField(index)" color="primary">
68
+ <mat-icon>delete_outlined</mat-icon>
69
+ </button>
70
+ </div>
71
+ <ng-container *ngFor="let validation of field.validations;" ngProjectAs="mat-error">
72
+ <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
73
+ </ng-container>
74
+ <ng-container *ngFor="let validation of field.asyncValidations;" ngProjectAs="mat-error">
75
+ <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
76
+ </ng-container>
77
+ </div>
78
+ </div>
79
+ `
80
+ })
81
+ ], KlesFormListFieldComponent);
82
+ export { KlesFormListFieldComponent };
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AM2tsZXMva2xlcy1tYXRlcmlhbC1keW5hbWljZm9ybXMvIiwic291cmNlcyI6WyJsaWIvZmllbGRzL2xpc3QtZmllbGQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFnQzlHLElBQWEsMEJBQTBCLEdBQXZDLE1BQWEsMEJBQTJCLFNBQVEsaUJBQWlCO0lBSTdELFlBQW9CLEVBQWU7UUFDL0IsS0FBSyxFQUFFLENBQUM7UUFEUSxPQUFFLEdBQUYsRUFBRSxDQUFhO0lBRW5DLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBYyxDQUFDO1FBQ25FLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRU8sZUFBZTtRQUNuQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQzNCLElBQUksRUFDSixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLEVBQzVDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDLENBQ3pELENBQUM7WUFDRixLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFekMsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLEtBQUssQ0FBQztJQUVqQixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWE7UUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBR08sZUFBZSxDQUFDLFdBQTBDO1FBQzlELElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDeEIsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3hCLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3BDLENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBRXhDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUdPLG9CQUFvQixDQUFDLFdBQStDO1FBQ3hFLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDeEIsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3hCLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3BDLENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxVQUFVLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBRTdDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztDQUdKLENBQUE7O1lBNUQyQixXQUFXOztBQUoxQiwwQkFBMEI7SUE3QnRDLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSxxQkFBcUI7UUFDL0IsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0F3QlQ7S0FFSixDQUFDO0dBQ1csMEJBQTBCLENBZ0V0QztTQWhFWSwwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgS2xlc0ZpZWxkQWJzdHJhY3QgfSBmcm9tICcuL2ZpZWxkLmFic3RyYWN0JztcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMsIEFzeW5jVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJS2xlc1ZhbGlkYXRvciB9IGZyb20gJy4uL2ludGVyZmFjZXMvdmFsaWRhdG9yLmludGVyZmFjZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAna2xlcy1mb3JtLWxpc3RmaWVsZCcsXG4gICAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IFtmb3JtR3JvdXBdPVwiZ3JvdXBcIiBjbGFzcz1cImZvcm0tZWxlbWVudFwiPlxuICAgICAgICB7e2ZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImFkZEZpZWxkKClcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5hZGQ8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1mb3JtXCIgW2Zvcm1Hcm91cE5hbWVdPVwiZmllbGQubmFtZVwiPlxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc3ViR3JvdXAgb2YgZm9ybUFycmF5LmNvbnRyb2xzIGxldCBpbmRleCA9IGluZGV4O1wiIGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCI1cHhcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWJmaWVsZCBvZiBmaWVsZC5jb2xsZWN0aW9ucztcIlxuICAgICAgICAgICAgICAgICAgICBkeW5hbWljRmllbGQgW2ZpZWxkXT1cInN1YmZpZWxkXCIgW2dyb3VwXT1cInN1Ykdyb3VwXCI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImRlbGV0ZUZpZWxkKGluZGV4KVwiIGNvbG9yPVwicHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+ZGVsZXRlX291dGxpbmVkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdmFsaWRhdGlvbiBvZiBmaWVsZC52YWxpZGF0aW9ucztcIiBuZ1Byb2plY3RBcz1cIm1hdC1lcnJvclwiPlxuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJncm91cC5nZXQoZmllbGQubmFtZSkuaGFzRXJyb3IodmFsaWRhdGlvbi5uYW1lKVwiPnt7dmFsaWRhdGlvbi5tZXNzYWdlIHwgdHJhbnNsYXRlfX08L21hdC1lcnJvcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdmFsaWRhdGlvbiBvZiBmaWVsZC5hc3luY1ZhbGlkYXRpb25zO1wiIG5nUHJvamVjdEFzPVwibWF0LWVycm9yXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImdyb3VwLmdldChmaWVsZC5uYW1lKS5oYXNFcnJvcih2YWxpZGF0aW9uLm5hbWUpXCI+e3t2YWxpZGF0aW9uLm1lc3NhZ2UgfCB0cmFuc2xhdGV9fTwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIGAsXG4gICAgc3R5bGVzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBLbGVzRm9ybUxpc3RGaWVsZENvbXBvbmVudCBleHRlbmRzIEtsZXNGaWVsZEFic3RyYWN0IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIGZvcm1BcnJheTogRm9ybUFycmF5O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtQXJyYXkgPSB0aGlzLmdyb3VwLmNvbnRyb2xzW3RoaXMuZmllbGQubmFtZV0gYXMgRm9ybUFycmF5O1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlRm9ybUdyb3VwKCk6IEZvcm1Hcm91cCB7XG4gICAgICAgIGNvbnN0IGdyb3VwID0gdGhpcy5mYi5ncm91cCh7fSk7XG4gICAgICAgIHRoaXMuZmllbGQuY29sbGVjdGlvbnMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZiLmNvbnRyb2woXG4gICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICB0aGlzLmJpbmRWYWxpZGF0aW9ucyhpdGVtLnZhbGlkYXRpb25zIHx8IFtdKSxcbiAgICAgICAgICAgICAgICB0aGlzLmJpbmRBc3luY1ZhbGlkYXRpb25zKGl0ZW0uYXN5bmNWYWxpZGF0aW9ucyB8fCBbXSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBncm91cC5hZGRDb250cm9sKGl0ZW0ubmFtZSwgY29udHJvbCk7XG5cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGdyb3VwO1xuXG4gICAgfVxuXG4gICAgZGVsZXRlRmllbGQoaW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLmZvcm1BcnJheS5yZW1vdmVBdChpbmRleCk7XG4gICAgfVxuXG4gICAgYWRkRmllbGQoKSB7XG4gICAgICAgIHRoaXMuZm9ybUFycmF5LnB1c2godGhpcy5jcmVhdGVGb3JtR3JvdXAoKSk7XG4gICAgfVxuXG5cbiAgICBwcml2YXRlIGJpbmRWYWxpZGF0aW9ucyh2YWxpZGF0aW9uczogSUtsZXNWYWxpZGF0b3I8VmFsaWRhdG9yRm4+W10pOiBWYWxpZGF0b3JGbiB7XG4gICAgICAgIGlmICh2YWxpZGF0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCB2YWxpZExpc3QgPSBbXTtcbiAgICAgICAgICAgIHZhbGlkYXRpb25zLmZvckVhY2godmFsaWQgPT4ge1xuICAgICAgICAgICAgICAgIHZhbGlkTGlzdC5wdXNoKHZhbGlkLnZhbGlkYXRvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBWYWxpZGF0b3JzLmNvbXBvc2UodmFsaWRMaXN0KTtcblxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuXG4gICAgcHJpdmF0ZSBiaW5kQXN5bmNWYWxpZGF0aW9ucyh2YWxpZGF0aW9uczogSUtsZXNWYWxpZGF0b3I8QXN5bmNWYWxpZGF0b3JGbj5bXSk6IEFzeW5jVmFsaWRhdG9yRm4ge1xuICAgICAgICBpZiAodmFsaWRhdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgdmFsaWRMaXN0ID0gW107XG4gICAgICAgICAgICB2YWxpZGF0aW9ucy5mb3JFYWNoKHZhbGlkID0+IHtcbiAgICAgICAgICAgICAgICB2YWxpZExpc3QucHVzaCh2YWxpZC52YWxpZGF0b3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gVmFsaWRhdG9ycy5jb21wb3NlQXN5bmModmFsaWRMaXN0KTtcblxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuXG59XG5cbiJdfQ==