@indigina/kendo 1.2.75 → 1.2.76

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.
@@ -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 } 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 "@ngx-translate/core";
8
- import * as i4 from "@angular/common";
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,23 @@ export class FieldMultiSelectComponent extends FieldComponent {
17
18
  this.singleMode = false;
18
19
  this.autoClose = false;
19
20
  this.changed = new EventEmitter();
20
- this.data = [];
21
21
  this.textField = this.textField ?? 'name';
22
22
  this.valueField = this.valueField ?? 'id';
23
23
  }
24
24
  ngOnChanges() {
25
- this.getData().subscribe((data) => {
26
- this.data = data.data;
27
- this.control.setValue(this.control.value.filter((x) => this.data.filter((d) => d.id === x).length));
28
- });
25
+ super.ngOnChanges();
26
+ if (this.data) {
27
+ this.updateData(this.data);
28
+ }
29
+ else {
30
+ this.getDataSubscription = this.getData().subscribe((data) => {
31
+ this.updateData(data.data);
32
+ this.control.setValue(this.control.value.filter((x) => this.data.some((d) => d.id === x)));
33
+ });
34
+ }
35
+ }
36
+ ngOnDestroy() {
37
+ this.getDataSubscription?.unsubscribe();
29
38
  }
30
39
  onPopupOpen(event) {
31
40
  if (!this.singleMode) {
@@ -39,8 +48,13 @@ export class FieldMultiSelectComponent extends FieldComponent {
39
48
  getData() {
40
49
  return this.service.getPage(this.filter ? { filter: this.filter } : {});
41
50
  }
51
+ updateData(data) {
52
+ this.data = data;
53
+ this.dataSubject = new BehaviorSubject(data);
54
+ this.data$ = this.dataSubject.asObservable();
55
+ }
42
56
  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\"\n [translate]=\"labelKey\"\n [for]=\"'_' + fieldName\"\n ></label>\n <div *ngIf=\"control\" class=\"col-md-9\">\n <kendo-multiselect\n [id]=\"'_' + fieldName\"\n [formControl]=\"control\"\n [data]=\"data\"\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.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], viewProviders: [
57
+ 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
58
  {
45
59
  provide: ControlContainer,
46
60
  useExisting: FormGroupDirective,
@@ -54,7 +68,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
54
68
  provide: ControlContainer,
55
69
  useExisting: FormGroupDirective,
56
70
  },
57
- ], template: "<div class=\"form-group\">\n <label class=\"col-md-3 control-label\"\n [translate]=\"labelKey\"\n [for]=\"'_' + fieldName\"\n ></label>\n <div *ngIf=\"control\" class=\"col-md-9\">\n <kendo-multiselect\n [id]=\"'_' + fieldName\"\n [formControl]=\"control\"\n [data]=\"data\"\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" }]
71
+ ], 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
72
  }], ctorParameters: () => [{ type: i1.FormGroupDirective }, { type: i0.ElementRef }], propDecorators: { service: [{
59
73
  type: Input
60
74
  }], rebind: [{
@@ -65,6 +79,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
65
79
  type: Input
66
80
  }], valueField: [{
67
81
  type: Input
82
+ }], data: [{
83
+ type: Input
68
84
  }], singleMode: [{
69
85
  type: Input
70
86
  }], autoClose: [{
@@ -72,4 +88,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
72
88
  }], changed: [{
73
89
  type: Output
74
90
  }] } });
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtbXVsdGlzZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2VuZG8vc3JjL2xpYi93aWRnZXRzL2VudGl0eS1lZGl0L2ZpZWxkLW11bHRpc2VsZWN0L2ZpZWxkLW11bHRpc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlbmRvL3NyYy9saWIvd2lkZ2V0cy9lbnRpdHktZWRpdC9maWVsZC1tdWx0aXNlbGVjdC9maWVsZC1tdWx0aXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZILE9BQU8sRUFBbUIsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0RBQXNELENBQUM7Ozs7OztBQW9CdEYsTUFBTSxPQUFPLHlCQUNYLFNBQVEsY0FBd0I7SUFZaEMsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxZQUNTLE1BQTBCLEVBQzFCLElBQWdCO1FBRXZCLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBSGpCLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBQzFCLFNBQUksR0FBSixJQUFJLENBQVk7UUFYaEIsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUM1QixjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzFCLFlBQU8sR0FBb0IsSUFBSSxZQUFZLEVBQUssQ0FBQztRQUUzRCxTQUFJLEdBQXNCLEVBQUUsQ0FBQztRQVUzQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDO1FBQzFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUM7SUFDNUMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDaEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQ3ZCLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQzFELENBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUF1QjtRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNwQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMxRCxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQVE7UUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVPLE9BQU87UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUUsQ0FBQzs4R0FuRFUseUJBQXlCO2tHQUF6Qix5QkFBeUIsOFNDdkJ0QyxvN0JBNEJBLHl3Q0RaaUI7WUFDYjtnQkFDRSxPQUFPLEVBQUUsZ0JBQWdCO2dCQUN6QixXQUFXLEVBQUUsa0JBQWtCO2FBQ2hDO1NBQ0Y7OzJGQUVVLHlCQUF5QjtrQkFackMsU0FBUzsrQkFDRSxtQkFBbUIsbUJBR1osdUJBQXVCLENBQUMsTUFBTSxpQkFDaEM7d0JBQ2I7NEJBQ0UsT0FBTyxFQUFFLGdCQUFnQjs0QkFDekIsV0FBVyxFQUFFLGtCQUFrQjt5QkFDaEM7cUJBQ0Y7Z0hBS1EsT0FBTztzQkFBZixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDSSxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbENvbnRhaW5lciwgRm9ybUdyb3VwRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tcG9zaXRlRmlsdGVyRGVzY3JpcHRvciB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1kYXRhLXF1ZXJ5JztcbmltcG9ydCB7IEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vYW5ndWxhci9mb3Jtcy93aWRnZXRzL2ZpZWxkL2ZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZGVudGlmaWVkTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9hbmd1bGFyL21vZGVscy9JZGVudGlmaWVkTW9kZWwnO1xuaW1wb3J0IHsgTmFtZWRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL2FuZ3VsYXIvbW9kZWxzL05hbWVkTW9kZWwnO1xuaW1wb3J0IHsgSUVudGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9JRW50aXR5U2VydmljZSc7XG5pbXBvcnQgeyBQcmV2ZW50YWJsZUV2ZW50IH0gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItZHJvcGRvd25zJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBhZ2UgfSBmcm9tICdwcm9qZWN0cy9rZW5kby9zcmMvbGliL21vZGVscy9QYWdlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZmllbGQtbXVsdGlzZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmllbGQtbXVsdGlzZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWVsZC1tdWx0aXNlbGVjdC5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB2aWV3UHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lcixcbiAgICAgIHVzZUV4aXN0aW5nOiBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRmllbGRNdWx0aVNlbGVjdENvbXBvbmVudDxUPlxuICBleHRlbmRzIEZpZWxkQ29tcG9uZW50PHN0cmluZ1tdPlxuICBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHNlcnZpY2U6IElFbnRpdHlTZXJ2aWNlPE5hbWVkTW9kZWw+O1xuICBASW5wdXQoKSByZWJpbmQ6IHN0cmluZztcbiAgQElucHV0KCkgZmlsdGVyPzogQ29tcG9zaXRlRmlsdGVyRGVzY3JpcHRvcjtcbiAgQElucHV0KCkgdGV4dEZpZWxkPzogc3RyaW5nO1xuICBASW5wdXQoKSB2YWx1ZUZpZWxkPzogc3RyaW5nO1xuICBASW5wdXQoKSBzaW5nbGVNb2RlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGF1dG9DbG9zZTogYm9vbGVhbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgY2hhbmdlZDogRXZlbnRFbWl0dGVyPFQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xuXG4gIGRhdGE6IElkZW50aWZpZWRNb2RlbFtdID0gW107XG4gIGdldCBjb250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50LmZvcm0uZ2V0KHRoaXMuZmllbGROYW1lKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBwYXJlbnQ6IEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgICBwdWJsaWMgZXJlZjogRWxlbWVudFJlZixcbiAgKSB7XG4gICAgc3VwZXIocGFyZW50LCBlcmVmLCBbXSk7XG4gICAgdGhpcy50ZXh0RmllbGQgPSB0aGlzLnRleHRGaWVsZCA/PyAnbmFtZSc7XG4gICAgdGhpcy52YWx1ZUZpZWxkID0gdGhpcy52YWx1ZUZpZWxkID8/ICdpZCc7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLmdldERhdGEoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgIHRoaXMuZGF0YSA9IGRhdGEuZGF0YTtcbiAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShcbiAgICAgICAgdGhpcy5jb250cm9sLnZhbHVlLmZpbHRlcihcbiAgICAgICAgICAoeDogc3RyaW5nKSA9PiB0aGlzLmRhdGEuZmlsdGVyKChkKSA9PiBkLmlkID09PSB4KS5sZW5ndGhcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uUG9wdXBPcGVuKGV2ZW50OiBQcmV2ZW50YWJsZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNpbmdsZU1vZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNvbnRyb2wudmFsdWUubGVuZ3RoID4gMCAmJiBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgb25WYWx1ZUNoYW5nZSh2YWx1ZTogVCk6IHZvaWQge1xuICAgIHRoaXMuY2hhbmdlZC5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGF0YSgpOiBPYnNlcnZhYmxlPFBhZ2U8TmFtZWRNb2RlbD4+IHtcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmdldFBhZ2UodGhpcy5maWx0ZXIgPyB7IGZpbHRlcjogdGhpcy5maWx0ZXIgfSA6IHt9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTMgY29udHJvbC1sYWJlbFwiXG4gICAgICAgICBbdHJhbnNsYXRlXT1cImxhYmVsS2V5XCJcbiAgICAgICAgIFtmb3JdPVwiJ18nICsgZmllbGROYW1lXCJcbiAgPjwvbGFiZWw+XG4gIDxkaXYgKm5nSWY9XCJjb250cm9sXCIgY2xhc3M9XCJjb2wtbWQtOVwiPlxuICAgIDxrZW5kby1tdWx0aXNlbGVjdFxuICAgICAgICBbaWRdPVwiJ18nICsgZmllbGROYW1lXCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgICBbZGF0YV09XCJkYXRhXCJcbiAgICAgICAgW2F1dG9DbG9zZV09XCJhdXRvQ2xvc2VcIlxuICAgICAgICBbdGV4dEZpZWxkXT1cInRleHRGaWVsZFwiXG4gICAgICAgIFt2YWx1ZUZpZWxkXT1cInZhbHVlRmllbGRcIlxuICAgICAgICBbdmFsdWVQcmltaXRpdmVdPVwidHJ1ZVwiXG4gICAgICAgIChvcGVuKT1cIm9uUG9wdXBPcGVuKCRldmVudClcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICA+PC9rZW5kby1tdWx0aXNlbGVjdD5cblxuICAgIDxkaXYgKm5nSWY9XCJjb250cm9sLmludmFsaWQgJiYgY29udHJvbC50b3VjaGVkXCIgY2xhc3M9XCJiZy1kYW5nZXJcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiY29udHJvbC5lcnJvcnNbJ3JlcXVpcmVkJ11cIj5cbiAgICAgICAge3sgXCJSZXF1aXJlZFwiIHwgdHJhbnNsYXRlIDogeyBwYXJhbTA6IGxhYmVsS2V5IHwgdHJhbnNsYXRlIH0gfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiY29udHJvbC5lcnJvcnNbJ3NlcnZlckVycm9yTXNnJ11cIj5cbiAgICAgICAge3sgY29udHJvbC5lcnJvcnNbJ3NlcnZlckVycm9yTXNnJ10gfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtbXVsdGlzZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2VuZG8vc3JjL2xpYi93aWRnZXRzL2VudGl0eS1lZGl0L2ZpZWxkLW11bHRpc2VsZWN0L2ZpZWxkLW11bHRpc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlbmRvL3NyYy9saWIvd2lkZ2V0cy9lbnRpdHktZWRpdC9maWVsZC1tdWx0aXNlbGVjdC9maWVsZC1tdWx0aXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLGtCQUFrQixHQUNuQixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUl0RixPQUFPLEVBQUUsZUFBZSxFQUE0QixNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBZWpFLE1BQU0sT0FBTyx5QkFDWCxTQUFRLGNBQXdCO0lBZ0JoQyxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELFlBQW1CLE1BQTBCLEVBQVMsSUFBZ0I7UUFDcEUsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFEUCxXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQUFTLFNBQUksR0FBSixJQUFJLENBQVk7UUFYN0QsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUM1QixjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzFCLFlBQU8sR0FB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b25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbENvbnRhaW5lcixcbiAgRm9ybUdyb3VwRGlyZWN0aXZlLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21wb3NpdGVGaWx0ZXJEZXNjcmlwdG9yIH0gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWRhdGEtcXVlcnknO1xuaW1wb3J0IHsgRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9hbmd1bGFyL2Zvcm1zL3dpZGdldHMvZmllbGQvZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IE5hbWVkTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9hbmd1bGFyL21vZGVscy9OYW1lZE1vZGVsJztcbmltcG9ydCB7IElFbnRpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvSUVudGl0eVNlcnZpY2UnO1xuaW1wb3J0IHsgUHJldmVudGFibGVFdmVudCB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1hbmd1bGFyLWRyb3Bkb3ducyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUGFnZSB9IGZyb20gJ3Byb2plY3RzL2tlbmRvL3NyYy9saWIvbW9kZWxzL1BhZ2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmaWVsZC1tdWx0aXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWVsZC1tdWx0aXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpZWxkLW11bHRpc2VsZWN0LmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHZpZXdQcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBDb250cm9sQ29udGFpbmVyLFxuICAgICAgdXNlRXhpc3Rpbmc6IEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGaWVsZE11bHRpU2VsZWN0Q29tcG9uZW50PFQ+XG4gIGV4dGVuZHMgRmllbGRDb21wb25lbnQ8c3RyaW5nW10+XG4gIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3lcbntcbiAgQElucHV0KCkgc2VydmljZTogSUVudGl0eVNlcnZpY2U8TmFtZWRNb2RlbD47XG4gIEBJbnB1dCgpIHJlYmluZDogc3RyaW5nO1xuICBASW5wdXQoKSBmaWx0ZXI/OiBDb21wb3NpdGVGaWx0ZXJEZXNjcmlwdG9yO1xuICBASW5wdXQoKSB0ZXh0RmllbGQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHZhbHVlRmllbGQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRhdGE6IE5hbWVkTW9kZWxbXTtcbiAgQElucHV0KCkgc2luZ2xlTW9kZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBhdXRvQ2xvc2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpIGNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxUPiA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcblxuICBwdWJsaWMgZGF0YSQ6IE9ic2VydmFibGU8TmFtZWRNb2RlbFtdPjtcbiAgcHJpdmF0ZSBkYXRhU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PE5hbWVkTW9kZWxbXT47XG4gIHByaXZhdGUgZ2V0RGF0YVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBnZXQgY29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLnBhcmVudC5mb3JtLmdldCh0aGlzLmZpZWxkTmFtZSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGFyZW50OiBGb3JtR3JvdXBEaXJlY3RpdmUsIHB1YmxpYyBlcmVmOiBFbGVtZW50UmVmKSB7XG4gICAgc3VwZXIocGFyZW50LCBlcmVmLCBbXSk7XG4gICAgdGhpcy50ZXh0RmllbGQgPSB0aGlzLnRleHRGaWVsZCA/PyAnbmFtZSc7XG4gICAgdGhpcy52YWx1ZUZpZWxkID0gdGhpcy52YWx1ZUZpZWxkID8/ICdpZCc7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uQ2hhbmdlcygpO1xuICAgIGlmICh0aGlzLmRhdGEpIHtcbiAgICAgIHRoaXMudXBkYXRlRGF0YSh0aGlzLmRhdGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdldERhdGFTdWJzY3JpcHRpb24gPSB0aGlzLmdldERhdGEoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVEYXRhKGRhdGEuZGF0YSk7XG4gICAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShcbiAgICAgICAgICB0aGlzLmNvbnRyb2wudmFsdWUuZmlsdGVyKCh4OiBzdHJpbmcpID0+XG4gICAgICAgICAgICB0aGlzLmRhdGEuc29tZSgoZCkgPT4gZC5pZCA9PT0geCksXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZ2V0RGF0YVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvblBvcHVwT3BlbihldmVudDogUHJldmVudGFibGVFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zaW5nbGVNb2RlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jb250cm9sLnZhbHVlLmxlbmd0aCA+IDAgJiYgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvblZhbHVlQ2hhbmdlKHZhbHVlOiBUKTogdm9pZCB7XG4gICAgdGhpcy5jaGFuZ2VkLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREYXRhKCk6IE9ic2VydmFibGU8UGFnZTxOYW1lZE1vZGVsPj4ge1xuICAgIHJldHVybiB0aGlzLnNlcnZpY2UuZ2V0UGFnZSh0aGlzLmZpbHRlciA/IHsgZmlsdGVyOiB0aGlzLmZpbHRlciB9IDoge30pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVEYXRhKGRhdGE6IE5hbWVkTW9kZWxbXSk6IHZvaWQge1xuICAgIHRoaXMuZGF0YSA9IGRhdGE7XG4gICAgdGhpcy5kYXRhU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TmFtZWRNb2RlbFtdPihkYXRhKTtcbiAgICB0aGlzLmRhdGEkID0gdGhpcy5kYXRhU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTMgY29udHJvbC1sYWJlbFwiIFtmb3JdPVwiJ18nICsgZmllbGROYW1lXCI+e3tcbiAgICBsYWJlbEtleSB8IHRyYW5zbGF0ZVxuICB9fTwvbGFiZWw+XG4gIDxkaXYgKm5nSWY9XCJjb250cm9sXCIgY2xhc3M9XCJjb2wtbWQtOVwiPlxuICAgIDxrZW5kby1tdWx0aXNlbGVjdFxuICAgICAgW2lkXT1cIidfJyArIGZpZWxkTmFtZVwiXG4gICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICBbZGF0YV09XCJkYXRhJCB8IGFzeW5jXCJcbiAgICAgIFthdXRvQ2xvc2VdPVwiYXV0b0Nsb3NlXCJcbiAgICAgIFt0ZXh0RmllbGRdPVwidGV4dEZpZWxkXCJcbiAgICAgIFt2YWx1ZUZpZWxkXT1cInZhbHVlRmllbGRcIlxuICAgICAgW3ZhbHVlUHJpbWl0aXZlXT1cInRydWVcIlxuICAgICAgKG9wZW4pPVwib25Qb3B1cE9wZW4oJGV2ZW50KVwiXG4gICAgICAodmFsdWVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICA+PC9rZW5kby1tdWx0aXNlbGVjdD5cblxuICAgIDxkaXYgKm5nSWY9XCJjb250cm9sLmludmFsaWQgJiYgY29udHJvbC50b3VjaGVkXCIgY2xhc3M9XCJiZy1kYW5nZXJcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiY29udHJvbC5lcnJvcnNbJ3JlcXVpcmVkJ11cIj5cbiAgICAgICAge3sgXCJSZXF1aXJlZFwiIHwgdHJhbnNsYXRlIDogeyBwYXJhbTA6IGxhYmVsS2V5IHwgdHJhbnNsYXRlIH0gfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiY29udHJvbC5lcnJvcnNbJ3NlcnZlckVycm9yTXNnJ11cIj5cbiAgICAgICAge3sgY29udHJvbC5lcnJvcnNbXCJzZXJ2ZXJFcnJvck1zZ1wiXSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -3353,15 +3353,23 @@ class FieldMultiSelectComponent extends FieldComponent {
3353
3353
  this.singleMode = false;
3354
3354
  this.autoClose = false;
3355
3355
  this.changed = new EventEmitter();
3356
- this.data = [];
3357
3356
  this.textField = this.textField ?? 'name';
3358
3357
  this.valueField = this.valueField ?? 'id';
3359
3358
  }
