@tetacom/ng-components 1.0.20 → 1.0.24

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 (26) hide show
  1. package/common/util/position-util.d.ts +1 -1
  2. package/component/date-picker/date-picker/date-picker.component.d.ts +5 -1
  3. package/component/property-grid/property-grid/property-grid-item/property-grid-item.component.d.ts +2 -0
  4. package/component/property-grid/property-grid.module.d.ts +2 -1
  5. package/component/table/contract/table-column.d.ts +6 -0
  6. package/esm2020/common/util/position-util.mjs +13 -4
  7. package/esm2020/component/date-picker/date-picker/date-picker.component.mjs +17 -6
  8. package/esm2020/component/date-picker/month-picker/month-picker.component.mjs +3 -3
  9. package/esm2020/component/dropdown/dropdown-base.mjs +24 -16
  10. package/esm2020/component/filter/date-filter/date-filter.component.mjs +1 -1
  11. package/esm2020/component/property-grid/property-grid/property-grid-item/property-grid-item.component.mjs +7 -4
  12. package/esm2020/component/property-grid/property-grid.module.mjs +6 -2
  13. package/esm2020/component/select/select/select.component.mjs +3 -3
  14. package/esm2020/component/table/contract/table-column.mjs +2 -1
  15. package/esm2020/component/table/default/date-cell/date-cell.component.mjs +3 -3
  16. package/esm2020/component/table/default/date-time-cell/date-time-cell.component.mjs +1 -1
  17. package/esm2020/component/table/default/list-cell/list-cell.component.mjs +3 -3
  18. package/esm2020/component/table/head-cell-dropdown/head-cell-dropdown.component.mjs +3 -3
  19. package/esm2020/component/table/service/table.service.mjs +7 -3
  20. package/esm2020/component/table/table/table.component.mjs +5 -3
  21. package/esm2020/component/table/table-body/table-body.component.mjs +3 -3
  22. package/fesm2015/tetacom-ng-components.mjs +283 -245
  23. package/fesm2015/tetacom-ng-components.mjs.map +1 -1
  24. package/fesm2020/tetacom-ng-components.mjs +281 -243
  25. package/fesm2020/tetacom-ng-components.mjs.map +1 -1
  26. package/package.json +1 -1
@@ -15,6 +15,7 @@ import * as i1$1 from '@ngneat/transloco';
15
15
  import { TranslocoModule, TRANSLOCO_SCOPE } from '@ngneat/transloco';
16
16
  import { __awaiter } from 'tslib';
17
17
  import * as hash from 'object-hash';
18
+ import hash__default from 'object-hash';
18
19
  import { SizeStrategy, Datasource, UiScrollModule } from 'ngx-ui-scroll';
19
20
  import * as d3 from 'd3';
20
21
  import { zoomIdentity } from 'd3';
@@ -887,6 +888,24 @@ class DatePickerUtil {
887
888
  }
888
889
  }
889
890
 
