@acorex/components 3.0.44 → 3.0.48

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.
Files changed (59) hide show
  1. package/acorex-components.metadata.json +1 -1
  2. package/bundles/acorex-components.umd.js +212 -102
  3. package/bundles/acorex-components.umd.js.map +1 -1
  4. package/bundles/acorex-components.umd.min.js +1 -1
  5. package/bundles/acorex-components.umd.min.js.map +1 -1
  6. package/esm2015/lib/calendar/calendar-box/calendar-box.component.js +4 -4
  7. package/esm2015/lib/checkbox/checkbox.component.js +17 -17
  8. package/esm2015/lib/date-picker/date-picker.component.js +5 -4
  9. package/esm2015/lib/number-box/number-box.component.js +16 -6
  10. package/esm2015/lib/property-editor/editors/color-editor/color.editor.js +2 -2
  11. package/esm2015/lib/property-editor/editors/column-editor/column.editor.js +2 -2
  12. package/esm2015/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.js +2 -2
  13. package/esm2015/lib/property-editor/editors/date-editor/date.editor.js +2 -2
  14. package/esm2015/lib/property-editor/editors/number-editor/number.editor.js +2 -2
  15. package/esm2015/lib/property-editor/editors/range-editor/range.editor.js +2 -2
  16. package/esm2015/lib/property-editor/editors/selectbox-editor/selectbox.editor.js +22 -12
  17. package/esm2015/lib/property-editor/editors/switch-editor/number.editor.js +2 -2
  18. package/esm2015/lib/property-editor/editors/text-editor/text.editor.js +2 -2
  19. package/esm2015/lib/property-editor/editors/time-editor/time.editor.js +2 -2
  20. package/esm2015/lib/property-editor/property-editor-renderer.directive.js +83 -37
  21. package/esm2015/lib/property-editor/property-editor.class.js +18 -4
  22. package/esm2015/lib/query-builder/query-builder-group.component.js +2 -1
  23. package/esm2015/lib/query-builder/query-builder.service.js +4 -1
  24. package/esm2015/lib/selectbox/selectbox.component.js +6 -3
  25. package/esm2015/lib/selection-list/selection-list.component.js +6 -7
  26. package/esm2015/lib/tab-strip/tab-strip.component.js +11 -9
  27. package/esm2015/lib/tree-view/tree-view.component.js +12 -4
  28. package/esm5/lib/calendar/calendar-box/calendar-box.component.js +4 -4
  29. package/esm5/lib/checkbox/checkbox.component.js +17 -18
  30. package/esm5/lib/date-picker/date-picker.component.js +5 -4
  31. package/esm5/lib/number-box/number-box.component.js +16 -6
  32. package/esm5/lib/property-editor/editors/color-editor/color.editor.js +2 -2
  33. package/esm5/lib/property-editor/editors/column-editor/column.editor.js +2 -2
  34. package/esm5/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.js +2 -2
  35. package/esm5/lib/property-editor/editors/date-editor/date.editor.js +2 -2
  36. package/esm5/lib/property-editor/editors/number-editor/number.editor.js +2 -2
  37. package/esm5/lib/property-editor/editors/range-editor/range.editor.js +2 -2
  38. package/esm5/lib/property-editor/editors/selectbox-editor/selectbox.editor.js +26 -12
  39. package/esm5/lib/property-editor/editors/switch-editor/number.editor.js +2 -2
  40. package/esm5/lib/property-editor/editors/text-editor/text.editor.js +2 -2
  41. package/esm5/lib/property-editor/editors/time-editor/time.editor.js +2 -2
  42. package/esm5/lib/property-editor/property-editor-renderer.directive.js +89 -39
  43. package/esm5/lib/property-editor/property-editor.class.js +24 -4
  44. package/esm5/lib/query-builder/query-builder-group.component.js +2 -1
  45. package/esm5/lib/query-builder/query-builder.service.js +4 -1
  46. package/esm5/lib/selectbox/selectbox.component.js +6 -3
  47. package/esm5/lib/selection-list/selection-list.component.js +3 -4
  48. package/esm5/lib/tab-strip/tab-strip.component.js +11 -9
  49. package/esm5/lib/tree-view/tree-view.component.js +12 -4
  50. package/fesm2015/acorex-components.js +200 -103
  51. package/fesm2015/acorex-components.js.map +1 -1
  52. package/fesm5/acorex-components.js +213 -103
  53. package/fesm5/acorex-components.js.map +1 -1
  54. package/lib/number-box/number-box.component.d.ts +1 -0
  55. package/lib/property-editor/editors/selectbox-editor/selectbox.editor.d.ts +7 -4
  56. package/lib/property-editor/property-editor-renderer.directive.d.ts +5 -3
  57. package/lib/property-editor/property-editor.class.d.ts +4 -2
  58. package/lib/tree-view/tree-view.component.d.ts +1 -0
  59. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  import { __decorate, __metadata, __extends, __spread, __param, __assign, __awaiter, __generator, __asyncValues } from 'tslib';
2
2
  import { Input, Component, EventEmitter, ContentChildren, QueryList, Output, ViewChild, ContentChild, ElementRef, ɵɵdefineInjectable, ɵɵinject, Injectable, ComponentFactoryResolver, Injector, NgZone, Inject, RendererFactory2, INJECTOR, TemplateRef, ApplicationRef, ChangeDetectorRef, HostListener, ViewEncapsulation, NgModule, ChangeDetectionStrategy, Attribute, Directive, ViewContainerRef, Renderer2, ViewChildren } from '@angular/core';
3
- import { AXTranslator, AXHtmlUtil, AXRenderService, AXConfig, AXDateTime, AXDateTimeRange, AXCoreModule, AXMenuItem, AXTranslatorModule, AXObjectUtil, AXScrollModule, getPropByPath, AXColorUtil } from '@acorex/core';
3
+ import { AXTranslator, AXHtmlUtil, AXRenderService, AXConfig, AXDateTime, AXDateTimeRange, AXCoreModule, AXMenuItem, AXTranslatorModule, AXObjectUtil, AXScrollModule, setPropByPath, AXEventService, AXColorUtil } from '@acorex/core';
4
4
  import { OverlayContainer, ScrollStrategyOptions, OverlayPositionBuilder, OverlayKeyboardDispatcher, Overlay, OverlayModule } from '@angular/cdk/overlay';
5
5
  import { TemplatePortal, ComponentPortal, CdkPortalOutlet, PortalModule } from '@angular/cdk/portal';
6
6
  import { merge, Subject, Observable } from 'rxjs';
@@ -1171,7 +1171,7 @@ var AXCalendarBoxComponent = /** @class */ (function () {
1171
1171
  configurable: true
1172
1172
  });
