@indigina/kendo 1.2.76 → 1.2.78
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/esm2022/lib/widgets/entity-edit/field-multiselect/field-multiselect.component.mjs +20 -15
- package/esm2022/lib/widgets/entity-list/entity-list.component.mjs +3 -2
- package/esm2022/lib/widgets/entity-list/entity-list.module.mjs +7 -3
- package/fesm2022/indigina-kendo.mjs +25 -17
- package/fesm2022/indigina-kendo.mjs.map +1 -1
- package/lib/widgets/entity-edit/field-multiselect/field-multiselect.component.d.ts +6 -6
- package/lib/widgets/entity-list/entity-list.module.d.ts +2 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
|
|
2
2
|
import { ControlContainer, FormGroupDirective, } from '@angular/forms';
|
|
3
3
|
import { FieldComponent } from '../../../angular/forms/widgets/field/field.component';
|
|
4
|
-
import { BehaviorSubject } from 'rxjs';
|
|
4
|
+
import { BehaviorSubject, map, Subject, takeUntil, tap, } from 'rxjs';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import * as i1 from "@angular/forms";
|
|
7
7
|
import * as i2 from "@progress/kendo-angular-dropdowns";
|
|
@@ -18,24 +18,34 @@ export class FieldMultiSelectComponent extends FieldComponent {
|
|
|
18
18
|
this.singleMode = false;
|
|
19
19
|
this.autoClose = false;
|
|
20
20
|
this.changed = new EventEmitter();
|
|
21
|
+
this.destroy$ = new Subject();
|
|
21
22
|
this.textField = this.textField ?? 'name';
|
|
22
23
|
this.valueField = this.valueField ?? 'id';
|
|
23
24
|
}
|
|
25
|
+
ngOnInit() {
|
|
26
|
+
super.ngOnInit();
|
|
27
|
+
this.setData();
|
|
28
|
+
}
|
|
24
29
|
ngOnChanges() {
|
|
25
30
|
super.ngOnChanges();
|
|
31
|
+
this.setData();
|
|
32
|
+
}
|
|
33
|
+
ngOnDestroy() {
|
|
34
|
+
this.destroy$.next();
|
|
35
|
+
this.destroy$.complete();
|
|
36
|
+
}
|
|
37
|
+
setData() {
|
|
26
38
|
if (this.data) {
|
|
27
|
-
|
|
39
|
+
let dataSubject = new BehaviorSubject(this.data);
|
|
40
|
+
this.data$ = dataSubject.asObservable();
|
|
28
41
|
}
|
|
29
42
|
else {
|
|
30
|
-
this.
|
|
31
|
-
|
|
32
|
-
this.control.setValue(this.control.value.filter((x) =>
|
|
33
|
-
});
|
|
43
|
+
this.data$ = this.getData().pipe(tap((page) => {
|
|
44
|
+
let data = page.data;
|
|
45
|
+
this.control.setValue(this.control.value.filter((x) => data.some((d) => d.id === x)));
|
|
46
|
+
}), map((page) => page.data), takeUntil(this.destroy$));
|
|
34
47
|
}
|
|
35
48
|
}
|
|
36
|
-
ngOnDestroy() {
|
|
37
|
-
this.getDataSubscription?.unsubscribe();
|
|
38
|
-
}
|
|
39
49
|
onPopupOpen(event) {
|
|
40
50
|
if (!this.singleMode) {
|
|
41
51
|
return;
|
|
@@ -48,11 +58,6 @@ export class FieldMultiSelectComponent extends FieldComponent {
|
|
|
48
58
|
getData() {
|
|
49
59
|
return this.service.getPage(this.filter ? { filter: this.filter } : {});
|
|
50
60
|
}
|
|
51
|
-
updateData(data) {
|
|
52
|
-
this.data = data;
|
|
53
|
-
this.dataSubject = new BehaviorSubject(data);
|
|
54
|
-
this.data$ = this.dataSubject.asObservable();
|
|
55
|
-
}
|
|
56
61
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: FieldMultiSelectComponent, deps: [{ token: i1.FormGroupDirective }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
57
62
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: FieldMultiSelectComponent, selector: "field-multiselect", inputs: { service: "service", rebind: "rebind", filter: "filter", textField: "textField", valueField: "valueField", data: "data", singleMode: "singleMode", autoClose: "autoClose" }, outputs: { changed: "changed" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"form-group\">\n <label class=\"col-md-3 control-label\" [for]=\"'_' + fieldName\">{{\n labelKey | translate\n }}</label>\n <div *ngIf=\"control\" class=\"col-md-9\">\n <kendo-multiselect\n [id]=\"'_' + fieldName\"\n [formControl]=\"control\"\n [data]=\"data$ | async\"\n [autoClose]=\"autoClose\"\n [textField]=\"textField\"\n [valueField]=\"valueField\"\n [valuePrimitive]=\"true\"\n (open)=\"onPopupOpen($event)\"\n (valueChange)=\"onValueChange($event)\"\n ></kendo-multiselect>\n\n <div *ngIf=\"control.invalid && control.touched\" class=\"bg-danger\">\n <span *ngIf=\"control.errors['required']\">\n {{ \"Required\" | translate : { param0: labelKey | translate } }}\n </span>\n <span *ngIf=\"control.errors['serverErrorMsg']\">\n {{ control.errors[\"serverErrorMsg\"] }}\n </span>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i2.MultiSelectComponent, selector: "kendo-multiselect", inputs: ["showStickyHeader", "focusableId", "autoClose", "loading", "data", "value", "valueField", "textField", "tabindex", "tabIndex", "size", "rounded", "fillMode", "placeholder", "adaptiveMode", "title", "subtitle", "disabled", "itemDisabled", "checkboxes", "readonly", "filterable", "virtual", "popupSettings", "listHeight", "valuePrimitive", "clearButton", "tagMapper", "allowCustom", "valueNormalizer"], outputs: ["filterChange", "valueChange", "open", "opened", "close", "closed", "focus", "blur", "inputFocus", "inputBlur", "removeTag"], exportAs: ["kendoMultiSelect"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], viewProviders: [
|
|
58
63
|
{
|
|
@@ -88,4 +93,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
88
93
|
}], changed: [{
|
|
89
94
|
type: Output
|
|
90
95
|
}] } });
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtbXVsdGlzZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2VuZG8vc3JjL2xpYi93aWRnZXRzL2VudGl0eS1lZGl0L2ZpZWxkLW11bHRpc2VsZWN0L2ZpZWxkLW11bHRpc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlbmRvL3NyYy9saWIvd2lkZ2V0cy9lbnRpdHktZWRpdC9maWVsZC1tdWx0aXNlbGVjdC9maWVsZC1tdWx0aXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLGtCQUFrQixHQUNuQixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUl0RixPQUFPLEVBQ0wsZUFBZSxFQUNmLEdBQUcsRUFFSCxPQUFPLEVBQ1AsU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBZWQsTUFBTSxPQUFPLHlCQUNYLFNBQVEsY0FBd0I7SUFlaEMsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxZQUFtQixNQUEwQixFQUFTLElBQWdCO1FBQ3BFLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRFAsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFBUyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBVjdELGVBQVUsR0FBWSxLQUFLLENBQUM7UUFDNUIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMxQixZQUFPLEdBQW9CLElBQUksWUFBWSxFQUFLLENBQUM7UUFFbEQsYUFBUSxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBUXJELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUM7UUFDMUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQztJQUM1QyxDQUFDO0lBRUQsUUFBUTtRQUNOLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELFdBQVc7UUFDVCxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTSxPQUFPO1FBQ1osSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2IsSUFBSSxXQUFXLEdBQWtDLElBQUksZUFBZSxDQUVsRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDYixJQUFJLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUN6QzthQUFNO1lBQ0wsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUM5QixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDWCxJQUFJLElBQUksR0FBaUIsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQzdCLENBQ0YsQ0FBQztZQUNKLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUN4QixTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUN6QixDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQXVCO1FBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3BCLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzFELENBQUM7SUFFTSxhQUFhLENBQUMsS0FBUTtRQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRU8sT0FBTztRQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxRSxDQUFDOzhHQTdFVSx5QkFBeUI7a0dBQXpCLHlCQUF5Qiw0VEMzQ3RDLDg1QkEyQkEsdXJDRFNpQjtZQUNiO2dCQUNFLE9BQU8sRUFBRSxnQkFBZ0I7Z0JBQ3pCLFdBQVcsRUFBRSxrQkFBa0I7YUFDaEM7U0FDRjs7MkZBRVUseUJBQXlCO2tCQVpyQyxTQUFTOytCQUNFLG1CQUFtQixtQkFHWix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQzt3QkFDYjs0QkFDRSxPQUFPLEVBQUUsZ0JBQWdCOzRCQUN6QixXQUFXLEVBQUUsa0JBQWtCO3lCQUNoQztxQkFDRjtnSEFNUSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDSSxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbENvbnRhaW5lcixcbiAgRm9ybUdyb3VwRGlyZWN0aXZlLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21wb3NpdGVGaWx0ZXJEZXNjcmlwdG9yIH0gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWRhdGEtcXVlcnknO1xuaW1wb3J0IHsgRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9hbmd1bGFyL2Zvcm1zL3dpZGdldHMvZmllbGQvZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IE5hbWVkTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9hbmd1bGFyL21vZGVscy9OYW1lZE1vZGVsJztcbmltcG9ydCB7IElFbnRpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvSUVudGl0eVNlcnZpY2UnO1xuaW1wb3J0IHsgUHJldmVudGFibGVFdmVudCB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1hbmd1bGFyLWRyb3Bkb3ducyc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIG1hcCxcbiAgT2JzZXJ2YWJsZSxcbiAgU3ViamVjdCxcbiAgdGFrZVVudGlsLFxuICB0YXAsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUGFnZSB9IGZyb20gJ3Byb2plY3RzL2tlbmRvL3NyYy9saWIvbW9kZWxzL1BhZ2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmaWVsZC1tdWx0aXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWVsZC1tdWx0aXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpZWxkLW11bHRpc2VsZWN0LmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHZpZXdQcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBDb250cm9sQ29udGFpbmVyLFxuICAgICAgdXNlRXhpc3Rpbmc6IEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGaWVsZE11bHRpU2VsZWN0Q29tcG9uZW50PFQ+XG4gIGV4dGVuZHMgRmllbGRDb21wb25lbnQ8c3RyaW5nW10+XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveVxue1xuICBASW5wdXQoKSBzZXJ2aWNlOiBJRW50aXR5U2VydmljZTxOYW1lZE1vZGVsPjtcbiAgQElucHV0KCkgcmViaW5kOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGZpbHRlcj86IENvbXBvc2l0ZUZpbHRlckRlc2NyaXB0b3I7XG4gIEBJbnB1dCgpIHRleHRGaWVsZD86IHN0cmluZztcbiAgQElucHV0KCkgdmFsdWVGaWVsZD86IHN0cmluZztcbiAgQElucHV0KCkgZGF0YTogTmFtZWRNb2RlbFtdO1xuICBASW5wdXQoKSBzaW5nbGVNb2RlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGF1dG9DbG9zZTogYm9vbGVhbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgY2hhbmdlZDogRXZlbnRFbWl0dGVyPFQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xuXG4gIHJlYWRvbmx5IGRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHVibGljIGRhdGEkOiBPYnNlcnZhYmxlPE5hbWVkTW9kZWxbXT47XG4gIGdldCBjb250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50LmZvcm0uZ2V0KHRoaXMuZmllbGROYW1lKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXJlbnQ6IEZvcm1Hcm91cERpcmVjdGl2ZSwgcHVibGljIGVyZWY6IEVsZW1lbnRSZWYpIHtcbiAgICBzdXBlcihwYXJlbnQsIGVyZWYsIFtdKTtcbiAgICB0aGlzLnRleHRGaWVsZCA9IHRoaXMudGV4dEZpZWxkID8/ICduYW1lJztcbiAgICB0aGlzLnZhbHVlRmllbGQgPSB0aGlzLnZhbHVlRmllbGQgPz8gJ2lkJztcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgdGhpcy5zZXREYXRhKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uQ2hhbmdlcygpO1xuICAgIHRoaXMuc2V0RGF0YSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIHNldERhdGEoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGF0YSkge1xuICAgICAgbGV0IGRhdGFTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8TmFtZWRNb2RlbFtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8XG4gICAgICAgIE5hbWVkTW9kZWxbXVxuICAgICAgPih0aGlzLmRhdGEpO1xuICAgICAgdGhpcy5kYXRhJCA9IGRhdGFTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGEkID0gdGhpcy5nZXREYXRhKCkucGlwZShcbiAgICAgICAgdGFwKChwYWdlKSA9PiB7XG4gICAgICAgICAgbGV0IGRhdGE6IE5hbWVkTW9kZWxbXSA9IHBhZ2UuZGF0YTtcbiAgICAgICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUoXG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wudmFsdWUuZmlsdGVyKCh4OiBzdHJpbmcpID0+XG4gICAgICAgICAgICAgIGRhdGEuc29tZSgoZCkgPT4gZC5pZCA9PT0geCksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICk7XG4gICAgICAgIH0pLFxuICAgICAgICBtYXAoKHBhZ2UpID0+IHBhZ2UuZGF0YSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uUG9wdXBPcGVuKGV2ZW50OiBQcmV2ZW50YWJsZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNpbmdsZU1vZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNvbnRyb2wudmFsdWUubGVuZ3RoID4gMCAmJiBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgcHVibGljIG9uVmFsdWVDaGFuZ2UodmFsdWU6IFQpOiB2b2lkIHtcbiAgICB0aGlzLmNoYW5nZWQuZW1pdCh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGdldERhdGEoKTogT2JzZXJ2YWJsZTxQYWdlPE5hbWVkTW9kZWw+PiB7XG4gICAgcmV0dXJuIHRoaXMuc2VydmljZS5nZXRQYWdlKHRoaXMuZmlsdGVyID8geyBmaWx0ZXI6IHRoaXMuZmlsdGVyIH0gOiB7fSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0zIGNvbnRyb2wtbGFiZWxcIiBbZm9yXT1cIidfJyArIGZpZWxkTmFtZVwiPnt7XG4gICAgbGFiZWxLZXkgfCB0cmFuc2xhdGVcbiAgfX08L2xhYmVsPlxuICA8ZGl2ICpuZ0lmPVwiY29udHJvbFwiIGNsYXNzPVwiY29sLW1kLTlcIj5cbiAgICA8a2VuZG8tbXVsdGlzZWxlY3RcbiAgICAgIFtpZF09XCInXycgKyBmaWVsZE5hbWVcIlxuICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgW2RhdGFdPVwiZGF0YSQgfCBhc3luY1wiXG4gICAgICBbYXV0b0Nsb3NlXT1cImF1dG9DbG9zZVwiXG4gICAgICBbdGV4dEZpZWxkXT1cInRleHRGaWVsZFwiXG4gICAgICBbdmFsdWVGaWVsZF09XCJ2YWx1ZUZpZWxkXCJcbiAgICAgIFt2YWx1ZVByaW1pdGl2ZV09XCJ0cnVlXCJcbiAgICAgIChvcGVuKT1cIm9uUG9wdXBPcGVuKCRldmVudClcIlxuICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgPjwva2VuZG8tbXVsdGlzZWxlY3Q+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiY29udHJvbC5pbnZhbGlkICYmIGNvbnRyb2wudG91Y2hlZFwiIGNsYXNzPVwiYmctZGFuZ2VyXCI+XG4gICAgICA8c3BhbiAqbmdJZj1cImNvbnRyb2wuZXJyb3JzWydyZXF1aXJlZCddXCI+XG4gICAgICAgIHt7IFwiUmVxdWlyZWRcIiB8IHRyYW5zbGF0ZSA6IHsgcGFyYW0wOiBsYWJlbEtleSB8IHRyYW5zbGF0ZSB9IH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cImNvbnRyb2wuZXJyb3JzWydzZXJ2ZXJFcnJvck1zZyddXCI+XG4gICAgICAgIHt7IGNvbnRyb2wuZXJyb3JzW1wic2VydmVyRXJyb3JNc2dcIl0gfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -12,6 +12,7 @@ import * as i6 from "@progress/kendo-angular-grid";
|
|
|
12
12
|
import * as i7 from "@angular/forms";
|
|
13
13
|
import * as i8 from "../../angular/forms/directives/debounce/debounce.directive";
|
|
14
14
|
import * as i9 from "../excel-export-button/excel-export-button.component";
|
|
15
|
+
import * as i10 from "../../directives/requirePermission/requirePermission.directive";
|
|
15
16
|
const nameField = 'name';
|
|
16
17
|
export class EntityListComponent {
|
|
17
18
|
constructor(translate, route, router) {
|
|
@@ -201,7 +202,7 @@ export class EntityListComponent {
|
|
|
201
202
|
this.getData();
|
|
202
203
|
}
|
|
203
204
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EntityListComponent, deps: [{ token: i1.TranslateService }, { token: i2.ActivatedRoute }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
204
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: EntityListComponent, selector: "entity-list", inputs: { service: "service", filters: "filters", fields: "fields", commands: "commands", rowClass: "rowClass", defaultSort: "defaultSort", mapItemFn: "mapItemFn", pageButtonsCount: "pageButtonsCount" }, outputs: { filterChange: "filterChange" }, viewQueries: [{ propertyName: "dialog", first: true, predicate: ["confirmDialog"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-md-4\">\n <header class=\"header-page-bg\"></header>\n <div class=\"panel search-panel hero-unit\">\n <div class=\"header-selection-field\">\n <label for=\"searchinput\" class=\"title-field\">{{\n \"Search\" | translate\n }}</label>\n <input\n kendoTextBox\n class=\"quick-filter input input-field\"\n title=\"\"\n id=\"searchinput\"\n type=\"text\"\n appDebounce\n (debounceKeyup)=\"onSearch($event.target.value)\"\n [ngModel]=\"searchTerm\"\n [debounceTime]=\"600\"\n />\n </div>\n <ng-content></ng-content>\n <div class=\"divide-line\"></div>\n\n <kendo-grid\n [data]=\"page | async\"\n [pageSize]=\"gridState.take\"\n [skip]=\"gridState.skip\"\n [sort]=\"gridState.sort\"\n [pageable]=\"true\"\n [sortable]=\"true\"\n [style.maxHeight.px]=\"480\"\n (remove)=\"removeHandler($event)\"\n (dataStateChange)=\"dataStateChange($event)\"\n [loading]=\"loadings > 0\"\n (cellClick)=\"selectItem($event)\"\n culture\n class=\"rows-pointable\"\n kendoGridSelectBy=\"id\"\n [selectedKeys]=\"selected\"\n [rowClass]=\"getRowClass\"\n >\n <ng-template kendoGridToolbarTemplate>\n <excel-export-button></excel-export-button>\n </ng-template>\n <kendo-grid-excel\n [fileName]=\"generateDateBasedExcelFileName()\"\n [fetchData]=\"getAllData\"\n ></kendo-grid-excel>\n <kendo-grid-command-column width=\"65\">\n <ng-template kendoGridCellTemplate let-dataItem>\n <button\n *ngIf=\"!dataItem.suppressDeletion\"\n kendoGridRemoveCommand\n requirePermission\n permissionType=\"Delete\"\n >\n <em class=\"k-icon glyphicon glyphicon-trash\"></em>\n </button>\n </ng-template>\n </kendo-grid-command-column>\n <kendo-grid-column\n *ngFor=\"let field of gridFields\"\n field=\"{{ field.name }}\"\n title=\"{{ field.label | translate }}\"\n [sortable]=\"field.sortable !== false\"\n >\n </kendo-grid-column>\n <kendo-grid-command-column width=\"65\" *ngIf=\"commands.length > 0\">\n <ng-template kendoGridCellTemplate let-dataItem>\n <button\n *ngFor=\"let command of commands\"\n (click)=\"command.handler(dataItem)\"\n title=\"{{ command.title | translate }}\"\n class=\"k-button\"\n >\n <em\n *ngIf=\"command.iconClass\"\n class=\"{{ command.iconClass }}\"\n ></em>\n {{ command.name | translate }}\n </button>\n </ng-template>\n </kendo-grid-command-column>\n <ng-template kendoGridNoRecordsTemplate>\n {{ \"Messages.NoRecords\" | translate }}\n </ng-template>\n <ng-template kendoPagerTemplate>\n <div class=\"pager\">\n <kendo-grid-spacer></kendo-grid-spacer>\n <kendo-pager-prev-buttons></kendo-pager-prev-buttons>\n <kendo-pager-numeric-buttons\n [buttonCount]=\"pageButtonsCount\"\n ></kendo-pager-numeric-buttons>\n <kendo-pager-next-buttons></kendo-pager-next-buttons>\n <kendo-pager-info></kendo-pager-info>\n </div>\n </ng-template>\n </kendo-grid>\n </div>\n </div>\n <router-outlet\n (activate)=\"onActivate($event)\"\n (deactivate)=\"onDeactivate($event)\"\n ></router-outlet>\n</div>\n<confirm-dialog #confirmDialog></confirm-dialog>\n", styles: [".pager{display:flex;justify-content:center;align-items:center;width:100%}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.TextBoxDirective, selector: "input[kendoTextBox]", inputs: ["value"] }, { kind: "component", type: i5.ConfirmDialogComponent, selector: "confirm-dialog" }, { kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i6.PagerPrevButtonsComponent, selector: "kendo-pager-prev-buttons" }, { kind: "component", type: i6.PagerNextButtonsComponent, selector: "kendo-pager-next-buttons" }, { kind: "component", type: i6.PagerNumericButtonsComponent, selector: "kendo-pager-numeric-buttons", inputs: ["buttonCount"] }, { kind: "component", type: i6.PagerInfoComponent, selector: "kendo-pager-info" }, { kind: "directive", type: i6.PagerTemplateDirective, selector: "[kendoPagerTemplate]" }, { kind: "component", type: i6.GridComponent, selector: "kendo-grid", inputs: ["data", "pageSize", "height", "rowHeight", "detailRowHeight", "skip", "scrollable", "selectable", "sort", "size", "trackBy", "filter", "group", "virtualColumns", "filterable", "sortable", "pageable", "groupable", "rowReorderable", "navigable", "navigatable", "autoSize", "rowClass", "rowSticky", "rowSelected", "cellSelected", "resizable", "reorderable", "loading", "columnMenu", "hideHeader", "isDetailExpanded", "isGroupExpanded"], outputs: ["filterChange", "pageChange", "groupChange", "sortChange", "selectionChange", "rowReorder", "dataStateChange", "groupExpand", "groupCollapse", "detailExpand", "detailCollapse", "edit", "cancel", "save", "remove", "add", "cellClose", "cellClick", "pdfExport", "excelExport", "columnResize", "columnReorder", "columnVisibilityChange", "columnLockedChange", "columnStickyChange", "scrollBottom", "contentScroll"], exportAs: ["kendoGrid"] }, { kind: "directive", type: i6.ToolbarTemplateDirective, selector: "[kendoGridToolbarTemplate]", inputs: ["position"] }, { kind: "component", type: i6.GridSpacerComponent, selector: "kendo-grid-spacer, kendo-pager-spacer", inputs: ["width"] }, { kind: "directive", type: i6.SelectionDirective, selector: "[kendoGridSelectBy]" }, { kind: "directive", type: i6.GridToolbarFocusableDirective, selector: " [kendoGridToolbarFocusable], [kendoGridAddCommand], [kendoGridCancelCommand], [kendoGridEditCommand], [kendoGridRemoveCommand], [kendoGridSaveCommand], [kendoGridExcelCommand], [kendoGridPDFCommand] " }, { kind: "component", type: i6.ColumnComponent, selector: "kendo-grid-column", inputs: ["field", "format", "sortable", "groupable", "editor", "filter", "filterable", "editable"] }, { kind: "directive", type: i6.FocusableDirective, selector: "[kendoGridFocusable], [kendoGridEditCommand], [kendoGridRemoveCommand], [kendoGridSaveCommand], [kendoGridCancelCommand], [kendoGridSelectionCheckbox] ", inputs: ["kendoGridFocusable"] }, { kind: "component", type: i6.CommandColumnComponent, selector: "kendo-grid-command-column" }, { kind: "directive", type: i6.CellTemplateDirective, selector: "[kendoGridCellTemplate]" }, { kind: "directive", type: i6.NoRecordsTemplateDirective, selector: "[kendoGridNoRecordsTemplate]" }, { kind: "component", type: i6.RemoveCommandDirective, selector: "[kendoGridRemoveCommand]" }, { kind: "component", type: i6.ExcelComponent, selector: "kendo-grid-excel", inputs: ["fileName", "filterable", "creator", "date", "forceProxy", "proxyURL", "fetchData", "paddingCellOptions", "headerPaddingCellOptions", "collapsible"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i8.DebounceDirective, selector: "[appDebounce]", inputs: ["debounceTime"], outputs: ["debounceKeyup"] }, { kind: "component", type: i9.ExcelExportButtonComponent, selector: "excel-export-button" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] }); }
|
|
205
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: EntityListComponent, selector: "entity-list", inputs: { service: "service", filters: "filters", fields: "fields", commands: "commands", rowClass: "rowClass", defaultSort: "defaultSort", mapItemFn: "mapItemFn", pageButtonsCount: "pageButtonsCount" }, outputs: { filterChange: "filterChange" }, viewQueries: [{ propertyName: "dialog", first: true, predicate: ["confirmDialog"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-md-4\">\n <header class=\"header-page-bg\"></header>\n <div class=\"panel search-panel hero-unit\">\n <div class=\"header-selection-field\">\n <label for=\"searchinput\" class=\"title-field\">{{\n \"Search\" | translate\n }}</label>\n <input\n kendoTextBox\n class=\"quick-filter input input-field\"\n title=\"\"\n id=\"searchinput\"\n type=\"text\"\n appDebounce\n (debounceKeyup)=\"onSearch($event.target.value)\"\n [ngModel]=\"searchTerm\"\n [debounceTime]=\"600\"\n />\n </div>\n <ng-content></ng-content>\n <div class=\"divide-line\"></div>\n\n <kendo-grid\n [data]=\"page | async\"\n [pageSize]=\"gridState.take\"\n [skip]=\"gridState.skip\"\n [sort]=\"gridState.sort\"\n [pageable]=\"true\"\n [sortable]=\"true\"\n [style.maxHeight.px]=\"480\"\n (remove)=\"removeHandler($event)\"\n (dataStateChange)=\"dataStateChange($event)\"\n [loading]=\"loadings > 0\"\n (cellClick)=\"selectItem($event)\"\n culture\n class=\"rows-pointable\"\n kendoGridSelectBy=\"id\"\n [selectedKeys]=\"selected\"\n [rowClass]=\"getRowClass\"\n >\n <ng-template kendoGridToolbarTemplate>\n <excel-export-button></excel-export-button>\n </ng-template>\n <kendo-grid-excel\n [fileName]=\"generateDateBasedExcelFileName()\"\n [fetchData]=\"getAllData\"\n ></kendo-grid-excel>\n <kendo-grid-command-column width=\"65\">\n <ng-template kendoGridCellTemplate let-dataItem>\n <button\n *ngIf=\"!dataItem.suppressDeletion\"\n kendoGridRemoveCommand\n requirePermission\n permissionType=\"Delete\"\n >\n <em class=\"k-icon glyphicon glyphicon-trash\"></em>\n </button>\n </ng-template>\n </kendo-grid-command-column>\n <kendo-grid-column\n *ngFor=\"let field of gridFields\"\n field=\"{{ field.name }}\"\n title=\"{{ field.label | translate }}\"\n [sortable]=\"field.sortable !== false\"\n >\n </kendo-grid-column>\n <kendo-grid-command-column width=\"65\" *ngIf=\"commands.length > 0\">\n <ng-template kendoGridCellTemplate let-dataItem>\n <button\n *ngFor=\"let command of commands\"\n (click)=\"command.handler(dataItem)\"\n title=\"{{ command.title | translate }}\"\n class=\"k-button\"\n >\n <em\n *ngIf=\"command.iconClass\"\n class=\"{{ command.iconClass }}\"\n ></em>\n {{ command.name | translate }}\n </button>\n </ng-template>\n </kendo-grid-command-column>\n <ng-template kendoGridNoRecordsTemplate>\n {{ \"Messages.NoRecords\" | translate }}\n </ng-template>\n <ng-template kendoPagerTemplate>\n <div class=\"pager\">\n <kendo-grid-spacer></kendo-grid-spacer>\n <kendo-pager-prev-buttons></kendo-pager-prev-buttons>\n <kendo-pager-numeric-buttons\n [buttonCount]=\"pageButtonsCount\"\n ></kendo-pager-numeric-buttons>\n <kendo-pager-next-buttons></kendo-pager-next-buttons>\n <kendo-pager-info></kendo-pager-info>\n </div>\n </ng-template>\n </kendo-grid>\n </div>\n </div>\n <router-outlet\n (activate)=\"onActivate($event)\"\n (deactivate)=\"onDeactivate($event)\"\n ></router-outlet>\n</div>\n<confirm-dialog #confirmDialog></confirm-dialog>\n", styles: [".pager{display:flex;justify-content:center;align-items:center;width:100%}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.TextBoxDirective, selector: "input[kendoTextBox]", inputs: ["value"] }, { kind: "component", type: i5.ConfirmDialogComponent, selector: "confirm-dialog" }, { kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i6.PagerPrevButtonsComponent, selector: "kendo-pager-prev-buttons" }, { kind: "component", type: i6.PagerNextButtonsComponent, selector: "kendo-pager-next-buttons" }, { kind: "component", type: i6.PagerNumericButtonsComponent, selector: "kendo-pager-numeric-buttons", inputs: ["buttonCount"] }, { kind: "component", type: i6.PagerInfoComponent, selector: "kendo-pager-info" }, { kind: "directive", type: i6.PagerTemplateDirective, selector: "[kendoPagerTemplate]" }, { kind: "component", type: i6.GridComponent, selector: "kendo-grid", inputs: ["data", "pageSize", "height", "rowHeight", "detailRowHeight", "skip", "scrollable", "selectable", "sort", "size", "trackBy", "filter", "group", "virtualColumns", "filterable", "sortable", "pageable", "groupable", "rowReorderable", "navigable", "navigatable", "autoSize", "rowClass", "rowSticky", "rowSelected", "cellSelected", "resizable", "reorderable", "loading", "columnMenu", "hideHeader", "isDetailExpanded", "isGroupExpanded"], outputs: ["filterChange", "pageChange", "groupChange", "sortChange", "selectionChange", "rowReorder", "dataStateChange", "groupExpand", "groupCollapse", "detailExpand", "detailCollapse", "edit", "cancel", "save", "remove", "add", "cellClose", "cellClick", "pdfExport", "excelExport", "columnResize", "columnReorder", "columnVisibilityChange", "columnLockedChange", "columnStickyChange", "scrollBottom", "contentScroll"], exportAs: ["kendoGrid"] }, { kind: "directive", type: i6.ToolbarTemplateDirective, selector: "[kendoGridToolbarTemplate]", inputs: ["position"] }, { kind: "component", type: i6.GridSpacerComponent, selector: "kendo-grid-spacer, kendo-pager-spacer", inputs: ["width"] }, { kind: "directive", type: i6.SelectionDirective, selector: "[kendoGridSelectBy]" }, { kind: "directive", type: i6.GridToolbarFocusableDirective, selector: " [kendoGridToolbarFocusable], [kendoGridAddCommand], [kendoGridCancelCommand], [kendoGridEditCommand], [kendoGridRemoveCommand], [kendoGridSaveCommand], [kendoGridExcelCommand], [kendoGridPDFCommand] " }, { kind: "component", type: i6.ColumnComponent, selector: "kendo-grid-column", inputs: ["field", "format", "sortable", "groupable", "editor", "filter", "filterable", "editable"] }, { kind: "directive", type: i6.FocusableDirective, selector: "[kendoGridFocusable], [kendoGridEditCommand], [kendoGridRemoveCommand], [kendoGridSaveCommand], [kendoGridCancelCommand], [kendoGridSelectionCheckbox] ", inputs: ["kendoGridFocusable"] }, { kind: "component", type: i6.CommandColumnComponent, selector: "kendo-grid-command-column" }, { kind: "directive", type: i6.CellTemplateDirective, selector: "[kendoGridCellTemplate]" }, { kind: "directive", type: i6.NoRecordsTemplateDirective, selector: "[kendoGridNoRecordsTemplate]" }, { kind: "component", type: i6.RemoveCommandDirective, selector: "[kendoGridRemoveCommand]" }, { kind: "component", type: i6.ExcelComponent, selector: "kendo-grid-excel", inputs: ["fileName", "filterable", "creator", "date", "forceProxy", "proxyURL", "fetchData", "paddingCellOptions", "headerPaddingCellOptions", "collapsible"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i8.DebounceDirective, selector: "[appDebounce]", inputs: ["debounceTime"], outputs: ["debounceKeyup"] }, { kind: "component", type: i9.ExcelExportButtonComponent, selector: "excel-export-button" }, { kind: "directive", type: i10.RequirePermissionDirective, selector: "[requirePermission]", inputs: ["permissionType", "permissionCategory"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] }); }
|
|
205
206
|
}
|
|
206
207
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EntityListComponent, decorators: [{
|
|
207
208
|
type: Component,
|
|
@@ -228,4 +229,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
228
229
|
type: ViewChild,
|
|
229
230
|
args: ['confirmDialog', { static: true }]
|
|
230
231
|
}] } });
|
|
231
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2VuZG8vc3JjL2xpYi93aWRnZXRzL2VudGl0eS1saXN0L2VudGl0eS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlbmRvL3NyYy9saWIvd2lkZ2V0cy9lbnRpdHktbGlzdC9lbnRpdHktbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQWF2QixPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVFyQyxPQUFPLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7OztBQUUvRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUM7QUFPekIsTUFBTSxPQUFPLG1CQUFtQjtJQWlDOUIsWUFDVSxTQUEyQixFQUMzQixLQUFxQixFQUNyQixNQUFjO1FBRmQsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXRCakIsY0FBUyxHQUFrRCxDQUFDLElBQUksRUFBRSxFQUFFLENBQ3pFLElBQUksQ0FBQztRQUNFLHFCQUFnQixHQUFXLENBQUMsQ0FBQztRQUUvQixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUE2QixDQUFDO1FBRzdELGNBQVMsR0FBVSxFQUFFLENBQUM7UUFDdEIsU0FBSSxHQUFzQyxJQUFJLGVBQWUsQ0FFbEUsSUFBSSxDQUFDLENBQUM7UUFDRCxhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBRWIs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TSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUM7UUFDekUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztRQUMzQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBQzNDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQzs4R0ExUFUsbUJBQW1CO2tHQUFuQixtQkFBbUIsc2JDekNoQywydUhBMEdBOzsyRkRqRWEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGFBQWE7dUlBTWhCLE9BQU87c0JBRGIsS0FBSztnQkFHQyxPQUFPO3NCQURiLEtBQUs7Z0JBR0MsTUFBTTtzQkFEWixLQUFLO2dCQUdDLFFBQVE7c0JBRGQsS0FBSztnQkFHQyxRQUFRO3NCQURkLEtBQUs7Z0JBR0MsV0FBVztzQkFEakIsS0FBSztnQkFHQyxTQUFTO3NCQURmLEtBQUs7Z0JBR0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVDLFlBQVk7c0JBRGxCLE1BQU07Z0JBR0EsTUFBTTtzQkFEWixTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZW1vdmFibGUgfSBmcm9tICcuLi8uLi9hbmd1bGFyL21vZGVscy9yZW1vdmFibGUuaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBQYXJhbXMsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1xuICBEYXRhU3RhdGVDaGFuZ2VFdmVudCxcbiAgUm93Q2xhc3NBcmdzLFxufSBmcm9tICdAcHJvZ3Jlc3Mva2VuZG8tYW5ndWxhci1ncmlkJztcbmltcG9ydCB7XG4gIENvbXBvc2l0ZUZpbHRlckRlc2NyaXB0b3IsXG4gIEZpbHRlckRlc2NyaXB0b3IsXG4gIFNvcnREZXNjcmlwdG9yLFxuICBTdGF0ZSxcbn0gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWRhdGEtcXVlcnknO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJZGVudGlmaWVkTW9kZWwgfSBmcm9tICcuLi8uLi9hbmd1bGFyL21vZGVscy9JZGVudGlmaWVkTW9kZWwnO1xuaW1wb3J0IHsgTmFtZWRNb2RlbCB9IGZyb20gJy4uLy4uL2FuZ3VsYXIvbW9kZWxzL05hbWVkTW9kZWwnO1xuaW1wb3J0IHsgUGFnZSB9IGZyb20gJy4uLy4uL21vZGVscy9QYWdlJztcbmltcG9ydCB7IElFbnRpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvSUVudGl0eVNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlybURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnLi9Db21tYW5kJztcbmltcG9ydCB7IEZpZWxkIH0gZnJvbSAnLi9GaWVsZCc7XG5pbXBvcnQgeyB1cmxEZXNlcmlhbGl6ZSwgdXJsU2VyaWFsaXplIH0gZnJvbSAnLi9VcmxTZXJpYWxpemVyJztcblxuY29uc3QgbmFtZUZpZWxkID0gJ25hbWUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlbnRpdHktbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9lbnRpdHktbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VudGl0eS1saXN0LmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRW50aXR5TGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KClcbiAgcHVibGljIHNlcnZpY2U6IElFbnRpdHlTZXJ2aWNlPE5hbWVkTW9kZWw+O1xuICBASW5wdXQoKVxuICBwdWJsaWMgZmlsdGVyczogKEZpbHRlckRlc2NyaXB0b3IgfCBDb21wb3NpdGVGaWx0ZXJEZXNjcmlwdG9yKVtdO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZmllbGRzPzogRmllbGRbXTtcbiAgQElucHV0KClcbiAgcHVibGljIGNvbW1hbmRzPzogQ29tbWFuZFtdO1xuICBASW5wdXQoKVxuICBwdWJsaWMgcm93Q2xhc3M/OiAoZGF0YUl0ZW06IE5hbWVkTW9kZWwsIGluZGV4OiBudW1iZXIpID0+IHt9O1xuICBASW5wdXQoKVxuICBwdWJsaWMgZGVmYXVsdFNvcnQ/OiBTb3J0RGVzY3JpcHRvcltdO1xuICBASW5wdXQoKVxuICBwdWJsaWMgbWFwSXRlbUZuPzogKGl0ZW06IE5hbWVkTW9kZWwpID0+IE5hbWVkTW9kZWwgJiBSZW1vdmFibGUgPSAoaXRlbSkgPT5cbiAgICBpdGVtO1xuICBASW5wdXQoKSBwYWdlQnV0dG9uc0NvdW50OiBudW1iZXIgPSA1O1xuICBAT3V0cHV0KClcbiAgcHVibGljIGZpbHRlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q29tcG9zaXRlRmlsdGVyRGVzY3JpcHRvcj4oKTtcbiAgQFZpZXdDaGlsZCgnY29uZmlybURpYWxvZycsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHB1YmxpYyBkaWFsb2c6IENvbmZpcm1EaWFsb2dDb21wb25lbnQ7XG4gIHB1YmxpYyBncmlkU3RhdGU6IFN0YXRlID0ge307XG4gIHB1YmxpYyBwYWdlOiBCZWhhdmlvclN1YmplY3Q8UGFnZTxOYW1lZE1vZGVsPj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxuICAgIFBhZ2U8TmFtZWRNb2RlbD5cbiAgPihudWxsKTtcbiAgcHVibGljIGxvYWRpbmdzID0gMDtcbiAgcHVibGljIHNlYXJjaFRlcm06IHN0cmluZztcbiAgcHVibGljIHNlbGVjdGVkOiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgZ3JpZEZpZWxkczogRmllbGRbXSA9IFtdO1xuICBwcml2YXRlIGRlZmF1bHRGaWVsZHM6IEZpZWxkW10gPSBbXG4gICAgeyBuYW1lOiAnbmFtZScsIGxhYmVsOiAnTmFtZScsIHNvcnRhYmxlOiB0cnVlLCBwb3NpdGlvbjogMCB9LFxuICBdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICkge1xuICAgIHRoaXMuZ2V0QWxsRGF0YSA9IHRoaXMuZ2V0QWxsRGF0YS5iaW5kKHRoaXMpO1xuICAgIHRoaXMuZ2V0Um93Q2xhc3MgPSB0aGlzLmdldFJvd0NsYXNzLmJpbmQodGhpcyk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKCFjaGFuZ2VzLmZpbHRlcnMgfHwgY2hhbmdlcy5maWx0ZXJzLmZpcnN0Q2hhbmdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5nZXRGaWx0ZXJlZERhdGEoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZ3JpZEZpZWxkcyA9ICh0aGlzLmZpZWxkcyB8fCBbXSlcbiAgICAgIC5jb25jYXQodGhpcy5kZWZhdWx0RmllbGRzKVxuICAgICAgLnNvcnQoKGxlZnQsIHJpZ2h0KSA9PiAobGVmdC5wb3NpdGlvbiB8fCAwKSAtIChyaWdodC5wb3NpdGlvbiB8fCAwKSk7XG4gICAgdGhpcy5maWx0ZXJzID0gdGhpcy5maWx0ZXJzID8gdGhpcy5maWx0ZXJzIDogW107XG4gICAgdGhpcy5jb21tYW5kcyA9IHRoaXMuY29tbWFuZHMgPyB0aGlzLmNvbW1hbmRzIDogW107XG4gICAgdGhpcy5yb3V0ZS5mcmFnbWVudC5zdWJzY3JpYmUoYXN5bmMgKGZyYWdtZW50OiBzdHJpbmcpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMucmVzdG9yZUdyaWRTdGF0ZShuZXcgVVJMU2VhcmNoUGFyYW1zKGZyYWdtZW50KSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJvdXRlLmZpcnN0Q2hpbGQucGFyYW1zLnN1YnNjcmliZSgocGFyYW1zOiBQYXJhbXMpID0+IHtcbiAgICAgIGlmIChwYXJhbXMuaWQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFswXSA9IHBhcmFtcy5pZC50b1N0cmluZygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5wb3AoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZW5lcmF0ZURhdGVCYXNlZEV4Y2VsRmlsZU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYEV4cG9ydC0ke25ldyBEYXRlKCkudG9Mb2NhbGVTdHJpbmcoKX0ueGxzeGA7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlSGFuZGxlcih7IGRhdGFJdGVtIH0pIHtcbiAgICB0aGlzLmRpYWxvZy5vcGVuKFxuICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnQ29uZmlybWF0aW9uLkRlbGV0ZScpICtcbiAgICAgICAgJzogXCInICtcbiAgICAgICAgZGF0YUl0ZW0ubmFtZSArXG4gICAgICAgICdcIj8nLFxuICAgICAgKCkgPT4gdGhpcy5yZW1vdmUoZGF0YUl0ZW0pLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0SXRlbSh7IGRhdGFJdGVtIH0pIHtcbiAgICB0aGlzLnNlbGVjdGVkWzBdID0gZGF0YUl0ZW0uaWQudG9TdHJpbmcoKTtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbZGF0YUl0ZW0uaWRdLCB7XG4gICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxuICAgICAgZnJhZ21lbnQ6IHVybFNlcmlhbGl6ZSh0aGlzLmdyaWRTdGF0ZSksXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25BY3RpdmF0ZShjaGlsZDogeyBzYXZlZDogRXZlbnRFbWl0dGVyPE5hbWVkTW9kZWw+IH0pIHtcbiAgICBpZiAoY2hpbGQuc2F2ZWQpIHtcbiAgICAgIGNoaWxkLnNhdmVkLnN1YnNjcmliZSgoZGF0YTogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfSkgPT5cbiAgICAgICAgdGhpcy51cGRhdGVHcmlkKGRhdGEpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25EZWFjdGl2YXRlKGNoaWxkOiB7IHNhdmVkOiBFdmVudEVtaXR0ZXI8TmFtZWRNb2RlbD4gfSkge1xuICAgIGlmIChjaGlsZC5zYXZlZCkge1xuICAgICAgY2hpbGQuc2F2ZWQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGF0YVN0YXRlQ2hhbmdlKHN0YXRlOiBEYXRhU3RhdGVDaGFuZ2VFdmVudCkge1xuICAgIHRoaXMuZ3JpZFN0YXRlID0gc3RhdGU7XG4gICAgdGhpcy5ncmlkU3RhdGUuZmlsdGVyID0gdGhpcy5nZXRGaWx0ZXIoKTtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge1xuICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcbiAgICAgIGZyYWdtZW50OiB1cmxTZXJpYWxpemUodGhpcy5ncmlkU3RhdGUpLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uU2VhcmNoKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlYXJjaFRlcm0gPSB2YWx1ZTtcbiAgICB0aGlzLmdyaWRTdGF0ZS5za2lwID0gMDtcbiAgICB0aGlzLmdldEZpbHRlcmVkRGF0YSgpO1xuICB9XG5cbiAgcHVibGljIGdldEFsbERhdGEoKTogT2JzZXJ2YWJsZTxQYWdlPE5hbWVkTW9kZWwgJiBSZW1vdmFibGU+PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmdyaWRTdGF0ZSk7XG4gICAgZGVsZXRlIHN0YXRlLnNraXA7XG4gICAgZGVsZXRlIHN0YXRlLnRha2U7XG5cbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmdldFBhZ2Uoc3RhdGUpLnBpcGUoXG4gICAgICBtYXAoKHBhZ2VSZXN1bHQpID0+IHtcbiAgICAgICAgcGFnZVJlc3VsdC5kYXRhID0gcGFnZVJlc3VsdC5kYXRhLm1hcCh0aGlzLm1hcEl0ZW1Gbik7XG5cbiAgICAgICAgcmV0dXJuIHBhZ2VSZXN1bHQ7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldFJvd0NsYXNzKGNvbnRleHQ6IFJvd0NsYXNzQXJncyk6IE9iamVjdCB7XG4gICAgcmV0dXJuIHRoaXMucm93Q2xhc3MgJiYgY29udGV4dFxuICAgICAgPyB0aGlzLnJvd0NsYXNzKGNvbnRleHQuZGF0YUl0ZW0sIGNvbnRleHQuaW5kZXgpXG4gICAgICA6IHt9O1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEZpbHRlcmVkRGF0YSgpIHtcbiAgICB0aGlzLmdyaWRTdGF0ZS5maWx0ZXIgPSB0aGlzLmdldEZpbHRlcigpO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7XG4gICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxuICAgICAgZnJhZ21lbnQ6IHVybFNlcmlhbGl6ZSh0aGlzLmdyaWRTdGF0ZSksXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlR3JpZChkYXRhOiBOYW1lZE1vZGVsKSB7XG4gICAgY29uc3QgbmV3SXRlbSA9IHRoaXMubWFwSXRlbUZuKGRhdGEpO1xuICAgIGNvbnN0IGN1cnJlbnRQYWdlID0geyAuLi50aGlzLnBhZ2UudmFsdWUgfTtcbiAgICBjb25zdCBleGlzdHMgPSBjdXJyZW50UGFnZS5kYXRhLmZpbHRlcigoeCkgPT4geC5pZCA9PT0gZGF0YS5pZCk7XG4gICAgaWYgKGV4aXN0cy5sZW5ndGgpIHtcbiAgICAgIGN1cnJlbnRQYWdlLmRhdGFbY3VycmVudFBhZ2UuZGF0YS5pbmRleE9mKGV4aXN0c1swXSldID0gbmV3SXRlbTtcbiAgICAgIHRoaXMucGFnZS5uZXh0KGN1cnJlbnRQYWdlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGN1cnJlbnRQYWdlLnRvdGFsKys7XG4gICAgY3VycmVudFBhZ2UuZGF0YS5zcGxpY2UoMCwgMCwgZGF0YSk7XG4gICAgaWYgKGN1cnJlbnRQYWdlLmRhdGEubGVuZ3RoID4gdGhpcy5ncmlkU3RhdGUudGFrZSkge1xuICAgICAgY3VycmVudFBhZ2UuZGF0YS5zcGxpY2UodGhpcy5wYWdlLnZhbHVlLmRhdGEubGVuZ3RoIC0gMSwgMSk7XG4gICAgfVxuXG4gICAgdGhpcy5wYWdlLm5leHQoY3VycmVudFBhZ2UpO1xuICAgIHRoaXMuc2VsZWN0ZWRbMF0gPSBkYXRhLmlkLnRvU3RyaW5nKCk7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2RhdGEuaWRdLCB7XG4gICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxuICAgICAgcHJlc2VydmVGcmFnbWVudDogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXREYXRhKCkge1xuICAgIHRoaXMubG9hZGluZ3MrKztcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlXG4gICAgICAuZ2V0UGFnZSh0aGlzLmdyaWRTdGF0ZSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHBhZ2VSZXN1bHQpID0+IHtcbiAgICAgICAgICBwYWdlUmVzdWx0LmRhdGEgPSBwYWdlUmVzdWx0LmRhdGEubWFwKHRoaXMubWFwSXRlbUZuKTtcblxuICAgICAgICAgIHJldHVybiBwYWdlUmVzdWx0O1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHBhZ2UpID0+IHtcbiAgICAgICAgdGhpcy5wYWdlLm5leHQocGFnZSk7XG4gICAgICAgIHRoaXMubG9hZGluZ3MtLTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmUoZW50aXR5OiBJZGVudGlmaWVkTW9kZWwpIHtcbiAgICB0aGlzLmxvYWRpbmdzKys7XG4gICAgdGhpcy5zZXJ2aWNlXG4gICAgICAuZGVsZXRlKGVudGl0eS5pZClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQubGVuZ3RoICYmXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkW3RoaXMuc2VsZWN0ZWQubGVuZ3RoIC0gMV0gPT09IGVudGl0eS5pZC50b1N0cmluZygpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uLyddLCB7XG4gICAgICAgICAgICAgIHByZXNlcnZlRnJhZ21lbnQ6IHRydWUsXG4gICAgICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUuZmlyc3RDaGlsZCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZC5wb3AoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5sb2FkaW5ncy0tO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmdldERhdGEoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWx0ZXIoKTogQ29tcG9zaXRlRmlsdGVyRGVzY3JpcHRvciB7XG4gICAgY29uc3QgZmlsdGVyOiBDb21wb3NpdGVGaWx0ZXJEZXNjcmlwdG9yID0ge1xuICAgICAgbG9naWM6ICdhbmQnLFxuICAgICAgZmlsdGVyczogdGhpcy5zZWFyY2hUZXJtXG4gICAgICAgID8gW1xuICAgICAgICAgICAgeyBmaWVsZDogbmFtZUZpZWxkLCBvcGVyYXRvcjogJ2NvbnRhaW5zJywgdmFsdWU6IHRoaXMuc2VhcmNoVGVybSB9LFxuICAgICAgICAgICAgLi4udGhpcy5maWx0ZXJzLFxuICAgICAgICAgIF1cbiAgICAgICAgOiB0aGlzLmZpbHRlcnMsXG4gICAgfTtcblxuICAgIHJldHVybiBmaWx0ZXI7XG4gIH1cblxuICBwcml2YXRlIG9uRmlsdGVyQ2hhbmdlKCkge1xuICAgIGNvbnN0IGZpbHRlcjogYW55ID0gdGhpcy5ncmlkU3RhdGUuZmlsdGVyPy5maWx0ZXJzLmZpbmQoXG4gICAgICAoeDogRmlsdGVyRGVzY3JpcHRvcikgPT4geC5maWVsZCA9PT0gbmFtZUZpZWxkLFxuICAgICk7XG4gICAgdGhpcy5zZWFyY2hUZXJtID0gZmlsdGVyPy52YWx1ZTtcbiAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KHRoaXMuZ3JpZFN0YXRlLmZpbHRlcik7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlc3RvcmVHcmlkU3RhdGUocGFyYW1zOiBVUkxTZWFyY2hQYXJhbXMpIHtcbiAgICBjb25zdCBkZWZhdWx0R3JpZFN0YXRlOiBTdGF0ZSA9IHtcbiAgICAgIHNvcnQ6IHRoaXMuZGVmYXVsdFNvcnQgfHwgW3sgZmllbGQ6IG5hbWVGaWVsZCwgZGlyOiAnYXNjJyB9XSxcbiAgICAgIHNraXA6IDAsXG4gICAgICB0YWtlOiAxMCxcbiAgICAgIGZpbHRlcjogdGhpcy5nZXRGaWx0ZXIoKSxcbiAgICB9O1xuXG4gICAgY29uc3Qgc3RhdGUgPSB1cmxEZXNlcmlhbGl6ZShwYXJhbXMpO1xuICAgIHRoaXMuZ3JpZFN0YXRlID0gc3RhdGUuaGFzT3duUHJvcGVydHkoJ3Rha2UnKSA/IHN0YXRlIDogZGVmYXVsdEdyaWRTdGF0ZTtcbiAgICB0aGlzLmdyaWRTdGF0ZS5za2lwID0gK3RoaXMuZ3JpZFN0YXRlLnNraXA7XG4gICAgdGhpcy5ncmlkU3RhdGUudGFrZSA9ICt0aGlzLmdyaWRTdGF0ZS50YWtlO1xuICAgIHRoaXMub25GaWx0ZXJDaGFuZ2UoKTtcbiAgICB0aGlzLmdldERhdGEoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInJvd1wiPlxuICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cbiAgICA8aGVhZGVyIGNsYXNzPVwiaGVhZGVyLXBhZ2UtYmdcIj48L2hlYWRlcj5cbiAgICA8ZGl2IGNsYXNzPVwicGFuZWwgc2VhcmNoLXBhbmVsIGhlcm8tdW5pdFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1zZWxlY3Rpb24tZmllbGRcIj5cbiAgICAgICAgPGxhYmVsIGZvcj1cInNlYXJjaGlucHV0XCIgY2xhc3M9XCJ0aXRsZS1maWVsZFwiPnt7XG4gICAgICAgICAgXCJTZWFyY2hcIiB8IHRyYW5zbGF0ZVxuICAgICAgICB9fTwvbGFiZWw+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGtlbmRvVGV4dEJveFxuICAgICAgICAgIGNsYXNzPVwicXVpY2stZmlsdGVyIGlucHV0IGlucHV0LWZpZWxkXCJcbiAgICAgICAgICB0aXRsZT1cIlwiXG4gICAgICAgICAgaWQ9XCJzZWFyY2hpbnB1dFwiXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIGFwcERlYm91bmNlXG4gICAgICAgICAgKGRlYm91bmNlS2V5dXApPVwib25TZWFyY2goJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgICAgIFtuZ01vZGVsXT1cInNlYXJjaFRlcm1cIlxuICAgICAgICAgIFtkZWJvdW5jZVRpbWVdPVwiNjAwXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZS1saW5lXCI+PC9kaXY+XG5cbiAgICAgIDxrZW5kby1ncmlkXG4gICAgICAgIFtkYXRhXT1cInBhZ2UgfCBhc3luY1wiXG4gICAgICAgIFtwYWdlU2l6ZV09XCJncmlkU3RhdGUudGFrZVwiXG4gICAgICAgIFtza2lwXT1cImdyaWRTdGF0ZS5za2lwXCJcbiAgICAgICAgW3NvcnRdPVwiZ3JpZFN0YXRlLnNvcnRcIlxuICAgICAgICBbcGFnZWFibGVdPVwidHJ1ZVwiXG4gICAgICAgIFtzb3J0YWJsZV09XCJ0cnVlXCJcbiAgICAgICAgW3N0eWxlLm1heEhlaWdodC5weF09XCI0ODBcIlxuICAgICAgICAocmVtb3ZlKT1cInJlbW92ZUhhbmRsZXIoJGV2ZW50KVwiXG4gICAgICAgIChkYXRhU3RhdGVDaGFuZ2UpPVwiZGF0YVN0YXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5ncyA+IDBcIlxuICAgICAgICAoY2VsbENsaWNrKT1cInNlbGVjdEl0ZW0oJGV2ZW50KVwiXG4gICAgICAgIGN1bHR1cmVcbiAgICAgICAgY2xhc3M9XCJyb3dzLXBvaW50YWJsZVwiXG4gICAgICAgIGtlbmRvR3JpZFNlbGVjdEJ5PVwiaWRcIlxuICAgICAgICBbc2VsZWN0ZWRLZXlzXT1cInNlbGVjdGVkXCJcbiAgICAgICAgW3Jvd0NsYXNzXT1cImdldFJvd0NsYXNzXCJcbiAgICAgID5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGtlbmRvR3JpZFRvb2xiYXJUZW1wbGF0ZT5cbiAgICAgICAgICA8ZXhjZWwtZXhwb3J0LWJ1dHRvbj48L2V4Y2VsLWV4cG9ydC1idXR0b24+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxrZW5kby1ncmlkLWV4Y2VsXG4gICAgICAgICAgW2ZpbGVOYW1lXT1cImdlbmVyYXRlRGF0ZUJhc2VkRXhjZWxGaWxlTmFtZSgpXCJcbiAgICAgICAgICBbZmV0Y2hEYXRhXT1cImdldEFsbERhdGFcIlxuICAgICAgICA+PC9rZW5kby1ncmlkLWV4Y2VsPlxuICAgICAgICA8a2VuZG8tZ3JpZC1jb21tYW5kLWNvbHVtbiB3aWR0aD1cIjY1XCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIGtlbmRvR3JpZENlbGxUZW1wbGF0ZSBsZXQtZGF0YUl0ZW0+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwiIWRhdGFJdGVtLnN1cHByZXNzRGVsZXRpb25cIlxuICAgICAgICAgICAgICBrZW5kb0dyaWRSZW1vdmVDb21tYW5kXG4gICAgICAgICAgICAgIHJlcXVpcmVQZXJtaXNzaW9uXG4gICAgICAgICAgICAgIHBlcm1pc3Npb25UeXBlPVwiRGVsZXRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGVtIGNsYXNzPVwiay1pY29uIGdseXBoaWNvbiBnbHlwaGljb24tdHJhc2hcIj48L2VtPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9rZW5kby1ncmlkLWNvbW1hbmQtY29sdW1uPlxuICAgICAgICA8a2VuZG8tZ3JpZC1jb2x1bW5cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgZmllbGQgb2YgZ3JpZEZpZWxkc1wiXG4gICAgICAgICAgZmllbGQ9XCJ7eyBmaWVsZC5uYW1lIH19XCJcbiAgICAgICAgICB0aXRsZT1cInt7IGZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICBbc29ydGFibGVdPVwiZmllbGQuc29ydGFibGUgIT09IGZhbHNlXCJcbiAgICAgICAgPlxuICAgICAgICA8L2tlbmRvLWdyaWQtY29sdW1uPlxuICAgICAgICA8a2VuZG8tZ3JpZC1jb21tYW5kLWNvbHVtbiB3aWR0aD1cIjY1XCIgKm5nSWY9XCJjb21tYW5kcy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIGtlbmRvR3JpZENlbGxUZW1wbGF0ZSBsZXQtZGF0YUl0ZW0+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb21tYW5kIG9mIGNvbW1hbmRzXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbW1hbmQuaGFuZGxlcihkYXRhSXRlbSlcIlxuICAgICAgICAgICAgICB0aXRsZT1cInt7IGNvbW1hbmQudGl0bGUgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICBjbGFzcz1cImstYnV0dG9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGVtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb21tYW5kLmljb25DbGFzc1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ7eyBjb21tYW5kLmljb25DbGFzcyB9fVwiXG4gICAgICAgICAgICAgID48L2VtPlxuICAgICAgICAgICAgICB7eyBjb21tYW5kLm5hbWUgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwva2VuZG8tZ3JpZC1jb21tYW5kLWNvbHVtbj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGtlbmRvR3JpZE5vUmVjb3Jkc1RlbXBsYXRlPlxuICAgICAgICAgIHt7IFwiTWVzc2FnZXMuTm9SZWNvcmRzXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGtlbmRvUGFnZXJUZW1wbGF0ZT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZXJcIj5cbiAgICAgICAgICAgIDxrZW5kby1ncmlkLXNwYWNlcj48L2tlbmRvLWdyaWQtc3BhY2VyPlxuICAgICAgICAgICAgPGtlbmRvLXBhZ2VyLXByZXYtYnV0dG9ucz48L2tlbmRvLXBhZ2VyLXByZXYtYnV0dG9ucz5cbiAgICAgICAgICAgIDxrZW5kby1wYWdlci1udW1lcmljLWJ1dHRvbnNcbiAgICAgICAgICAgICAgW2J1dHRvbkNvdW50XT1cInBhZ2VCdXR0b25zQ291bnRcIlxuICAgICAgICAgICAgPjwva2VuZG8tcGFnZXItbnVtZXJpYy1idXR0b25zPlxuICAgICAgICAgICAgPGtlbmRvLXBhZ2VyLW5leHQtYnV0dG9ucz48L2tlbmRvLXBhZ2VyLW5leHQtYnV0dG9ucz5cbiAgICAgICAgICAgIDxrZW5kby1wYWdlci1pbmZvPjwva2VuZG8tcGFnZXItaW5mbz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwva2VuZG8tZ3JpZD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxyb3V0ZXItb3V0bGV0XG4gICAgKGFjdGl2YXRlKT1cIm9uQWN0aXZhdGUoJGV2ZW50KVwiXG4gICAgKGRlYWN0aXZhdGUpPVwib25EZWFjdGl2YXRlKCRldmVudClcIlxuICA+PC9yb3V0ZXItb3V0bGV0PlxuPC9kaXY+XG48Y29uZmlybS1kaWFsb2cgI2NvbmZpcm1EaWFsb2c+PC9jb25maXJtLWRpYWxvZz5cbiJdfQ==
|
|
232
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2VuZG8vc3JjL2xpYi93aWRnZXRzL2VudGl0eS1saXN0L2VudGl0eS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlbmRvL3NyYy9saWIvd2lkZ2V0cy9lbnRpdHktbGlzdC9lbnRpdHktbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQWF2QixPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVFyQyxPQUFPLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7Ozs7QUFFL0QsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDO0FBT3pCLE1BQU0sT0FBTyxtQkFBbUI7SUFpQzlCLFlBQ1UsU0FBMkIsRUFDM0IsS0FBcUIsRUFDckIsTUFBYztRQUZkLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUF0QmpCLGNBQVMsR0FBa0QsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUN6RSxJQUFJLENBQUM7UUFDRSxxQkFBZ0IsR0FBVyxDQUFDLENBQUM7UUFFL0IsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBNkIsQ0FBQztRQUc3RCxjQUFTLEdBQVUsRUFBRSxDQUFDO1FBQ3RCLFNBQUksR0FBc0MsSUFBSSxlQUFlLENBRWxFLElBQUksQ0FBQyxDQUFDO1FBQ0QsYUFBUSxHQUFHLENBQUMsQ0FBQztRQUVi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QU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDO1FBQ3pFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFDM0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztRQUMzQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7OEdBMVBVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLHNiQ3pDaEMsMnVIQTBHQTs7MkZEakVhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxhQUFhO3VJQU1oQixPQUFPO3NCQURiLEtBQUs7Z0JBR0MsT0FBTztzQkFEYixLQUFLO2dCQUdDLE1BQU07c0JBRFosS0FBSztnQkFHQyxRQUFRO3NCQURkLEtBQUs7Z0JBR0MsUUFBUTtzQkFEZCxLQUFLO2dCQUdDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBR0MsU0FBUztzQkFEZixLQUFLO2dCQUdHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFQyxZQUFZO3NCQURsQixNQUFNO2dCQUdBLE1BQU07c0JBRFosU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVtb3ZhYmxlIH0gZnJvbSAnLi4vLi4vYW5ndWxhci9tb2RlbHMvcmVtb3ZhYmxlLmludGVyZmFjZSc7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUGFyYW1zLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgRGF0YVN0YXRlQ2hhbmdlRXZlbnQsXG4gIFJvd0NsYXNzQXJncyxcbn0gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItZ3JpZCc7XG5pbXBvcnQge1xuICBDb21wb3NpdGVGaWx0ZXJEZXNjcmlwdG9yLFxuICBGaWx0ZXJEZXNjcmlwdG9yLFxuICBTb3J0RGVzY3JpcHRvcixcbiAgU3RhdGUsXG59IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1kYXRhLXF1ZXJ5JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSWRlbnRpZmllZE1vZGVsIH0gZnJvbSAnLi4vLi4vYW5ndWxhci9tb2RlbHMvSWRlbnRpZmllZE1vZGVsJztcbmltcG9ydCB7IE5hbWVkTW9kZWwgfSBmcm9tICcuLi8uLi9hbmd1bGFyL21vZGVscy9OYW1lZE1vZGVsJztcbmltcG9ydCB7IFBhZ2UgfSBmcm9tICcuLi8uLi9tb2RlbHMvUGFnZSc7XG5pbXBvcnQgeyBJRW50aXR5U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL0lFbnRpdHlTZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJy4vQ29tbWFuZCc7XG5pbXBvcnQgeyBGaWVsZCB9IGZyb20gJy4vRmllbGQnO1xuaW1wb3J0IHsgdXJsRGVzZXJpYWxpemUsIHVybFNlcmlhbGl6ZSB9IGZyb20gJy4vVXJsU2VyaWFsaXplcic7XG5cbmNvbnN0IG5hbWVGaWVsZCA9ICduYW1lJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW50aXR5LWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vZW50aXR5LWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lbnRpdHktbGlzdC5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEVudGl0eUxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXJ2aWNlOiBJRW50aXR5U2VydmljZTxOYW1lZE1vZGVsPjtcbiAgQElucHV0KClcbiAgcHVibGljIGZpbHRlcnM6IChGaWx0ZXJEZXNjcmlwdG9yIHwgQ29tcG9zaXRlRmlsdGVyRGVzY3JpcHRvcilbXTtcbiAgQElucHV0KClcbiAgcHVibGljIGZpZWxkcz86IEZpZWxkW107XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjb21tYW5kcz86IENvbW1hbmRbXTtcbiAgQElucHV0KClcbiAgcHVibGljIHJvd0NsYXNzPzogKGRhdGFJdGVtOiBOYW1lZE1vZGVsLCBpbmRleDogbnVtYmVyKSA9PiB7fTtcbiAgQElucHV0KClcbiAgcHVibGljIGRlZmF1bHRTb3J0PzogU29ydERlc2NyaXB0b3JbXTtcbiAgQElucHV0KClcbiAgcHVibGljIG1hcEl0ZW1Gbj86IChpdGVtOiBOYW1lZE1vZGVsKSA9PiBOYW1lZE1vZGVsICYgUmVtb3ZhYmxlID0gKGl0ZW0pID0+XG4gICAgaXRlbTtcbiAgQElucHV0KCkgcGFnZUJ1dHRvbnNDb3VudDogbnVtYmVyID0gNTtcbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBmaWx0ZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPENvbXBvc2l0ZUZpbHRlckRlc2NyaXB0b3I+KCk7XG4gIEBWaWV3Q2hpbGQoJ2NvbmZpcm1EaWFsb2cnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwdWJsaWMgZGlhbG9nOiBDb25maXJtRGlhbG9nQ29tcG9uZW50O1xuICBwdWJsaWMgZ3JpZFN0YXRlOiBTdGF0ZSA9IHt9O1xuICBwdWJsaWMgcGFnZTogQmVoYXZpb3JTdWJqZWN0PFBhZ2U8TmFtZWRNb2RlbD4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxcbiAgICBQYWdlPE5hbWVkTW9kZWw+XG4gID4obnVsbCk7XG4gIHB1YmxpYyBsb2FkaW5ncyA9IDA7XG4gIHB1YmxpYyBzZWFyY2hUZXJtOiBzdHJpbmc7XG4gIHB1YmxpYyBzZWxlY3RlZDogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIGdyaWRGaWVsZHM6IEZpZWxkW10gPSBbXTtcbiAgcHJpdmF0ZSBkZWZhdWx0RmllbGRzOiBGaWVsZFtdID0gW1xuICAgIHsgbmFtZTogJ25hbWUnLCBsYWJlbDogJ05hbWUnLCBzb3J0YWJsZTogdHJ1ZSwgcG9zaXRpb246IDAgfSxcbiAgXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICApIHtcbiAgICB0aGlzLmdldEFsbERhdGEgPSB0aGlzLmdldEFsbERhdGEuYmluZCh0aGlzKTtcbiAgICB0aGlzLmdldFJvd0NsYXNzID0gdGhpcy5nZXRSb3dDbGFzcy5iaW5kKHRoaXMpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmICghY2hhbmdlcy5maWx0ZXJzIHx8IGNoYW5nZXMuZmlsdGVycy5maXJzdENoYW5nZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZ2V0RmlsdGVyZWREYXRhKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmdyaWRGaWVsZHMgPSAodGhpcy5maWVsZHMgfHwgW10pXG4gICAgICAuY29uY2F0KHRoaXMuZGVmYXVsdEZpZWxkcylcbiAgICAgIC5zb3J0KChsZWZ0LCByaWdodCkgPT4gKGxlZnQucG9zaXRpb24gfHwgMCkgLSAocmlnaHQucG9zaXRpb24gfHwgMCkpO1xuICAgIHRoaXMuZmlsdGVycyA9IHRoaXMuZmlsdGVycyA/IHRoaXMuZmlsdGVycyA6IFtdO1xuICAgIHRoaXMuY29tbWFuZHMgPSB0aGlzLmNvbW1hbmRzID8gdGhpcy5jb21tYW5kcyA6IFtdO1xuICAgIHRoaXMucm91dGUuZnJhZ21lbnQuc3Vic2NyaWJlKGFzeW5jIChmcmFnbWVudDogc3RyaW5nKSA9PiB7XG4gICAgICBhd2FpdCB0aGlzLnJlc3RvcmVHcmlkU3RhdGUobmV3IFVSTFNlYXJjaFBhcmFtcyhmcmFnbWVudCkpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5yb3V0ZS5maXJzdENoaWxkLnBhcmFtcy5zdWJzY3JpYmUoKHBhcmFtczogUGFyYW1zKSA9PiB7XG4gICAgICBpZiAocGFyYW1zLmlkKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRbMF0gPSBwYXJhbXMuaWQudG9TdHJpbmcoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQucG9wKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2VuZXJhdGVEYXRlQmFzZWRFeGNlbEZpbGVOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBFeHBvcnQtJHtuZXcgRGF0ZSgpLnRvTG9jYWxlU3RyaW5nKCl9Lnhsc3hgO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZUhhbmRsZXIoeyBkYXRhSXRlbSB9KSB7XG4gICAgdGhpcy5kaWFsb2cub3BlbihcbiAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ0NvbmZpcm1hdGlvbi5EZWxldGUnKSArXG4gICAgICAgICc6IFwiJyArXG4gICAgICAgIGRhdGFJdGVtLm5hbWUgK1xuICAgICAgICAnXCI/JyxcbiAgICAgICgpID0+IHRoaXMucmVtb3ZlKGRhdGFJdGVtKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdEl0ZW0oeyBkYXRhSXRlbSB9KSB7XG4gICAgdGhpcy5zZWxlY3RlZFswXSA9IGRhdGFJdGVtLmlkLnRvU3RyaW5nKCk7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2RhdGFJdGVtLmlkXSwge1xuICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcbiAgICAgIGZyYWdtZW50OiB1cmxTZXJpYWxpemUodGhpcy5ncmlkU3RhdGUpLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uQWN0aXZhdGUoY2hpbGQ6IHsgc2F2ZWQ6IEV2ZW50RW1pdHRlcjxOYW1lZE1vZGVsPiB9KSB7XG4gICAgaWYgKGNoaWxkLnNhdmVkKSB7XG4gICAgICBjaGlsZC5zYXZlZC5zdWJzY3JpYmUoKGRhdGE6IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0pID0+XG4gICAgICAgIHRoaXMudXBkYXRlR3JpZChkYXRhKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uRGVhY3RpdmF0ZShjaGlsZDogeyBzYXZlZDogRXZlbnRFbWl0dGVyPE5hbWVkTW9kZWw+IH0pIHtcbiAgICBpZiAoY2hpbGQuc2F2ZWQpIHtcbiAgICAgIGNoaWxkLnNhdmVkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRhdGFTdGF0ZUNoYW5nZShzdGF0ZTogRGF0YVN0YXRlQ2hhbmdlRXZlbnQpIHtcbiAgICB0aGlzLmdyaWRTdGF0ZSA9IHN0YXRlO1xuICAgIHRoaXMuZ3JpZFN0YXRlLmZpbHRlciA9IHRoaXMuZ2V0RmlsdGVyKCk7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXG4gICAgICBmcmFnbWVudDogdXJsU2VyaWFsaXplKHRoaXMuZ3JpZFN0YXRlKSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvblNlYXJjaCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zZWFyY2hUZXJtID0gdmFsdWU7XG4gICAgdGhpcy5ncmlkU3RhdGUuc2tpcCA9IDA7XG4gICAgdGhpcy5nZXRGaWx0ZXJlZERhdGEoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBbGxEYXRhKCk6IE9ic2VydmFibGU8UGFnZTxOYW1lZE1vZGVsICYgUmVtb3ZhYmxlPj4ge1xuICAgIGNvbnN0IHN0YXRlID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5ncmlkU3RhdGUpO1xuICAgIGRlbGV0ZSBzdGF0ZS5za2lwO1xuICAgIGRlbGV0ZSBzdGF0ZS50YWtlO1xuXG4gICAgcmV0dXJuIHRoaXMuc2VydmljZS5nZXRQYWdlKHN0YXRlKS5waXBlKFxuICAgICAgbWFwKChwYWdlUmVzdWx0KSA9PiB7XG4gICAgICAgIHBhZ2VSZXN1bHQuZGF0YSA9IHBhZ2VSZXN1bHQuZGF0YS5tYXAodGhpcy5tYXBJdGVtRm4pO1xuXG4gICAgICAgIHJldHVybiBwYWdlUmVzdWx0O1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3dDbGFzcyhjb250ZXh0OiBSb3dDbGFzc0FyZ3MpOiBPYmplY3Qge1xuICAgIHJldHVybiB0aGlzLnJvd0NsYXNzICYmIGNvbnRleHRcbiAgICAgID8gdGhpcy5yb3dDbGFzcyhjb250ZXh0LmRhdGFJdGVtLCBjb250ZXh0LmluZGV4KVxuICAgICAgOiB7fTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRGaWx0ZXJlZERhdGEoKSB7XG4gICAgdGhpcy5ncmlkU3RhdGUuZmlsdGVyID0gdGhpcy5nZXRGaWx0ZXIoKTtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge1xuICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcbiAgICAgIGZyYWdtZW50OiB1cmxTZXJpYWxpemUodGhpcy5ncmlkU3RhdGUpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZUdyaWQoZGF0YTogTmFtZWRNb2RlbCkge1xuICAgIGNvbnN0IG5ld0l0ZW0gPSB0aGlzLm1hcEl0ZW1GbihkYXRhKTtcbiAgICBjb25zdCBjdXJyZW50UGFnZSA9IHsgLi4udGhpcy5wYWdlLnZhbHVlIH07XG4gICAgY29uc3QgZXhpc3RzID0gY3VycmVudFBhZ2UuZGF0YS5maWx0ZXIoKHgpID0+IHguaWQgPT09IGRhdGEuaWQpO1xuICAgIGlmIChleGlzdHMubGVuZ3RoKSB7XG4gICAgICBjdXJyZW50UGFnZS5kYXRhW2N1cnJlbnRQYWdlLmRhdGEuaW5kZXhPZihleGlzdHNbMF0pXSA9IG5ld0l0ZW07XG4gICAgICB0aGlzLnBhZ2UubmV4dChjdXJyZW50UGFnZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjdXJyZW50UGFnZS50b3RhbCsrO1xuICAgIGN1cnJlbnRQYWdlLmRhdGEuc3BsaWNlKDAsIDAsIGRhdGEpO1xuICAgIGlmIChjdXJyZW50UGFnZS5kYXRhLmxlbmd0aCA+IHRoaXMuZ3JpZFN0YXRlLnRha2UpIHtcbiAgICAgIGN1cnJlbnRQYWdlLmRhdGEuc3BsaWNlKHRoaXMucGFnZS52YWx1ZS5kYXRhLmxlbmd0aCAtIDEsIDEpO1xuICAgIH1cblxuICAgIHRoaXMucGFnZS5uZXh0KGN1cnJlbnRQYWdlKTtcbiAgICB0aGlzLnNlbGVjdGVkWzBdID0gZGF0YS5pZC50b1N0cmluZygpO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtkYXRhLmlkXSwge1xuICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcbiAgICAgIHByZXNlcnZlRnJhZ21lbnQ6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RGF0YSgpIHtcbiAgICB0aGlzLmxvYWRpbmdzKys7XG4gICAgcmV0dXJuIHRoaXMuc2VydmljZVxuICAgICAgLmdldFBhZ2UodGhpcy5ncmlkU3RhdGUpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChwYWdlUmVzdWx0KSA9PiB7XG4gICAgICAgICAgcGFnZVJlc3VsdC5kYXRhID0gcGFnZVJlc3VsdC5kYXRhLm1hcCh0aGlzLm1hcEl0ZW1Gbik7XG5cbiAgICAgICAgICByZXR1cm4gcGFnZVJlc3VsdDtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChwYWdlKSA9PiB7XG4gICAgICAgIHRoaXMucGFnZS5uZXh0KHBhZ2UpO1xuICAgICAgICB0aGlzLmxvYWRpbmdzLS07XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlKGVudGl0eTogSWRlbnRpZmllZE1vZGVsKSB7XG4gICAgdGhpcy5sb2FkaW5ncysrO1xuICAgIHRoaXMuc2VydmljZVxuICAgICAgLmRlbGV0ZShlbnRpdHkuaWQpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkLmxlbmd0aCAmJlxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFt0aGlzLnNlbGVjdGVkLmxlbmd0aCAtIDFdID09PSBlbnRpdHkuaWQudG9TdHJpbmcoKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLi8nXSwge1xuICAgICAgICAgICAgICBwcmVzZXJ2ZUZyYWdtZW50OiB0cnVlLFxuICAgICAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLmZpcnN0Q2hpbGQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQucG9wKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMubG9hZGluZ3MtLTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5nZXREYXRhKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsdGVyKCk6IENvbXBvc2l0ZUZpbHRlckRlc2NyaXB0b3Ige1xuICAgIGNvbnN0IGZpbHRlcjogQ29tcG9zaXRlRmlsdGVyRGVzY3JpcHRvciA9IHtcbiAgICAgIGxvZ2ljOiAnYW5kJyxcbiAgICAgIGZpbHRlcnM6IHRoaXMuc2VhcmNoVGVybVxuICAgICAgICA/IFtcbiAgICAgICAgICAgIHsgZmllbGQ6IG5hbWVGaWVsZCwgb3BlcmF0b3I6ICdjb250YWlucycsIHZhbHVlOiB0aGlzLnNlYXJjaFRlcm0gfSxcbiAgICAgICAgICAgIC4uLnRoaXMuZmlsdGVycyxcbiAgICAgICAgICBdXG4gICAgICAgIDogdGhpcy5maWx0ZXJzLFxuICAgIH07XG5cbiAgICByZXR1cm4gZmlsdGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkZpbHRlckNoYW5nZSgpIHtcbiAgICBjb25zdCBmaWx0ZXI6IGFueSA9IHRoaXMuZ3JpZFN0YXRlLmZpbHRlcj8uZmlsdGVycy5maW5kKFxuICAgICAgKHg6IEZpbHRlckRlc2NyaXB0b3IpID0+IHguZmllbGQgPT09IG5hbWVGaWVsZCxcbiAgICApO1xuICAgIHRoaXMuc2VhcmNoVGVybSA9IGZpbHRlcj8udmFsdWU7XG4gICAgdGhpcy5maWx0ZXJDaGFuZ2UuZW1pdCh0aGlzLmdyaWRTdGF0ZS5maWx0ZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXN0b3JlR3JpZFN0YXRlKHBhcmFtczogVVJMU2VhcmNoUGFyYW1zKSB7XG4gICAgY29uc3QgZGVmYXVsdEdyaWRTdGF0ZTogU3RhdGUgPSB7XG4gICAgICBzb3J0OiB0aGlzLmRlZmF1bHRTb3J0IHx8IFt7IGZpZWxkOiBuYW1lRmllbGQsIGRpcjogJ2FzYycgfV0sXG4gICAgICBza2lwOiAwLFxuICAgICAgdGFrZTogMTAsXG4gICAgICBmaWx0ZXI6IHRoaXMuZ2V0RmlsdGVyKCksXG4gICAgfTtcblxuICAgIGNvbnN0IHN0YXRlID0gdXJsRGVzZXJpYWxpemUocGFyYW1zKTtcbiAgICB0aGlzLmdyaWRTdGF0ZSA9IHN0YXRlLmhhc093blByb3BlcnR5KCd0YWtlJykgPyBzdGF0ZSA6IGRlZmF1bHRHcmlkU3RhdGU7XG4gICAgdGhpcy5ncmlkU3RhdGUuc2tpcCA9ICt0aGlzLmdyaWRTdGF0ZS5za2lwO1xuICAgIHRoaXMuZ3JpZFN0YXRlLnRha2UgPSArdGhpcy5ncmlkU3RhdGUudGFrZTtcbiAgICB0aGlzLm9uRmlsdGVyQ2hhbmdlKCk7XG4gICAgdGhpcy5nZXREYXRhKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XG4gICAgPGhlYWRlciBjbGFzcz1cImhlYWRlci1wYWdlLWJnXCI+PC9oZWFkZXI+XG4gICAgPGRpdiBjbGFzcz1cInBhbmVsIHNlYXJjaC1wYW5lbCBoZXJvLXVuaXRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItc2VsZWN0aW9uLWZpZWxkXCI+XG4gICAgICAgIDxsYWJlbCBmb3I9XCJzZWFyY2hpbnB1dFwiIGNsYXNzPVwidGl0bGUtZmllbGRcIj57e1xuICAgICAgICAgIFwiU2VhcmNoXCIgfCB0cmFuc2xhdGVcbiAgICAgICAgfX08L2xhYmVsPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBrZW5kb1RleHRCb3hcbiAgICAgICAgICBjbGFzcz1cInF1aWNrLWZpbHRlciBpbnB1dCBpbnB1dC1maWVsZFwiXG4gICAgICAgICAgdGl0bGU9XCJcIlxuICAgICAgICAgIGlkPVwic2VhcmNoaW5wdXRcIlxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBhcHBEZWJvdW5jZVxuICAgICAgICAgIChkZWJvdW5jZUtleXVwKT1cIm9uU2VhcmNoKCRldmVudC50YXJnZXQudmFsdWUpXCJcbiAgICAgICAgICBbbmdNb2RlbF09XCJzZWFyY2hUZXJtXCJcbiAgICAgICAgICBbZGVib3VuY2VUaW1lXT1cIjYwMFwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGUtbGluZVwiPjwvZGl2PlxuXG4gICAgICA8a2VuZG8tZ3JpZFxuICAgICAgICBbZGF0YV09XCJwYWdlIHwgYXN5bmNcIlxuICAgICAgICBbcGFnZVNpemVdPVwiZ3JpZFN0YXRlLnRha2VcIlxuICAgICAgICBbc2tpcF09XCJncmlkU3RhdGUuc2tpcFwiXG4gICAgICAgIFtzb3J0XT1cImdyaWRTdGF0ZS5zb3J0XCJcbiAgICAgICAgW3BhZ2VhYmxlXT1cInRydWVcIlxuICAgICAgICBbc29ydGFibGVdPVwidHJ1ZVwiXG4gICAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwiNDgwXCJcbiAgICAgICAgKHJlbW92ZSk9XCJyZW1vdmVIYW5kbGVyKCRldmVudClcIlxuICAgICAgICAoZGF0YVN0YXRlQ2hhbmdlKT1cImRhdGFTdGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZ3MgPiAwXCJcbiAgICAgICAgKGNlbGxDbGljayk9XCJzZWxlY3RJdGVtKCRldmVudClcIlxuICAgICAgICBjdWx0dXJlXG4gICAgICAgIGNsYXNzPVwicm93cy1wb2ludGFibGVcIlxuICAgICAgICBrZW5kb0dyaWRTZWxlY3RCeT1cImlkXCJcbiAgICAgICAgW3NlbGVjdGVkS2V5c109XCJzZWxlY3RlZFwiXG4gICAgICAgIFtyb3dDbGFzc109XCJnZXRSb3dDbGFzc1wiXG4gICAgICA+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBrZW5kb0dyaWRUb29sYmFyVGVtcGxhdGU+XG4gICAgICAgICAgPGV4Y2VsLWV4cG9ydC1idXR0b24+PC9leGNlbC1leHBvcnQtYnV0dG9uPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8a2VuZG8tZ3JpZC1leGNlbFxuICAgICAgICAgIFtmaWxlTmFtZV09XCJnZW5lcmF0ZURhdGVCYXNlZEV4Y2VsRmlsZU5hbWUoKVwiXG4gICAgICAgICAgW2ZldGNoRGF0YV09XCJnZXRBbGxEYXRhXCJcbiAgICAgICAgPjwva2VuZG8tZ3JpZC1leGNlbD5cbiAgICAgICAgPGtlbmRvLWdyaWQtY29tbWFuZC1jb2x1bW4gd2lkdGg9XCI2NVwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBrZW5kb0dyaWRDZWxsVGVtcGxhdGUgbGV0LWRhdGFJdGVtPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAqbmdJZj1cIiFkYXRhSXRlbS5zdXBwcmVzc0RlbGV0aW9uXCJcbiAgICAgICAgICAgICAga2VuZG9HcmlkUmVtb3ZlQ29tbWFuZFxuICAgICAgICAgICAgICByZXF1aXJlUGVybWlzc2lvblxuICAgICAgICAgICAgICBwZXJtaXNzaW9uVHlwZT1cIkRlbGV0ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxlbSBjbGFzcz1cImstaWNvbiBnbHlwaGljb24gZ2x5cGhpY29uLXRyYXNoXCI+PC9lbT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwva2VuZG8tZ3JpZC1jb21tYW5kLWNvbHVtbj5cbiAgICAgICAgPGtlbmRvLWdyaWQtY29sdW1uXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGdyaWRGaWVsZHNcIlxuICAgICAgICAgIGZpZWxkPVwie3sgZmllbGQubmFtZSB9fVwiXG4gICAgICAgICAgdGl0bGU9XCJ7eyBmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgW3NvcnRhYmxlXT1cImZpZWxkLnNvcnRhYmxlICE9PSBmYWxzZVwiXG4gICAgICAgID5cbiAgICAgICAgPC9rZW5kby1ncmlkLWNvbHVtbj5cbiAgICAgICAgPGtlbmRvLWdyaWQtY29tbWFuZC1jb2x1bW4gd2lkdGg9XCI2NVwiICpuZ0lmPVwiY29tbWFuZHMubGVuZ3RoID4gMFwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBrZW5kb0dyaWRDZWxsVGVtcGxhdGUgbGV0LWRhdGFJdGVtPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29tbWFuZCBvZiBjb21tYW5kc1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjb21tYW5kLmhhbmRsZXIoZGF0YUl0ZW0pXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJ7eyBjb21tYW5kLnRpdGxlIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJrLWJ1dHRvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY29tbWFuZC5pY29uQ2xhc3NcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwie3sgY29tbWFuZC5pY29uQ2xhc3MgfX1cIlxuICAgICAgICAgICAgICA+PC9lbT5cbiAgICAgICAgICAgICAge3sgY29tbWFuZC5uYW1lIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2tlbmRvLWdyaWQtY29tbWFuZC1jb2x1bW4+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBrZW5kb0dyaWROb1JlY29yZHNUZW1wbGF0ZT5cbiAgICAgICAgICB7eyBcIk1lc3NhZ2VzLk5vUmVjb3Jkc1wiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBrZW5kb1BhZ2VyVGVtcGxhdGU+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2VyXCI+XG4gICAgICAgICAgICA8a2VuZG8tZ3JpZC1zcGFjZXI+PC9rZW5kby1ncmlkLXNwYWNlcj5cbiAgICAgICAgICAgIDxrZW5kby1wYWdlci1wcmV2LWJ1dHRvbnM+PC9rZW5kby1wYWdlci1wcmV2LWJ1dHRvbnM+XG4gICAgICAgICAgICA8a2VuZG8tcGFnZXItbnVtZXJpYy1idXR0b25zXG4gICAgICAgICAgICAgIFtidXR0b25Db3VudF09XCJwYWdlQnV0dG9uc0NvdW50XCJcbiAgICAgICAgICAgID48L2tlbmRvLXBhZ2VyLW51bWVyaWMtYnV0dG9ucz5cbiAgICAgICAgICAgIDxrZW5kby1wYWdlci1uZXh0LWJ1dHRvbnM+PC9rZW5kby1wYWdlci1uZXh0LWJ1dHRvbnM+XG4gICAgICAgICAgICA8a2VuZG8tcGFnZXItaW5mbz48L2tlbmRvLXBhZ2VyLWluZm8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2tlbmRvLWdyaWQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8cm91dGVyLW91dGxldFxuICAgIChhY3RpdmF0ZSk9XCJvbkFjdGl2YXRlKCRldmVudClcIlxuICAgIChkZWFjdGl2YXRlKT1cIm9uRGVhY3RpdmF0ZSgkZXZlbnQpXCJcbiAgPjwvcm91dGVyLW91dGxldD5cbjwvZGl2PlxuPGNvbmZpcm0tZGlhbG9nICNjb25maXJtRGlhbG9nPjwvY29uZmlybS1kaWFsb2c+XG4iXX0=
|
|
@@ -10,6 +10,7 @@ import { FormsModule } from '@angular/forms';
|
|
|
10
10
|
import { DebounceModule } from '../../angular/forms/directives/debounce';
|
|
11
11
|
import { ExcelExportButtonModule } from '../excel-export-button';
|
|
12
12
|
import { CreateNewModule } from '../entity-edit/create-new';
|
|
13
|
+
import { RequirePermissionModule } from '../../directives/requirePermission';
|
|
13
14
|
import * as i0 from "@angular/core";
|
|
14
15
|
export class EntityListModule {
|
|
15
16
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EntityListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
@@ -25,7 +26,8 @@ export class EntityListModule {
|
|
|
25
26
|
DebounceModule,
|
|
26
27
|
ExcelExportButtonModule,
|
|
27
28
|
RouterModule,
|
|
28
|
-
CreateNewModule
|
|
29
|
+
CreateNewModule,
|
|
30
|
+
RequirePermissionModule], exports: [EntityListComponent] }); }
|
|
29
31
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EntityListModule, imports: [CommonModule,
|
|
30
32
|
InputsModule,
|
|
31
33
|
TranslateModule,
|
|
@@ -38,7 +40,8 @@ export class EntityListModule {
|
|
|
38
40
|
DebounceModule,
|
|
39
41
|
ExcelExportButtonModule,
|
|
40
42
|
RouterModule,
|
|
41
|
-
CreateNewModule
|
|
43
|
+
CreateNewModule,
|
|
44
|
+
RequirePermissionModule] }); }
|
|
42
45
|
}
|
|
43
46
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EntityListModule, decorators: [{
|
|
44
47
|
type: NgModule,
|
|
@@ -59,7 +62,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
59
62
|
ExcelExportButtonModule,
|
|
60
63
|
RouterModule,
|
|
61
64
|
CreateNewModule,
|
|
65
|
+
RequirePermissionModule,
|
|
62
66
|
],
|
|
63
67
|
}]
|
|
64
68
|
}] });
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWxpc3QubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2VuZG8vc3JjL2xpYi93aWRnZXRzL2VudGl0eS1saXN0L2VudGl0eS1saXN0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsV0FBVyxFQUNYLFVBQVUsRUFDVixXQUFXLEdBQ1osTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7QUFzQjdFLE1BQU0sT0FBTyxnQkFBZ0I7OEdBQWhCLGdCQUFnQjsrR0FBaEIsZ0JBQWdCLGlCQW5CWixtQkFBbUIsYUFHaEMsWUFBWTtZQUNaLFlBQVk7WUFDWixlQUFlO1lBQ2YsbUJBQW1CO1lBQ25CLFlBQVk7WUFDWixXQUFXO1lBQ1gsVUFBVTtZQUNWLFdBQVc7WUFDWCxXQUFXO1lBQ1gsY0FBYztZQUNkLHVCQUF1QjtZQUN2QixZQUFZO1lBQ1osZUFBZTtZQUNmLHVCQUF1QixhQWZmLG1CQUFtQjsrR0FrQmxCLGdCQUFnQixZQWhCekIsWUFBWTtZQUNaLFlBQVk7WUFDWixlQUFlO1lBQ2YsbUJBQW1CO1lBQ25CLFlBQVk7WUFDWixXQUFXO1lBQ1gsVUFBVTtZQUNWLFdBQVc7WUFDWCxXQUFXO1lBQ1gsY0FBYztZQUNkLHVCQUF1QjtZQUN2QixZQUFZO1lBQ1osZUFBZTtZQUNmLHVCQUF1Qjs7MkZBR2QsZ0JBQWdCO2tCQXBCNUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztvQkFDbkMsT0FBTyxFQUFFLENBQUMsbUJBQW1CLENBQUM7b0JBQzlCLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxVQUFVO3dCQUNWLFdBQVc7d0JBQ1gsV0FBVzt3QkFDWCxjQUFjO3dCQUNkLHVCQUF1Qjt3QkFDdkIsWUFBWTt3QkFDWixlQUFlO3dCQUNmLHVCQUF1QjtxQkFDeEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRW50aXR5TGlzdENvbXBvbmVudCB9IGZyb20gJy4vZW50aXR5LWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IElucHV0c01vZHVsZSB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1hbmd1bGFyLWlucHV0cyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb25maXJtRGlhbG9nTW9kdWxlIH0gZnJvbSAnLi4vY29uZmlybS1kaWFsb2cnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIEV4Y2VsTW9kdWxlLFxuICBHcmlkTW9kdWxlLFxuICBQYWdlck1vZHVsZSxcbn0gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItZ3JpZCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERlYm91bmNlTW9kdWxlIH0gZnJvbSAnLi4vLi4vYW5ndWxhci9mb3Jtcy9kaXJlY3RpdmVzL2RlYm91bmNlJztcbmltcG9ydCB7IEV4Y2VsRXhwb3J0QnV0dG9uTW9kdWxlIH0gZnJvbSAnLi4vZXhjZWwtZXhwb3J0LWJ1dHRvbic7XG5pbXBvcnQgeyBDcmVhdGVOZXdNb2R1bGUgfSBmcm9tICcuLi9lbnRpdHktZWRpdC9jcmVhdGUtbmV3JztcbmltcG9ydCB7IFJlcXVpcmVQZXJtaXNzaW9uTW9kdWxlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9yZXF1aXJlUGVybWlzc2lvbic7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0VudGl0eUxpc3RDb21wb25lbnRdLFxuICBleHBvcnRzOiBbRW50aXR5TGlzdENvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSW5wdXRzTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBDb25maXJtRGlhbG9nTW9kdWxlLFxuICAgIFJvdXRlck1vZHVsZSxcbiAgICBQYWdlck1vZHVsZSxcbiAgICBHcmlkTW9kdWxlLFxuICAgIEV4Y2VsTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIERlYm91bmNlTW9kdWxlLFxuICAgIEV4Y2VsRXhwb3J0QnV0dG9uTW9kdWxlLFxuICAgIFJvdXRlck1vZHVsZSxcbiAgICBDcmVhdGVOZXdNb2R1bGUsXG4gICAgUmVxdWlyZVBlcm1pc3Npb25Nb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEVudGl0eUxpc3RNb2R1bGUge31cbiJdfQ==
|
|
@@ -26,7 +26,7 @@ import * as i1$3 from '@angular/forms';
|
|
|
26
26
|
import { UntypedFormControl, Validators, ControlContainer, FormGroupDirective, ReactiveFormsModule, FormsModule, UntypedFormGroup } from '@angular/forms';
|
|
27
27
|
import * as i1$4 from '@angular/router';
|
|
28
28
|
import { NavigationEnd, RouterModule } from '@angular/router';
|
|
29
|
-
import { Subject, of, BehaviorSubject, throwError, from, tap as tap$1, map as map$1 } from 'rxjs';
|
|
29
|
+
import { Subject, of, BehaviorSubject, throwError, from, tap as tap$1, map as map$1, takeUntil } from 'rxjs';
|
|
30
30
|
import { debounceTime, map, mergeMap, catchError, tap, filter, take, finalize } from 'rxjs/operators';
|
|
31
31
|
import { ButtonsModule } from '@progress/kendo-angular-buttons';
|
|
32
32
|
import XmlBeautify from 'xml-beautify';
|
|
@@ -2698,7 +2698,7 @@ class EntityListComponent {
|
|
|
2698
2698
|
this.getData();
|
|
2699
2699
|
}
|
|
2700
2700
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EntityListComponent, deps: [{ token: i2.TranslateService }, { token: i1$4.ActivatedRoute }, { token: i1$4.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2701
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: EntityListComponent, selector: "entity-list", inputs: { service: "service", filters: "filters", fields: "fields", commands: "commands", rowClass: "rowClass", defaultSort: "defaultSort", mapItemFn: "mapItemFn", pageButtonsCount: "pageButtonsCount" }, outputs: { filterChange: "filterChange" }, viewQueries: [{ propertyName: "dialog", first: true, predicate: ["confirmDialog"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-md-4\">\n <header class=\"header-page-bg\"></header>\n <div class=\"panel search-panel hero-unit\">\n <div class=\"header-selection-field\">\n <label for=\"searchinput\" class=\"title-field\">{{\n \"Search\" | translate\n }}</label>\n <input\n kendoTextBox\n class=\"quick-filter input input-field\"\n title=\"\"\n id=\"searchinput\"\n type=\"text\"\n appDebounce\n (debounceKeyup)=\"onSearch($event.target.value)\"\n [ngModel]=\"searchTerm\"\n [debounceTime]=\"600\"\n />\n </div>\n <ng-content></ng-content>\n <div class=\"divide-line\"></div>\n\n <kendo-grid\n [data]=\"page | async\"\n [pageSize]=\"gridState.take\"\n [skip]=\"gridState.skip\"\n [sort]=\"gridState.sort\"\n [pageable]=\"true\"\n [sortable]=\"true\"\n [style.maxHeight.px]=\"480\"\n (remove)=\"removeHandler($event)\"\n (dataStateChange)=\"dataStateChange($event)\"\n [loading]=\"loadings > 0\"\n (cellClick)=\"selectItem($event)\"\n culture\n class=\"rows-pointable\"\n kendoGridSelectBy=\"id\"\n [selectedKeys]=\"selected\"\n [rowClass]=\"getRowClass\"\n >\n <ng-template kendoGridToolbarTemplate>\n <excel-export-button></excel-export-button>\n </ng-template>\n <kendo-grid-excel\n [fileName]=\"generateDateBasedExcelFileName()\"\n [fetchData]=\"getAllData\"\n ></kendo-grid-excel>\n <kendo-grid-command-column width=\"65\">\n <ng-template kendoGridCellTemplate let-dataItem>\n <button\n *ngIf=\"!dataItem.suppressDeletion\"\n kendoGridRemoveCommand\n requirePermission\n permissionType=\"Delete\"\n >\n <em class=\"k-icon glyphicon glyphicon-trash\"></em>\n </button>\n </ng-template>\n </kendo-grid-command-column>\n <kendo-grid-column\n *ngFor=\"let field of gridFields\"\n field=\"{{ field.name }}\"\n title=\"{{ field.label | translate }}\"\n [sortable]=\"field.sortable !== false\"\n >\n </kendo-grid-column>\n <kendo-grid-command-column width=\"65\" *ngIf=\"commands.length > 0\">\n <ng-template kendoGridCellTemplate let-dataItem>\n <button\n *ngFor=\"let command of commands\"\n (click)=\"command.handler(dataItem)\"\n title=\"{{ command.title | translate }}\"\n class=\"k-button\"\n >\n <em\n *ngIf=\"command.iconClass\"\n class=\"{{ command.iconClass }}\"\n ></em>\n {{ command.name | translate }}\n </button>\n </ng-template>\n </kendo-grid-command-column>\n <ng-template kendoGridNoRecordsTemplate>\n {{ \"Messages.NoRecords\" | translate }}\n </ng-template>\n <ng-template kendoPagerTemplate>\n <div class=\"pager\">\n <kendo-grid-spacer></kendo-grid-spacer>\n <kendo-pager-prev-buttons></kendo-pager-prev-buttons>\n <kendo-pager-numeric-buttons\n [buttonCount]=\"pageButtonsCount\"\n ></kendo-pager-numeric-buttons>\n <kendo-pager-next-buttons></kendo-pager-next-buttons>\n <kendo-pager-info></kendo-pager-info>\n </div>\n </ng-template>\n </kendo-grid>\n </div>\n </div>\n <router-outlet\n (activate)=\"onActivate($event)\"\n (deactivate)=\"onDeactivate($event)\"\n ></router-outlet>\n</div>\n<confirm-dialog #confirmDialog></confirm-dialog>\n", styles: [".pager{display:flex;justify-content:center;align-items:center;width:100%}\n"], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.TextBoxDirective, selector: "input[kendoTextBox]", inputs: ["value"] }, { kind: "component", type: ConfirmDialogComponent, selector: "confirm-dialog" }, { kind: "directive", type: i1$4.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i6.PagerPrevButtonsComponent, selector: "kendo-pager-prev-buttons" }, { kind: "component", type: i6.PagerNextButtonsComponent, selector: "kendo-pager-next-buttons" }, { kind: "component", type: i6.PagerNumericButtonsComponent, selector: "kendo-pager-numeric-buttons", inputs: ["buttonCount"] }, { kind: "component", type: i6.PagerInfoComponent, selector: "kendo-pager-info" }, { kind: "directive", type: i6.PagerTemplateDirective, selector: "[kendoPagerTemplate]" }, { kind: "component", type: i6.GridComponent, selector: "kendo-grid", inputs: ["data", "pageSize", "height", "rowHeight", "detailRowHeight", "skip", "scrollable", "selectable", "sort", "size", "trackBy", "filter", "group", "virtualColumns", "filterable", "sortable", "pageable", "groupable", "rowReorderable", "navigable", "navigatable", "autoSize", "rowClass", "rowSticky", "rowSelected", "cellSelected", "resizable", "reorderable", "loading", "columnMenu", "hideHeader", "isDetailExpanded", "isGroupExpanded"], outputs: ["filterChange", "pageChange", "groupChange", "sortChange", "selectionChange", "rowReorder", "dataStateChange", "groupExpand", "groupCollapse", "detailExpand", "detailCollapse", "edit", "cancel", "save", "remove", "add", "cellClose", "cellClick", "pdfExport", "excelExport", "columnResize", "columnReorder", "columnVisibilityChange", "columnLockedChange", "columnStickyChange", "scrollBottom", "contentScroll"], exportAs: ["kendoGrid"] }, { kind: "directive", type: i6.ToolbarTemplateDirective, selector: "[kendoGridToolbarTemplate]", inputs: ["position"] }, { kind: "component", type: i6.GridSpacerComponent, selector: "kendo-grid-spacer, kendo-pager-spacer", inputs: ["width"] }, { kind: "directive", type: i6.SelectionDirective, selector: "[kendoGridSelectBy]" }, { kind: "directive", type: i6.GridToolbarFocusableDirective, selector: " [kendoGridToolbarFocusable], [kendoGridAddCommand], [kendoGridCancelCommand], [kendoGridEditCommand], [kendoGridRemoveCommand], [kendoGridSaveCommand], [kendoGridExcelCommand], [kendoGridPDFCommand] " }, { kind: "component", type: i6.ColumnComponent, selector: "kendo-grid-column", inputs: ["field", "format", "sortable", "groupable", "editor", "filter", "filterable", "editable"] }, { kind: "directive", type: i6.FocusableDirective, selector: "[kendoGridFocusable], [kendoGridEditCommand], [kendoGridRemoveCommand], [kendoGridSaveCommand], [kendoGridCancelCommand], [kendoGridSelectionCheckbox] ", inputs: ["kendoGridFocusable"] }, { kind: "component", type: i6.CommandColumnComponent, selector: "kendo-grid-command-column" }, { kind: "directive", type: i6.CellTemplateDirective, selector: "[kendoGridCellTemplate]" }, { kind: "directive", type: i6.NoRecordsTemplateDirective, selector: "[kendoGridNoRecordsTemplate]" }, { kind: "component", type: i6.RemoveCommandDirective, selector: "[kendoGridRemoveCommand]" }, { kind: "component", type: i6.ExcelComponent, selector: "kendo-grid-excel", inputs: ["fileName", "filterable", "creator", "date", "forceProxy", "proxyURL", "fetchData", "paddingCellOptions", "headerPaddingCellOptions", "collapsible"] }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: DebounceDirective, selector: "[appDebounce]", inputs: ["debounceTime"], outputs: ["debounceKeyup"] }, { kind: "component", type: ExcelExportButtonComponent, selector: "excel-export-button" }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
|
|
2701
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: EntityListComponent, selector: "entity-list", inputs: { service: "service", filters: "filters", fields: "fields", commands: "commands", rowClass: "rowClass", defaultSort: "defaultSort", mapItemFn: "mapItemFn", pageButtonsCount: "pageButtonsCount" }, outputs: { filterChange: "filterChange" }, viewQueries: [{ propertyName: "dialog", first: true, predicate: ["confirmDialog"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-md-4\">\n <header class=\"header-page-bg\"></header>\n <div class=\"panel search-panel hero-unit\">\n <div class=\"header-selection-field\">\n <label for=\"searchinput\" class=\"title-field\">{{\n \"Search\" | translate\n }}</label>\n <input\n kendoTextBox\n class=\"quick-filter input input-field\"\n title=\"\"\n id=\"searchinput\"\n type=\"text\"\n appDebounce\n (debounceKeyup)=\"onSearch($event.target.value)\"\n [ngModel]=\"searchTerm\"\n [debounceTime]=\"600\"\n />\n </div>\n <ng-content></ng-content>\n <div class=\"divide-line\"></div>\n\n <kendo-grid\n [data]=\"page | async\"\n [pageSize]=\"gridState.take\"\n [skip]=\"gridState.skip\"\n [sort]=\"gridState.sort\"\n [pageable]=\"true\"\n [sortable]=\"true\"\n [style.maxHeight.px]=\"480\"\n (remove)=\"removeHandler($event)\"\n (dataStateChange)=\"dataStateChange($event)\"\n [loading]=\"loadings > 0\"\n (cellClick)=\"selectItem($event)\"\n culture\n class=\"rows-pointable\"\n kendoGridSelectBy=\"id\"\n [selectedKeys]=\"selected\"\n [rowClass]=\"getRowClass\"\n >\n <ng-template kendoGridToolbarTemplate>\n <excel-export-button></excel-export-button>\n </ng-template>\n <kendo-grid-excel\n [fileName]=\"generateDateBasedExcelFileName()\"\n [fetchData]=\"getAllData\"\n ></kendo-grid-excel>\n <kendo-grid-command-column width=\"65\">\n <ng-template kendoGridCellTemplate let-dataItem>\n <button\n *ngIf=\"!dataItem.suppressDeletion\"\n kendoGridRemoveCommand\n requirePermission\n permissionType=\"Delete\"\n >\n <em class=\"k-icon glyphicon glyphicon-trash\"></em>\n </button>\n </ng-template>\n </kendo-grid-command-column>\n <kendo-grid-column\n *ngFor=\"let field of gridFields\"\n field=\"{{ field.name }}\"\n title=\"{{ field.label | translate }}\"\n [sortable]=\"field.sortable !== false\"\n >\n </kendo-grid-column>\n <kendo-grid-command-column width=\"65\" *ngIf=\"commands.length > 0\">\n <ng-template kendoGridCellTemplate let-dataItem>\n <button\n *ngFor=\"let command of commands\"\n (click)=\"command.handler(dataItem)\"\n title=\"{{ command.title | translate }}\"\n class=\"k-button\"\n >\n <em\n *ngIf=\"command.iconClass\"\n class=\"{{ command.iconClass }}\"\n ></em>\n {{ command.name | translate }}\n </button>\n </ng-template>\n </kendo-grid-command-column>\n <ng-template kendoGridNoRecordsTemplate>\n {{ \"Messages.NoRecords\" | translate }}\n </ng-template>\n <ng-template kendoPagerTemplate>\n <div class=\"pager\">\n <kendo-grid-spacer></kendo-grid-spacer>\n <kendo-pager-prev-buttons></kendo-pager-prev-buttons>\n <kendo-pager-numeric-buttons\n [buttonCount]=\"pageButtonsCount\"\n ></kendo-pager-numeric-buttons>\n <kendo-pager-next-buttons></kendo-pager-next-buttons>\n <kendo-pager-info></kendo-pager-info>\n </div>\n </ng-template>\n </kendo-grid>\n </div>\n </div>\n <router-outlet\n (activate)=\"onActivate($event)\"\n (deactivate)=\"onDeactivate($event)\"\n ></router-outlet>\n</div>\n<confirm-dialog #confirmDialog></confirm-dialog>\n", styles: [".pager{display:flex;justify-content:center;align-items:center;width:100%}\n"], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.TextBoxDirective, selector: "input[kendoTextBox]", inputs: ["value"] }, { kind: "component", type: ConfirmDialogComponent, selector: "confirm-dialog" }, { kind: "directive", type: i1$4.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i6.PagerPrevButtonsComponent, selector: "kendo-pager-prev-buttons" }, { kind: "component", type: i6.PagerNextButtonsComponent, selector: "kendo-pager-next-buttons" }, { kind: "component", type: i6.PagerNumericButtonsComponent, selector: "kendo-pager-numeric-buttons", inputs: ["buttonCount"] }, { kind: "component", type: i6.PagerInfoComponent, selector: "kendo-pager-info" }, { kind: "directive", type: i6.PagerTemplateDirective, selector: "[kendoPagerTemplate]" }, { kind: "component", type: i6.GridComponent, selector: "kendo-grid", inputs: ["data", "pageSize", "height", "rowHeight", "detailRowHeight", "skip", "scrollable", "selectable", "sort", "size", "trackBy", "filter", "group", "virtualColumns", "filterable", "sortable", "pageable", "groupable", "rowReorderable", "navigable", "navigatable", "autoSize", "rowClass", "rowSticky", "rowSelected", "cellSelected", "resizable", "reorderable", "loading", "columnMenu", "hideHeader", "isDetailExpanded", "isGroupExpanded"], outputs: ["filterChange", "pageChange", "groupChange", "sortChange", "selectionChange", "rowReorder", "dataStateChange", "groupExpand", "groupCollapse", "detailExpand", "detailCollapse", "edit", "cancel", "save", "remove", "add", "cellClose", "cellClick", "pdfExport", "excelExport", "columnResize", "columnReorder", "columnVisibilityChange", "columnLockedChange", "columnStickyChange", "scrollBottom", "contentScroll"], exportAs: ["kendoGrid"] }, { kind: "directive", type: i6.ToolbarTemplateDirective, selector: "[kendoGridToolbarTemplate]", inputs: ["position"] }, { kind: "component", type: i6.GridSpacerComponent, selector: "kendo-grid-spacer, kendo-pager-spacer", inputs: ["width"] }, { kind: "directive", type: i6.SelectionDirective, selector: "[kendoGridSelectBy]" }, { kind: "directive", type: i6.GridToolbarFocusableDirective, selector: " [kendoGridToolbarFocusable], [kendoGridAddCommand], [kendoGridCancelCommand], [kendoGridEditCommand], [kendoGridRemoveCommand], [kendoGridSaveCommand], [kendoGridExcelCommand], [kendoGridPDFCommand] " }, { kind: "component", type: i6.ColumnComponent, selector: "kendo-grid-column", inputs: ["field", "format", "sortable", "groupable", "editor", "filter", "filterable", "editable"] }, { kind: "directive", type: i6.FocusableDirective, selector: "[kendoGridFocusable], [kendoGridEditCommand], [kendoGridRemoveCommand], [kendoGridSaveCommand], [kendoGridCancelCommand], [kendoGridSelectionCheckbox] ", inputs: ["kendoGridFocusable"] }, { kind: "component", type: i6.CommandColumnComponent, selector: "kendo-grid-command-column" }, { kind: "directive", type: i6.CellTemplateDirective, selector: "[kendoGridCellTemplate]" }, { kind: "directive", type: i6.NoRecordsTemplateDirective, selector: "[kendoGridNoRecordsTemplate]" }, { kind: "component", type: i6.RemoveCommandDirective, selector: "[kendoGridRemoveCommand]" }, { kind: "component", type: i6.ExcelComponent, selector: "kendo-grid-excel", inputs: ["fileName", "filterable", "creator", "date", "forceProxy", "proxyURL", "fetchData", "paddingCellOptions", "headerPaddingCellOptions", "collapsible"] }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: DebounceDirective, selector: "[appDebounce]", inputs: ["debounceTime"], outputs: ["debounceKeyup"] }, { kind: "component", type: ExcelExportButtonComponent, selector: "excel-export-button" }, { kind: "directive", type: RequirePermissionDirective, selector: "[requirePermission]", inputs: ["permissionType", "permissionCategory"] }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
|
|
2702
2702
|
}
|
|
2703
2703
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EntityListComponent, decorators: [{
|
|
2704
2704
|
type: Component,
|
|
@@ -3022,7 +3022,8 @@ class EntityListModule {
|
|
|
3022
3022
|
DebounceModule,
|
|
3023
3023
|
ExcelExportButtonModule,
|
|
3024
3024
|
RouterModule,
|
|
3025
|
-
CreateNewModule
|
|
3025
|
+
CreateNewModule,
|
|
3026
|
+
RequirePermissionModule], exports: [EntityListComponent] }); }
|
|
3026
3027
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EntityListModule, imports: [CommonModule,
|
|
3027
3028
|
InputsModule,
|
|
3028
3029
|
TranslateModule,
|
|
@@ -3035,7 +3036,8 @@ class EntityListModule {
|
|
|
3035
3036
|
DebounceModule,
|
|
3036
3037
|
ExcelExportButtonModule,
|
|
3037
3038
|
RouterModule,
|
|
3038
|
-
CreateNewModule
|
|
3039
|
+
CreateNewModule,
|
|
3040
|
+
RequirePermissionModule] }); }
|
|
3039
3041
|
}
|
|
3040
3042
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EntityListModule, decorators: [{
|
|
3041
3043
|
type: NgModule,
|
|
@@ -3056,6 +3058,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
3056
3058
|
ExcelExportButtonModule,
|
|
3057
3059
|
RouterModule,
|
|
3058
3060
|
CreateNewModule,
|
|
3061
|
+
RequirePermissionModule,
|
|
3059
3062
|
],
|
|
3060
3063
|
}]
|
|
3061
3064
|
}] });
|
|
@@ -3353,24 +3356,34 @@ class FieldMultiSelectComponent extends FieldComponent {
|
|
|
3353
3356
|
this.singleMode = false;
|
|
3354
3357
|
this.autoClose = false;
|
|
3355
3358
|
this.changed = new EventEmitter();
|
|
3359
|
+
this.destroy$ = new Subject();
|
|
3356
3360
|
this.textField = this.textField ?? 'name';
|
|
3357
3361
|
this.valueField = this.valueField ?? 'id';
|
|
3358
3362
|
}
|
|
3363
|
+
ngOnInit() {
|
|
3364
|
+
super.ngOnInit();
|
|
3365
|
+
this.setData();
|
|
3366
|
+
}
|
|
3359
3367
|
ngOnChanges() {
|
|
3360
3368
|
super.ngOnChanges();
|
|
3369
|
+
this.setData();
|
|
3370
|
+
}
|
|
3371
|
+
ngOnDestroy() {
|
|
3372
|
+
this.destroy$.next();
|
|
3373
|
+
this.destroy$.complete();
|
|
3374
|
+
}
|
|
3375
|
+
setData() {
|
|
3361
3376
|
if (this.data) {
|
|
3362
|
-
|
|
3377
|
+
let dataSubject = new BehaviorSubject(this.data);
|
|
3378
|
+
this.data$ = dataSubject.asObservable();
|
|
3363
3379
|
}
|
|
3364
3380
|
else {
|
|
3365
|
-
this.
|
|
3366
|
-
|
|
3367
|
-
this.control.setValue(this.control.value.filter((x) =>
|
|
3368
|
-
});
|
|
3381
|
+
this.data$ = this.getData().pipe(tap$1((page) => {
|
|
3382
|
+
let data = page.data;
|
|
3383
|
+
this.control.setValue(this.control.value.filter((x) => data.some((d) => d.id === x)));
|
|
3384
|
+
}), map$1((page) => page.data), takeUntil(this.destroy$));
|
|
3369
3385
|
}
|
|
3370
3386
|
}
|
|
3371
|
-
ngOnDestroy() {
|
|
3372
|
-
this.getDataSubscription?.unsubscribe();
|
|
3373
|
-
}
|
|
3374
3387
|
onPopupOpen(event) {
|
|
3375
3388
|
if (!this.singleMode) {
|
|
3376
3389
|
return;
|
|
@@ -3383,11 +3396,6 @@ class FieldMultiSelectComponent extends FieldComponent {
|
|
|
3383
3396
|
getData() {
|
|
3384
3397
|
return this.service.getPage(this.filter ? { filter: this.filter } : {});
|
|
3385
3398
|
}
|
|
3386
|
-
updateData(data) {
|
|
3387
|
-
this.data = data;
|
|
3388
|
-
this.dataSubject = new BehaviorSubject(data);
|
|
3389
|
-
this.data$ = this.dataSubject.asObservable();
|
|
3390
|
-
}
|
|
3391
3399
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: FieldMultiSelectComponent, deps: [{ token: i1$3.FormGroupDirective }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3392
3400
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: FieldMultiSelectComponent, selector: "field-multiselect", inputs: { service: "service", rebind: "rebind", filter: "filter", textField: "textField", valueField: "valueField", data: "data", singleMode: "singleMode", autoClose: "autoClose" }, outputs: { changed: "changed" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"form-group\">\n <label class=\"col-md-3 control-label\" [for]=\"'_' + fieldName\">{{\n labelKey | translate\n }}</label>\n <div *ngIf=\"control\" class=\"col-md-9\">\n <kendo-multiselect\n [id]=\"'_' + fieldName\"\n [formControl]=\"control\"\n [data]=\"data$ | async\"\n [autoClose]=\"autoClose\"\n [textField]=\"textField\"\n [valueField]=\"valueField\"\n [valuePrimitive]=\"true\"\n (open)=\"onPopupOpen($event)\"\n (valueChange)=\"onValueChange($event)\"\n ></kendo-multiselect>\n\n <div *ngIf=\"control.invalid && control.touched\" class=\"bg-danger\">\n <span *ngIf=\"control.errors['required']\">\n {{ \"Required\" | translate : { param0: labelKey | translate } }}\n </span>\n <span *ngIf=\"control.errors['serverErrorMsg']\">\n {{ control.errors[\"serverErrorMsg\"] }}\n </span>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MultiSelectComponent, selector: "kendo-multiselect", inputs: ["showStickyHeader", "focusableId", "autoClose", "loading", "data", "value", "valueField", "textField", "tabindex", "tabIndex", "size", "rounded", "fillMode", "placeholder", "adaptiveMode", "title", "subtitle", "disabled", "itemDisabled", "checkboxes", "readonly", "filterable", "virtual", "popupSettings", "listHeight", "valuePrimitive", "clearButton", "tagMapper", "allowCustom", "valueNormalizer"], outputs: ["filterChange", "valueChange", "open", "opened", "close", "closed", "focus", "blur", "inputFocus", "inputBlur", "removeTag"], exportAs: ["kendoMultiSelect"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }], viewProviders: [
|
|
3393
3401
|
{
|