@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.
- package/3kles-kles-material-dynamicforms.d.ts +5 -5
- package/3kles-kles-material-dynamicforms.metadata.json +1 -1
- package/bundles/3kles-kles-material-dynamicforms.umd.js +1478 -1457
- package/bundles/3kles-kles-material-dynamicforms.umd.js.map +1 -1
- package/bundles/3kles-kles-material-dynamicforms.umd.min.js +2 -2
- package/bundles/3kles-kles-material-dynamicforms.umd.min.js.map +1 -1
- package/esm2015/3kles-kles-material-dynamicforms.js +5 -5
- package/esm2015/lib/directive/dynamic-component.directive.js +50 -46
- package/esm2015/lib/directive/dynamic-field.directive.js +94 -94
- package/esm2015/lib/dynamic-form.component.js +238 -234
- package/esm2015/lib/fields/badge.component.js +20 -20
- package/esm2015/lib/fields/button-form.component.js +28 -28
- package/esm2015/lib/fields/button-submit.component.js +20 -20
- package/esm2015/lib/fields/button-toogle-group.component.js +37 -37
- package/esm2015/lib/fields/buttonchecker-form.component.js +28 -28
- package/esm2015/lib/fields/buttonfile-form.component.js +27 -27
- package/esm2015/lib/fields/checkbox.component.js +24 -24
- package/esm2015/lib/fields/chip.component.js +23 -23
- package/esm2015/lib/fields/color.component.js +58 -58
- package/esm2015/lib/fields/date.component.js +28 -28
- package/esm2015/lib/fields/field.abstract.js +40 -40
- package/esm2015/lib/fields/group.component.js +27 -27
- package/esm2015/lib/fields/icon.component.js +18 -18
- package/esm2015/lib/fields/input.clearable.component.js +56 -56
- package/esm2015/lib/fields/input.component.js +101 -101
- package/esm2015/lib/fields/label.component.js +23 -23
- package/esm2015/lib/fields/line-break.component.js +19 -19
- package/esm2015/lib/fields/link.component.js +20 -20
- package/esm2015/lib/fields/list-field.component.js +83 -83
- package/esm2015/lib/fields/radio.component.js +27 -27
- package/esm2015/lib/fields/select.component.js +120 -114
- package/esm2015/lib/fields/select.search.component.js +205 -199
- package/esm2015/lib/fields/selection-list.component.js +40 -41
- package/esm2015/lib/fields/slide-toggle.component.js +24 -24
- package/esm2015/lib/fields/text.component.js +20 -20
- package/esm2015/lib/fields/textarea.component.js +32 -32
- package/esm2015/lib/forms/button-control.component.js +102 -102
- package/esm2015/lib/forms/buttonchecker-control.component.js +53 -53
- package/esm2015/lib/forms/buttonfile-control.component.js +107 -107
- package/esm2015/lib/interfaces/component.interface.js +1 -1
- package/esm2015/lib/interfaces/field.config.interface.js +1 -1
- package/esm2015/lib/interfaces/field.interface.js +1 -1
- package/esm2015/lib/interfaces/validator.interface.js +1 -1
- package/esm2015/lib/kles-material-dynamicforms.module.js +114 -114
- package/esm2015/lib/matcher/form-error.matcher.js +9 -9
- package/esm2015/lib/modules/material.module.js +129 -129
- package/esm2015/lib/pipe/array.pipe.js +20 -20
- package/esm2015/lib/pipe/transform.pipe.js +25 -25
- package/esm2015/lib/validators/autocomplete.validator.js +23 -23
- package/esm2015/public-api.js +48 -48
- package/esm5/3kles-kles-material-dynamicforms.js +5 -5
- package/esm5/lib/directive/dynamic-component.directive.js +51 -47
- package/esm5/lib/directive/dynamic-field.directive.js +95 -95
- package/esm5/lib/dynamic-form.component.js +240 -236
- package/esm5/lib/fields/badge.component.js +21 -21
- package/esm5/lib/fields/button-form.component.js +21 -21
- package/esm5/lib/fields/button-submit.component.js +21 -21
- package/esm5/lib/fields/button-toogle-group.component.js +33 -33
- package/esm5/lib/fields/buttonchecker-form.component.js +21 -21
- package/esm5/lib/fields/buttonfile-form.component.js +21 -21
- package/esm5/lib/fields/checkbox.component.js +19 -19
- package/esm5/lib/fields/chip.component.js +19 -19
- package/esm5/lib/fields/color.component.js +46 -46
- package/esm5/lib/fields/date.component.js +19 -19
- package/esm5/lib/fields/field.abstract.js +45 -45
- package/esm5/lib/fields/group.component.js +25 -25
- package/esm5/lib/fields/icon.component.js +19 -19
- package/esm5/lib/fields/input.clearable.component.js +19 -19
- package/esm5/lib/fields/input.component.js +70 -70
- package/esm5/lib/fields/label.component.js +22 -22
- package/esm5/lib/fields/line-break.component.js +20 -20
- package/esm5/lib/fields/link.component.js +21 -21
- package/esm5/lib/fields/list-field.component.js +63 -63
- package/esm5/lib/fields/radio.component.js +19 -19
- package/esm5/lib/fields/select.component.js +52 -45
- package/esm5/lib/fields/select.search.component.js +119 -113
- package/esm5/lib/fields/selection-list.component.js +29 -29
- package/esm5/lib/fields/slide-toggle.component.js +19 -19
- package/esm5/lib/fields/text.component.js +21 -21
- package/esm5/lib/fields/textarea.component.js +22 -22
- package/esm5/lib/forms/button-control.component.js +95 -95
- package/esm5/lib/forms/buttonchecker-control.component.js +37 -37
- package/esm5/lib/forms/buttonfile-control.component.js +123 -123
- package/esm5/lib/interfaces/component.interface.js +1 -1
- package/esm5/lib/interfaces/field.config.interface.js +1 -1
- package/esm5/lib/interfaces/field.interface.js +1 -1
- package/esm5/lib/interfaces/validator.interface.js +1 -1
- package/esm5/lib/kles-material-dynamicforms.module.js +117 -117
- package/esm5/lib/matcher/form-error.matcher.js +11 -11
- package/esm5/lib/modules/material.module.js +132 -132
- package/esm5/lib/pipe/array.pipe.js +23 -23
- package/esm5/lib/pipe/transform.pipe.js +28 -28
- package/esm5/lib/validators/autocomplete.validator.js +23 -23
- package/esm5/public-api.js +48 -48
- package/fesm2015/3kles-kles-material-dynamicforms.js +1795 -1776
- package/fesm2015/3kles-kles-material-dynamicforms.js.map +1 -1
- package/fesm5/3kles-kles-material-dynamicforms.js +1482 -1461
- package/fesm5/3kles-kles-material-dynamicforms.js.map +1 -1
- package/lib/directive/dynamic-component.directive.d.ts +14 -12
- package/lib/directive/dynamic-field.directive.d.ts +16 -16
- package/lib/dynamic-form.component.d.ts +28 -28
- package/lib/fields/badge.component.d.ts +5 -5
- package/lib/fields/button-form.component.d.ts +5 -5
- package/lib/fields/button-submit.component.d.ts +5 -5
- package/lib/fields/button-toogle-group.component.d.ts +7 -7
- package/lib/fields/buttonchecker-form.component.d.ts +5 -5
- package/lib/fields/buttonfile-form.component.d.ts +5 -5
- package/lib/fields/checkbox.component.d.ts +5 -5
- package/lib/fields/chip.component.d.ts +5 -5
- package/lib/fields/color.component.d.ts +6 -6
- package/lib/fields/date.component.d.ts +5 -5
- package/lib/fields/field.abstract.d.ts +12 -12
- package/lib/fields/group.component.d.ts +7 -7
- package/lib/fields/icon.component.d.ts +5 -5
- package/lib/fields/input.clearable.component.d.ts +4 -4
- package/lib/fields/input.component.d.ts +11 -11
- package/lib/fields/label.component.d.ts +5 -5
- package/lib/fields/line-break.component.d.ts +5 -5
- package/lib/fields/link.component.d.ts +5 -5
- package/lib/fields/list-field.component.d.ts +14 -14
- package/lib/fields/radio.component.d.ts +5 -5
- package/lib/fields/select.component.d.ts +14 -13
- package/lib/fields/select.search.component.d.ts +20 -19
- package/lib/fields/selection-list.component.d.ts +7 -7
- package/lib/fields/slide-toggle.component.d.ts +5 -5
- package/lib/fields/text.component.d.ts +5 -5
- package/lib/fields/textarea.component.d.ts +5 -5
- package/lib/forms/button-control.component.d.ts +33 -33
- package/lib/forms/buttonchecker-control.component.d.ts +11 -11
- package/lib/forms/buttonfile-control.component.d.ts +17 -17
- package/lib/interfaces/component.interface.d.ts +5 -5
- package/lib/interfaces/field.config.interface.d.ts +52 -51
- package/lib/interfaces/field.interface.d.ts +7 -7
- package/lib/interfaces/validator.interface.d.ts +5 -5
- package/lib/kles-material-dynamicforms.module.d.ts +2 -2
- package/lib/matcher/form-error.matcher.d.ts +6 -6
- package/lib/modules/material.module.d.ts +2 -2
- package/lib/pipe/array.pipe.d.ts +4 -4
- package/lib/pipe/transform.pipe.d.ts +7 -7
- package/lib/validators/autocomplete.validator.d.ts +3 -3
- package/package.json +1 -1
- 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,
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
</mat-option>
|
|
57
|
-
</ng-container>
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
{{(field.property ? item[field.property] : item) | klesTransform:field.pipeTransform}}
|
|
77
|
-
</mat-option>
|
|
78
|
-
</ng-container>
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
</
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
</
|
|
91
|
-
<ng-container *ngIf="
|
|
92
|
-
<mat-option *ngFor="let item of
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
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==
|