@indigina/kendo 1.2.75 → 1.2.77
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 +33 -12
- package/fesm2022/indigina-kendo.mjs +28 -8
- package/fesm2022/indigina-kendo.mjs.map +1 -1
- package/lib/widgets/entity-edit/field-multiselect/field-multiselect.component.d.ts +10 -5
- package/package.json +1 -1
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import { ControlContainer, FormGroupDirective } from '@angular/forms';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
|
|
2
|
+
import { ControlContainer, FormGroupDirective, } from '@angular/forms';
|
|
3
3
|
import { FieldComponent } from '../../../angular/forms/widgets/field/field.component';
|
|
4
|
+
import { BehaviorSubject, map, Subject, takeUntil, tap, } from 'rxjs';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "@angular/forms";
|
|
6
7
|
import * as i2 from "@progress/kendo-angular-dropdowns";
|
|
7
|
-
import * as i3 from "@
|
|
8
|
-
import * as i4 from "@
|
|
8
|
+
import * as i3 from "@angular/common";
|
|
9
|
+
import * as i4 from "@ngx-translate/core";
|
|
9
10
|
export class FieldMultiSelectComponent extends FieldComponent {
|
|
10
11
|
get control() {
|
|
11
12
|
return this.parent.form.get(this.fieldName);
|
|
@@ -17,15 +18,33 @@ export class FieldMultiSelectComponent extends FieldComponent {
|
|
|
17
18
|
this.singleMode = false;
|
|
18
19
|
this.autoClose = false;
|
|
19
20
|
this.changed = new EventEmitter();
|
|
20
|
-
this.
|
|
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
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
30
|
+
super.ngOnChanges();
|
|
31
|
+
this.setData();
|
|
32
|
+
}
|
|
33
|
+
ngOnDestroy() {
|
|
34
|
+
this.destroy$.next();
|
|
35
|
+
this.destroy$.complete();
|
|
36
|
+
}
|
|
37
|
+
setData() {
|
|
38
|
+
if (this.data) {
|
|
39
|
+
let dataSubject = new BehaviorSubject(this.data);
|
|
40
|
+
this.data$ = dataSubject.asObservable();
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
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$));
|
|
47
|
+
}
|
|
29
48
|
}
|
|
30
49
|
onPopupOpen(event) {
|
|
31
50
|
if (!this.singleMode) {
|
|
@@ -40,7 +59,7 @@ export class FieldMultiSelectComponent extends FieldComponent {
|
|
|
40
59
|
return this.service.getPage(this.filter ? { filter: this.filter } : {});
|
|
41
60
|
}
|
|
42
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 }); }
|
|
43
|
-
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", 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\"
|
|
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: [
|
|
44
63
|
{
|
|
45
64
|
provide: ControlContainer,
|
|
46
65
|
useExisting: FormGroupDirective,
|
|
@@ -54,7 +73,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
54
73
|
provide: ControlContainer,
|
|
55
74
|
useExisting: FormGroupDirective,
|
|
56
75
|
},
|
|
57
|
-
], template: "<div class=\"form-group\">\n <label class=\"col-md-3 control-label\"
|
|
76
|
+
], 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" }]
|
|
58
77
|
}], ctorParameters: () => [{ type: i1.FormGroupDirective }, { type: i0.ElementRef }], propDecorators: { service: [{
|
|
59
78
|
type: Input
|
|
60
79
|
}], rebind: [{
|
|
@@ -65,6 +84,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
65
84
|
type: Input
|
|
66
85
|
}], valueField: [{
|
|
67
86
|
type: Input
|
|
87
|
+
}], data: [{
|
|
88
|
+
type: Input
|
|
68
89
|
}], singleMode: [{
|
|
69
90
|
type: Input
|
|
70
91
|
}], autoClose: [{
|
|
@@ -72,4 +93,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
72
93
|
}], changed: [{
|
|
73
94
|
type: Output
|
|
74
95
|
}] } });
|
|
75
|
-
//# 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==
|
|
@@ -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';
|
|
@@ -3353,15 +3353,33 @@ class FieldMultiSelectComponent extends FieldComponent {
|
|
|
3353
3353
|
this.singleMode = false;
|
|
3354
3354
|
this.autoClose = false;
|
|
3355
3355
|
this.changed = new EventEmitter();
|
|
3356
|
-
this.
|
|
3356
|
+
this.destroy$ = new Subject();
|
|
3357
3357
|
this.textField = this.textField ?? 'name';
|
|
3358
3358
|
this.valueField = this.valueField ?? 'id';
|
|
3359
3359
|
}
|
|
3360
|
+
ngOnInit() {
|
|
3361
|
+
super.ngOnInit();
|
|
3362
|
+
this.setData();
|
|
3363
|
+
}
|
|
3360
3364
|
ngOnChanges() {
|
|
3361
|
-
|
|
3362
|
-
|
|
3363
|
-
|
|
3364
|
-
|
|
3365
|
+
super.ngOnChanges();
|
|
3366
|
+
this.setData();
|
|
3367
|
+
}
|
|
3368
|
+
ngOnDestroy() {
|
|
3369
|
+
this.destroy$.next();
|
|
3370
|
+
this.destroy$.complete();
|
|
3371
|
+
}
|
|
3372
|
+
setData() {
|
|
3373
|
+
if (this.data) {
|
|
3374
|
+
let dataSubject = new BehaviorSubject(this.data);
|
|
3375
|
+
this.data$ = dataSubject.asObservable();
|
|
3376
|
+
}
|
|
3377
|
+
else {
|
|
3378
|
+
this.data$ = this.getData().pipe(tap$1((page) => {
|
|
3379
|
+
let data = page.data;
|
|
3380
|
+
this.control.setValue(this.control.value.filter((x) => data.some((d) => d.id === x)));
|
|
3381
|
+
}), map$1((page) => page.data), takeUntil(this.destroy$));
|
|
3382
|
+
}
|
|
3365
3383
|
}
|
|
3366
3384
|
onPopupOpen(event) {
|
|
3367
3385
|
if (!this.singleMode) {
|
|
@@ -3376,7 +3394,7 @@ class FieldMultiSelectComponent extends FieldComponent {
|
|
|
3376
3394
|
return this.service.getPage(this.filter ? { filter: this.filter } : {});
|
|
3377
3395
|
}
|
|
3378
3396
|
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 }); }
|
|
3379
|
-
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", 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\"
|
|
3397
|
+
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: [
|
|
3380
3398
|
{
|
|
3381
3399
|
provide: ControlContainer,
|
|
3382
3400
|
useExisting: FormGroupDirective,
|
|
@@ -3390,7 +3408,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
3390
3408
|
provide: ControlContainer,
|
|
3391
3409
|
useExisting: FormGroupDirective,
|
|
3392
3410
|
},
|
|
3393
|
-
], template: "<div class=\"form-group\">\n <label class=\"col-md-3 control-label\"
|
|
3411
|
+
], 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" }]
|
|
3394
3412
|
}], ctorParameters: () => [{ type: i1$3.FormGroupDirective }, { type: i0.ElementRef }], propDecorators: { service: [{
|
|
3395
3413
|
type: Input
|
|
3396
3414
|
}], rebind: [{
|
|
@@ -3401,6 +3419,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
3401
3419
|
type: Input
|
|
3402
3420
|
}], valueField: [{
|
|
3403
3421
|
type: Input
|
|
3422
|
+
}], data: [{
|
|
3423
|
+
type: Input
|
|
3404
3424
|
}], singleMode: [{
|
|
3405
3425
|
type: Input
|
|
3406
3426
|
}], autoClose: [{
|