1173
1173
  AXCalendarBoxComponent.prototype.findDay = function (date) {
1174
- if (this.dayStyle.find(function (c) { return c.date == date.toISOString().split('T')[0]; })) {
1174
+ if (this.dayStyle.find(function (c) { return c.date.split('T')[0] == date.toISOString().split('T')[0]; })) {
1175
1175
  return true;
1176
1176
  }
1177
1177
  else {
@@ -1179,8 +1179,8 @@ var AXCalendarBoxComponent = /** @class */ (function () {
1179
1179
  }
1180
1180
  };
1181
1181
  AXCalendarBoxComponent.prototype.getStyle = function (date) {
1182
- if (this.dayStyle.find(function (c) { return c.date == date.toISOString().split('T')[0]; })) {
1183
- return this.dayStyle.find(function (c) { return c.date == date.toISOString().split('T')[0]; }).style;
1182
+ if (this.dayStyle.find(function (c) { return c.date.split('T')[0] == date.toISOString().split('T')[0]; })) {
1183
+ return this.dayStyle.find(function (c) { return c.date.split('T')[0] == date.toISOString().split('T')[0]; }).style;
1184
1184
  }
1185
1185
  else {
1186
1186
  return '';
@@ -3523,7 +3523,7 @@ var AXCheckBoxComponent = /** @class */ (function (_super) {
3523
3523
  return this._value;
3524
3524
  },
3525
3525
  set: function (v) {
3526
- if (v != this._value || v !== undefined) {
3526
+ if (v != this._value && v !== undefined) {
3527
3527
  var old = this._value;
3528
3528
  this._value = v;
3529
3529
  this.valueChange.emit(v);
@@ -3548,21 +3548,20 @@ var AXCheckBoxComponent = /** @class */ (function (_super) {
3548
3548
  }
3549
3549
  };
3550
3550
  AXCheckBoxComponent.prototype.handleClick = function (e) {
3551
- var _this = this;
3552
- // e.preventDefault();
3553
- // e.stopPropagation();
3554
- setTimeout(function () {
3555
- if (!_this.disabled && !_this.readonly) {
3556
- //TODO: check intermddiate;
3557
- // this.value = !this.value;
3558
- _this.onClick.emit({
3559
- component: _this,
3560
- htmlElement: _this.ref.nativeElement,
3561
- htmlEvent: e,
3562
- value: _this.value
3563
- });
3564
- }
3565
- }, 100);
3551
+ e.preventDefault();
3552
+ e.stopPropagation();
3553
+ // setTimeout(() => {
3554
+ if (!this.disabled && !this.readonly) {
3555
+ //TODO: check intermddiate;
3556
+ this.value = !this.value;
3557
+ this.onClick.emit({
3558
+ component: this,
3559
+ htmlElement: this.ref.nativeElement,
3560
+ htmlEvent: e,
3561
+ value: this.value
3562
+ });
3563
+ }
3564
+ // }, 100);
3566
3565
  };
3567
3566
  AXCheckBoxComponent.ctorParameters = function () { return [
3568
3567
  { type: ChangeDetectorRef },
@@ -3616,7 +3615,7 @@ var AXCheckBoxComponent = /** @class */ (function (_super) {
3616
3615
  AXCheckBoxComponent = __decorate([
3617
3616
  Component({
3618
3617
  selector: 'ax-check-box',
3619
- template: "<!-- <label class=\"ax checkbox {{size}}\" for=\"{{uid}}\" [ngClass]=\"{ 'disabled': disabled, 'readonly': readonly }\"\r\n (click)=\"handleClick($event)\">\r\n {{ label }}\r\n <input #input type=\"checkbox\" id=\"{{uid}}\" [readonly]=\"readonly\" [checked]=\"value\"\r\n [disabled]=\"disabled || readonly\" />\r\n <span class=\"checkmark\" [ngClass]=\"{'indeterminate': indeterminate && value == null}\"></span>\r\n\r\n</label> -->\r\n\r\n<label for=\"{{uid}}\" class=\"ax-checkbox-container\" [ngClass]=\"{ 'disabled': disabled, 'readonly': readonly }\"\r\n (click)=\"handleClick($event)\">\r\n <input #input type=\"checkbox\" class=\"ax-checkbox\" [ngClass]=\"{'indeterminate': indeterminate && value == null}\"\r\n id=\"{{uid}}\" [readonly]=\"readonly\" [checked]=\"value\" [(ngModel)]=\"value\" [disabled]=\"disabled || readonly\" />\r\n <span>{{ label ? label : '&nbsp;' }}</span>\r\n</label>",
3618
+ template: "<!-- <label class=\"ax checkbox {{size}}\" for=\"{{uid}}\" [ngClass]=\"{ 'disabled': disabled, 'readonly': readonly }\"\r\n (click)=\"handleClick($event)\">\r\n {{ label }}\r\n <input #input type=\"checkbox\" id=\"{{uid}}\" [readonly]=\"readonly\" [checked]=\"value\"\r\n [disabled]=\"disabled || readonly\" />\r\n <span class=\"checkmark\" [ngClass]=\"{'indeterminate': indeterminate && value == null}\"></span>\r\n\r\n</label> -->\r\n\r\n\r\n<!-- [(ngModel)]=\"value\" -->\r\n<!-- (click)=\"handleClick($event)\" -->\r\n\r\n<label class=\"ax-checkbox-container\" for=\"{{uid}}\" [ngClass]=\"{ 'disabled': disabled, 'readonly': readonly }\">\r\n\r\n <input #input class=\"ax-checkbox\" type=\"checkbox\" id=\"{{uid}}\" [readonly]=\"readonly\" [class.checked]=\"value\"\r\n [checked]=\"value\" [ngClass]=\"{'indeterminate': indeterminate && value == null}\" (click)=\"handleClick($event)\"\r\n [disabled]=\"disabled || readonly\" />\r\n\r\n\r\n <span>{{ label ? label : '&nbsp;' }}</span>\r\n</label>",
3620
3619
  encapsulation: ViewEncapsulation.None,
3621
3620
  changeDetection: ChangeDetectionStrategy.OnPush
3622
3621
  }),
@@ -4020,8 +4019,7 @@ var AXSelectionListComponent = /** @class */ (function (_super) {
4020
4019
  }
4021
4020
  }
4022
4021
  };
4023
- AXSelectionListComponent.prototype.focus = function () {
4024
- };
4022
+ AXSelectionListComponent.prototype.focus = function () { };
4025
4023
  AXSelectionListComponent.prototype.onvalueChanged = function (e) {
4026
4024
  if (!this.disabled) {
4027
4025
  this.selectedItemsChange.emit([e]);
@@ -4087,7 +4085,7 @@ var AXSelectionListComponent = /** @class */ (function (_super) {
4087
4085
  AXSelectionListComponent = __decorate([
4088
4086
  Component({
4089
4087
  selector: 'ax-selection-list',
4090
- template: "<ng-container *ngIf=\" mode == 'multiple'; then checkboxList; else radioButtonList\"></ng-container>\r\n<ng-template #checkboxList>\r\n <div class=\"ax selection-list {{size}}\" [ngClass]=\"direction\">\r\n <ax-check-box label=\"{{item[textField]}}\" *ngFor=\"let item of items\" [disabled]=\"disabled\" [readonly]=\"disabled\"\r\n [value]=\"selectedValues.indexOf(item[valueField])>-1\"\r\n (onValueChanged)=\"onCheckValueChange(item[valueField],$event.value)\">\r\n </ax-check-box>\r\n </div>\r\n</ng-template>\r\n<ng-template #radioButtonList>\r\n <div class=\"ax selection-list {{size}}\" [ngClass]=\"direction\">\r\n <label class=\"ax radio\" for=\"{{uid}}\" [class.disabled]=\"disabled\" [class.readonly]=\"disabled\"\r\n *ngFor=\"let item of items\" (click)=\"onvalueChanged(item)\">\r\n {{ item[textField] }}\r\n <input type=\"radio\" (change)=\"onCheckValueChange(item[valueField],true)\" [value]=\"item[valueField]\"\r\n [checked]=\"selectedValues==item[valueField]\" [name]=\"uid\" [disabled]=\"disabled\" [readonly]=\"readonly\" />\r\n <span class=\"checkmark\"></span>\r\n </label>\r\n </div>\r\n</ng-template>",
4088
+ template: "<ng-container *ngIf=\" mode == 'multiple'; then checkboxList; else radioButtonList\"></ng-container>\r\n<ng-template #checkboxList>\r\n <div class=\"ax selection-list {{size}}\" [ngClass]=\"direction\">\r\n <ax-check-box label=\"{{item[textField]}}\" *ngFor=\"let item of items\" [disabled]=\"item.disable || disabled\"\r\n [readonly]=\"item.readonly || readonly\" [value]=\"selectedValues.indexOf(item[valueField])>-1\"\r\n (onValueChanged)=\"onCheckValueChange(item[valueField],$event.value)\">\r\n </ax-check-box>\r\n </div>\r\n</ng-template>\r\n<ng-template #radioButtonList>\r\n <div class=\"ax selection-list {{size}}\" [ngClass]=\"direction\">\r\n <label class=\"ax radio\" for=\"{{uid}}\" [class.disabled]=\"disabled\" [class.readonly]=\"disabled\"\r\n *ngFor=\"let item of items\" (click)=\"onvalueChanged(item)\">\r\n {{ item[textField] }}\r\n <input type=\"radio\" (change)=\"onCheckValueChange(item[valueField],true)\" [value]=\"item[valueField]\"\r\n [checked]=\"selectedValues==item[valueField]\" [name]=\"uid\" [disabled]=\"item.disable || disabled\"\r\n [readonly]=\"item.readonly || readonly\" />\r\n <span class=\"checkmark\"></span>\r\n </label>\r\n </div>\r\n</ng-template>",
4091
4089
  encapsulation: ViewEncapsulation.None,
4092
4090
  changeDetection: ChangeDetectionStrategy.OnPush
4093
4091
  }),
@@ -5559,8 +5557,9 @@ var AXDatePickerComponent = /** @class */ (function (_super) {
5559
5557
  if (_this.showToday && !_this.value) {
5560
5558
  _this.selectToday();
5561
5559
  }
5562
- if (_this.dropdown.dropdownWidth < 200) {
5563
- _this.dropdown.dropdownWidth = 200;
5560
+ console.log(Boolean(_this.dropdown.dropdownWidth > 200));
5561
+ if (_this.dropdown.dropdownWidth > 200) {
5562
+ _this.dropdown.dropdownWidth = 250;
5564
5563
  }
5565
5564
  _this.cdr.markForCheck();
5566
5565
  });
@@ -6188,7 +6187,7 @@ var AXDatePickerComponent = /** @class */ (function (_super) {
6188
6187
  AXDatePickerComponent = AXDatePickerComponent_1 = __decorate([
6189
6188
  Component({
6190
6189
  selector: 'ax-date-picker',
6191
- template: "<ax-drop-down [readonly]=\"readonly\" [size]=\"size\" [showDropDownButton]=\"false\" icon=\"far fa-calendar-alt\" #dropdown maxHeight=\"unset\">\r\n <ng-container start>\r\n <ng-content select=\"[start]\">\r\n </ng-content>\r\n </ng-container>\r\n <ng-container header>\r\n <ax-text-box #input [textAlign]=\"textAlign\" [(value)]=\"text\" [readonly]=\"false\" [textMask]=\"dateType\" [disabled]=\"disabled\" [placeholder]=\"placeholder\" [size]=\"size\" (onkey)=\"handleKeyPress($event)\" (onFocus)=\"handleInputFocus()\" (click)=\"handleClick()\"\r\n (onBlur)=\"handleInputBlur()\" (onValueChanged)=\"textChange($event)\"></ax-text-box>\r\n </ng-container>\r\n <ng-container panel>\r\n <ax-calendar-box *ngIf=\"_renderPicker\" [showTodayButton]=\"showTodayButton\" [selectableHoliday]=\"selectableHoliday\" [min]=\"min\" [max]=\"max\" [size]=\"size\" (onClick)=\"onClick($event)\" (onValueChanged)=\"onDateChange($event)\" [type]=\"type\" [(value)]=\"value\"\r\n [dayStyle]=\"dayStyle\">\r\n </ax-calendar-box>\r\n </ng-container>\r\n <ng-container end>\r\n <ax-button end *ngIf=\"allowClear && value\" [disabled]=\"disabled\" icon=\"far fa-times icon\" type=\"blank danger\" (click)=\"clear()\" [size]=\"size\" [tabIndex]=\"-1\">\r\n </ax-button>\r\n <ax-button end icon=\"far fa-calendar-alt icon\" type=\"light blank\" (click)=\"handleButtonClick()\" [disabled]=\"disabled\" [size]=\"size\" [tabIndex]=\"-1\"></ax-button>\r\n <ng-content select=\"[end]\">\r\n </ng-content>\r\n </ng-container>\r\n\r\n</ax-drop-down>",
6190
+ template: "<ax-drop-down [readonly]=\"readonly\" [fitParent]=\"true\" [size]=\"size\" [showDropDownButton]=\"false\" icon=\"far fa-calendar-alt\" #dropdown maxHeight=\"unset\">\r\n <ng-container start>\r\n <ng-content select=\"[start]\">\r\n </ng-content>\r\n </ng-container>\r\n <ng-container header>\r\n <ax-text-box #input [textAlign]=\"textAlign\" [(value)]=\"text\" [readonly]=\"false\" [textMask]=\"dateType\" [disabled]=\"disabled\" [placeholder]=\"placeholder\" [size]=\"size\" (onkey)=\"handleKeyPress($event)\" (onFocus)=\"handleInputFocus()\" (click)=\"handleClick()\"\r\n (onBlur)=\"handleInputBlur()\" (onValueChanged)=\"textChange($event)\"></ax-text-box>\r\n </ng-container>\r\n <ng-container panel>\r\n <ax-calendar-box *ngIf=\"_renderPicker\" [showTodayButton]=\"showTodayButton\" [selectableHoliday]=\"selectableHoliday\" [min]=\"min\" [max]=\"max\" [size]=\"size\" (onClick)=\"onClick($event)\" (onValueChanged)=\"onDateChange($event)\" [type]=\"type\" [(value)]=\"value\"\r\n [dayStyle]=\"dayStyle\">\r\n </ax-calendar-box>\r\n </ng-container>\r\n <ng-container end>\r\n <ax-button end *ngIf=\"allowClear && value\" [disabled]=\"disabled\" icon=\"far fa-times icon\" type=\"blank danger\" (click)=\"clear()\" [size]=\"size\" [tabIndex]=\"-1\">\r\n </ax-button>\r\n <ax-button end icon=\"far fa-calendar-alt icon\" type=\"light blank\" (click)=\"handleButtonClick()\" [disabled]=\"disabled\" [size]=\"size\" [tabIndex]=\"-1\"></ax-button>\r\n <ng-content select=\"[end]\">\r\n </ng-content>\r\n </ng-container>\r\n\r\n</ax-drop-down>",
6192
6191
  encapsulation: ViewEncapsulation.None,
6193
6192
  providers: [{ provide: AXValidatableComponent, useExisting: AXDatePickerComponent_1 }],
6194
6193
  host: { style: 'width: 100%' },
@@ -7572,7 +7571,7 @@ var AXNumberBoxComponent = /** @class */ (function (_super) {
7572
7571
  });
7573
7572
  AXNumberBoxComponent.prototype.calcSeparator = function (num) {
7574
7573
  if (this.showSeparator) {
7575
- return num + (+(num / 3));
7574
+ return num + +(num / 3);
7576
7575
  }
7577
7576
  else {
7578
7577
  return num;
@@ -7597,9 +7596,11 @@ var AXNumberBoxComponent = /** @class */ (function (_super) {
7597
7596
  if (this.disabled === false) {
7598
7597
  if (this.scrollWeel === true) {
7599
7598
  setTimeout(function () {
7600
- _this.input.nativeElement.addEventListener('wheel', function (e) {
7601
- _this.handleWheel(e);
7602
- });
7599
+ if (_this.readonly === false) {
7600
+ _this.input.nativeElement.addEventListener('wheel', function (e) {
7601
+ _this.handleWheel(e);
7602
+ });
7603
+ }
7603
7604
  }, 500);
7604
7605
  }
7605
7606
  }
@@ -8010,6 +8011,14 @@ var AXNumberBoxComponent = /** @class */ (function (_super) {
8010
8011
  }
8011
8012
  }
8012
8013
  };
8014
+ AXNumberBoxComponent.prototype.handleInputBlur = function (e) {
8015
+ this.checkMinMax(this.textValue);
8016
+ this.onBlur.emit({
8017
+ component: this,
8018
+ htmlElement: this.ref.nativeElement,
8019
+ htmlEvent: e
8020
+ });
8021
+ };
8013
8022
  var AXNumberBoxComponent_1;
8014
8023
  AXNumberBoxComponent.ctorParameters = function () { return [
8015
8024
  { type: ChangeDetectorRef },
@@ -8062,7 +8071,7 @@ var AXNumberBoxComponent = /** @class */ (function (_super) {
8062
8071
  AXNumberBoxComponent = AXNumberBoxComponent_1 = __decorate([
8063
8072
  Component({
8064
8073
  selector: 'ax-number-box',
8065
- template: "<div class=\"ax form-item\" [class.disabled]=\"disabled\" [attr.id]=\"uid\" #fc>\r\n <div class=\"ax items-wrapper\">\r\n <ng-content select=\"[start]\">\r\n </ng-content>\r\n <ax-button icon=\"far fa-plus\" type=\"success blank\" (click)=\"upStepHandel()\" [disabled]=\"disabled\" *ngIf=\"showDoubleCounter\"></ax-button>\r\n </div>\r\n <div class=\"content\" #content>\r\n <div class=\"ax form-control input {{size}}\" [class.disabled]=\"disabled\" [class.readonly]=\"readonly\"\r\n [class.icon]=\"icon\">\r\n <input #input type=\"text\" class=\"ax {{size}}\" [maxlength]=\"calcSeparator(maxLength)\" [(ngModel)]=\"textValue\" placeholder=\"{{placeholder}}\"\r\n [readonly]=\"readonly\" [disabled]=\"disabled\" [ngClass]=\"setTextAlign()\"\r\n [class.clear]=\"value && allowClear\" (focus)=\"handleInputFocus($event)\" (blur)=\"handleInputBlur($event)\"\r\n (keypress)=\"handleKeyPress($event)\" (ngModelChange)=\"this.userQuestionUpdate.next($event)\"\r\n (keydown)=\"handleKeyDown($event)\" (click)=\"handleClick()\" (keyup)=\"handleKeyUp($event)\">\r\n <i class=\"{{icon}}\" *ngIf=\"icon\"></i>\r\n </div>\r\n </div>\r\n <div class=\"ax items-wrapper\">\r\n <ax-button *ngIf=\"value && allowClear\" [disabled]=\"disabled\" icon=\"far fa-times\" type=\"danger blank\"\r\n (click)=\"clear()\"></ax-button>\r\n <ax-button icon=\"far fa-minus\" type=\"danger blank\" (click)=\"downStepHandel()\" [disabled]=\"disabled\" *ngIf=\"showDoubleCounter\"></ax-button>\r\n <ng-content select=\"[end]\">\r\n </ng-content>\r\n <div class=\"arrow-number\" *ngIf=\"showCounter && !showDoubleCounter\" >\r\n <ax-button type=\"light blank\" [disabled]=\"disabled\" icon=\"fas fa-angle-up\" [size]=\"size\"\r\n (mousedown)=\"upStepHandel()\" (mouseup)=\"delaySearch()\" [tabIndex]=\"-1\"></ax-button>\r\n <ax-button type=\"light blank\" [disabled]=\"disabled\" icon=\"fas fa-angle-down\" [size]=\"size\"\r\n (mousedown)=\"downStepHandel()\" (mouseup)=\"delaySearch()\" [tabIndex]=\"-1\"></ax-button>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n",
8074
+ template: "<div class=\"ax form-item\" [class.disabled]=\"disabled\" [attr.id]=\"uid\" #fc>\r\n <div class=\"ax items-wrapper\">\r\n <ng-content select=\"[start]\">\r\n </ng-content>\r\n <ax-button icon=\"far fa-plus\" type=\"success blank\" (click)=\"upStepHandel()\" [disabled]=\"disabled\" *ngIf=\"showDoubleCounter\"></ax-button>\r\n </div>\r\n <div class=\"content\" #content>\r\n <div class=\"ax form-control input {{size}}\" [class.disabled]=\"disabled\" [class.readonly]=\"readonly\"\r\n [class.icon]=\"icon\">\r\n <input #input type=\"text\" class=\"ax {{size}}\" [maxlength]=\"calcSeparator(maxLength)\" [(ngModel)]=\"textValue\" placeholder=\"{{placeholder}}\"\r\n [readonly]=\"readonly\" [disabled]=\"disabled\" [ngClass]=\"setTextAlign()\"\r\n [class.clear]=\"value && allowClear\" (focus)=\"handleInputFocus($event)\" (blur)=\"handleInputBlur($event)\"\r\n (keypress)=\"handleKeyPress($event)\" (ngModelChange)=\"this.userQuestionUpdate.next($event)\"\r\n (keydown)=\"handleKeyDown($event)\" (click)=\"handleClick()\" (keyup)=\"handleKeyUp($event)\">\r\n <i class=\"{{icon}}\" *ngIf=\"icon\"></i>\r\n </div>\r\n </div>\r\n <div class=\"ax items-wrapper\">\r\n <ax-button *ngIf=\"value && allowClear\" [disabled]=\"disabled\" icon=\"far fa-times\" type=\"danger blank\"\r\n (click)=\"clear()\"></ax-button>\r\n <ax-button icon=\"far fa-minus\" type=\"danger blank\" (click)=\"downStepHandel()\" [disabled]=\"disabled\" *ngIf=\"showDoubleCounter\"></ax-button>\r\n <ng-content select=\"[end]\">\r\n </ng-content>\r\n <div class=\"arrow-number\" *ngIf=\"showCounter && !showDoubleCounter && !readonly\" >\r\n <ax-button type=\"light blank\" [disabled]=\"disabled\" icon=\"fas fa-angle-up\" [size]=\"size\"\r\n (mousedown)=\"upStepHandel()\" (mouseup)=\"delaySearch()\" [tabIndex]=\"-1\"></ax-button>\r\n <ax-button type=\"light blank\" [disabled]=\"disabled\" icon=\"fas fa-angle-down\" [size]=\"size\"\r\n (mousedown)=\"downStepHandel()\" (mouseup)=\"delaySearch()\" [tabIndex]=\"-1\"></ax-button>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n",
8066
8075
  changeDetection: ChangeDetectionStrategy.OnPush,
8067
8076
  host: { style: 'width: 100%' },
8068
8077
  providers: [{ provide: AXValidatableComponent, useExisting: AXNumberBoxComponent_1 }]
@@ -8504,7 +8513,10 @@ var AXSelectBoxComponent = /** @class */ (function (_super) {
8504
8513
  v = [];
8505
8514
  }
8506
8515
  // const old = this.selectedItems;
8507
- if (JSON.stringify(old) !== JSON.stringify(v)) {
8516
+ var f = differenceBy(old, v, this.valueField);
8517
+ var s = differenceBy(v, old, this.valueField);
8518
+ // if (JSON.stringify(old) !== JSON.stringify(v)) {
8519
+ if (f.length != 0 || s.length != 0) {
8508
8520
  this._selectedItems = this.mode == 'single' ? v.slice(0, 1) : __spread(new Set(v)); //[...new Set(v[0])] : [...new Set(v)];
8509
8521
  this._selectedItems.forEach(function (c) { return (c.selected = true); });
8510
8522
  this.selectedItemsChange.emit(this._selectedItems);
@@ -9411,7 +9423,7 @@ var AXSelectBoxComponent = /** @class */ (function (_super) {
9411
9423
  AXSelectBoxComponent = AXSelectBoxComponent_1 = __decorate([
9412
9424
  Component({
9413
9425
  selector: 'ax-select-box',
9414
- template: "<ax-drop-down [size]=\"size\" [rtl]=\"rtl\" [showDropDownButton]=\"showDropDownButton\" [disabled]=\"disabled\"\r\n [readonly]=\"readonly\" #d (dropdownToggle)=\"dropdownToggleSelecBox($event)\">\r\n <ng-container start>\r\n <ng-content select=\"[start]\">\r\n </ng-content>\r\n </ng-container>\r\n <ng-container header>\r\n <div class=\"ax chips-container\" [horizontalScroll]=\"40\">\r\n <div class=\"chips\" [class.chips-blank]=\"mode === 'single'\" [title]=\"item[textField]\"\r\n *ngFor=\"let item of selectedItems\">\r\n <span class=\"chips-text\">\r\n {{item[textField]}}\r\n </span>\r\n <span class=\"close-icon\" (click)=\"handleItemRemoveClick(item)\"\r\n *ngIf=\"(readonly!=true || itemRemove ==true)&& disabled!=true && (allowNull==true || (selectedItems.length > 1))\">\r\n <i class=\"far fa-times-circle close\"></i>\r\n </span>\r\n </div>\r\n <div class=\"search-wrapper\" (click)=\"onTextBoxClick($event)\">\r\n <ax-text-box #textBoxSelectBox [textAlign]=\"textAlign\"\r\n [placeholder]=\"selectedItems.length == 0 ? placeholder : ''\" [readonly]=\"readonly\"\r\n [disabled]=\"disabled\" (onkey)=\"handleKeyEvent($event)\" [size]=\"size\"\r\n (onFocus)=\"onFocusTextBox($event)\">\r\n </ax-text-box>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container end>\r\n <ng-content select=\"[end]\">\r\n </ng-content>\r\n </ng-container>\r\n\r\n <ng-container panel>\r\n <div *ngIf=\"allowSearch\" class=\"search-wrapper\" style=\"padding: 0.7em;\">\r\n <ax-search-box #serchBox [(value)]=\"text\" (onkey)=\"handleKeyEventSearch($event)\"\r\n (textChanged)=\"textChanged($event)\" (onButtonClick)=\"textChanged($event)\">\r\n </ax-search-box>\r\n </div>\r\n <div class=\"ax list-container\">\r\n <div #listContainer style=\"max-height: 300px;overflow-y: auto;width: 100%;\" (scroll)=\"scrolled($event)\">\r\n <ng-container *ngIf=\"getItems().length>0; then thenTemplate; else elseTemplate\"></ng-container>\r\n <ng-template #thenTemplate>\r\n <div class=\"list-item\" *ngFor=\"let item of getItems();let i = index\"\r\n [class.focused]=\"i==currentfocusedIndex\" [class.selected]=\"isItemSelected(item)\"\r\n (click)=\"handleItemClick($event,item)\">\r\n <div style=\"display: flex;\">\r\n <ax-check-box *ngIf=\"showCheckBox\" [size]=\"size\" [value]=\"isItemSelected(item)\"\r\n [disabled]=\"!allowNull && selectedItems.length === 1 && isItemSelected(item)\">\r\n </ax-check-box>\r\n <ng-container *ngIf=\"rowTemplate; else elseTemplate\">\r\n <div style=\"white-space: nowrap;text-overflow: ellipsis;overflow: hidden;\"\r\n [title]=\"item[textField]\"\r\n [ngStyle]=\"(showCheckBox) ? {'padding-inline-start': '0.5rem'}:''\">\r\n <ng-container *ngTemplateOutlet=\"rowTemplate; context:{ $implicit: item }\">\r\n </ng-container>\r\n </div>\r\n\r\n </ng-container>\r\n <ng-template #elseTemplate>\r\n <div style=\"white-space: nowrap;text-overflow: ellipsis;overflow: hidden;\"\r\n [title]=\"item[textField]\"\r\n [ngStyle]=\"(showCheckBox) ? {'padding-inline-start': '0.5rem'}:''\">\r\n {{ item[textField] }}\r\n </div>\r\n </ng-template>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </ng-template>\r\n <div *ngIf=\"showLoading\" class=\"ax-pad-sm\" style=\"text-align: center;\">\r\n <i class=\"far fa-spinner-third fa-pulse fa-2x\" style=\"color: var(--ax-primary-color);\"></i>\r\n\r\n </div>\r\n <!-- <ax-loading-indicator ></ax-loading-indicator> -->\r\n <ng-template #elseTemplate>\r\n <ng-container *ngIf=\"showLoading == true; then searchTemplate else noDataTemplate\"></ng-container>\r\n <ng-template #searchTemplate>\r\n <div class=\"list-item\">\r\n {{'common.searching' | trans}}\r\n </div>\r\n </ng-template>\r\n <ng-template #noDataTemplate>\r\n <div class=\"list-item\">\r\n {{'common.noDataFound' | trans}}\r\n </div>\r\n </ng-template>\r\n\r\n </ng-template>\r\n\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n\r\n</ax-drop-down>",
9426
+ template: "<ax-drop-down [size]=\"size\" [rtl]=\"rtl\" [showDropDownButton]=\"showDropDownButton\" [disabled]=\"disabled\"\r\n [readonly]=\"readonly\" #d (dropdownToggle)=\"dropdownToggleSelecBox($event)\">\r\n <ng-container start>\r\n <ng-content select=\"[start]\">\r\n </ng-content>\r\n </ng-container>\r\n <ng-container header>\r\n <div class=\"ax chips-container\" [horizontalScroll]=\"40\">\r\n <div class=\"chips\" [class.chips-blank]=\"mode === 'single'\" [title]=\"item[textField]\"\r\n *ngFor=\"let item of selectedItems\">\r\n <span class=\"chips-text\">\r\n {{item[textField]}}\r\n </span>\r\n <span class=\"close-icon\" (click)=\"handleItemRemoveClick(item)\"\r\n *ngIf=\"(readonly!=true || itemRemove ==true)&& disabled!=true && (allowNull==true || (selectedItems.length > 1))\">\r\n <i class=\"far fa-times-circle close\"></i>\r\n </span>\r\n </div>\r\n <div class=\"search-wrapper\" (click)=\"onTextBoxClick($event)\">\r\n <ax-text-box #textBoxSelectBox [textAlign]=\"textAlign\"\r\n [placeholder]=\"selectedItems.length == 0 ? placeholder : ''\" [readonly]=\"readonly\"\r\n [disabled]=\"disabled\" (onkey)=\"handleKeyEvent($event)\" [size]=\"size\"\r\n (onFocus)=\"onFocusTextBox($event)\">\r\n </ax-text-box>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container end>\r\n <ng-content select=\"[end]\">\r\n </ng-content>\r\n </ng-container>\r\n\r\n <ng-container panel>\r\n <div *ngIf=\"allowSearch\" class=\"search-wrapper\" style=\"padding: 0.7em;\">\r\n <ax-search-box #serchBox [(value)]=\"text\" (onkey)=\"handleKeyEventSearch($event)\"\r\n (textChanged)=\"textChanged($event)\" (onButtonClick)=\"textChanged($event)\">\r\n </ax-search-box>\r\n </div>\r\n <div class=\"ax list-container\">\r\n <div #listContainer style=\"max-height: 300px;overflow-y: auto;width: 100%;\" (scroll)=\"scrolled($event)\">\r\n <ng-container *ngIf=\"getItems().length>0; then thenTemplate; else elseTemplate\"></ng-container>\r\n <ng-template #thenTemplate>\r\n <div class=\"list-item\" *ngFor=\"let item of getItems();let i = index\"\r\n [class.focused]=\"i==currentfocusedIndex\" [class.selected]=\"isItemSelected(item)\"\r\n (click)=\"handleItemClick($event,item)\">\r\n <div style=\"display: flex;\">\r\n <ax-check-box *ngIf=\"showCheckBox\" [size]=\"size\" [value]=\"isItemSelected(item)\"\r\n [disabled]=\"!allowNull && selectedItems.length === 1 && isItemSelected(item)\"\r\n (onClick)=\"handleItemClick($event,item)\">\r\n </ax-check-box>\r\n <ng-container *ngIf=\"rowTemplate; else elseTemplate\">\r\n <div style=\"white-space: nowrap;text-overflow: ellipsis;overflow: hidden;\"\r\n [title]=\"item[textField]\"\r\n [ngStyle]=\"(showCheckBox) ? {'padding-inline-start': '0.5rem'}:''\">\r\n <ng-container *ngTemplateOutlet=\"rowTemplate; context:{ $implicit: item }\">\r\n </ng-container>\r\n </div>\r\n\r\n </ng-container>\r\n <ng-template #elseTemplate>\r\n <div style=\"white-space: nowrap;text-overflow: ellipsis;overflow: hidden;\"\r\n [title]=\"item[textField]\"\r\n [ngStyle]=\"(showCheckBox) ? {'padding-inline-start': '0.5rem'}:''\">\r\n {{ item[textField] }}\r\n </div>\r\n </ng-template>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </ng-template>\r\n <div *ngIf=\"showLoading\" class=\"ax-pad-sm\" style=\"text-align: center;\">\r\n <i class=\"far fa-spinner-third fa-pulse fa-2x\" style=\"color: var(--ax-primary-color);\"></i>\r\n\r\n </div>\r\n <!-- <ax-loading-indicator ></ax-loading-indicator> -->\r\n <ng-template #elseTemplate>\r\n <ng-container *ngIf=\"showLoading == true; then searchTemplate else noDataTemplate\"></ng-container>\r\n <ng-template #searchTemplate>\r\n <div class=\"list-item\">\r\n {{'common.searching' | trans}}\r\n </div>\r\n </ng-template>\r\n <ng-template #noDataTemplate>\r\n <div class=\"list-item\">\r\n {{'common.noDataFound' | trans}}\r\n </div>\r\n </ng-template>\r\n\r\n </ng-template>\r\n\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n\r\n</ax-drop-down>",
9415
9427
  encapsulation: ViewEncapsulation.None,
9416
9428
  changeDetection: ChangeDetectionStrategy.OnPush,
9417
9429
  host: { style: 'width: 100%' },
@@ -10021,6 +10033,7 @@ var AXQueryBuilderService = /** @class */ (function () {
10021
10033
  return __generator(this, function (_d) {
10022
10034
  switch (_d.label) {
10023
10035
  case 0:
10036
+ ;
10024
10037
  if (group.items.length > 0) {
10025
10038
  query = ' ( ';
10026
10039
  }
@@ -10079,6 +10092,7 @@ var AXQueryBuilderService = /** @class */ (function () {
10079
10092
  codeOperator = item.operator;
10080
10093
  break;
10081
10094
  }
10095
+ ;
10082
10096
  query = query + ' ' + item.caption + ' ' + codeOperator + ' ' + item.text;
10083
10097
  _d.label = 6;
10084
10098
  case 6:
@@ -10121,6 +10135,7 @@ var AXQueryBuilderService = /** @class */ (function () {
10121
10135
  var query = '';
10122
10136
  switch (type) {
10123
10137
  case 'simple':
10138
+ ;
10124
10139
  if (group.items.length > 0) {
10125
10140
  query = ' ( ';
10126
10141
  }
@@ -10262,6 +10277,7 @@ var AXQueryBuilderGroupComponent = /** @class */ (function () {
10262
10277
  };
10263
10278
  AXQueryBuilderGroupComponent.prototype.ruleChanged = function (e) {
10264
10279
  var _this = this;
10280
+ ;
10265
10281
  // this.group.queryString = this.qs.getQueryString(this.group, 'simple');
10266
10282
  this.qs.getQueryStringSimple(this.group).then(function (c) {
10267
10283
  _this.group.queryString = c;
@@ -11623,13 +11639,15 @@ var AXTabStripComponent = /** @class */ (function () {
11623
11639
  }
11624
11640
  AXTabStripComponent.prototype.ngOnInit = function () { };
11625
11641
  AXTabStripComponent.prototype.handleClick = function (i) {
11626
- this.items.forEach(function (c) { return (c.active = false); });
11627
- i.active = true;
11628
- this.onTabChanged.emit({
11629
- component: this,
11630
- seledtedTab: i,
11631
- htmlElement: this.ref.nativeElement
11632
- });
11642
+ if (!i.disable) {
11643
+ this.items.forEach(function (c) { return (c.active = false); });
11644
+ i.active = true;
11645
+ this.onTabChanged.emit({
11646
+ component: this,
11647
+ seledtedTab: i,
11648
+ htmlElement: this.ref.nativeElement
11649
+ });
11650
+ }
11633
11651
  };
11634
11652
  AXTabStripComponent.ctorParameters = function () { return [
11635
11653
  { type: ElementRef }
@@ -11645,7 +11663,7 @@ var AXTabStripComponent = /** @class */ (function () {
11645
11663
  AXTabStripComponent = __decorate([
11646
11664
  Component({
11647
11665
  selector: 'ax-tab-strip',
11648
- template: "<ul class=\"tab-strip-container\">\r\n <ng-container *ngFor=\"let item of items\">\r\n <li [class.active]=\"item.active\" (click)=\"handleClick(item)\">{{item.text}}</li>\r\n </ng-container>\r\n</ul>"
11666
+ template: "<ul class=\"tab-strip-container\">\r\n <ng-container *ngFor=\"let item of items\">\r\n <li *ngIf=\"!!item.visible || item.visible == undefined\" [class.active]=\"item.active\"\r\n [class.disabled]=\"item.disable\" (click)=\"handleClick(item)\">{{item.text}}</li>\r\n </ng-container>\r\n</ul>"
11649
11667
  }),
11650
11668
  __metadata("design:paramtypes", [ElementRef])
11651
11669
  ], AXTabStripComponent);
@@ -13846,7 +13864,7 @@ var AXTreeViewComponent = /** @class */ (function (_super) {
13846
13864
  }
13847
13865
  };
13848
13866
  node.parent.unSelectParent = function () {
13849
- if (item.parentNode['select'] != false) {
13867
+ if (item.parentNode['select'] == true) {
13850
13868
  _this.internalSelectItem(item.parentNode, true);
13851
13869
  }
13852
13870
  };
@@ -13861,7 +13879,7 @@ var AXTreeViewComponent = /** @class */ (function (_super) {
13861
13879
  };
13862
13880
  node.children.unSelectChilds = function () {
13863
13881
  item.childeren.forEach(function (element) {
13864
- if (element['select'] != false) {
13882
+ if (element['select'] == true) {
13865
13883
  _this.internalSelectItem(element, true);
13866
13884
  }
13867
13885
  });
@@ -13971,6 +13989,14 @@ var AXTreeViewComponent = /** @class */ (function (_super) {
13971
13989
  flag: flag
13972
13990
  });
13973
13991
  };
13992
+ AXTreeViewComponent.prototype.nodeClick = function (item) {
13993
+ if (item[this.hasChildField] == true) {
13994
+ this.toggleNode(item, true);
13995
+ }
13996
+ else {
13997
+ this.internalSelectItem(item, true);
13998
+ }
13999
+ };
13974
14000
  AXTreeViewComponent.prototype.toggleNode = function (item, flag) {
13975
14001
  if (flag === void 0) { flag = false; }
13976
14002
  //item[this.hasChildField] === false &&
@@ -14455,7 +14481,7 @@ var AXTreeViewComponent = /** @class */ (function (_super) {
14455
14481
  AXTreeViewComponent = __decorate([
14456
14482
  Component({
14457
14483
  selector: 'ax-tree-view',
14458
- template: "<ul class=\"ax treeview {{size}}\">\r\n <ng-template #recursiveList let-list>\r\n <ng-container *ngFor=\"let item of list\">\r\n <li class=\"active {{item[hasChildField] ? '':'node'}}\" [class.bordered]=\"bordered\" [class.selected]=\"item.select\" [draggable]=\"allowDrag\" (dragstart)=\"onDragStart($event, item)\" [attr.data-id]=\"item[keyField]\" (dragleave)=\"onDragEnd($event,item)\" (dragend)=drop($event)>\r\n <div axContextMenu [contextDataItem]=\"item\" [contextMenuItems]=\"contextMenuItems\" [contextMenu]=\"menu\" (onContextMenuItemClick)=\"handleOnContextMenuItem($event)\" style=\"display: flex; cursor: pointer;align-items: center;\">\r\n <div class=\"start-side\">\r\n <div *ngIf=\"item[hasChildField]\" class=\"collapse-icon\" (click)=\"handleOnNodeClick($event,item,true)\">\r\n <i class=\"fal\" [ngClass]=\"{'fa-minus': !!item.toggle , 'fa-plus': !item.toggle , 'fa-spinner fa-spin':item.loading }\"></i>\r\n </div>\r\n\r\n <ax-check-box *ngIf=\"showSelectBox\" [disabled]=\"item.disabledCheckBox\" [size]=\"size\" [indeterminate]=\"true\" [value]=\"item.select\" (onClick)=\"internalSelectItem(item)\">\r\n </ax-check-box>\r\n\r\n\r\n </div>\r\n <div class=\"text-list\" (click)=\"handleOnNodeClick($event,item)\" (dblclick)=\"itemdbClick($event,item)\">\r\n <ng-container *ngIf=\"nodeTemplate; else elseTemplate\">\r\n <ng-container *ngTemplateOutlet=\"nodeTemplate; context:{ $implicit: item }\"></ng-container>\r\n </ng-container>\r\n <ng-template #elseTemplate>\r\n {{item.title}}\r\n </ng-template>\r\n </div>\r\n </div>\r\n <ul *ngIf=\"item.loading\">\r\n <i class=\"far \"></i>\r\n </ul>\r\n <ul class=\"child\" *ngIf=\"item.toggle\" style=\"background-color: white !important;\">\r\n <ng-container *ngTemplateOutlet=\"recursiveList; context:{ $implicit: item.childeren }\">\r\n </ng-container>\r\n </ul>\r\n </li>\r\n </ng-container>\r\n </ng-template>\r\n <ng-container *ngTemplateOutlet=\"recursiveList; context:{ $implicit: list }\"></ng-container>\r\n</ul>\r\n\r\n<ax-context-menu #menu></ax-context-menu>",
14484
+ template: "<ul class=\"ax treeview {{size}}\">\r\n <ng-template #recursiveList let-list>\r\n <ng-container *ngFor=\"let item of list\">\r\n <li class=\"active {{item[hasChildField] ? '':'node'}}\" [class.bordered]=\"bordered\"\r\n [class.selected]=\"item.select\" [draggable]=\"allowDrag\" (dragstart)=\"onDragStart($event, item)\"\r\n [attr.data-id]=\"item[keyField]\" (dragleave)=\"onDragEnd($event,item)\" (dragend)=drop($event)>\r\n <div axContextMenu [contextDataItem]=\"item\" [contextMenuItems]=\"contextMenuItems\" [contextMenu]=\"menu\"\r\n (onContextMenuItemClick)=\"handleOnContextMenuItem($event)\"\r\n style=\"display: flex; cursor: pointer;align-items: center;\">\r\n <div class=\"start-side\">\r\n <div *ngIf=\"item[hasChildField]\" class=\"collapse-icon\"\r\n (click)=\"handleOnNodeClick($event,item,true)\">\r\n <i class=\"fal\"\r\n [ngClass]=\"{'fa-minus': !!item.toggle , 'fa-plus': !item.toggle , 'fa-spinner fa-spin':item.loading }\"></i>\r\n </div>\r\n\r\n <ax-check-box *ngIf=\"showSelectBox\" [disabled]=\"item.disabledCheckBox\" [size]=\"size\"\r\n [indeterminate]=\"true\" [value]=\"item.select\" (onClick)=\"internalSelectItem(item)\">\r\n </ax-check-box>\r\n\r\n\r\n </div>\r\n <div class=\"text-list\" (click)=\"nodeClick(item)\" (dblclick)=\"itemdbClick($event,item)\">\r\n <ng-container *ngIf=\"nodeTemplate; else elseTemplate\">\r\n <ng-container *ngTemplateOutlet=\"nodeTemplate; context:{ $implicit: item }\"></ng-container>\r\n </ng-container>\r\n <ng-template #elseTemplate>\r\n {{item.title}}\r\n </ng-template>\r\n </div>\r\n </div>\r\n <ul *ngIf=\"item.loading\">\r\n <i class=\"far \"></i>\r\n </ul>\r\n <ul class=\"child\" *ngIf=\"item.toggle\" style=\"background-color: white !important;\">\r\n <ng-container *ngTemplateOutlet=\"recursiveList; context:{ $implicit: item.childeren }\">\r\n </ng-container>\r\n </ul>\r\n </li>\r\n </ng-container>\r\n </ng-template>\r\n <ng-container *ngTemplateOutlet=\"recursiveList; context:{ $implicit: list }\"></ng-container>\r\n</ul>\r\n\r\n<ax-context-menu #menu></ax-context-menu>",
14459
14485
  encapsulation: ViewEncapsulation.None
14460
14486
  }),
14461
14487
  __metadata("design:paramtypes", [ElementRef])
@@ -14742,12 +14768,25 @@ var AXAccordionModule = /** @class */ (function () {
14742
14768
 
14743
14769
  var AXProperyEditorComponent = /** @class */ (function () {
14744
14770
  function AXProperyEditorComponent(cdr) {
14771
+ var _this = this;
14745
14772
  this.cdr = cdr;
14746
14773
  this.readonly = false;
14747
- this.initiated = false;
14774
+ this._initiated = false;
14775
+ this._valueBound = false;
14748
14776
  this.validatableComponentRegistered = new Subject();
14749
14777
  this.valueChange = new EventEmitter();
14778
+ this.onRenderCompleted = new EventEmitter();
14779
+ this.onRenderCompleted.subscribe(function () {
14780
+ _this._initiated = true;
14781
+ });
14750
14782
  }
14783
+ Object.defineProperty(AXProperyEditorComponent.prototype, "initiated", {
14784
+ get: function () {
14785
+ return this._initiated && this._valueBound;
14786
+ },
14787
+ enumerable: true,
14788
+ configurable: true
14789
+ });
14751
14790
  AXProperyEditorComponent.prototype.registerForValidationForm = function (component) {
14752
14791
  this.validatableComponentRegistered.next(component);
14753
14792
  };
@@ -14756,10 +14795,15 @@ var AXProperyEditorComponent = /** @class */ (function () {
14756
14795
  return this._value;
14757
14796
  },
14758
14797
  set: function (v) {
14798
+ var _this = this;
14759
14799
  if (v !== this._value) {
14760
14800
  this._value = v;
14761
14801
  this.valueChange.emit(v);
14762
14802
  this.cdr.detectChanges();
14803
+ //TODO: find better solution
14804
+ setTimeout(function () {
14805
+ _this._valueBound = true;
14806
+ }, 100);
14763
14807
  }
14764
14808
  },
14765
14809
  enumerable: true,
@@ -14768,12 +14812,14 @@ var AXProperyEditorComponent = /** @class */ (function () {
14768
14812
  AXProperyEditorComponent.prototype.handleValueChange = function (v) {
14769
14813
  this.value = v;
14770
14814
  };
14771
- AXProperyEditorComponent.prototype.initiat = function () {
14772
- };
14773
14815
  __decorate([
14774
14816
  Output(),
14775
14817
  __metadata("design:type", EventEmitter)
14776
14818
  ], AXProperyEditorComponent.prototype, "valueChange", void 0);
14819
+ __decorate([
14820
+ Output(),
14821
+ __metadata("design:type", EventEmitter)
14822
+ ], AXProperyEditorComponent.prototype, "onRenderCompleted", void 0);
14777
14823
  __decorate([
14778
14824
  Input(),
14779
14825
  __metadata("design:type", Object),
@@ -14836,11 +14882,12 @@ function propertyEditor(options) {
14836
14882
  }
14837
14883
 
14838
14884
  var AXPropertyEditorRendererDirective = /** @class */ (function () {
14839
- function AXPropertyEditorRendererDirective(target, componentFactoryResolver, renderService) {
14885
+ function AXPropertyEditorRendererDirective(target, componentFactoryResolver, renderService, eventService) {
14840
14886
  this.target = target;
14841
14887
  this.componentFactoryResolver = componentFactoryResolver;
14842
14888
  this.renderService = renderService;
14843
- this.readonly = false;
14889
+ this.eventService = eventService;
14890
+ this._context = {};
14844
14891
  this.onValueChange = new EventEmitter();
14845
14892
  }
14846
14893
  Object.defineProperty(AXPropertyEditorRendererDirective.prototype, "context", {
@@ -14849,9 +14896,6 @@ var AXPropertyEditorRendererDirective = /** @class */ (function () {
14849
14896
  },
14850
14897
  set: function (v) {
14851
14898
  this._context = v;
14852
- if (v && this.instance) {
14853
- this.assignProps();
14854
- }
14855
14899
  },
14856
14900
  enumerable: true,
14857
14901
  configurable: true
@@ -14870,60 +14914,110 @@ var AXPropertyEditorRendererDirective = /** @class */ (function () {
14870
14914
  var cmpRef = _this.target.createComponent(factory);
14871
14915
  _this.instance = cmpRef.instance;
14872
14916
  _this.subscription = _this.instance.valueChange.subscribe(function (value) {
14873
- if (_this.instance.initiated === true) {
14874
- _this.property.value = value;
14875
- _this.onValueChange.emit(_this.property);
14917
+ var _a, _b;
14918
+ _this.property.value = value;
14919
+ _this.onValueChange.emit(_this.property);
14920
+ if ((_b = (_a = _this.property) === null || _a === void 0 ? void 0 : _a.property) === null || _b === void 0 ? void 0 : _b.name) {
14921
+ setTimeout(function () {
14922
+ _this.eventService.broadcast("props-" + _this.groupId + "-" + _this.property.property.name, _this.property);
14923
+ }, 0);
14876
14924
  }
14877
14925
  });
14878
- //
14926
+ _this.watchChanges();
14927
+ _this.assignProps();
14928
+ _this.instance.value = _this.property.value;
14929
+ // this.instance.onRenderCompleted.subscribe(() => {
14930
+ // });
14879
14931
  if (_this.validationForm) {
14880
14932
  _this.instance.validatableComponentRegistered.subscribe(function (v) {
14881
14933
  _this.validationForm.addWidget(v);
14882
14934
  });
14883
14935
  }
14884
- //
14885
- //setTimeout(() => {
14886
- _this.instance.readonly = _this.readonly;
14887
- _this.assignProps();
14888
- _this.instance.value = _this.property.value;
14889
- _this.instance.initiat();
14890
- cmpRef.changeDetectorRef.markForCheck();
14891
- //});
14892
14936
  }
14893
14937
  });
14894
14938
  };
14895
- AXPropertyEditorRendererDirective.prototype.assignProps = function () {
14939
+ AXPropertyEditorRendererDirective.prototype.watchChanges = function () {
14896
14940
  var _this = this;
14941
+ var _a, _b;
14942
+ var varsRegx = /((\$\{[a-zA-Z_0-9]+\})+)/gm;
14943
+ var varNameRegx = /[a-zA-Z_0-9]+/gm;
14897
14944
  var options = this.property.property.editorOptions;
14898
14945
  if (!options) {
14899
14946
  return;
14900
14947
  }
14901
14948
  var _loop_1 = function (p) {
14949
+ if (options.hasOwnProperty(p)) {
14950
+ var opt_1 = options[p];
14951
+ var vars_1 = typeof opt_1 === 'string' ? (_a = opt_1) === null || _a === void 0 ? void 0 : _a.match(varsRegx) : [];
14952
+ // bind the props
14953
+ if ((_b = vars_1) === null || _b === void 0 ? void 0 : _b.length) {
14954
+ vars_1.forEach(function (v) {
14955
+ var _a;
14956
+ var path = ((_a = v.match(varNameRegx)) === null || _a === void 0 ? void 0 : _a.length) ? v.match(varNameRegx)[0] : null;
14957
+ if (path) {
14958
+ _this.eventService.on("props-" + _this.groupId + "-" + path, function (e) {
14959
+ var execCode = opt_1.slice();
14960
+ var params = {};
14961
+ vars_1.forEach(function (vv) {
14962
+ var _a;
14963
+ var p2 = ((_a = vv.match(varNameRegx)) === null || _a === void 0 ? void 0 : _a.length) ? vv.match(varNameRegx)[0] : null;
14964
+ params[p2] = AXObjectUtil.deepCopy(_this.context[p2]) || null;
14965
+ execCode = execCode.replace(vv, "__params__." + p2);
14966
+ });
14967
+ var func = new Function('__params__', "try { return " + execCode + "} catch(e){ console.log(e); return null; }");
14968
+ var val = func(params);
14969
+ var keys = p.split('.');
14970
+ var prop = Object.assign({}, _this.instance[keys[0]]);
14971
+ if (keys.length > 1) {
14972
+ _this.instance[keys[0]] = setPropByPath(prop, p, val);
14973
+ }
14974
+ else {
14975
+ setPropByPath(_this.instance, p, val);
14976
+ }
14977
+ });
14978
+ }
14979
+ });
14980
+ }
14981
+ // else {
14982
+ // this.assignProps();
14983
+ // }
14984
+ }
14985
+ };
14986
+ for (var p in options) {
14987
+ _loop_1(p);
14988
+ }
14989
+ };
14990
+ AXPropertyEditorRendererDirective.prototype.assignProps = function () {
14991
+ var _this = this;
14992
+ var _a, _b;
14993
+ var options = this.property.property.editorOptions;
14994
+ if (!options) {
14995
+ return;
14996
+ }
14997
+ var varsRegx = /((\$\{[a-zA-Z_0-9]+\})+)/gm;
14998
+ var _loop_2 = function (p) {
14902
14999
  if (options.hasOwnProperty(p)) {
14903
15000
  var opt = options[p];
14904
- if (typeof opt === 'string' && opt.startsWith('$$')) {
14905
- var key = opt.substring(2);
14906
- var val = getPropByPath(this_1.context, key);
14907
- if (val) {
14908
- this_1.instance[p] = typeof val === 'function' ? val({ data: this_1.context, host: this_1.host }, this_1.property) : val;
14909
- }
15001
+ var vars = typeof opt === 'string' ? (_a = opt) === null || _a === void 0 ? void 0 : _a.match(varsRegx) : [];
15002
+ if ((_b = vars) === null || _b === void 0 ? void 0 : _b.length) {
15003
+ return "continue";
14910
15004
  }
14911
15005
  else {
14912
- var res = typeof opt === 'function' ? opt({ data: this_1.context, host: this_1.host }, this_1.property) : opt;
14913
- if (res instanceof Promise) {
14914
- res.then(function (v) {
14915
- _this.instance[p] = v;
15006
+ var val_1 = typeof opt === 'function' ? opt({ data: this_1.context, host: this_1.host }, this_1.property) : opt;
15007
+ if (val_1 instanceof Promise) {
15008
+ val_1.then(function (v) {
15009
+ setPropByPath(_this.instance, p, val_1);
14916
15010
  });
14917
15011
  }
14918
15012
  else {
14919
- this_1.instance[p] = res;
15013
+ setPropByPath(this_1.instance, p, val_1);
14920
15014
  }
14921
15015
  }
14922
15016
  }
14923
15017
  };
14924
15018
  var this_1 = this;
14925
15019
  for (var p in options) {
14926
- _loop_1(p);
15020
+ _loop_2(p);
14927
15021
  }
14928
15022
  };
14929
15023
  AXPropertyEditorRendererDirective.prototype.ngOnDestroy = function () {
@@ -14934,16 +15028,13 @@ var AXPropertyEditorRendererDirective = /** @class */ (function () {
14934
15028
  AXPropertyEditorRendererDirective.ctorParameters = function () { return [
14935
15029
  { type: ViewContainerRef },
14936
15030
  { type: ComponentFactoryResolver },
14937
- { type: AXRenderService }
15031
+ { type: AXRenderService },
15032
+ { type: AXEventService }
14938
15033
  ]; };
14939
15034
  __decorate([
14940
15035
  Input(),
14941
15036
  __metadata("design:type", Object)
14942
15037
  ], AXPropertyEditorRendererDirective.prototype, "property", void 0);
14943
- __decorate([
14944
- Input(),
14945
- __metadata("design:type", Boolean)
14946
- ], AXPropertyEditorRendererDirective.prototype, "readonly", void 0);
14947
15038
  __decorate([
14948
15039
  Input(),
14949
15040
  __metadata("design:type", AXValidationFormComponent)
@@ -14957,6 +15048,10 @@ var AXPropertyEditorRendererDirective = /** @class */ (function () {
14957
15048
  Input(),
14958
15049
  __metadata("design:type", Object)
14959
15050
  ], AXPropertyEditorRendererDirective.prototype, "host", void 0);
15051
+ __decorate([
15052
+ Input(),
15053
+ __metadata("design:type", Object)
15054
+ ], AXPropertyEditorRendererDirective.prototype, "groupId", void 0);
14960
15055
  __decorate([
14961
15056
  Output(),
14962
15057
  __metadata("design:type", EventEmitter)
@@ -14967,7 +15062,8 @@ var AXPropertyEditorRendererDirective = /** @class */ (function () {
14967
15062
  }),
14968
15063
  __metadata("design:paramtypes", [ViewContainerRef,
14969
15064
  ComponentFactoryResolver,
14970
- AXRenderService])
15065
+ AXRenderService,
15066
+ AXEventService])
14971
15067
  ], AXPropertyEditorRendererDirective);
14972
15068
  return AXPropertyEditorRendererDirective;
14973
15069
  }());
@@ -14985,7 +15081,7 @@ var AXTextPropertyEditorComponent = /** @class */ (function (_super) {
14985
15081
  };
14986
15082
  AXTextPropertyEditorComponent.prototype.ngAfterViewInit = function () {
14987
15083
  this.registerForValidationForm(this.textBox);
14988
- this.initiated = true;
15084
+ this.onRenderCompleted.emit();
14989
15085
  };
14990
15086
  AXTextPropertyEditorComponent.ctorParameters = function () { return [
14991
15087
  { type: ChangeDetectorRef }
@@ -15035,8 +15131,8 @@ var AXNumberBoxPropertyEditorComponent = /** @class */ (function (_super) {
15035
15131
  _super.prototype.handleValueChange.call(this, e.value);
15036
15132
  };
15037
15133
  AXNumberBoxPropertyEditorComponent.prototype.ngAfterViewInit = function () {
15038
- this.initiated = true;
15039
15134
  this.registerForValidationForm(this.textBox);
15135
+ this.onRenderCompleted.emit();
15040
15136
  };
15041
15137
  AXNumberBoxPropertyEditorComponent.ctorParameters = function () { return [
15042
15138
  { type: ChangeDetectorRef }
@@ -15081,16 +15177,18 @@ var AXSelectBoxPropertyEditorComponent = /** @class */ (function (_super) {
15081
15177
  _this.selectionDataMode = 'value';
15082
15178
  _this.allowSearch = true;
15083
15179
  _this.allowNull = false;
15180
+ _this.disabled = false;
15084
15181
  _this.items = [];
15085
15182
  _this.remoteOperation = false;
15086
15183
  _this.provideData = function (e) {
15087
15184
  return new Promise(function (resolve) {
15088
15185
  var func = function () {
15089
15186
  if (Array.isArray(_this.items)) {
15090
- resolve(_this.items);
15187
+ resolve(_this.items.slice());
15091
15188
  }
15092
15189
  else if (typeof _this.items === 'function') {
15093
- resolve(_this.items(e));
15190
+ var a = Object.assign(e, { sender: _this });
15191
+ resolve(_this.items(a));
15094
15192
  }
15095
15193
  else {
15096
15194
  resolve([]);
@@ -15106,26 +15204,38 @@ var AXSelectBoxPropertyEditorComponent = /** @class */ (function (_super) {
15106
15204
  };
15107
15205
  return _this;
15108
15206
  }
15207
+ Object.defineProperty(AXSelectBoxPropertyEditorComponent.prototype, "filter", {
15208
+ get: function () {
15209
+ return this._filter;
15210
+ },
15211
+ set: function (v) {
15212
+ var _a;
15213
+ this._filter = v;
15214
+ if (this.value && this.initiated) {
15215
+ this.value = null;
15216
+ (_a = this.selectBox) === null || _a === void 0 ? void 0 : _a.refresh();
15217
+ }
15218
+ },
15219
+ enumerable: true,
15220
+ configurable: true
15221
+ });
15109
15222
  AXSelectBoxPropertyEditorComponent.prototype.handleValueChange = function (e) {
15110
- _super.prototype.handleValueChange.call(this, e.value);
15223
+ _super.prototype.handleValueChange.call(this, e.selectedValues);
15111
15224
  };
15112
15225
  AXSelectBoxPropertyEditorComponent.prototype.ngAfterViewInit = function () {
15113
- this.selectBox.refresh();
15114
15226
  this.registerForValidationForm(this.selectBox);
15115
- };
15116
- AXSelectBoxPropertyEditorComponent.prototype.initiat = function () {
15117
- this.initiated = true;
15227
+ this.onRenderCompleted.emit();
15118
15228
  };
15119
15229
  AXSelectBoxPropertyEditorComponent.ctorParameters = function () { return [
15120
15230
  { type: ChangeDetectorRef }
15121
15231
  ]; };
15122
15232
  __decorate([
15123
- ViewChild(AXSelectBox2Component, { static: true }),
15124
- __metadata("design:type", AXSelectBox2Component)
15233
+ ViewChild(AXSelectBoxComponent, { static: true }),
15234
+ __metadata("design:type", AXSelectBoxComponent)
15125
15235
  ], AXSelectBoxPropertyEditorComponent.prototype, "selectBox", void 0);
15126
15236
  AXSelectBoxPropertyEditorComponent = __decorate([
15127
15237
  Component({
15128
- template: "<ax-select-box2 [selectionMode]=\"selectionMode\"\r\n [selectionDataMode]=\"selectionDataMode\" \r\n [textField]=\"textField\" \r\n [valueField]=\"valueField\" \r\n [value]=\"value\" \r\n [remoteOperation]=\"remoteOperation\"\r\n [allowSearch]=\"allowSearch\" \r\n [allowNull]=\"allowNull\"\r\n (onValueChanged)=\"handleValueChange($event)\">\r\n <ax-data-source [provideData]=\"provideData\">\r\n </ax-data-source>\r\n <ax-validation [rules]=\"validation?.rules\">\r\n </ax-validation>\r\n</ax-select-box2>"
15238
+ template: "<ax-select-box [mode]=\"selectionMode\"\r\n [textField]=\"textField\" \r\n [valueField]=\"valueField\" \r\n [selectedValues]=\"value\" \r\n [remoteOperation]=\"remoteOperation\"\r\n [allowSearch]=\"allowSearch\" \r\n [allowNull]=\"allowNull\"\r\n [readonly]=\"readonly\"\r\n [disabled]=\"disabled\"\r\n (selectionChanged)=\"handleValueChange($event)\">\r\n <ax-data-source [provideData]=\"provideData\">\r\n </ax-data-source>\r\n <ax-validation [rules]=\"validation?.rules\">\r\n </ax-validation>\r\n</ax-select-box>"
15129
15239
  }),
15130
15240
  __metadata("design:paramtypes", [ChangeDetectorRef])
15131
15241
  ], AXSelectBoxPropertyEditorComponent);
@@ -15164,7 +15274,7 @@ var AXRangePropertyEditorComponent = /** @class */ (function (_super) {
15164
15274
  this.cdr.detectChanges();
15165
15275
  };
15166
15276
  AXRangePropertyEditorComponent.prototype.ngAfterViewInit = function () {
15167
- this.initiated = true;
15277
+ this.onRenderCompleted.emit();
15168
15278
  };
15169
15279
  // getRanges() {
15170
15280
  // return this.ranges.sort((a, b) => a.minValue - b.minValue);
@@ -15870,7 +15980,7 @@ var AXColorPropertyEditorComponent = /** @class */ (function (_super) {
15870
15980
  }
15871
15981
  AXColorPropertyEditorComponent.prototype.ngAfterViewInit = function () {
15872
15982
  this.registerForValidationForm(this.textBox);
15873
- this.initiated = true;
15983
+ this.onRenderCompleted.emit();
15874
15984
  };
15875
15985
  AXColorPropertyEditorComponent.ctorParameters = function () { return [
15876
15986
  { type: ChangeDetectorRef }
@@ -15928,7 +16038,7 @@ var ColumnPropertyEditorComponent = /** @class */ (function (_super) {
15928
16038
  this.columns = this.value ? JSON.parse(JSON.stringify(this.value)) : [];
15929
16039
  };
15930
16040
  ColumnPropertyEditorComponent.prototype.ngAfterViewInit = function () {
15931
- this.initiated = true;
16041
+ this.onRenderCompleted.emit();
15932
16042
  };
15933
16043
  ColumnPropertyEditorComponent.prototype.drop = function (event) {
15934
16044
  moveItemInArray(this.columns, event.previousIndex, event.currentIndex);
@@ -16088,8 +16198,8 @@ var AXConditionalColorPropertyEditorComponent = /** @class */ (function (_super)
16088
16198
  ].filter(function (c) { return c.dataTypes == null || c.dataTypes.includes(_this.dataType); });
16089
16199
  };
16090
16200
  AXConditionalColorPropertyEditorComponent.prototype.ngAfterViewInit = function () {
16091
- this.initiated = true;
16092
16201
  this.cdr.detectChanges();
16202
+ this.onRenderCompleted.emit();
16093
16203
  };
16094
16204
  AXConditionalColorPropertyEditorComponent.prototype.handleEditClick = function (item) {
16095
16205
  var _this = this;
@@ -16288,7 +16398,7 @@ var AXSwitchPropertyEditorComponent = /** @class */ (function (_super) {
16288
16398
  _super.prototype.handleValueChange.call(this, e.value);
16289
16399
  };
16290
16400
  AXSwitchPropertyEditorComponent.prototype.ngAfterViewInit = function () {
16291
- this.initiated = true;
16401
+ this.onRenderCompleted.emit();
16292
16402
  };
16293
16403
  AXSwitchPropertyEditorComponent.ctorParameters = function () { return [
16294
16404
  { type: ChangeDetectorRef }
@@ -16337,8 +16447,8 @@ var AXDatePropertyEditorComponent = /** @class */ (function (_super) {
16337
16447
  _super.prototype.handleValueChange.call(this, e.value);
16338
16448
  };
16339
16449
  AXDatePropertyEditorComponent.prototype.ngAfterViewInit = function () {
16340
- this.initiated = true;
16341
16450
  this.registerForValidationForm(this.date);
16451
+ this.onRenderCompleted.emit();
16342
16452
  };
16343
16453
  AXDatePropertyEditorComponent.ctorParameters = function () { return [
16344
16454
  { type: ChangeDetectorRef }
@@ -16386,8 +16496,8 @@ var AXTimePropertyEditorComponent = /** @class */ (function (_super) {
16386
16496
  _super.prototype.handleValueChange.call(this, (_a = e.value) === null || _a === void 0 ? void 0 : _a.time);
16387
16497
  };
16388
16498
  AXTimePropertyEditorComponent.prototype.ngAfterViewInit = function () {
16389
- this.initiated = true;
16390
16499
  this.registerForValidationForm(this.time);
16500
+ this.onRenderCompleted.emit();
16391
16501
  };
16392
16502
  AXTimePropertyEditorComponent.ctorParameters = function () { return [
16393
16503
  { type: ChangeDetectorRef }