891
+ var Align;
892
+ (function (Align) {
893
+ Align[Align["left"] = 0] = "left";
894
+ Align[Align["right"] = 1] = "right";
895
+ Align[Align["center"] = 2] = "center";
896
+ Align[Align["auto"] = 3] = "auto";
897
+ Align[Align["fitWidth"] = 4] = "fitWidth";
898
+ Align[Align["minWidth"] = 5] = "minWidth";
899
+ })(Align || (Align = {}));
900
+
901
+ var VerticalAlign;
902
+ (function (VerticalAlign) {
903
+ VerticalAlign[VerticalAlign["top"] = 0] = "top";
904
+ VerticalAlign[VerticalAlign["bottom"] = 1] = "bottom";
905
+ VerticalAlign[VerticalAlign["center"] = 2] = "center";
906
+ VerticalAlign[VerticalAlign["auto"] = 3] = "auto";
907
+ })(VerticalAlign || (VerticalAlign = {}));
908
+
890
909
  class PickerLocaleModel {
891
910
  constructor(options) {
892
911
  if (options) {
@@ -942,26 +961,13 @@ class DomUtil {
942
961
  }
943
962
  }
944
963
 
945
- var Align;
946
- (function (Align) {
947
- Align[Align["left"] = 0] = "left";
948
- Align[Align["right"] = 1] = "right";
949
- Align[Align["center"] = 2] = "center";
950
- Align[Align["auto"] = 3] = "auto";
951
- Align[Align["fitWidth"] = 4] = "fitWidth";
952
- Align[Align["minWidth"] = 5] = "minWidth";
953
- })(Align || (Align = {}));
954
-
955
- var VerticalAlign;
956
- (function (VerticalAlign) {
957
- VerticalAlign[VerticalAlign["top"] = 0] = "top";
958
- VerticalAlign[VerticalAlign["bottom"] = 1] = "bottom";
959
- VerticalAlign[VerticalAlign["center"] = 2] = "center";
960
- VerticalAlign[VerticalAlign["auto"] = 3] = "auto";
961
- })(VerticalAlign || (VerticalAlign = {}));
962
-
963
964
  class PositionUtil {
964
- static getPosition(containerPosition, elementPosition, align, verticalAlign, margin = 0, verticalMargin = 0) {
965
+ static getPosition(containerPosition, elementPosition, align, verticalAlign, margin = 0, verticalMargin = 0, transformedParentRect = {
966
+ left: 0,
967
+ right: 0,
968
+ top: 0,
969
+ bottom: 0
970
+ }) {
965
971
  const rect = {};
966
972
  const elementWidth = elementPosition.right - elementPosition.left;
967
973
  const elementHeight = elementPosition.bottom - elementPosition.top;
@@ -997,7 +1003,7 @@ class PositionUtil {
997
1003
  }
998
1004
  }
999
1005
  if (verticalAlign === VerticalAlign.top) {
1000
- rect.bottom = window.innerHeight - containerPosition.top + verticalMargin;
1006
+ rect.top = containerPosition.top - elementHeight - verticalMargin;
1001
1007
  }
1002
1008
  if (verticalAlign === VerticalAlign.bottom) {
1003
1009
  rect.top = containerPosition.bottom + verticalMargin;
@@ -1016,12 +1022,16 @@ class PositionUtil {
1016
1022
  if (rect.top < 0) {
1017
1023
  rect.top = 0;
1018
1024
  }
1019
- if (verticalAlign === VerticalAlign.bottom) {
1025
+ if (verticalAlign === VerticalAlign.bottom || verticalAlign === VerticalAlign.center) {
1020
1026
  rect.maxHeight = window.innerHeight - rect.top;
1021
1027
  }
1022
1028
  if (verticalAlign === VerticalAlign.top) {
1023
1029
  rect.maxHeight = containerPosition.top;
1024
1030
  }
1031
+ rect.left = rect.left - transformedParentRect.left;
1032
+ rect.right = rect.right - transformedParentRect.left;
1033
+ rect.top = rect.top - transformedParentRect.top;
1034
+ rect.bottom = rect.bottom ? rect.bottom - transformedParentRect.bottom : rect.bottom;
1025
1035
  return rect;
1026
1036
  }
1027
1037
  static setElementPosition(element, rect) {
@@ -1203,23 +1213,31 @@ class DropdownBase {
1203
1213
  this.setPosition(this._head.nativeElement, this._body);
1204
1214
  }
1205
1215
  setPosition(container, target) {
1206
- const containerRect = container.getBoundingClientRect();
1216
+ const containerPosition = container.getBoundingClientRect();
1217
+ const targetPosition = target.getBoundingClientRect();
1207
1218
  const rect = {
1208
- bottom: containerRect.bottom,
1209
- top: containerRect.top,
1210
- left: containerRect.left,
1211
- right: containerRect.right,
1219
+ bottom: containerPosition.bottom,
1220
+ top: containerPosition.top,
1221
+ left: containerPosition.left,
1222
+ right: containerPosition.right,
1223
+ };
1224
+ const targetRect = {
1225
+ bottom: targetPosition.bottom,
1226
+ top: targetPosition.top,
1227
+ left: targetPosition.left,
1228
+ right: targetPosition.right,
1212
1229
  };
1213
- // const transformedParent = DomUtil.findTransformedParent(container);
1214
- // console.log(transformedParent);
1215
- // if (transformedParent) {
1216
- // const parentPosition = transformedParent.getBoundingClientRect();
1217
- // rect.left = rect.left - parentPosition.left;
1218
- // rect.top = rect.top - parentPosition.top;
1219
- // rect.bottom = parentPosition.bottom - rect.top;
1220
- // rect.right = parentPosition.right - rect.right;
1221
- // }
1222
- const position = PositionUtil.getPosition(rect, target.getBoundingClientRect(), this.align, this.verticalAlign);
1230
+ const targetTransformedParent = DomUtil.findTransformedParent(target);
1231
+ let parentPosition = {
1232
+ left: 0,
1233
+ right: 0,
1234
+ top: 0,
1235
+ bottom: 0
1236
+ };
1237
+ if (targetTransformedParent) {
1238
+ parentPosition = targetTransformedParent.getBoundingClientRect();
1239
+ }
1240
+ const position = PositionUtil.getPosition(rect, targetRect, this.align, this.verticalAlign, 0, 0, parentPosition);
1223
1241
  PositionUtil.setElementPosition(target, position);
1224
1242
  }
1225
1243
  }
@@ -1924,6 +1942,8 @@ class DatePickerComponent {
1924
1942
  this._cdr = _cdr;
1925
1943
  this._elementRef = _elementRef;
1926
1944
  this.firstDayOfWeek = 1;
1945
+ this.align = Align.left;
1946
+ this.verticalAlign = VerticalAlign.auto;
1927
1947
  this.showTime = false;
1928
1948
  this.classDatepicker = true;
1929
1949
  this.tabindex = 0;
@@ -1932,8 +1952,10 @@ class DatePickerComponent {
1932
1952
  this.displayMode = DatePickerMode.date;
1933
1953
  this._value = null;
1934
1954
  this._alive = true;
1935
- this.onChange = (_) => { };
1936
- this.onTouched = () => { };
1955
+ this.onChange = (_) => {
1956
+ };
1957
+ this.onTouched = () => {
1958
+ };
1937
1959
  this.setDate = (day) => {
1938
1960
  if (day === null || day === undefined) {
1939
1961
  this.currentValue = null;
@@ -2090,7 +2112,8 @@ class DatePickerComponent {
2090
2112
  registerOnTouched(fn) {
2091
2113
  this.onTouched = fn;
2092
2114
  }
2093
- ngOnInit() { }
2115
+ ngOnInit() {
2116
+ }
2094
2117
  ngOnDestroy() {
2095
2118
  this._alive = false;
2096
2119
  }
@@ -2118,10 +2141,10 @@ class DatePickerComponent {
2118
2141
  }
2119
2142
  }
2120
2143
  DatePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: DatePickerComponent, deps: [{ token: PickerLocaleService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
2121
- DatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: DatePickerComponent, selector: "teta-date-picker", inputs: { disabled: "disabled", invalid: "invalid", firstDayOfWeek: "firstDayOfWeek", disabledDates: "disabledDates", disabledPeriods: "disabledPeriods", disabledDays: "disabledDays", minDate: "minDate", maxDate: "maxDate", minYearDate: "minYearDate", maxYearDate: "maxYearDate", appendToBody: "appendToBody", showTime: "showTime", format: "format" }, host: { listeners: { "window:keyup": "keyUp($event)" }, properties: { "class.datepicker-wide": "this.showTime", "class.datepicker_open": "this.open", "class.datepicker": "this.classDatepicker", "tabindex": "this.tabindex" } }, providers: [DATE_PICKER_CONTROL_VALUE_ACCESSOR], ngImport: i0, template: "<teta-dropdown\n class=\"row row_auto\"\n [disabled]=\"disabled\"\n [open]=\"open\"\n [autoCloseIgnore]=\"['esc']\"\n (openChange)=\"openPicker($event)\"\n [appendToBody]=\"appendToBody\">\n <div tetaDropdownHead\n class=\"datepicker-head font-body-3\"\n [class.datepicker-head_disabled]=\"disabled\"\n [class.datepicker-head_invalid]=\"invalid\">\n <teta-icon [name]=\"'calendar'\" class=\"margin-right-1\"></teta-icon>\n <div class=\"row_auto\">\n {{currentValue !== null && currentValue !== undefined ? (currentValue | date : format) : ''}}\n </div>\n <teta-icon [name]=\"'closeBig'\" (click)=\"clearPicker($event);\" class=\"margin-left-1\"></teta-icon>\n </div>\n <div tetaDropdownContent class=\"datepicker-body\">\n <div class=\"padding-3\">\n <div class=\"row align-center justify-content-between\">\n <div>\n <button teta-button\n [palette]=\"'text'\"\n [view]=\"displayMode===datePickerModeEnum.month ? 'primary' : 'ghost'\"\n (click)=\"setMode(datePickerModeEnum.month)\"\n (wheel)=\"scrollMonth($event);\">\n {{locale.monthNames[internalValue?.getMonth()]}}\n </button>\n <button teta-button\n class=\"margin-left-2\"\n [palette]=\"'text'\"\n [view]=\"displayMode===datePickerModeEnum.year ? 'primary' : 'ghost'\"\n (click)=\"setMode(datePickerModeEnum.year)\"\n (wheel)=\"scrollYear($event);\">\n {{internalValue?.getFullYear()}}\n </button>\n </div>\n <button teta-button\n [palette]=\"'text'\"\n [view]=\"'ghost'\"\n (click)=\"setToday()\">\n <teta-icon [name]=\"'calendar'\"></teta-icon>\n </button>\n </div>\n <div class=\"datepicker-content\">\n <teta-year-select\n *ngIf=\"displayMode === datePickerModeEnum.year\"\n [currentYear]=\"internalValue?.getFullYear()\"\n [today]=\"today\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (yearSelected)=\"setYear($event)\">\n </teta-year-select>\n <teta-month-select\n *ngIf=\"displayMode === datePickerModeEnum.month\"\n [currentMonth]=\"internalValue?.getMonth()\"\n [currentYear]=\"internalValue?.getFullYear()\"\n [locale]=\"locale\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (monthSelected)=\"setMonth($event)\">\n </teta-month-select>\n <teta-day-select\n *ngIf=\"displayMode === datePickerModeEnum.date\"\n [ngModel]=\"currentValue\"\n (ngModelChange)=\"applyValue($event)\"\n (dateSelected)=\"setDate($event)\"\n (yearSelected)=\"setYear($event)\"\n (monthSelected)=\"setMonth($event)\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [disabledDays]=\"disabledDays\"\n [disabledDates]=\"disabledDates\"\n [disabledPeriods]=\"disabledPeriods\"></teta-day-select>\n </div>\n </div>\n <div *ngIf=\"showTime\" class=\"datepicker-time padding-v-1 border-top border-text-10 font-body-3 color-text-90\">\n <teta-time-part-control [max]=\"23\" [ngModel]=\"internalValue?.getHours()\"\n (ngModelChange)=\"setHour($event)\"></teta-time-part-control>\n :\n <teta-time-part-control [ngModel]=\"internalValue?.getMinutes()\"\n (ngModelChange)=\"setMinute($event)\"></teta-time-part-control>\n :\n <teta-time-part-control [ngModel]=\"internalValue?.getSeconds()\"\n (ngModelChange)=\"setSecond($event)\"></teta-time-part-control>\n </div>\n </div>\n</teta-dropdown>\n", styles: [""], components: [{ type: DropdownComponent, selector: "teta-dropdown" }, { type: IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { type: ButtonComponent, selector: "button[teta-button], teta-button", inputs: ["palette", "class", "view", "square"] }, { type: YearSelectComponent, selector: "teta-year-select", inputs: ["currentYear", "today", "size", "minDate", "maxDate", "allowableRange"], outputs: ["yearSelected", "yearApplied"] }, { type: MonthSelectComponent, selector: "teta-month-select", inputs: ["locale", "minDate", "maxDate", "size", "currentMonth", "currentYear"], outputs: ["monthSelected", "monthApplied"] }, { type: DaySelectComponent, selector: "teta-day-select", inputs: ["firstDayOfWeek", "disabledDates", "disabledPeriods", "disabledDays", "minDate", "maxDate", "disabled"], outputs: ["dateSelected", "monthSelected", "yearSelected"] }, { type: TimePartControlComponent, selector: "teta-time-part-control", inputs: ["min", "max", "disabled"] }], directives: [{ type: DropdownHeadDirective, selector: "[tetaDropdownHead]" }, { type: DropdownContentDirective, selector: "[tetaDropdownContent]" }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "date": i2.DatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2144
+ DatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: DatePickerComponent, selector: "teta-date-picker", inputs: { disabled: "disabled", invalid: "invalid", firstDayOfWeek: "firstDayOfWeek", disabledDates: "disabledDates", disabledPeriods: "disabledPeriods", disabledDays: "disabledDays", minDate: "minDate", maxDate: "maxDate", minYearDate: "minYearDate", maxYearDate: "maxYearDate", align: "align", verticalAlign: "verticalAlign", appendToBody: "appendToBody", showTime: "showTime", format: "format" }, host: { listeners: { "window:keyup": "keyUp($event)" }, properties: { "class.datepicker-wide": "this.showTime", "class.datepicker_open": "this.open", "class.datepicker": "this.classDatepicker", "tabindex": "this.tabindex" } }, providers: [DATE_PICKER_CONTROL_VALUE_ACCESSOR], ngImport: i0, template: "<teta-dropdown\n class=\"row row_auto\"\n [disabled]=\"disabled\"\n [open]=\"open\"\n [autoCloseIgnore]=\"['esc']\"\n (openChange)=\"openPicker($event)\"\n [align]=\"align\"\n [verticalAlign]=\"verticalAlign\"\n [appendToBody]=\"appendToBody\">\n <div tetaDropdownHead\n class=\"datepicker-head font-body-3\"\n [class.datepicker-head_disabled]=\"disabled\"\n [class.datepicker-head_invalid]=\"invalid\">\n <teta-icon [name]=\"'calendar'\" class=\"margin-right-1\"></teta-icon>\n <div class=\"row_auto\">\n {{currentValue !== null && currentValue !== undefined ? (currentValue | date : format) : ''}}\n </div>\n <teta-icon [name]=\"'closeBig'\" (click)=\"clearPicker($event);\" class=\"margin-left-1\"></teta-icon>\n </div>\n <div tetaDropdownContent class=\"datepicker-body scrollable\" (click)=\"$event.preventDefault()\">\n <div class=\"padding-3\">\n <div class=\"row align-center justify-content-between\">\n <div>\n <button teta-button\n [palette]=\"'text'\"\n [view]=\"displayMode===datePickerModeEnum.month ? 'primary' : 'ghost'\"\n (click)=\"setMode(datePickerModeEnum.month)\"\n (wheel)=\"scrollMonth($event);\">\n {{locale.monthNames[internalValue?.getMonth()]}}\n </button>\n <button teta-button\n class=\"margin-left-2\"\n [palette]=\"'text'\"\n [view]=\"displayMode===datePickerModeEnum.year ? 'primary' : 'ghost'\"\n (click)=\"setMode(datePickerModeEnum.year)\"\n (wheel)=\"scrollYear($event);\">\n {{internalValue?.getFullYear()}}\n </button>\n </div>\n <button teta-button\n [palette]=\"'text'\"\n [view]=\"'ghost'\"\n (click)=\"setToday()\">\n <teta-icon [name]=\"'calendar'\"></teta-icon>\n </button>\n </div>\n <div class=\"datepicker-content\">\n <teta-year-select\n *ngIf=\"displayMode === datePickerModeEnum.year\"\n [currentYear]=\"internalValue?.getFullYear()\"\n [today]=\"today\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (yearSelected)=\"setYear($event)\">\n </teta-year-select>\n <teta-month-select\n *ngIf=\"displayMode === datePickerModeEnum.month\"\n [currentMonth]=\"internalValue?.getMonth()\"\n [currentYear]=\"internalValue?.getFullYear()\"\n [locale]=\"locale\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (monthSelected)=\"setMonth($event)\">\n </teta-month-select>\n <teta-day-select\n *ngIf=\"displayMode === datePickerModeEnum.date\"\n [ngModel]=\"currentValue\"\n (ngModelChange)=\"applyValue($event)\"\n (dateSelected)=\"setDate($event)\"\n (yearSelected)=\"setYear($event)\"\n (monthSelected)=\"setMonth($event)\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [disabledDays]=\"disabledDays\"\n [disabledDates]=\"disabledDates\"\n [disabledPeriods]=\"disabledPeriods\"></teta-day-select>\n </div>\n </div>\n <div *ngIf=\"showTime\" class=\"datepicker-time padding-v-1 border-top border-text-10 font-body-3 color-text-90\">\n <teta-time-part-control [max]=\"23\" [ngModel]=\"internalValue?.getHours()\"\n (ngModelChange)=\"setHour($event)\"></teta-time-part-control>\n :\n <teta-time-part-control [ngModel]=\"internalValue?.getMinutes()\"\n (ngModelChange)=\"setMinute($event)\"></teta-time-part-control>\n :\n <teta-time-part-control [ngModel]=\"internalValue?.getSeconds()\"\n (ngModelChange)=\"setSecond($event)\"></teta-time-part-control>\n </div>\n </div>\n</teta-dropdown>\n", styles: [""], components: [{ type: DropdownComponent, selector: "teta-dropdown" }, { type: IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { type: ButtonComponent, selector: "button[teta-button], teta-button", inputs: ["palette", "class", "view", "square"] }, { type: YearSelectComponent, selector: "teta-year-select", inputs: ["currentYear", "today", "size", "minDate", "maxDate", "allowableRange"], outputs: ["yearSelected", "yearApplied"] }, { type: MonthSelectComponent, selector: "teta-month-select", inputs: ["locale", "minDate", "maxDate", "size", "currentMonth", "currentYear"], outputs: ["monthSelected", "monthApplied"] }, { type: DaySelectComponent, selector: "teta-day-select", inputs: ["firstDayOfWeek", "disabledDates", "disabledPeriods", "disabledDays", "minDate", "maxDate", "disabled"], outputs: ["dateSelected", "monthSelected", "yearSelected"] }, { type: TimePartControlComponent, selector: "teta-time-part-control", inputs: ["min", "max", "disabled"] }], directives: [{ type: DropdownHeadDirective, selector: "[tetaDropdownHead]" }, { type: DropdownContentDirective, selector: "[tetaDropdownContent]" }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "date": i2.DatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2122
2145
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: DatePickerComponent, decorators: [{
2123
2146
  type: Component,
2124
- args: [{ selector: 'teta-date-picker', providers: [DATE_PICKER_CONTROL_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, template: "<teta-dropdown\n class=\"row row_auto\"\n [disabled]=\"disabled\"\n [open]=\"open\"\n [autoCloseIgnore]=\"['esc']\"\n (openChange)=\"openPicker($event)\"\n [appendToBody]=\"appendToBody\">\n <div tetaDropdownHead\n class=\"datepicker-head font-body-3\"\n [class.datepicker-head_disabled]=\"disabled\"\n [class.datepicker-head_invalid]=\"invalid\">\n <teta-icon [name]=\"'calendar'\" class=\"margin-right-1\"></teta-icon>\n <div class=\"row_auto\">\n {{currentValue !== null && currentValue !== undefined ? (currentValue | date : format) : ''}}\n </div>\n <teta-icon [name]=\"'closeBig'\" (click)=\"clearPicker($event);\" class=\"margin-left-1\"></teta-icon>\n </div>\n <div tetaDropdownContent class=\"datepicker-body\">\n <div class=\"padding-3\">\n <div class=\"row align-center justify-content-between\">\n <div>\n <button teta-button\n [palette]=\"'text'\"\n [view]=\"displayMode===datePickerModeEnum.month ? 'primary' : 'ghost'\"\n (click)=\"setMode(datePickerModeEnum.month)\"\n (wheel)=\"scrollMonth($event);\">\n {{locale.monthNames[internalValue?.getMonth()]}}\n </button>\n <button teta-button\n class=\"margin-left-2\"\n [palette]=\"'text'\"\n [view]=\"displayMode===datePickerModeEnum.year ? 'primary' : 'ghost'\"\n (click)=\"setMode(datePickerModeEnum.year)\"\n (wheel)=\"scrollYear($event);\">\n {{internalValue?.getFullYear()}}\n </button>\n </div>\n <button teta-button\n [palette]=\"'text'\"\n [view]=\"'ghost'\"\n (click)=\"setToday()\">\n <teta-icon [name]=\"'calendar'\"></teta-icon>\n </button>\n </div>\n <div class=\"datepicker-content\">\n <teta-year-select\n *ngIf=\"displayMode === datePickerModeEnum.year\"\n [currentYear]=\"internalValue?.getFullYear()\"\n [today]=\"today\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (yearSelected)=\"setYear($event)\">\n </teta-year-select>\n <teta-month-select\n *ngIf=\"displayMode === datePickerModeEnum.month\"\n [currentMonth]=\"internalValue?.getMonth()\"\n [currentYear]=\"internalValue?.getFullYear()\"\n [locale]=\"locale\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (monthSelected)=\"setMonth($event)\">\n </teta-month-select>\n <teta-day-select\n *ngIf=\"displayMode === datePickerModeEnum.date\"\n [ngModel]=\"currentValue\"\n (ngModelChange)=\"applyValue($event)\"\n (dateSelected)=\"setDate($event)\"\n (yearSelected)=\"setYear($event)\"\n (monthSelected)=\"setMonth($event)\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [disabledDays]=\"disabledDays\"\n [disabledDates]=\"disabledDates\"\n [disabledPeriods]=\"disabledPeriods\"></teta-day-select>\n </div>\n </div>\n <div *ngIf=\"showTime\" class=\"datepicker-time padding-v-1 border-top border-text-10 font-body-3 color-text-90\">\n <teta-time-part-control [max]=\"23\" [ngModel]=\"internalValue?.getHours()\"\n (ngModelChange)=\"setHour($event)\"></teta-time-part-control>\n :\n <teta-time-part-control [ngModel]=\"internalValue?.getMinutes()\"\n (ngModelChange)=\"setMinute($event)\"></teta-time-part-control>\n :\n <teta-time-part-control [ngModel]=\"internalValue?.getSeconds()\"\n (ngModelChange)=\"setSecond($event)\"></teta-time-part-control>\n </div>\n </div>\n</teta-dropdown>\n", styles: [""] }]
2147
+ args: [{ selector: 'teta-date-picker', providers: [DATE_PICKER_CONTROL_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, template: "<teta-dropdown\n class=\"row row_auto\"\n [disabled]=\"disabled\"\n [open]=\"open\"\n [autoCloseIgnore]=\"['esc']\"\n (openChange)=\"openPicker($event)\"\n [align]=\"align\"\n [verticalAlign]=\"verticalAlign\"\n [appendToBody]=\"appendToBody\">\n <div tetaDropdownHead\n class=\"datepicker-head font-body-3\"\n [class.datepicker-head_disabled]=\"disabled\"\n [class.datepicker-head_invalid]=\"invalid\">\n <teta-icon [name]=\"'calendar'\" class=\"margin-right-1\"></teta-icon>\n <div class=\"row_auto\">\n {{currentValue !== null && currentValue !== undefined ? (currentValue | date : format) : ''}}\n </div>\n <teta-icon [name]=\"'closeBig'\" (click)=\"clearPicker($event);\" class=\"margin-left-1\"></teta-icon>\n </div>\n <div tetaDropdownContent class=\"datepicker-body scrollable\" (click)=\"$event.preventDefault()\">\n <div class=\"padding-3\">\n <div class=\"row align-center justify-content-between\">\n <div>\n <button teta-button\n [palette]=\"'text'\"\n [view]=\"displayMode===datePickerModeEnum.month ? 'primary' : 'ghost'\"\n (click)=\"setMode(datePickerModeEnum.month)\"\n (wheel)=\"scrollMonth($event);\">\n {{locale.monthNames[internalValue?.getMonth()]}}\n </button>\n <button teta-button\n class=\"margin-left-2\"\n [palette]=\"'text'\"\n [view]=\"displayMode===datePickerModeEnum.year ? 'primary' : 'ghost'\"\n (click)=\"setMode(datePickerModeEnum.year)\"\n (wheel)=\"scrollYear($event);\">\n {{internalValue?.getFullYear()}}\n </button>\n </div>\n <button teta-button\n [palette]=\"'text'\"\n [view]=\"'ghost'\"\n (click)=\"setToday()\">\n <teta-icon [name]=\"'calendar'\"></teta-icon>\n </button>\n </div>\n <div class=\"datepicker-content\">\n <teta-year-select\n *ngIf=\"displayMode === datePickerModeEnum.year\"\n [currentYear]=\"internalValue?.getFullYear()\"\n [today]=\"today\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (yearSelected)=\"setYear($event)\">\n </teta-year-select>\n <teta-month-select\n *ngIf=\"displayMode === datePickerModeEnum.month\"\n [currentMonth]=\"internalValue?.getMonth()\"\n [currentYear]=\"internalValue?.getFullYear()\"\n [locale]=\"locale\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (monthSelected)=\"setMonth($event)\">\n </teta-month-select>\n <teta-day-select\n *ngIf=\"displayMode === datePickerModeEnum.date\"\n [ngModel]=\"currentValue\"\n (ngModelChange)=\"applyValue($event)\"\n (dateSelected)=\"setDate($event)\"\n (yearSelected)=\"setYear($event)\"\n (monthSelected)=\"setMonth($event)\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [disabledDays]=\"disabledDays\"\n [disabledDates]=\"disabledDates\"\n [disabledPeriods]=\"disabledPeriods\"></teta-day-select>\n </div>\n </div>\n <div *ngIf=\"showTime\" class=\"datepicker-time padding-v-1 border-top border-text-10 font-body-3 color-text-90\">\n <teta-time-part-control [max]=\"23\" [ngModel]=\"internalValue?.getHours()\"\n (ngModelChange)=\"setHour($event)\"></teta-time-part-control>\n :\n <teta-time-part-control [ngModel]=\"internalValue?.getMinutes()\"\n (ngModelChange)=\"setMinute($event)\"></teta-time-part-control>\n :\n <teta-time-part-control [ngModel]=\"internalValue?.getSeconds()\"\n (ngModelChange)=\"setSecond($event)\"></teta-time-part-control>\n </div>\n </div>\n</teta-dropdown>\n", styles: [""] }]
2125
2148
  }], ctorParameters: function () { return [{ type: PickerLocaleService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { disabled: [{
2126
2149
  type: Input
2127
2150
  }], invalid: [{
@@ -2142,6 +2165,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
2142
2165
  type: Input
2143
2166
  }], maxYearDate: [{
2144
2167
  type: Input
2168
+ }], align: [{
2169
+ type: Input
2170
+ }], verticalAlign: [{
2171
+ type: Input
2145
2172
  }], appendToBody: [{
2146
2173
  type: Input
2147
2174
  }], showTime: [{
@@ -2376,10 +2403,10 @@ class MonthPickerComponent {
2376
2403
  }
2377
2404
  }
2378
2405
  MonthPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: MonthPickerComponent, deps: [{ token: PickerLocaleService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
2379
- MonthPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: MonthPickerComponent, selector: "teta-month-picker", inputs: { disabled: "disabled", minDate: "minDate", maxDate: "maxDate", showToday: "showToday", appendToBody: "appendToBody" }, host: { properties: { "class.datepicker_open": "this.showPicker", "class.datepicker": "this.classDatepicker", "tabindex": "this.tabindex" } }, providers: [MONTH_PICKER_CONTROL_VALUE_ACCESSOR], ngImport: i0, template: "<teta-dropdown\n class=\"row row_auto\"\n [appendToBody]=\"appendToBody\"\n [(open)]=\"showPicker\"\n [disabled]=\"disabled\">\n <div tetaDropdownHead\n (wheel)=\"scrollMonth($event)\"\n class=\"datepicker-head font-body-3\">\n <teta-icon [name]=\"'calendar'\" class=\"margin-right-2\"></teta-icon>\n <div class=\"row_auto\">\n <ng-container *ngIf=\"_value !==null && _value!==undefined\">\n {{locale.monthNames[_value.getMonth()]}} {{_value.getFullYear()}}\n </ng-container>\n </div>\n <teta-icon [name]=\"'closeBig'\" (click)=\"clearPicker()\" class=\"margin-left-2\"></teta-icon>\n </div>\n <div tetaDropdownContent class=\"datepicker-body padding-3\">\n <div class=\"row align-center justify-content-between\">\n <div>\n <button teta-button\n [palette]=\"'text'\"\n [view]=\"displayMode===datePickerModeEnum.month ? 'primary' : 'ghost'\"\n (click)=\"setMode(datePickerModeEnum.month)\"\n (wheel)=\"scrollMonth($event);\">\n {{locale.monthNames[_currentMonth || today.getMonth()]}}\n </button>\n <button teta-button\n class=\"margin-left-2\"\n [palette]=\"'text'\"\n [view]=\"displayMode===datePickerModeEnum.year ? 'primary' : 'ghost'\"\n (click)=\"setMode(datePickerModeEnum.year)\"\n (wheel)=\"scrollYear($event);\">\n {{_currentYear || today.getFullYear()}}\n </button>\n </div>\n <button teta-button\n [palette]=\"'text'\"\n [view]=\"'ghost'\"\n (click)=\"setToday()\">\n <teta-icon [name]=\"'calendar'\"></teta-icon>\n </button>\n </div>\n <div class=\"datepicker-content\">\n <teta-year-select\n *ngIf=\"displayMode === datePickerModeEnum.year\"\n [currentYear]=\"_currentYear\"\n [today]=\"today\"\n [size]=\"8\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (yearSelected)=\"setYear($event)\">\n </teta-year-select>\n <teta-month-select\n *ngIf=\"displayMode === datePickerModeEnum.month\"\n [currentMonth]=\"_currentMonth\"\n [locale]=\"locale\"\n [currentYear]=\"_currentYear\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (monthSelected)=\"setMonth($event)\">\n </teta-month-select>\n </div>\n </div>\n</teta-dropdown>\n", styles: [""], components: [{ type: DropdownComponent, selector: "teta-dropdown" }, { type: IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { type: ButtonComponent, selector: "button[teta-button], teta-button", inputs: ["palette", "class", "view", "square"] }, { type: YearSelectComponent, selector: "teta-year-select", inputs: ["currentYear", "today", "size", "minDate", "maxDate", "allowableRange"], outputs: ["yearSelected", "yearApplied"] }, { type: MonthSelectComponent, selector: "teta-month-select", inputs: ["locale", "minDate", "maxDate", "size", "currentMonth", "currentYear"], outputs: ["monthSelected", "monthApplied"] }], directives: [{ type: DropdownHeadDirective, selector: "[tetaDropdownHead]" }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DropdownContentDirective, selector: "[tetaDropdownContent]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2406
+ MonthPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: MonthPickerComponent, selector: "teta-month-picker", inputs: { disabled: "disabled", minDate: "minDate", maxDate: "maxDate", showToday: "showToday", appendToBody: "appendToBody" }, host: { properties: { "class.datepicker_open": "this.showPicker", "class.datepicker": "this.classDatepicker", "tabindex": "this.tabindex" } }, providers: [MONTH_PICKER_CONTROL_VALUE_ACCESSOR], ngImport: i0, template: "<teta-dropdown\n class=\"row row_auto\"\n [appendToBody]=\"appendToBody\"\n [(open)]=\"showPicker\"\n [disabled]=\"disabled\">\n <div tetaDropdownHead\n (wheel)=\"scrollMonth($event)\"\n class=\"datepicker-head font-body-3\">\n <teta-icon [name]=\"'calendar'\" class=\"margin-right-2\"></teta-icon>\n <div class=\"row_auto\">\n <ng-container *ngIf=\"_value !==null && _value!==undefined\">\n {{locale.monthNames[_value.getMonth()]}} {{_value.getFullYear()}}\n </ng-container>\n </div>\n <teta-icon [name]=\"'closeBig'\" (click)=\"clearPicker()\" class=\"margin-left-2\"></teta-icon>\n </div>\n <div tetaDropdownContent class=\"datepicker-body scrollable padding-3\">\n <div class=\"row align-center justify-content-between\">\n <div>\n <button teta-button\n [palette]=\"'text'\"\n [view]=\"displayMode===datePickerModeEnum.month ? 'primary' : 'ghost'\"\n (click)=\"setMode(datePickerModeEnum.month)\"\n (wheel)=\"scrollMonth($event);\">\n {{locale.monthNames[_currentMonth || today.getMonth()]}}\n </button>\n <button teta-button\n class=\"margin-left-2\"\n [palette]=\"'text'\"\n [view]=\"displayMode===datePickerModeEnum.year ? 'primary' : 'ghost'\"\n (click)=\"setMode(datePickerModeEnum.year)\"\n (wheel)=\"scrollYear($event);\">\n {{_currentYear || today.getFullYear()}}\n </button>\n </div>\n <button teta-button\n [palette]=\"'text'\"\n [view]=\"'ghost'\"\n (click)=\"setToday()\">\n <teta-icon [name]=\"'calendar'\"></teta-icon>\n </button>\n </div>\n <div class=\"datepicker-content\">\n <teta-year-select\n *ngIf=\"displayMode === datePickerModeEnum.year\"\n [currentYear]=\"_currentYear\"\n [today]=\"today\"\n [size]=\"8\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (yearSelected)=\"setYear($event)\">\n </teta-year-select>\n <teta-month-select\n *ngIf=\"displayMode === datePickerModeEnum.month\"\n [currentMonth]=\"_currentMonth\"\n [locale]=\"locale\"\n [currentYear]=\"_currentYear\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (monthSelected)=\"setMonth($event)\">\n </teta-month-select>\n </div>\n </div>\n</teta-dropdown>\n", styles: [""], components: [{ type: DropdownComponent, selector: "teta-dropdown" }, { type: IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { type: ButtonComponent, selector: "button[teta-button], teta-button", inputs: ["palette", "class", "view", "square"] }, { type: YearSelectComponent, selector: "teta-year-select", inputs: ["currentYear", "today", "size", "minDate", "maxDate", "allowableRange"], outputs: ["yearSelected", "yearApplied"] }, { type: MonthSelectComponent, selector: "teta-month-select", inputs: ["locale", "minDate", "maxDate", "size", "currentMonth", "currentYear"], outputs: ["monthSelected", "monthApplied"] }], directives: [{ type: DropdownHeadDirective, selector: "[tetaDropdownHead]" }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DropdownContentDirective, selector: "[tetaDropdownContent]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2380
2407
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: MonthPickerComponent, decorators: [{
2381
2408
  type: Component,
2382
- args: [{ selector: 'teta-month-picker', providers: [MONTH_PICKER_CONTROL_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, template: "<teta-dropdown\n class=\"row row_auto\"\n [appendToBody]=\"appendToBody\"\n [(open)]=\"showPicker\"\n [disabled]=\"disabled\">\n <div tetaDropdownHead\n (wheel)=\"scrollMonth($event)\"\n class=\"datepicker-head font-body-3\">\n <teta-icon [name]=\"'calendar'\" class=\"margin-right-2\"></teta-icon>\n <div class=\"row_auto\">\n <ng-container *ngIf=\"_value !==null && _value!==undefined\">\n {{locale.monthNames[_value.getMonth()]}} {{_value.getFullYear()}}\n </ng-container>\n </div>\n <teta-icon [name]=\"'closeBig'\" (click)=\"clearPicker()\" class=\"margin-left-2\"></teta-icon>\n </div>\n <div tetaDropdownContent class=\"datepicker-body padding-3\">\n <div class=\"row align-center justify-content-between\">\n <div>\n <button teta-button\n [palette]=\"'text'\"\n [view]=\"displayMode===datePickerModeEnum.month ? 'primary' : 'ghost'\"\n (click)=\"setMode(datePickerModeEnum.month)\"\n (wheel)=\"scrollMonth($event);\">\n {{locale.monthNames[_currentMonth || today.getMonth()]}}\n </button>\n <button teta-button\n class=\"margin-left-2\"\n [palette]=\"'text'\"\n [view]=\"displayMode===datePickerModeEnum.year ? 'primary' : 'ghost'\"\n (click)=\"setMode(datePickerModeEnum.year)\"\n (wheel)=\"scrollYear($event);\">\n {{_currentYear || today.getFullYear()}}\n </button>\n </div>\n <button teta-button\n [palette]=\"'text'\"\n [view]=\"'ghost'\"\n (click)=\"setToday()\">\n <teta-icon [name]=\"'calendar'\"></teta-icon>\n </button>\n </div>\n <div class=\"datepicker-content\">\n <teta-year-select\n *ngIf=\"displayMode === datePickerModeEnum.year\"\n [currentYear]=\"_currentYear\"\n [today]=\"today\"\n [size]=\"8\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (yearSelected)=\"setYear($event)\">\n </teta-year-select>\n <teta-month-select\n *ngIf=\"displayMode === datePickerModeEnum.month\"\n [currentMonth]=\"_currentMonth\"\n [locale]=\"locale\"\n [currentYear]=\"_currentYear\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (monthSelected)=\"setMonth($event)\">\n </teta-month-select>\n </div>\n </div>\n</teta-dropdown>\n", styles: [""] }]
2409
+ args: [{ selector: 'teta-month-picker', providers: [MONTH_PICKER_CONTROL_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, template: "<teta-dropdown\n class=\"row row_auto\"\n [appendToBody]=\"appendToBody\"\n [(open)]=\"showPicker\"\n [disabled]=\"disabled\">\n <div tetaDropdownHead\n (wheel)=\"scrollMonth($event)\"\n class=\"datepicker-head font-body-3\">\n <teta-icon [name]=\"'calendar'\" class=\"margin-right-2\"></teta-icon>\n <div class=\"row_auto\">\n <ng-container *ngIf=\"_value !==null && _value!==undefined\">\n {{locale.monthNames[_value.getMonth()]}} {{_value.getFullYear()}}\n </ng-container>\n </div>\n <teta-icon [name]=\"'closeBig'\" (click)=\"clearPicker()\" class=\"margin-left-2\"></teta-icon>\n </div>\n <div tetaDropdownContent class=\"datepicker-body scrollable padding-3\">\n <div class=\"row align-center justify-content-between\">\n <div>\n <button teta-button\n [palette]=\"'text'\"\n [view]=\"displayMode===datePickerModeEnum.month ? 'primary' : 'ghost'\"\n (click)=\"setMode(datePickerModeEnum.month)\"\n (wheel)=\"scrollMonth($event);\">\n {{locale.monthNames[_currentMonth || today.getMonth()]}}\n </button>\n <button teta-button\n class=\"margin-left-2\"\n [palette]=\"'text'\"\n [view]=\"displayMode===datePickerModeEnum.year ? 'primary' : 'ghost'\"\n (click)=\"setMode(datePickerModeEnum.year)\"\n (wheel)=\"scrollYear($event);\">\n {{_currentYear || today.getFullYear()}}\n </button>\n </div>\n <button teta-button\n [palette]=\"'text'\"\n [view]=\"'ghost'\"\n (click)=\"setToday()\">\n <teta-icon [name]=\"'calendar'\"></teta-icon>\n </button>\n </div>\n <div class=\"datepicker-content\">\n <teta-year-select\n *ngIf=\"displayMode === datePickerModeEnum.year\"\n [currentYear]=\"_currentYear\"\n [today]=\"today\"\n [size]=\"8\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (yearSelected)=\"setYear($event)\">\n </teta-year-select>\n <teta-month-select\n *ngIf=\"displayMode === datePickerModeEnum.month\"\n [currentMonth]=\"_currentMonth\"\n [locale]=\"locale\"\n [currentYear]=\"_currentYear\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (monthSelected)=\"setMonth($event)\">\n </teta-month-select>\n </div>\n </div>\n</teta-dropdown>\n", styles: [""] }]
2383
2410
  }], ctorParameters: function () { return [{ type: PickerLocaleService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { disabled: [{
2384
2411
  type: Input
2385
2412
  }], minDate: [{
@@ -3775,7 +3802,7 @@ class DateFilterComponent extends FilterComponentBase {
3775
3802
  }
3776
3803
  }
3777
3804
  DateFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: DateFilterComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
3778
- DateFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: DateFilterComponent, selector: "teta-date-filter", inputs: { column: "column", filterOptions: "filterOptions", state: "state" }, outputs: { filterChanged: "filterChanged" }, usesInheritance: true, ngImport: i0, template: "<div class=\"form-row padding-3\">\n <teta-input [label]=\"'\u041E\u0442'\">\n <teta-date-picker style=\"width: 110px\"\n [ngModel]=\"filter.value?.greaterThan\"\n [appendToBody]=\"true\"\n (ngModelChange)=\"filter.value.greaterThan=$event\"></teta-date-picker>\n </teta-input>\n <teta-input [label]=\"'\u0414\u043E'\">\n <teta-date-picker style=\"width: 110px\"\n [ngModel]=\"filter.value?.lessThan\"\n [appendToBody]=\"true\"\n (ngModelChange)=\"filter.value.lessThan=$event\"></teta-date-picker>\n </teta-input>\n</div>\n", styles: [""], components: [{ type: InputComponent, selector: "teta-input", inputs: ["label", "horizontal", "required"] }, { type: DatePickerComponent, selector: "teta-date-picker", inputs: ["disabled", "invalid", "firstDayOfWeek", "disabledDates", "disabledPeriods", "disabledDays", "minDate", "maxDate", "minYearDate", "maxYearDate", "appendToBody", "showTime", "format"] }], directives: [{ type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3805
+ DateFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: DateFilterComponent, selector: "teta-date-filter", inputs: { column: "column", filterOptions: "filterOptions", state: "state" }, outputs: { filterChanged: "filterChanged" }, usesInheritance: true, ngImport: i0, template: "<div class=\"form-row padding-3\">\n <teta-input [label]=\"'\u041E\u0442'\">\n <teta-date-picker style=\"width: 110px\"\n [ngModel]=\"filter.value?.greaterThan\"\n [appendToBody]=\"true\"\n (ngModelChange)=\"filter.value.greaterThan=$event\"></teta-date-picker>\n </teta-input>\n <teta-input [label]=\"'\u0414\u043E'\">\n <teta-date-picker style=\"width: 110px\"\n [ngModel]=\"filter.value?.lessThan\"\n [appendToBody]=\"true\"\n (ngModelChange)=\"filter.value.lessThan=$event\"></teta-date-picker>\n </teta-input>\n</div>\n", styles: [""], components: [{ type: InputComponent, selector: "teta-input", inputs: ["label", "horizontal", "required"] }, { type: DatePickerComponent, selector: "teta-date-picker", inputs: ["disabled", "invalid", "firstDayOfWeek", "disabledDates", "disabledPeriods", "disabledDays", "minDate", "maxDate", "minYearDate", "maxYearDate", "align", "verticalAlign", "appendToBody", "showTime", "format"] }], directives: [{ type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3779
3806
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: DateFilterComponent, decorators: [{
3780
3807
  type: Component,
3781
3808
  args: [{ selector: 'teta-date-filter', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-row padding-3\">\n <teta-input [label]=\"'\u041E\u0442'\">\n <teta-date-picker style=\"width: 110px\"\n [ngModel]=\"filter.value?.greaterThan\"\n [appendToBody]=\"true\"\n (ngModelChange)=\"filter.value.greaterThan=$event\"></teta-date-picker>\n </teta-input>\n <teta-input [label]=\"'\u0414\u043E'\">\n <teta-date-picker style=\"width: 110px\"\n [ngModel]=\"filter.value?.lessThan\"\n [appendToBody]=\"true\"\n (ngModelChange)=\"filter.value.lessThan=$event\"></teta-date-picker>\n </teta-input>\n</div>\n", styles: [""] }]
@@ -4488,7 +4515,7 @@ SelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versio
4488
4515
  useExisting: forwardRef(() => SelectComponent),
4489
4516
  multi: true,
4490
4517
  },
4491
- ], queries: [{ propertyName: "optionDirective", first: true, predicate: SelectOptionDirective, descendants: true, static: true }, { propertyName: "valueDirective", first: true, predicate: SelectValueDirective, descendants: true, static: true }], ngImport: i0, template: "<teta-dropdown [align]=\"align\"\n [verticalAlign]=\"verticalAlign\"\n [autoClose]=\"autoClose\"\n [autoCloseIgnore]=\"autoCloseIgnore\"\n [(open)]=\"open\"\n [appendToBody]=\"appendToBody\"\n [disabled]=\"disabled\"\n class=\"row row_auto\">\n <div tetaDropdownHead\n class=\"row row_auto select-head\"\n [class.select-head_invalid]=\"invalid\">\n <div class=\"row_auto flex align-center\">\n <teta-icon *ngIf=\"icon\" [name]=\"icon\" class=\"margin-right-1\"></teta-icon>\n <span class=\"placeholder\" *ngIf=\"(value == null || value?.length === 0) && placeholder\">\n {{placeholder}}\n </span>\n <ng-container\n *ngTemplateOutlet=\"valueDirective ? valueDirective.template : valueDefault; context: {$implicit: value, value: value}\"></ng-container>\n </div>\n <teta-icon [name]=\"'arrowDownSmall'\"></teta-icon>\n </div>\n <div *ngIf=\"options?.length\" tetaDropdownContent class=\"select-list scrollable row_auto\">\n <ng-container *ngIf=\"searchRef\">\n <div class=\"select-search\">\n <teta-text-field [ngModel]=\"searchText\"\n (ngModelChange)=\"search($event)\"\n [placeholder]=\"'\u041F\u043E\u0438\u0441\u043A'\"\n [leftIconName]=\"'search'\"></teta-text-field>\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"!multiple && allowNull\">\n <div class=\"list-item list-item_interactive\"\n (click)=\"clear()\"\n [class.list-item_active]=\"value==null\">\n \u041D\u0435 \u0432\u044B\u0431\u0440\u0430\u043D\u043E\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"!virtual\">\n <div class=\"list-item list-item_interactive\"\n *ngFor=\"let option of visibleOptions\"\n [class.select-list-item_active]=\"itemSelected(option) && multiple\"\n [class.list-item_active]=\"itemSelected(option)\"\n [class.select-list-item]=\"multiple\"\n (click)=\"clickOption(option, $event)\">\n <teta-icon *ngIf=\"itemSelected(option) && multiple\" [name]=\"'tick'\" [palette]=\"'primary'\"></teta-icon>\n <span [tetaHighlight]=\"searchText\">\n <ng-container\n *ngTemplateOutlet=\"optionDirective ? optionDirective.template : optionDefault; context: {$implicit: option, option: option}\">\n </ng-container>\n </span>\n </div>\n </ng-container>\n <cdk-virtual-scroll-viewport *ngIf=\"virtual\"\n [itemSize]=\"40\"\n minBufferPx=\"200\"\n maxBufferPx=\"600\">\n <div class=\"select-list-item select-list-item_interactive\"\n *cdkVirtualFor=\"let option of visibleOptions; templateCacheSize: 0;\"\n [class.select-list-item_active]=\"itemSelected(option)\"\n [tetaHighlight]=\"searchText\"\n (click)=\"clickOption(option, $event)\">\n <teta-icon *ngIf=\"itemSelected(option)\" [name]=\"'tick'\" [palette]=\"'primary'\" class=\"margin-left-2\"></teta-icon>\n <div [tetaHighlight]=\"searchText\">\n <ng-container\n *ngTemplateOutlet=\"optionDirective ? optionDirective.template : optionDefault; context: {$implicit: option, option: option}\">\n </ng-container>\n </div>\n </div>\n </cdk-virtual-scroll-viewport>\n <div class=\"row row_auto select-chip-field flex-wrap\" *ngIf=\"multiple && value?.length\">\n <div *ngFor=\"let item of value\" class=\"chip\">\n <teta-icon [name]=\"'closeCircle'\" (click)=\"removeItemClick(item, $event)\"></teta-icon>\n {{getText(item)}}\n </div>\n </div>\n </div>\n</teta-dropdown>\n\n<ng-template #optionDefault let-option>\n {{getText(option)}}\n</ng-template>\n<ng-template #valueDefault let-value>\n <div class=\"row_auto overflow-hidden text-overflow-ellipsis\" *ngIf=\"multiple\">\n <ng-container\n *ngFor=\"let item of value; let i = index\">{{getText(item) + (value.length === i + 1 ? '' : ', ') }}</ng-container>\n </div>\n <ng-container *ngIf=\"!multiple\">\n <span class=\"row row_auto overflow-hidden text-overflow-ellipsis\">{{getText(value)}}</span>\n </ng-container>\n</ng-template>\n", styles: [""], components: [{ type: DropdownComponent, selector: "teta-dropdown" }, { type: IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { type: TextFieldComponent, selector: "teta-text-field", inputs: ["placeholder", "leftIconName", "disabled", "onlyNumber", "invalid"] }, { type: i4.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }], directives: [{ type: DropdownHeadDirective, selector: "[tetaDropdownHead]" }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: DropdownContentDirective, selector: "[tetaDropdownContent]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: HighlightDirective, selector: "[tetaHighlight]", inputs: ["tetaHighlight"] }, { type: i4.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i4.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4518
+ ], queries: [{ propertyName: "optionDirective", first: true, predicate: SelectOptionDirective, descendants: true, static: true }, { propertyName: "valueDirective", first: true, predicate: SelectValueDirective, descendants: true, static: true }], ngImport: i0, template: "<teta-dropdown [align]=\"align\"\n [verticalAlign]=\"verticalAlign\"\n [autoClose]=\"autoClose\"\n [autoCloseIgnore]=\"autoCloseIgnore\"\n [(open)]=\"open\"\n [appendToBody]=\"appendToBody\"\n [disabled]=\"disabled\"\n class=\"row row_auto\">\n <div tetaDropdownHead\n class=\"row row_auto select-head\"\n [class.select-head_invalid]=\"invalid\">\n <div class=\"row_auto flex align-center\">\n <teta-icon *ngIf=\"icon\" [name]=\"icon\" class=\"margin-right-1\"></teta-icon>\n <span class=\"placeholder\" *ngIf=\"(value == null || value?.length === 0) && placeholder\">\n {{placeholder}}\n </span>\n <ng-container\n *ngTemplateOutlet=\"valueDirective ? valueDirective.template : valueDefault; context: {$implicit: value, value: value}\"></ng-container>\n </div>\n <teta-icon [name]=\"'arrowDownSmall'\"></teta-icon>\n </div>\n <div *ngIf=\"options?.length\" tetaDropdownContent class=\"select-list scrollable row_auto\" (click)=\"$event.preventDefault()\">\n <ng-container *ngIf=\"searchRef\">\n <div class=\"select-search\">\n <teta-text-field [ngModel]=\"searchText\"\n (ngModelChange)=\"search($event)\"\n [placeholder]=\"'\u041F\u043E\u0438\u0441\u043A'\"\n [leftIconName]=\"'search'\"></teta-text-field>\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"!multiple && allowNull\">\n <div class=\"list-item list-item_interactive\"\n (click)=\"clear()\"\n [class.list-item_active]=\"value==null\">\n \u041D\u0435 \u0432\u044B\u0431\u0440\u0430\u043D\u043E\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"!virtual\">\n <div class=\"list-item list-item_interactive\"\n *ngFor=\"let option of visibleOptions\"\n [class.select-list-item_active]=\"itemSelected(option) && multiple\"\n [class.list-item_active]=\"itemSelected(option)\"\n [class.select-list-item]=\"multiple\"\n (click)=\"clickOption(option, $event)\">\n <teta-icon *ngIf=\"itemSelected(option) && multiple\" [name]=\"'tick'\" [palette]=\"'primary'\"></teta-icon>\n <span [tetaHighlight]=\"searchText\">\n <ng-container\n *ngTemplateOutlet=\"optionDirective ? optionDirective.template : optionDefault; context: {$implicit: option, option: option}\">\n </ng-container>\n </span>\n </div>\n </ng-container>\n <cdk-virtual-scroll-viewport *ngIf=\"virtual\"\n [itemSize]=\"40\"\n minBufferPx=\"200\"\n maxBufferPx=\"600\">\n <div class=\"select-list-item select-list-item_interactive\"\n *cdkVirtualFor=\"let option of visibleOptions; templateCacheSize: 0;\"\n [class.select-list-item_active]=\"itemSelected(option)\"\n [tetaHighlight]=\"searchText\"\n (click)=\"clickOption(option, $event)\">\n <teta-icon *ngIf=\"itemSelected(option)\" [name]=\"'tick'\" [palette]=\"'primary'\" class=\"margin-left-2\"></teta-icon>\n <div [tetaHighlight]=\"searchText\">\n <ng-container\n *ngTemplateOutlet=\"optionDirective ? optionDirective.template : optionDefault; context: {$implicit: option, option: option}\">\n </ng-container>\n </div>\n </div>\n </cdk-virtual-scroll-viewport>\n <div class=\"row row_auto select-chip-field flex-wrap\" *ngIf=\"multiple && value?.length\">\n <div *ngFor=\"let item of value\" class=\"chip\">\n <teta-icon [name]=\"'closeCircle'\" (click)=\"removeItemClick(item, $event)\"></teta-icon>\n {{getText(item)}}\n </div>\n </div>\n </div>\n</teta-dropdown>\n\n<ng-template #optionDefault let-option>\n {{getText(option)}}\n</ng-template>\n<ng-template #valueDefault let-value>\n <div class=\"row_auto overflow-hidden text-overflow-ellipsis\" *ngIf=\"multiple\">\n <ng-container\n *ngFor=\"let item of value; let i = index\">{{getText(item) + (value.length === i + 1 ? '' : ', ') }}</ng-container>\n </div>\n <ng-container *ngIf=\"!multiple\">\n <span class=\"row row_auto overflow-hidden text-overflow-ellipsis\">{{getText(value)}}</span>\n </ng-container>\n</ng-template>\n", styles: [""], components: [{ type: DropdownComponent, selector: "teta-dropdown" }, { type: IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { type: TextFieldComponent, selector: "teta-text-field", inputs: ["placeholder", "leftIconName", "disabled", "onlyNumber", "invalid"] }, { type: i4.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }], directives: [{ type: DropdownHeadDirective, selector: "[tetaDropdownHead]" }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: DropdownContentDirective, selector: "[tetaDropdownContent]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: HighlightDirective, selector: "[tetaHighlight]", inputs: ["tetaHighlight"] }, { type: i4.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i4.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4492
4519
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: SelectComponent, decorators: [{
4493
4520
  type: Component,
4494
4521
  args: [{ selector: 'teta-select', providers: [
@@ -4497,7 +4524,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
4497
4524
  useExisting: forwardRef(() => SelectComponent),
4498
4525
  multi: true,
4499
4526
  },
4500
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<teta-dropdown [align]=\"align\"\n [verticalAlign]=\"verticalAlign\"\n [autoClose]=\"autoClose\"\n [autoCloseIgnore]=\"autoCloseIgnore\"\n [(open)]=\"open\"\n [appendToBody]=\"appendToBody\"\n [disabled]=\"disabled\"\n class=\"row row_auto\">\n <div tetaDropdownHead\n class=\"row row_auto select-head\"\n [class.select-head_invalid]=\"invalid\">\n <div class=\"row_auto flex align-center\">\n <teta-icon *ngIf=\"icon\" [name]=\"icon\" class=\"margin-right-1\"></teta-icon>\n <span class=\"placeholder\" *ngIf=\"(value == null || value?.length === 0) && placeholder\">\n {{placeholder}}\n </span>\n <ng-container\n *ngTemplateOutlet=\"valueDirective ? valueDirective.template : valueDefault; context: {$implicit: value, value: value}\"></ng-container>\n </div>\n <teta-icon [name]=\"'arrowDownSmall'\"></teta-icon>\n </div>\n <div *ngIf=\"options?.length\" tetaDropdownContent class=\"select-list scrollable row_auto\">\n <ng-container *ngIf=\"searchRef\">\n <div class=\"select-search\">\n <teta-text-field [ngModel]=\"searchText\"\n (ngModelChange)=\"search($event)\"\n [placeholder]=\"'\u041F\u043E\u0438\u0441\u043A'\"\n [leftIconName]=\"'search'\"></teta-text-field>\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"!multiple && allowNull\">\n <div class=\"list-item list-item_interactive\"\n (click)=\"clear()\"\n [class.list-item_active]=\"value==null\">\n \u041D\u0435 \u0432\u044B\u0431\u0440\u0430\u043D\u043E\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"!virtual\">\n <div class=\"list-item list-item_interactive\"\n *ngFor=\"let option of visibleOptions\"\n [class.select-list-item_active]=\"itemSelected(option) && multiple\"\n [class.list-item_active]=\"itemSelected(option)\"\n [class.select-list-item]=\"multiple\"\n (click)=\"clickOption(option, $event)\">\n <teta-icon *ngIf=\"itemSelected(option) && multiple\" [name]=\"'tick'\" [palette]=\"'primary'\"></teta-icon>\n <span [tetaHighlight]=\"searchText\">\n <ng-container\n *ngTemplateOutlet=\"optionDirective ? optionDirective.template : optionDefault; context: {$implicit: option, option: option}\">\n </ng-container>\n </span>\n </div>\n </ng-container>\n <cdk-virtual-scroll-viewport *ngIf=\"virtual\"\n [itemSize]=\"40\"\n minBufferPx=\"200\"\n maxBufferPx=\"600\">\n <div class=\"select-list-item select-list-item_interactive\"\n *cdkVirtualFor=\"let option of visibleOptions; templateCacheSize: 0;\"\n [class.select-list-item_active]=\"itemSelected(option)\"\n [tetaHighlight]=\"searchText\"\n (click)=\"clickOption(option, $event)\">\n <teta-icon *ngIf=\"itemSelected(option)\" [name]=\"'tick'\" [palette]=\"'primary'\" class=\"margin-left-2\"></teta-icon>\n <div [tetaHighlight]=\"searchText\">\n <ng-container\n *ngTemplateOutlet=\"optionDirective ? optionDirective.template : optionDefault; context: {$implicit: option, option: option}\">\n </ng-container>\n </div>\n </div>\n </cdk-virtual-scroll-viewport>\n <div class=\"row row_auto select-chip-field flex-wrap\" *ngIf=\"multiple && value?.length\">\n <div *ngFor=\"let item of value\" class=\"chip\">\n <teta-icon [name]=\"'closeCircle'\" (click)=\"removeItemClick(item, $event)\"></teta-icon>\n {{getText(item)}}\n </div>\n </div>\n </div>\n</teta-dropdown>\n\n<ng-template #optionDefault let-option>\n {{getText(option)}}\n</ng-template>\n<ng-template #valueDefault let-value>\n <div class=\"row_auto overflow-hidden text-overflow-ellipsis\" *ngIf=\"multiple\">\n <ng-container\n *ngFor=\"let item of value; let i = index\">{{getText(item) + (value.length === i + 1 ? '' : ', ') }}</ng-container>\n </div>\n <ng-container *ngIf=\"!multiple\">\n <span class=\"row row_auto overflow-hidden text-overflow-ellipsis\">{{getText(value)}}</span>\n </ng-container>\n</ng-template>\n", styles: [""] }]
4527
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<teta-dropdown [align]=\"align\"\n [verticalAlign]=\"verticalAlign\"\n [autoClose]=\"autoClose\"\n [autoCloseIgnore]=\"autoCloseIgnore\"\n [(open)]=\"open\"\n [appendToBody]=\"appendToBody\"\n [disabled]=\"disabled\"\n class=\"row row_auto\">\n <div tetaDropdownHead\n class=\"row row_auto select-head\"\n [class.select-head_invalid]=\"invalid\">\n <div class=\"row_auto flex align-center\">\n <teta-icon *ngIf=\"icon\" [name]=\"icon\" class=\"margin-right-1\"></teta-icon>\n <span class=\"placeholder\" *ngIf=\"(value == null || value?.length === 0) && placeholder\">\n {{placeholder}}\n </span>\n <ng-container\n *ngTemplateOutlet=\"valueDirective ? valueDirective.template : valueDefault; context: {$implicit: value, value: value}\"></ng-container>\n </div>\n <teta-icon [name]=\"'arrowDownSmall'\"></teta-icon>\n </div>\n <div *ngIf=\"options?.length\" tetaDropdownContent class=\"select-list scrollable row_auto\" (click)=\"$event.preventDefault()\">\n <ng-container *ngIf=\"searchRef\">\n <div class=\"select-search\">\n <teta-text-field [ngModel]=\"searchText\"\n (ngModelChange)=\"search($event)\"\n [placeholder]=\"'\u041F\u043E\u0438\u0441\u043A'\"\n [leftIconName]=\"'search'\"></teta-text-field>\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"!multiple && allowNull\">\n <div class=\"list-item list-item_interactive\"\n (click)=\"clear()\"\n [class.list-item_active]=\"value==null\">\n \u041D\u0435 \u0432\u044B\u0431\u0440\u0430\u043D\u043E\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"!virtual\">\n <div class=\"list-item list-item_interactive\"\n *ngFor=\"let option of visibleOptions\"\n [class.select-list-item_active]=\"itemSelected(option) && multiple\"\n [class.list-item_active]=\"itemSelected(option)\"\n [class.select-list-item]=\"multiple\"\n (click)=\"clickOption(option, $event)\">\n <teta-icon *ngIf=\"itemSelected(option) && multiple\" [name]=\"'tick'\" [palette]=\"'primary'\"></teta-icon>\n <span [tetaHighlight]=\"searchText\">\n <ng-container\n *ngTemplateOutlet=\"optionDirective ? optionDirective.template : optionDefault; context: {$implicit: option, option: option}\">\n </ng-container>\n </span>\n </div>\n </ng-container>\n <cdk-virtual-scroll-viewport *ngIf=\"virtual\"\n [itemSize]=\"40\"\n minBufferPx=\"200\"\n maxBufferPx=\"600\">\n <div class=\"select-list-item select-list-item_interactive\"\n *cdkVirtualFor=\"let option of visibleOptions; templateCacheSize: 0;\"\n [class.select-list-item_active]=\"itemSelected(option)\"\n [tetaHighlight]=\"searchText\"\n (click)=\"clickOption(option, $event)\">\n <teta-icon *ngIf=\"itemSelected(option)\" [name]=\"'tick'\" [palette]=\"'primary'\" class=\"margin-left-2\"></teta-icon>\n <div [tetaHighlight]=\"searchText\">\n <ng-container\n *ngTemplateOutlet=\"optionDirective ? optionDirective.template : optionDefault; context: {$implicit: option, option: option}\">\n </ng-container>\n </div>\n </div>\n </cdk-virtual-scroll-viewport>\n <div class=\"row row_auto select-chip-field flex-wrap\" *ngIf=\"multiple && value?.length\">\n <div *ngFor=\"let item of value\" class=\"chip\">\n <teta-icon [name]=\"'closeCircle'\" (click)=\"removeItemClick(item, $event)\"></teta-icon>\n {{getText(item)}}\n </div>\n </div>\n </div>\n</teta-dropdown>\n\n<ng-template #optionDefault let-option>\n {{getText(option)}}\n</ng-template>\n<ng-template #valueDefault let-value>\n <div class=\"row_auto overflow-hidden text-overflow-ellipsis\" *ngIf=\"multiple\">\n <ng-container\n *ngFor=\"let item of value; let i = index\">{{getText(item) + (value.length === i + 1 ? '' : ', ') }}</ng-container>\n </div>\n <ng-container *ngIf=\"!multiple\">\n <span class=\"row row_auto overflow-hidden text-overflow-ellipsis\">{{getText(value)}}</span>\n </ng-container>\n</ng-template>\n", styles: [""] }]
4501
4528
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { multiple: [{
4502
4529
  type: HostBinding,
4503
4530
  args: ['class.select_multiple']
@@ -6014,10 +6041,174 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
6014
6041
  args: ['click']
6015
6042
  }] } });
6016
6043
 
6044
+ class DynamicContentBaseDirective {
6045
+ constructor(_document, _elementRef, _service, _injector, _zone, _cdr) {
6046
+ this._document = _document;
6047
+ this._elementRef = _elementRef;
6048
+ this._service = _service;
6049
+ this._injector = _injector;
6050
+ this._zone = _zone;
6051
+ this._cdr = _cdr;
6052
+ this.align = Align.left;
6053
+ this.verticalAlign = VerticalAlign.bottom;
6054
+ this.openChange = new EventEmitter();
6055
+ this._alive = true;
6056
+ this._open = false;
6057
+ this._zone.onStable
6058
+ .pipe(takeWhile((_) => this._alive), filter((_) => this._open))
6059
+ .subscribe((_) => {
6060
+ this.setPosition();
6061
+ });
6062
+ }
6063
+ set open(open) {
6064
+ this._open = open;
6065
+ if (this._open) {
6066
+ this.createContentRef();
6067
+ }
6068
+ else {
6069
+ this.destroyContentRef();
6070
+ }
6071
+ }
6072
+ ngOnDestroy() {
6073
+ this._alive = false;
6074
+ this.destroyContentRef();
6075
+ }
6076
+ ngOnInit() { }
6077
+ createContentRef(className) {
6078
+ if (!this._componentRef) {
6079
+ this._open = true;
6080
+ const injector = this._service.getInjector(this.data, this._injector);
6081
+ const context = this._service.getContext(this._dynamicContent, this.data);
6082
+ this._content = this._service.createContent(this._dynamicContent, this._injector, context);
6083
+ this._componentRef = this._service.createComponent(PopupContentComponent, this._content, injector, this.appendToBody ? this._document.body : this._elementRef.nativeElement);
6084
+ if (className) {
6085
+ this._componentRef.instance.addClass(className);
6086
+ }
6087
+ }
6088
+ return this._componentRef;
6089
+ }
6090
+ destroyContentRef() {
6091
+ if (this._open) {
6092
+ this._open = false;
6093
+ this._service.destroy(this._componentRef, this._content, this.appendToBody ? this._document.body : this._elementRef.nativeElement);
6094
+ this._componentRef = null;
6095
+ }
6096
+ }
6097
+ }
6098
+ DynamicContentBaseDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: DynamicContentBaseDirective, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
6099
+ DynamicContentBaseDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.1", type: DynamicContentBaseDirective, inputs: { data: "data", className: "className", align: "align", verticalAlign: "verticalAlign", appendToBody: "appendToBody", open: "open" }, outputs: { openChange: "openChange" }, ngImport: i0 });
6100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: DynamicContentBaseDirective, decorators: [{
6101
+ type: Directive
6102
+ }], ctorParameters: function () { return [{ type: undefined }, { type: i0.ElementRef }, { type: DynamicComponentService }, { type: i0.Injector }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { data: [{
6103
+ type: Input
6104
+ }], className: [{
6105
+ type: Input
6106
+ }], align: [{
6107
+ type: Input
6108
+ }], verticalAlign: [{
6109
+ type: Input
6110
+ }], appendToBody: [{
6111
+ type: Input
6112
+ }], open: [{
6113
+ type: Input
6114
+ }], openChange: [{
6115
+ type: Output
6116
+ }] } });
6117
+
6118
+ class HintDirective extends DynamicContentBaseDirective {
6119
+ constructor(_document, _elementRef, _service, _injector, _zone, _cdr) {
6120
+ super(_document, _elementRef, _service, _injector, _zone, _cdr);
6121
+ this._document = _document;
6122
+ this._elementRef = _elementRef;
6123
+ this._service = _service;
6124
+ this._injector = _injector;
6125
+ this._zone = _zone;
6126
+ this._cdr = _cdr;
6127
+ this.align = Align.center;
6128
+ this.verticalAlign = VerticalAlign.top;
6129
+ this.delay = 300;
6130
+ }
6131
+ get _dynamicContent() {
6132
+ return this.tetaHint;
6133
+ }
6134
+ mouseenter() {
6135
+ clearTimeout(this._timeout);
6136
+ this._timeout = setTimeout(() => {
6137
+ this.createHint();
6138
+ }, this.delay);
6139
+ }
6140
+ mouseleave() {
6141
+ clearTimeout(this._timeout);
6142
+ if (this._open && this._componentRef) {
6143
+ this._timeout = setTimeout(() => {
6144
+ this.destroyContentRef();
6145
+ }, this.delay);
6146
+ }
6147
+ }
6148
+ click(event) {
6149
+ if (this._open &&
6150
+ this._componentRef &&
6151
+ DomUtil.clickedInside(this._componentRef.location.nativeElement, event)) {
6152
+ event.stopPropagation();
6153
+ }
6154
+ }
6155
+ setPosition() {
6156
+ if (this._componentRef && this._open) {
6157
+ if (!this._componentRect) {
6158
+ this._componentRect =
6159
+ this._componentRef.location.nativeElement.getBoundingClientRect();
6160
+ }
6161
+ const position = PositionUtil.getPosition(this._elementRef.nativeElement.getBoundingClientRect(), this._componentRect, this.align, this.verticalAlign, 0, 4);
6162
+ PositionUtil.setElementPosition(this._componentRef.location.nativeElement, position);
6163
+ }
6164
+ }
6165
+ createHint() {
6166
+ if (!this._dynamicContent) {
6167
+ return;
6168
+ }
6169
+ this._componentRef = this.createContentRef();
6170
+ this._componentRef.instance.className = [
6171
+ ...ArrayUtil.asArray(this.className),
6172
+ 'hint',
6173
+ ];
6174
+ }
6175
+ }
6176
+ HintDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: HintDirective, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }, { token: DynamicComponentService }, { token: i0.Injector }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
6177
+ HintDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.1", type: HintDirective, selector: "[tetaHint]", inputs: { tetaHint: "tetaHint", align: "align", verticalAlign: "verticalAlign", delay: "delay" }, host: { listeners: { "mouseenter": "mouseenter($event)", "mouseleave": "mouseleave($event)", "click": "click($event)" } }, usesInheritance: true, ngImport: i0 });
6178
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: HintDirective, decorators: [{
6179
+ type: Directive,
6180
+ args: [{
6181
+ selector: '[tetaHint]',
6182
+ }]
6183
+ }], ctorParameters: function () {
6184
+ return [{ type: undefined, decorators: [{
6185
+ type: Inject,
6186
+ args: [DOCUMENT]
6187
+ }] }, { type: i0.ElementRef }, { type: DynamicComponentService }, { type: i0.Injector }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }];
6188
+ }, propDecorators: { tetaHint: [{
6189
+ type: Input
6190
+ }], align: [{
6191
+ type: Input
6192
+ }], verticalAlign: [{
6193
+ type: Input
6194
+ }], delay: [{
6195
+ type: Input
6196
+ }], mouseenter: [{
6197
+ type: HostListener,
6198
+ args: ['mouseenter', ['$event']]
6199
+ }], mouseleave: [{
6200
+ type: HostListener,
6201
+ args: ['mouseleave', ['$event']]
6202
+ }], click: [{
6203
+ type: HostListener,
6204
+ args: ['click', ['$event']]
6205
+ }] } });
6206
+
6017
6207
  class PropertyGridItemComponent {
6018
6208
  constructor(_transloco) {
6019
6209
  this._transloco = _transloco;
6020
6210
  this.controlValueChange = new EventEmitter();
6211
+ this.align = Align;
6021
6212
  this.filterTypeEnum = FilterType;
6022
6213
  this._alive = true;
6023
6214
  }
@@ -6086,10 +6277,10 @@ class PropertyGridItemComponent {
6086
6277
  }
6087
6278
  }
6088
6279
  PropertyGridItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: PropertyGridItemComponent, deps: [{ token: i1$1.TranslocoService }], target: i0.ɵɵFactoryTarget.Component });
6089
- PropertyGridItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: PropertyGridItemComponent, selector: "teta-property-grid-item", inputs: { column: "column", hideNonEditable: "hideNonEditable", dict: "dict", formGroup: "formGroup", horizontal: "horizontal" }, outputs: { controlValueChange: "controlValueChange" }, ngImport: i0, template: "<teta-input [label]=\"caption\"\n [formGroup]=\"formGroup\"\n [horizontal]=\"horizontal\"\n *ngIf=\"column.editable || !hideNonEditable\">\n <ng-container [ngSwitch]=\"column.filterType\">\n <teta-select class=\"row_auto\"\n *ngSwitchCase=\"filterTypeEnum.list\"\n [searchRef]=\"getDict()?.length > 10 ? 'name' : ''\"\n [allowNull]=\"!column.required\"\n [appendToBody]=\"true\"\n [invalid]=\"controlIsInvalid(column.name)\"\n [formControlName]=\"column.name\"\n [options]=\"getDict()\"\n [valueRef]=\"'id'\"\n [textRef]=\"'name'\"\n [multiple]=\"false\"></teta-select>\n <teta-date-picker *ngSwitchCase=\"filterTypeEnum.date\"\n class=\"row_auto\"\n [appendToBody]=\"true\"\n [invalid]=\"controlIsInvalid(column.name)\"\n [formControlName]=\"column.name\"></teta-date-picker>\n <teta-toggle *ngSwitchCase=\"filterTypeEnum.boolean\"\n [formControlName]=\"column.name\">{{column.caption}}</teta-toggle>\n <teta-text-field class=\"row_auto\"\n *ngSwitchDefault\n (focusout)=\"valueChange()\"\n [onlyNumber]=\"column.filterType === filterTypeEnum.number\"\n [placeholder]=\"column.caption\"\n [invalid]=\"controlIsInvalid(column.name)\"\n [formControlName]=\"column.name\"></teta-text-field>\n </ng-container>\n <div *ngIf=\"controlIsInvalid(column.name)\"\n ngProjectAs=\"message\"\n class=\"color-red-50\">\n {{getError(column)}}\n </div>\n</teta-input>\n", styles: [""], components: [{ type: InputComponent, selector: "teta-input", inputs: ["label", "horizontal", "required"] }, { type: SelectComponent, selector: "teta-select", inputs: ["multiple", "options", "invalid", "align", "verticalAlign", "autoClose", "autoCloseIgnore", "disabled", "itemSize", "virtual", "icon", "placeholder", "appendToBody", "allowNull", "valueRef", "textRef", "searchRef"] }, { type: DatePickerComponent, selector: "teta-date-picker", inputs: ["disabled", "invalid", "firstDayOfWeek", "disabledDates", "disabledPeriods", "disabledDays", "minDate", "maxDate", "minYearDate", "maxYearDate", "appendToBody", "showTime", "format"] }, { type: ToggleComponent, selector: "teta-toggle", inputs: ["palette", "noLabel", "disabled"] }, { type: TextFieldComponent, selector: "teta-text-field", inputs: ["placeholder", "leftIconName", "disabled", "onlyNumber", "invalid"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }] });
6280
+ PropertyGridItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: PropertyGridItemComponent, selector: "teta-property-grid-item", inputs: { column: "column", hideNonEditable: "hideNonEditable", dict: "dict", formGroup: "formGroup", horizontal: "horizontal" }, outputs: { controlValueChange: "controlValueChange" }, ngImport: i0, template: "<teta-input [label]=\"caption\"\n [tetaHint]=\"column.hint\"\n [align]=\"align.left\"\n [formGroup]=\"formGroup\"\n [horizontal]=\"horizontal\"\n *ngIf=\"column.editable || !hideNonEditable\">\n <ng-container [ngSwitch]=\"column.filterType\">\n <teta-select class=\"row_auto\"\n *ngSwitchCase=\"filterTypeEnum.list\"\n [searchRef]=\"getDict()?.length > 10 ? 'name' : ''\"\n [allowNull]=\"!column.required\"\n [appendToBody]=\"true\"\n [invalid]=\"controlIsInvalid(column.name)\"\n [formControlName]=\"column.name\"\n [options]=\"getDict()\"\n [valueRef]=\"'id'\"\n [textRef]=\"'name'\"\n [multiple]=\"false\"></teta-select>\n <teta-date-picker *ngSwitchCase=\"filterTypeEnum.date\"\n class=\"row_auto\"\n [appendToBody]=\"true\"\n [invalid]=\"controlIsInvalid(column.name)\"\n [formControlName]=\"column.name\"></teta-date-picker>\n <teta-toggle *ngSwitchCase=\"filterTypeEnum.boolean\"\n [formControlName]=\"column.name\">{{column.caption}}</teta-toggle>\n <teta-text-field class=\"row_auto\"\n *ngSwitchDefault\n (focusout)=\"valueChange()\"\n [onlyNumber]=\"column.filterType === filterTypeEnum.number\"\n [placeholder]=\"column.caption\"\n [invalid]=\"controlIsInvalid(column.name)\"\n [formControlName]=\"column.name\"></teta-text-field>\n </ng-container>\n <div *ngIf=\"controlIsInvalid(column.name)\"\n ngProjectAs=\"message\"\n class=\"color-red-50\">\n {{getError(column)}}\n </div>\n</teta-input>\n", styles: [""], components: [{ type: InputComponent, selector: "teta-input", inputs: ["label", "horizontal", "required"] }, { type: SelectComponent, selector: "teta-select", inputs: ["multiple", "options", "invalid", "align", "verticalAlign", "autoClose", "autoCloseIgnore", "disabled", "itemSize", "virtual", "icon", "placeholder", "appendToBody", "allowNull", "valueRef", "textRef", "searchRef"] }, { type: DatePickerComponent, selector: "teta-date-picker", inputs: ["disabled", "invalid", "firstDayOfWeek", "disabledDates", "disabledPeriods", "disabledDays", "minDate", "maxDate", "minYearDate", "maxYearDate", "align", "verticalAlign", "appendToBody", "showTime", "format"] }, { type: ToggleComponent, selector: "teta-toggle", inputs: ["palette", "noLabel", "disabled"] }, { type: TextFieldComponent, selector: "teta-text-field", inputs: ["placeholder", "leftIconName", "disabled", "onlyNumber", "invalid"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: HintDirective, selector: "[tetaHint]", inputs: ["tetaHint", "align", "verticalAlign", "delay"] }, { type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }] });
6090
6281
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: PropertyGridItemComponent, decorators: [{
6091
6282
  type: Component,
6092
- args: [{ selector: 'teta-property-grid-item', template: "<teta-input [label]=\"caption\"\n [formGroup]=\"formGroup\"\n [horizontal]=\"horizontal\"\n *ngIf=\"column.editable || !hideNonEditable\">\n <ng-container [ngSwitch]=\"column.filterType\">\n <teta-select class=\"row_auto\"\n *ngSwitchCase=\"filterTypeEnum.list\"\n [searchRef]=\"getDict()?.length > 10 ? 'name' : ''\"\n [allowNull]=\"!column.required\"\n [appendToBody]=\"true\"\n [invalid]=\"controlIsInvalid(column.name)\"\n [formControlName]=\"column.name\"\n [options]=\"getDict()\"\n [valueRef]=\"'id'\"\n [textRef]=\"'name'\"\n [multiple]=\"false\"></teta-select>\n <teta-date-picker *ngSwitchCase=\"filterTypeEnum.date\"\n class=\"row_auto\"\n [appendToBody]=\"true\"\n [invalid]=\"controlIsInvalid(column.name)\"\n [formControlName]=\"column.name\"></teta-date-picker>\n <teta-toggle *ngSwitchCase=\"filterTypeEnum.boolean\"\n [formControlName]=\"column.name\">{{column.caption}}</teta-toggle>\n <teta-text-field class=\"row_auto\"\n *ngSwitchDefault\n (focusout)=\"valueChange()\"\n [onlyNumber]=\"column.filterType === filterTypeEnum.number\"\n [placeholder]=\"column.caption\"\n [invalid]=\"controlIsInvalid(column.name)\"\n [formControlName]=\"column.name\"></teta-text-field>\n </ng-container>\n <div *ngIf=\"controlIsInvalid(column.name)\"\n ngProjectAs=\"message\"\n class=\"color-red-50\">\n {{getError(column)}}\n </div>\n</teta-input>\n", styles: [""] }]
6283
+ args: [{ selector: 'teta-property-grid-item', template: "<teta-input [label]=\"caption\"\n [tetaHint]=\"column.hint\"\n [align]=\"align.left\"\n [formGroup]=\"formGroup\"\n [horizontal]=\"horizontal\"\n *ngIf=\"column.editable || !hideNonEditable\">\n <ng-container [ngSwitch]=\"column.filterType\">\n <teta-select class=\"row_auto\"\n *ngSwitchCase=\"filterTypeEnum.list\"\n [searchRef]=\"getDict()?.length > 10 ? 'name' : ''\"\n [allowNull]=\"!column.required\"\n [appendToBody]=\"true\"\n [invalid]=\"controlIsInvalid(column.name)\"\n [formControlName]=\"column.name\"\n [options]=\"getDict()\"\n [valueRef]=\"'id'\"\n [textRef]=\"'name'\"\n [multiple]=\"false\"></teta-select>\n <teta-date-picker *ngSwitchCase=\"filterTypeEnum.date\"\n class=\"row_auto\"\n [appendToBody]=\"true\"\n [invalid]=\"controlIsInvalid(column.name)\"\n [formControlName]=\"column.name\"></teta-date-picker>\n <teta-toggle *ngSwitchCase=\"filterTypeEnum.boolean\"\n [formControlName]=\"column.name\">{{column.caption}}</teta-toggle>\n <teta-text-field class=\"row_auto\"\n *ngSwitchDefault\n (focusout)=\"valueChange()\"\n [onlyNumber]=\"column.filterType === filterTypeEnum.number\"\n [placeholder]=\"column.caption\"\n [invalid]=\"controlIsInvalid(column.name)\"\n [formControlName]=\"column.name\"></teta-text-field>\n </ng-container>\n <div *ngIf=\"controlIsInvalid(column.name)\"\n ngProjectAs=\"message\"\n class=\"color-red-50\">\n {{getError(column)}}\n </div>\n</teta-input>\n", styles: [""] }]
6093
6284
  }], ctorParameters: function () { return [{ type: i1$1.TranslocoService }]; }, propDecorators: { column: [{
6094
6285
  type: Input
6095
6286
  }], hideNonEditable: [{
@@ -6286,6 +6477,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
6286
6477
  }]
6287
6478
  }] });
6288
6479
 
6480
+ class HintModule {
6481
+ }
6482
+ HintModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: HintModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
6483
+ HintModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: HintModule, declarations: [HintDirective], imports: [CommonModule,
6484
+ DynamicComponentModule], exports: [HintDirective] });
6485
+ HintModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: HintModule, imports: [[
6486
+ CommonModule,
6487
+ DynamicComponentModule
6488
+ ]] });
6489
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: HintModule, decorators: [{
6490
+ type: NgModule,
6491
+ args: [{
6492
+ declarations: [HintDirective],
6493
+ exports: [HintDirective],
6494
+ imports: [
6495
+ CommonModule,
6496
+ DynamicComponentModule
6497
+ ]
6498
+ }]
6499
+ }] });
6500
+
6289
6501
  class PropertyGridModule {
6290
6502
  }
6291
6503
  PropertyGridModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: PropertyGridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -6304,7 +6516,8 @@ PropertyGridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", vers
6304
6516
  InputModule,
6305
6517
  ToggleModule,
6306
6518
  ReactiveFormsModule,
6307
- TranslocoModule], exports: [PropertyGridComponent] });
6519
+ TranslocoModule,
6520
+ HintModule], exports: [PropertyGridComponent] });
6308
6521
  PropertyGridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: PropertyGridModule, providers: [
6309
6522
  {
6310
6523
  provide: TRANSLOCO_SCOPE,
@@ -6322,6 +6535,7 @@ PropertyGridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", vers
6322
6535
  ToggleModule,
6323
6536
  ReactiveFormsModule,
6324
6537
  TranslocoModule,
6538
+ HintModule,
6325
6539
  ]] });
6326
6540
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: PropertyGridModule, decorators: [{
6327
6541
  type: NgModule,
@@ -6347,6 +6561,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
6347
6561
  ToggleModule,
6348
6562
  ReactiveFormsModule,
6349
6563
  TranslocoModule,
6564
+ HintModule,
6350
6565
  ],
6351
6566
  providers: [
6352
6567
  {
@@ -6635,6 +6850,7 @@ class TableColumn extends FilterItem {
6635
6850
  this.groupingOrder = (_j = options === null || options === void 0 ? void 0 : options.groupingOrder) !== null && _j !== void 0 ? _j : 0;
6636
6851
  this.groupByFn = options === null || options === void 0 ? void 0 : options.groupByFn;
6637
6852
  this.headCellComponent = options === null || options === void 0 ? void 0 : options.headCellComponent;
6853
+ this.headDropdownTemplate = options === null || options === void 0 ? void 0 : options.headDropdownTemplate;
6638
6854
  this.cellComponent = options === null || options === void 0 ? void 0 : options.cellComponent;
6639
6855
  this.aggregate = options === null || options === void 0 ? void 0 : options.aggregate;
6640
6856
  this.defaultValue = options === null || options === void 0 ? void 0 : options.defaultValue;
@@ -6860,7 +7076,11 @@ class TableService {
6860
7076
  }
6861
7077
  setColumns(columns) {
6862
7078
  this.initialColumns = columns ? columns.map((_) => new TableColumn(_)) : [];
6863
- this.initialColumnsHash = hash.sha1(this.initialColumns);
7079
+ this.initialColumnsHash = hash__default(this.initialColumns, {
7080
+ algorithm: 'sha1',
7081
+ ignoreUnknown: true,
7082
+ excludeKeys: key => key === 'headDropdownTemplate',
7083
+ });
6864
7084
  const restored = this.restoreColumns();
6865
7085
  if (restored) {
6866
7086
  this.setDisplayColumns(restored);
@@ -7470,169 +7690,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
7470
7690
  args: ['class.table-head__cell__component']
7471
7691
  }] } });
7472
7692
 
7473
- class DynamicContentBaseDirective {
7474
- constructor(_document, _elementRef, _service, _injector, _zone, _cdr) {
7475
- this._document = _document;
7476
- this._elementRef = _elementRef;
7477
- this._service = _service;
7478
- this._injector = _injector;
7479
- this._zone = _zone;
7480
- this._cdr = _cdr;
7481
- this.align = Align.left;
7482
- this.verticalAlign = VerticalAlign.bottom;
7483
- this.openChange = new EventEmitter();
7484
- this._alive = true;
7485
- this._open = false;
7486
- this._zone.onStable
7487
- .pipe(takeWhile((_) => this._alive), filter((_) => this._open))
7488
- .subscribe((_) => {
7489
- this.setPosition();
7490
- });
7491
- }
7492
- set open(open) {
7493
- this._open = open;
7494
- if (this._open) {
7495
- this.createContentRef();
7496
- }
7497
- else {
7498
- this.destroyContentRef();
7499
- }
7500
- }
7501
- ngOnDestroy() {
7502
- this._alive = false;
7503
- this.destroyContentRef();
7504
- }
7505
- ngOnInit() { }
7506
- createContentRef(className) {
7507
- if (!this._componentRef) {
7508
- this._open = true;
7509
- const injector = this._service.getInjector(this.data, this._injector);
7510
- const context = this._service.getContext(this._dynamicContent, this.data);
7511
- this._content = this._service.createContent(this._dynamicContent, this._injector, context);
7512
- this._componentRef = this._service.createComponent(PopupContentComponent, this._content, injector, this.appendToBody ? this._document.body : this._elementRef.nativeElement);
7513
- if (className) {
7514
- this._componentRef.instance.addClass(className);
7515
- }
7516
- }
7517
- return this._componentRef;
7518
- }
7519
- destroyContentRef() {
7520
- if (this._open) {
7521
- this._open = false;
7522
- this._service.destroy(this._componentRef, this._content, this.appendToBody ? this._document.body : this._elementRef.nativeElement);
7523
- this._componentRef = null;
7524
- }
7525
- }
7526
- }
7527
- DynamicContentBaseDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: DynamicContentBaseDirective, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
7528
- DynamicContentBaseDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.1", type: DynamicContentBaseDirective, inputs: { data: "data", className: "className", align: "align", verticalAlign: "verticalAlign", appendToBody: "appendToBody", open: "open" }, outputs: { openChange: "openChange" }, ngImport: i0 });
7529
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: DynamicContentBaseDirective, decorators: [{
7530
- type: Directive
7531
- }], ctorParameters: function () { return [{ type: undefined }, { type: i0.ElementRef }, { type: DynamicComponentService }, { type: i0.Injector }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { data: [{
7532
- type: Input
7533
- }], className: [{
7534
- type: Input
7535
- }], align: [{
7536
- type: Input
7537
- }], verticalAlign: [{
7538
- type: Input
7539
- }], appendToBody: [{
7540
- type: Input
7541
- }], open: [{
7542
- type: Input
7543
- }], openChange: [{
7544
- type: Output
7545
- }] } });
7546
-
7547
- class HintDirective extends DynamicContentBaseDirective {
7548
- constructor(_document, _elementRef, _service, _injector, _zone, _cdr) {
7549
- super(_document, _elementRef, _service, _injector, _zone, _cdr);
7550
- this._document = _document;
7551
- this._elementRef = _elementRef;
7552
- this._service = _service;
7553
- this._injector = _injector;
7554
- this._zone = _zone;
7555
- this._cdr = _cdr;
7556
- this.align = Align.center;
7557
- this.verticalAlign = VerticalAlign.top;
7558
- this.delay = 300;
7559
- }
7560
- get _dynamicContent() {
7561
- return this.tetaHint;
7562
- }
7563
- mouseenter() {
7564
- clearTimeout(this._timeout);
7565
- this._timeout = setTimeout(() => {
7566
- this.createHint();
7567
- }, this.delay);
7568
- }
7569
- mouseleave() {
7570
- clearTimeout(this._timeout);
7571
- if (this._open && this._componentRef) {
7572
- this._timeout = setTimeout(() => {
7573
- this.destroyContentRef();
7574
- }, this.delay);
7575
- }
7576
- }
7577
- click(event) {
7578
- if (this._open &&
7579
- this._componentRef &&
7580
- DomUtil.clickedInside(this._componentRef.location.nativeElement, event)) {
7581
- event.stopPropagation();
7582
- }
7583
- }
7584
- setPosition() {
7585
- if (this._componentRef && this._open) {
7586
- if (!this._componentRect) {
7587
- this._componentRect =
7588
- this._componentRef.location.nativeElement.getBoundingClientRect();
7589
- }
7590
- const position = PositionUtil.getPosition(this._elementRef.nativeElement.getBoundingClientRect(), this._componentRect, this.align, this.verticalAlign, 0, 4);
7591
- PositionUtil.setElementPosition(this._componentRef.location.nativeElement, position);
7592
- }
7593
- }
7594
- createHint() {
7595
- if (!this._dynamicContent) {
7596
- return;
7597
- }
7598
- this._componentRef = this.createContentRef();
7599
- this._componentRef.instance.className = [
7600
- ...ArrayUtil.asArray(this.className),
7601
- 'hint',
7602
- ];
7603
- }
7604
- }
7605
- HintDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: HintDirective, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }, { token: DynamicComponentService }, { token: i0.Injector }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
7606
- HintDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.1", type: HintDirective, selector: "[tetaHint]", inputs: { tetaHint: "tetaHint", align: "align", verticalAlign: "verticalAlign", delay: "delay" }, host: { listeners: { "mouseenter": "mouseenter($event)", "mouseleave": "mouseleave($event)", "click": "click($event)" } }, usesInheritance: true, ngImport: i0 });
7607
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: HintDirective, decorators: [{
7608
- type: Directive,
7609
- args: [{
7610
- selector: '[tetaHint]',
7611
- }]
7612
- }], ctorParameters: function () {
7613
- return [{ type: undefined, decorators: [{
7614
- type: Inject,
7615
- args: [DOCUMENT]
7616
- }] }, { type: i0.ElementRef }, { type: DynamicComponentService }, { type: i0.Injector }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }];
7617
- }, propDecorators: { tetaHint: [{
7618
- type: Input
7619
- }], align: [{
7620
- type: Input
7621
- }], verticalAlign: [{
7622
- type: Input
7623
- }], delay: [{
7624
- type: Input
7625
- }], mouseenter: [{
7626
- type: HostListener,
7627
- args: ['mouseenter', ['$event']]
7628
- }], mouseleave: [{
7629
- type: HostListener,
7630
- args: ['mouseleave', ['$event']]
7631
- }], click: [{
7632
- type: HostListener,
7633
- args: ['click', ['$event']]
7634
- }] } });
7635
-
7636
7693
  class DefaultHeadCellComponent extends HeadCellComponentBase {
7637
7694
  constructor(_cdr) {
7638
7695
  super();
@@ -8189,10 +8246,10 @@ class HeadCellDropdownComponent {
8189
8246
  }
8190
8247
  }
8191
8248
  HeadCellDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: HeadCellDropdownComponent, deps: [{ token: TableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
8192
- HeadCellDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: HeadCellDropdownComponent, selector: "teta-head-cell-dropdown", inputs: { columns: "columns", column: "column", state: "state", dropDownOpen: "dropDownOpen" }, outputs: { dropDownOpenChange: "dropDownOpenChange", autosize: "autosize", autosizeAll: "autosizeAll" }, host: { properties: { "class.shadow-2": "this.shadow", "class.bg-background-50": "this.bg" } }, ngImport: i0, template: "<teta-tabs class=\"column_auto\">\n <teta-tab *ngIf=\"column.filterable\">\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'filter'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <teta-filter-host [column]=\"column\" [state]=\"state\"\n *ngIf=\"dict | async as d\"\n [filterOptions]=\"d[column.name]\"></teta-filter-host>\n <teta-toolbar class=\"justify-content-between\">\n <button teta-button [palette]=\"'text'\" [view]=\"'ghost'\" (click)=\"clearFilter()\">\n \u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C\n </button>\n <button teta-button [palette]=\"'primary'\" (click)=\"applyFilter()\">\n <teta-icon [name]=\"'tick'\"></teta-icon>\n \u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C\n </button>\n </teta-toolbar>\n </ng-template>\n </teta-tab>\n <teta-tab>\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'menu'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <div class=\"list column_auto\">\n <div class=\"list-item list-item_interactive\" (click)=\"pinColumn()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"column.locked ? 'unpin' : 'pin'\"\n class=\"margin-right-2\"></teta-icon>\n {{column.locked ? '\u041E\u0442\u043A\u0440\u0435\u043F\u0438\u0442\u044C' : '\u0417\u0430\u043A\u0440\u0435\u043F\u0438\u0442\u044C'}}\n </div>\n <div class=\"list-divider\"></div>\n <ng-container *ngIf=\"hasSortedColumns()\">\n <div class=\"list-item list-item_interactive\"\n *ngIf=\"sortParam\"\n (click)=\"clearSort()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\" class=\"margin-right-2\"></teta-icon>\n \u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0441\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0443\n </div>\n <div class=\"list-item list-item_interactive\"\n (click)=\"clearAllSort()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\"\n class=\"margin-right-2\"></teta-icon>\n \u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0432\u0441\u0435 \u0441\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0438\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"hasFilteredColumns()\">\n <div class=\"list-item list-item_interactive\"\n *ngIf=\"filtered\"\n (click)=\"clearFilter()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\"\n class=\"margin-right-2\"></teta-icon>\n \u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0444\u0438\u043B\u044C\u0442\u0440\n </div>\n <div class=\"list-item list-item_interactive\"\n (click)=\"clearAllFilters()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\"\n class=\"margin-right-2\"></teta-icon>\n \u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0432\u0441\u0435 \u0444\u0438\u043B\u044C\u0442\u0440\u044B\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <div class=\"list-item list-item_interactive\" (click)=\"autosize.emit()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'autoSize'\"\n class=\"margin-right-2\"></teta-icon>\n \u0410\u0432\u0442\u043E\u0440\u0430\u0437\u043C\u0435\u0440 \u043A\u043E\u043B\u043E\u043D\u043A\u0438\n </div>\n <div class=\"list-item list-item_interactive\" (click)=\"autosizeAll.emit()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'autoSizeAll'\"\n class=\"margin-right-2\"></teta-icon>\n \u0410\u0432\u0442\u043E\u0440\u0430\u0437\u043C\u0435\u0440 \u0432\u0441\u0435\u0445 \u043A\u043E\u043B\u043E\u043D\u043E\u043A\n </div>\n <div class=\"list-divider\"></div>\n <div class=\"list-item list-item_interactive\" (click)=\"restoreDefaultColumns()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'undo'\"\n class=\"margin-right-2\"></teta-icon>\n \u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u0432\u0441\u0435 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F\n </div>\n </div>\n </ng-template>\n </teta-tab>\n <teta-tab>\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'eye'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <div class=\"list-item padding-left-6 padding-top-2\" [class.padding-left-9]=\"childMode\">\n <teta-checkbox [binary]=\"true\"\n [allowNull]=\"true\"\n [ngModel]=\"allColumnsVisible()\"\n (ngModelChange)=\"setAllColumns($event)\">\n \u0412\u0441\u0435\n </teta-checkbox>\n </div>\n <div class=\"list-divider\"></div>\n <div class=\"padding-v-2 column column_auto scrollable\">\n <teta-tree [data]=\"columns\"\n [openItems]=\"openItems\"\n (openItemsChange)=\"openItems = $event\"\n [childNodeName]=\"'columns'\"\n [compareItems]=\"compareItems\">\n <ng-template tetaTemplate let-item>\n <div class=\"tree__item\">\n <teta-tree-item-toggle [item]=\"item\" *ngIf=\"item.columns?.length > 0\"></teta-tree-item-toggle>\n <teta-checkbox\n [ngModel]=\"!columnIsHidden(item)\"\n (ngModelChange)=\"setColumnVisibility(item, $event)\"\n (click)=\"$event.stopPropagation()\"\n [binary]=\"true\"\n >\n {{item.caption}}\n </teta-checkbox>\n </div>\n </ng-template>\n </teta-tree>\n </div>\n <teta-toolbar class=\"justify-content-end\">\n <button teta-button\n [disabled]=\"allColumnsVisible() === false\"\n [palette]=\"'primary'\"\n (click)=\"setColumnsVisibility()\">\n \u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C\n </button>\n </teta-toolbar>\n </ng-template>\n </teta-tab>\n</teta-tabs>\n", styles: [":host{display:flex;flex-grow:1;min-height:0;width:250px}\n"], components: [{ type: TabsComponent, selector: "teta-tabs", inputs: ["activeId", "destroyOnHide"], outputs: ["tabChange"] }, { type: TabComponent, selector: "teta-tab", inputs: ["id", "title", "disabled"] }, { type: IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { type: FilterHostComponent, selector: "teta-filter-host", inputs: ["column", "state", "filterOptions"], outputs: ["filterChanged"] }, { type: ToolbarComponent, selector: "teta-toolbar", inputs: ["palette", "class"] }, { type: ButtonComponent, selector: "button[teta-button], teta-button", inputs: ["palette", "class", "view", "square"] }, { type: CheckboxComponent, selector: "teta-checkbox", inputs: ["class", "palette", "noLabel", "disabled", "value", "binary", "allowNull"] }, { type: TreeComponent, selector: "teta-tree", inputs: ["data", "class", "padding", "childNodeName", "openItems", "compareItems"], outputs: ["service", "openItemsChange"] }, { type: TreeItemToggleComponent, selector: "teta-tree-item-toggle", inputs: ["item"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: TabTitleDirective, selector: "[tetaTabTitle]" }, { type: TabContentDirective, selector: "[tetaTabContent]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: TetaTemplateDirective, selector: "[tetaTemplate]", inputs: ["tetaTemplate"] }], pipes: { "async": i2.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
8249
+ HeadCellDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: HeadCellDropdownComponent, selector: "teta-head-cell-dropdown", inputs: { columns: "columns", column: "column", state: "state", dropDownOpen: "dropDownOpen" }, outputs: { dropDownOpenChange: "dropDownOpenChange", autosize: "autosize", autosizeAll: "autosizeAll" }, host: { properties: { "class.shadow-2": "this.shadow", "class.bg-background-50": "this.bg" } }, ngImport: i0, template: "<teta-tabs class=\"column_auto\">\n <teta-tab *ngIf=\"column.filterable\">\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'filter'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <teta-filter-host [column]=\"column\" [state]=\"state\"\n *ngIf=\"dict | async as d\"\n [filterOptions]=\"d[column.name]\"></teta-filter-host>\n <teta-toolbar class=\"justify-content-between\">\n <button teta-button [palette]=\"'text'\" [view]=\"'ghost'\" (click)=\"clearFilter()\">\n \u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C\n </button>\n <button teta-button [palette]=\"'primary'\" (click)=\"applyFilter()\">\n <teta-icon [name]=\"'tick'\"></teta-icon>\n \u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C\n </button>\n </teta-toolbar>\n </ng-template>\n </teta-tab>\n <teta-tab *ngIf=\"column.headDropdownTemplate\">\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'measurement'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <ng-container\n *ngTemplateOutlet=\"column.headDropdownTemplate; context: {$implicit: column, column: column}\"></ng-container>\n </ng-template>\n </teta-tab>\n <teta-tab>\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'menu'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <div class=\"list column_auto\">\n <div class=\"list-item list-item_interactive\" (click)=\"pinColumn()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"column.locked ? 'unpin' : 'pin'\"\n class=\"margin-right-2\"></teta-icon>\n {{column.locked ? '\u041E\u0442\u043A\u0440\u0435\u043F\u0438\u0442\u044C' : '\u0417\u0430\u043A\u0440\u0435\u043F\u0438\u0442\u044C'}}\n </div>\n <div class=\"list-divider\"></div>\n <ng-container *ngIf=\"hasSortedColumns()\">\n <div class=\"list-item list-item_interactive\"\n *ngIf=\"sortParam\"\n (click)=\"clearSort()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\" class=\"margin-right-2\"></teta-icon>\n \u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0441\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0443\n </div>\n <div class=\"list-item list-item_interactive\"\n (click)=\"clearAllSort()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\"\n class=\"margin-right-2\"></teta-icon>\n \u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0432\u0441\u0435 \u0441\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0438\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"hasFilteredColumns()\">\n <div class=\"list-item list-item_interactive\"\n *ngIf=\"filtered\"\n (click)=\"clearFilter()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\"\n class=\"margin-right-2\"></teta-icon>\n \u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0444\u0438\u043B\u044C\u0442\u0440\n </div>\n <div class=\"list-item list-item_interactive\"\n (click)=\"clearAllFilters()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\"\n class=\"margin-right-2\"></teta-icon>\n \u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0432\u0441\u0435 \u0444\u0438\u043B\u044C\u0442\u0440\u044B\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <div class=\"list-item list-item_interactive\" (click)=\"autosize.emit()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'autoSize'\"\n class=\"margin-right-2\"></teta-icon>\n \u0410\u0432\u0442\u043E\u0440\u0430\u0437\u043C\u0435\u0440 \u043A\u043E\u043B\u043E\u043D\u043A\u0438\n </div>\n <div class=\"list-item list-item_interactive\" (click)=\"autosizeAll.emit()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'autoSizeAll'\"\n class=\"margin-right-2\"></teta-icon>\n \u0410\u0432\u0442\u043E\u0440\u0430\u0437\u043C\u0435\u0440 \u0432\u0441\u0435\u0445 \u043A\u043E\u043B\u043E\u043D\u043E\u043A\n </div>\n <div class=\"list-divider\"></div>\n <div class=\"list-item list-item_interactive\" (click)=\"restoreDefaultColumns()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'undo'\"\n class=\"margin-right-2\"></teta-icon>\n \u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u0432\u0441\u0435 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F\n </div>\n </div>\n </ng-template>\n </teta-tab>\n <teta-tab>\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'eye'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <div class=\"list-item padding-left-6 padding-top-2\" [class.padding-left-9]=\"childMode\">\n <teta-checkbox [binary]=\"true\"\n [allowNull]=\"true\"\n [ngModel]=\"allColumnsVisible()\"\n (ngModelChange)=\"setAllColumns($event)\">\n \u0412\u0441\u0435\n </teta-checkbox>\n </div>\n <div class=\"list-divider\"></div>\n <div class=\"padding-v-2 column column_auto scrollable\">\n <teta-tree [data]=\"columns\"\n [openItems]=\"openItems\"\n (openItemsChange)=\"openItems = $event\"\n [childNodeName]=\"'columns'\"\n [compareItems]=\"compareItems\">\n <ng-template tetaTemplate let-item>\n <div class=\"tree__item\">\n <teta-tree-item-toggle [item]=\"item\" *ngIf=\"item.columns?.length > 0\"></teta-tree-item-toggle>\n <teta-checkbox\n [ngModel]=\"!columnIsHidden(item)\"\n (ngModelChange)=\"setColumnVisibility(item, $event)\"\n (click)=\"$event.stopPropagation()\"\n [binary]=\"true\"\n >\n {{item.caption}}\n </teta-checkbox>\n </div>\n </ng-template>\n </teta-tree>\n </div>\n <teta-toolbar class=\"justify-content-end\">\n <button teta-button\n [disabled]=\"allColumnsVisible() === false\"\n [palette]=\"'primary'\"\n (click)=\"setColumnsVisibility()\">\n \u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C\n </button>\n </teta-toolbar>\n </ng-template>\n </teta-tab>\n</teta-tabs>\n", styles: [":host{display:flex;flex-grow:1;min-height:0;width:250px}\n"], components: [{ type: TabsComponent, selector: "teta-tabs", inputs: ["activeId", "destroyOnHide"], outputs: ["tabChange"] }, { type: TabComponent, selector: "teta-tab", inputs: ["id", "title", "disabled"] }, { type: IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { type: FilterHostComponent, selector: "teta-filter-host", inputs: ["column", "state", "filterOptions"], outputs: ["filterChanged"] }, { type: ToolbarComponent, selector: "teta-toolbar", inputs: ["palette", "class"] }, { type: ButtonComponent, selector: "button[teta-button], teta-button", inputs: ["palette", "class", "view", "square"] }, { type: CheckboxComponent, selector: "teta-checkbox", inputs: ["class", "palette", "noLabel", "disabled", "value", "binary", "allowNull"] }, { type: TreeComponent, selector: "teta-tree", inputs: ["data", "class", "padding", "childNodeName", "openItems", "compareItems"], outputs: ["service", "openItemsChange"] }, { type: TreeItemToggleComponent, selector: "teta-tree-item-toggle", inputs: ["item"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: TabTitleDirective, selector: "[tetaTabTitle]" }, { type: TabContentDirective, selector: "[tetaTabContent]" }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: TetaTemplateDirective, selector: "[tetaTemplate]", inputs: ["tetaTemplate"] }], pipes: { "async": i2.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
8193
8250
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: HeadCellDropdownComponent, decorators: [{
8194
8251
  type: Component,
8195
- args: [{ selector: 'teta-head-cell-dropdown', changeDetection: ChangeDetectionStrategy.OnPush, template: "<teta-tabs class=\"column_auto\">\n <teta-tab *ngIf=\"column.filterable\">\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'filter'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <teta-filter-host [column]=\"column\" [state]=\"state\"\n *ngIf=\"dict | async as d\"\n [filterOptions]=\"d[column.name]\"></teta-filter-host>\n <teta-toolbar class=\"justify-content-between\">\n <button teta-button [palette]=\"'text'\" [view]=\"'ghost'\" (click)=\"clearFilter()\">\n \u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C\n </button>\n <button teta-button [palette]=\"'primary'\" (click)=\"applyFilter()\">\n <teta-icon [name]=\"'tick'\"></teta-icon>\n \u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C\n </button>\n </teta-toolbar>\n </ng-template>\n </teta-tab>\n <teta-tab>\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'menu'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <div class=\"list column_auto\">\n <div class=\"list-item list-item_interactive\" (click)=\"pinColumn()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"column.locked ? 'unpin' : 'pin'\"\n class=\"margin-right-2\"></teta-icon>\n {{column.locked ? '\u041E\u0442\u043A\u0440\u0435\u043F\u0438\u0442\u044C' : '\u0417\u0430\u043A\u0440\u0435\u043F\u0438\u0442\u044C'}}\n </div>\n <div class=\"list-divider\"></div>\n <ng-container *ngIf=\"hasSortedColumns()\">\n <div class=\"list-item list-item_interactive\"\n *ngIf=\"sortParam\"\n (click)=\"clearSort()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\" class=\"margin-right-2\"></teta-icon>\n \u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0441\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0443\n </div>\n <div class=\"list-item list-item_interactive\"\n (click)=\"clearAllSort()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\"\n class=\"margin-right-2\"></teta-icon>\n \u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0432\u0441\u0435 \u0441\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0438\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"hasFilteredColumns()\">\n <div class=\"list-item list-item_interactive\"\n *ngIf=\"filtered\"\n (click)=\"clearFilter()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\"\n class=\"margin-right-2\"></teta-icon>\n \u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0444\u0438\u043B\u044C\u0442\u0440\n </div>\n <div class=\"list-item list-item_interactive\"\n (click)=\"clearAllFilters()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\"\n class=\"margin-right-2\"></teta-icon>\n \u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0432\u0441\u0435 \u0444\u0438\u043B\u044C\u0442\u0440\u044B\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <div class=\"list-item list-item_interactive\" (click)=\"autosize.emit()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'autoSize'\"\n class=\"margin-right-2\"></teta-icon>\n \u0410\u0432\u0442\u043E\u0440\u0430\u0437\u043C\u0435\u0440 \u043A\u043E\u043B\u043E\u043D\u043A\u0438\n </div>\n <div class=\"list-item list-item_interactive\" (click)=\"autosizeAll.emit()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'autoSizeAll'\"\n class=\"margin-right-2\"></teta-icon>\n \u0410\u0432\u0442\u043E\u0440\u0430\u0437\u043C\u0435\u0440 \u0432\u0441\u0435\u0445 \u043A\u043E\u043B\u043E\u043D\u043E\u043A\n </div>\n <div class=\"list-divider\"></div>\n <div class=\"list-item list-item_interactive\" (click)=\"restoreDefaultColumns()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'undo'\"\n class=\"margin-right-2\"></teta-icon>\n \u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u0432\u0441\u0435 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F\n </div>\n </div>\n </ng-template>\n </teta-tab>\n <teta-tab>\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'eye'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <div class=\"list-item padding-left-6 padding-top-2\" [class.padding-left-9]=\"childMode\">\n <teta-checkbox [binary]=\"true\"\n [allowNull]=\"true\"\n [ngModel]=\"allColumnsVisible()\"\n (ngModelChange)=\"setAllColumns($event)\">\n \u0412\u0441\u0435\n </teta-checkbox>\n </div>\n <div class=\"list-divider\"></div>\n <div class=\"padding-v-2 column column_auto scrollable\">\n <teta-tree [data]=\"columns\"\n [openItems]=\"openItems\"\n (openItemsChange)=\"openItems = $event\"\n [childNodeName]=\"'columns'\"\n [compareItems]=\"compareItems\">\n <ng-template tetaTemplate let-item>\n <div class=\"tree__item\">\n <teta-tree-item-toggle [item]=\"item\" *ngIf=\"item.columns?.length > 0\"></teta-tree-item-toggle>\n <teta-checkbox\n [ngModel]=\"!columnIsHidden(item)\"\n (ngModelChange)=\"setColumnVisibility(item, $event)\"\n (click)=\"$event.stopPropagation()\"\n [binary]=\"true\"\n >\n {{item.caption}}\n </teta-checkbox>\n </div>\n </ng-template>\n </teta-tree>\n </div>\n <teta-toolbar class=\"justify-content-end\">\n <button teta-button\n [disabled]=\"allColumnsVisible() === false\"\n [palette]=\"'primary'\"\n (click)=\"setColumnsVisibility()\">\n \u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C\n </button>\n </teta-toolbar>\n </ng-template>\n </teta-tab>\n</teta-tabs>\n", styles: [":host{display:flex;flex-grow:1;min-height:0;width:250px}\n"] }]
8252
+ args: [{ selector: 'teta-head-cell-dropdown', changeDetection: ChangeDetectionStrategy.OnPush, template: "<teta-tabs class=\"column_auto\">\n <teta-tab *ngIf=\"column.filterable\">\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'filter'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <teta-filter-host [column]=\"column\" [state]=\"state\"\n *ngIf=\"dict | async as d\"\n [filterOptions]=\"d[column.name]\"></teta-filter-host>\n <teta-toolbar class=\"justify-content-between\">\n <button teta-button [palette]=\"'text'\" [view]=\"'ghost'\" (click)=\"clearFilter()\">\n \u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C\n </button>\n <button teta-button [palette]=\"'primary'\" (click)=\"applyFilter()\">\n <teta-icon [name]=\"'tick'\"></teta-icon>\n \u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C\n </button>\n </teta-toolbar>\n </ng-template>\n </teta-tab>\n <teta-tab *ngIf=\"column.headDropdownTemplate\">\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'measurement'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <ng-container\n *ngTemplateOutlet=\"column.headDropdownTemplate; context: {$implicit: column, column: column}\"></ng-container>\n </ng-template>\n </teta-tab>\n <teta-tab>\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'menu'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <div class=\"list column_auto\">\n <div class=\"list-item list-item_interactive\" (click)=\"pinColumn()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"column.locked ? 'unpin' : 'pin'\"\n class=\"margin-right-2\"></teta-icon>\n {{column.locked ? '\u041E\u0442\u043A\u0440\u0435\u043F\u0438\u0442\u044C' : '\u0417\u0430\u043A\u0440\u0435\u043F\u0438\u0442\u044C'}}\n </div>\n <div class=\"list-divider\"></div>\n <ng-container *ngIf=\"hasSortedColumns()\">\n <div class=\"list-item list-item_interactive\"\n *ngIf=\"sortParam\"\n (click)=\"clearSort()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\" class=\"margin-right-2\"></teta-icon>\n \u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0441\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0443\n </div>\n <div class=\"list-item list-item_interactive\"\n (click)=\"clearAllSort()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\"\n class=\"margin-right-2\"></teta-icon>\n \u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0432\u0441\u0435 \u0441\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0438\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"hasFilteredColumns()\">\n <div class=\"list-item list-item_interactive\"\n *ngIf=\"filtered\"\n (click)=\"clearFilter()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\"\n class=\"margin-right-2\"></teta-icon>\n \u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0444\u0438\u043B\u044C\u0442\u0440\n </div>\n <div class=\"list-item list-item_interactive\"\n (click)=\"clearAllFilters()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\"\n class=\"margin-right-2\"></teta-icon>\n \u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0432\u0441\u0435 \u0444\u0438\u043B\u044C\u0442\u0440\u044B\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <div class=\"list-item list-item_interactive\" (click)=\"autosize.emit()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'autoSize'\"\n class=\"margin-right-2\"></teta-icon>\n \u0410\u0432\u0442\u043E\u0440\u0430\u0437\u043C\u0435\u0440 \u043A\u043E\u043B\u043E\u043D\u043A\u0438\n </div>\n <div class=\"list-item list-item_interactive\" (click)=\"autosizeAll.emit()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'autoSizeAll'\"\n class=\"margin-right-2\"></teta-icon>\n \u0410\u0432\u0442\u043E\u0440\u0430\u0437\u043C\u0435\u0440 \u0432\u0441\u0435\u0445 \u043A\u043E\u043B\u043E\u043D\u043E\u043A\n </div>\n <div class=\"list-divider\"></div>\n <div class=\"list-item list-item_interactive\" (click)=\"restoreDefaultColumns()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'undo'\"\n class=\"margin-right-2\"></teta-icon>\n \u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u0432\u0441\u0435 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F\n </div>\n </div>\n </ng-template>\n </teta-tab>\n <teta-tab>\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'eye'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <div class=\"list-item padding-left-6 padding-top-2\" [class.padding-left-9]=\"childMode\">\n <teta-checkbox [binary]=\"true\"\n [allowNull]=\"true\"\n [ngModel]=\"allColumnsVisible()\"\n (ngModelChange)=\"setAllColumns($event)\">\n \u0412\u0441\u0435\n </teta-checkbox>\n </div>\n <div class=\"list-divider\"></div>\n <div class=\"padding-v-2 column column_auto scrollable\">\n <teta-tree [data]=\"columns\"\n [openItems]=\"openItems\"\n (openItemsChange)=\"openItems = $event\"\n [childNodeName]=\"'columns'\"\n [compareItems]=\"compareItems\">\n <ng-template tetaTemplate let-item>\n <div class=\"tree__item\">\n <teta-tree-item-toggle [item]=\"item\" *ngIf=\"item.columns?.length > 0\"></teta-tree-item-toggle>\n <teta-checkbox\n [ngModel]=\"!columnIsHidden(item)\"\n (ngModelChange)=\"setColumnVisibility(item, $event)\"\n (click)=\"$event.stopPropagation()\"\n [binary]=\"true\"\n >\n {{item.caption}}\n </teta-checkbox>\n </div>\n </ng-template>\n </teta-tree>\n </div>\n <teta-toolbar class=\"justify-content-end\">\n <button teta-button\n [disabled]=\"allColumnsVisible() === false\"\n [palette]=\"'primary'\"\n (click)=\"setColumnsVisibility()\">\n \u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C\n </button>\n </teta-toolbar>\n </ng-template>\n </teta-tab>\n</teta-tabs>\n", styles: [":host{display:flex;flex-grow:1;min-height:0;width:250px}\n"] }]
8196
8253
  }], ctorParameters: function () { return [{ type: TableService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { columns: [{
8197
8254
  type: Input
8198
8255
  }], column: [{
@@ -8750,10 +8807,10 @@ class DateCellComponent extends CellComponentBase {
8750
8807
  }
8751
8808
  }
8752
8809
  DateCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: DateCellComponent, deps: [{ token: TableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
8753
- DateCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: DateCellComponent, selector: "teta-date-cell", inputs: { column: "column", row: "row" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<span [style.display]=\"edit ? 'none' : 'block'\" class=\"cell-text\">\n {{row.data[column.name] | date : 'dd.MM.yyyy'}}\n</span>\n<teta-date-picker class=\"datepicker-table\"\n #input\n *ngIf=\"edit\"\n [appendToBody]=\"false\"\n [showTime]=\"false\"\n [ngModel]=\"row.data[column.name]\"\n (ngModelChange)=\"setValue($event)\"\n></teta-date-picker>\n", styles: [""], components: [{ type: DatePickerComponent, selector: "teta-date-picker", inputs: ["disabled", "invalid", "firstDayOfWeek", "disabledDates", "disabledPeriods", "disabledDays", "minDate", "maxDate", "minYearDate", "maxYearDate", "appendToBody", "showTime", "format"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "date": i2.DatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
8810
+ DateCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: DateCellComponent, selector: "teta-date-cell", inputs: { column: "column", row: "row" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<span [style.display]=\"edit ? 'none' : 'block'\" class=\"cell-text\">\n {{row.data[column.name] | date : 'dd.MM.yyyy'}}\n</span>\n<teta-date-picker class=\"datepicker-table\"\n #input\n *ngIf=\"edit\"\n [appendToBody]=\"true\"\n [showTime]=\"false\"\n [ngModel]=\"row.data[column.name]\"\n (ngModelChange)=\"setValue($event)\"\n></teta-date-picker>\n", styles: [""], components: [{ type: DatePickerComponent, selector: "teta-date-picker", inputs: ["disabled", "invalid", "firstDayOfWeek", "disabledDates", "disabledPeriods", "disabledDays", "minDate", "maxDate", "minYearDate", "maxYearDate", "align", "verticalAlign", "appendToBody", "showTime", "format"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "date": i2.DatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
8754
8811
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: DateCellComponent, decorators: [{
8755
8812
  type: Component,
8756
- args: [{ selector: 'teta-date-cell', changeDetection: ChangeDetectionStrategy.OnPush, template: "<span [style.display]=\"edit ? 'none' : 'block'\" class=\"cell-text\">\n {{row.data[column.name] | date : 'dd.MM.yyyy'}}\n</span>\n<teta-date-picker class=\"datepicker-table\"\n #input\n *ngIf=\"edit\"\n [appendToBody]=\"false\"\n [showTime]=\"false\"\n [ngModel]=\"row.data[column.name]\"\n (ngModelChange)=\"setValue($event)\"\n></teta-date-picker>\n", styles: [""] }]
8813
+ args: [{ selector: 'teta-date-cell', changeDetection: ChangeDetectionStrategy.OnPush, template: "<span [style.display]=\"edit ? 'none' : 'block'\" class=\"cell-text\">\n {{row.data[column.name] | date : 'dd.MM.yyyy'}}\n</span>\n<teta-date-picker class=\"datepicker-table\"\n #input\n *ngIf=\"edit\"\n [appendToBody]=\"true\"\n [showTime]=\"false\"\n [ngModel]=\"row.data[column.name]\"\n (ngModelChange)=\"setValue($event)\"\n></teta-date-picker>\n", styles: [""] }]
8757
8814
  }], ctorParameters: function () { return [{ type: TableService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { column: [{
8758
8815
  type: Input
8759
8816
  }], row: [{
@@ -8807,10 +8864,10 @@ class ListCellComponent extends CellComponentBase {
8807
8864
  }
8808
8865
  }
8809
8866
  ListCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ListCellComponent, deps: [{ token: TableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
8810
- ListCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: ListCellComponent, selector: "teta-list-cell", inputs: { column: "column", row: "row", filterOptions: "filterOptions" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<span [style.display]=\"edit ? 'none' : 'block'\" class=\"cell-text\">\n {{value}}\n</span>\n<teta-select #input\n class=\"row_auto select-table\"\n *ngIf=\"edit\"\n [allowNull]=\"!column.required\"\n [verticalAlign]=\"verticalAlign.auto\"\n [appendToBody]=\"false\"\n [options]=\"filterOptions\"\n [valueRef]=\"'id'\"\n [textRef]=\"'name'\"\n [ngModel]=\"row.data[column.name]\"\n (ngModelChange)=\"setValue($event)\">\n</teta-select>\n", styles: [""], components: [{ type: SelectComponent, selector: "teta-select", inputs: ["multiple", "options", "invalid", "align", "verticalAlign", "autoClose", "autoCloseIgnore", "disabled", "itemSize", "virtual", "icon", "placeholder", "appendToBody", "allowNull", "valueRef", "textRef", "searchRef"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8867
+ ListCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: ListCellComponent, selector: "teta-list-cell", inputs: { column: "column", row: "row", filterOptions: "filterOptions" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<span [style.display]=\"edit ? 'none' : 'block'\" class=\"cell-text\">\n {{value}}\n</span>\n<teta-select #input\n class=\"row_auto select-table\"\n *ngIf=\"edit\"\n [allowNull]=\"!column.required\"\n [verticalAlign]=\"verticalAlign.auto\"\n [appendToBody]=\"true\"\n [options]=\"filterOptions\"\n [valueRef]=\"'id'\"\n [textRef]=\"'name'\"\n [ngModel]=\"row.data[column.name]\"\n (ngModelChange)=\"setValue($event)\">\n</teta-select>\n", styles: [""], components: [{ type: SelectComponent, selector: "teta-select", inputs: ["multiple", "options", "invalid", "align", "verticalAlign", "autoClose", "autoCloseIgnore", "disabled", "itemSize", "virtual", "icon", "placeholder", "appendToBody", "allowNull", "valueRef", "textRef", "searchRef"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8811
8868
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ListCellComponent, decorators: [{
8812
8869
  type: Component,
8813
- args: [{ selector: 'teta-list-cell', changeDetection: ChangeDetectionStrategy.OnPush, template: "<span [style.display]=\"edit ? 'none' : 'block'\" class=\"cell-text\">\n {{value}}\n</span>\n<teta-select #input\n class=\"row_auto select-table\"\n *ngIf=\"edit\"\n [allowNull]=\"!column.required\"\n [verticalAlign]=\"verticalAlign.auto\"\n [appendToBody]=\"false\"\n [options]=\"filterOptions\"\n [valueRef]=\"'id'\"\n [textRef]=\"'name'\"\n [ngModel]=\"row.data[column.name]\"\n (ngModelChange)=\"setValue($event)\">\n</teta-select>\n", styles: [""] }]
8870
+ args: [{ selector: 'teta-list-cell', changeDetection: ChangeDetectionStrategy.OnPush, template: "<span [style.display]=\"edit ? 'none' : 'block'\" class=\"cell-text\">\n {{value}}\n</span>\n<teta-select #input\n class=\"row_auto select-table\"\n *ngIf=\"edit\"\n [allowNull]=\"!column.required\"\n [verticalAlign]=\"verticalAlign.auto\"\n [appendToBody]=\"true\"\n [options]=\"filterOptions\"\n [valueRef]=\"'id'\"\n [textRef]=\"'name'\"\n [ngModel]=\"row.data[column.name]\"\n (ngModelChange)=\"setValue($event)\">\n</teta-select>\n", styles: [""] }]
8814
8871
  }], ctorParameters: function () { return [{ type: TableService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { column: [{
8815
8872
  type: Input
8816
8873
  }], row: [{
@@ -9183,10 +9240,10 @@ class TableBodyComponent {
9183
9240
  }
9184
9241
  }
9185
9242
  TableBodyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: TableBodyComponent, deps: [{ token: TableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
9186
- TableBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: TableBodyComponent, selector: "teta-table-body", inputs: { virtual: "virtual", activeRow: "activeRow", rowHeight: "rowHeight", additionalComponent: "additionalComponent", tree: "tree", aggregate: "aggregate", grouping: "grouping", groupRowComponent: "groupRowComponent", openLevels: "openLevels", selectType: "selectType", rowClass: "rowClass" }, host: { properties: { "class.table-body": "this.tableBodyClass" } }, viewQueries: [{ propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], ngImport: i0, template: "<!--<div #viewport class=\"table-body-container table-body-container-virtual\"-->\n<!-- *ngIf=\"virtual\"-->\n<!-- [style.grid-template-columns]=\"getTemplateColumns()\"-->\n<!-- style=\"height: 100%;\">-->\n<!-- <ng-container-->\n<!-- *uiScroll=\"let row of dataSource; let rowIndex = index; let last = last;\" style=\"display: flex;flex-grow: 1\">-->\n<!-- <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>-->\n<!-- </ng-container>-->\n<!-- <ng-container *ngIf=\"aggregate\">-->\n<!-- <ng-container *ngTemplateOutlet=\"aggTemplate;\"></ng-container>-->\n<!-- </ng-container>-->\n<!--</div>-->\n\n<cdk-virtual-scroll-viewport *ngIf=\"virtual\"\n class=\"table-body-container\"\n [maxBufferPx]=\"600\"\n [minBufferPx]=\"240\"\n [itemSize]=\"24\">\n <ng-container *cdkVirtualFor=\"let row of data;templateCacheSize: 0; let rowIndex = index; trackBy: trackRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n</cdk-virtual-scroll-viewport>\n\n\n<div *ngIf=\"!virtual\"\n class=\"table-body-container\"\n [style.grid-template-rows]=\"rowHeight + 'px'\"\n [style.grid-auto-rows]=\"rowHeight + 'px'\"\n [style.grid-template-columns]=\"getTemplateColumns()\">\n <ng-container *ngFor=\"let row of data; let rowIndex = index; trackBy: trackRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"aggregate\">\n <ng-container *ngTemplateOutlet=\"aggTemplate;\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #bodyTemplate let-row=\"row\" let-rowIndex=\"rowIndex\">\n <div class=\"table-row\"\n (click)=\"setActiveRow(row)\"\n [attr.data-row]=\"rowIndex\"\n [ngClass]=\"rowClass ? rowClass(row, rowIndex) : ''\"\n [class.table-row_virtual]=\"virtual\"\n [style.grid-template-columns]=\"virtual ? getTemplateColumns() : ''\"\n [class.table-row_active]=\"row === activeRow || selectedRows.indexOf(row) >= 0\">\n <ng-container *ngIf=\"!grouping\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.grid-template-columns]=\"getLockedGridTemplateColumns(locked)\"\n [style.zIndex]=\"row === activeRow ? 1 : 'unset'\"\n [style.grid-column-end]=\"getSpan()\">\n <teta-selection-cell *ngIf=\"selectType !== selectTypeEnum.none && locked.length\"\n [row]=\"row\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict[column.name]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n ></teta-cell>\n </div>\n <teta-selection-cell *ngIf=\"selectType !== selectTypeEnum.none && locked.length < 1\"\n [row]=\"row\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict[column.name]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n ></teta-cell>\n </ng-container>\n <ng-container *ngIf=\"grouping\">\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #aggTemplate>\n <div class=\"table-row\"\n *ngIf=\"aggregate\"\n [class.table-row_virtual]=\"virtual\"\n [style.grid-template-columns]=\"virtual ? getTemplateColumns() : ''\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.grid-template-columns]=\"getLockedGridTemplateColumns(locked)\"\n [style.grid-column-end]=\"getSpan()\">\n <div class=\"cell align-center justify-content-center\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component justify-content-end\"\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\">\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{getAggregateText(column)}}:\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n <div class=\"cell align-center justify-content-center\"\n *ngIf=\"selectType !== selectTypeEnum.none && locked.length < 1\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component justify-content-end\"\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\">\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{getAggregateText(column)}}\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n</ng-template>\n", styles: [""], components: [{ type: i4.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { type: SelectionCellComponent, selector: "teta-selection-cell", inputs: ["row"] }, { type: CellComponent, selector: "teta-cell", inputs: ["column", "filterOptions", "dict", "row"] }, { type: IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i4.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "tetaNumber": NumberPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
9243
+ TableBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: TableBodyComponent, selector: "teta-table-body", inputs: { virtual: "virtual", activeRow: "activeRow", rowHeight: "rowHeight", additionalComponent: "additionalComponent", tree: "tree", aggregate: "aggregate", grouping: "grouping", groupRowComponent: "groupRowComponent", openLevels: "openLevels", selectType: "selectType", rowClass: "rowClass" }, host: { properties: { "class.table-body": "this.tableBodyClass" } }, viewQueries: [{ propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], ngImport: i0, template: "<!--<div #viewport class=\"table-body-container table-body-container-virtual\"-->\n<!-- *ngIf=\"virtual\"-->\n<!-- [style.grid-template-columns]=\"getTemplateColumns()\"-->\n<!-- style=\"height: 100%;\">-->\n<!-- <ng-container-->\n<!-- *uiScroll=\"let row of dataSource; let rowIndex = index; let last = last;\" style=\"display: flex;flex-grow: 1\">-->\n<!-- <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>-->\n<!-- </ng-container>-->\n<!-- <ng-container *ngIf=\"aggregate\">-->\n<!-- <ng-container *ngTemplateOutlet=\"aggTemplate;\"></ng-container>-->\n<!-- </ng-container>-->\n<!--</div>-->\n\n<cdk-virtual-scroll-viewport *ngIf=\"virtual\"\n class=\"table-body-container\"\n [itemSize]=\"24\">\n <ng-container *cdkVirtualFor=\"let row of data;templateCacheSize: 0; let rowIndex = index; trackBy: trackRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n</cdk-virtual-scroll-viewport>\n\n\n<div *ngIf=\"!virtual\"\n class=\"table-body-container\"\n [style.grid-template-rows]=\"rowHeight + 'px'\"\n [style.grid-auto-rows]=\"rowHeight + 'px'\"\n [style.grid-template-columns]=\"getTemplateColumns()\">\n <ng-container *ngFor=\"let row of data; let rowIndex = index; trackBy: trackRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"aggregate\">\n <ng-container *ngTemplateOutlet=\"aggTemplate;\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #bodyTemplate let-row=\"row\" let-rowIndex=\"rowIndex\">\n <div class=\"table-row\"\n (click)=\"setActiveRow(row)\"\n [attr.data-row]=\"rowIndex\"\n [ngClass]=\"rowClass ? rowClass(row, rowIndex) : ''\"\n [class.table-row_virtual]=\"virtual\"\n [style.grid-template-columns]=\"virtual ? getTemplateColumns() : ''\"\n [class.table-row_active]=\"row === activeRow || selectedRows.indexOf(row) >= 0\">\n <ng-container *ngIf=\"!grouping\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.grid-template-columns]=\"getLockedGridTemplateColumns(locked)\"\n [style.zIndex]=\"row === activeRow ? 1 : 'unset'\"\n [style.grid-column-end]=\"getSpan()\">\n <teta-selection-cell *ngIf=\"selectType !== selectTypeEnum.none && locked.length\"\n [row]=\"row\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict[column.name]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n ></teta-cell>\n </div>\n <teta-selection-cell *ngIf=\"selectType !== selectTypeEnum.none && locked.length < 1\"\n [row]=\"row\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict[column.name]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n ></teta-cell>\n </ng-container>\n <ng-container *ngIf=\"grouping\">\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #aggTemplate>\n <div class=\"table-row\"\n *ngIf=\"aggregate\"\n [class.table-row_virtual]=\"virtual\"\n [style.grid-template-columns]=\"virtual ? getTemplateColumns() : ''\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.grid-template-columns]=\"getLockedGridTemplateColumns(locked)\"\n [style.grid-column-end]=\"getSpan()\">\n <div class=\"cell align-center justify-content-center\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component justify-content-end\"\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\">\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{getAggregateText(column)}}:\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n <div class=\"cell align-center justify-content-center\"\n *ngIf=\"selectType !== selectTypeEnum.none && locked.length < 1\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component justify-content-end\"\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\">\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{getAggregateText(column)}}\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n</ng-template>\n", styles: [""], components: [{ type: i4.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { type: SelectionCellComponent, selector: "teta-selection-cell", inputs: ["row"] }, { type: CellComponent, selector: "teta-cell", inputs: ["column", "filterOptions", "dict", "row"] }, { type: IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i4.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "tetaNumber": NumberPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
9187
9244
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: TableBodyComponent, decorators: [{
9188
9245
  type: Component,
9189
- args: [{ selector: 'teta-table-body', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--<div #viewport class=\"table-body-container table-body-container-virtual\"-->\n<!-- *ngIf=\"virtual\"-->\n<!-- [style.grid-template-columns]=\"getTemplateColumns()\"-->\n<!-- style=\"height: 100%;\">-->\n<!-- <ng-container-->\n<!-- *uiScroll=\"let row of dataSource; let rowIndex = index; let last = last;\" style=\"display: flex;flex-grow: 1\">-->\n<!-- <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>-->\n<!-- </ng-container>-->\n<!-- <ng-container *ngIf=\"aggregate\">-->\n<!-- <ng-container *ngTemplateOutlet=\"aggTemplate;\"></ng-container>-->\n<!-- </ng-container>-->\n<!--</div>-->\n\n<cdk-virtual-scroll-viewport *ngIf=\"virtual\"\n class=\"table-body-container\"\n [maxBufferPx]=\"600\"\n [minBufferPx]=\"240\"\n [itemSize]=\"24\">\n <ng-container *cdkVirtualFor=\"let row of data;templateCacheSize: 0; let rowIndex = index; trackBy: trackRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n</cdk-virtual-scroll-viewport>\n\n\n<div *ngIf=\"!virtual\"\n class=\"table-body-container\"\n [style.grid-template-rows]=\"rowHeight + 'px'\"\n [style.grid-auto-rows]=\"rowHeight + 'px'\"\n [style.grid-template-columns]=\"getTemplateColumns()\">\n <ng-container *ngFor=\"let row of data; let rowIndex = index; trackBy: trackRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"aggregate\">\n <ng-container *ngTemplateOutlet=\"aggTemplate;\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #bodyTemplate let-row=\"row\" let-rowIndex=\"rowIndex\">\n <div class=\"table-row\"\n (click)=\"setActiveRow(row)\"\n [attr.data-row]=\"rowIndex\"\n [ngClass]=\"rowClass ? rowClass(row, rowIndex) : ''\"\n [class.table-row_virtual]=\"virtual\"\n [style.grid-template-columns]=\"virtual ? getTemplateColumns() : ''\"\n [class.table-row_active]=\"row === activeRow || selectedRows.indexOf(row) >= 0\">\n <ng-container *ngIf=\"!grouping\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.grid-template-columns]=\"getLockedGridTemplateColumns(locked)\"\n [style.zIndex]=\"row === activeRow ? 1 : 'unset'\"\n [style.grid-column-end]=\"getSpan()\">\n <teta-selection-cell *ngIf=\"selectType !== selectTypeEnum.none && locked.length\"\n [row]=\"row\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict[column.name]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n ></teta-cell>\n </div>\n <teta-selection-cell *ngIf=\"selectType !== selectTypeEnum.none && locked.length < 1\"\n [row]=\"row\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict[column.name]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n ></teta-cell>\n </ng-container>\n <ng-container *ngIf=\"grouping\">\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #aggTemplate>\n <div class=\"table-row\"\n *ngIf=\"aggregate\"\n [class.table-row_virtual]=\"virtual\"\n [style.grid-template-columns]=\"virtual ? getTemplateColumns() : ''\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.grid-template-columns]=\"getLockedGridTemplateColumns(locked)\"\n [style.grid-column-end]=\"getSpan()\">\n <div class=\"cell align-center justify-content-center\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component justify-content-end\"\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\">\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{getAggregateText(column)}}:\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n <div class=\"cell align-center justify-content-center\"\n *ngIf=\"selectType !== selectTypeEnum.none && locked.length < 1\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component justify-content-end\"\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\">\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{getAggregateText(column)}}\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n</ng-template>\n", styles: [""] }]
9246
+ args: [{ selector: 'teta-table-body', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--<div #viewport class=\"table-body-container table-body-container-virtual\"-->\n<!-- *ngIf=\"virtual\"-->\n<!-- [style.grid-template-columns]=\"getTemplateColumns()\"-->\n<!-- style=\"height: 100%;\">-->\n<!-- <ng-container-->\n<!-- *uiScroll=\"let row of dataSource; let rowIndex = index; let last = last;\" style=\"display: flex;flex-grow: 1\">-->\n<!-- <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>-->\n<!-- </ng-container>-->\n<!-- <ng-container *ngIf=\"aggregate\">-->\n<!-- <ng-container *ngTemplateOutlet=\"aggTemplate;\"></ng-container>-->\n<!-- </ng-container>-->\n<!--</div>-->\n\n<cdk-virtual-scroll-viewport *ngIf=\"virtual\"\n class=\"table-body-container\"\n [itemSize]=\"24\">\n <ng-container *cdkVirtualFor=\"let row of data;templateCacheSize: 0; let rowIndex = index; trackBy: trackRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n</cdk-virtual-scroll-viewport>\n\n\n<div *ngIf=\"!virtual\"\n class=\"table-body-container\"\n [style.grid-template-rows]=\"rowHeight + 'px'\"\n [style.grid-auto-rows]=\"rowHeight + 'px'\"\n [style.grid-template-columns]=\"getTemplateColumns()\">\n <ng-container *ngFor=\"let row of data; let rowIndex = index; trackBy: trackRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"aggregate\">\n <ng-container *ngTemplateOutlet=\"aggTemplate;\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #bodyTemplate let-row=\"row\" let-rowIndex=\"rowIndex\">\n <div class=\"table-row\"\n (click)=\"setActiveRow(row)\"\n [attr.data-row]=\"rowIndex\"\n [ngClass]=\"rowClass ? rowClass(row, rowIndex) : ''\"\n [class.table-row_virtual]=\"virtual\"\n [style.grid-template-columns]=\"virtual ? getTemplateColumns() : ''\"\n [class.table-row_active]=\"row === activeRow || selectedRows.indexOf(row) >= 0\">\n <ng-container *ngIf=\"!grouping\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.grid-template-columns]=\"getLockedGridTemplateColumns(locked)\"\n [style.zIndex]=\"row === activeRow ? 1 : 'unset'\"\n [style.grid-column-end]=\"getSpan()\">\n <teta-selection-cell *ngIf=\"selectType !== selectTypeEnum.none && locked.length\"\n [row]=\"row\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict[column.name]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n ></teta-cell>\n </div>\n <teta-selection-cell *ngIf=\"selectType !== selectTypeEnum.none && locked.length < 1\"\n [row]=\"row\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict[column.name]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n ></teta-cell>\n </ng-container>\n <ng-container *ngIf=\"grouping\">\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #aggTemplate>\n <div class=\"table-row\"\n *ngIf=\"aggregate\"\n [class.table-row_virtual]=\"virtual\"\n [style.grid-template-columns]=\"virtual ? getTemplateColumns() : ''\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.grid-template-columns]=\"getLockedGridTemplateColumns(locked)\"\n [style.grid-column-end]=\"getSpan()\">\n <div class=\"cell align-center justify-content-center\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component justify-content-end\"\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\">\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{getAggregateText(column)}}:\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n <div class=\"cell align-center justify-content-center\"\n *ngIf=\"selectType !== selectTypeEnum.none && locked.length < 1\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component justify-content-end\"\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\">\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{getAggregateText(column)}}\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n</ng-template>\n", styles: [""] }]
9190
9247
  }], ctorParameters: function () { return [{ type: TableService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { virtual: [{
9191
9248
  type: Input
9192
9249
  }], activeRow: [{
@@ -9295,7 +9352,7 @@ class TableComponent {
9295
9352
  this.startEditRowOrCell(coordinates);
9296
9353
  }
9297
9354
  }
9298
- if (!this.eventIsOnRow(event)) {
9355
+ if (!this.eventIsOnRow(event) && !event.defaultPrevented) {
9299
9356
  this._svc.startEditRow(null);
9300
9357
  }
9301
9358
  }
@@ -9418,7 +9475,9 @@ class TableComponent {
9418
9475
  this._svc.setCookieName(this.cookieName);
9419
9476
  }
9420
9477
  if (changes.hasOwnProperty('columns')) {
9421
- this._svc.setColumns(this.columns);
9478
+ if (this.columns !== null && this.columns !== undefined) {
9479
+ this._svc.setColumns(this.columns);
9480
+ }
9422
9481
  }
9423
9482
  if (changes.hasOwnProperty('data')) {
9424
9483
  this._svc.setData(this.data);
@@ -9659,27 +9718,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
9659
9718
  }]
9660
9719
  }] });
9661
9720
 
9662
- class HintModule {
9663
- }
9664
- HintModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: HintModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9665
- HintModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: HintModule, declarations: [HintDirective], imports: [CommonModule,
9666
- DynamicComponentModule], exports: [HintDirective] });
9667
- HintModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: HintModule, imports: [[
9668
- CommonModule,
9669
- DynamicComponentModule
9670
- ]] });
9671
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: HintModule, decorators: [{
9672
- type: NgModule,
9673
- args: [{
9674
- declarations: [HintDirective],
9675
- exports: [HintDirective],
9676
- imports: [
9677
- CommonModule,
9678
- DynamicComponentModule
9679
- ]
9680
- }]
9681
- }] });
9682
-
9683
9721
  class TetaTemplateModule {
9684
9722
  }
9685
9723
  TetaTemplateModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: TetaTemplateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -9742,7 +9780,7 @@ class DateTimeCellComponent extends CellComponentBase {
9742
9780
  }
9743
9781
  }
9744
9782
  DateTimeCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: DateTimeCellComponent, deps: [{ token: TableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
9745
- DateTimeCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: DateTimeCellComponent, selector: "teta-date-time-cell", inputs: { column: "column", row: "row" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<span [style.display]=\"edit ? 'none' : 'block'\" class=\"cell-text\">\n {{row.data[column.name] | date : 'dd.MM.yyyy HH:mm:ss'}}\n</span>\n<teta-date-picker class=\"datepicker-table\" #input\n *ngIf=\"edit\"\n [appendToBody]=\"true\"\n [showTime]=\"true\"\n [ngModel]=\"row.data[column.name]\"\n (ngModelChange)=\"setValue($event)\"\n></teta-date-picker>\n", styles: [""], components: [{ type: DatePickerComponent, selector: "teta-date-picker", inputs: ["disabled", "invalid", "firstDayOfWeek", "disabledDates", "disabledPeriods", "disabledDays", "minDate", "maxDate", "minYearDate", "maxYearDate", "appendToBody", "showTime", "format"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "date": i2.DatePipe } });
9783
+ DateTimeCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: DateTimeCellComponent, selector: "teta-date-time-cell", inputs: { column: "column", row: "row" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<span [style.display]=\"edit ? 'none' : 'block'\" class=\"cell-text\">\n {{row.data[column.name] | date : 'dd.MM.yyyy HH:mm:ss'}}\n</span>\n<teta-date-picker class=\"datepicker-table\" #input\n *ngIf=\"edit\"\n [appendToBody]=\"true\"\n [showTime]=\"true\"\n [ngModel]=\"row.data[column.name]\"\n (ngModelChange)=\"setValue($event)\"\n></teta-date-picker>\n", styles: [""], components: [{ type: DatePickerComponent, selector: "teta-date-picker", inputs: ["disabled", "invalid", "firstDayOfWeek", "disabledDates", "disabledPeriods", "disabledDays", "minDate", "maxDate", "minYearDate", "maxYearDate", "align", "verticalAlign", "appendToBody", "showTime", "format"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "date": i2.DatePipe } });
9746
9784
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: DateTimeCellComponent, decorators: [{
9747
9785
  type: Component,
9748
9786
  args: [{ selector: 'teta-date-time-cell', template: "<span [style.display]=\"edit ? 'none' : 'block'\" class=\"cell-text\">\n {{row.data[column.name] | date : 'dd.MM.yyyy HH:mm:ss'}}\n</span>\n<teta-date-picker class=\"datepicker-table\" #input\n *ngIf=\"edit\"\n [appendToBody]=\"true\"\n [showTime]=\"true\"\n [ngModel]=\"row.data[column.name]\"\n (ngModelChange)=\"setValue($event)\"\n></teta-date-picker>\n", styles: [""] }]