@indigina/kendo 1.2.67 → 1.2.68

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.
@@ -9,6 +9,7 @@ import * as i3 from "@progress/kendo-angular-dropdowns";
9
9
  import * as i4 from "@angular/common";
10
10
  const SelectValue = 'Select value';
11
11
  const defaultFieldName = 'name';
12
+ const defaultValueField = 'id';
12
13
  export class FieldDropdownComponent extends FieldComponent {
13
14
  get control() {
14
15
  return this.parent.form.get(this.fieldName);
@@ -19,6 +20,7 @@ export class FieldDropdownComponent extends FieldComponent {
19
20
  this.eref = eref;
20
21
  this.translate = translate;
21
22
  this.textField = defaultFieldName;
23
+ this.valueField = defaultValueField;
22
24
  this.selectedChange = new EventEmitter();
23
25
  }
24
26
  ngOnInit() {
@@ -33,7 +35,7 @@ export class FieldDropdownComponent extends FieldComponent {
33
35
  onValueChange(event) {
34
36
  let entity = undefined;
35
37
  if (event !== null) {
36
- entity = this.getEntityById(event);
38
+ entity = this.getEntityByValue(event);
37
39
  }
38
40
  this.emitSelectedEntity(entity || this.defaultItem);
39
41
  }
@@ -46,41 +48,37 @@ export class FieldDropdownComponent extends FieldComponent {
46
48
  else {
47
49
  this.data$ = this.service
48
50
  .getPage(this.filter ? { filter: this.filter } : {})
49
- .pipe(tap((x) => {
50
- this.items = x.data;
51
+ .pipe(tap((response) => {
52
+ this.items = response.data;
51
53
  this.handleSelectedEntity();
52
- }), map((x) => x.data));
54
+ }), map((response) => response.data));
53
55
  }
54
56
  }
55
57
  setDefaultItem() {
56
58
  this.defaultItem = {
57
59
  name: this.setDefaultName(),
58
60
  id: null,
61
+ [this.textField]: this.setDefaultName(),
62
+ [this.valueField]: null,
59
63
  };
60
- if (this.textField !== defaultFieldName) {
61
- this.setTextFieldForDefaultItem();
62
- }
63
- }
64
- setTextFieldForDefaultItem() {
65
- this.defaultItem[this.textField] = this.setDefaultName();
66
64
  }
67
65
  setDefaultName() {
68
66
  return this.translate.instant(this.defaultName || SelectValue);
69
67
  }
70
68
  handleSelectedEntity() {
71
69
  if (this.selectedItem) {
72
- const selectedEntity = this.updateControlValue(this.selectedItem.id);
73
- if (selectedEntity?.id) {
74
- this.onValueChange(selectedEntity.id);
75
- this.writeSelectedEntityValue(selectedEntity.id);
70
+ const selectedEntity = this.updateControlValue(this.selectedItem[this.valueField]);
71
+ if (selectedEntity && selectedEntity[this.valueField] !== null) {
72
+ this.onValueChange(selectedEntity[this.valueField]);
73
+ this.writeSelectedEntityValue(selectedEntity[this.valueField]);
76
74
  }
77
75
  }
78
76
  else {
79
77
  this.updateControlValue(this.control.value);
80
78
  }
81
79
  }
82
- updateControlValue(entityId) {
83
- const entity = this.getEntityById(entityId);
80
+ updateControlValue(value) {
81
+ const entity = this.getEntityByValue(value);
84
82
  if (entity) {
85
83
  this.setControlValue(entity);
86
84
  }
@@ -89,18 +87,16 @@ export class FieldDropdownComponent extends FieldComponent {
89
87
  }
90
88
  return entity;
91
89
  }
92
- getEntityById(entityId) {
93
- let entity;
90
+ getEntityByValue(value) {
94
91
  if (this.data) {
95
- entity = this.data.find((x) => x.id === entityId);
92
+ return this.data.find((x) => x[this.valueField] === value);
96
93
  }
97
94
  else {
98
- entity = this.items.find((x) => x.id === entityId);
95
+ return this.items.find((x) => x[this.valueField] === value);
99
96
  }
100
- return entity;
101
97
  }
102
98
  setControlValue(entity) {
103
- this.control.setValue(entity.id);
99
+ this.control.setValue(entity[this.valueField]);
104
100
  }
105
101
  resetControlValue() {
106
102
  this.control.reset();
@@ -108,11 +104,11 @@ export class FieldDropdownComponent extends FieldComponent {
108
104
  emitSelectedEntity(entity) {
109
105
  this.selectedChange.emit(entity);
110
106
  }
111
- writeSelectedEntityValue(selectedEntityId) {
112
- this.kendoDropDown?.writeValue(selectedEntityId);
107
+ writeSelectedEntityValue(value) {
108
+ this.kendoDropDown?.writeValue(value);
113
109
  }
114
110
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FieldDropdownComponent, deps: [{ token: i1.FormGroupDirective }, { token: i0.ElementRef }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
115
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: FieldDropdownComponent, selector: "field-dropdown", inputs: { service: "service", rebind: "rebind", filter: "filter", defaultName: "defaultName", selectedItem: "selectedItem", data: "data", textField: "textField" }, outputs: { selectedChange: "selectedChange" }, viewQueries: [{ propertyName: "kendoDropDown", first: true, predicate: ["inputElement"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"form-group\">\n <label\n for=\"{{ '_' + fieldName }}\"\n class=\"col-md-3 control-label\"\n translate=\"{{ labelKey }}\"\n ></label>\n <div class=\"col-md-9\" *ngIf=\"control\">\n <kendo-dropdownlist\n id=\"{{ '_' + fieldName }}\"\n [formControl]=\"control\"\n [data]=\"data$ | async\"\n [textField]=\"textField\"\n valueField=\"id\"\n [valuePrimitive]=\"true\"\n [defaultItem]=\"defaultItem\"\n (valueChange)=\"onValueChange($event)\"\n #inputElement\n >\n </kendo-dropdownlist>\n\n <div class=\"bg-danger\" *ngIf=\"control.invalid && control.touched\">\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", dependencies: [{ kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i3.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["customIconClass", "showStickyHeader", "icon", "svgIcon", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "leftRightArrowsNavigation", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { 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: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], viewProviders: [
111
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: FieldDropdownComponent, selector: "field-dropdown", inputs: { service: "service", rebind: "rebind", filter: "filter", defaultName: "defaultName", selectedItem: "selectedItem", data: "data", textField: "textField", valueField: "valueField" }, outputs: { selectedChange: "selectedChange" }, viewQueries: [{ propertyName: "kendoDropDown", first: true, predicate: ["inputElement"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"form-group\">\n <label for=\"{{ '_' + fieldName }}\" class=\"col-md-3 control-label\">{{\n labelKey | translate\n }}</label>\n <div class=\"col-md-9\" *ngIf=\"control\">\n <kendo-dropdownlist\n id=\"{{ '_' + fieldName }}\"\n [formControl]=\"control\"\n [data]=\"data$ | async\"\n [textField]=\"textField\"\n [valueField]=\"valueField\"\n [valuePrimitive]=\"true\"\n [defaultItem]=\"defaultItem\"\n (valueChange)=\"onValueChange($event)\"\n #inputElement\n >\n </kendo-dropdownlist>\n\n <div class=\"bg-danger\" *ngIf=\"control.invalid && control.touched\">\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", dependencies: [{ kind: "component", type: i3.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["customIconClass", "showStickyHeader", "icon", "svgIcon", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "leftRightArrowsNavigation", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { 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: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], viewProviders: [
116
112
  { provide: ControlContainer, useExisting: FormGroupDirective },
117
113
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
118
114
  }
@@ -120,7 +116,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
120
116
  type: Component,
121
117
  args: [{ selector: 'field-dropdown', viewProviders: [
122
118
  { provide: ControlContainer, useExisting: FormGroupDirective },
123
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-group\">\n <label\n for=\"{{ '_' + fieldName }}\"\n class=\"col-md-3 control-label\"\n translate=\"{{ labelKey }}\"\n ></label>\n <div class=\"col-md-9\" *ngIf=\"control\">\n <kendo-dropdownlist\n id=\"{{ '_' + fieldName }}\"\n [formControl]=\"control\"\n [data]=\"data$ | async\"\n [textField]=\"textField\"\n valueField=\"id\"\n [valuePrimitive]=\"true\"\n [defaultItem]=\"defaultItem\"\n (valueChange)=\"onValueChange($event)\"\n #inputElement\n >\n </kendo-dropdownlist>\n\n <div class=\"bg-danger\" *ngIf=\"control.invalid && control.touched\">\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" }]
119
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-group\">\n <label for=\"{{ '_' + fieldName }}\" class=\"col-md-3 control-label\">{{\n labelKey | translate\n }}</label>\n <div class=\"col-md-9\" *ngIf=\"control\">\n <kendo-dropdownlist\n id=\"{{ '_' + fieldName }}\"\n [formControl]=\"control\"\n [data]=\"data$ | async\"\n [textField]=\"textField\"\n [valueField]=\"valueField\"\n [valuePrimitive]=\"true\"\n [defaultItem]=\"defaultItem\"\n (valueChange)=\"onValueChange($event)\"\n #inputElement\n >\n </kendo-dropdownlist>\n\n <div class=\"bg-danger\" *ngIf=\"control.invalid && control.touched\">\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" }]
124
120
  }], ctorParameters: () => [{ type: i1.FormGroupDirective }, { type: i0.ElementRef }, { type: i2.TranslateService }], propDecorators: { service: [{
125
121
  type: Input
126
122
  }], rebind: [{
@@ -135,10 +131,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
135
131
  type: Input
136
132
  }], textField: [{
137
133
  type: Input
134
+ }], valueField: [{
135
+ type: Input
138
136
  }], selectedChange: [{
139
137
  type: Output
140
138
  }], kendoDropDown: [{
141
139
  type: ViewChild,
142
140
  args: ['inputElement']
143
141
  }] } });
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2VuZG8vc3JjL2xpYi93aWRnZXRzL2VudGl0eS1lZGl0L2Ryb3Bkb3ducy9maWVsZC1kcm9wZG93bi9maWVsZC1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZW5kby9zcmMvbGliL3dpZGdldHMvZW50aXR5LWVkaXQvZHJvcGRvd25zL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUVMLHVCQUF1QixFQUN2QixNQUFNLEVBQ04sWUFBWSxFQUNaLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGtCQUFrQixHQUVuQixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFjLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seURBQXlELENBQUM7Ozs7OztBQU16RixNQUFNLFdBQVcsR0FBVyxjQUFjLENBQUM7QUFDM0MsTUFBTSxnQkFBZ0IsR0FBVyxNQUFNLENBQUM7QUFVeEMsTUFBTSxPQUFPLHNCQUF1QixTQUFRLGNBQXNCO0lBZ0JoRSxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELFlBQ1MsTUFBMEIsRUFDMUIsSUFBZ0IsRUFDZixTQUEyQjtRQUVuQyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUpuQixXQUFNLEdBQU4sTUFBTSxD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RSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNuRCxDQUFDOzhHQXhJVSxzQkFBc0I7a0dBQXRCLHNCQUFzQixvYUNqQ25DLGk2QkE4QkEsc3hDREZpQjtZQUNiLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRTtTQUMvRDs7MkZBR1Usc0JBQXNCO2tCQVJsQyxTQUFTOytCQUNFLGdCQUFnQixpQkFFWDt3QkFDYixFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUU7cUJBQy9ELG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNOytJQUd0QyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0ksY0FBYztzQkFBdkIsTUFBTTtnQkFHQyxhQUFhO3NCQURwQixTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBFbGVtZW50UmVmLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb250cm9sQ29udGFpbmVyLFxuICBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gIEFic3RyYWN0Q29udHJvbCxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tcG9zaXRlRmlsdGVyRGVzY3JpcHRvciB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1kYXRhLXF1ZXJ5JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgbWFwLCBPYnNlcnZhYmxlLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vYW5ndWxhci9mb3Jtcy93aWRnZXRzL2ZpZWxkL2ZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOYW1lZE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vYW5ndWxhci9tb2RlbHMvTmFtZWRNb2RlbCc7XG5pbXBvcnQgeyBJR2V0UGFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9nZXQtcGFnZS5zZXJ2aWNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBEcm9wRG93bkxpc3RDb21wb25lbnQgfSBmcm9tICdAcHJvZ3Jlc3Mva2VuZG8tYW5ndWxhci1kcm9wZG93bnMnO1xuXG5jb25zdCBTZWxlY3RWYWx1ZTogc3RyaW5nID0gJ1NlbGVjdCB2YWx1ZSc7XG5jb25zdCBkZWZhdWx0RmllbGROYW1lOiBzdHJpbmcgPSAnbmFtZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZpZWxkLWRyb3Bkb3duJyxcbiAgdGVtcGxhdGVVcmw6ICcuLi9kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gIHZpZXdQcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IENvbnRyb2xDb250YWluZXIsIHVzZUV4aXN0aW5nOiBGb3JtR3JvdXBEaXJlY3RpdmUgfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEZpZWxkRHJvcGRvd25Db21wb25lbnQgZXh0ZW5kcyBGaWVsZENvbXBvbmVudDxzdHJpbmc+IHtcbiAgQElucHV0KCkgc2VydmljZTogSUdldFBhZ2VTZXJ2aWNlPE5hbWVkTW9kZWw+O1xuICBASW5wdXQoKSByZWJpbmQ6IHN0cmluZztcbiAgQElucHV0KCkgZmlsdGVyPzogQ29tcG9zaXRlRmlsdGVyRGVzY3JpcHRvcjtcbiAgQElucHV0KCkgZGVmYXVsdE5hbWU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNlbGVjdGVkSXRlbT86IE5hbWVkTW9kZWw7XG4gIEBJbnB1dCgpIGRhdGE/OiBOYW1lZE1vZGVsW107XG4gIEBJbnB1dCgpIHRleHRGaWVsZDogc3RyaW5nID0gZGVmYXVsdEZpZWxkTmFtZTtcbiAgQE91dHB1dCgpIHNlbGVjdGVkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TmFtZWRNb2RlbCB8IG51bWJlciB8IHN0cmluZz4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQFZpZXdDaGlsZCgnaW5wdXRFbGVtZW50JylcbiAgcHJpdmF0ZSBrZW5kb0Ryb3BEb3duOiBEcm9wRG93bkxpc3RDb21wb25lbnQ7XG5cbiAgcHJpdmF0ZSBpdGVtczogTmFtZWRNb2RlbFtdO1xuICBwdWJsaWMgZGVmYXVsdEl0ZW06IE5hbWVkTW9kZWw7XG4gIHB1YmxpYyBkYXRhJDogT2JzZXJ2YWJsZTxOYW1lZE1vZGVsW10+O1xuICBnZXQgY29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLnBhcmVudC5mb3JtLmdldCh0aGlzLmZpZWxkTmFtZSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcGFyZW50OiBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gICAgcHVibGljIGVyZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICkge1xuICAgIHN1cGVyKHBhcmVudCwgZXJlZiwgbnVsbCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuc2V0RGF0YSgpO1xuICAgIHRoaXMuc2V0RGVmYXVsdEl0ZW0oKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25DaGFuZ2VzKCk7XG4gICAgdGhpcy5zZXREYXRhKCk7XG4gIH1cblxuICBwdWJsaWMgb25WYWx1ZUNoYW5nZShldmVudDogc3RyaW5nKTogdm9pZCB7XG4gICAgbGV0IGVudGl0eTogTmFtZWRNb2RlbCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBpZiAoZXZlbnQgIT09IG51bGwpIHtcbiAgICAgIGVudGl0eSA9IHRoaXMuZ2V0RW50aXR5QnlJZChldmVudCk7XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0U2VsZWN0ZWRFbnRpdHkoZW50aXR5IHx8IHRoaXMuZGVmYXVsdEl0ZW0pO1xuICB9XG5cbiAgcHVibGljIHNldERhdGEoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGF0YSkge1xuICAgICAgbGV0IGRhdGFTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8TmFtZWRNb2RlbFtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8XG4gICAgICAgIE5hbWVkTW9kZWxbXVxuICAgICAgPih0aGlzLmRhdGEpO1xuICAgICAgdGhpcy5kYXRhJCA9IGRhdGFTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgICAgdGhpcy5oYW5kbGVTZWxlY3RlZEVudGl0eSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGEkID0gdGhpcy5zZXJ2aWNlXG4gICAgICAgIC5nZXRQYWdlKHRoaXMuZmlsdGVyID8geyBmaWx0ZXI6IHRoaXMuZmlsdGVyIH0gOiB7fSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFwKCh4KSA9PiB7XG4gICAgICAgICAgICB0aGlzLml0ZW1zID0geC5kYXRhO1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVTZWxlY3RlZEVudGl0eSgpO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIG1hcCgoeCkgPT4geC5kYXRhKSxcbiAgICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldERlZmF1bHRJdGVtKCk6IHZvaWQge1xuICAgIHRoaXMuZGVmYXVsdEl0ZW0gPSB7XG4gICAgICBuYW1lOiB0aGlzLnNldERlZmF1bHROYW1lKCksXG4gICAgICBpZDogbnVsbCxcbiAgICB9O1xuICAgIGlmICh0aGlzLnRleHRGaWVsZCAhPT0gZGVmYXVsdEZpZWxkTmFtZSkge1xuICAgICAgdGhpcy5zZXRUZXh0RmllbGRGb3JEZWZhdWx0SXRlbSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0VGV4dEZpZWxkRm9yRGVmYXVsdEl0ZW0oKTogdm9pZCB7XG4gICAgdGhpcy5kZWZhdWx0SXRlbVt0aGlzLnRleHRGaWVsZF0gPSB0aGlzLnNldERlZmF1bHROYW1lKCk7XG4gIH1cblxuICBwcml2YXRlIHNldERlZmF1bHROYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQodGhpcy5kZWZhdWx0TmFtZSB8fCBTZWxlY3RWYWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVNlbGVjdGVkRW50aXR5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbSkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRFbnRpdHk6IE5hbWVkTW9kZWwgPSB0aGlzLnVwZGF0ZUNvbnRyb2xWYWx1ZShcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0uaWQsXG4gICAgICApO1xuICAgICAgaWYgKHNlbGVjdGVkRW50aXR5Py5pZCkge1xuICAgICAgICB0aGlzLm9uVmFsdWVDaGFuZ2Uoc2VsZWN0ZWRFbnRpdHkuaWQpO1xuICAgICAgICB0aGlzLndyaXRlU2VsZWN0ZWRFbnRpdHlWYWx1ZShzZWxlY3RlZEVudGl0eS5pZCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlQ29udHJvbFZhbHVlKHRoaXMuY29udHJvbC52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb250cm9sVmFsdWUoZW50aXR5SWQ6IHN0cmluZyk6IE5hbWVkTW9kZWwge1xuICAgIGNvbnN0IGVudGl0eTogTmFtZWRNb2RlbCA9IHRoaXMuZ2V0RW50aXR5QnlJZChlbnRpdHlJZCk7XG4gICAgaWYgKGVudGl0eSkge1xuICAgICAgdGhpcy5zZXRDb250cm9sVmFsdWUoZW50aXR5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZXNldENvbnRyb2xWYWx1ZSgpO1xuICAgIH1cblxuICAgIHJldHVybiBlbnRpdHk7XG4gIH1cblxuICBwcml2YXRlIGdldEVudGl0eUJ5SWQoZW50aXR5SWQ6IHN0cmluZyk6IE5hbWVkTW9kZWwge1xuICAgIGxldCBlbnRpdHk6IE5hbWVkTW9kZWw7XG4gICAgaWYgKHRoaXMuZGF0YSkge1xuICAgICAgZW50aXR5ID0gdGhpcy5kYXRhLmZpbmQoKHgpID0+IHguaWQgPT09IGVudGl0eUlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZW50aXR5ID0gdGhpcy5pdGVtcy5maW5kKCh4KSA9PiB4LmlkID09PSBlbnRpdHlJZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVudGl0eTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q29udHJvbFZhbHVlKGVudGl0eTogTmFtZWRNb2RlbCk6IHZvaWQge1xuICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShlbnRpdHkuaWQpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldENvbnRyb2xWYWx1ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2wucmVzZXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFNlbGVjdGVkRW50aXR5KGVudGl0eTogTmFtZWRNb2RlbCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2UuZW1pdChlbnRpdHkpO1xuICB9XG5cbiAgcHJpdmF0ZSB3cml0ZVNlbGVjdGVkRW50aXR5VmFsdWUoc2VsZWN0ZWRFbnRpdHlJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5rZW5kb0Ryb3BEb3duPy53cml0ZVZhbHVlKHNlbGVjdGVkRW50aXR5SWQpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICA8bGFiZWxcbiAgICBmb3I9XCJ7eyAnXycgKyBmaWVsZE5hbWUgfX1cIlxuICAgIGNsYXNzPVwiY29sLW1kLTMgY29udHJvbC1sYWJlbFwiXG4gICAgdHJhbnNsYXRlPVwie3sgbGFiZWxLZXkgfX1cIlxuICA+PC9sYWJlbD5cbiAgPGRpdiBjbGFzcz1cImNvbC1tZC05XCIgKm5nSWY9XCJjb250cm9sXCI+XG4gICAgPGtlbmRvLWRyb3Bkb3dubGlzdFxuICAgICAgaWQ9XCJ7eyAnXycgKyBmaWVsZE5hbWUgfX1cIlxuICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgW2RhdGFdPVwiZGF0YSQgfCBhc3luY1wiXG4gICAgICBbdGV4dEZpZWxkXT1cInRleHRGaWVsZFwiXG4gICAgICB2YWx1ZUZpZWxkPVwiaWRcIlxuICAgICAgW3ZhbHVlUHJpbWl0aXZlXT1cInRydWVcIlxuICAgICAgW2RlZmF1bHRJdGVtXT1cImRlZmF1bHRJdGVtXCJcbiAgICAgICh2YWx1ZUNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgICAgI2lucHV0RWxlbWVudFxuICAgID5cbiAgICA8L2tlbmRvLWRyb3Bkb3dubGlzdD5cblxuICAgIDxkaXYgY2xhc3M9XCJiZy1kYW5nZXJcIiAqbmdJZj1cImNvbnRyb2wuaW52YWxpZCAmJiBjb250cm9sLnRvdWNoZWRcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiY29udHJvbC5lcnJvcnNbJ3JlcXVpcmVkJ11cIj57e1xuICAgICAgICBcIlJlcXVpcmVkXCIgfCB0cmFuc2xhdGUgOiB7IHBhcmFtMDogbGFiZWxLZXkgfCB0cmFuc2xhdGUgfVxuICAgICAgfX08L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cImNvbnRyb2wuZXJyb3JzWydzZXJ2ZXJFcnJvck1zZyddXCI+e3tcbiAgICAgICAgY29udHJvbC5lcnJvcnNbXCJzZXJ2ZXJFcnJvck1zZ1wiXVxuICAgICAgfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2VuZG8vc3JjL2xpYi93aWRnZXRzL2VudGl0eS1lZGl0L2Ryb3Bkb3ducy9maWVsZC1kcm9wZG93bi9maWVsZC1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZW5kby9zcmMvbGliL3dpZGdldHMvZW50aXR5LWVkaXQvZHJvcGRvd25zL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUVMLHVCQUF1QixFQUN2QixNQUFNLEVBQ04sWUFBWSxFQUNaLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGtCQUFrQixHQUVuQixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFjLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seURBQXlELENBQUM7Ozs7OztBQU16RixNQUFNLFdBQVcsR0FBVyxjQUFjLENBQUM7QUFDM0MsTUFBTSxnQkFBZ0IsR0FBVyxNQUFNLENBQUM7QUFDeEMsTUFBTSxpQkFBaUIsR0FBVyxJQUFJLENBQUM7QUFVdkMsTUFBTSxPQUFPLHNCQUF1QixTQUFRLGNBQXNCO0lBaUJoRSxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELFlBQ1MsTUFBMEIsRUFDMUIsSUFBZ0IsRUFDZixTQUEyQjtRQUVuQyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJ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LENBQUM7SUFFTyx3QkFBd0IsQ0FBQyxLQUFhO1FBQzVDLElBQUksQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLENBQUM7OEdBaklVLHNCQUFzQjtrR0FBdEIsc0JBQXNCLDhiQ2xDbkMsNjVCQTRCQSwrb0NEQ2lCO1lBQ2IsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFO1NBQy9EOzsyRkFHVSxzQkFBc0I7a0JBUmxDLFNBQVM7K0JBQ0UsZ0JBQWdCLGlCQUVYO3dCQUNiLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRTtxQkFDL0QsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07K0lBR3RDLE9BQU87c0JBQWYsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNJLGNBQWM7c0JBQXZCLE1BQU07Z0JBR0MsYUFBYTtzQkFEcEIsU0FBUzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgRWxlbWVudFJlZixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29udHJvbENvbnRhaW5lcixcbiAgRm9ybUdyb3VwRGlyZWN0aXZlLFxuICBBYnN0cmFjdENvbnRyb2wsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbXBvc2l0ZUZpbHRlckRlc2NyaXB0b3IgfSBmcm9tICdAcHJvZ3Jlc3Mva2VuZG8tZGF0YS1xdWVyeSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1hcCwgT2JzZXJ2YWJsZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL2FuZ3VsYXIvZm9ybXMvd2lkZ2V0cy9maWVsZC9maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmFtZWRNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL2FuZ3VsYXIvbW9kZWxzL05hbWVkTW9kZWwnO1xuaW1wb3J0IHsgSUdldFBhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvZ2V0LXBhZ2Uuc2VydmljZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgRHJvcERvd25MaXN0Q29tcG9uZW50IH0gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItZHJvcGRvd25zJztcblxuY29uc3QgU2VsZWN0VmFsdWU6IHN0cmluZyA9ICdTZWxlY3QgdmFsdWUnO1xuY29uc3QgZGVmYXVsdEZpZWxkTmFtZTogc3RyaW5nID0gJ25hbWUnO1xuY29uc3QgZGVmYXVsdFZhbHVlRmllbGQ6IHN0cmluZyA9ICdpZCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZpZWxkLWRyb3Bkb3duJyxcbiAgdGVtcGxhdGVVcmw6ICcuLi9kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gIHZpZXdQcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IENvbnRyb2xDb250YWluZXIsIHVzZUV4aXN0aW5nOiBGb3JtR3JvdXBEaXJlY3RpdmUgfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEZpZWxkRHJvcGRvd25Db21wb25lbnQgZXh0ZW5kcyBGaWVsZENvbXBvbmVudDxzdHJpbmc+IHtcbiAgQElucHV0KCkgc2VydmljZTogSUdldFBhZ2VTZXJ2aWNlPE5hbWVkTW9kZWw+O1xuICBASW5wdXQoKSByZWJpbmQ6IHN0cmluZztcbiAgQElucHV0KCkgZmlsdGVyPzogQ29tcG9zaXRlRmlsdGVyRGVzY3JpcHRvcjtcbiAgQElucHV0KCkgZGVmYXVsdE5hbWU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNlbGVjdGVkSXRlbT86IE5hbWVkTW9kZWw7XG4gIEBJbnB1dCgpIGRhdGE/OiBOYW1lZE1vZGVsW107XG4gIEBJbnB1dCgpIHRleHRGaWVsZDogc3RyaW5nID0gZGVmYXVsdEZpZWxkTmFtZTtcbiAgQElucHV0KCkgdmFsdWVGaWVsZDogc3RyaW5nID0gZGVmYXVsdFZhbHVlRmllbGQ7XG4gIEBPdXRwdXQoKSBzZWxlY3RlZENoYW5nZTogRXZlbnRFbWl0dGVyPE5hbWVkTW9kZWwgfCBudW1iZXIgfCBzdHJpbmc+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBWaWV3Q2hpbGQoJ2lucHV0RWxlbWVudCcpXG4gIHByaXZhdGUga2VuZG9Ecm9wRG93bjogRHJvcERvd25MaXN0Q29tcG9uZW50O1xuXG4gIHByaXZhdGUgaXRlbXM6IE5hbWVkTW9kZWxbXTtcbiAgcHVibGljIGRlZmF1bHRJdGVtOiBOYW1lZE1vZGVsO1xuICBwdWJsaWMgZGF0YSQ6IE9ic2VydmFibGU8TmFtZWRNb2RlbFtdPjtcbiAgZ2V0IGNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQuZm9ybS5nZXQodGhpcy5maWVsZE5hbWUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHBhcmVudDogRm9ybUdyb3VwRGlyZWN0aXZlLFxuICAgIHB1YmxpYyBlcmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICApIHtcbiAgICBzdXBlcihwYXJlbnQsIGVyZWYsIG51bGwpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB0aGlzLnNldERhdGEoKTtcbiAgICB0aGlzLnNldERlZmF1bHRJdGVtKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uQ2hhbmdlcygpO1xuICAgIHRoaXMuc2V0RGF0YSgpO1xuICB9XG5cbiAgcHVibGljIG9uVmFsdWVDaGFuZ2UoZXZlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCBlbnRpdHk6IE5hbWVkTW9kZWwgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgaWYgKGV2ZW50ICE9PSBudWxsKSB7XG4gICAgICBlbnRpdHkgPSB0aGlzLmdldEVudGl0eUJ5VmFsdWUoZXZlbnQpO1xuICAgIH1cblxuICAgIHRoaXMuZW1pdFNlbGVjdGVkRW50aXR5KGVudGl0eSB8fCB0aGlzLmRlZmF1bHRJdGVtKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXREYXRhKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGEpIHtcbiAgICAgIGxldCBkYXRhU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PE5hbWVkTW9kZWxbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxuICAgICAgICBOYW1lZE1vZGVsW11cbiAgICAgID4odGhpcy5kYXRhKTtcbiAgICAgIHRoaXMuZGF0YSQgPSBkYXRhU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICAgIHRoaXMuaGFuZGxlU2VsZWN0ZWRFbnRpdHkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kYXRhJCA9IHRoaXMuc2VydmljZVxuICAgICAgICAuZ2V0UGFnZSh0aGlzLmZpbHRlciA/IHsgZmlsdGVyOiB0aGlzLmZpbHRlciB9IDoge30pXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRhcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXRlbXMgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVTZWxlY3RlZEVudGl0eSgpO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHJlc3BvbnNlLmRhdGEpLFxuICAgICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0RGVmYXVsdEl0ZW0oKTogdm9pZCB7XG4gICAgdGhpcy5kZWZhdWx0SXRlbSA9IHtcbiAgICAgIG5hbWU6IHRoaXMuc2V0RGVmYXVsdE5hbWUoKSxcbiAgICAgIGlkOiBudWxsLFxuICAgICAgW3RoaXMudGV4dEZpZWxkXTogdGhpcy5zZXREZWZhdWx0TmFtZSgpLFxuICAgICAgW3RoaXMudmFsdWVGaWVsZF06IG51bGwsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RGVmYXVsdE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudCh0aGlzLmRlZmF1bHROYW1lIHx8IFNlbGVjdFZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU2VsZWN0ZWRFbnRpdHkoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZEVudGl0eTogTmFtZWRNb2RlbCA9IHRoaXMudXBkYXRlQ29udHJvbFZhbHVlKFxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbVt0aGlzLnZhbHVlRmllbGRdLFxuICAgICAgKTtcbiAgICAgIGlmIChzZWxlY3RlZEVudGl0eSAmJiBzZWxlY3RlZEVudGl0eVt0aGlzLnZhbHVlRmllbGRdICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMub25WYWx1ZUNoYW5nZShzZWxlY3RlZEVudGl0eVt0aGlzLnZhbHVlRmllbGRdKTtcbiAgICAgICAgdGhpcy53cml0ZVNlbGVjdGVkRW50aXR5VmFsdWUoc2VsZWN0ZWRFbnRpdHlbdGhpcy52YWx1ZUZpZWxkXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlQ29udHJvbFZhbHVlKHRoaXMuY29udHJvbC52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb250cm9sVmFsdWUodmFsdWU6IHN0cmluZyk6IE5hbWVkTW9kZWwge1xuICAgIGNvbnN0IGVudGl0eTogTmFtZWRNb2RlbCA9IHRoaXMuZ2V0RW50aXR5QnlWYWx1ZSh2YWx1ZSk7XG4gICAgaWYgKGVudGl0eSkge1xuICAgICAgdGhpcy5zZXRDb250cm9sVmFsdWUoZW50aXR5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZXNldENvbnRyb2xWYWx1ZSgpO1xuICAgIH1cblxuICAgIHJldHVybiBlbnRpdHk7XG4gIH1cblxuICBwcml2YXRlIGdldEVudGl0eUJ5VmFsdWUodmFsdWU6IHN0cmluZyk6IE5hbWVkTW9kZWwge1xuICAgIGlmICh0aGlzLmRhdGEpIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGEuZmluZCgoeCkgPT4geFt0aGlzLnZhbHVlRmllbGRdID09PSB2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbmQoKHgpID0+IHhbdGhpcy52YWx1ZUZpZWxkXSA9PT0gdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0Q29udHJvbFZhbHVlKGVudGl0eTogTmFtZWRNb2RlbCk6IHZvaWQge1xuICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShlbnRpdHlbdGhpcy52YWx1ZUZpZWxkXSk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0Q29udHJvbFZhbHVlKCk6IHZvaWQge1xuICAgIHRoaXMuY29udHJvbC5yZXNldCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0U2VsZWN0ZWRFbnRpdHkoZW50aXR5OiBOYW1lZE1vZGVsKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KGVudGl0eSk7XG4gIH1cblxuICBwcml2YXRlIHdyaXRlU2VsZWN0ZWRFbnRpdHlWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5rZW5kb0Ryb3BEb3duPy53cml0ZVZhbHVlKHZhbHVlKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgPGxhYmVsIGZvcj1cInt7ICdfJyArIGZpZWxkTmFtZSB9fVwiIGNsYXNzPVwiY29sLW1kLTMgY29udHJvbC1sYWJlbFwiPnt7XG4gICAgbGFiZWxLZXkgfCB0cmFuc2xhdGVcbiAgfX08L2xhYmVsPlxuICA8ZGl2IGNsYXNzPVwiY29sLW1kLTlcIiAqbmdJZj1cImNvbnRyb2xcIj5cbiAgICA8a2VuZG8tZHJvcGRvd25saXN0XG4gICAgICBpZD1cInt7ICdfJyArIGZpZWxkTmFtZSB9fVwiXG4gICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICBbZGF0YV09XCJkYXRhJCB8IGFzeW5jXCJcbiAgICAgIFt0ZXh0RmllbGRdPVwidGV4dEZpZWxkXCJcbiAgICAgIFt2YWx1ZUZpZWxkXT1cInZhbHVlRmllbGRcIlxuICAgICAgW3ZhbHVlUHJpbWl0aXZlXT1cInRydWVcIlxuICAgICAgW2RlZmF1bHRJdGVtXT1cImRlZmF1bHRJdGVtXCJcbiAgICAgICh2YWx1ZUNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgICAgI2lucHV0RWxlbWVudFxuICAgID5cbiAgICA8L2tlbmRvLWRyb3Bkb3dubGlzdD5cblxuICAgIDxkaXYgY2xhc3M9XCJiZy1kYW5nZXJcIiAqbmdJZj1cImNvbnRyb2wuaW52YWxpZCAmJiBjb250cm9sLnRvdWNoZWRcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiY29udHJvbC5lcnJvcnNbJ3JlcXVpcmVkJ11cIj57e1xuICAgICAgICBcIlJlcXVpcmVkXCIgfCB0cmFuc2xhdGUgOiB7IHBhcmFtMDogbGFiZWxLZXkgfCB0cmFuc2xhdGUgfVxuICAgICAgfX08L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cImNvbnRyb2wuZXJyb3JzWydzZXJ2ZXJFcnJvck1zZyddXCI+e3tcbiAgICAgICAgY29udHJvbC5lcnJvcnNbXCJzZXJ2ZXJFcnJvck1zZ1wiXVxuICAgICAgfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -64,7 +64,7 @@ export class ObjectDropdownComponent extends FieldComponent {
64
64
  this.control.setValue(value);
65
65
  }
66
66
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ObjectDropdownComponent, deps: [{ token: i1.FormGroupDirective }, { token: i0.ElementRef }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
67
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: ObjectDropdownComponent, selector: "object-dropdown", inputs: { fieldName: "fieldName", labelKey: "labelKey", data: "data", selectedItem: "selectedItem", defaultName: "defaultName", rebind: "rebind" }, outputs: { selectedChange: "selectedChange" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"form-group\">\n <label\n for=\"{{ '_' + fieldName }}\"\n class=\"col-md-3 control-label\"\n translate=\"{{ labelKey }}\"\n ></label>\n <div class=\"col-md-9\" *ngIf=\"control\">\n <kendo-dropdownlist\n id=\"{{ '_' + fieldName }}\"\n [formControl]=\"control\"\n [data]=\"data$ | async\"\n [textField]=\"'description'\"\n [valueField]=\"'value'\"\n [valuePrimitive]=\"true\"\n [defaultItem]=\"defaultItem\"\n (valueChange)=\"onValueChange($event)\"\n >\n </kendo-dropdownlist>\n\n <div class=\"bg-danger\" *ngIf=\"control.invalid && control.touched\">\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", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i4.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["customIconClass", "showStickyHeader", "icon", "svgIcon", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "leftRightArrowsNavigation", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { 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: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], viewProviders: [
67
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: ObjectDropdownComponent, selector: "object-dropdown", inputs: { fieldName: "fieldName", labelKey: "labelKey", data: "data", selectedItem: "selectedItem", defaultName: "defaultName", rebind: "rebind" }, outputs: { selectedChange: "selectedChange" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"form-group\">\n <label for=\"{{ '_' + fieldName }}\" class=\"col-md-3 control-label\">{{\n labelKey | translate\n }}</label>\n <div class=\"col-md-9\" *ngIf=\"control\">\n <kendo-dropdownlist\n id=\"{{ '_' + fieldName }}\"\n [formControl]=\"control\"\n [data]=\"data$ | async\"\n [textField]=\"'description'\"\n [valueField]=\"'value'\"\n [valuePrimitive]=\"true\"\n [defaultItem]=\"defaultItem\"\n (valueChange)=\"onValueChange($event)\"\n >\n </kendo-dropdownlist>\n\n <div class=\"bg-danger\" *ngIf=\"control.invalid && control.touched\">\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", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["customIconClass", "showStickyHeader", "icon", "svgIcon", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "leftRightArrowsNavigation", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { 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: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], viewProviders: [
68
68
  { provide: ControlContainer, useExisting: FormGroupDirective },
69
69
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
70
70
  }
@@ -72,7 +72,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
72
72
  type: Component,
73
73
  args: [{ selector: 'object-dropdown', viewProviders: [
74
74
  { provide: ControlContainer, useExisting: FormGroupDirective },
75
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-group\">\n <label\n for=\"{{ '_' + fieldName }}\"\n class=\"col-md-3 control-label\"\n translate=\"{{ labelKey }}\"\n ></label>\n <div class=\"col-md-9\" *ngIf=\"control\">\n <kendo-dropdownlist\n id=\"{{ '_' + fieldName }}\"\n [formControl]=\"control\"\n [data]=\"data$ | async\"\n [textField]=\"'description'\"\n [valueField]=\"'value'\"\n [valuePrimitive]=\"true\"\n [defaultItem]=\"defaultItem\"\n (valueChange)=\"onValueChange($event)\"\n >\n </kendo-dropdownlist>\n\n <div class=\"bg-danger\" *ngIf=\"control.invalid && control.touched\">\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" }]
75
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-group\">\n <label for=\"{{ '_' + fieldName }}\" class=\"col-md-3 control-label\">{{\n labelKey | translate\n }}</label>\n <div class=\"col-md-9\" *ngIf=\"control\">\n <kendo-dropdownlist\n id=\"{{ '_' + fieldName }}\"\n [formControl]=\"control\"\n [data]=\"data$ | async\"\n [textField]=\"'description'\"\n [valueField]=\"'value'\"\n [valuePrimitive]=\"true\"\n [defaultItem]=\"defaultItem\"\n (valueChange)=\"onValueChange($event)\"\n >\n </kendo-dropdownlist>\n\n <div class=\"bg-danger\" *ngIf=\"control.invalid && control.touched\">\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" }]
76
76
  }], ctorParameters: () => [{ type: i1.FormGroupDirective }, { type: i0.ElementRef }, { type: i2.TranslateService }], propDecorators: { fieldName: [{
77
77
  type: Input
78
78
  }], labelKey: [{
@@ -88,4 +88,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
88
88
  }], selectedChange: [{
89
89
  type: Output
90
90
  }] } });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlbmRvL3NyYy9saWIvd2lkZ2V0cy9lbnRpdHktZWRpdC9kcm9wZG93bnMvb2JqZWN0LWRyb3Bkb3duL29iamVjdC1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZW5kby9zcmMvbGliL3dpZGdldHMvZW50aXR5LWVkaXQvZHJvcGRvd25zL29iamVjdC1kcm9wZG93bi9vYmplY3QtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ3pGLE9BQU8sRUFFTCxnQkFBZ0IsRUFDaEIsa0JBQWtCLEdBQ25CLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEIsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBRW5ELE1BQU0sV0FBVyxHQUFXLGNBQWMsQ0FBQztBQVUzQyxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsY0FBMEI7SUFrQnJFLElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsWUFDUyxNQUEwQixFQUMxQixJQUFnQixFQUNmLFNBQTJCO1FBRW5DLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBSm5CLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBQzFCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDZixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQVozQixtQkFBYyxHQUN0QixJQUFJLFlBQVksRUFBZ0IsQ0FBQztJQWNuQyxDQUFDO0lBRUQsUUFBUTtRQUNOLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVPLGNBQWM7UUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRztZQUNqQixLQUFLLEVBQUUsSUFBSTtZQUNYLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLFdBQVcsQ0FBQztTQUNyRSxDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVc7UUFDVCxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxXQUFXLEdBQW9DLElBQUksZUFBZSxDQUVwRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRU0sYUFBYSxDQUFDLEtBQWlCO1FBQ3BDLElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtZQUNsQixNQUFNLE1BQU0sR0FBaUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNqQzthQUFNO1lBQ0wsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUMzQztJQUNILENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxLQUFpQjtRQUN4QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxNQUFvQjtRQUM1QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRU8seUJBQXlCLENBQUMsWUFBd0I7UUFDeEQsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDcEM7SUFDSCxDQUFDO0lBRU8sZUFBZSxDQUFDLEtBQWlCO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7OEdBbEZVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLHNTQzVCcEMsdTVCQTZCQSxzeENETmlCO1lBQ2IsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFO1NBQy9EOzsyRkFHVSx1QkFBdUI7a0JBUm5DLFNBQVM7K0JBQ0UsaUJBQWlCLGlCQUVaO3dCQUNiLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRTtxQkFDL0QsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07K0lBSS9DLFNBQVM7c0JBRFIsS0FBSztnQkFHTixRQUFRO3NCQURQLEtBQUs7Z0JBR04sSUFBSTtzQkFESCxLQUFLO2dCQUdOLFlBQVk7c0JBRFgsS0FBSztnQkFHTixXQUFXO3NCQURWLEtBQUs7Z0JBR04sTUFBTTtzQkFETCxLQUFLO2dCQUVJLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9hbmd1bGFyL2Zvcm1zL3dpZGdldHMvZmllbGQvZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbENvbnRhaW5lcixcbiAgRm9ybUdyb3VwRGlyZWN0aXZlLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBTaW1wbGVPYmplY3QsIHZhbHVlVHlwZXMgfSBmcm9tICcuLi9zaW1wbGUtb2JqZWN0Lm1vZGVsJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5jb25zdCBTZWxlY3RWYWx1ZTogc3RyaW5nID0gJ1NlbGVjdCB2YWx1ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29iamVjdC1kcm9wZG93bicsXG4gIHRlbXBsYXRlVXJsOiAnLi9vYmplY3QtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICB2aWV3UHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBDb250cm9sQ29udGFpbmVyLCB1c2VFeGlzdGluZzogRm9ybUdyb3VwRGlyZWN0aXZlIH0sXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBPYmplY3REcm9wZG93bkNvbXBvbmVudCBleHRlbmRzIEZpZWxkQ29tcG9uZW50PHZhbHVlVHlwZXM+IHtcbiAgQElucHV0KClcbiAgZmllbGROYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIGxhYmVsS2V5OiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIGRhdGE6IFNpbXBsZU9iamVjdFtdO1xuICBASW5wdXQoKVxuICBzZWxlY3RlZEl0ZW0/OiB2YWx1ZVR5cGVzO1xuICBASW5wdXQoKVxuICBkZWZhdWx0TmFtZT86IHN0cmluZztcbiAgQElucHV0KClcbiAgcmViaW5kOiBzdHJpbmc7XG4gIEBPdXRwdXQoKSBzZWxlY3RlZENoYW5nZTogRXZlbnRFbWl0dGVyPFNpbXBsZU9iamVjdD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8U2ltcGxlT2JqZWN0PigpO1xuXG4gIHB1YmxpYyBkZWZhdWx0SXRlbTogU2ltcGxlT2JqZWN0O1xuICBwdWJsaWMgZGF0YSQ6IE9ic2VydmFibGU8U2ltcGxlT2JqZWN0W10+O1xuICBnZXQgY29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLnBhcmVudC5mb3JtLmdldCh0aGlzLmZpZWxkTmFtZSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcGFyZW50OiBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gICAgcHVibGljIGVyZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICkge1xuICAgIHN1cGVyKHBhcmVudCwgZXJlZiwgbnVsbCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuc2V0SW5wdXREYXRhKCk7XG4gICAgdGhpcy53cml0ZVNlbGVjdGVkSXRlbUlmRXhpc3RzKHRoaXMuc2VsZWN0ZWRJdGVtKTtcbiAgICB0aGlzLnNldERlZmF1bHRJdGVtKCk7XG4gIH1cblxuICBwcml2YXRlIHNldERlZmF1bHRJdGVtKCk6IHZvaWQge1xuICAgIHRoaXMuZGVmYXVsdEl0ZW0gPSB7XG4gICAgICB2YWx1ZTogbnVsbCxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHRoaXMuZGVmYXVsdE5hbWUgfHwgU2VsZWN0VmFsdWUpLFxuICAgIH07XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uQ2hhbmdlcygpO1xuICAgIHRoaXMuc2V0SW5wdXREYXRhKCk7XG4gICAgdGhpcy53cml0ZVNlbGVjdGVkSXRlbUlmRXhpc3RzKHRoaXMuc2VsZWN0ZWRJdGVtKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0SW5wdXREYXRhKCk6IHZvaWQge1xuICAgIGxldCBkYXRhU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PFNpbXBsZU9iamVjdFtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8XG4gICAgICBTaW1wbGVPYmplY3RbXVxuICAgID4odGhpcy5kYXRhKTtcbiAgICB0aGlzLmRhdGEkID0gZGF0YVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgb25WYWx1ZUNoYW5nZShldmVudDogdmFsdWVUeXBlcyk6IHZvaWQge1xuICAgIGlmIChldmVudCAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgZW50aXR5OiBTaW1wbGVPYmplY3QgPSB0aGlzLmdldEVudGl0eUJ5VmFsdWUoZXZlbnQpO1xuICAgICAgdGhpcy5lbWl0U2VsZWN0ZWRFbnRpdHkoZW50aXR5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbWl0U2VsZWN0ZWRFbnRpdHkodGhpcy5kZWZhdWx0SXRlbSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRFbnRpdHlCeVZhbHVlKGV2ZW50OiB2YWx1ZVR5cGVzKTogU2ltcGxlT2JqZWN0IHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmZpbmQoKHgpID0+IHgudmFsdWUgPT09IGV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0U2VsZWN0ZWRFbnRpdHkoZW50aXR5OiBTaW1wbGVPYmplY3QpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQoZW50aXR5KTtcbiAgfVxuXG4gIHByaXZhdGUgd3JpdGVTZWxlY3RlZEl0ZW1JZkV4aXN0cyhzZWxlY3RlZEl0ZW06IHZhbHVlVHlwZXMpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW0pIHtcbiAgICAgIHRoaXMuc2V0Q29udHJvbFZhbHVlKHNlbGVjdGVkSXRlbSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRDb250cm9sVmFsdWUodmFsdWU6IHZhbHVlVHlwZXMpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICA8bGFiZWxcbiAgICBmb3I9XCJ7eyAnXycgKyBmaWVsZE5hbWUgfX1cIlxuICAgIGNsYXNzPVwiY29sLW1kLTMgY29udHJvbC1sYWJlbFwiXG4gICAgdHJhbnNsYXRlPVwie3sgbGFiZWxLZXkgfX1cIlxuICA+PC9sYWJlbD5cbiAgPGRpdiBjbGFzcz1cImNvbC1tZC05XCIgKm5nSWY9XCJjb250cm9sXCI+XG4gICAgPGtlbmRvLWRyb3Bkb3dubGlzdFxuICAgICAgaWQ9XCJ7eyAnXycgKyBmaWVsZE5hbWUgfX1cIlxuICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgW2RhdGFdPVwiZGF0YSQgfCBhc3luY1wiXG4gICAgICBbdGV4dEZpZWxkXT1cIidkZXNjcmlwdGlvbidcIlxuICAgICAgW3ZhbHVlRmllbGRdPVwiJ3ZhbHVlJ1wiXG4gICAgICBbdmFsdWVQcmltaXRpdmVdPVwidHJ1ZVwiXG4gICAgICBbZGVmYXVsdEl0ZW1dPVwiZGVmYXVsdEl0ZW1cIlxuICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgPlxuICAgIDwva2VuZG8tZHJvcGRvd25saXN0PlxuXG4gICAgPGRpdiBjbGFzcz1cImJnLWRhbmdlclwiICpuZ0lmPVwiY29udHJvbC5pbnZhbGlkICYmIGNvbnRyb2wudG91Y2hlZFwiPlxuICAgICAgPHNwYW4gKm5nSWY9XCJjb250cm9sLmVycm9yc1sncmVxdWlyZWQnXVwiPnt7XG4gICAgICAgIFwiUmVxdWlyZWRcIiB8IHRyYW5zbGF0ZSA6IHsgcGFyYW0wOiBsYWJlbEtleSB8IHRyYW5zbGF0ZSB9XG4gICAgICB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiY29udHJvbC5lcnJvcnNbJ3NlcnZlckVycm9yTXNnJ11cIj57e1xuICAgICAgICBjb250cm9sLmVycm9yc1tcInNlcnZlckVycm9yTXNnXCJdXG4gICAgICB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlbmRvL3NyYy9saWIvd2lkZ2V0cy9lbnRpdHktZWRpdC9kcm9wZG93bnMvb2JqZWN0LWRyb3Bkb3duL29iamVjdC1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZW5kby9zcmMvbGliL3dpZGdldHMvZW50aXR5LWVkaXQvZHJvcGRvd25zL29iamVjdC1kcm9wZG93bi9vYmplY3QtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ3pGLE9BQU8sRUFFTCxnQkFBZ0IsRUFDaEIsa0JBQWtCLEdBQ25CLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEIsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBRW5ELE1BQU0sV0FBVyxHQUFXLGNBQWMsQ0FBQztBQVUzQyxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsY0FBMEI7SUFrQnJFLElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsWUFDUyxNQUEwQixFQUMxQixJQUFnQixFQUNmLFNBQTJCO1FBRW5DLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBSm5CLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBQzFCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDZixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQVozQixtQkFBYyxHQUN0QixJQUFJLFlBQVksRUFBZ0IsQ0FBQztJQWNuQyxDQUFDO0lBRUQsUUFBUTtRQUNOLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVPLGNBQWM7UUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRztZQUNqQixLQUFLLEVBQUUsSUFBSTtZQUNYLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLFdBQVcsQ0FBQztTQUNyRSxDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVc7UUFDVCxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxXQUFXLEdBQW9DLElBQUksZUFBZSxDQUVwRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRU0sYUFBYSxDQUFDLEtBQWlCO1FBQ3BDLElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtZQUNsQixNQUFNLE1BQU0sR0FBaUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNqQzthQUFNO1lBQ0wsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUMzQztJQUNILENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxLQUFpQjtRQUN4QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxNQUFvQjtRQUM1QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRU8seUJBQXlCLENBQUMsWUFBd0I7UUFDeEQsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDcEM7SUFDSCxDQUFDO0lBRU8sZUFBZSxDQUFDLEtBQWlCO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7OEdBbEZVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLHNTQzVCcEMseTRCQTJCQSwrb0NESmlCO1lBQ2IsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFO1NBQy9EOzsyRkFHVSx1QkFBdUI7a0JBUm5DLFNBQVM7K0JBQ0UsaUJBQWlCLGlCQUVaO3dCQUNiLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRTtxQkFDL0QsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07K0lBSS9DLFNBQVM7c0JBRFIsS0FBSztnQkFHTixRQUFRO3NCQURQLEtBQUs7Z0JBR04sSUFBSTtzQkFESCxLQUFLO2dCQUdOLFlBQVk7c0JBRFgsS0FBSztnQkFHTixXQUFXO3NCQURWLEtBQUs7Z0JBR04sTUFBTTtzQkFETCxLQUFLO2dCQUVJLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9hbmd1bGFyL2Zvcm1zL3dpZGdldHMvZmllbGQvZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbENvbnRhaW5lcixcbiAgRm9ybUdyb3VwRGlyZWN0aXZlLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBTaW1wbGVPYmplY3QsIHZhbHVlVHlwZXMgfSBmcm9tICcuLi9zaW1wbGUtb2JqZWN0Lm1vZGVsJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5jb25zdCBTZWxlY3RWYWx1ZTogc3RyaW5nID0gJ1NlbGVjdCB2YWx1ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29iamVjdC1kcm9wZG93bicsXG4gIHRlbXBsYXRlVXJsOiAnLi9vYmplY3QtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICB2aWV3UHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBDb250cm9sQ29udGFpbmVyLCB1c2VFeGlzdGluZzogRm9ybUdyb3VwRGlyZWN0aXZlIH0sXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBPYmplY3REcm9wZG93bkNvbXBvbmVudCBleHRlbmRzIEZpZWxkQ29tcG9uZW50PHZhbHVlVHlwZXM+IHtcbiAgQElucHV0KClcbiAgZmllbGROYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIGxhYmVsS2V5OiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIGRhdGE6IFNpbXBsZU9iamVjdFtdO1xuICBASW5wdXQoKVxuICBzZWxlY3RlZEl0ZW0/OiB2YWx1ZVR5cGVzO1xuICBASW5wdXQoKVxuICBkZWZhdWx0TmFtZT86IHN0cmluZztcbiAgQElucHV0KClcbiAgcmViaW5kOiBzdHJpbmc7XG4gIEBPdXRwdXQoKSBzZWxlY3RlZENoYW5nZTogRXZlbnRFbWl0dGVyPFNpbXBsZU9iamVjdD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8U2ltcGxlT2JqZWN0PigpO1xuXG4gIHB1YmxpYyBkZWZhdWx0SXRlbTogU2ltcGxlT2JqZWN0O1xuICBwdWJsaWMgZGF0YSQ6IE9ic2VydmFibGU8U2ltcGxlT2JqZWN0W10+O1xuICBnZXQgY29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLnBhcmVudC5mb3JtLmdldCh0aGlzLmZpZWxkTmFtZSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcGFyZW50OiBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gICAgcHVibGljIGVyZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICkge1xuICAgIHN1cGVyKHBhcmVudCwgZXJlZiwgbnVsbCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuc2V0SW5wdXREYXRhKCk7XG4gICAgdGhpcy53cml0ZVNlbGVjdGVkSXRlbUlmRXhpc3RzKHRoaXMuc2VsZWN0ZWRJdGVtKTtcbiAgICB0aGlzLnNldERlZmF1bHRJdGVtKCk7XG4gIH1cblxuICBwcml2YXRlIHNldERlZmF1bHRJdGVtKCk6IHZvaWQge1xuICAgIHRoaXMuZGVmYXVsdEl0ZW0gPSB7XG4gICAgICB2YWx1ZTogbnVsbCxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHRoaXMuZGVmYXVsdE5hbWUgfHwgU2VsZWN0VmFsdWUpLFxuICAgIH07XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uQ2hhbmdlcygpO1xuICAgIHRoaXMuc2V0SW5wdXREYXRhKCk7XG4gICAgdGhpcy53cml0ZVNlbGVjdGVkSXRlbUlmRXhpc3RzKHRoaXMuc2VsZWN0ZWRJdGVtKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0SW5wdXREYXRhKCk6IHZvaWQge1xuICAgIGxldCBkYXRhU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PFNpbXBsZU9iamVjdFtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8XG4gICAgICBTaW1wbGVPYmplY3RbXVxuICAgID4odGhpcy5kYXRhKTtcbiAgICB0aGlzLmRhdGEkID0gZGF0YVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgb25WYWx1ZUNoYW5nZShldmVudDogdmFsdWVUeXBlcyk6IHZvaWQge1xuICAgIGlmIChldmVudCAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgZW50aXR5OiBTaW1wbGVPYmplY3QgPSB0aGlzLmdldEVudGl0eUJ5VmFsdWUoZXZlbnQpO1xuICAgICAgdGhpcy5lbWl0U2VsZWN0ZWRFbnRpdHkoZW50aXR5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbWl0U2VsZWN0ZWRFbnRpdHkodGhpcy5kZWZhdWx0SXRlbSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRFbnRpdHlCeVZhbHVlKGV2ZW50OiB2YWx1ZVR5cGVzKTogU2ltcGxlT2JqZWN0IHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmZpbmQoKHgpID0+IHgudmFsdWUgPT09IGV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0U2VsZWN0ZWRFbnRpdHkoZW50aXR5OiBTaW1wbGVPYmplY3QpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQoZW50aXR5KTtcbiAgfVxuXG4gIHByaXZhdGUgd3JpdGVTZWxlY3RlZEl0ZW1JZkV4aXN0cyhzZWxlY3RlZEl0ZW06IHZhbHVlVHlwZXMpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW0pIHtcbiAgICAgIHRoaXMuc2V0Q29udHJvbFZhbHVlKHNlbGVjdGVkSXRlbSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRDb250cm9sVmFsdWUodmFsdWU6IHZhbHVlVHlwZXMpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICA8bGFiZWwgZm9yPVwie3sgJ18nICsgZmllbGROYW1lIH19XCIgY2xhc3M9XCJjb2wtbWQtMyBjb250cm9sLWxhYmVsXCI+e3tcbiAgICBsYWJlbEtleSB8IHRyYW5zbGF0ZVxuICB9fTwvbGFiZWw+XG4gIDxkaXYgY2xhc3M9XCJjb2wtbWQtOVwiICpuZ0lmPVwiY29udHJvbFwiPlxuICAgIDxrZW5kby1kcm9wZG93bmxpc3RcbiAgICAgIGlkPVwie3sgJ18nICsgZmllbGROYW1lIH19XCJcbiAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgIFtkYXRhXT1cImRhdGEkIHwgYXN5bmNcIlxuICAgICAgW3RleHRGaWVsZF09XCInZGVzY3JpcHRpb24nXCJcbiAgICAgIFt2YWx1ZUZpZWxkXT1cIid2YWx1ZSdcIlxuICAgICAgW3ZhbHVlUHJpbWl0aXZlXT1cInRydWVcIlxuICAgICAgW2RlZmF1bHRJdGVtXT1cImRlZmF1bHRJdGVtXCJcbiAgICAgICh2YWx1ZUNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgID5cbiAgICA8L2tlbmRvLWRyb3Bkb3dubGlzdD5cblxuICAgIDxkaXYgY2xhc3M9XCJiZy1kYW5nZXJcIiAqbmdJZj1cImNvbnRyb2wuaW52YWxpZCAmJiBjb250cm9sLnRvdWNoZWRcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiY29udHJvbC5lcnJvcnNbJ3JlcXVpcmVkJ11cIj57e1xuICAgICAgICBcIlJlcXVpcmVkXCIgfCB0cmFuc2xhdGUgOiB7IHBhcmFtMDogbGFiZWxLZXkgfCB0cmFuc2xhdGUgfVxuICAgICAgfX08L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cImNvbnRyb2wuZXJyb3JzWydzZXJ2ZXJFcnJvck1zZyddXCI+e3tcbiAgICAgICAgY29udHJvbC5lcnJvcnNbXCJzZXJ2ZXJFcnJvck1zZ1wiXVxuICAgICAgfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -2944,6 +2944,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
2944
2944
 
2945
2945
  const SelectValue$1 = 'Select value';
2946
2946
  const defaultFieldName = 'name';
2947
+ const defaultValueField$1 = 'id';
2947
2948
  class FieldDropdownComponent extends FieldComponent {
2948
2949
  get control() {
2949
2950
  return this.parent.form.get(this.fieldName);
@@ -2954,6 +2955,7 @@ class FieldDropdownComponent extends FieldComponent {
2954
2955
  this.eref = eref;
2955
2956
  this.translate = translate;
2956
2957
  this.textField = defaultFieldName;
2958
+ this.valueField = defaultValueField$1;
2957
2959
  this.selectedChange = new EventEmitter();
2958
2960
  }
2959
2961
  ngOnInit() {
@@ -2968,7 +2970,7 @@ class FieldDropdownComponent extends FieldComponent {
2968
2970
  onValueChange(event) {
2969
2971
  let entity = undefined;
2970
2972
  if (event !== null) {
2971
- entity = this.getEntityById(event);
2973
+ entity = this.getEntityByValue(event);
2972
2974
  }
2973
2975
  this.emitSelectedEntity(entity || this.defaultItem);
2974
2976
  }
@@ -2981,41 +2983,37 @@ class FieldDropdownComponent extends FieldComponent {
2981
2983
  else {
2982
2984
  this.data$ = this.service
2983
2985
  .getPage(this.filter ? { filter: this.filter } : {})
2984
- .pipe(tap$1((x) => {
2985
- this.items = x.data;
2986
+ .pipe(tap$1((response) => {
2987
+ this.items = response.data;
2986
2988
  this.handleSelectedEntity();
2987
- }), map$1((x) => x.data));
2989
+ }), map$1((response) => response.data));
2988
2990
  }
2989
2991
  }
2990
2992
  setDefaultItem() {
2991
2993
  this.defaultItem = {
2992
2994
  name: this.setDefaultName(),
2993
2995
  id: null,
2996
+ [this.textField]: this.setDefaultName(),
2997
+ [this.valueField]: null,
2994
2998
  };
2995
- if (this.textField !== defaultFieldName) {
2996
- this.setTextFieldForDefaultItem();
2997
- }
2998
- }
2999
- setTextFieldForDefaultItem() {
3000
- this.defaultItem[this.textField] = this.setDefaultName();
3001
2999
  }
3002
3000
  setDefaultName() {
3003
3001
  return this.translate.instant(this.defaultName || SelectValue$1);
3004
3002
  }
3005
3003
  handleSelectedEntity() {
3006
3004
  if (this.selectedItem) {
3007
- const selectedEntity = this.updateControlValue(this.selectedItem.id);
3008
- if (selectedEntity?.id) {
3009
- this.onValueChange(selectedEntity.id);
3010
- this.writeSelectedEntityValue(selectedEntity.id);
3005
+ const selectedEntity = this.updateControlValue(this.selectedItem[this.valueField]);
3006
+ if (selectedEntity && selectedEntity[this.valueField] !== null) {
3007
+ this.onValueChange(selectedEntity[this.valueField]);
3008
+ this.writeSelectedEntityValue(selectedEntity[this.valueField]);
3011
3009
  }
3012
3010
  }
3013
3011
  else {
3014
3012
  this.updateControlValue(this.control.value);
3015
3013
  }
3016
3014
  }
3017
- updateControlValue(entityId) {
3018
- const entity = this.getEntityById(entityId);
3015
+ updateControlValue(value) {
3016
+ const entity = this.getEntityByValue(value);
3019
3017
  if (entity) {
3020
3018
  this.setControlValue(entity);
3021
3019
  }
@@ -3024,18 +3022,16 @@ class FieldDropdownComponent extends FieldComponent {
3024
3022
  }
3025
3023
  return entity;
3026
3024
  }
3027
- getEntityById(entityId) {
3028
- let entity;
3025
+ getEntityByValue(value) {
3029
3026
  if (this.data) {
3030
- entity = this.data.find((x) => x.id === entityId);
3027
+ return this.data.find((x) => x[this.valueField] === value);
3031
3028
  }
3032
3029
  else {
3033
- entity = this.items.find((x) => x.id === entityId);
3030
+ return this.items.find((x) => x[this.valueField] === value);
3034
3031
  }
3035
- return entity;
3036
3032
  }
3037
3033
  setControlValue(entity) {
3038
- this.control.setValue(entity.id);
3034
+ this.control.setValue(entity[this.valueField]);
3039
3035
  }
3040
3036
  resetControlValue() {
3041
3037
  this.control.reset();
@@ -3043,11 +3039,11 @@ class FieldDropdownComponent extends FieldComponent {
3043
3039
  emitSelectedEntity(entity) {
3044
3040
  this.selectedChange.emit(entity);
3045
3041
  }
3046
- writeSelectedEntityValue(selectedEntityId) {
3047
- this.kendoDropDown?.writeValue(selectedEntityId);
3042
+ writeSelectedEntityValue(value) {
3043
+ this.kendoDropDown?.writeValue(value);
3048
3044
  }
3049
3045
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FieldDropdownComponent, deps: [{ token: i1$3.FormGroupDirective }, { token: i0.ElementRef }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
3050
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: FieldDropdownComponent, selector: "field-dropdown", inputs: { service: "service", rebind: "rebind", filter: "filter", defaultName: "defaultName", selectedItem: "selectedItem", data: "data", textField: "textField" }, outputs: { selectedChange: "selectedChange" }, viewQueries: [{ propertyName: "kendoDropDown", first: true, predicate: ["inputElement"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"form-group\">\n <label\n for=\"{{ '_' + fieldName }}\"\n class=\"col-md-3 control-label\"\n translate=\"{{ labelKey }}\"\n ></label>\n <div class=\"col-md-9\" *ngIf=\"control\">\n <kendo-dropdownlist\n id=\"{{ '_' + fieldName }}\"\n [formControl]=\"control\"\n [data]=\"data$ | async\"\n [textField]=\"textField\"\n valueField=\"id\"\n [valuePrimitive]=\"true\"\n [defaultItem]=\"defaultItem\"\n (valueChange)=\"onValueChange($event)\"\n #inputElement\n >\n </kendo-dropdownlist>\n\n <div class=\"bg-danger\" *ngIf=\"control.invalid && control.touched\">\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", dependencies: [{ kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i5.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["customIconClass", "showStickyHeader", "icon", "svgIcon", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "leftRightArrowsNavigation", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { 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: "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: [
3046
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: FieldDropdownComponent, selector: "field-dropdown", inputs: { service: "service", rebind: "rebind", filter: "filter", defaultName: "defaultName", selectedItem: "selectedItem", data: "data", textField: "textField", valueField: "valueField" }, outputs: { selectedChange: "selectedChange" }, viewQueries: [{ propertyName: "kendoDropDown", first: true, predicate: ["inputElement"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"form-group\">\n <label for=\"{{ '_' + fieldName }}\" class=\"col-md-3 control-label\">{{\n labelKey | translate\n }}</label>\n <div class=\"col-md-9\" *ngIf=\"control\">\n <kendo-dropdownlist\n id=\"{{ '_' + fieldName }}\"\n [formControl]=\"control\"\n [data]=\"data$ | async\"\n [textField]=\"textField\"\n [valueField]=\"valueField\"\n [valuePrimitive]=\"true\"\n [defaultItem]=\"defaultItem\"\n (valueChange)=\"onValueChange($event)\"\n #inputElement\n >\n </kendo-dropdownlist>\n\n <div class=\"bg-danger\" *ngIf=\"control.invalid && control.touched\">\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", dependencies: [{ kind: "component", type: i5.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["customIconClass", "showStickyHeader", "icon", "svgIcon", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "leftRightArrowsNavigation", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { 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: "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: [
3051
3047
  { provide: ControlContainer, useExisting: FormGroupDirective },
3052
3048
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3053
3049
  }
@@ -3055,7 +3051,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
3055
3051
  type: Component,
3056
3052
  args: [{ selector: 'field-dropdown', viewProviders: [
3057
3053
  { provide: ControlContainer, useExisting: FormGroupDirective },
3058
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-group\">\n <label\n for=\"{{ '_' + fieldName }}\"\n class=\"col-md-3 control-label\"\n translate=\"{{ labelKey }}\"\n ></label>\n <div class=\"col-md-9\" *ngIf=\"control\">\n <kendo-dropdownlist\n id=\"{{ '_' + fieldName }}\"\n [formControl]=\"control\"\n [data]=\"data$ | async\"\n [textField]=\"textField\"\n valueField=\"id\"\n [valuePrimitive]=\"true\"\n [defaultItem]=\"defaultItem\"\n (valueChange)=\"onValueChange($event)\"\n #inputElement\n >\n </kendo-dropdownlist>\n\n <div class=\"bg-danger\" *ngIf=\"control.invalid && control.touched\">\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" }]
3054
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-group\">\n <label for=\"{{ '_' + fieldName }}\" class=\"col-md-3 control-label\">{{\n labelKey | translate\n }}</label>\n <div class=\"col-md-9\" *ngIf=\"control\">\n <kendo-dropdownlist\n id=\"{{ '_' + fieldName }}\"\n [formControl]=\"control\"\n [data]=\"data$ | async\"\n [textField]=\"textField\"\n [valueField]=\"valueField\"\n [valuePrimitive]=\"true\"\n [defaultItem]=\"defaultItem\"\n (valueChange)=\"onValueChange($event)\"\n #inputElement\n >\n </kendo-dropdownlist>\n\n <div class=\"bg-danger\" *ngIf=\"control.invalid && control.touched\">\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" }]
3059
3055
  }], ctorParameters: () => [{ type: i1$3.FormGroupDirective }, { type: i0.ElementRef }, { type: i2.TranslateService }], propDecorators: { service: [{
3060
3056
  type: Input
3061
3057
  }], rebind: [{
@@ -3070,6 +3066,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
3070
3066
  type: Input
3071
3067
  }], textField: [{
3072
3068
  type: Input
3069
+ }], valueField: [{
3070
+ type: Input
3073
3071
  }], selectedChange: [{
3074
3072
  type: Output
3075
3073
  }], kendoDropDown: [{
@@ -4247,7 +4245,7 @@ class ObjectDropdownComponent extends FieldComponent {
4247
4245
  this.control.setValue(value);
4248
4246
  }
4249
4247
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ObjectDropdownComponent, deps: [{ token: i1$3.FormGroupDirective }, { token: i0.ElementRef }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
4250
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: ObjectDropdownComponent, selector: "object-dropdown", inputs: { fieldName: "fieldName", labelKey: "labelKey", data: "data", selectedItem: "selectedItem", defaultName: "defaultName", rebind: "rebind" }, outputs: { selectedChange: "selectedChange" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"form-group\">\n <label\n for=\"{{ '_' + fieldName }}\"\n class=\"col-md-3 control-label\"\n translate=\"{{ labelKey }}\"\n ></label>\n <div class=\"col-md-9\" *ngIf=\"control\">\n <kendo-dropdownlist\n id=\"{{ '_' + fieldName }}\"\n [formControl]=\"control\"\n [data]=\"data$ | async\"\n [textField]=\"'description'\"\n [valueField]=\"'value'\"\n [valuePrimitive]=\"true\"\n [defaultItem]=\"defaultItem\"\n (valueChange)=\"onValueChange($event)\"\n >\n </kendo-dropdownlist>\n\n <div class=\"bg-danger\" *ngIf=\"control.invalid && control.touched\">\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", dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i5.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["customIconClass", "showStickyHeader", "icon", "svgIcon", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "leftRightArrowsNavigation", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { 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: "pipe", type: i2$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], viewProviders: [
4248
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: ObjectDropdownComponent, selector: "object-dropdown", inputs: { fieldName: "fieldName", labelKey: "labelKey", data: "data", selectedItem: "selectedItem", defaultName: "defaultName", rebind: "rebind" }, outputs: { selectedChange: "selectedChange" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"form-group\">\n <label for=\"{{ '_' + fieldName }}\" class=\"col-md-3 control-label\">{{\n labelKey | translate\n }}</label>\n <div class=\"col-md-9\" *ngIf=\"control\">\n <kendo-dropdownlist\n id=\"{{ '_' + fieldName }}\"\n [formControl]=\"control\"\n [data]=\"data$ | async\"\n [textField]=\"'description'\"\n [valueField]=\"'value'\"\n [valuePrimitive]=\"true\"\n [defaultItem]=\"defaultItem\"\n (valueChange)=\"onValueChange($event)\"\n >\n </kendo-dropdownlist>\n\n <div class=\"bg-danger\" *ngIf=\"control.invalid && control.touched\">\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", dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["customIconClass", "showStickyHeader", "icon", "svgIcon", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "leftRightArrowsNavigation", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { 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: "pipe", type: i2$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], viewProviders: [
4251
4249
  { provide: ControlContainer, useExisting: FormGroupDirective },
4252
4250
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4253
4251
  }
@@ -4255,7 +4253,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
4255
4253
  type: Component,
4256
4254
  args: [{ selector: 'object-dropdown', viewProviders: [
4257
4255
  { provide: ControlContainer, useExisting: FormGroupDirective },
4258
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-group\">\n <label\n for=\"{{ '_' + fieldName }}\"\n class=\"col-md-3 control-label\"\n translate=\"{{ labelKey }}\"\n ></label>\n <div class=\"col-md-9\" *ngIf=\"control\">\n <kendo-dropdownlist\n id=\"{{ '_' + fieldName }}\"\n [formControl]=\"control\"\n [data]=\"data$ | async\"\n [textField]=\"'description'\"\n [valueField]=\"'value'\"\n [valuePrimitive]=\"true\"\n [defaultItem]=\"defaultItem\"\n (valueChange)=\"onValueChange($event)\"\n >\n </kendo-dropdownlist>\n\n <div class=\"bg-danger\" *ngIf=\"control.invalid && control.touched\">\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" }]
4256
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-group\">\n <label for=\"{{ '_' + fieldName }}\" class=\"col-md-3 control-label\">{{\n labelKey | translate\n }}</label>\n <div class=\"col-md-9\" *ngIf=\"control\">\n <kendo-dropdownlist\n id=\"{{ '_' + fieldName }}\"\n [formControl]=\"control\"\n [data]=\"data$ | async\"\n [textField]=\"'description'\"\n [valueField]=\"'value'\"\n [valuePrimitive]=\"true\"\n [defaultItem]=\"defaultItem\"\n (valueChange)=\"onValueChange($event)\"\n >\n </kendo-dropdownlist>\n\n <div class=\"bg-danger\" *ngIf=\"control.invalid && control.touched\">\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" }]
4259
4257
  }], ctorParameters: () => [{ type: i1$3.FormGroupDirective }, { type: i0.ElementRef }, { type: i2.TranslateService }], propDecorators: { fieldName: [{
4260
4258
  type: Input
4261
4259
  }], labelKey: [{