@3kles/kles-material-dynamicforms 1.1.20 → 14.0.2
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/esm2020/3kles-kles-material-dynamicforms.mjs +5 -0
- package/esm2020/lib/decorators/component.decorator.mjs +7 -0
- package/esm2020/lib/directive/dynamic-component.directive.mjs +44 -0
- package/esm2020/lib/directive/dynamic-field.directive.mjs +50 -0
- package/esm2020/lib/dynamic-form.component.mjs +247 -0
- package/esm2020/lib/enums/type.enum.mjs +19 -0
- package/esm2020/lib/fields/array.component.mjs +53 -0
- package/esm2020/lib/fields/badge.component.mjs +40 -0
- package/esm2020/lib/fields/button-form.component.mjs +44 -0
- package/esm2020/lib/fields/button-submit.component.mjs +38 -0
- package/esm2020/lib/fields/button-toogle-group.component.mjs +51 -0
- package/esm2020/lib/fields/buttonchecker-form.component.mjs +44 -0
- package/esm2020/lib/fields/buttonfile-form.component.mjs +42 -0
- package/esm2020/lib/fields/checkbox.component.mjs +50 -0
- package/esm2020/lib/fields/chip.component.mjs +41 -0
- package/esm2020/lib/fields/color.component.mjs +84 -0
- package/esm2020/lib/fields/date.component.mjs +52 -0
- package/esm2020/lib/fields/field.abstract.mjs +66 -0
- package/esm2020/lib/fields/group.component.mjs +44 -0
- package/esm2020/lib/fields/icon.component.mjs +28 -0
- package/esm2020/lib/fields/input.clearable.component.mjs +112 -0
- package/esm2020/lib/fields/input.component.mjs +158 -0
- package/esm2020/lib/fields/label.component.mjs +40 -0
- package/esm2020/lib/fields/line-break.component.mjs +23 -0
- package/esm2020/lib/fields/link.component.mjs +32 -0
- package/esm2020/lib/fields/list-field.component.mjs +114 -0
- package/esm2020/lib/fields/radio.component.mjs +49 -0
- package/esm2020/lib/fields/select.component.mjs +211 -0
- package/esm2020/lib/fields/select.search.component.mjs +307 -0
- package/esm2020/lib/fields/selection-list.component.mjs +63 -0
- package/esm2020/lib/fields/slide-toggle.component.mjs +43 -0
- package/esm2020/lib/fields/text.component.mjs +40 -0
- package/esm2020/lib/fields/textarea.component.mjs +56 -0
- package/esm2020/lib/forms/button-control.component.mjs +115 -0
- package/esm2020/lib/forms/buttonchecker-control.component.mjs +85 -0
- package/esm2020/lib/forms/buttonfile-control.component.mjs +118 -0
- package/esm2020/lib/interfaces/component.interface.mjs +2 -0
- package/esm2020/lib/interfaces/directive.interface.mjs +2 -0
- package/esm2020/lib/interfaces/field.config.interface.mjs +2 -0
- package/esm2020/lib/interfaces/field.interface.mjs +2 -0
- package/esm2020/lib/interfaces/validator.interface.mjs +2 -0
- package/esm2020/lib/kles-material-dynamicforms.module.mjs +191 -0
- package/esm2020/lib/matcher/form-error.matcher.mjs +16 -0
- package/esm2020/lib/modules/material.module.mjs +278 -0
- package/esm2020/lib/pipe/array.pipe.mjs +22 -0
- package/esm2020/lib/pipe/transform.pipe.mjs +27 -0
- package/esm2020/lib/validators/autocomplete.validator.mjs +23 -0
- package/esm2020/public-api.mjs +59 -0
- package/fesm2015/3kles-kles-material-dynamicforms.mjs +2839 -0
- package/fesm2015/3kles-kles-material-dynamicforms.mjs.map +1 -0
- package/fesm2020/3kles-kles-material-dynamicforms.mjs +2835 -0
- package/fesm2020/3kles-kles-material-dynamicforms.mjs.map +1 -0
- package/{3kles-kles-material-dynamicforms.d.ts → index.d.ts} +1 -1
- package/lib/decorators/component.decorator.d.ts +8 -0
- package/lib/directive/dynamic-component.directive.d.ts +5 -3
- package/lib/directive/dynamic-field.directive.d.ts +7 -5
- package/lib/dynamic-form.component.d.ts +6 -3
- package/lib/enums/type.enum.d.ts +4 -1
- package/lib/fields/array.component.d.ts +5 -2
- package/lib/fields/badge.component.d.ts +3 -0
- package/lib/fields/button-form.component.d.ts +3 -0
- package/lib/fields/button-submit.component.d.ts +3 -0
- package/lib/fields/button-toogle-group.component.d.ts +3 -0
- package/lib/fields/buttonchecker-form.component.d.ts +3 -0
- package/lib/fields/buttonfile-form.component.d.ts +3 -0
- package/lib/fields/checkbox.component.d.ts +4 -1
- package/lib/fields/chip.component.d.ts +3 -0
- package/lib/fields/color.component.d.ts +3 -0
- package/lib/fields/date.component.d.ts +3 -0
- package/lib/fields/field.abstract.d.ts +5 -2
- package/lib/fields/group.component.d.ts +5 -2
- package/lib/fields/icon.component.d.ts +3 -0
- package/lib/fields/input.clearable.component.d.ts +3 -0
- package/lib/fields/input.component.d.ts +3 -0
- package/lib/fields/label.component.d.ts +3 -0
- package/lib/fields/line-break.component.d.ts +5 -2
- package/lib/fields/link.component.d.ts +3 -0
- package/lib/fields/list-field.component.d.ts +6 -3
- package/lib/fields/radio.component.d.ts +3 -0
- package/lib/fields/select.component.d.ts +3 -0
- package/lib/fields/select.search.component.d.ts +6 -3
- package/lib/fields/selection-list.component.d.ts +3 -0
- package/lib/fields/slide-toggle.component.d.ts +3 -0
- package/lib/fields/text.component.d.ts +3 -0
- package/lib/fields/textarea.component.d.ts +3 -0
- package/lib/forms/button-control.component.d.ts +3 -0
- package/lib/forms/buttonchecker-control.component.d.ts +3 -0
- package/lib/forms/buttonfile-control.component.d.ts +3 -0
- package/lib/interfaces/field.config.interface.d.ts +2 -2
- package/lib/interfaces/field.interface.d.ts +2 -2
- package/lib/kles-material-dynamicforms.module.d.ts +45 -0
- package/lib/matcher/form-error.matcher.d.ts +5 -2
- package/lib/modules/material.module.d.ts +40 -0
- package/lib/pipe/array.pipe.d.ts +3 -0
- package/lib/pipe/transform.pipe.d.ts +3 -0
- package/package.json +22 -12
- package/public-api.d.ts +2 -0
- package/3kles-kles-material-dynamicforms.metadata.json +0 -1
- package/bundles/3kles-kles-material-dynamicforms.umd.js +0 -1980
- package/bundles/3kles-kles-material-dynamicforms.umd.js.map +0 -1
- package/bundles/3kles-kles-material-dynamicforms.umd.min.js +0 -16
- package/bundles/3kles-kles-material-dynamicforms.umd.min.js.map +0 -1
- package/esm2015/3kles-kles-material-dynamicforms.js +0 -6
- package/esm2015/lib/directive/dynamic-component.directive.js +0 -50
- package/esm2015/lib/directive/dynamic-field.directive.js +0 -95
- package/esm2015/lib/dynamic-form.component.js +0 -260
- package/esm2015/lib/enums/type.enum.js +0 -16
- package/esm2015/lib/fields/array.component.js +0 -37
- package/esm2015/lib/fields/badge.component.js +0 -23
- package/esm2015/lib/fields/button-form.component.js +0 -31
- package/esm2015/lib/fields/button-submit.component.js +0 -23
- package/esm2015/lib/fields/button-toogle-group.component.js +0 -35
- package/esm2015/lib/fields/buttonchecker-form.component.js +0 -31
- package/esm2015/lib/fields/buttonfile-form.component.js +0 -30
- package/esm2015/lib/fields/checkbox.component.js +0 -27
- package/esm2015/lib/fields/chip.component.js +0 -26
- package/esm2015/lib/fields/color.component.js +0 -61
- package/esm2015/lib/fields/date.component.js +0 -31
- package/esm2015/lib/fields/field.abstract.js +0 -68
- package/esm2015/lib/fields/group.component.js +0 -32
- package/esm2015/lib/fields/icon.component.js +0 -21
- package/esm2015/lib/fields/input.clearable.component.js +0 -59
- package/esm2015/lib/fields/input.component.js +0 -104
- package/esm2015/lib/fields/label.component.js +0 -26
- package/esm2015/lib/fields/line-break.component.js +0 -22
- package/esm2015/lib/fields/link.component.js +0 -23
- package/esm2015/lib/fields/list-field.component.js +0 -88
- package/esm2015/lib/fields/radio.component.js +0 -30
- package/esm2015/lib/fields/select.component.js +0 -127
- package/esm2015/lib/fields/select.search.component.js +0 -205
- package/esm2015/lib/fields/selection-list.component.js +0 -43
- package/esm2015/lib/fields/slide-toggle.component.js +0 -27
- package/esm2015/lib/fields/text.component.js +0 -23
- package/esm2015/lib/fields/textarea.component.js +0 -35
- package/esm2015/lib/forms/button-control.component.js +0 -102
- package/esm2015/lib/forms/buttonchecker-control.component.js +0 -53
- package/esm2015/lib/forms/buttonfile-control.component.js +0 -103
- package/esm2015/lib/interfaces/component.interface.js +0 -1
- package/esm2015/lib/interfaces/directive.interface.js +0 -1
- package/esm2015/lib/interfaces/field.config.interface.js +0 -1
- package/esm2015/lib/interfaces/field.interface.js +0 -1
- package/esm2015/lib/interfaces/validator.interface.js +0 -1
- package/esm2015/lib/kles-material-dynamicforms.module.js +0 -116
- package/esm2015/lib/matcher/form-error.matcher.js +0 -9
- package/esm2015/lib/modules/material.module.js +0 -129
- package/esm2015/lib/pipe/array.pipe.js +0 -20
- package/esm2015/lib/pipe/transform.pipe.js +0 -25
- package/esm2015/lib/validators/autocomplete.validator.js +0 -23
- package/esm2015/public-api.js +0 -51
- package/esm5/3kles-kles-material-dynamicforms.js +0 -6
- package/esm5/lib/directive/dynamic-component.directive.js +0 -51
- package/esm5/lib/directive/dynamic-field.directive.js +0 -96
- package/esm5/lib/dynamic-form.component.js +0 -262
- package/esm5/lib/enums/type.enum.js +0 -16
- package/esm5/lib/fields/array.component.js +0 -31
- package/esm5/lib/fields/badge.component.js +0 -24
- package/esm5/lib/fields/button-form.component.js +0 -24
- package/esm5/lib/fields/button-submit.component.js +0 -24
- package/esm5/lib/fields/button-toogle-group.component.js +0 -31
- package/esm5/lib/fields/buttonchecker-form.component.js +0 -24
- package/esm5/lib/fields/buttonfile-form.component.js +0 -24
- package/esm5/lib/fields/checkbox.component.js +0 -22
- package/esm5/lib/fields/chip.component.js +0 -22
- package/esm5/lib/fields/color.component.js +0 -49
- package/esm5/lib/fields/date.component.js +0 -22
- package/esm5/lib/fields/field.abstract.js +0 -70
- package/esm5/lib/fields/group.component.js +0 -30
- package/esm5/lib/fields/icon.component.js +0 -22
- package/esm5/lib/fields/input.clearable.component.js +0 -22
- package/esm5/lib/fields/input.component.js +0 -73
- package/esm5/lib/fields/label.component.js +0 -25
- package/esm5/lib/fields/line-break.component.js +0 -23
- package/esm5/lib/fields/link.component.js +0 -24
- package/esm5/lib/fields/list-field.component.js +0 -68
- package/esm5/lib/fields/radio.component.js +0 -22
- package/esm5/lib/fields/select.component.js +0 -59
- package/esm5/lib/fields/select.search.component.js +0 -119
- package/esm5/lib/fields/selection-list.component.js +0 -32
- package/esm5/lib/fields/slide-toggle.component.js +0 -22
- package/esm5/lib/fields/text.component.js +0 -24
- package/esm5/lib/fields/textarea.component.js +0 -25
- package/esm5/lib/forms/button-control.component.js +0 -95
- package/esm5/lib/forms/buttonchecker-control.component.js +0 -37
- package/esm5/lib/forms/buttonfile-control.component.js +0 -119
- package/esm5/lib/interfaces/component.interface.js +0 -1
- package/esm5/lib/interfaces/directive.interface.js +0 -1
- package/esm5/lib/interfaces/field.config.interface.js +0 -1
- package/esm5/lib/interfaces/field.interface.js +0 -1
- package/esm5/lib/interfaces/validator.interface.js +0 -1
- package/esm5/lib/kles-material-dynamicforms.module.js +0 -119
- package/esm5/lib/matcher/form-error.matcher.js +0 -11
- package/esm5/lib/modules/material.module.js +0 -132
- package/esm5/lib/pipe/array.pipe.js +0 -23
- package/esm5/lib/pipe/transform.pipe.js +0 -28
- package/esm5/lib/validators/autocomplete.validator.js +0 -23
- package/esm5/public-api.js +0 -51
- package/fesm2015/3kles-kles-material-dynamicforms.js +0 -2087
- package/fesm2015/3kles-kles-material-dynamicforms.js.map +0 -1
- package/fesm5/3kles-kles-material-dynamicforms.js +0 -1766
- package/fesm5/3kles-kles-material-dynamicforms.js.map +0 -1
|
@@ -1,26 +0,0 @@
|
|
|
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
|
-
ngOnDestroy() {
|
|
10
|
-
super.ngOnDestroy();
|
|
11
|
-
}
|
|
12
|
-
};
|
|
13
|
-
KlesFormLabelComponent = __decorate([
|
|
14
|
-
Component({
|
|
15
|
-
selector: "kles-form-label",
|
|
16
|
-
template: `
|
|
17
|
-
<div [formGroup]="group" >
|
|
18
|
-
<input matInput matTooltip="{{field.tooltip}}" [attr.id]="field.id"
|
|
19
|
-
[ngClass]="field.ngClass"
|
|
20
|
-
[ngStyle]="{'color':'inherit'}" [formControlName]="field.name" [placeholder]="field.placeholder | translate" [type]="field.inputType">
|
|
21
|
-
</div>
|
|
22
|
-
`
|
|
23
|
-
})
|
|
24
|
-
], KlesFormLabelComponent);
|
|
25
|
-
export { KlesFormLabelComponent };
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFiZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQDNrbGVzL2tsZXMtbWF0ZXJpYWwtZHluYW1pY2Zvcm1zLyIsInNvdXJjZXMiOlsibGliL2ZpZWxkcy9sYWJlbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBYXJELElBQWEsc0JBQXNCLEdBQW5DLE1BQWEsc0JBQXVCLFNBQVEsaUJBQWlCO0lBRXpELFFBQVE7UUFDSixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQy9DLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVztRQUNQLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QixDQUFDO0NBQ0osQ0FBQTtBQVZZLHNCQUFzQjtJQVZsQyxTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUsaUJBQWlCO1FBQzNCLFFBQVEsRUFBRTs7Ozs7O0NBTWI7S0FDQSxDQUFDO0dBQ1csc0JBQXNCLENBVWxDO1NBVlksc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEtsZXNGaWVsZEFic3RyYWN0IH0gZnJvbSAnLi9maWVsZC5hYnN0cmFjdCc7XG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwia2xlcy1mb3JtLWxhYmVsXCIsXG4gICAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IFtmb3JtR3JvdXBdPVwiZ3JvdXBcIiA+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBtYXRUb29sdGlwPVwie3tmaWVsZC50b29sdGlwfX1cIiBbYXR0ci5pZF09XCJmaWVsZC5pZFwiIFxuICAgICAgICBbbmdDbGFzc109XCJmaWVsZC5uZ0NsYXNzXCIgXG4gICAgICAgIFtuZ1N0eWxlXT1cInsnY29sb3InOidpbmhlcml0J31cIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIiBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIiBbdHlwZV09XCJmaWVsZC5pbnB1dFR5cGVcIj5cbiAgICA8L2Rpdj5cbmBcbn0pXG5leHBvcnQgY2xhc3MgS2xlc0Zvcm1MYWJlbENvbXBvbmVudCBleHRlbmRzIEtsZXNGaWVsZEFic3RyYWN0IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5maWVsZC5uYW1lXS5kaXNhYmxlKCk7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufSJdfQ==
|
|
@@ -1,22 +0,0 @@
|
|
|
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
|
-
ngOnDestroy() {
|
|
7
|
-
super.ngOnDestroy();
|
|
8
|
-
}
|
|
9
|
-
};
|
|
10
|
-
KlesFormLineBreakComponent = __decorate([
|
|
11
|
-
Component({
|
|
12
|
-
selector: "kles-form-line-break",
|
|
13
|
-
template: ``,
|
|
14
|
-
styles: [`:host{
|
|
15
|
-
flex-basis: 100%;
|
|
16
|
-
display: flex;
|
|
17
|
-
height:0;
|
|
18
|
-
}`]
|
|
19
|
-
})
|
|
20
|
-
], KlesFormLineBreakComponent);
|
|
21
|
-
export { KlesFormLineBreakComponent };
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1icmVhay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AM2tsZXMva2xlcy1tYXRlcmlhbC1keW5hbWljZm9ybXMvIiwic291cmNlcyI6WyJsaWIvZmllbGRzL2xpbmUtYnJlYWsuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQWFyRCxJQUFhLDBCQUEwQixHQUF2QyxNQUFhLDBCQUEyQixTQUFRLGlCQUFpQjtJQUM3RCxRQUFRLEtBQUssS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoQyxXQUFXO1FBQ1AsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7Q0FDSixDQUFBO0FBTFksMEJBQTBCO0lBWHRDLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSxzQkFBc0I7UUFDaEMsUUFBUSxFQUFFLEVBQUU7aUJBRVI7Ozs7VUFJRTtLQUVULENBQUM7R0FDVywwQkFBMEIsQ0FLdEM7U0FMWSwwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEtsZXNGaWVsZEFic3RyYWN0IH0gZnJvbSBcIi4vZmllbGQuYWJzdHJhY3RcIjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwia2xlcy1mb3JtLWxpbmUtYnJlYWtcIixcbiAgICB0ZW1wbGF0ZTogYGAsXG4gICAgc3R5bGVzOiBbXG4gICAgICAgIGA6aG9zdHtcbiAgICAgICAgICAgIGZsZXgtYmFzaXM6IDEwMCU7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgaGVpZ2h0OjA7XG4gICAgICAgIH1gXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBLbGVzRm9ybUxpbmVCcmVha0NvbXBvbmVudCBleHRlbmRzIEtsZXNGaWVsZEFic3RyYWN0IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIG5nT25Jbml0KCkgeyBzdXBlci5uZ09uSW5pdCgpOyB9XG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuIl19
|
|
@@ -1,23 +0,0 @@
|
|
|
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
|
-
ngOnDestroy() {
|
|
9
|
-
super.ngOnDestroy();
|
|
10
|
-
}
|
|
11
|
-
};
|
|
12
|
-
KlesFormLinkComponent = __decorate([
|
|
13
|
-
Component({
|
|
14
|
-
selector: 'kles-form-link',
|
|
15
|
-
template: `
|
|
16
|
-
<a [href]="group.controls[field.name].value" matTooltip="{{field.tooltip}}" [attr.id]="field.id" [ngClass]="field.ngClass">
|
|
17
|
-
{{field.label}}
|
|
18
|
-
</a>
|
|
19
|
-
`
|
|
20
|
-
})
|
|
21
|
-
], KlesFormLinkComponent);
|
|
22
|
-
export { KlesFormLinkComponent };
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AM2tsZXMva2xlcy1tYXRlcmlhbC1keW5hbWljZm9ybXMvIiwic291cmNlcyI6WyJsaWIvZmllbGRzL2xpbmsuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQVVyRCxJQUFhLHFCQUFxQixHQUFsQyxNQUFhLHFCQUFzQixTQUFRLGlCQUFpQjtJQUV4RCxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxXQUFXO1FBQ1AsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7Q0FDSixDQUFBO0FBVFkscUJBQXFCO0lBUmpDLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSxnQkFBZ0I7UUFDMUIsUUFBUSxFQUFFOzs7O0NBSWI7S0FDQSxDQUFDO0dBQ1cscUJBQXFCLENBU2pDO1NBVFkscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBLbGVzRmllbGRBYnN0cmFjdCB9IGZyb20gXCIuL2ZpZWxkLmFic3RyYWN0XCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAna2xlcy1mb3JtLWxpbmsnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxhIFtocmVmXT1cImdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWVdLnZhbHVlXCIgbWF0VG9vbHRpcD1cInt7ZmllbGQudG9vbHRpcH19XCIgW2F0dHIuaWRdPVwiZmllbGQuaWRcIiBbbmdDbGFzc109XCJmaWVsZC5uZ0NsYXNzXCI+XG4gICAgICAgICAgICB7e2ZpZWxkLmxhYmVsfX1cbiAgICAgICAgPC9hPlxuYFxufSlcbmV4cG9ydCBjbGFzcyBLbGVzRm9ybUxpbmtDb21wb25lbnQgZXh0ZW5kcyBLbGVzRmllbGRBYnN0cmFjdCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { Component, OnDestroy, OnInit, ViewContainerRef } 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, viewRef) {
|
|
7
|
-
super(viewRef);
|
|
8
|
-
this.fb = fb;
|
|
9
|
-
this.viewRef = viewRef;
|
|
10
|
-
}
|
|
11
|
-
ngOnInit() {
|
|
12
|
-
this.formArray = this.group.controls[this.field.name];
|
|
13
|
-
super.ngOnInit();
|
|
14
|
-
}
|
|
15
|
-
createFormGroup() {
|
|
16
|
-
const group = this.fb.group({});
|
|
17
|
-
this.field.collections.forEach(item => {
|
|
18
|
-
const control = this.fb.control(null, this.bindValidations(item.validations || []), this.bindAsyncValidations(item.asyncValidations || []));
|
|
19
|
-
group.addControl(item.name, control);
|
|
20
|
-
});
|
|
21
|
-
return group;
|
|
22
|
-
}
|
|
23
|
-
deleteField(index) {
|
|
24
|
-
this.formArray.removeAt(index);
|
|
25
|
-
}
|
|
26
|
-
addField() {
|
|
27
|
-
this.formArray.push(this.createFormGroup());
|
|
28
|
-
}
|
|
29
|
-
bindValidations(validations) {
|
|
30
|
-
if (validations.length > 0) {
|
|
31
|
-
const validList = [];
|
|
32
|
-
validations.forEach(valid => {
|
|
33
|
-
validList.push(valid.validator);
|
|
34
|
-
});
|
|
35
|
-
return Validators.compose(validList);
|
|
36
|
-
}
|
|
37
|
-
return null;
|
|
38
|
-
}
|
|
39
|
-
bindAsyncValidations(validations) {
|
|
40
|
-
if (validations.length > 0) {
|
|
41
|
-
const validList = [];
|
|
42
|
-
validations.forEach(valid => {
|
|
43
|
-
validList.push(valid.validator);
|
|
44
|
-
});
|
|
45
|
-
return Validators.composeAsync(validList);
|
|
46
|
-
}
|
|
47
|
-
return null;
|
|
48
|
-
}
|
|
49
|
-
ngOnDestroy() {
|
|
50
|
-
super.ngOnDestroy();
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
KlesFormListFieldComponent.ctorParameters = () => [
|
|
54
|
-
{ type: FormBuilder },
|
|
55
|
-
{ type: ViewContainerRef }
|
|
56
|
-
];
|
|
57
|
-
KlesFormListFieldComponent = __decorate([
|
|
58
|
-
Component({
|
|
59
|
-
selector: 'kles-form-listfield',
|
|
60
|
-
template: `
|
|
61
|
-
<div [formGroup]="group" class="form-element">
|
|
62
|
-
{{field.label | translate}}
|
|
63
|
-
<button mat-icon-button color="primary" (click)="addField()">
|
|
64
|
-
<mat-icon>add</mat-icon>
|
|
65
|
-
</button>
|
|
66
|
-
|
|
67
|
-
<div class="dynamic-form" [formGroupName]="field.name">
|
|
68
|
-
<div *ngFor="let subGroup of formArray.controls let index = index;" fxLayout="row" fxLayoutGap="5px">
|
|
69
|
-
<ng-container *ngFor="let subfield of field.collections;"
|
|
70
|
-
dynamicField [field]="subfield" [group]="subGroup">
|
|
71
|
-
</ng-container>
|
|
72
|
-
<button mat-icon-button (click)="deleteField(index)" color="primary">
|
|
73
|
-
<mat-icon>delete_outlined</mat-icon>
|
|
74
|
-
</button>
|
|
75
|
-
</div>
|
|
76
|
-
<ng-container *ngFor="let validation of field.validations;" ngProjectAs="mat-error">
|
|
77
|
-
<mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
|
|
78
|
-
</ng-container>
|
|
79
|
-
<ng-container *ngFor="let validation of field.asyncValidations;" ngProjectAs="mat-error">
|
|
80
|
-
<mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
|
|
81
|
-
</ng-container>
|
|
82
|
-
</div>
|
|
83
|
-
</div>
|
|
84
|
-
`
|
|
85
|
-
})
|
|
86
|
-
], KlesFormListFieldComponent);
|
|
87
|
-
export { KlesFormListFieldComponent };
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AM2tsZXMva2xlcy1tYXRlcmlhbC1keW5hbWljZm9ybXMvIiwic291cmNlcyI6WyJsaWIvZmllbGRzL2xpc3QtZmllbGQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWdDOUcsSUFBYSwwQkFBMEIsR0FBdkMsTUFBYSwwQkFBMkIsU0FBUSxpQkFBaUI7SUFJN0QsWUFBb0IsRUFBZSxFQUFZLE9BQXlCO1FBQ3BFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQURDLE9BQUUsR0FBRixFQUFFLENBQWE7UUFBWSxZQUFPLEdBQVAsT0FBTyxDQUFrQjtJQUV4RSxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQWMsQ0FBQztRQUNuRSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVPLGVBQWU7UUFDbkIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2xDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUMzQixJQUFJLEVBQ0osSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxFQUM1QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQyxDQUN6RCxDQUFDO1lBQ0YsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXpDLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxLQUFLLENBQUM7SUFFakIsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFhO1FBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUdPLGVBQWUsQ0FBQyxXQUEwQztRQUM5RCxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3hCLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQztZQUNyQixXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUN4QixTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNwQyxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUV4QztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFHTyxvQkFBb0IsQ0FBQyxXQUErQztRQUN4RSxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3hCLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQztZQUNyQixXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUN4QixTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNwQyxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sVUFBVSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUU3QztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxXQUFXO1FBQ1AsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7Q0FDSixDQUFBOztZQTlEMkIsV0FBVztZQUFxQixnQkFBZ0I7O0FBSi9ELDBCQUEwQjtJQTdCdEMsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLHFCQUFxQjtRQUMvQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXdCVDtLQUVKLENBQUM7R0FDVywwQkFBMEIsQ0FrRXRDO1NBbEVZLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEtsZXNGaWVsZEFic3RyYWN0IH0gZnJvbSAnLi9maWVsZC5hYnN0cmFjdCc7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1BcnJheSwgRm9ybUJ1aWxkZXIsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzLCBBc3luY1ZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSUtsZXNWYWxpZGF0b3IgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3ZhbGlkYXRvci5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2tsZXMtZm9ybS1saXN0ZmllbGQnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBbZm9ybUdyb3VwXT1cImdyb3VwXCIgY2xhc3M9XCJmb3JtLWVsZW1lbnRcIj5cbiAgICAgICAge3tmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZX19XG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJhZGRGaWVsZCgpXCI+XG4gICAgICAgICAgICA8bWF0LWljb24+YWRkPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZm9ybVwiIFtmb3JtR3JvdXBOYW1lXT1cImZpZWxkLm5hbWVcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHN1Ykdyb3VwIG9mIGZvcm1BcnJheS5jb250cm9scyBsZXQgaW5kZXggPSBpbmRleDtcIiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiNXB4XCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3ViZmllbGQgb2YgZmllbGQuY29sbGVjdGlvbnM7XCJcbiAgICAgICAgICAgICAgICAgICAgZHluYW1pY0ZpZWxkIFtmaWVsZF09XCJzdWJmaWVsZFwiIFtncm91cF09XCJzdWJHcm91cFwiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJkZWxldGVGaWVsZChpbmRleClcIiBjb2xvcj1cInByaW1hcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmRlbGV0ZV9vdXRsaW5lZDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZhbGlkYXRpb24gb2YgZmllbGQudmFsaWRhdGlvbnM7XCIgbmdQcm9qZWN0QXM9XCJtYXQtZXJyb3JcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZ3JvdXAuZ2V0KGZpZWxkLm5hbWUpLmhhc0Vycm9yKHZhbGlkYXRpb24ubmFtZSlcIj57e3ZhbGlkYXRpb24ubWVzc2FnZSB8IHRyYW5zbGF0ZX19PC9tYXQtZXJyb3I+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZhbGlkYXRpb24gb2YgZmllbGQuYXN5bmNWYWxpZGF0aW9ucztcIiBuZ1Byb2plY3RBcz1cIm1hdC1lcnJvclwiPlxuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJncm91cC5nZXQoZmllbGQubmFtZSkuaGFzRXJyb3IodmFsaWRhdGlvbi5uYW1lKVwiPnt7dmFsaWRhdGlvbi5tZXNzYWdlIHwgdHJhbnNsYXRlfX08L21hdC1lcnJvcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICBgLFxuICAgIHN0eWxlczogW11cbn0pXG5leHBvcnQgY2xhc3MgS2xlc0Zvcm1MaXN0RmllbGRDb21wb25lbnQgZXh0ZW5kcyBLbGVzRmllbGRBYnN0cmFjdCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICAgIGZvcm1BcnJheTogRm9ybUFycmF5O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsIHByb3RlY3RlZCB2aWV3UmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7XG4gICAgICAgIHN1cGVyKHZpZXdSZWYpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm1BcnJheSA9IHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5maWVsZC5uYW1lXSBhcyBGb3JtQXJyYXk7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVGb3JtR3JvdXAoKTogRm9ybUdyb3VwIHtcbiAgICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLmZiLmdyb3VwKHt9KTtcbiAgICAgICAgdGhpcy5maWVsZC5jb2xsZWN0aW9ucy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZmIuY29udHJvbChcbiAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgIHRoaXMuYmluZFZhbGlkYXRpb25zKGl0ZW0udmFsaWRhdGlvbnMgfHwgW10pLFxuICAgICAgICAgICAgICAgIHRoaXMuYmluZEFzeW5jVmFsaWRhdGlvbnMoaXRlbS5hc3luY1ZhbGlkYXRpb25zIHx8IFtdKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGdyb3VwLmFkZENvbnRyb2woaXRlbS5uYW1lLCBjb250cm9sKTtcblxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZ3JvdXA7XG5cbiAgICB9XG5cbiAgICBkZWxldGVGaWVsZChpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuZm9ybUFycmF5LnJlbW92ZUF0KGluZGV4KTtcbiAgICB9XG5cbiAgICBhZGRGaWVsZCgpIHtcbiAgICAgICAgdGhpcy5mb3JtQXJyYXkucHVzaCh0aGlzLmNyZWF0ZUZvcm1Hcm91cCgpKTtcbiAgICB9XG5cblxuICAgIHByaXZhdGUgYmluZFZhbGlkYXRpb25zKHZhbGlkYXRpb25zOiBJS2xlc1ZhbGlkYXRvcjxWYWxpZGF0b3JGbj5bXSk6IFZhbGlkYXRvckZuIHtcbiAgICAgICAgaWYgKHZhbGlkYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkTGlzdCA9IFtdO1xuICAgICAgICAgICAgdmFsaWRhdGlvbnMuZm9yRWFjaCh2YWxpZCA9PiB7XG4gICAgICAgICAgICAgICAgdmFsaWRMaXN0LnB1c2godmFsaWQudmFsaWRhdG9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIFZhbGlkYXRvcnMuY29tcG9zZSh2YWxpZExpc3QpO1xuXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG5cbiAgICBwcml2YXRlIGJpbmRBc3luY1ZhbGlkYXRpb25zKHZhbGlkYXRpb25zOiBJS2xlc1ZhbGlkYXRvcjxBc3luY1ZhbGlkYXRvckZuPltdKTogQXN5bmNWYWxpZGF0b3JGbiB7XG4gICAgICAgIGlmICh2YWxpZGF0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCB2YWxpZExpc3QgPSBbXTtcbiAgICAgICAgICAgIHZhbGlkYXRpb25zLmZvckVhY2godmFsaWQgPT4ge1xuICAgICAgICAgICAgICAgIHZhbGlkTGlzdC5wdXNoKHZhbGlkLnZhbGlkYXRvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBWYWxpZGF0b3JzLmNvbXBvc2VBc3luYyh2YWxpZExpc3QpO1xuXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuXG4iXX0=
|
|
@@ -1,30 +0,0 @@
|
|
|
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
|
-
ngOnDestroy() {
|
|
7
|
-
super.ngOnDestroy();
|
|
8
|
-
}
|
|
9
|
-
};
|
|
10
|
-
KlesFormRadioComponent = __decorate([
|
|
11
|
-
Component({
|
|
12
|
-
selector: 'kles-form-radiobutton',
|
|
13
|
-
template: `
|
|
14
|
-
<div [formGroup]="group">
|
|
15
|
-
<label class="radio-label-padding">{{field.label}}</label>
|
|
16
|
-
<mat-radio-group matTooltip="{{field.tooltip}}" [attr.id]="field.id" [ngClass]="field.ngClass" [formControlName]="field.name">
|
|
17
|
-
<mat-radio-button *ngFor="let item of field.options" [value]="item">{{item}}</mat-radio-button>
|
|
18
|
-
</mat-radio-group>
|
|
19
|
-
<ng-container *ngFor="let validation of field.validations;" ngProjectAs="mat-error">
|
|
20
|
-
<mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
|
|
21
|
-
</ng-container>
|
|
22
|
-
<ng-container *ngFor="let validation of field.asyncValidations;" ngProjectAs="mat-error">
|
|
23
|
-
<mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
|
|
24
|
-
</ng-container>
|
|
25
|
-
</div>
|
|
26
|
-
`
|
|
27
|
-
})
|
|
28
|
-
], KlesFormRadioComponent);
|
|
29
|
-
export { KlesFormRadioComponent };
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQDNrbGVzL2tsZXMtbWF0ZXJpYWwtZHluYW1pY2Zvcm1zLyIsInNvdXJjZXMiOlsibGliL2ZpZWxkcy9yYWRpby5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBb0JyRCxJQUFhLHNCQUFzQixHQUFuQyxNQUFhLHNCQUF1QixTQUFRLGlCQUFpQjtJQUV6RCxRQUFRLEtBQUssS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVoQyxXQUFXO1FBQ1AsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7Q0FDSixDQUFBO0FBUFksc0JBQXNCO0lBbEJsQyxTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUsdUJBQXVCO1FBQ2pDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7OztDQWFiO0tBRUEsQ0FBQztHQUNXLHNCQUFzQixDQU9sQztTQVBZLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEtsZXNGaWVsZEFic3RyYWN0IH0gZnJvbSAnLi9maWVsZC5hYnN0cmFjdCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAna2xlcy1mb3JtLXJhZGlvYnV0dG9uJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgW2Zvcm1Hcm91cF09XCJncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJyYWRpby1sYWJlbC1wYWRkaW5nXCI+e3tmaWVsZC5sYWJlbH19PC9sYWJlbD5cbiAgICAgICAgPG1hdC1yYWRpby1ncm91cCBtYXRUb29sdGlwPVwie3tmaWVsZC50b29sdGlwfX1cIiBbYXR0ci5pZF09XCJmaWVsZC5pZFwiIFtuZ0NsYXNzXT1cImZpZWxkLm5nQ2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIj5cbiAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpZWxkLm9wdGlvbnNcIiBbdmFsdWVdPVwiaXRlbVwiPnt7aXRlbX19PC9tYXQtcmFkaW8tYnV0dG9uPlxuICAgICAgICA8L21hdC1yYWRpby1ncm91cD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdmFsaWRhdGlvbiBvZiBmaWVsZC52YWxpZGF0aW9ucztcIiBuZ1Byb2plY3RBcz1cIm1hdC1lcnJvclwiPlxuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJncm91cC5nZXQoZmllbGQubmFtZSkuaGFzRXJyb3IodmFsaWRhdGlvbi5uYW1lKVwiPnt7dmFsaWRhdGlvbi5tZXNzYWdlIHwgdHJhbnNsYXRlfX08L21hdC1lcnJvcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdmFsaWRhdGlvbiBvZiBmaWVsZC5hc3luY1ZhbGlkYXRpb25zO1wiIG5nUHJvamVjdEFzPVwibWF0LWVycm9yXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImdyb3VwLmdldChmaWVsZC5uYW1lKS5oYXNFcnJvcih2YWxpZGF0aW9uLm5hbWUpXCI+e3t2YWxpZGF0aW9uLm1lc3NhZ2UgfCB0cmFuc2xhdGV9fTwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5gLFxuICAgIHN0eWxlczogW11cbn0pXG5leHBvcnQgY2xhc3MgS2xlc0Zvcm1SYWRpb0NvbXBvbmVudCBleHRlbmRzIEtsZXNGaWVsZEFic3RyYWN0IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgbmdPbkluaXQoKSB7IHN1cGVyLm5nT25Jbml0KCk7IH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn0iXX0=
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
|
|
3
|
-
import { AfterViewInit, ChangeDetectorRef, Component, OnDestroy, OnInit, QueryList, ViewChild, ViewChildren, ViewContainerRef } 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(viewRef) {
|
|
9
|
-
super(viewRef);
|
|
10
|
-
this.viewRef = viewRef;
|
|
11
|
-
this.compareFn = (o1, o2) => {
|
|
12
|
-
if (this.field.property && o1 && o2) {
|
|
13
|
-
return o1[this.field.property] === o2[this.field.property];
|
|
14
|
-
}
|
|
15
|
-
return o1 === o2;
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
ngOnInit() {
|
|
19
|
-
super.ngOnInit();
|
|
20
|
-
if (!(this.field.options instanceof Observable)) {
|
|
21
|
-
this.options$ = of(this.field.options);
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
this.options$ = this.field.options;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
ngOnDestroy() {
|
|
28
|
-
super.ngOnDestroy();
|
|
29
|
-
}
|
|
30
|
-
openChange($event) {
|
|
31
|
-
if (this.field.virtualScroll) {
|
|
32
|
-
if ($event) {
|
|
33
|
-
this.cdkVirtualScrollViewport.scrollToIndex(0);
|
|
34
|
-
this.cdkVirtualScrollViewport.checkViewportSize();
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
KlesFormSelectComponent.ctorParameters = () => [
|
|
40
|
-
{ type: ViewContainerRef }
|
|
41
|
-
];
|
|
42
|
-
__decorate([
|
|
43
|
-
ViewChild(CdkVirtualScrollViewport)
|
|
44
|
-
], KlesFormSelectComponent.prototype, "cdkVirtualScrollViewport", void 0);
|
|
45
|
-
__decorate([
|
|
46
|
-
ViewChildren(MatOption)
|
|
47
|
-
], KlesFormSelectComponent.prototype, "options", void 0);
|
|
48
|
-
KlesFormSelectComponent = __decorate([
|
|
49
|
-
Component({
|
|
50
|
-
selector: 'kles-form-select',
|
|
51
|
-
template: `
|
|
52
|
-
<mat-form-field class="margin-top" [color]="field.color" [formGroup]="group">
|
|
53
|
-
<mat-select matTooltip="{{field.tooltip}}" [attr.id]="field.id"
|
|
54
|
-
(openedChange)="openChange($event)" [compareWith]="compareFn"
|
|
55
|
-
[ngClass]="field.ngClass" [placeholder]="field.placeholder | translate" [formControlName]="field.name" [multiple]="field.multiple">
|
|
56
|
-
<mat-select-trigger *ngIf="field.triggerComponent">
|
|
57
|
-
<ng-container klesComponent [component]="field.triggerComponent" [value]="group.controls[field.name].value" [field]="field"></ng-container>
|
|
58
|
-
</mat-select-trigger>
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
<ng-container *ngIf="!field.virtualScroll">
|
|
62
|
-
<ng-container *ngIf="!field.autocompleteComponent">
|
|
63
|
-
<mat-option *ngFor="let item of options$ | async" [value]="item" [disabled]="item?.disabled">{{(field.property ? item[field.property] : item) | klesTransform:field.pipeTransform}}</mat-option>
|
|
64
|
-
</ng-container>
|
|
65
|
-
|
|
66
|
-
<ng-container *ngIf="field.autocompleteComponent">
|
|
67
|
-
<mat-option *ngFor="let item of options$ | async" [value]="item" [disabled]="item?.disabled">
|
|
68
|
-
<ng-container klesComponent [component]="field.autocompleteComponent" [value]="item" [field]="field"></ng-container>
|
|
69
|
-
</mat-option>
|
|
70
|
-
</ng-container>
|
|
71
|
-
</ng-container>
|
|
72
|
-
|
|
73
|
-
<ng-container *ngIf="field.virtualScroll">
|
|
74
|
-
<cdk-virtual-scroll-viewport [itemSize]="field.itemSize || 50" [style.height.px]=5*48>
|
|
75
|
-
<ng-container *ngIf="!field.autocompleteComponent">
|
|
76
|
-
<mat-option *cdkVirtualFor="let item of options$ | async" [value]="item" [disabled]="item?.disabled">
|
|
77
|
-
{{(field.property ? item[field.property] : item) | klesTransform:field.pipeTransform}}
|
|
78
|
-
</mat-option>
|
|
79
|
-
|
|
80
|
-
<ng-container *ngIf="field.multiple">
|
|
81
|
-
<mat-option *ngFor="let item of group.controls[field.name].value | slice:0:30" [value]="item"
|
|
82
|
-
style="display:none">
|
|
83
|
-
{{(field.property ? item[field.property] : item) | klesTransform:field.pipeTransform}}
|
|
84
|
-
</mat-option>
|
|
85
|
-
</ng-container>
|
|
86
|
-
|
|
87
|
-
<ng-container *ngIf="!field.multiple && group.controls[field.name].value">
|
|
88
|
-
<mat-option *ngFor="let item of [group?.controls[field.name]?.value]" [value]="item" style="display:none">
|
|
89
|
-
{{(field.property ? item[field.property] : item) | klesTransform:field.pipeTransform}}
|
|
90
|
-
</mat-option>
|
|
91
|
-
</ng-container>
|
|
92
|
-
</ng-container>
|
|
93
|
-
|
|
94
|
-
<ng-container *ngIf="field.autocompleteComponent">
|
|
95
|
-
<mat-option *cdkVirtualFor="let item of options$ | async" [value]="item" [disabled]="item?.disabled">
|
|
96
|
-
<ng-container klesComponent [component]="field.autocompleteComponent" [value]="item" [field]="field"></ng-container>
|
|
97
|
-
</mat-option>
|
|
98
|
-
<ng-container *ngIf="field.multiple">
|
|
99
|
-
<mat-option *ngFor="let item of group.controls[field.name].value | slice:0:30" [value]="item"
|
|
100
|
-
style="display:none">
|
|
101
|
-
<ng-container klesComponent [component]="field.autocompleteComponent" [value]="item" [field]="field"></ng-container>
|
|
102
|
-
</mat-option>
|
|
103
|
-
</ng-container>
|
|
104
|
-
<ng-container *ngIf="!field.multiple && group.controls[field.name].value">
|
|
105
|
-
<mat-option *ngFor="let item of [group?.controls[field.name]?.value]" [value]="item" style="display:none">
|
|
106
|
-
<ng-container klesComponent [component]="field.autocompleteComponent" [value]="item" [field]="field"></ng-container>
|
|
107
|
-
</mat-option>
|
|
108
|
-
</ng-container>
|
|
109
|
-
</ng-container>
|
|
110
|
-
</cdk-virtual-scroll-viewport>
|
|
111
|
-
|
|
112
|
-
</ng-container>
|
|
113
|
-
|
|
114
|
-
</mat-select>
|
|
115
|
-
<ng-container *ngFor="let validation of field.validations;" ngProjectAs="mat-error">
|
|
116
|
-
<mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
|
|
117
|
-
</ng-container>
|
|
118
|
-
<ng-container *ngFor="let validation of field.asyncValidations;" ngProjectAs="mat-error">
|
|
119
|
-
<mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
|
|
120
|
-
</ng-container>
|
|
121
|
-
</mat-form-field>
|
|
122
|
-
`,
|
|
123
|
-
styles: ['mat-form-field {width: calc(100%)}']
|
|
124
|
-
})
|
|
125
|
-
], KlesFormSelectComponent);
|
|
126
|
-
export { KlesFormSelectComponent };
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Aza2xlcy9rbGVzLW1hdGVyaWFsLWR5bmFtaWNmb3Jtcy8iLCJzb3VyY2VzIjpbImxpYi9maWVsZHMvc2VsZWN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFvQixNQUFNLHdCQUF3QixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckosT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBOEVyRCxJQUFhLHVCQUF1QixHQUFwQyxNQUFhLHVCQUF3QixTQUFRLGlCQUFpQjtJQU8xRCxZQUFzQixPQUF5QjtRQUMzQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFERyxZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQTJCL0MsY0FBUyxHQUFHLENBQUMsRUFBTyxFQUFFLEVBQU8sRUFBRSxFQUFFO1lBQzdCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRTtnQkFDakMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5RDtZQUNELE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUE7SUE5QkQsQ0FBQztJQUVELFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFakIsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLFlBQVksVUFBVSxDQUFDLEVBQUU7WUFDN0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUMxQzthQUFNO1lBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztTQUN0QztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1AsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxVQUFVLENBQUMsTUFBZTtRQUN0QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFO1lBQzFCLElBQUksTUFBTSxFQUFFO2dCQUNSLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQy9DLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2FBQ3JEO1NBQ0o7SUFDTCxDQUFDO0NBUUosQ0FBQTs7WUFqQ2tDLGdCQUFnQjs7QUFMVjtJQUFwQyxTQUFTLENBQUMsd0JBQXdCLENBQUM7eUVBQW9EO0FBQy9EO0lBQXhCLFlBQVksQ0FBQyxTQUFTLENBQUM7d0RBQStCO0FBSDlDLHVCQUF1QjtJQTVFbkMsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLGtCQUFrQjtRQUM1QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBdUViO2lCQUNZLG9DQUFvQztLQUNoRCxDQUFDO0dBQ1csdUJBQXVCLENBd0NuQztTQXhDWSx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQsIFNjcm9sbERpc3BhdGNoZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRPcHRpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBLbGVzRmllbGRBYnN0cmFjdCB9IGZyb20gJy4vZmllbGQuYWJzdHJhY3QnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2tsZXMtZm9ybS1zZWxlY3QnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibWFyZ2luLXRvcFwiIFtjb2xvcl09XCJmaWVsZC5jb2xvclwiIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIj5cbiAgICAgICAgPG1hdC1zZWxlY3QgbWF0VG9vbHRpcD1cInt7ZmllbGQudG9vbHRpcH19XCIgW2F0dHIuaWRdPVwiZmllbGQuaWRcIlxuICAgICAgICAob3BlbmVkQ2hhbmdlKT1cIm9wZW5DaGFuZ2UoJGV2ZW50KVwiIFtjb21wYXJlV2l0aF09XCJjb21wYXJlRm5cIlxuICAgICAgICBbbmdDbGFzc109XCJmaWVsZC5uZ0NsYXNzXCIgW3BsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyIHwgdHJhbnNsYXRlXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lXCIgW211bHRpcGxlXT1cImZpZWxkLm11bHRpcGxlXCI+XG4gICAgICAgIDxtYXQtc2VsZWN0LXRyaWdnZXIgKm5nSWY9XCJmaWVsZC50cmlnZ2VyQ29tcG9uZW50XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIGtsZXNDb21wb25lbnQgW2NvbXBvbmVudF09XCJmaWVsZC50cmlnZ2VyQ29tcG9uZW50XCIgW3ZhbHVlXT1cImdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWVdLnZhbHVlXCIgW2ZpZWxkXT1cImZpZWxkXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbWF0LXNlbGVjdC10cmlnZ2VyPlxuXG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmaWVsZC52aXJ0dWFsU2Nyb2xsXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpZWxkLmF1dG9jb21wbGV0ZUNvbXBvbmVudFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIG9wdGlvbnMkIHwgYXN5bmNcIiBbdmFsdWVdPVwiaXRlbVwiIFtkaXNhYmxlZF09XCJpdGVtPy5kaXNhYmxlZFwiPnt7KGZpZWxkLnByb3BlcnR5ID8gaXRlbVtmaWVsZC5wcm9wZXJ0eV0gOiBpdGVtKSB8IGtsZXNUcmFuc2Zvcm06ZmllbGQucGlwZVRyYW5zZm9ybX19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5hdXRvY29tcGxldGVDb21wb25lbnRcIj5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBvcHRpb25zJCB8IGFzeW5jXCIgW3ZhbHVlXT1cIml0ZW1cIiBbZGlzYWJsZWRdPVwiaXRlbT8uZGlzYWJsZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBrbGVzQ29tcG9uZW50IFtjb21wb25lbnRdPVwiZmllbGQuYXV0b2NvbXBsZXRlQ29tcG9uZW50XCIgW3ZhbHVlXT1cIml0ZW1cIiBbZmllbGRdPVwiZmllbGRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLnZpcnR1YWxTY3JvbGxcIj5cbiAgICAgICAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgW2l0ZW1TaXplXT1cImZpZWxkLml0ZW1TaXplIHx8IDUwXCIgW3N0eWxlLmhlaWdodC5weF09NSo0OD5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpZWxkLmF1dG9jb21wbGV0ZUNvbXBvbmVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqY2RrVmlydHVhbEZvcj1cImxldCBpdGVtIG9mIG9wdGlvbnMkIHwgYXN5bmNcIiBbdmFsdWVdPVwiaXRlbVwiICBbZGlzYWJsZWRdPVwiaXRlbT8uZGlzYWJsZWRcIj5cbiAgICAgICAgICAgICAgICAgICAge3soZmllbGQucHJvcGVydHkgPyBpdGVtW2ZpZWxkLnByb3BlcnR5XSA6IGl0ZW0pIHwga2xlc1RyYW5zZm9ybTpmaWVsZC5waXBlVHJhbnNmb3JtfX1cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5tdWx0aXBsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ3JvdXAuY29udHJvbHNbZmllbGQubmFtZV0udmFsdWUgfCBzbGljZTowOjMwXCIgW3ZhbHVlXT1cIml0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5Om5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhmaWVsZC5wcm9wZXJ0eSA/IGl0ZW1bZmllbGQucHJvcGVydHldIDogaXRlbSkgfCBrbGVzVHJhbnNmb3JtOmZpZWxkLnBpcGVUcmFuc2Zvcm19fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpZWxkLm11bHRpcGxlICYmIGdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWVdLnZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIFtncm91cD8uY29udHJvbHNbZmllbGQubmFtZV0/LnZhbHVlXVwiIFt2YWx1ZV09XCJpdGVtXCIgc3R5bGU9XCJkaXNwbGF5Om5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhmaWVsZC5wcm9wZXJ0eSA/IGl0ZW1bZmllbGQucHJvcGVydHldIDogaXRlbSkgfCBrbGVzVHJhbnNmb3JtOmZpZWxkLnBpcGVUcmFuc2Zvcm19fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5hdXRvY29tcGxldGVDb21wb25lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKmNka1ZpcnR1YWxGb3I9XCJsZXQgaXRlbSBvZiBvcHRpb25zJCB8IGFzeW5jXCIgW3ZhbHVlXT1cIml0ZW1cIiBbZGlzYWJsZWRdPVwiaXRlbT8uZGlzYWJsZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIga2xlc0NvbXBvbmVudCBbY29tcG9uZW50XT1cImZpZWxkLmF1dG9jb21wbGV0ZUNvbXBvbmVudFwiIFt2YWx1ZV09XCJpdGVtXCIgW2ZpZWxkXT1cImZpZWxkXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLm11bHRpcGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBncm91cC5jb250cm9sc1tmaWVsZC5uYW1lXS52YWx1ZSB8IHNsaWNlOjA6MzBcIiBbdmFsdWVdPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6bm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIga2xlc0NvbXBvbmVudCBbY29tcG9uZW50XT1cImZpZWxkLmF1dG9jb21wbGV0ZUNvbXBvbmVudFwiIFt2YWx1ZV09XCJpdGVtXCIgW2ZpZWxkXT1cImZpZWxkXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpZWxkLm11bHRpcGxlICYmIGdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWVdLnZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBbZ3JvdXA/LmNvbnRyb2xzW2ZpZWxkLm5hbWVdPy52YWx1ZV1cIiBbdmFsdWVdPVwiaXRlbVwiIHN0eWxlPVwiZGlzcGxheTpub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBrbGVzQ29tcG9uZW50IFtjb21wb25lbnRdPVwiZmllbGQuYXV0b2NvbXBsZXRlQ29tcG9uZW50XCIgW3ZhbHVlXT1cIml0ZW1cIiBbZmllbGRdPVwiZmllbGRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cblxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZhbGlkYXRpb24gb2YgZmllbGQudmFsaWRhdGlvbnM7XCIgbmdQcm9qZWN0QXM9XCJtYXQtZXJyb3JcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZ3JvdXAuZ2V0KGZpZWxkLm5hbWUpLmhhc0Vycm9yKHZhbGlkYXRpb24ubmFtZSlcIj57e3ZhbGlkYXRpb24ubWVzc2FnZSB8IHRyYW5zbGF0ZX19PC9tYXQtZXJyb3I+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZhbGlkYXRpb24gb2YgZmllbGQuYXN5bmNWYWxpZGF0aW9ucztcIiBuZ1Byb2plY3RBcz1cIm1hdC1lcnJvclwiPlxuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJncm91cC5nZXQoZmllbGQubmFtZSkuaGFzRXJyb3IodmFsaWRhdGlvbi5uYW1lKVwiPnt7dmFsaWRhdGlvbi5tZXNzYWdlIHwgdHJhbnNsYXRlfX08L21hdC1lcnJvcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5gLFxuICAgIHN0eWxlczogWydtYXQtZm9ybS1maWVsZCB7d2lkdGg6IGNhbGMoMTAwJSl9J11cbn0pXG5leHBvcnQgY2xhc3MgS2xlc0Zvcm1TZWxlY3RDb21wb25lbnQgZXh0ZW5kcyBLbGVzRmllbGRBYnN0cmFjdCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICAgIEBWaWV3Q2hpbGQoQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0KSBjZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ6IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydDtcbiAgICBAVmlld0NoaWxkcmVuKE1hdE9wdGlvbikgb3B0aW9uczogUXVlcnlMaXN0PE1hdE9wdGlvbj47XG5cbiAgICBvcHRpb25zJDogT2JzZXJ2YWJsZTxhbnlbXT47XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgdmlld1JlZjogVmlld0NvbnRhaW5lclJlZikge1xuICAgICAgICBzdXBlcih2aWV3UmVmKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgICAgICBpZiAoISh0aGlzLmZpZWxkLm9wdGlvbnMgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSkge1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zJCA9IG9mKHRoaXMuZmllbGQub3B0aW9ucyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMkID0gdGhpcy5maWVsZC5vcHRpb25zO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxuXG4gICAgb3BlbkNoYW5nZSgkZXZlbnQ6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHRoaXMuZmllbGQudmlydHVhbFNjcm9sbCkge1xuICAgICAgICAgICAgaWYgKCRldmVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LnNjcm9sbFRvSW5kZXgoMCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQuY2hlY2tWaWV3cG9ydFNpemUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbXBhcmVGbiA9IChvMTogYW55LCBvMjogYW55KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmZpZWxkLnByb3BlcnR5ICYmIG8xICYmIG8yKSB7XG4gICAgICAgICAgICByZXR1cm4gbzFbdGhpcy5maWVsZC5wcm9wZXJ0eV0gPT09IG8yW3RoaXMuZmllbGQucHJvcGVydHldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvMSA9PT0gbzI7XG4gICAgfVxufVxuIl19
|
|
@@ -1,205 +0,0 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
|
|
3
|
-
import { Component, ViewChild, ViewChildren } from '@angular/core';
|
|
4
|
-
import { FormControl } from '@angular/forms';
|
|
5
|
-
import { MatOption } from '@angular/material/core';
|
|
6
|
-
import { Observable, of, ReplaySubject } from 'rxjs';
|
|
7
|
-
import { map, startWith, switchMap, take, takeUntil } from 'rxjs/operators';
|
|
8
|
-
import { KlesFieldAbstract } from './field.abstract';
|
|
9
|
-
let KlesFormSelectSearchComponent = class KlesFormSelectSearchComponent extends KlesFieldAbstract {
|
|
10
|
-
constructor() {
|
|
11
|
-
super(...arguments);
|
|
12
|
-
this.searchControl = new FormControl();
|
|
13
|
-
this.selectAllControl = new FormControl(false);
|
|
14
|
-
this.optionsFiltered$ = new ReplaySubject(1);
|
|
15
|
-
this.compareFn = (o1, o2) => {
|
|
16
|
-
if (this.field.property && o1 && o2) {
|
|
17
|
-
return o1[this.field.property] === o2[this.field.property];
|
|
18
|
-
}
|
|
19
|
-
return o1 === o2;
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
ngOnInit() {
|
|
23
|
-
super.ngOnInit();
|
|
24
|
-
if (!(this.field.options instanceof Observable)) {
|
|
25
|
-
this.options$ = of(this.field.options);
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
this.options$ = this.field.options;
|
|
29
|
-
}
|
|
30
|
-
this.searchControl.valueChanges.pipe(startWith(this.searchControl.value), takeUntil(this._onDestroy), switchMap(value => {
|
|
31
|
-
if (value) {
|
|
32
|
-
const search = value.toLowerCase();
|
|
33
|
-
return this.options$.pipe(map(options => {
|
|
34
|
-
return options
|
|
35
|
-
.filter(option => {
|
|
36
|
-
if (this.field.searchKeys && this.field.searchKeys.length) {
|
|
37
|
-
return this.field.searchKeys.some(searchKey => {
|
|
38
|
-
if (option[searchKey]) {
|
|
39
|
-
return option[searchKey].toString().toLowerCase().indexOf(search) > -1;
|
|
40
|
-
}
|
|
41
|
-
return false;
|
|
42
|
-
}) || (this.field.property ?
|
|
43
|
-
option[this.field.property].toString().toLowerCase().indexOf(search) > -1 : false);
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
if (this.field.property) {
|
|
47
|
-
return option[this.field.property].toString().toLowerCase().indexOf(search) > -1;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
return option.toString().toLowerCase().indexOf(search) > -1;
|
|
51
|
-
});
|
|
52
|
-
}));
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
return this.options$;
|
|
56
|
-
}
|
|
57
|
-
})).subscribe(this.optionsFiltered$);
|
|
58
|
-
this.group.controls[this.field.name]
|
|
59
|
-
.valueChanges.pipe(takeUntil(this._onDestroy), startWith(this.group.controls[this.field.name].value), switchMap(selected => {
|
|
60
|
-
return this.optionsFiltered$.pipe(map((options) => options.filter((option) => !(option === null || option === void 0 ? void 0 : option.disabled))), map(options => {
|
|
61
|
-
if (!selected) {
|
|
62
|
-
return false;
|
|
63
|
-
}
|
|
64
|
-
if (options.length < selected.length) {
|
|
65
|
-
return options.length > 0 && options.every(o => selected.includes(o));
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
return options.length > 0 && options.length === selected.length && selected.every(s => options.includes(s));
|
|
69
|
-
}
|
|
70
|
-
}));
|
|
71
|
-
})).subscribe(isChecked => {
|
|
72
|
-
this.selectAllControl.setValue(isChecked);
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
ngOnDestroy() {
|
|
76
|
-
// this._onDestroy.next();
|
|
77
|
-
super.ngOnDestroy();
|
|
78
|
-
}
|
|
79
|
-
toggleAllSelection(state) {
|
|
80
|
-
if (state.checked) {
|
|
81
|
-
this.optionsFiltered$.pipe(take(1), map((options) => options.filter((option) => !(option === null || option === void 0 ? void 0 : option.disabled)))).subscribe(options => {
|
|
82
|
-
if (options.length > 0) {
|
|
83
|
-
this.group.controls[this.field.name].patchValue(options.slice());
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
this.group.controls[this.field.name].patchValue([]);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
openChange($event) {
|
|
92
|
-
if (this.field.virtualScroll) {
|
|
93
|
-
if ($event) {
|
|
94
|
-
this.cdkVirtualScrollViewport.scrollToIndex(0);
|
|
95
|
-
this.cdkVirtualScrollViewport.checkViewportSize();
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
};
|
|
100
|
-
__decorate([
|
|
101
|
-
ViewChild(CdkVirtualScrollViewport)
|
|
102
|
-
], KlesFormSelectSearchComponent.prototype, "cdkVirtualScrollViewport", void 0);
|
|
103
|
-
__decorate([
|
|
104
|
-
ViewChildren(MatOption)
|
|
105
|
-
], KlesFormSelectSearchComponent.prototype, "options", void 0);
|
|
106
|
-
KlesFormSelectSearchComponent = __decorate([
|
|
107
|
-
Component({
|
|
108
|
-
selector: 'kles-form-select-search',
|
|
109
|
-
template: `
|
|
110
|
-
<mat-form-field class="margin-top" [color]="field.color" [formGroup]="group">
|
|
111
|
-
<mat-select matTooltip="{{field.tooltip}}" [attr.id]="field.id" [ngClass]="field.ngClass"
|
|
112
|
-
(openedChange)="openChange($event)" [compareWith]="compareFn"
|
|
113
|
-
[placeholder]="field.placeholder | translate" [formControlName]="field.name" [multiple]="field.multiple">
|
|
114
|
-
<mat-select-trigger *ngIf="field.triggerComponent">
|
|
115
|
-
<ng-container klesComponent [component]="field.triggerComponent" [value]="group.controls[field.name].value" [field]="field"></ng-container>
|
|
116
|
-
</mat-select-trigger>
|
|
117
|
-
|
|
118
|
-
<ng-container *ngIf="field.virtualScroll">
|
|
119
|
-
<mat-option>
|
|
120
|
-
<ngx-mat-select-search [formControl]="searchControl"
|
|
121
|
-
placeholderLabel="" noEntriesFoundLabel =""></ngx-mat-select-search>
|
|
122
|
-
</mat-option>
|
|
123
|
-
|
|
124
|
-
<cdk-virtual-scroll-viewport [itemSize]="field.itemSize || 50" [style.height.px]=4*48>
|
|
125
|
-
<mat-checkbox *ngIf="field.multiple" class="selectAll" [formControl]="selectAllControl"
|
|
126
|
-
(change)="toggleAllSelection($event)">
|
|
127
|
-
{{'selectAll' | translate}}
|
|
128
|
-
</mat-checkbox>
|
|
129
|
-
<ng-container *ngIf="!field.autocompleteComponent">
|
|
130
|
-
<mat-option *cdkVirtualFor="let item of optionsFiltered$ | async" [value]="item" [disabled]="item?.disabled">{{(field.property ? item[field.property] : item) | klesTransform:field.pipeTransform}}</mat-option>
|
|
131
|
-
|
|
132
|
-
<ng-container *ngIf="field.multiple">
|
|
133
|
-
<mat-option *ngFor="let item of group.controls[field.name].value | slice:0:30" [value]="item"
|
|
134
|
-
style="display:none">
|
|
135
|
-
{{(field.property ? item[field.property] : item) | klesTransform:field.pipeTransform}}
|
|
136
|
-
</mat-option>
|
|
137
|
-
</ng-container>
|
|
138
|
-
|
|
139
|
-
<ng-container *ngIf="!field.multiple && group.controls[field.name].value">
|
|
140
|
-
<mat-option *ngFor="let item of [group?.controls[field.name]?.value]" [value]="item" style="display:none">
|
|
141
|
-
{{(field.property ? item[field.property] : item) | klesTransform:field.pipeTransform}}
|
|
142
|
-
</mat-option>
|
|
143
|
-
</ng-container>
|
|
144
|
-
</ng-container>
|
|
145
|
-
|
|
146
|
-
<ng-container *ngIf="field.autocompleteComponent">
|
|
147
|
-
<mat-option *cdkVirtualFor="let item of optionsFiltered$ | async" [value]="item" [disabled]="item?.disabled">
|
|
148
|
-
<ng-container klesComponent [component]="field.autocompleteComponent" [value]="item" [field]="field"></ng-container>
|
|
149
|
-
</mat-option>
|
|
150
|
-
|
|
151
|
-
<ng-container *ngIf="field.multiple">
|
|
152
|
-
<mat-option *ngFor="let item of group.controls[field.name].value | slice:0:30" [value]="item"
|
|
153
|
-
style="display:none">
|
|
154
|
-
<ng-container klesComponent [component]="field.autocompleteComponent" [value]="item" [field]="field"></ng-container>
|
|
155
|
-
</mat-option>
|
|
156
|
-
</ng-container>
|
|
157
|
-
|
|
158
|
-
<ng-container *ngIf="!field.multiple && group.controls[field.name].value">
|
|
159
|
-
<mat-option *ngFor="let item of [group?.controls[field.name]?.value]" [value]="item" style="display:none">
|
|
160
|
-
<ng-container klesComponent [component]="field.autocompleteComponent" [value]="item" [field]="field"></ng-container>
|
|
161
|
-
</mat-option>
|
|
162
|
-
</ng-container>
|
|
163
|
-
</ng-container>
|
|
164
|
-
</cdk-virtual-scroll-viewport>
|
|
165
|
-
|
|
166
|
-
</ng-container>
|
|
167
|
-
|
|
168
|
-
<ng-container *ngIf="!field.virtualScroll">
|
|
169
|
-
|
|
170
|
-
<mat-option>
|
|
171
|
-
<ngx-mat-select-search [formControl]="searchControl"
|
|
172
|
-
placeholderLabel="" noEntriesFoundLabel =""></ngx-mat-select-search>
|
|
173
|
-
</mat-option>
|
|
174
|
-
|
|
175
|
-
<mat-checkbox *ngIf="field.multiple" class="selectAll" [formControl]="selectAllControl"
|
|
176
|
-
(change)="toggleAllSelection($event)">
|
|
177
|
-
{{'selectAll' | translate}}
|
|
178
|
-
</mat-checkbox>
|
|
179
|
-
|
|
180
|
-
<ng-container *ngIf="!field.autocompleteComponent">
|
|
181
|
-
<mat-option *ngFor="let item of optionsFiltered$ | async" [value]="item" [disabled]="item?.disabled">{{(field.property ? item[field.property] : item) | klesTransform:field.pipeTransform}}</mat-option>
|
|
182
|
-
</ng-container>
|
|
183
|
-
|
|
184
|
-
<ng-container *ngIf="field.autocompleteComponent">
|
|
185
|
-
<mat-option *ngFor="let item of optionsFiltered$ | async" [value]="item" [disabled]="item?.disabled">
|
|
186
|
-
<ng-container klesComponent [component]="field.autocompleteComponent" [value]="item" [field]="field"></ng-container>
|
|
187
|
-
</mat-option>
|
|
188
|
-
</ng-container>
|
|
189
|
-
</ng-container>
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
</mat-select>
|
|
193
|
-
<ng-container *ngFor="let validation of field.validations;" ngProjectAs="mat-error">
|
|
194
|
-
<mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
|
|
195
|
-
</ng-container>
|
|
196
|
-
<ng-container *ngFor="let validation of field.asyncValidations;" ngProjectAs="mat-error">
|
|
197
|
-
<mat-error *ngIf="group.get(field.name).hasError(validation.name)">{{validation.message | translate}}</mat-error>
|
|
198
|
-
</ng-container>
|
|
199
|
-
</mat-form-field>
|
|
200
|
-
`,
|
|
201
|
-
styles: ['mat-form-field {width: calc(100%)}', '.selectAll {padding: 10px 16px;}']
|
|
202
|
-
})
|
|
203
|
-
], KlesFormSelectSearchComponent);
|
|
204
|
-
export { KlesFormSelectSearchComponent };
|
|
205
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LnNlYXJjaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AM2tsZXMva2xlcy1tYXRlcmlhbC1keW5hbWljZm9ybXMvIiwic291cmNlcyI6WyJsaWIvZmllbGRzL3NlbGVjdC5zZWFyY2guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsU0FBUyxFQUFnQyxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFrR3JELElBQWEsNkJBQTZCLEdBQTFDLE1BQWEsNkJBQThCLFNBQVEsaUJBQWlCO0lBQXBFOztRQUVJLGtCQUFhLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNsQyxxQkFBZ0IsR0FBRyxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUkxQyxxQkFBZ0IsR0FBRyxJQUFJLGFBQWEsQ0FBUSxDQUFDLENBQUMsQ0FBQztRQW1HL0MsY0FBUyxHQUFHLENBQUMsRUFBTyxFQUFFLEVBQU8sRUFBRSxFQUFFO1lBQzdCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRTtnQkFDakMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxR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QUFvRDtBQUMvRDtJQUF4QixZQUFZLENBQUMsU0FBUyxDQUFDOzhEQUErQjtBQVo5Qyw2QkFBNkI7SUFoR3pDLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSx5QkFBeUI7UUFDbkMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBMkZiO2lCQUNZLG9DQUFvQyxFQUFFLGtDQUFrQztLQUNwRixDQUFDO0dBQ1csNkJBQTZCLENBZ0h6QztTQWhIWSw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0T3B0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgS2xlc0ZpZWxkQWJzdHJhY3QgfSBmcm9tICcuL2ZpZWxkLmFic3RyYWN0JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdrbGVzLWZvcm0tc2VsZWN0LXNlYXJjaCcsXG4gICAgdGVtcGxhdGU6IGBcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtYXJnaW4tdG9wXCIgW2NvbG9yXT1cImZpZWxkLmNvbG9yXCIgW2Zvcm1Hcm91cF09XCJncm91cFwiPlxuICAgICAgICA8bWF0LXNlbGVjdCBtYXRUb29sdGlwPVwie3tmaWVsZC50b29sdGlwfX1cIiBbYXR0ci5pZF09XCJmaWVsZC5pZFwiIFtuZ0NsYXNzXT1cImZpZWxkLm5nQ2xhc3NcIlxuICAgICAgICAob3BlbmVkQ2hhbmdlKT1cIm9wZW5DaGFuZ2UoJGV2ZW50KVwiIFtjb21wYXJlV2l0aF09XCJjb21wYXJlRm5cIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIiBbbXVsdGlwbGVdPVwiZmllbGQubXVsdGlwbGVcIj5cbiAgICAgICAgPG1hdC1zZWxlY3QtdHJpZ2dlciAqbmdJZj1cImZpZWxkLnRyaWdnZXJDb21wb25lbnRcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIga2xlc0NvbXBvbmVudCBbY29tcG9uZW50XT1cImZpZWxkLnRyaWdnZXJDb21wb25lbnRcIiBbdmFsdWVdPVwiZ3JvdXAuY29udHJvbHNbZmllbGQubmFtZV0udmFsdWVcIiBbZmllbGRdPVwiZmllbGRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9tYXQtc2VsZWN0LXRyaWdnZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLnZpcnR1YWxTY3JvbGxcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxuZ3gtbWF0LXNlbGVjdC1zZWFyY2ggW2Zvcm1Db250cm9sXT1cInNlYXJjaENvbnRyb2xcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyTGFiZWw9XCJcIiBub0VudHJpZXNGb3VuZExhYmVsID1cIlwiPjwvbmd4LW1hdC1zZWxlY3Qtc2VhcmNoPlxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCBbaXRlbVNpemVdPVwiZmllbGQuaXRlbVNpemUgfHwgNTBcIiBbc3R5bGUuaGVpZ2h0LnB4XT00KjQ4PlxuICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggKm5nSWY9XCJmaWVsZC5tdWx0aXBsZVwiIGNsYXNzPVwic2VsZWN0QWxsXCIgW2Zvcm1Db250cm9sXT1cInNlbGVjdEFsbENvbnRyb2xcIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlQWxsU2VsZWN0aW9uKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAge3snc2VsZWN0QWxsJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmaWVsZC5hdXRvY29tcGxldGVDb21wb25lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKmNka1ZpcnR1YWxGb3I9XCJsZXQgaXRlbSBvZiBvcHRpb25zRmlsdGVyZWQkIHwgYXN5bmNcIiBbdmFsdWVdPVwiaXRlbVwiIFtkaXNhYmxlZF09XCJpdGVtPy5kaXNhYmxlZFwiPnt7KGZpZWxkLnByb3BlcnR5ID8gaXRlbVtmaWVsZC5wcm9wZXJ0eV0gOiBpdGVtKSB8IGtsZXNUcmFuc2Zvcm06ZmllbGQucGlwZVRyYW5zZm9ybX19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLm11bHRpcGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBncm91cC5jb250cm9sc1tmaWVsZC5uYW1lXS52YWx1ZSB8IHNsaWNlOjA6MzBcIiBbdmFsdWVdPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6bm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7KGZpZWxkLnByb3BlcnR5ID8gaXRlbVtmaWVsZC5wcm9wZXJ0eV0gOiBpdGVtKSB8IGtsZXNUcmFuc2Zvcm06ZmllbGQucGlwZVRyYW5zZm9ybX19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZmllbGQubXVsdGlwbGUgJiYgZ3JvdXAuY29udHJvbHNbZmllbGQubmFtZV0udmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIFtncm91cD8uY29udHJvbHNbZmllbGQubmFtZV0/LnZhbHVlXVwiIFt2YWx1ZV09XCJpdGVtXCIgc3R5bGU9XCJkaXNwbGF5Om5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhmaWVsZC5wcm9wZXJ0eSA/IGl0ZW1bZmllbGQucHJvcGVydHldIDogaXRlbSkgfCBrbGVzVHJhbnNmb3JtOmZpZWxkLnBpcGVUcmFuc2Zvcm19fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5hdXRvY29tcGxldGVDb21wb25lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKmNka1ZpcnR1YWxGb3I9XCJsZXQgaXRlbSBvZiBvcHRpb25zRmlsdGVyZWQkIHwgYXN5bmNcIiBbdmFsdWVdPVwiaXRlbVwiIFtkaXNhYmxlZF09XCJpdGVtPy5kaXNhYmxlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBrbGVzQ29tcG9uZW50IFtjb21wb25lbnRdPVwiZmllbGQuYXV0b2NvbXBsZXRlQ29tcG9uZW50XCIgW3ZhbHVlXT1cIml0ZW1cIiBbZmllbGRdPVwiZmllbGRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5tdWx0aXBsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ3JvdXAuY29udHJvbHNbZmllbGQubmFtZV0udmFsdWUgfCBzbGljZTowOjMwXCIgW3ZhbHVlXT1cIml0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5Om5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIga2xlc0NvbXBvbmVudCBbY29tcG9uZW50XT1cImZpZWxkLmF1dG9jb21wbGV0ZUNvbXBvbmVudFwiIFt2YWx1ZV09XCJpdGVtXCIgW2ZpZWxkXT1cImZpZWxkXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZmllbGQubXVsdGlwbGUgJiYgZ3JvdXAuY29udHJvbHNbZmllbGQubmFtZV0udmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIFtncm91cD8uY29udHJvbHNbZmllbGQubmFtZV0/LnZhbHVlXVwiIFt2YWx1ZV09XCJpdGVtXCIgc3R5bGU9XCJkaXNwbGF5Om5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGtsZXNDb21wb25lbnQgW2NvbXBvbmVudF09XCJmaWVsZC5hdXRvY29tcGxldGVDb21wb25lbnRcIiBbdmFsdWVdPVwiaXRlbVwiIFtmaWVsZF09XCJmaWVsZFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZmllbGQudmlydHVhbFNjcm9sbFwiPlxuICAgICAgICAgICBcbiAgICAgICAgICAgIDxtYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxuZ3gtbWF0LXNlbGVjdC1zZWFyY2ggW2Zvcm1Db250cm9sXT1cInNlYXJjaENvbnRyb2xcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyTGFiZWw9XCJcIiBub0VudHJpZXNGb3VuZExhYmVsID1cIlwiPjwvbmd4LW1hdC1zZWxlY3Qtc2VhcmNoPlxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgXG4gICAgICAgICAgICA8bWF0LWNoZWNrYm94ICpuZ0lmPVwiZmllbGQubXVsdGlwbGVcIiBjbGFzcz1cInNlbGVjdEFsbFwiIFtmb3JtQ29udHJvbF09XCJzZWxlY3RBbGxDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVBbGxTZWxlY3Rpb24oJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICB7eydzZWxlY3RBbGwnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpZWxkLmF1dG9jb21wbGV0ZUNvbXBvbmVudFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIG9wdGlvbnNGaWx0ZXJlZCQgfCBhc3luY1wiIFt2YWx1ZV09XCJpdGVtXCIgW2Rpc2FibGVkXT1cIml0ZW0/LmRpc2FibGVkXCI+e3soZmllbGQucHJvcGVydHkgPyBpdGVtW2ZpZWxkLnByb3BlcnR5XSA6IGl0ZW0pIHwga2xlc1RyYW5zZm9ybTpmaWVsZC5waXBlVHJhbnNmb3JtfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLmF1dG9jb21wbGV0ZUNvbXBvbmVudFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIG9wdGlvbnNGaWx0ZXJlZCQgfCBhc3luY1wiIFt2YWx1ZV09XCJpdGVtXCIgW2Rpc2FibGVkXT1cIml0ZW0/LmRpc2FibGVkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIga2xlc0NvbXBvbmVudCBbY29tcG9uZW50XT1cImZpZWxkLmF1dG9jb21wbGV0ZUNvbXBvbmVudFwiIFt2YWx1ZV09XCJpdGVtXCIgW2ZpZWxkXT1cImZpZWxkXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG5cbiAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2YWxpZGF0aW9uIG9mIGZpZWxkLnZhbGlkYXRpb25zO1wiIG5nUHJvamVjdEFzPVwibWF0LWVycm9yXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImdyb3VwLmdldChmaWVsZC5uYW1lKS5oYXNFcnJvcih2YWxpZGF0aW9uLm5hbWUpXCI+e3t2YWxpZGF0aW9uLm1lc3NhZ2UgfCB0cmFuc2xhdGV9fTwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2YWxpZGF0aW9uIG9mIGZpZWxkLmFzeW5jVmFsaWRhdGlvbnM7XCIgbmdQcm9qZWN0QXM9XCJtYXQtZXJyb3JcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZ3JvdXAuZ2V0KGZpZWxkLm5hbWUpLmhhc0Vycm9yKHZhbGlkYXRpb24ubmFtZSlcIj57e3ZhbGlkYXRpb24ubWVzc2FnZSB8IHRyYW5zbGF0ZX19PC9tYXQtZXJyb3I+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuYCxcbiAgICBzdHlsZXM6IFsnbWF0LWZvcm0tZmllbGQge3dpZHRoOiBjYWxjKDEwMCUpfScsICcuc2VsZWN0QWxsIHtwYWRkaW5nOiAxMHB4IDE2cHg7fSddXG59KVxuZXhwb3J0IGNsYXNzIEtsZXNGb3JtU2VsZWN0U2VhcmNoQ29tcG9uZW50IGV4dGVuZHMgS2xlc0ZpZWxkQWJzdHJhY3QgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgICBzZWFyY2hDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG4gICAgc2VsZWN0QWxsQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChmYWxzZSk7XG5cblxuICAgIG9wdGlvbnMkOiBPYnNlcnZhYmxlPGFueVtdPjtcbiAgICBvcHRpb25zRmlsdGVyZWQkID0gbmV3IFJlcGxheVN1YmplY3Q8YW55W10+KDEpO1xuXG4gICAgLy8gcHJpdmF0ZSBfb25EZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIEBWaWV3Q2hpbGQoQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0KSBjZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ6IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydDtcbiAgICBAVmlld0NoaWxkcmVuKE1hdE9wdGlvbikgb3B0aW9uczogUXVlcnlMaXN0PE1hdE9wdGlvbj47XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgICAgICBpZiAoISh0aGlzLmZpZWxkLm9wdGlvbnMgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSkge1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zJCA9IG9mKHRoaXMuZmllbGQub3B0aW9ucyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMkID0gdGhpcy5maWVsZC5vcHRpb25zO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgc3RhcnRXaXRoKHRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZSksXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95KSxcbiAgICAgICAgICAgIHN3aXRjaE1hcCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlYXJjaCA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMkLnBpcGUobWFwKG9wdGlvbnMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpZWxkLnNlYXJjaEtleXMgJiYgdGhpcy5maWVsZC5zZWFyY2hLZXlzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmllbGQuc2VhcmNoS2V5cy5zb21lKHNlYXJjaEtleSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbltzZWFyY2hLZXldKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25bc2VhcmNoS2V5XS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzZWFyY2gpID4gLTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIHx8ICh0aGlzLmZpZWxkLnByb3BlcnR5ID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25bdGhpcy5maWVsZC5wcm9wZXJ0eV0udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoc2VhcmNoKSA+IC0xIDogZmFsc2UpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5maWVsZC5wcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25bdGhpcy5maWVsZC5wcm9wZXJ0eV0udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoc2VhcmNoKSA+IC0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoc2VhcmNoKSA+IC0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucyQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKS5zdWJzY3JpYmUodGhpcy5vcHRpb25zRmlsdGVyZWQkKTtcblxuICAgICAgICB0aGlzLmdyb3VwLmNvbnRyb2xzW3RoaXMuZmllbGQubmFtZV1cbiAgICAgICAgICAgIC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95KSxcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgodGhpcy5ncm91cC5jb250cm9sc1t0aGlzLmZpZWxkLm5hbWVdLnZhbHVlKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoc2VsZWN0ZWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zRmlsdGVyZWQkLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXAoKG9wdGlvbnMpID0+IG9wdGlvbnMuZmlsdGVyKChvcHRpb24pID0+ICFvcHRpb24/LmRpc2FibGVkKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXAob3B0aW9ucyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmxlbmd0aCA8IHNlbGVjdGVkLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5sZW5ndGggPiAwICYmIG9wdGlvbnMuZXZlcnkobyA9PiBzZWxlY3RlZC5pbmNsdWRlcyhvKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMubGVuZ3RoID4gMCAmJiBvcHRpb25zLmxlbmd0aCA9PT0gc2VsZWN0ZWQubGVuZ3RoICYmIHNlbGVjdGVkLmV2ZXJ5KHMgPT4gb3B0aW9ucy5pbmNsdWRlcyhzKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLnN1YnNjcmliZShpc0NoZWNrZWQgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0QWxsQ29udHJvbC5zZXRWYWx1ZShpc0NoZWNrZWQpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIC8vIHRoaXMuX29uRGVzdHJveS5uZXh0KCk7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxuXG5cbiAgICB0b2dnbGVBbGxTZWxlY3Rpb24oc3RhdGUpIHtcbiAgICAgICAgaWYgKHN0YXRlLmNoZWNrZWQpIHtcbiAgICAgICAgICAgIHRoaXMub3B0aW9uc0ZpbHRlcmVkJC5waXBlKHRha2UoMSksIG1hcCgob3B0aW9ucykgPT4gb3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4gIW9wdGlvbj8uZGlzYWJsZWQpKSkuc3Vic2NyaWJlKG9wdGlvbnMgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ncm91cC5jb250cm9sc1t0aGlzLmZpZWxkLm5hbWVdLnBhdGNoVmFsdWUob3B0aW9ucy5zbGljZSgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5ncm91cC5jb250cm9sc1t0aGlzLmZpZWxkLm5hbWVdLnBhdGNoVmFsdWUoW10pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb3BlbkNoYW5nZSgkZXZlbnQ6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHRoaXMuZmllbGQudmlydHVhbFNjcm9sbCkge1xuICAgICAgICAgICAgaWYgKCRldmVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LnNjcm9sbFRvSW5kZXgoMCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQuY2hlY2tWaWV3cG9ydFNpemUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbXBhcmVGbiA9IChvMTogYW55LCBvMjogYW55KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmZpZWxkLnByb3BlcnR5ICYmIG8xICYmIG8yKSB7XG4gICAgICAgICAgICByZXR1cm4gbzFbdGhpcy5maWVsZC5wcm9wZXJ0eV0gPT09IG8yW3RoaXMuZmllbGQucHJvcGVydHldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvMSA9PT0gbzI7XG4gICAgfVxufVxuIl19
|