3360
3359
  ngOnChanges() {
3361
- this.getData().subscribe((data) => {
3362
- this.data = data.data;
3363
- this.control.setValue(this.control.value.filter((x) => this.data.filter((d) => d.id === x).length));
3364
- });
3360
+ super.ngOnChanges();
3361
+ if (this.data) {
3362
+ this.updateData(this.data);
3363
+ }
3364
+ else {
3365
+ this.getDataSubscription = this.getData().subscribe((data) => {
3366
+ this.updateData(data.data);
3367
+ this.control.setValue(this.control.value.filter((x) => this.data.some((d) => d.id === x)));
3368
+ });
3369
+ }
3370
+ }
3371
+ ngOnDestroy() {
3372
+ this.getDataSubscription?.unsubscribe();
3365
3373
  }
3366
3374
  onPopupOpen(event) {
3367
3375
  if (!this.singleMode) {
@@ -3375,8 +3383,13 @@ class FieldMultiSelectComponent extends FieldComponent {
3375
3383
  getData() {
3376
3384
  return this.service.getPage(this.filter ? { filter: this.filter } : {});
3377
3385
  }
3386
+ updateData(data) {
3387
+ this.data = data;
3388
+ this.dataSubject = new BehaviorSubject(data);
3389
+ this.data$ = this.dataSubject.asObservable();
3390
+ }
3378
3391
  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\"\n [translate]=\"labelKey\"\n [for]=\"'_' + fieldName\"\n ></label>\n <div *ngIf=\"control\" class=\"col-md-9\">\n <kendo-multiselect\n [id]=\"'_' + fieldName\"\n [formControl]=\"control\"\n [data]=\"data\"\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.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], viewProviders: [
3392
+ 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
3393
  {
3381
3394
  provide: ControlContainer,
3382
3395
  useExisting: FormGroupDirective,
@@ -3390,7 +3403,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
3390
3403
  provide: ControlContainer,
3391
3404
  useExisting: FormGroupDirective,
3392
3405
  },
3393
- ], template: "<div class=\"form-group\">\n <label class=\"col-md-3 control-label\"\n [translate]=\"labelKey\"\n [for]=\"'_' + fieldName\"\n ></label>\n <div *ngIf=\"control\" class=\"col-md-9\">\n <kendo-multiselect\n [id]=\"'_' + fieldName\"\n [formControl]=\"control\"\n [data]=\"data\"\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" }]
3406
+ ], 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
3407
  }], ctorParameters: () => [{ type: i1$3.FormGroupDirective }, { type: i0.ElementRef }], propDecorators: { service: [{
3395
3408
  type: Input
3396
3409
  }], rebind: [{
@@ -3401,6 +3414,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
3401
3414
  type: Input
3402
3415
  }], valueField: [{
3403
3416
  type: Input
3417
+ }], data: [{
3418
+ type: Input
3404
3419
  }], singleMode: [{
3405
3420
  type: Input
3406
3421
  }], autoClose: [{