@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,27 +1,27 @@
1
- import { __decorate } from "tslib";
2
- import { Component } from "@angular/core";
3
- import { KlesFieldAbstract } from './field.abstract';
4
- let KlesFormRadioComponent = class KlesFormRadioComponent extends KlesFieldAbstract {
5
- ngOnInit() { super.ngOnInit(); }
6
- };
7
- KlesFormRadioComponent = __decorate([
8
- Component({
9
- selector: "kles-form-radiobutton",
10
- template: `
11
- <div [formGroup]="group">
12
- <label class="radio-label-padding">{{field.label}}</label>
13
- <mat-radio-group matTooltip="{{field.tooltip}}" [attr.id]="field.id" [ngClass]="field.ngClass" [formControlName]="field.name">
14
- <mat-radio-button *ngFor="let item of field.options" [value]="item">{{item}}</mat-radio-button>
15
- </mat-radio-group>
16
- <ng-container *ngFor="let validation of field.validations;" ngProjectAs="mat-error">
17
- <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
18
- </ng-container>
19
- <ng-container *ngFor="let validation of field.asyncValidations;" ngProjectAs="mat-error">
20
- <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
21
- </ng-container>
22
- </div>
23
- `
24
- })
25
- ], KlesFormRadioComponent);
26
- export { KlesFormRadioComponent };
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQDNrbGVzL2tsZXMtbWF0ZXJpYWwtZHluYW1pY2Zvcm1zLyIsInNvdXJjZXMiOlsibGliL2ZpZWxkcy9yYWRpby5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFvQnJELElBQWEsc0JBQXNCLEdBQW5DLE1BQWEsc0JBQXVCLFNBQVEsaUJBQWlCO0lBRXpELFFBQVEsS0FBSyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ25DLENBQUE7QUFIWSxzQkFBc0I7SUFsQmxDLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSx1QkFBdUI7UUFDakMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7O0NBYWI7S0FFQSxDQUFDO0dBQ1csc0JBQXNCLENBR2xDO1NBSFksc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBLbGVzRmllbGRBYnN0cmFjdCB9IGZyb20gJy4vZmllbGQuYWJzdHJhY3QnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJrbGVzLWZvcm0tcmFkaW9idXR0b25cIixcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IFtmb3JtR3JvdXBdPVwiZ3JvdXBcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJyYWRpby1sYWJlbC1wYWRkaW5nXCI+e3tmaWVsZC5sYWJlbH19PC9sYWJlbD5cclxuICAgICAgICA8bWF0LXJhZGlvLWdyb3VwIG1hdFRvb2x0aXA9XCJ7e2ZpZWxkLnRvb2x0aXB9fVwiIFthdHRyLmlkXT1cImZpZWxkLmlkXCIgW25nQ2xhc3NdPVwiZmllbGQubmdDbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZVwiPlxyXG4gICAgICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWVsZC5vcHRpb25zXCIgW3ZhbHVlXT1cIml0ZW1cIj57e2l0ZW19fTwvbWF0LXJhZGlvLWJ1dHRvbj5cclxuICAgICAgICA8L21hdC1yYWRpby1ncm91cD5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2YWxpZGF0aW9uIG9mIGZpZWxkLnZhbGlkYXRpb25zO1wiIG5nUHJvamVjdEFzPVwibWF0LWVycm9yXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZ3JvdXAuZ2V0KGZpZWxkLm5hbWUpLmhhc0Vycm9yKHZhbGlkYXRpb24ubmFtZSlcIj57e3ZhbGlkYXRpb24ubWVzc2FnZSB8IHRyYW5zbGF0ZX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2YWxpZGF0aW9uIG9mIGZpZWxkLmFzeW5jVmFsaWRhdGlvbnM7XCIgbmdQcm9qZWN0QXM9XCJtYXQtZXJyb3JcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJncm91cC5nZXQoZmllbGQubmFtZSkuaGFzRXJyb3IodmFsaWRhdGlvbi5uYW1lKVwiPnt7dmFsaWRhdGlvbi5tZXNzYWdlIHwgdHJhbnNsYXRlfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuYCxcclxuICAgIHN0eWxlczogW11cclxufSlcclxuZXhwb3J0IGNsYXNzIEtsZXNGb3JtUmFkaW9Db21wb25lbnQgZXh0ZW5kcyBLbGVzRmllbGRBYnN0cmFjdCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gICAgbmdPbkluaXQoKSB7IHN1cGVyLm5nT25Jbml0KCk7IH1cclxufSJdfQ==
1
+ import { __decorate } from "tslib";
2
+ import { Component } from "@angular/core";
3
+ import { KlesFieldAbstract } from './field.abstract';
4
+ let KlesFormRadioComponent = class KlesFormRadioComponent extends KlesFieldAbstract {
5
+ ngOnInit() { super.ngOnInit(); }
6
+ };
7
+ KlesFormRadioComponent = __decorate([
8
+ Component({
9
+ selector: "kles-form-radiobutton",
10
+ template: `
11
+ <div [formGroup]="group">
12
+ <label class="radio-label-padding">{{field.label}}</label>
13
+ <mat-radio-group matTooltip="{{field.tooltip}}" [attr.id]="field.id" [ngClass]="field.ngClass" [formControlName]="field.name">
14
+ <mat-radio-button *ngFor="let item of field.options" [value]="item">{{item}}</mat-radio-button>
15
+ </mat-radio-group>
16
+ <ng-container *ngFor="let validation of field.validations;" ngProjectAs="mat-error">
17
+ <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
18
+ </ng-container>
19
+ <ng-container *ngFor="let validation of field.asyncValidations;" ngProjectAs="mat-error">
20
+ <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
21
+ </ng-container>
22
+ </div>
23
+ `
24
+ })
25
+ ], KlesFormRadioComponent);
26
+ export { KlesFormRadioComponent };
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQDNrbGVzL2tsZXMtbWF0ZXJpYWwtZHluYW1pY2Zvcm1zLyIsInNvdXJjZXMiOlsibGliL2ZpZWxkcy9yYWRpby5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFvQnJELElBQWEsc0JBQXNCLEdBQW5DLE1BQWEsc0JBQXVCLFNBQVEsaUJBQWlCO0lBRXpELFFBQVEsS0FBSyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ25DLENBQUE7QUFIWSxzQkFBc0I7SUFsQmxDLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSx1QkFBdUI7UUFDakMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7O0NBYWI7S0FFQSxDQUFDO0dBQ1csc0JBQXNCLENBR2xDO1NBSFksc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgS2xlc0ZpZWxkQWJzdHJhY3QgfSBmcm9tICcuL2ZpZWxkLmFic3RyYWN0JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwia2xlcy1mb3JtLXJhZGlvYnV0dG9uXCIsXG4gICAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IFtmb3JtR3JvdXBdPVwiZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwicmFkaW8tbGFiZWwtcGFkZGluZ1wiPnt7ZmllbGQubGFiZWx9fTwvbGFiZWw+XG4gICAgICAgIDxtYXQtcmFkaW8tZ3JvdXAgbWF0VG9vbHRpcD1cInt7ZmllbGQudG9vbHRpcH19XCIgW2F0dHIuaWRdPVwiZmllbGQuaWRcIiBbbmdDbGFzc109XCJmaWVsZC5uZ0NsYXNzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lXCI+XG4gICAgICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWVsZC5vcHRpb25zXCIgW3ZhbHVlXT1cIml0ZW1cIj57e2l0ZW19fTwvbWF0LXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgPC9tYXQtcmFkaW8tZ3JvdXA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZhbGlkYXRpb24gb2YgZmllbGQudmFsaWRhdGlvbnM7XCIgbmdQcm9qZWN0QXM9XCJtYXQtZXJyb3JcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZ3JvdXAuZ2V0KGZpZWxkLm5hbWUpLmhhc0Vycm9yKHZhbGlkYXRpb24ubmFtZSlcIj57e3ZhbGlkYXRpb24ubWVzc2FnZSB8IHRyYW5zbGF0ZX19PC9tYXQtZXJyb3I+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZhbGlkYXRpb24gb2YgZmllbGQuYXN5bmNWYWxpZGF0aW9ucztcIiBuZ1Byb2plY3RBcz1cIm1hdC1lcnJvclwiPlxuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJncm91cC5nZXQoZmllbGQubmFtZSkuaGFzRXJyb3IodmFsaWRhdGlvbi5uYW1lKVwiPnt7dmFsaWRhdGlvbi5tZXNzYWdlIHwgdHJhbnNsYXRlfX08L21hdC1lcnJvcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuYCxcbiAgICBzdHlsZXM6IFtdXG59KVxuZXhwb3J0IGNsYXNzIEtsZXNGb3JtUmFkaW9Db21wb25lbnQgZXh0ZW5kcyBLbGVzRmllbGRBYnN0cmFjdCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBuZ09uSW5pdCgpIHsgc3VwZXIubmdPbkluaXQoKTsgfVxufSJdfQ==
@@ -1,114 +1,120 @@
1
- import { __decorate } from "tslib";
2
- import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
3
- import { Component, ViewChild, ViewChildren } from '@angular/core';
4
- import { MatOption } from '@angular/material/core';
5
- import { Observable, of } from 'rxjs';
6
- import { KlesFieldAbstract } from './field.abstract';
7
- let KlesFormSelectComponent = class KlesFormSelectComponent extends KlesFieldAbstract {
8
- constructor() {
9
- super();
10
- }
11
- ngOnInit() {
12
- super.ngOnInit();
13
- if (!(this.field.options instanceof Observable)) {
14
- this.options$ = of(this.field.options);
15
- }
16
- else {
17
- this.options$ = this.field.options;
18
- }
19
- }
20
- openChange($event) {
21
- if (this.field.virtualScroll) {
22
- if ($event) {
23
- this.cdkVirtualScrollViewport.scrollToIndex(0);
24
- this.cdkVirtualScrollViewport.checkViewportSize();
25
- }
26
- }
27
- }
28
- };
29
- __decorate([
30
- ViewChild(CdkVirtualScrollViewport)
31
- ], KlesFormSelectComponent.prototype, "cdkVirtualScrollViewport", void 0);
32
- __decorate([
33
- ViewChildren(MatOption)
34
- ], KlesFormSelectComponent.prototype, "options", void 0);
35
- KlesFormSelectComponent = __decorate([
36
- Component({
37
- selector: 'kles-form-select',
38
- template: `
39
- <mat-form-field class="margin-top" [formGroup]="group">
40
- <mat-select matTooltip="{{field.tooltip}}" [attr.id]="field.id"
41
- (openedChange)="openChange($event)"
42
- [ngClass]="field.ngClass" [placeholder]="field.placeholder | translate" [formControlName]="field.name" [multiple]="field.multiple">
43
- <mat-select-trigger *ngIf="field.triggerComponent">
44
- <ng-container klesComponent [component]="field.triggerComponent" [value]="group.controls[field.name].value"></ng-container>
45
- </mat-select-trigger>
46
-
47
-
48
- <ng-container *ngIf="!field.virtualScroll">
49
- <ng-container *ngIf="!field.autocompleteComponent">
50
- <mat-option *ngFor="let item of options$ | async" [value]="item">{{(field.property ? item[field.property] : item) | klesTransform:field.pipeTransform}}</mat-option>
51
- </ng-container>
52
-
53
- <ng-container *ngIf="field.autocompleteComponent">
54
- <mat-option *ngFor="let item of options$ | async" [value]="item">
55
- <ng-container klesComponent [component]="field.autocompleteComponent" [value]="item"></ng-container>
56
- </mat-option>
57
- </ng-container>
58
- </ng-container>
59
-
60
- <ng-container *ngIf="field.virtualScroll">
61
- <cdk-virtual-scroll-viewport [itemSize]="field.itemSize || 50" [style.height.px]=5*48>
62
- <ng-container *ngIf="!field.autocompleteComponent">
63
- <mat-option *cdkVirtualFor="let item of options$ | async" [value]="item">
64
- {{(field.property ? item[field.property] : item) | klesTransform:field.pipeTransform}}
65
- </mat-option>
66
-
67
- <ng-container *ngIf="field.multiple">
68
- <mat-option *ngFor="let item of group.controls[field.name].value | slice:0:30" [value]="item"
69
- style="display:none">
70
- {{(field.property ? item[field.property] : item) | klesTransform:field.pipeTransform}}
71
- </mat-option>
72
- </ng-container>
73
-
74
- <ng-container *ngIf="!field.multiple && group.controls[field.name].value">
75
- <mat-option *ngFor="let item of [group?.controls[field.name]?.value]" [value]="item" style="display:none">
76
- {{(field.property ? item[field.property] : item) | klesTransform:field.pipeTransform}}
77
- </mat-option>
78
- </ng-container>
79
- </ng-container>
80
-
81
- <ng-container *ngIf="field.autocompleteComponent">
82
- <mat-option *cdkVirtualFor="let item of options$ | async" [value]="item">
83
- <ng-container klesComponent [component]="field.autocompleteComponent" [value]="item"></ng-container>
84
- </mat-option>
85
- <ng-container *ngIf="field.multiple">
86
- <mat-option *ngFor="let item of group.controls[field.name].value | slice:0:30" [value]="item"
87
- style="display:none">
88
- <ng-container klesComponent [component]="field.autocompleteComponent" [value]="item"></ng-container>
89
- </mat-option>
90
- </ng-container>
91
- <ng-container *ngIf="!field.multiple && group.controls[field.name].value">
92
- <mat-option *ngFor="let item of [group?.controls[field.name]?.value]" [value]="item" style="display:none">
93
- <ng-container klesComponent [component]="field.autocompleteComponent" [value]="item"></ng-container>
94
- </mat-option>
95
- </ng-container>
96
- </ng-container>
97
- </cdk-virtual-scroll-viewport>
98
-
99
- </ng-container>
100
-
101
- </mat-select>
102
- <ng-container *ngFor="let validation of field.validations;" ngProjectAs="mat-error">
103
- <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
104
- </ng-container>
105
- <ng-container *ngFor="let validation of field.asyncValidations;" ngProjectAs="mat-error">
106
- <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
107
- </ng-container>
108
- </mat-form-field>
109
- `,
110
- styles: ['mat-form-field {width: calc(100%)}']
111
- })
112
- ], KlesFormSelectComponent);
113
- export { KlesFormSelectComponent };
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Aza2xlcy9rbGVzLW1hdGVyaWFsLWR5bmFtaWNmb3Jtcy8iLCJzb3VyY2VzIjpbImxpYi9maWVsZHMvc2VsZWN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFvQixNQUFNLHdCQUF3QixDQUFDO0FBQ3BGLE9BQU8sRUFBb0MsU0FBUyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQThFckQsSUFBYSx1QkFBdUIsR0FBcEMsTUFBYSx1QkFBd0IsU0FBUSxpQkFBaUI7SUFPMUQ7UUFDSSxLQUFLLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWpCLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxZQUFZLFVBQVUsQ0FBQyxFQUFFO1lBQzdDLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDMUM7YUFBTTtZQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7U0FDdEM7SUFDTCxDQUFDO0lBRUQsVUFBVSxDQUFDLE1BQWU7UUFDdEIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRTtZQUMxQixJQUFJLE1BQU0sRUFBRTtnQkFDUixJQUFJLENBQUMsd0JBQXdCLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMvQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzthQUNyRDtTQUNKO0lBQ0wsQ0FBQztDQUNKLENBQUE7QUEzQndDO0lBQXBDLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQzt5RUFBb0Q7QUFDL0Q7SUFBeEIsWUFBWSxDQUFDLFNBQVMsQ0FBQzt3REFBK0I7QUFIOUMsdUJBQXVCO0lBNUVuQyxTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUsa0JBQWtCO1FBQzVCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0F1RWI7aUJBQ1ksb0NBQW9DO0tBQ2hELENBQUM7R0FDVyx1QkFBdUIsQ0E2Qm5DO1NBN0JZLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCwgU2Nyb2xsRGlzcGF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xyXG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkluaXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0T3B0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgS2xlc0ZpZWxkQWJzdHJhY3QgfSBmcm9tICcuL2ZpZWxkLmFic3RyYWN0JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdrbGVzLWZvcm0tc2VsZWN0JyxcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtYXJnaW4tdG9wXCIgW2Zvcm1Hcm91cF09XCJncm91cFwiPlxyXG4gICAgICAgIDxtYXQtc2VsZWN0IG1hdFRvb2x0aXA9XCJ7e2ZpZWxkLnRvb2x0aXB9fVwiIFthdHRyLmlkXT1cImZpZWxkLmlkXCJcclxuICAgICAgICAob3BlbmVkQ2hhbmdlKT1cIm9wZW5DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiZmllbGQubmdDbGFzc1wiIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlciB8IHRyYW5zbGF0ZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZVwiIFttdWx0aXBsZV09XCJmaWVsZC5tdWx0aXBsZVwiPlxyXG4gICAgICAgIDxtYXQtc2VsZWN0LXRyaWdnZXIgKm5nSWY9XCJmaWVsZC50cmlnZ2VyQ29tcG9uZW50XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIga2xlc0NvbXBvbmVudCBbY29tcG9uZW50XT1cImZpZWxkLnRyaWdnZXJDb21wb25lbnRcIiBbdmFsdWVdPVwiZ3JvdXAuY29udHJvbHNbZmllbGQubmFtZV0udmFsdWVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L21hdC1zZWxlY3QtdHJpZ2dlcj5cclxuXHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZmllbGQudmlydHVhbFNjcm9sbFwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpZWxkLmF1dG9jb21wbGV0ZUNvbXBvbmVudFwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2Ygb3B0aW9ucyQgfCBhc3luY1wiIFt2YWx1ZV09XCJpdGVtXCI+e3soZmllbGQucHJvcGVydHkgPyBpdGVtW2ZpZWxkLnByb3BlcnR5XSA6IGl0ZW0pIHwga2xlc1RyYW5zZm9ybTpmaWVsZC5waXBlVHJhbnNmb3JtfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLmF1dG9jb21wbGV0ZUNvbXBvbmVudFwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2Ygb3B0aW9ucyQgfCBhc3luY1wiIFt2YWx1ZV09XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBrbGVzQ29tcG9uZW50IFtjb21wb25lbnRdPVwiZmllbGQuYXV0b2NvbXBsZXRlQ29tcG9uZW50XCIgW3ZhbHVlXT1cIml0ZW1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC52aXJ0dWFsU2Nyb2xsXCI+XHJcbiAgICAgICAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgW2l0ZW1TaXplXT1cImZpZWxkLml0ZW1TaXplIHx8IDUwXCIgW3N0eWxlLmhlaWdodC5weF09NSo0OD5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZmllbGQuYXV0b2NvbXBsZXRlQ29tcG9uZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKmNka1ZpcnR1YWxGb3I9XCJsZXQgaXRlbSBvZiBvcHRpb25zJCB8IGFzeW5jXCIgW3ZhbHVlXT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyhmaWVsZC5wcm9wZXJ0eSA/IGl0ZW1bZmllbGQucHJvcGVydHldIDogaXRlbSkgfCBrbGVzVHJhbnNmb3JtOmZpZWxkLnBpcGVUcmFuc2Zvcm19fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLm11bHRpcGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWVdLnZhbHVlIHwgc2xpY2U6MDozMFwiIFt2YWx1ZV09XCJpdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5Om5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7KGZpZWxkLnByb3BlcnR5ID8gaXRlbVtmaWVsZC5wcm9wZXJ0eV0gOiBpdGVtKSB8IGtsZXNUcmFuc2Zvcm06ZmllbGQucGlwZVRyYW5zZm9ybX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmaWVsZC5tdWx0aXBsZSAmJiBncm91cC5jb250cm9sc1tmaWVsZC5uYW1lXS52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIFtncm91cD8uY29udHJvbHNbZmllbGQubmFtZV0/LnZhbHVlXVwiIFt2YWx1ZV09XCJpdGVtXCIgc3R5bGU9XCJkaXNwbGF5Om5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7KGZpZWxkLnByb3BlcnR5ID8gaXRlbVtmaWVsZC5wcm9wZXJ0eV0gOiBpdGVtKSB8IGtsZXNUcmFuc2Zvcm06ZmllbGQucGlwZVRyYW5zZm9ybX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5hdXRvY29tcGxldGVDb21wb25lbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqY2RrVmlydHVhbEZvcj1cImxldCBpdGVtIG9mIG9wdGlvbnMkIHwgYXN5bmNcIiBbdmFsdWVdPVwiaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGtsZXNDb21wb25lbnQgW2NvbXBvbmVudF09XCJmaWVsZC5hdXRvY29tcGxldGVDb21wb25lbnRcIiBbdmFsdWVdPVwiaXRlbVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQubXVsdGlwbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ3JvdXAuY29udHJvbHNbZmllbGQubmFtZV0udmFsdWUgfCBzbGljZTowOjMwXCIgW3ZhbHVlXT1cIml0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6bm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBrbGVzQ29tcG9uZW50IFtjb21wb25lbnRdPVwiZmllbGQuYXV0b2NvbXBsZXRlQ29tcG9uZW50XCIgW3ZhbHVlXT1cIml0ZW1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZmllbGQubXVsdGlwbGUgJiYgZ3JvdXAuY29udHJvbHNbZmllbGQubmFtZV0udmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgW2dyb3VwPy5jb250cm9sc1tmaWVsZC5uYW1lXT8udmFsdWVdXCIgW3ZhbHVlXT1cIml0ZW1cIiBzdHlsZT1cImRpc3BsYXk6bm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBrbGVzQ29tcG9uZW50IFtjb21wb25lbnRdPVwiZmllbGQuYXV0b2NvbXBsZXRlQ29tcG9uZW50XCIgW3ZhbHVlXT1cIml0ZW1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxyXG5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZhbGlkYXRpb24gb2YgZmllbGQudmFsaWRhdGlvbnM7XCIgbmdQcm9qZWN0QXM9XCJtYXQtZXJyb3JcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJncm91cC5nZXQoZmllbGQubmFtZSkuaGFzRXJyb3IodmFsaWRhdGlvbi5uYW1lKVwiPnt7dmFsaWRhdGlvbi5tZXNzYWdlIHwgdHJhbnNsYXRlfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZhbGlkYXRpb24gb2YgZmllbGQuYXN5bmNWYWxpZGF0aW9ucztcIiBuZ1Byb2plY3RBcz1cIm1hdC1lcnJvclwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImdyb3VwLmdldChmaWVsZC5uYW1lKS5oYXNFcnJvcih2YWxpZGF0aW9uLm5hbWUpXCI+e3t2YWxpZGF0aW9uLm1lc3NhZ2UgfCB0cmFuc2xhdGV9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbmAsXHJcbiAgICBzdHlsZXM6IFsnbWF0LWZvcm0tZmllbGQge3dpZHRoOiBjYWxjKDEwMCUpfSddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBLbGVzRm9ybVNlbGVjdENvbXBvbmVudCBleHRlbmRzIEtsZXNGaWVsZEFic3RyYWN0IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgICBAVmlld0NoaWxkKENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCkgY2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XHJcbiAgICBAVmlld0NoaWxkcmVuKE1hdE9wdGlvbikgb3B0aW9uczogUXVlcnlMaXN0PE1hdE9wdGlvbj47XHJcblxyXG4gICAgb3B0aW9ucyQ6IE9ic2VydmFibGU8YW55W10+O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuXHJcbiAgICAgICAgaWYgKCEodGhpcy5maWVsZC5vcHRpb25zIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zJCA9IG9mKHRoaXMuZmllbGQub3B0aW9ucyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zJCA9IHRoaXMuZmllbGQub3B0aW9ucztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb3BlbkNoYW5nZSgkZXZlbnQ6IGJvb2xlYW4pIHtcclxuICAgICAgICBpZiAodGhpcy5maWVsZC52aXJ0dWFsU2Nyb2xsKSB7XHJcbiAgICAgICAgICAgIGlmICgkZXZlbnQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LnNjcm9sbFRvSW5kZXgoMCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydC5jaGVja1ZpZXdwb3J0U2l6ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
1
+ import { __decorate } from "tslib";
2
+ import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
3
+ import { Component, ViewChild, ViewChildren } from '@angular/core';
4
+ import { MatOption } from '@angular/material/core';
5
+ import { Observable, of } from 'rxjs';
6
+ import { KlesFieldAbstract } from './field.abstract';
7
+ let KlesFormSelectComponent = class KlesFormSelectComponent extends KlesFieldAbstract {
8
+ constructor() {
9
+ super();
10
+ this.compareFn = (o1, o2) => {
11
+ if (this.field.property && o1 && o2) {
12
+ return o1[this.field.property] === o2[this.field.property];
13
+ }
14
+ return o1 === o2;
15
+ };
16
+ }
17
+ ngOnInit() {
18
+ super.ngOnInit();
19
+ if (!(this.field.options instanceof Observable)) {
20
+ this.options$ = of(this.field.options);
21
+ }
22
+ else {
23
+ this.options$ = this.field.options;
24
+ }
25
+ }
26
+ openChange($event) {
27
+ if (this.field.virtualScroll) {
28
+ if ($event) {
29
+ this.cdkVirtualScrollViewport.scrollToIndex(0);
30
+ this.cdkVirtualScrollViewport.checkViewportSize();
31
+ }
32
+ }
33
+ }
34
+ };
35
+ __decorate([
36
+ ViewChild(CdkVirtualScrollViewport)
37
+ ], KlesFormSelectComponent.prototype, "cdkVirtualScrollViewport", void 0);
38
+ __decorate([
39
+ ViewChildren(MatOption)
40
+ ], KlesFormSelectComponent.prototype, "options", void 0);
41
+ KlesFormSelectComponent = __decorate([
42
+ Component({
43
+ selector: 'kles-form-select',
44
+ template: `
45
+ <mat-form-field class="margin-top" [formGroup]="group">
46
+ <mat-select matTooltip="{{field.tooltip}}" [attr.id]="field.id"
47
+ (openedChange)="openChange($event)" [compareWith]="compareFn"
48
+ [ngClass]="field.ngClass" [placeholder]="field.placeholder | translate" [formControlName]="field.name" [multiple]="field.multiple">
49
+ <mat-select-trigger *ngIf="field.triggerComponent">
50
+ <ng-container klesComponent [component]="field.triggerComponent" [value]="group.controls[field.name].value" [field]="field"></ng-container>
51
+ </mat-select-trigger>
52
+
53
+
54
+ <ng-container *ngIf="!field.virtualScroll">
55
+ <ng-container *ngIf="!field.autocompleteComponent">
56
+ <mat-option *ngFor="let item of options$ | async" [value]="item">{{(field.property ? item[field.property] : item) | klesTransform:field.pipeTransform}}</mat-option>
57
+ </ng-container>
58
+
59
+ <ng-container *ngIf="field.autocompleteComponent">
60
+ <mat-option *ngFor="let item of options$ | async" [value]="item">
61
+ <ng-container klesComponent [component]="field.autocompleteComponent" [value]="item" [field]="field"></ng-container>
62
+ </mat-option>
63
+ </ng-container>
64
+ </ng-container>
65
+
66
+ <ng-container *ngIf="field.virtualScroll">
67
+ <cdk-virtual-scroll-viewport [itemSize]="field.itemSize || 50" [style.height.px]=5*48>
68
+ <ng-container *ngIf="!field.autocompleteComponent">
69
+ <mat-option *cdkVirtualFor="let item of options$ | async" [value]="item">
70
+ {{(field.property ? item[field.property] : item) | klesTransform:field.pipeTransform}}
71
+ </mat-option>
72
+
73
+ <ng-container *ngIf="field.multiple">
74
+ <mat-option *ngFor="let item of group.controls[field.name].value | slice:0:30" [value]="item"
75
+ style="display:none">
76
+ {{(field.property ? item[field.property] : item) | klesTransform:field.pipeTransform}}
77
+ </mat-option>
78
+ </ng-container>
79
+
80
+ <ng-container *ngIf="!field.multiple && group.controls[field.name].value">
81
+ <mat-option *ngFor="let item of [group?.controls[field.name]?.value]" [value]="item" style="display:none">
82
+ {{(field.property ? item[field.property] : item) | klesTransform:field.pipeTransform}}
83
+ </mat-option>
84
+ </ng-container>
85
+ </ng-container>
86
+
87
+ <ng-container *ngIf="field.autocompleteComponent">
88
+ <mat-option *cdkVirtualFor="let item of options$ | async" [value]="item">
89
+ <ng-container klesComponent [component]="field.autocompleteComponent" [value]="item" [field]="field"></ng-container>
90
+ </mat-option>
91
+ <ng-container *ngIf="field.multiple">
92
+ <mat-option *ngFor="let item of group.controls[field.name].value | slice:0:30" [value]="item"
93
+ style="display:none">
94
+ <ng-container klesComponent [component]="field.autocompleteComponent" [value]="item" [field]="field"></ng-container>
95
+ </mat-option>
96
+ </ng-container>
97
+ <ng-container *ngIf="!field.multiple && group.controls[field.name].value">
98
+ <mat-option *ngFor="let item of [group?.controls[field.name]?.value]" [value]="item" style="display:none">
99
+ <ng-container klesComponent [component]="field.autocompleteComponent" [value]="item" [field]="field"></ng-container>
100
+ </mat-option>
101
+ </ng-container>
102
+ </ng-container>
103
+ </cdk-virtual-scroll-viewport>
104
+
105
+ </ng-container>
106
+
107
+ </mat-select>
108
+ <ng-container *ngFor="let validation of field.validations;" ngProjectAs="mat-error">
109
+ <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
110
+ </ng-container>
111
+ <ng-container *ngFor="let validation of field.asyncValidations;" ngProjectAs="mat-error">
112
+ <mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
113
+ </ng-container>
114
+ </mat-form-field>
115
+ `,
116
+ styles: ['mat-form-field {width: calc(100%)}']
117
+ })
118
+ ], KlesFormSelectComponent);
119
+ export { KlesFormSelectComponent };
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Aza2xlcy9rbGVzLW1hdGVyaWFsLWR5bmFtaWNmb3Jtcy8iLCJzb3VyY2VzIjpbImxpYi9maWVsZHMvc2VsZWN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFvQixNQUFNLHdCQUF3QixDQUFDO0FBQ3BGLE9BQU8sRUFBb0MsU0FBUyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQThFckQsSUFBYSx1QkFBdUIsR0FBcEMsTUFBYSx1QkFBd0IsU0FBUSxpQkFBaUI7SUFPMUQ7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQXNCWixjQUFTLEdBQUcsQ0FBQyxFQUFPLEVBQUUsRUFBTyxFQUFFLEVBQUU7WUFDN0IsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFO2dCQUNqQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlEO1lBQ0QsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQTtJQTFCRCxDQUFDO0lBRUQsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVqQixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sWUFBWSxVQUFVLENBQUMsRUFBRTtZQUM3QyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzFDO2FBQU07WUFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1NBQ3RDO0lBQ0wsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFlO1FBQ3RCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUU7WUFDMUIsSUFBSSxNQUFNLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGlCQUFpQixFQUFFLENBQUM7YUFDckQ7U0FDSjtJQUNMLENBQUM7Q0FRSixDQUFBO0FBbEN3QztJQUFwQyxTQUFTLENBQUMsd0JBQXdCLENBQUM7eUVBQW9EO0FBQy9EO0lBQXhCLFlBQVksQ0FBQyxTQUFTLENBQUM7d0RBQStCO0FBSDlDLHVCQUF1QjtJQTVFbkMsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLGtCQUFrQjtRQUM1QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBdUViO2lCQUNZLG9DQUFvQztLQUNoRCxDQUFDO0dBQ1csdUJBQXVCLENBb0NuQztTQXBDWSx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQsIFNjcm9sbERpc3BhdGNoZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uSW5pdCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0T3B0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgS2xlc0ZpZWxkQWJzdHJhY3QgfSBmcm9tICcuL2ZpZWxkLmFic3RyYWN0JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdrbGVzLWZvcm0tc2VsZWN0JyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1hcmdpbi10b3BcIiBbZm9ybUdyb3VwXT1cImdyb3VwXCI+XG4gICAgICAgIDxtYXQtc2VsZWN0IG1hdFRvb2x0aXA9XCJ7e2ZpZWxkLnRvb2x0aXB9fVwiIFthdHRyLmlkXT1cImZpZWxkLmlkXCJcbiAgICAgICAgKG9wZW5lZENoYW5nZSk9XCJvcGVuQ2hhbmdlKCRldmVudClcIiBbY29tcGFyZVdpdGhdPVwiY29tcGFyZUZuXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiZmllbGQubmdDbGFzc1wiIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlciB8IHRyYW5zbGF0ZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZVwiIFttdWx0aXBsZV09XCJmaWVsZC5tdWx0aXBsZVwiPlxuICAgICAgICA8bWF0LXNlbGVjdC10cmlnZ2VyICpuZ0lmPVwiZmllbGQudHJpZ2dlckNvbXBvbmVudFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBrbGVzQ29tcG9uZW50IFtjb21wb25lbnRdPVwiZmllbGQudHJpZ2dlckNvbXBvbmVudFwiIFt2YWx1ZV09XCJncm91cC5jb250cm9sc1tmaWVsZC5uYW1lXS52YWx1ZVwiIFtmaWVsZF09XCJmaWVsZFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L21hdC1zZWxlY3QtdHJpZ2dlcj5cblxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZmllbGQudmlydHVhbFNjcm9sbFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmaWVsZC5hdXRvY29tcGxldGVDb21wb25lbnRcIj5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBvcHRpb25zJCB8IGFzeW5jXCIgW3ZhbHVlXT1cIml0ZW1cIj57eyhmaWVsZC5wcm9wZXJ0eSA/IGl0ZW1bZmllbGQucHJvcGVydHldIDogaXRlbSkgfCBrbGVzVHJhbnNmb3JtOmZpZWxkLnBpcGVUcmFuc2Zvcm19fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQuYXV0b2NvbXBsZXRlQ29tcG9uZW50XCI+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2Ygb3B0aW9ucyQgfCBhc3luY1wiIFt2YWx1ZV09XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIga2xlc0NvbXBvbmVudCBbY29tcG9uZW50XT1cImZpZWxkLmF1dG9jb21wbGV0ZUNvbXBvbmVudFwiIFt2YWx1ZV09XCJpdGVtXCIgW2ZpZWxkXT1cImZpZWxkXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC52aXJ0dWFsU2Nyb2xsXCI+XG4gICAgICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IFtpdGVtU2l6ZV09XCJmaWVsZC5pdGVtU2l6ZSB8fCA1MFwiIFtzdHlsZS5oZWlnaHQucHhdPTUqNDg+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmaWVsZC5hdXRvY29tcGxldGVDb21wb25lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKmNka1ZpcnR1YWxGb3I9XCJsZXQgaXRlbSBvZiBvcHRpb25zJCB8IGFzeW5jXCIgW3ZhbHVlXT1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAge3soZmllbGQucHJvcGVydHkgPyBpdGVtW2ZpZWxkLnByb3BlcnR5XSA6IGl0ZW0pIHwga2xlc1RyYW5zZm9ybTpmaWVsZC5waXBlVHJhbnNmb3JtfX1cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5tdWx0aXBsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ3JvdXAuY29udHJvbHNbZmllbGQubmFtZV0udmFsdWUgfCBzbGljZTowOjMwXCIgW3ZhbHVlXT1cIml0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5Om5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhmaWVsZC5wcm9wZXJ0eSA/IGl0ZW1bZmllbGQucHJvcGVydHldIDogaXRlbSkgfCBrbGVzVHJhbnNmb3JtOmZpZWxkLnBpcGVUcmFuc2Zvcm19fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpZWxkLm11bHRpcGxlICYmIGdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWVdLnZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIFtncm91cD8uY29udHJvbHNbZmllbGQubmFtZV0/LnZhbHVlXVwiIFt2YWx1ZV09XCJpdGVtXCIgc3R5bGU9XCJkaXNwbGF5Om5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhmaWVsZC5wcm9wZXJ0eSA/IGl0ZW1bZmllbGQucHJvcGVydHldIDogaXRlbSkgfCBrbGVzVHJhbnNmb3JtOmZpZWxkLnBpcGVUcmFuc2Zvcm19fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5hdXRvY29tcGxldGVDb21wb25lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKmNka1ZpcnR1YWxGb3I9XCJsZXQgaXRlbSBvZiBvcHRpb25zJCB8IGFzeW5jXCIgW3ZhbHVlXT1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIga2xlc0NvbXBvbmVudCBbY29tcG9uZW50XT1cImZpZWxkLmF1dG9jb21wbGV0ZUNvbXBvbmVudFwiIFt2YWx1ZV09XCJpdGVtXCIgW2ZpZWxkXT1cImZpZWxkXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLm11bHRpcGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBncm91cC5jb250cm9sc1tmaWVsZC5uYW1lXS52YWx1ZSB8IHNsaWNlOjA6MzBcIiBbdmFsdWVdPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6bm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIga2xlc0NvbXBvbmVudCBbY29tcG9uZW50XT1cImZpZWxkLmF1dG9jb21wbGV0ZUNvbXBvbmVudFwiIFt2YWx1ZV09XCJpdGVtXCIgW2ZpZWxkXT1cImZpZWxkXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpZWxkLm11bHRpcGxlICYmIGdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWVdLnZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBbZ3JvdXA/LmNvbnRyb2xzW2ZpZWxkLm5hbWVdPy52YWx1ZV1cIiBbdmFsdWVdPVwiaXRlbVwiIHN0eWxlPVwiZGlzcGxheTpub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBrbGVzQ29tcG9uZW50IFtjb21wb25lbnRdPVwiZmllbGQuYXV0b2NvbXBsZXRlQ29tcG9uZW50XCIgW3ZhbHVlXT1cIml0ZW1cIiBbZmllbGRdPVwiZmllbGRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cblxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZhbGlkYXRpb24gb2YgZmllbGQudmFsaWRhdGlvbnM7XCIgbmdQcm9qZWN0QXM9XCJtYXQtZXJyb3JcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZ3JvdXAuZ2V0KGZpZWxkLm5hbWUpLmhhc0Vycm9yKHZhbGlkYXRpb24ubmFtZSlcIj57e3ZhbGlkYXRpb24ubWVzc2FnZSB8IHRyYW5zbGF0ZX19PC9tYXQtZXJyb3I+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZhbGlkYXRpb24gb2YgZmllbGQuYXN5bmNWYWxpZGF0aW9ucztcIiBuZ1Byb2plY3RBcz1cIm1hdC1lcnJvclwiPlxuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJncm91cC5nZXQoZmllbGQubmFtZSkuaGFzRXJyb3IodmFsaWRhdGlvbi5uYW1lKVwiPnt7dmFsaWRhdGlvbi5tZXNzYWdlIHwgdHJhbnNsYXRlfX08L21hdC1lcnJvcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5gLFxuICAgIHN0eWxlczogWydtYXQtZm9ybS1maWVsZCB7d2lkdGg6IGNhbGMoMTAwJSl9J11cbn0pXG5leHBvcnQgY2xhc3MgS2xlc0Zvcm1TZWxlY3RDb21wb25lbnQgZXh0ZW5kcyBLbGVzRmllbGRBYnN0cmFjdCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBAVmlld0NoaWxkKENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCkgY2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XG4gICAgQFZpZXdDaGlsZHJlbihNYXRPcHRpb24pIG9wdGlvbnM6IFF1ZXJ5TGlzdDxNYXRPcHRpb24+O1xuXG4gICAgb3B0aW9ucyQ6IE9ic2VydmFibGU8YW55W10+O1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAgICAgaWYgKCEodGhpcy5maWVsZC5vcHRpb25zIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSkpIHtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucyQgPSBvZih0aGlzLmZpZWxkLm9wdGlvbnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zJCA9IHRoaXMuZmllbGQub3B0aW9ucztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9wZW5DaGFuZ2UoJGV2ZW50OiBib29sZWFuKSB7XG4gICAgICAgIGlmICh0aGlzLmZpZWxkLnZpcnR1YWxTY3JvbGwpIHtcbiAgICAgICAgICAgIGlmICgkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydC5zY3JvbGxUb0luZGV4KDApO1xuICAgICAgICAgICAgICAgIHRoaXMuY2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LmNoZWNrVmlld3BvcnRTaXplKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb21wYXJlRm4gPSAobzE6IGFueSwgbzI6IGFueSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5maWVsZC5wcm9wZXJ0eSAmJiBvMSAmJiBvMikge1xuICAgICAgICAgICAgcmV0dXJuIG8xW3RoaXMuZmllbGQucHJvcGVydHldID09PSBvMlt0aGlzLmZpZWxkLnByb3BlcnR5XTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbzEgPT09IG8yO1xuICAgIH1cbn1cbiJdfQ==