ngx-aur-mat-table 19.7.0 → 19.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Directive, Input, ChangeDetectionStrategy, Component, Pipe, EventEmitter, ElementRef, Output, ViewChild, ViewChildren, ContentChild, NgModule } from '@angular/core';
2
+ import { Directive, Input, ChangeDetectionStrategy, Component, Pipe, EventEmitter, isDevMode, ElementRef, Output, ViewChild, ViewChildren, ContentChildren, ContentChild, NgModule } from '@angular/core';
3
3
  import * as i8 from '@angular/material/sort';
4
4
  import { MatSort, MatSortModule } from '@angular/material/sort';
5
5
  import * as i3$1 from '@angular/material/table';
@@ -1072,6 +1072,30 @@ class ServerPageController {
1072
1072
  }
1073
1073
  }
1074
1074
 
1075
+ /**
1076
+ * Кастомный шаблон тела ячеек одной колонки.
1077
+ * Ставится на <ng-template>, спроецированный внутрь <aur-mat-table>:
1078
+ * <ng-template ngxAurCellDef="status" let-value let-row="row">…</ng-template>
1079
+ * Значение атрибута — ColumnConfig.key колонки, к ячейкам которой применяется шаблон.
1080
+ */
1081
+ class NgxAurCellDefDirective {
1082
+ constructor(templateRef) {
1083
+ this.templateRef = templateRef;
1084
+ }
1085
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: NgxAurCellDefDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
1086
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.17", type: NgxAurCellDefDirective, isStandalone: false, selector: "[ngxAurCellDef]", inputs: { key: ["ngxAurCellDef", "key"] }, ngImport: i0 }); }
1087
+ }
1088
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: NgxAurCellDefDirective, decorators: [{
1089
+ type: Directive,
1090
+ args: [{
1091
+ selector: '[ngxAurCellDef]',
1092
+ standalone: false,
1093
+ }]
1094
+ }], ctorParameters: () => [{ type: i0.TemplateRef }], propDecorators: { key: [{
1095
+ type: Input,
1096
+ args: ['ngxAurCellDef']
1097
+ }] } });
1098
+
1075
1099
  class IconViewComponent {
1076
1100
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: IconViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1077
1101
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: IconViewComponent, isStandalone: false, selector: "lib-icon-view", inputs: { view: "view" }, ngImport: i0, template: "<!-- \u0431\u0435\u0437 view \u0438\u043B\u0438 \u043F\u0440\u0438 visible:false \u043D\u0435 \u0440\u0435\u043D\u0434\u0435\u0440\u0438\u043C \u043D\u0438\u0447\u0435\u0433\u043E \u2014 \u043D\u0438 \u043A\u0440\u0443\u0433\u0430-\u043E\u0431\u0451\u0440\u0442\u043A\u0438, \u043D\u0438 \u043F\u0443\u0441\u0442\u043E\u0433\u043E div -->\n<div *ngIf=\"view && view.visible !== false\"\n [ngClass]=\"{'circle': view.wrapper}\"\n [style.background-color]=\"view.wrapper?.color\">\n <!-- MatTooltip \u0441\u043E\u0437\u0434\u0430\u0451\u0442\u0441\u044F \u0442\u043E\u043B\u044C\u043A\u043E \u043A\u043E\u0433\u0434\u0430 \u0442\u0443\u043B\u0442\u0438\u043F \u0437\u0430\u0434\u0430\u043D -->\n <mat-icon *ngIf=\"view.tooltip as tooltip; else plainIcon\"\n [matTooltip]=\"tooltip\"\n [matTooltipClass]=\"view.tooltipClass || ''\"\n [matTooltipPosition]=\"view.tooltipPosition || 'below'\"\n [style.color]=\"view.color\">\n {{ view.name }}\n </mat-icon>\n <ng-template #plainIcon>\n <mat-icon [style.color]=\"view.color\">\n {{ view.name }}\n </mat-icon>\n </ng-template>\n</div>\n", styles: [".circle{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
@@ -1155,6 +1179,8 @@ class NgxAurMatTableComponent {
1155
1179
  this._rowsInteractive = false;
1156
1180
  /** Смещение индекса строки на номер страницы в серверном режиме (pageIndex*pageSize); 0 в клиентском. */
1157
1181
  this._indexPageOffset = 0;
1182
+ /** key → шаблон тела ячейки, собранный из спроецированных ngxAurCellDef. */
1183
+ this._cellTemplates = new Map();
1158
1184
  this.tableData = [];
1159
1185
  this.extendedRowTemplate = null;
1160
1186
  this.timelineMarkerTemplate = null;
@@ -1293,6 +1319,29 @@ class NgxAurMatTableComponent {
1293
1319
  this.paginatorState = PaginatorState.empty();
1294
1320
  }
1295
1321
  }
1322
+ ngAfterContentInit() {
1323
+ this.rebuildCellTemplates();
1324
+ this.cellDefsSub = this.cellDefs.changes.subscribe(() => {
1325
+ this.rebuildCellTemplates();
1326
+ this.cdr.markForCheck(); // таблица OnPush
1327
+ });
1328
+ }
1329
+ /** Пересобирает карту key → шаблон из спроецированных ngxAurCellDef. */
1330
+ rebuildCellTemplates() {
1331
+ this._cellTemplates.clear();
1332
+ const keys = new Set(this.tableConfig.columnsCfg.map(c => c.key));
1333
+ this.cellDefs.forEach(def => {
1334
+ this._cellTemplates.set(def.key, def.templateRef); // дубль ключа → побеждает последний
1335
+ if (isDevMode() && !keys.has(def.key)) {
1336
+ console.warn(`[aur-mat-table] ngxAurCellDef="${def.key}" не соответствует ни одной колонке.`);
1337
+ }
1338
+ });
1339
+ }
1340
+ /** Контекст кастомного шаблона ячейки (пересобирается в CD — как у extendedRowTemplate). */
1341
+ cellCtx(element, key) {
1342
+ const value = element[key];
1343
+ return { $implicit: value, value, row: element, rowSrc: element.rowSrc, index: element.id };
1344
+ }
1296
1345
  // нам это нужно, чтобы пагинация работала с *ngIf
1297
1346
  ngAfterViewInit() {
1298
1347
  // Должно оставаться безусловным — также покрывает случай первого изменения externalPaginator
@@ -1752,6 +1801,7 @@ class NgxAurMatTableComponent {
1752
1801
  this.resizeColumnOffsetsObserver?.disconnect();
1753
1802
  this.serverPageController?.stop();
1754
1803
  this.externalPaginatorSub?.unsubscribe();
1804
+ this.cellDefsSub?.unsubscribe();
1755
1805
  }
1756
1806
  onDragStart($event, row) {
1757
1807
  if (this.selectionProvider.isEnabled && this.dragDropProvider.multiple && this.selectionProvider.selection.selected.length > 1) {
@@ -1773,7 +1823,7 @@ class NgxAurMatTableComponent {
1773
1823
  this.dragDropProvider.manager.endDrag();
1774
1824
  }
1775
1825
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: NgxAurMatTableComponent, deps: [{ token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
1776
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: NgxAurMatTableComponent, isStandalone: false, selector: "aur-mat-table", inputs: { displayColumns: "displayColumns", extraHeaderCellTopTemplate: "extraHeaderCellTopTemplate", extraHeaderCellBottomTemplate: "extraHeaderCellBottomTemplate", tableConfig: "tableConfig", tableData: "tableData", extendedRowTemplate: "extendedRowTemplate", timelineMarkerTemplate: "timelineMarkerTemplate", paginatorState: "paginatorState", pageSource: "pageSource", externalPaginator: "externalPaginator", isTableBodyHide: "isTableBodyHide", highlight: "highlight" }, outputs: { sort: "sort", pageChange: "pageChange", rowAction: "rowAction", selectChange: "selectChange", selectAdded: "selectAdded", selectRemoved: "selectRemoved", selectedRowsAction: "selectedRowsAction", selectionModel: "selectionModel", rowClick: "rowClick", loadingChange: "loadingChange", pageError: "pageError", pageLoaded: "pageLoaded", filterChange: "filterChange", columnOffsets: "columnOffsets", headerButton: "headerButton" }, queries: [{ propertyName: "subFooterRowTemplate", first: true, predicate: NgxTableSubFooterRowDirective, descendants: true }], viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true, read: ElementRef }, { propertyName: "matPaginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "matSort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "rows", predicate: ["rowLink"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div class=\"aur-mat-table\"\n [ngClass]=\"{'sticky-pagination': paginationProvider.isEnabled && !externalPaginator && paginationProvider.position === 'sticky'}\">\n <ng-container>\n <!-- Filter -->\n <ng-container *ngIf=\"isFeatureEnabled(tableConfig.filterCfg)\">\n <div class=\"search-container\">\n <ng-container>\n <ng-content select=\"[ngxAurTableSearchPrefix]\"></ng-content>\n </ng-container>\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <mat-label>{{ tableConfig.filterCfg?.label }}</mat-label>\n <input matInput (keyup)=\"applySearchFilter($event)\"\n placeholder=\"{{tableConfig.filterCfg?.placeholder}}\"\n style=\"font-size: 18px;\">\n <mat-icon matPrefix>search</mat-icon>\n </mat-form-field>\n <ng-container>\n <ng-content select=\"[ngxAurTableSearchSuffix]\"></ng-content>\n </ng-container>\n </div>\n </ng-container>\n\n\n <div class=\"table-container\"\n [ngClass]=\"{'sticky-pagination': paginationProvider.isEnabled && !externalPaginator && paginationProvider.position === 'sticky'}\">\n <mat-icon *ngIf=\"headerButtonProvider.isEnabled\"\n class=\"table-settings-button\"\n [style.color]=\"headerButtonProvider.color\"\n [style.background-color]=\"headerButtonProvider.background\"\n (click)=\"headerButton.emit($event)\">\n {{ headerButtonProvider.icon }}\n </mat-icon>\n\n <!-- Table -->\n <table #table mat-table matSort\n [matSortActive]=\"tableConfig.sortCfg?.active ?? ''\"\n [matSortDirection]=\"tableConfig.sortCfg?.direction ?? ''\"\n [trackBy]=\"trackByRow\"\n [multiTemplateDataRows]=\"extendedRowTemplate !== null\"\n [dataSource]=\"tableDataSource\"\n (matSortChange)=\"sortTable($event)\"\n [style.height]=\"tableConfig.tableViewCfg?.height\"\n [style.max-height]=\"tableConfig.tableViewCfg?.maxHeight\"\n [style.min-height]=\"tableConfig.tableViewCfg?.minHeight\"\n [class.aur-has-header-button]=\"headerButtonProvider.isEnabled\"\n [style.--aur-cell-padding-left]=\"tableConfig.tableViewCfg?.cellPaddingLeft\"\n [style.--aur-cell-padding-right]=\"tableConfig.tableViewCfg?.cellPaddingRight\"\n [ngClass]=\"{'hide-table-body': isTableBodyHide}\">\n\n\n <!-- timeline-column-->\n <ng-container *ngIf=\"timelineProvider.isEnabled\" [matColumnDef]=\"timelineProvider.COLUMN_NAME\">\n <th mat-header-cell *matHeaderCellDef class=\"aur-timeline-cell\"\n [style.width]=\"timelineProvider.size?.width\"\n [style.min-width]=\"timelineProvider.size?.minWidth\"\n [style.max-width]=\"timelineProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"timelineProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"timelineProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"timelineProvider.size?.paddingRight\"></th>\n <td mat-cell *matCellDef=\"let element\" class=\"aur-timeline-cell\"\n [style.width]=\"timelineProvider.size?.width\"\n [style.min-width]=\"timelineProvider.size?.minWidth\"\n [style.max-width]=\"timelineProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"timelineProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"timelineProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"timelineProvider.size?.paddingRight\">\n <div class=\"aur-timeline-marker-container\">\n\n <div class=\"aur-timeline-line\"\n *ngIf=\"element.id !== _timelineFirstId\"\n [style.border-left-width.px]=\"timelineProvider.line.width\"\n [style.border-left-color]=\"_timelineGaps.get(element.id)?.topColor ?? timelineProvider.line.color\"\n [style.border-left-style]=\"_timelineGaps.get(element.id)?.topGap ? timelineProvider.line.gapStyle : timelineProvider.line.style\">\n </div>\n\n <ng-container *ngIf=\"timelineMarkerTemplate; else defaultMarker\">\n <ng-container *ngTemplateOutlet=\"timelineMarkerTemplate; context: {$implicit: element}\"></ng-container>\n </ng-container>\n <ng-template #defaultMarker>\n <div class=\"aur-timeline-marker-default\"\n [style.background-color]=\"timelineProvider.markerColor\">\n </div>\n </ng-template>\n\n <div class=\"aur-timeline-line\"\n *ngIf=\"element.id !== _timelineLastId\"\n [style.border-left-width.px]=\"timelineProvider.line.width\"\n [style.border-left-color]=\"_timelineGaps.get(element.id)?.bottomColor ?? timelineProvider.line.color\"\n [style.border-left-style]=\"_timelineGaps.get(element.id)?.bottomGap ? timelineProvider.line.gapStyle : timelineProvider.line.style\">\n </div>\n\n </div>\n </td>\n <td mat-footer-cell *matFooterCellDef class=\"aur-timeline-cell\"\n [style.width]=\"timelineProvider.size?.width\"\n [style.min-width]=\"timelineProvider.size?.minWidth\"\n [style.max-width]=\"timelineProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"timelineProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"timelineProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"timelineProvider.size?.paddingRight\"></td>\n </ng-container>\n\n <!-- drag-column-->\n <ng-container *ngIf=\"dragDropProvider.isEnabled && dragDropProvider.draggable\" [matColumnDef]=\"dragDropProvider.COLUMN_NAME\">\n\n <th mat-header-cell *matHeaderCellDef\n [style.width]=\"dragDropProvider.size?.width\"\n [style.min-width]=\"dragDropProvider.size?.minWidth\"\n [style.max-width]=\"dragDropProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"dragDropProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"dragDropProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"dragDropProvider.size?.paddingRight\">\n </th>\n\n <td mat-cell *matCellDef=\"let element;\" class=\"drag-column\"\n [style.width]=\"dragDropProvider.size?.width\"\n [style.min-width]=\"dragDropProvider.size?.minWidth\"\n [style.max-width]=\"dragDropProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"dragDropProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"dragDropProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"dragDropProvider.size?.paddingRight\">\n <lib-icon-view draggable=\"true\"\n class=\"drag-icon\"\n [view]=\"dragDropProvider.dragIconView\"\n (dragstart)=\"onDragStart($event, element)\"\n (dragend)=\"onDragEnd($event, element)\">\n </lib-icon-view>\n\n </td>\n\n <td mat-footer-cell *matFooterCellDef\n [style.width]=\"dragDropProvider.size?.width\"\n [style.min-width]=\"dragDropProvider.size?.minWidth\"\n [style.max-width]=\"dragDropProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"dragDropProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"dragDropProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"dragDropProvider.size?.paddingRight\">\n </td>\n </ng-container>\n\n <!-- index-column-->\n <ng-container *ngIf=\"indexProvider.isEnabled\" [matColumnDef]=\"indexProvider.COLUMN_NAME\">\n\n <th mat-header-cell *matHeaderCellDef\n [style.width]=\"indexProvider.size?.width\"\n [style.min-width]=\"indexProvider.size?.minWidth\"\n [style.max-width]=\"indexProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"indexProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"indexProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"indexProvider.size?.paddingRight\"\n [ngClass]=\"_alignClass[indexProvider.COLUMN_NAME]\">\n <!-- \u0438\u043C\u044F \u043F\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044F \u0447\u0435\u0440\u0435\u0437 [value]: \u0443 lib-column-view \u043D\u0435\u0442 ng-content, \u043F\u0440\u043E\u0435\u043A\u0446\u0438\u044F \u0433\u0430\u0441\u0438\u0442\u0441\u044F -->\n <lib-column-view [config]=\"indexProvider.headerView\" [value]=\"indexProvider.name\">\n </lib-column-view>\n </th>\n\n <td mat-cell *matCellDef=\"let element;\"\n [style.width]=\"indexProvider.size?.width\"\n [style.min-width]=\"indexProvider.size?.minWidth\"\n [style.max-width]=\"indexProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"indexProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"indexProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"indexProvider.size?.paddingRight\"\n [ngClass]=\"_alignClass[indexProvider.COLUMN_NAME]\">\n {{ indexProvider.format(element.id + _indexPageOffset) }}\n </td>\n\n <td mat-footer-cell *matFooterCellDef\n [style.width]=\"indexProvider.size?.width\"\n [style.min-width]=\"indexProvider.size?.minWidth\"\n [style.max-width]=\"indexProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"indexProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"indexProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"indexProvider.size?.paddingRight\"\n [ngClass]=\"_alignClass[indexProvider.COLUMN_NAME]\">\n {{ totalRowProvider.totals.get(indexProvider.COLUMN_NAME) ?? '' }}\n </td>\n </ng-container>\n\n <!-- selection-column-->\n <ng-container [matColumnDef]=\"selectionProvider.COLUMN_NAME\" *ngIf=\"selectionProvider.isEnabled\">\n <th mat-header-cell *matHeaderCellDef\n [style.width]=\"selectionProvider.size?.width\"\n [style.min-width]=\"selectionProvider.size?.minWidth\"\n [style.max-width]=\"selectionProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"selectionProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"selectionProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"selectionProvider.size?.paddingRight\">\n <div class=\"flex-container\">\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\n [checked]=\"selectionProvider.selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selectionProvider.selection.hasValue() && !isAllSelected()\">\n </mat-checkbox>\n <div\n *ngIf=\"tableConfig.selectionCfg?.showSelectedCount && selectionProvider.selection.hasValue()\">\n {{ selectionProvider.selection.selected.length }}\n <span\n *ngIf=\"tableConfig.selectionCfg?.showTotalCount !== false\">/{{ paginatorState?.length ? paginatorState?.length : tableDataSource.filteredData.length }}</span>\n </div>\n\n <div *ngIf=\"selectionProvider.selection.hasValue() && tableConfig?.selectionCfg?.actions\">\n <ng-container *ngFor=\"let action of tableConfig.selectionCfg!.actions\">\n <button mat-icon-button\n (click)=\"emitSelectedRowsAction(action.action, selectionProvider.selection.selected)\"\n [matTooltip]=\"action.icon.tooltip || ''\"\n [matTooltipPosition]=\"action.icon.tooltipPosition || 'below'\"\n *ngIf=\"action.visible !== false\">\n <mat-icon [style.color]=\"action.icon.color\">\n {{ action.icon.name }}\n </mat-icon>\n </button>\n </ng-container>\n </div>\n </div>\n\n </th>\n <td mat-cell *matCellDef=\"let row\"\n (click)=\"$event.stopPropagation(); selectionProvider.selection.toggle(castSrc(row).rowSrc)\"\n [style.width]=\"selectionProvider.size?.width\"\n [style.min-width]=\"selectionProvider.size?.minWidth\"\n [style.max-width]=\"selectionProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"selectionProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"selectionProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"selectionProvider.size?.paddingRight\">\n <mat-checkbox (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selectionProvider.selection.toggle(castSrc(row).rowSrc) : null\"\n [checked]=\"selectionProvider.selection.isSelected(castSrc(row).rowSrc)\">\n </mat-checkbox>\n </td>\n\n <td mat-footer-cell *matFooterCellDef\n [style.width]=\"selectionProvider.size?.width\"\n [style.min-width]=\"selectionProvider.size?.minWidth\"\n [style.max-width]=\"selectionProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"selectionProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"selectionProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"selectionProvider.size?.paddingRight\">\n </td>\n </ng-container>\n\n <!-- action column -->\n <ng-container *ngIf=\"rowActionsProvider.isEnabled\" [matColumnDef]=\"rowActionsProvider.COLUMN_NAME\">\n <th mat-header-cell *matHeaderCellDef\n [style.width]=\"rowActionsProvider.size?.width\"\n [style.min-width]=\"rowActionsProvider.size?.minWidth\"\n [style.max-width]=\"rowActionsProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"rowActionsProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"rowActionsProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"rowActionsProvider.size?.paddingRight\"></th>\n <td mat-cell *matCellDef=\"let element\" (click)=\"$event.stopPropagation()\" style=\"cursor: default\"\n [style.width]=\"rowActionsProvider.size?.width\"\n [style.min-width]=\"rowActionsProvider.size?.minWidth\"\n [style.max-width]=\"rowActionsProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"rowActionsProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"rowActionsProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"rowActionsProvider.size?.paddingRight\">\n <ng-container *ngFor=\"let action of rowActionsProvider.actionView.get(element.id)\">\n <!-- action with dropdown menu -->\n <ng-container *ngIf=\"action.menu; else directAction\">\n <ng-container *ngIf=\"action.visible !== false\">\n <mat-menu #actionMenu=\"matMenu\">\n <ng-container *ngFor=\"let item of action.menu\">\n <button mat-menu-item\n *ngIf=\"item.visible !== false\"\n [disabled]=\"item.disabled === true\"\n (click)=\"emitMenuAction(item.action, element.rowSrc)\">\n <mat-icon *ngIf=\"item.icon\" [style.color]=\"item.icon.color\">\n {{ item.icon.name }}\n </mat-icon>\n <span>{{ item.text }}</span>\n </button>\n </ng-container>\n </mat-menu>\n <span *ngIf=\"action.icon.tooltip; else menuBtnPlain\"\n [matTooltip]=\"action.icon.tooltip\"\n [matTooltipClass]=\"action.icon.tooltipClass || ''\"\n [matTooltipPosition]=\"action.icon.tooltipPosition || 'below'\">\n <button mat-icon-button\n [matMenuTriggerFor]=\"actionMenu\"\n [disabled]=\"action.disabled === true\">\n <mat-icon [style.color]=\"action.icon.color\">\n {{ action.icon.name }}\n </mat-icon>\n </button>\n </span>\n <ng-template #menuBtnPlain>\n <button mat-icon-button [matMenuTriggerFor]=\"actionMenu\"\n [disabled]=\"action.disabled === true\">\n <mat-icon [style.color]=\"action.icon.color\">\n {{ action.icon.name }}\n </mat-icon>\n </button>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <!-- direct action (existing behavior) -->\n <ng-template #directAction>\n <ng-container *ngIf=\"action.visible !== false\">\n <span *ngIf=\"action.icon.tooltip; else directBtnPlain\"\n [matTooltip]=\"action.icon.tooltip\"\n [matTooltipClass]=\"action.icon.tooltipClass || ''\"\n [matTooltipPosition]=\"action.icon.tooltipPosition || 'below'\">\n <button mat-icon-button\n [disabled]=\"action.disabled === true\"\n (click)=\"emitRowAction(action.action, element.rowSrc, $event)\">\n <mat-icon [style.color]=\"action.icon.color\">\n {{ action.icon.name }}\n </mat-icon>\n </button>\n </span>\n <ng-template #directBtnPlain>\n <button mat-icon-button\n [disabled]=\"action.disabled === true\"\n (click)=\"emitRowAction(action.action, element.rowSrc, $event)\">\n <mat-icon [style.color]=\"action.icon.color\">\n {{ action.icon.name }}\n </mat-icon>\n </button>\n </ng-template>\n </ng-container>\n </ng-template>\n </ng-container>\n </td>\n\n <td mat-footer-cell *matFooterCellDef\n [style.width]=\"rowActionsProvider.size?.width\"\n [style.min-width]=\"rowActionsProvider.size?.minWidth\"\n [style.max-width]=\"rowActionsProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"rowActionsProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"rowActionsProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"rowActionsProvider.size?.paddingRight\">\n {{ totalRowProvider.totals.get(rowActionsProvider.COLUMN_NAME) ?? '' }}\n </td>\n </ng-container>\n\n <!-- value-icon-->\n <ng-container *ngFor=\"let columnConfig of tableConfig.columnsCfg\" [matColumnDef]=\"columnConfig.key\">\n\n <!-- if sortable column header -->\n <ng-container *ngIf=\"isFeatureEnabled(columnConfig.sort); else notSortable\">\n <th mat-header-cell *matHeaderCellDef [mat-sort-header]=\"columnConfig.key\"\n [arrowPosition]=\"columnConfig.sort?.position === 'start' ? 'before' : 'after'\"\n [style.width]=\"columnConfig.size?.width\"\n [style.min-width]=\"columnConfig.size?.minWidth\"\n [style.max-width]=\"columnConfig.size?.maxWidth\"\n [class.aur-col-fit]=\"columnConfig.size?.fit\"\n [style.--aur-cell-padding-left]=\"columnConfig.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"columnConfig.size?.paddingRight\"\n [ngClass]=\"_alignClass[columnConfig.key]\">\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\n </th>\n </ng-container>\n\n <!-- else not sortable -->\n <ng-template #notSortable>\n <th mat-header-cell *matHeaderCellDef\n [style.width]=\"columnConfig.size?.width\"\n [style.min-width]=\"columnConfig.size?.minWidth\"\n [style.max-width]=\"columnConfig.size?.maxWidth\"\n [class.aur-col-fit]=\"columnConfig.size?.fit\"\n [style.--aur-cell-padding-left]=\"columnConfig.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"columnConfig.size?.paddingRight\"\n [ngClass]=\"_alignClass[columnConfig.key]\">\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\n </th>\n </ng-template>\n\n <!-- header value-->\n <ng-template #headerValue>\n <lib-column-view [config]=\"columnConfig.headerView\"\n [value]=\"columnConfig.name\">\n </lib-column-view>\n </ng-template>\n\n <!-- column value \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u043A\u043E\u043B\u043E\u043D\u043E\u043A \u043D\u0443\u0436\u043D\u043E \u0447\u0435\u0440\u0435\u0437 getView(rowIndex, columnConfig.key) \u0442\u0430\u043C \u043D\u0430\u0445\u043E\u0434\u044F\u0442\u0441\u044F \u0443\u0436\u0435\n \u043F\u043E\u0434\u0433\u043E\u0442\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0434\u043B\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F-->\n <td mat-cell *matCellDef=\"let element;\"\n [style.width]=\"columnConfig.size?.width\"\n [style.min-width]=\"columnConfig.size?.minWidth\"\n [style.max-width]=\"columnConfig.size?.maxWidth\"\n [class.aur-col-fit]=\"columnConfig.size?.fit\"\n [style.--aur-cell-padding-left]=\"columnConfig.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"columnConfig.size?.paddingRight\"\n [ngClass]=\"_alignClass[columnConfig.key]\">\n <!-- \u043A\u043E\u043B\u043E\u043D\u043A\u0438 \u0431\u0435\u0437 valueView \u043C\u0438\u043D\u0443\u044E\u0442 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u044B \u044F\u0447\u0435\u0439\u043A\u0438: \u043B\u0451\u0433\u043A\u0438\u0439 span \u0434\u0435\u0448\u0435\u0432\u043B\u0435 \u043F\u0430\u0440\u044B \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u043E\u0432 \u0441 \u043E\u0431\u0451\u0440\u0442\u043A\u0430\u043C\u0438 -->\n <lib-column-view *ngIf=\"columnConfig.valueView; else plainCell\"\n [config]=\"tableView[element.id]?.get(columnConfig.key)\"\n [value]=\"element | dataPropertyGetter: columnConfig.key\">\n </lib-column-view>\n <ng-template #plainCell>\n <span class=\"aur-plain-cell\">{{ element | dataPropertyGetter: columnConfig.key }}</span>\n </ng-template>\n </td>\n\n <td mat-footer-cell *matFooterCellDef\n [style.width]=\"columnConfig.size?.width\"\n [style.min-width]=\"columnConfig.size?.minWidth\"\n [style.max-width]=\"columnConfig.size?.maxWidth\"\n [class.aur-col-fit]=\"columnConfig.size?.fit\"\n [style.--aur-cell-padding-left]=\"columnConfig.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"columnConfig.size?.paddingRight\"\n [ngClass]=\"_alignClass[columnConfig.key]\">\n {{ totalRowProvider.totals.get(columnConfig.key) ?? '' }}\n </td>\n\n </ng-container>\n\n <!-- extra header top cell (\u0434\u0435\u0444\u044B \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043C \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0438 \u043D\u0430\u043B\u0438\u0447\u0438\u0438 \u0448\u0430\u0431\u043B\u043E\u043D\u0430)-->\n <ng-container *ngIf=\"extraHeaderCellTopTemplate\">\n <ng-container *ngFor=\"let extraTopCell of _displayExtraHeaderTopCell; let index = index\"\n [matColumnDef]=\"extraTopCell\">\n <th mat-header-cell *matHeaderCellDef>\n <ng-container\n *ngTemplateOutlet=\"extraHeaderCellTopTemplate; context: {key: extraTopCell.replace(EXTRA_HEADER_CELL_TOP_SUFFIX, ''), index: index}\"></ng-container>\n </th>\n </ng-container>\n </ng-container>\n\n\n <!-- extra header bottom cell (\u0434\u0435\u0444\u044B \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043C \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0438 \u043D\u0430\u043B\u0438\u0447\u0438\u0438 \u0448\u0430\u0431\u043B\u043E\u043D\u0430)-->\n <ng-container *ngIf=\"extraHeaderCellBottomTemplate\">\n <ng-container *ngFor=\"let extraBottomCell of _displayExtraHeaderBottomCell; let index = index\"\n [matColumnDef]=\"extraBottomCell\">\n <th mat-header-cell *matHeaderCellDef>\n <ng-container\n *ngTemplateOutlet=\"extraHeaderCellBottomTemplate; context: {key: extraBottomCell.replace(EXTRA_HEADER_CELL_BOTTOM_SUFFIX, ''), index: index}\"></ng-container>\n </th>\n </ng-container>\n </ng-container>\n\n <!-- extra header top row-->\n <ng-container *ngIf=\"extraHeaderCellTopTemplate\">\n <tr mat-header-row *matHeaderRowDef=\"_displayExtraHeaderTopCell; sticky: this.tableConfig.stickyCfg?.header\"\n class=\"extra-header-top-row\">\n </tr>\n </ng-container>\n\n <!-- header row-->\n <tr mat-header-row *matHeaderRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.header\"\n [style]=\"_headerStyle\" [ngClass]=\"_headerClass\">\n </tr>\n\n <!-- extra header bottom row -->\n <ng-container *ngIf=\"extraHeaderCellBottomTemplate\">\n <tr mat-header-row\n *matHeaderRowDef=\"_displayExtraHeaderBottomCell; sticky: this.tableConfig.stickyCfg?.header\">\n </tr>\n </ng-container>\n\n <tr mat-row #rowLink\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop($event, row)\"\n *matRowDef=\"let row; columns: _displayColumns;\"\n (click)=\"handleRowClick(row)\"\n (keydown)=\"handleRowKeydown($event, row)\"\n [attr.tabindex]=\"_rowsInteractive ? 0 : null\"\n [attr.aria-current]=\"highlighted === row.rowSrc ? 'true' : null\"\n (mouseenter)=\"onRowEnter(row)\"\n (mouseleave)=\"onRowLeave(row)\"\n [ngClass]=\"rowNgClass(row)\"\n [style]=\"rowStyle(row)\">\n </tr>\n\n <!--expanded-row (\u0434\u0435\u0444 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043C \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0438 \u043D\u0430\u043B\u0438\u0447\u0438\u0438 \u0448\u0430\u0431\u043B\u043E\u043D\u0430)-->\n <ng-container *ngIf=\"extendedRowTemplate\">\n <ng-container matColumnDef=\"expandedRow\">\n <td mat-cell class=\"expanded-cell\" *matCellDef=\"let element\" [attr.colspan]=\"_displayColumns.length\"\n style=\"padding-right: 0!important;\">\n <div class=\"row-detail\"\n [@detailExpand]=\"element.rowSrc === highlighted ? expandedStateEnum.EXPANDED : expandedStateEnum.COLLAPSED\">\n <!-- timeline continuation -->\n <div *ngIf=\"timelineProvider.isEnabled\"\n class=\"aur-timeline-continuation\"\n [style.border-left-width.px]=\"timelineProvider.line.width\"\n [style.border-left-color]=\"_timelineGaps.get(element.id)?.bottomColor ?? timelineProvider.line.color\"\n [style.border-left-style]=\"_timelineGaps.get(element.id)?.bottomGap ? timelineProvider.line.gapStyle : timelineProvider.line.style\">\n </div>\n <!-- lazy-load of details -->\n <ng-container *ngIf=\"element.rowSrc === highlighted\">\n <ng-container *ngTemplateOutlet=\"extendedRowTemplate; context: {$implicit: element}\"></ng-container>\n </ng-container>\n </div>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"extendedRowTemplate\">\n <tr mat-row class=\"expanded-row\" *matRowDef=\"let row; columns: ['expandedRow']\"></tr>\n </ng-container>\n <!--expanded-row-->\n\n <ng-container *ngIf=\"totalRowProvider.isEnabled\">\n <tr mat-footer-row *matFooterRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.total\"\n [style]=\"_totalStyle\" [ngClass]=\"_totalClass\"\n [style.display]=\"isTotalRowVisible() ? null : 'none'\"></tr>\n </ng-container>\n\n <!--sub-footer-row (\u0434\u0435\u0444 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043C \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0438 \u043D\u0430\u043B\u0438\u0447\u0438\u0438 \u043A\u043E\u043D\u0442\u0435\u043D\u0442\u0430)-->\n <ng-container *ngIf=\"subFooterRowTemplate\">\n <ng-container matColumnDef=\"subFooterRow\">\n <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"_displayColumns.length\">\n <ng-container>\n <ng-content select=\"[ngxAurTableSubFooterRow]\"></ng-content>\n </ng-container>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"subFooterRowTemplate\">\n <tr mat-footer-row *matFooterRowDef=\"['subFooterRow']; sticky: this.tableConfig.stickyCfg?.subFooter\"></tr>\n </ng-container>\n <!-- sub-footer-row END-->\n </table>\n </div>\n </ng-container>\n\n <!-- Pagination -->\n @if (this.paginationProvider.isEnabled && !externalPaginator) {\n <mat-paginator [ngClass]=\"{'hidePaginator': isTableBodyHide}\"\n [pageSizeOptions]=\"paginationProvider.sizes\"\n [pageSize]=\"paginationProvider.size\"\n [style]=\"tableConfig?.paginationCfg?.style\"\n [length]=\"paginatorState?.length\"\n [pageIndex]=\"paginatorState?.pageIndex\"\n (page)=\"onPageChangeInternal($event)\"\n [showFirstLastButtons]=\"tableConfig.paginationCfg?.showFirstLastButtons !== false\">\n </mat-paginator>\n }\n</div>\n", styles: ["@charset \"UTF-8\";.aur-mat-table{display:flex;flex-direction:column}.aur-mat-table.sticky-pagination{height:100%}.aur-mat-table table{border-collapse:collapse}.aur-mat-table .table-container{position:relative}.aur-mat-table .table-container.sticky-pagination{flex-grow:1;overflow:auto}.aur-mat-table th,.aur-mat-table td{padding-right:var(--aur-cell-padding-right, 4px)!important;padding-left:var(--aur-cell-padding-left, 4px)!important}.aur-mat-table .new-color td.mat-mdc-cell,.aur-mat-table .new-color td.mat-mdc-footer-cell{color:inherit}.aur-mat-table mat-form-field{width:100%}.aur-mat-table th.aur-align-center,.aur-mat-table td.aur-align-center{text-align:center}.aur-mat-table th.aur-align-right,.aur-mat-table td.aur-align-right{text-align:right}.aur-mat-table th.aur-align-center ::ng-deep .mat-sort-header-container{justify-content:center}.aur-mat-table th.aur-align-right ::ng-deep .mat-sort-header-container{justify-content:flex-end}.aur-mat-table .aur-col-fit{width:1%;white-space:nowrap}.aur-mat-table .pointer{cursor:pointer}.aur-mat-table .flex-container{display:flex;align-items:center}.aur-mat-table .aur-plain-cell{margin-left:4px}.aur-mat-table .expanded-row{height:0}.aur-mat-table .expanded-row .expanded-cell{padding-right:0!important;padding-left:0!important}.aur-mat-table .row-detail{overflow:hidden;display:flex}.aur-mat-table .clear-bottom-border{border-bottom:none}.aur-mat-table .table-settings-button{position:absolute;right:4px;top:12px;cursor:pointer;border-radius:4px;padding-bottom:2px;padding-top:2px;z-index:9999999999}.aur-mat-table table.aur-has-header-button .mat-mdc-header-row th:last-child{padding-right:var(--aur-last-header-padding-right, 25px)!important}.aur-mat-table .search-container{display:flex;gap:8px;align-items:center}.aur-mat-table .extra-header-top-row th{border-bottom:none}.aur-mat-table .drag-icon{cursor:grab}.hide-table-body tr:not(.mat-mdc-header-row){display:none!important}.hidePaginator{display:none}.aur-mat-table .drag-column{padding-left:8px;padding-right:8px;width:35px}.aur-mat-table .aur-timeline-cell{width:40px;min-width:40px;max-width:40px;padding:0!important}.aur-mat-table .aur-timeline-marker-container{display:flex;flex-direction:column;align-items:center;height:100%;min-height:48px}.aur-mat-table .aur-timeline-line{flex:1;min-height:8px}.aur-mat-table .aur-timeline-marker-default{width:12px;height:12px;border-radius:50%;flex-shrink:0}.aur-mat-table .aur-timeline-continuation{border-left-style:solid;align-self:stretch;margin-left:20px;flex-shrink:0}.aur-mat-table tr.mat-mdc-row:focus-visible{outline:2px solid currentColor;outline-offset:-2px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i3$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i3$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i3$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i3$1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i3$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i3$1.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i3$1.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { kind: "directive", type: i3$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i3$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i3$1.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i3$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i3$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i3$1.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { kind: "component", type: i4.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i8.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i8.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i10.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i11.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i11.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i11.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: ColumnViewComponent, selector: "lib-column-view", inputs: ["config", "value"] }, { kind: "component", type: IconViewComponent, selector: "lib-icon-view", inputs: ["view"] }, { kind: "pipe", type: DataPropertyGetterPipe, name: "dataPropertyGetter" }], animations: [
1826
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: NgxAurMatTableComponent, isStandalone: false, selector: "aur-mat-table", inputs: { displayColumns: "displayColumns", extraHeaderCellTopTemplate: "extraHeaderCellTopTemplate", extraHeaderCellBottomTemplate: "extraHeaderCellBottomTemplate", tableConfig: "tableConfig", tableData: "tableData", extendedRowTemplate: "extendedRowTemplate", timelineMarkerTemplate: "timelineMarkerTemplate", paginatorState: "paginatorState", pageSource: "pageSource", externalPaginator: "externalPaginator", isTableBodyHide: "isTableBodyHide", highlight: "highlight" }, outputs: { sort: "sort", pageChange: "pageChange", rowAction: "rowAction", selectChange: "selectChange", selectAdded: "selectAdded", selectRemoved: "selectRemoved", selectedRowsAction: "selectedRowsAction", selectionModel: "selectionModel", rowClick: "rowClick", loadingChange: "loadingChange", pageError: "pageError", pageLoaded: "pageLoaded", filterChange: "filterChange", columnOffsets: "columnOffsets", headerButton: "headerButton" }, queries: [{ propertyName: "subFooterRowTemplate", first: true, predicate: NgxTableSubFooterRowDirective, descendants: true }, { propertyName: "cellDefs", predicate: NgxAurCellDefDirective, descendants: true }], viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true, read: ElementRef }, { propertyName: "matPaginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "matSort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "rows", predicate: ["rowLink"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div class=\"aur-mat-table\"\n [ngClass]=\"{'sticky-pagination': paginationProvider.isEnabled && !externalPaginator && paginationProvider.position === 'sticky'}\">\n <ng-container>\n <!-- Filter -->\n <ng-container *ngIf=\"isFeatureEnabled(tableConfig.filterCfg)\">\n <div class=\"search-container\">\n <ng-container>\n <ng-content select=\"[ngxAurTableSearchPrefix]\"></ng-content>\n </ng-container>\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <mat-label>{{ tableConfig.filterCfg?.label }}</mat-label>\n <input matInput (keyup)=\"applySearchFilter($event)\"\n placeholder=\"{{tableConfig.filterCfg?.placeholder}}\"\n style=\"font-size: 18px;\">\n <mat-icon matPrefix>search</mat-icon>\n </mat-form-field>\n <ng-container>\n <ng-content select=\"[ngxAurTableSearchSuffix]\"></ng-content>\n </ng-container>\n </div>\n </ng-container>\n\n\n <div class=\"table-container\"\n [ngClass]=\"{'sticky-pagination': paginationProvider.isEnabled && !externalPaginator && paginationProvider.position === 'sticky'}\">\n <mat-icon *ngIf=\"headerButtonProvider.isEnabled\"\n class=\"table-settings-button\"\n [style.color]=\"headerButtonProvider.color\"\n [style.background-color]=\"headerButtonProvider.background\"\n (click)=\"headerButton.emit($event)\">\n {{ headerButtonProvider.icon }}\n </mat-icon>\n\n <!-- Table -->\n <table #table mat-table matSort\n [matSortActive]=\"tableConfig.sortCfg?.active ?? ''\"\n [matSortDirection]=\"tableConfig.sortCfg?.direction ?? ''\"\n [trackBy]=\"trackByRow\"\n [multiTemplateDataRows]=\"extendedRowTemplate !== null\"\n [dataSource]=\"tableDataSource\"\n (matSortChange)=\"sortTable($event)\"\n [style.height]=\"tableConfig.tableViewCfg?.height\"\n [style.max-height]=\"tableConfig.tableViewCfg?.maxHeight\"\n [style.min-height]=\"tableConfig.tableViewCfg?.minHeight\"\n [class.aur-has-header-button]=\"headerButtonProvider.isEnabled\"\n [style.--aur-cell-padding-left]=\"tableConfig.tableViewCfg?.cellPaddingLeft\"\n [style.--aur-cell-padding-right]=\"tableConfig.tableViewCfg?.cellPaddingRight\"\n [ngClass]=\"{'hide-table-body': isTableBodyHide}\">\n\n\n <!-- timeline-column-->\n <ng-container *ngIf=\"timelineProvider.isEnabled\" [matColumnDef]=\"timelineProvider.COLUMN_NAME\">\n <th mat-header-cell *matHeaderCellDef class=\"aur-timeline-cell\"\n [style.width]=\"timelineProvider.size?.width\"\n [style.min-width]=\"timelineProvider.size?.minWidth\"\n [style.max-width]=\"timelineProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"timelineProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"timelineProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"timelineProvider.size?.paddingRight\"></th>\n <td mat-cell *matCellDef=\"let element\" class=\"aur-timeline-cell\"\n [style.width]=\"timelineProvider.size?.width\"\n [style.min-width]=\"timelineProvider.size?.minWidth\"\n [style.max-width]=\"timelineProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"timelineProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"timelineProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"timelineProvider.size?.paddingRight\">\n <div class=\"aur-timeline-marker-container\">\n\n <div class=\"aur-timeline-line\"\n *ngIf=\"element.id !== _timelineFirstId\"\n [style.border-left-width.px]=\"timelineProvider.line.width\"\n [style.border-left-color]=\"_timelineGaps.get(element.id)?.topColor ?? timelineProvider.line.color\"\n [style.border-left-style]=\"_timelineGaps.get(element.id)?.topGap ? timelineProvider.line.gapStyle : timelineProvider.line.style\">\n </div>\n\n <ng-container *ngIf=\"timelineMarkerTemplate; else defaultMarker\">\n <ng-container *ngTemplateOutlet=\"timelineMarkerTemplate; context: {$implicit: element}\"></ng-container>\n </ng-container>\n <ng-template #defaultMarker>\n <div class=\"aur-timeline-marker-default\"\n [style.background-color]=\"timelineProvider.markerColor\">\n </div>\n </ng-template>\n\n <div class=\"aur-timeline-line\"\n *ngIf=\"element.id !== _timelineLastId\"\n [style.border-left-width.px]=\"timelineProvider.line.width\"\n [style.border-left-color]=\"_timelineGaps.get(element.id)?.bottomColor ?? timelineProvider.line.color\"\n [style.border-left-style]=\"_timelineGaps.get(element.id)?.bottomGap ? timelineProvider.line.gapStyle : timelineProvider.line.style\">\n </div>\n\n </div>\n </td>\n <td mat-footer-cell *matFooterCellDef class=\"aur-timeline-cell\"\n [style.width]=\"timelineProvider.size?.width\"\n [style.min-width]=\"timelineProvider.size?.minWidth\"\n [style.max-width]=\"timelineProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"timelineProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"timelineProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"timelineProvider.size?.paddingRight\"></td>\n </ng-container>\n\n <!-- drag-column-->\n <ng-container *ngIf=\"dragDropProvider.isEnabled && dragDropProvider.draggable\" [matColumnDef]=\"dragDropProvider.COLUMN_NAME\">\n\n <th mat-header-cell *matHeaderCellDef\n [style.width]=\"dragDropProvider.size?.width\"\n [style.min-width]=\"dragDropProvider.size?.minWidth\"\n [style.max-width]=\"dragDropProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"dragDropProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"dragDropProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"dragDropProvider.size?.paddingRight\">\n </th>\n\n <td mat-cell *matCellDef=\"let element;\" class=\"drag-column\"\n [style.width]=\"dragDropProvider.size?.width\"\n [style.min-width]=\"dragDropProvider.size?.minWidth\"\n [style.max-width]=\"dragDropProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"dragDropProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"dragDropProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"dragDropProvider.size?.paddingRight\">\n <lib-icon-view draggable=\"true\"\n class=\"drag-icon\"\n [view]=\"dragDropProvider.dragIconView\"\n (dragstart)=\"onDragStart($event, element)\"\n (dragend)=\"onDragEnd($event, element)\">\n </lib-icon-view>\n\n </td>\n\n <td mat-footer-cell *matFooterCellDef\n [style.width]=\"dragDropProvider.size?.width\"\n [style.min-width]=\"dragDropProvider.size?.minWidth\"\n [style.max-width]=\"dragDropProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"dragDropProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"dragDropProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"dragDropProvider.size?.paddingRight\">\n </td>\n </ng-container>\n\n <!-- index-column-->\n <ng-container *ngIf=\"indexProvider.isEnabled\" [matColumnDef]=\"indexProvider.COLUMN_NAME\">\n\n <th mat-header-cell *matHeaderCellDef\n [style.width]=\"indexProvider.size?.width\"\n [style.min-width]=\"indexProvider.size?.minWidth\"\n [style.max-width]=\"indexProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"indexProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"indexProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"indexProvider.size?.paddingRight\"\n [ngClass]=\"_alignClass[indexProvider.COLUMN_NAME]\">\n <!-- \u0438\u043C\u044F \u043F\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044F \u0447\u0435\u0440\u0435\u0437 [value]: \u0443 lib-column-view \u043D\u0435\u0442 ng-content, \u043F\u0440\u043E\u0435\u043A\u0446\u0438\u044F \u0433\u0430\u0441\u0438\u0442\u0441\u044F -->\n <lib-column-view [config]=\"indexProvider.headerView\" [value]=\"indexProvider.name\">\n </lib-column-view>\n </th>\n\n <td mat-cell *matCellDef=\"let element;\"\n [style.width]=\"indexProvider.size?.width\"\n [style.min-width]=\"indexProvider.size?.minWidth\"\n [style.max-width]=\"indexProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"indexProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"indexProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"indexProvider.size?.paddingRight\"\n [ngClass]=\"_alignClass[indexProvider.COLUMN_NAME]\">\n {{ indexProvider.format(element.id + _indexPageOffset) }}\n </td>\n\n <td mat-footer-cell *matFooterCellDef\n [style.width]=\"indexProvider.size?.width\"\n [style.min-width]=\"indexProvider.size?.minWidth\"\n [style.max-width]=\"indexProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"indexProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"indexProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"indexProvider.size?.paddingRight\"\n [ngClass]=\"_alignClass[indexProvider.COLUMN_NAME]\">\n {{ totalRowProvider.totals.get(indexProvider.COLUMN_NAME) ?? '' }}\n </td>\n </ng-container>\n\n <!-- selection-column-->\n <ng-container [matColumnDef]=\"selectionProvider.COLUMN_NAME\" *ngIf=\"selectionProvider.isEnabled\">\n <th mat-header-cell *matHeaderCellDef\n [style.width]=\"selectionProvider.size?.width\"\n [style.min-width]=\"selectionProvider.size?.minWidth\"\n [style.max-width]=\"selectionProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"selectionProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"selectionProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"selectionProvider.size?.paddingRight\">\n <div class=\"flex-container\">\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\n [checked]=\"selectionProvider.selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selectionProvider.selection.hasValue() && !isAllSelected()\">\n </mat-checkbox>\n <div\n *ngIf=\"tableConfig.selectionCfg?.showSelectedCount && selectionProvider.selection.hasValue()\">\n {{ selectionProvider.selection.selected.length }}\n <span\n *ngIf=\"tableConfig.selectionCfg?.showTotalCount !== false\">/{{ paginatorState?.length ? paginatorState?.length : tableDataSource.filteredData.length }}</span>\n </div>\n\n <div *ngIf=\"selectionProvider.selection.hasValue() && tableConfig?.selectionCfg?.actions\">\n <ng-container *ngFor=\"let action of tableConfig.selectionCfg!.actions\">\n <button mat-icon-button\n (click)=\"emitSelectedRowsAction(action.action, selectionProvider.selection.selected)\"\n [matTooltip]=\"action.icon.tooltip || ''\"\n [matTooltipPosition]=\"action.icon.tooltipPosition || 'below'\"\n *ngIf=\"action.visible !== false\">\n <mat-icon [style.color]=\"action.icon.color\">\n {{ action.icon.name }}\n </mat-icon>\n </button>\n </ng-container>\n </div>\n </div>\n\n </th>\n <td mat-cell *matCellDef=\"let row\"\n (click)=\"$event.stopPropagation(); selectionProvider.selection.toggle(castSrc(row).rowSrc)\"\n [style.width]=\"selectionProvider.size?.width\"\n [style.min-width]=\"selectionProvider.size?.minWidth\"\n [style.max-width]=\"selectionProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"selectionProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"selectionProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"selectionProvider.size?.paddingRight\">\n <mat-checkbox (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selectionProvider.selection.toggle(castSrc(row).rowSrc) : null\"\n [checked]=\"selectionProvider.selection.isSelected(castSrc(row).rowSrc)\">\n </mat-checkbox>\n </td>\n\n <td mat-footer-cell *matFooterCellDef\n [style.width]=\"selectionProvider.size?.width\"\n [style.min-width]=\"selectionProvider.size?.minWidth\"\n [style.max-width]=\"selectionProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"selectionProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"selectionProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"selectionProvider.size?.paddingRight\">\n </td>\n </ng-container>\n\n <!-- action column -->\n <ng-container *ngIf=\"rowActionsProvider.isEnabled\" [matColumnDef]=\"rowActionsProvider.COLUMN_NAME\">\n <th mat-header-cell *matHeaderCellDef\n [style.width]=\"rowActionsProvider.size?.width\"\n [style.min-width]=\"rowActionsProvider.size?.minWidth\"\n [style.max-width]=\"rowActionsProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"rowActionsProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"rowActionsProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"rowActionsProvider.size?.paddingRight\"></th>\n <td mat-cell *matCellDef=\"let element\" (click)=\"$event.stopPropagation()\" style=\"cursor: default\"\n [style.width]=\"rowActionsProvider.size?.width\"\n [style.min-width]=\"rowActionsProvider.size?.minWidth\"\n [style.max-width]=\"rowActionsProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"rowActionsProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"rowActionsProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"rowActionsProvider.size?.paddingRight\">\n <ng-container *ngFor=\"let action of rowActionsProvider.actionView.get(element.id)\">\n <!-- action with dropdown menu -->\n <ng-container *ngIf=\"action.menu; else directAction\">\n <ng-container *ngIf=\"action.visible !== false\">\n <mat-menu #actionMenu=\"matMenu\">\n <ng-container *ngFor=\"let item of action.menu\">\n <button mat-menu-item\n *ngIf=\"item.visible !== false\"\n [disabled]=\"item.disabled === true\"\n (click)=\"emitMenuAction(item.action, element.rowSrc)\">\n <mat-icon *ngIf=\"item.icon\" [style.color]=\"item.icon.color\">\n {{ item.icon.name }}\n </mat-icon>\n <span>{{ item.text }}</span>\n </button>\n </ng-container>\n </mat-menu>\n <span *ngIf=\"action.icon.tooltip; else menuBtnPlain\"\n [matTooltip]=\"action.icon.tooltip\"\n [matTooltipClass]=\"action.icon.tooltipClass || ''\"\n [matTooltipPosition]=\"action.icon.tooltipPosition || 'below'\">\n <button mat-icon-button\n [matMenuTriggerFor]=\"actionMenu\"\n [disabled]=\"action.disabled === true\">\n <mat-icon [style.color]=\"action.icon.color\">\n {{ action.icon.name }}\n </mat-icon>\n </button>\n </span>\n <ng-template #menuBtnPlain>\n <button mat-icon-button [matMenuTriggerFor]=\"actionMenu\"\n [disabled]=\"action.disabled === true\">\n <mat-icon [style.color]=\"action.icon.color\">\n {{ action.icon.name }}\n </mat-icon>\n </button>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <!-- direct action (existing behavior) -->\n <ng-template #directAction>\n <ng-container *ngIf=\"action.visible !== false\">\n <span *ngIf=\"action.icon.tooltip; else directBtnPlain\"\n [matTooltip]=\"action.icon.tooltip\"\n [matTooltipClass]=\"action.icon.tooltipClass || ''\"\n [matTooltipPosition]=\"action.icon.tooltipPosition || 'below'\">\n <button mat-icon-button\n [disabled]=\"action.disabled === true\"\n (click)=\"emitRowAction(action.action, element.rowSrc, $event)\">\n <mat-icon [style.color]=\"action.icon.color\">\n {{ action.icon.name }}\n </mat-icon>\n </button>\n </span>\n <ng-template #directBtnPlain>\n <button mat-icon-button\n [disabled]=\"action.disabled === true\"\n (click)=\"emitRowAction(action.action, element.rowSrc, $event)\">\n <mat-icon [style.color]=\"action.icon.color\">\n {{ action.icon.name }}\n </mat-icon>\n </button>\n </ng-template>\n </ng-container>\n </ng-template>\n </ng-container>\n </td>\n\n <td mat-footer-cell *matFooterCellDef\n [style.width]=\"rowActionsProvider.size?.width\"\n [style.min-width]=\"rowActionsProvider.size?.minWidth\"\n [style.max-width]=\"rowActionsProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"rowActionsProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"rowActionsProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"rowActionsProvider.size?.paddingRight\">\n {{ totalRowProvider.totals.get(rowActionsProvider.COLUMN_NAME) ?? '' }}\n </td>\n </ng-container>\n\n <!-- value-icon-->\n <ng-container *ngFor=\"let columnConfig of tableConfig.columnsCfg\" [matColumnDef]=\"columnConfig.key\">\n\n <!-- if sortable column header -->\n <ng-container *ngIf=\"isFeatureEnabled(columnConfig.sort); else notSortable\">\n <th mat-header-cell *matHeaderCellDef [mat-sort-header]=\"columnConfig.key\"\n [arrowPosition]=\"columnConfig.sort?.position === 'start' ? 'before' : 'after'\"\n [style.width]=\"columnConfig.size?.width\"\n [style.min-width]=\"columnConfig.size?.minWidth\"\n [style.max-width]=\"columnConfig.size?.maxWidth\"\n [class.aur-col-fit]=\"columnConfig.size?.fit\"\n [style.--aur-cell-padding-left]=\"columnConfig.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"columnConfig.size?.paddingRight\"\n [ngClass]=\"_alignClass[columnConfig.key]\">\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\n </th>\n </ng-container>\n\n <!-- else not sortable -->\n <ng-template #notSortable>\n <th mat-header-cell *matHeaderCellDef\n [style.width]=\"columnConfig.size?.width\"\n [style.min-width]=\"columnConfig.size?.minWidth\"\n [style.max-width]=\"columnConfig.size?.maxWidth\"\n [class.aur-col-fit]=\"columnConfig.size?.fit\"\n [style.--aur-cell-padding-left]=\"columnConfig.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"columnConfig.size?.paddingRight\"\n [ngClass]=\"_alignClass[columnConfig.key]\">\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\n </th>\n </ng-template>\n\n <!-- header value-->\n <ng-template #headerValue>\n <lib-column-view [config]=\"columnConfig.headerView\"\n [value]=\"columnConfig.name\">\n </lib-column-view>\n </ng-template>\n\n <!-- column value \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u043A\u043E\u043B\u043E\u043D\u043E\u043A \u043D\u0443\u0436\u043D\u043E \u0447\u0435\u0440\u0435\u0437 getView(rowIndex, columnConfig.key) \u0442\u0430\u043C \u043D\u0430\u0445\u043E\u0434\u044F\u0442\u0441\u044F \u0443\u0436\u0435\n \u043F\u043E\u0434\u0433\u043E\u0442\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0434\u043B\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F-->\n <td mat-cell *matCellDef=\"let element;\"\n [style.width]=\"columnConfig.size?.width\"\n [style.min-width]=\"columnConfig.size?.minWidth\"\n [style.max-width]=\"columnConfig.size?.maxWidth\"\n [class.aur-col-fit]=\"columnConfig.size?.fit\"\n [style.--aur-cell-padding-left]=\"columnConfig.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"columnConfig.size?.paddingRight\"\n [ngClass]=\"_alignClass[columnConfig.key]\">\n <!-- \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u0439 \u0448\u0430\u0431\u043B\u043E\u043D \u044F\u0447\u0435\u0439\u043A\u0438 (ngxAurCellDef) \u0438\u043C\u0435\u0435\u0442 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442 \u043D\u0430\u0434 valueView -->\n <ng-container *ngIf=\"_cellTemplates.get(columnConfig.key) as cellTpl; else builtinCell\">\n <ng-container *ngTemplateOutlet=\"cellTpl; context: cellCtx(element, columnConfig.key)\"></ng-container>\n </ng-container>\n <ng-template #builtinCell>\n <!-- \u043A\u043E\u043B\u043E\u043D\u043A\u0438 \u0431\u0435\u0437 valueView \u043C\u0438\u043D\u0443\u044E\u0442 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u044B \u044F\u0447\u0435\u0439\u043A\u0438: \u043B\u0451\u0433\u043A\u0438\u0439 span \u0434\u0435\u0448\u0435\u0432\u043B\u0435 \u043F\u0430\u0440\u044B \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u043E\u0432 \u0441 \u043E\u0431\u0451\u0440\u0442\u043A\u0430\u043C\u0438 -->\n <lib-column-view *ngIf=\"columnConfig.valueView; else plainCell\"\n [config]=\"tableView[element.id]?.get(columnConfig.key)\"\n [value]=\"element | dataPropertyGetter: columnConfig.key\">\n </lib-column-view>\n <ng-template #plainCell>\n <span class=\"aur-plain-cell\">{{ element | dataPropertyGetter: columnConfig.key }}</span>\n </ng-template>\n </ng-template>\n </td>\n\n <td mat-footer-cell *matFooterCellDef\n [style.width]=\"columnConfig.size?.width\"\n [style.min-width]=\"columnConfig.size?.minWidth\"\n [style.max-width]=\"columnConfig.size?.maxWidth\"\n [class.aur-col-fit]=\"columnConfig.size?.fit\"\n [style.--aur-cell-padding-left]=\"columnConfig.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"columnConfig.size?.paddingRight\"\n [ngClass]=\"_alignClass[columnConfig.key]\">\n {{ totalRowProvider.totals.get(columnConfig.key) ?? '' }}\n </td>\n\n </ng-container>\n\n <!-- extra header top cell (\u0434\u0435\u0444\u044B \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043C \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0438 \u043D\u0430\u043B\u0438\u0447\u0438\u0438 \u0448\u0430\u0431\u043B\u043E\u043D\u0430)-->\n <ng-container *ngIf=\"extraHeaderCellTopTemplate\">\n <ng-container *ngFor=\"let extraTopCell of _displayExtraHeaderTopCell; let index = index\"\n [matColumnDef]=\"extraTopCell\">\n <th mat-header-cell *matHeaderCellDef>\n <ng-container\n *ngTemplateOutlet=\"extraHeaderCellTopTemplate; context: {key: extraTopCell.replace(EXTRA_HEADER_CELL_TOP_SUFFIX, ''), index: index}\"></ng-container>\n </th>\n </ng-container>\n </ng-container>\n\n\n <!-- extra header bottom cell (\u0434\u0435\u0444\u044B \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043C \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0438 \u043D\u0430\u043B\u0438\u0447\u0438\u0438 \u0448\u0430\u0431\u043B\u043E\u043D\u0430)-->\n <ng-container *ngIf=\"extraHeaderCellBottomTemplate\">\n <ng-container *ngFor=\"let extraBottomCell of _displayExtraHeaderBottomCell; let index = index\"\n [matColumnDef]=\"extraBottomCell\">\n <th mat-header-cell *matHeaderCellDef>\n <ng-container\n *ngTemplateOutlet=\"extraHeaderCellBottomTemplate; context: {key: extraBottomCell.replace(EXTRA_HEADER_CELL_BOTTOM_SUFFIX, ''), index: index}\"></ng-container>\n </th>\n </ng-container>\n </ng-container>\n\n <!-- extra header top row-->\n <ng-container *ngIf=\"extraHeaderCellTopTemplate\">\n <tr mat-header-row *matHeaderRowDef=\"_displayExtraHeaderTopCell; sticky: this.tableConfig.stickyCfg?.header\"\n class=\"extra-header-top-row\">\n </tr>\n </ng-container>\n\n <!-- header row-->\n <tr mat-header-row *matHeaderRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.header\"\n [style]=\"_headerStyle\" [ngClass]=\"_headerClass\">\n </tr>\n\n <!-- extra header bottom row -->\n <ng-container *ngIf=\"extraHeaderCellBottomTemplate\">\n <tr mat-header-row\n *matHeaderRowDef=\"_displayExtraHeaderBottomCell; sticky: this.tableConfig.stickyCfg?.header\">\n </tr>\n </ng-container>\n\n <tr mat-row #rowLink\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop($event, row)\"\n *matRowDef=\"let row; columns: _displayColumns;\"\n (click)=\"handleRowClick(row)\"\n (keydown)=\"handleRowKeydown($event, row)\"\n [attr.tabindex]=\"_rowsInteractive ? 0 : null\"\n [attr.aria-current]=\"highlighted === row.rowSrc ? 'true' : null\"\n (mouseenter)=\"onRowEnter(row)\"\n (mouseleave)=\"onRowLeave(row)\"\n [ngClass]=\"rowNgClass(row)\"\n [style]=\"rowStyle(row)\">\n </tr>\n\n <!--expanded-row (\u0434\u0435\u0444 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043C \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0438 \u043D\u0430\u043B\u0438\u0447\u0438\u0438 \u0448\u0430\u0431\u043B\u043E\u043D\u0430)-->\n <ng-container *ngIf=\"extendedRowTemplate\">\n <ng-container matColumnDef=\"expandedRow\">\n <td mat-cell class=\"expanded-cell\" *matCellDef=\"let element\" [attr.colspan]=\"_displayColumns.length\"\n style=\"padding-right: 0!important;\">\n <div class=\"row-detail\"\n [@detailExpand]=\"element.rowSrc === highlighted ? expandedStateEnum.EXPANDED : expandedStateEnum.COLLAPSED\">\n <!-- timeline continuation -->\n <div *ngIf=\"timelineProvider.isEnabled\"\n class=\"aur-timeline-continuation\"\n [style.border-left-width.px]=\"timelineProvider.line.width\"\n [style.border-left-color]=\"_timelineGaps.get(element.id)?.bottomColor ?? timelineProvider.line.color\"\n [style.border-left-style]=\"_timelineGaps.get(element.id)?.bottomGap ? timelineProvider.line.gapStyle : timelineProvider.line.style\">\n </div>\n <!-- lazy-load of details -->\n <ng-container *ngIf=\"element.rowSrc === highlighted\">\n <ng-container *ngTemplateOutlet=\"extendedRowTemplate; context: {$implicit: element}\"></ng-container>\n </ng-container>\n </div>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"extendedRowTemplate\">\n <tr mat-row class=\"expanded-row\" *matRowDef=\"let row; columns: ['expandedRow']\"></tr>\n </ng-container>\n <!--expanded-row-->\n\n <ng-container *ngIf=\"totalRowProvider.isEnabled\">\n <tr mat-footer-row *matFooterRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.total\"\n [style]=\"_totalStyle\" [ngClass]=\"_totalClass\"\n [style.display]=\"isTotalRowVisible() ? null : 'none'\"></tr>\n </ng-container>\n\n <!--sub-footer-row (\u0434\u0435\u0444 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043C \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0438 \u043D\u0430\u043B\u0438\u0447\u0438\u0438 \u043A\u043E\u043D\u0442\u0435\u043D\u0442\u0430)-->\n <ng-container *ngIf=\"subFooterRowTemplate\">\n <ng-container matColumnDef=\"subFooterRow\">\n <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"_displayColumns.length\">\n <ng-container>\n <ng-content select=\"[ngxAurTableSubFooterRow]\"></ng-content>\n </ng-container>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"subFooterRowTemplate\">\n <tr mat-footer-row *matFooterRowDef=\"['subFooterRow']; sticky: this.tableConfig.stickyCfg?.subFooter\"></tr>\n </ng-container>\n <!-- sub-footer-row END-->\n </table>\n </div>\n </ng-container>\n\n <!-- Pagination -->\n @if (this.paginationProvider.isEnabled && !externalPaginator) {\n <mat-paginator [ngClass]=\"{'hidePaginator': isTableBodyHide}\"\n [pageSizeOptions]=\"paginationProvider.sizes\"\n [pageSize]=\"paginationProvider.size\"\n [style]=\"tableConfig?.paginationCfg?.style\"\n [length]=\"paginatorState?.length\"\n [pageIndex]=\"paginatorState?.pageIndex\"\n (page)=\"onPageChangeInternal($event)\"\n [showFirstLastButtons]=\"tableConfig.paginationCfg?.showFirstLastButtons !== false\">\n </mat-paginator>\n }\n</div>\n", styles: ["@charset \"UTF-8\";.aur-mat-table{display:flex;flex-direction:column}.aur-mat-table.sticky-pagination{height:100%}.aur-mat-table table{border-collapse:collapse}.aur-mat-table .table-container{position:relative}.aur-mat-table .table-container.sticky-pagination{flex-grow:1;overflow:auto}.aur-mat-table th,.aur-mat-table td{padding-right:var(--aur-cell-padding-right, 4px)!important;padding-left:var(--aur-cell-padding-left, 4px)!important}.aur-mat-table .new-color td.mat-mdc-cell,.aur-mat-table .new-color td.mat-mdc-footer-cell{color:inherit}.aur-mat-table mat-form-field{width:100%}.aur-mat-table th.aur-align-center,.aur-mat-table td.aur-align-center{text-align:center}.aur-mat-table th.aur-align-right,.aur-mat-table td.aur-align-right{text-align:right}.aur-mat-table th.aur-align-center ::ng-deep .mat-sort-header-container{justify-content:center}.aur-mat-table th.aur-align-right ::ng-deep .mat-sort-header-container{justify-content:flex-end}.aur-mat-table .aur-col-fit{width:1%;white-space:nowrap}.aur-mat-table .pointer{cursor:pointer}.aur-mat-table .flex-container{display:flex;align-items:center}.aur-mat-table .aur-plain-cell{margin-left:4px}.aur-mat-table .expanded-row{height:0}.aur-mat-table .expanded-row .expanded-cell{padding-right:0!important;padding-left:0!important}.aur-mat-table .row-detail{overflow:hidden;display:flex}.aur-mat-table .clear-bottom-border{border-bottom:none}.aur-mat-table .table-settings-button{position:absolute;right:4px;top:12px;cursor:pointer;border-radius:4px;padding-bottom:2px;padding-top:2px;z-index:9999999999}.aur-mat-table table.aur-has-header-button .mat-mdc-header-row th:last-child{padding-right:var(--aur-last-header-padding-right, 25px)!important}.aur-mat-table .search-container{display:flex;gap:8px;align-items:center}.aur-mat-table .extra-header-top-row th{border-bottom:none}.aur-mat-table .drag-icon{cursor:grab}.hide-table-body tr:not(.mat-mdc-header-row){display:none!important}.hidePaginator{display:none}.aur-mat-table .drag-column{padding-left:8px;padding-right:8px;width:35px}.aur-mat-table .aur-timeline-cell{width:40px;min-width:40px;max-width:40px;padding:0!important}.aur-mat-table .aur-timeline-marker-container{display:flex;flex-direction:column;align-items:center;height:100%;min-height:48px}.aur-mat-table .aur-timeline-line{flex:1;min-height:8px}.aur-mat-table .aur-timeline-marker-default{width:12px;height:12px;border-radius:50%;flex-shrink:0}.aur-mat-table .aur-timeline-continuation{border-left-style:solid;align-self:stretch;margin-left:20px;flex-shrink:0}.aur-mat-table tr.mat-mdc-row:focus-visible{outline:2px solid currentColor;outline-offset:-2px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i3$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i3$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i3$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i3$1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i3$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i3$1.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i3$1.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { kind: "directive", type: i3$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i3$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i3$1.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i3$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i3$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i3$1.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { kind: "component", type: i4.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i8.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i8.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i10.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i11.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i11.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i11.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: ColumnViewComponent, selector: "lib-column-view", inputs: ["config", "value"] }, { kind: "component", type: IconViewComponent, selector: "lib-icon-view", inputs: ["view"] }, { kind: "pipe", type: DataPropertyGetterPipe, name: "dataPropertyGetter" }], animations: [
1777
1827
  trigger('detailExpand', [
1778
1828
  state(ExpandState.COLLAPSED, style({ height: '0px', minHeight: '0' })),
1779
1829
  state(ExpandState.EXPANDED, style({ height: '*' })),
@@ -1789,12 +1839,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
1789
1839
  state(ExpandState.EXPANDED, style({ height: '*' })),
1790
1840
  transition(`${ExpandState.EXPANDED} <=> ${ExpandState.COLLAPSED}`, animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
1791
1841
  ]),
1792
- ], standalone: false, template: "<div class=\"aur-mat-table\"\n [ngClass]=\"{'sticky-pagination': paginationProvider.isEnabled && !externalPaginator && paginationProvider.position === 'sticky'}\">\n <ng-container>\n <!-- Filter -->\n <ng-container *ngIf=\"isFeatureEnabled(tableConfig.filterCfg)\">\n <div class=\"search-container\">\n <ng-container>\n <ng-content select=\"[ngxAurTableSearchPrefix]\"></ng-content>\n </ng-container>\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <mat-label>{{ tableConfig.filterCfg?.label }}</mat-label>\n <input matInput (keyup)=\"applySearchFilter($event)\"\n placeholder=\"{{tableConfig.filterCfg?.placeholder}}\"\n style=\"font-size: 18px;\">\n <mat-icon matPrefix>search</mat-icon>\n </mat-form-field>\n <ng-container>\n <ng-content select=\"[ngxAurTableSearchSuffix]\"></ng-content>\n </ng-container>\n </div>\n </ng-container>\n\n\n <div class=\"table-container\"\n [ngClass]=\"{'sticky-pagination': paginationProvider.isEnabled && !externalPaginator && paginationProvider.position === 'sticky'}\">\n <mat-icon *ngIf=\"headerButtonProvider.isEnabled\"\n class=\"table-settings-button\"\n [style.color]=\"headerButtonProvider.color\"\n [style.background-color]=\"headerButtonProvider.background\"\n (click)=\"headerButton.emit($event)\">\n {{ headerButtonProvider.icon }}\n </mat-icon>\n\n <!-- Table -->\n <table #table mat-table matSort\n [matSortActive]=\"tableConfig.sortCfg?.active ?? ''\"\n [matSortDirection]=\"tableConfig.sortCfg?.direction ?? ''\"\n [trackBy]=\"trackByRow\"\n [multiTemplateDataRows]=\"extendedRowTemplate !== null\"\n [dataSource]=\"tableDataSource\"\n (matSortChange)=\"sortTable($event)\"\n [style.height]=\"tableConfig.tableViewCfg?.height\"\n [style.max-height]=\"tableConfig.tableViewCfg?.maxHeight\"\n [style.min-height]=\"tableConfig.tableViewCfg?.minHeight\"\n [class.aur-has-header-button]=\"headerButtonProvider.isEnabled\"\n [style.--aur-cell-padding-left]=\"tableConfig.tableViewCfg?.cellPaddingLeft\"\n [style.--aur-cell-padding-right]=\"tableConfig.tableViewCfg?.cellPaddingRight\"\n [ngClass]=\"{'hide-table-body': isTableBodyHide}\">\n\n\n <!-- timeline-column-->\n <ng-container *ngIf=\"timelineProvider.isEnabled\" [matColumnDef]=\"timelineProvider.COLUMN_NAME\">\n <th mat-header-cell *matHeaderCellDef class=\"aur-timeline-cell\"\n [style.width]=\"timelineProvider.size?.width\"\n [style.min-width]=\"timelineProvider.size?.minWidth\"\n [style.max-width]=\"timelineProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"timelineProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"timelineProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"timelineProvider.size?.paddingRight\"></th>\n <td mat-cell *matCellDef=\"let element\" class=\"aur-timeline-cell\"\n [style.width]=\"timelineProvider.size?.width\"\n [style.min-width]=\"timelineProvider.size?.minWidth\"\n [style.max-width]=\"timelineProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"timelineProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"timelineProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"timelineProvider.size?.paddingRight\">\n <div class=\"aur-timeline-marker-container\">\n\n <div class=\"aur-timeline-line\"\n *ngIf=\"element.id !== _timelineFirstId\"\n [style.border-left-width.px]=\"timelineProvider.line.width\"\n [style.border-left-color]=\"_timelineGaps.get(element.id)?.topColor ?? timelineProvider.line.color\"\n [style.border-left-style]=\"_timelineGaps.get(element.id)?.topGap ? timelineProvider.line.gapStyle : timelineProvider.line.style\">\n </div>\n\n <ng-container *ngIf=\"timelineMarkerTemplate; else defaultMarker\">\n <ng-container *ngTemplateOutlet=\"timelineMarkerTemplate; context: {$implicit: element}\"></ng-container>\n </ng-container>\n <ng-template #defaultMarker>\n <div class=\"aur-timeline-marker-default\"\n [style.background-color]=\"timelineProvider.markerColor\">\n </div>\n </ng-template>\n\n <div class=\"aur-timeline-line\"\n *ngIf=\"element.id !== _timelineLastId\"\n [style.border-left-width.px]=\"timelineProvider.line.width\"\n [style.border-left-color]=\"_timelineGaps.get(element.id)?.bottomColor ?? timelineProvider.line.color\"\n [style.border-left-style]=\"_timelineGaps.get(element.id)?.bottomGap ? timelineProvider.line.gapStyle : timelineProvider.line.style\">\n </div>\n\n </div>\n </td>\n <td mat-footer-cell *matFooterCellDef class=\"aur-timeline-cell\"\n [style.width]=\"timelineProvider.size?.width\"\n [style.min-width]=\"timelineProvider.size?.minWidth\"\n [style.max-width]=\"timelineProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"timelineProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"timelineProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"timelineProvider.size?.paddingRight\"></td>\n </ng-container>\n\n <!-- drag-column-->\n <ng-container *ngIf=\"dragDropProvider.isEnabled && dragDropProvider.draggable\" [matColumnDef]=\"dragDropProvider.COLUMN_NAME\">\n\n <th mat-header-cell *matHeaderCellDef\n [style.width]=\"dragDropProvider.size?.width\"\n [style.min-width]=\"dragDropProvider.size?.minWidth\"\n [style.max-width]=\"dragDropProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"dragDropProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"dragDropProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"dragDropProvider.size?.paddingRight\">\n </th>\n\n <td mat-cell *matCellDef=\"let element;\" class=\"drag-column\"\n [style.width]=\"dragDropProvider.size?.width\"\n [style.min-width]=\"dragDropProvider.size?.minWidth\"\n [style.max-width]=\"dragDropProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"dragDropProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"dragDropProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"dragDropProvider.size?.paddingRight\">\n <lib-icon-view draggable=\"true\"\n class=\"drag-icon\"\n [view]=\"dragDropProvider.dragIconView\"\n (dragstart)=\"onDragStart($event, element)\"\n (dragend)=\"onDragEnd($event, element)\">\n </lib-icon-view>\n\n </td>\n\n <td mat-footer-cell *matFooterCellDef\n [style.width]=\"dragDropProvider.size?.width\"\n [style.min-width]=\"dragDropProvider.size?.minWidth\"\n [style.max-width]=\"dragDropProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"dragDropProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"dragDropProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"dragDropProvider.size?.paddingRight\">\n </td>\n </ng-container>\n\n <!-- index-column-->\n <ng-container *ngIf=\"indexProvider.isEnabled\" [matColumnDef]=\"indexProvider.COLUMN_NAME\">\n\n <th mat-header-cell *matHeaderCellDef\n [style.width]=\"indexProvider.size?.width\"\n [style.min-width]=\"indexProvider.size?.minWidth\"\n [style.max-width]=\"indexProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"indexProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"indexProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"indexProvider.size?.paddingRight\"\n [ngClass]=\"_alignClass[indexProvider.COLUMN_NAME]\">\n <!-- \u0438\u043C\u044F \u043F\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044F \u0447\u0435\u0440\u0435\u0437 [value]: \u0443 lib-column-view \u043D\u0435\u0442 ng-content, \u043F\u0440\u043E\u0435\u043A\u0446\u0438\u044F \u0433\u0430\u0441\u0438\u0442\u0441\u044F -->\n <lib-column-view [config]=\"indexProvider.headerView\" [value]=\"indexProvider.name\">\n </lib-column-view>\n </th>\n\n <td mat-cell *matCellDef=\"let element;\"\n [style.width]=\"indexProvider.size?.width\"\n [style.min-width]=\"indexProvider.size?.minWidth\"\n [style.max-width]=\"indexProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"indexProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"indexProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"indexProvider.size?.paddingRight\"\n [ngClass]=\"_alignClass[indexProvider.COLUMN_NAME]\">\n {{ indexProvider.format(element.id + _indexPageOffset) }}\n </td>\n\n <td mat-footer-cell *matFooterCellDef\n [style.width]=\"indexProvider.size?.width\"\n [style.min-width]=\"indexProvider.size?.minWidth\"\n [style.max-width]=\"indexProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"indexProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"indexProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"indexProvider.size?.paddingRight\"\n [ngClass]=\"_alignClass[indexProvider.COLUMN_NAME]\">\n {{ totalRowProvider.totals.get(indexProvider.COLUMN_NAME) ?? '' }}\n </td>\n </ng-container>\n\n <!-- selection-column-->\n <ng-container [matColumnDef]=\"selectionProvider.COLUMN_NAME\" *ngIf=\"selectionProvider.isEnabled\">\n <th mat-header-cell *matHeaderCellDef\n [style.width]=\"selectionProvider.size?.width\"\n [style.min-width]=\"selectionProvider.size?.minWidth\"\n [style.max-width]=\"selectionProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"selectionProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"selectionProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"selectionProvider.size?.paddingRight\">\n <div class=\"flex-container\">\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\n [checked]=\"selectionProvider.selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selectionProvider.selection.hasValue() && !isAllSelected()\">\n </mat-checkbox>\n <div\n *ngIf=\"tableConfig.selectionCfg?.showSelectedCount && selectionProvider.selection.hasValue()\">\n {{ selectionProvider.selection.selected.length }}\n <span\n *ngIf=\"tableConfig.selectionCfg?.showTotalCount !== false\">/{{ paginatorState?.length ? paginatorState?.length : tableDataSource.filteredData.length }}</span>\n </div>\n\n <div *ngIf=\"selectionProvider.selection.hasValue() && tableConfig?.selectionCfg?.actions\">\n <ng-container *ngFor=\"let action of tableConfig.selectionCfg!.actions\">\n <button mat-icon-button\n (click)=\"emitSelectedRowsAction(action.action, selectionProvider.selection.selected)\"\n [matTooltip]=\"action.icon.tooltip || ''\"\n [matTooltipPosition]=\"action.icon.tooltipPosition || 'below'\"\n *ngIf=\"action.visible !== false\">\n <mat-icon [style.color]=\"action.icon.color\">\n {{ action.icon.name }}\n </mat-icon>\n </button>\n </ng-container>\n </div>\n </div>\n\n </th>\n <td mat-cell *matCellDef=\"let row\"\n (click)=\"$event.stopPropagation(); selectionProvider.selection.toggle(castSrc(row).rowSrc)\"\n [style.width]=\"selectionProvider.size?.width\"\n [style.min-width]=\"selectionProvider.size?.minWidth\"\n [style.max-width]=\"selectionProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"selectionProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"selectionProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"selectionProvider.size?.paddingRight\">\n <mat-checkbox (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selectionProvider.selection.toggle(castSrc(row).rowSrc) : null\"\n [checked]=\"selectionProvider.selection.isSelected(castSrc(row).rowSrc)\">\n </mat-checkbox>\n </td>\n\n <td mat-footer-cell *matFooterCellDef\n [style.width]=\"selectionProvider.size?.width\"\n [style.min-width]=\"selectionProvider.size?.minWidth\"\n [style.max-width]=\"selectionProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"selectionProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"selectionProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"selectionProvider.size?.paddingRight\">\n </td>\n </ng-container>\n\n <!-- action column -->\n <ng-container *ngIf=\"rowActionsProvider.isEnabled\" [matColumnDef]=\"rowActionsProvider.COLUMN_NAME\">\n <th mat-header-cell *matHeaderCellDef\n [style.width]=\"rowActionsProvider.size?.width\"\n [style.min-width]=\"rowActionsProvider.size?.minWidth\"\n [style.max-width]=\"rowActionsProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"rowActionsProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"rowActionsProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"rowActionsProvider.size?.paddingRight\"></th>\n <td mat-cell *matCellDef=\"let element\" (click)=\"$event.stopPropagation()\" style=\"cursor: default\"\n [style.width]=\"rowActionsProvider.size?.width\"\n [style.min-width]=\"rowActionsProvider.size?.minWidth\"\n [style.max-width]=\"rowActionsProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"rowActionsProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"rowActionsProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"rowActionsProvider.size?.paddingRight\">\n <ng-container *ngFor=\"let action of rowActionsProvider.actionView.get(element.id)\">\n <!-- action with dropdown menu -->\n <ng-container *ngIf=\"action.menu; else directAction\">\n <ng-container *ngIf=\"action.visible !== false\">\n <mat-menu #actionMenu=\"matMenu\">\n <ng-container *ngFor=\"let item of action.menu\">\n <button mat-menu-item\n *ngIf=\"item.visible !== false\"\n [disabled]=\"item.disabled === true\"\n (click)=\"emitMenuAction(item.action, element.rowSrc)\">\n <mat-icon *ngIf=\"item.icon\" [style.color]=\"item.icon.color\">\n {{ item.icon.name }}\n </mat-icon>\n <span>{{ item.text }}</span>\n </button>\n </ng-container>\n </mat-menu>\n <span *ngIf=\"action.icon.tooltip; else menuBtnPlain\"\n [matTooltip]=\"action.icon.tooltip\"\n [matTooltipClass]=\"action.icon.tooltipClass || ''\"\n [matTooltipPosition]=\"action.icon.tooltipPosition || 'below'\">\n <button mat-icon-button\n [matMenuTriggerFor]=\"actionMenu\"\n [disabled]=\"action.disabled === true\">\n <mat-icon [style.color]=\"action.icon.color\">\n {{ action.icon.name }}\n </mat-icon>\n </button>\n </span>\n <ng-template #menuBtnPlain>\n <button mat-icon-button [matMenuTriggerFor]=\"actionMenu\"\n [disabled]=\"action.disabled === true\">\n <mat-icon [style.color]=\"action.icon.color\">\n {{ action.icon.name }}\n </mat-icon>\n </button>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <!-- direct action (existing behavior) -->\n <ng-template #directAction>\n <ng-container *ngIf=\"action.visible !== false\">\n <span *ngIf=\"action.icon.tooltip; else directBtnPlain\"\n [matTooltip]=\"action.icon.tooltip\"\n [matTooltipClass]=\"action.icon.tooltipClass || ''\"\n [matTooltipPosition]=\"action.icon.tooltipPosition || 'below'\">\n <button mat-icon-button\n [disabled]=\"action.disabled === true\"\n (click)=\"emitRowAction(action.action, element.rowSrc, $event)\">\n <mat-icon [style.color]=\"action.icon.color\">\n {{ action.icon.name }}\n </mat-icon>\n </button>\n </span>\n <ng-template #directBtnPlain>\n <button mat-icon-button\n [disabled]=\"action.disabled === true\"\n (click)=\"emitRowAction(action.action, element.rowSrc, $event)\">\n <mat-icon [style.color]=\"action.icon.color\">\n {{ action.icon.name }}\n </mat-icon>\n </button>\n </ng-template>\n </ng-container>\n </ng-template>\n </ng-container>\n </td>\n\n <td mat-footer-cell *matFooterCellDef\n [style.width]=\"rowActionsProvider.size?.width\"\n [style.min-width]=\"rowActionsProvider.size?.minWidth\"\n [style.max-width]=\"rowActionsProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"rowActionsProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"rowActionsProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"rowActionsProvider.size?.paddingRight\">\n {{ totalRowProvider.totals.get(rowActionsProvider.COLUMN_NAME) ?? '' }}\n </td>\n </ng-container>\n\n <!-- value-icon-->\n <ng-container *ngFor=\"let columnConfig of tableConfig.columnsCfg\" [matColumnDef]=\"columnConfig.key\">\n\n <!-- if sortable column header -->\n <ng-container *ngIf=\"isFeatureEnabled(columnConfig.sort); else notSortable\">\n <th mat-header-cell *matHeaderCellDef [mat-sort-header]=\"columnConfig.key\"\n [arrowPosition]=\"columnConfig.sort?.position === 'start' ? 'before' : 'after'\"\n [style.width]=\"columnConfig.size?.width\"\n [style.min-width]=\"columnConfig.size?.minWidth\"\n [style.max-width]=\"columnConfig.size?.maxWidth\"\n [class.aur-col-fit]=\"columnConfig.size?.fit\"\n [style.--aur-cell-padding-left]=\"columnConfig.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"columnConfig.size?.paddingRight\"\n [ngClass]=\"_alignClass[columnConfig.key]\">\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\n </th>\n </ng-container>\n\n <!-- else not sortable -->\n <ng-template #notSortable>\n <th mat-header-cell *matHeaderCellDef\n [style.width]=\"columnConfig.size?.width\"\n [style.min-width]=\"columnConfig.size?.minWidth\"\n [style.max-width]=\"columnConfig.size?.maxWidth\"\n [class.aur-col-fit]=\"columnConfig.size?.fit\"\n [style.--aur-cell-padding-left]=\"columnConfig.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"columnConfig.size?.paddingRight\"\n [ngClass]=\"_alignClass[columnConfig.key]\">\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\n </th>\n </ng-template>\n\n <!-- header value-->\n <ng-template #headerValue>\n <lib-column-view [config]=\"columnConfig.headerView\"\n [value]=\"columnConfig.name\">\n </lib-column-view>\n </ng-template>\n\n <!-- column value \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u043A\u043E\u043B\u043E\u043D\u043E\u043A \u043D\u0443\u0436\u043D\u043E \u0447\u0435\u0440\u0435\u0437 getView(rowIndex, columnConfig.key) \u0442\u0430\u043C \u043D\u0430\u0445\u043E\u0434\u044F\u0442\u0441\u044F \u0443\u0436\u0435\n \u043F\u043E\u0434\u0433\u043E\u0442\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0434\u043B\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F-->\n <td mat-cell *matCellDef=\"let element;\"\n [style.width]=\"columnConfig.size?.width\"\n [style.min-width]=\"columnConfig.size?.minWidth\"\n [style.max-width]=\"columnConfig.size?.maxWidth\"\n [class.aur-col-fit]=\"columnConfig.size?.fit\"\n [style.--aur-cell-padding-left]=\"columnConfig.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"columnConfig.size?.paddingRight\"\n [ngClass]=\"_alignClass[columnConfig.key]\">\n <!-- \u043A\u043E\u043B\u043E\u043D\u043A\u0438 \u0431\u0435\u0437 valueView \u043C\u0438\u043D\u0443\u044E\u0442 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u044B \u044F\u0447\u0435\u0439\u043A\u0438: \u043B\u0451\u0433\u043A\u0438\u0439 span \u0434\u0435\u0448\u0435\u0432\u043B\u0435 \u043F\u0430\u0440\u044B \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u043E\u0432 \u0441 \u043E\u0431\u0451\u0440\u0442\u043A\u0430\u043C\u0438 -->\n <lib-column-view *ngIf=\"columnConfig.valueView; else plainCell\"\n [config]=\"tableView[element.id]?.get(columnConfig.key)\"\n [value]=\"element | dataPropertyGetter: columnConfig.key\">\n </lib-column-view>\n <ng-template #plainCell>\n <span class=\"aur-plain-cell\">{{ element | dataPropertyGetter: columnConfig.key }}</span>\n </ng-template>\n </td>\n\n <td mat-footer-cell *matFooterCellDef\n [style.width]=\"columnConfig.size?.width\"\n [style.min-width]=\"columnConfig.size?.minWidth\"\n [style.max-width]=\"columnConfig.size?.maxWidth\"\n [class.aur-col-fit]=\"columnConfig.size?.fit\"\n [style.--aur-cell-padding-left]=\"columnConfig.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"columnConfig.size?.paddingRight\"\n [ngClass]=\"_alignClass[columnConfig.key]\">\n {{ totalRowProvider.totals.get(columnConfig.key) ?? '' }}\n </td>\n\n </ng-container>\n\n <!-- extra header top cell (\u0434\u0435\u0444\u044B \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043C \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0438 \u043D\u0430\u043B\u0438\u0447\u0438\u0438 \u0448\u0430\u0431\u043B\u043E\u043D\u0430)-->\n <ng-container *ngIf=\"extraHeaderCellTopTemplate\">\n <ng-container *ngFor=\"let extraTopCell of _displayExtraHeaderTopCell; let index = index\"\n [matColumnDef]=\"extraTopCell\">\n <th mat-header-cell *matHeaderCellDef>\n <ng-container\n *ngTemplateOutlet=\"extraHeaderCellTopTemplate; context: {key: extraTopCell.replace(EXTRA_HEADER_CELL_TOP_SUFFIX, ''), index: index}\"></ng-container>\n </th>\n </ng-container>\n </ng-container>\n\n\n <!-- extra header bottom cell (\u0434\u0435\u0444\u044B \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043C \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0438 \u043D\u0430\u043B\u0438\u0447\u0438\u0438 \u0448\u0430\u0431\u043B\u043E\u043D\u0430)-->\n <ng-container *ngIf=\"extraHeaderCellBottomTemplate\">\n <ng-container *ngFor=\"let extraBottomCell of _displayExtraHeaderBottomCell; let index = index\"\n [matColumnDef]=\"extraBottomCell\">\n <th mat-header-cell *matHeaderCellDef>\n <ng-container\n *ngTemplateOutlet=\"extraHeaderCellBottomTemplate; context: {key: extraBottomCell.replace(EXTRA_HEADER_CELL_BOTTOM_SUFFIX, ''), index: index}\"></ng-container>\n </th>\n </ng-container>\n </ng-container>\n\n <!-- extra header top row-->\n <ng-container *ngIf=\"extraHeaderCellTopTemplate\">\n <tr mat-header-row *matHeaderRowDef=\"_displayExtraHeaderTopCell; sticky: this.tableConfig.stickyCfg?.header\"\n class=\"extra-header-top-row\">\n </tr>\n </ng-container>\n\n <!-- header row-->\n <tr mat-header-row *matHeaderRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.header\"\n [style]=\"_headerStyle\" [ngClass]=\"_headerClass\">\n </tr>\n\n <!-- extra header bottom row -->\n <ng-container *ngIf=\"extraHeaderCellBottomTemplate\">\n <tr mat-header-row\n *matHeaderRowDef=\"_displayExtraHeaderBottomCell; sticky: this.tableConfig.stickyCfg?.header\">\n </tr>\n </ng-container>\n\n <tr mat-row #rowLink\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop($event, row)\"\n *matRowDef=\"let row; columns: _displayColumns;\"\n (click)=\"handleRowClick(row)\"\n (keydown)=\"handleRowKeydown($event, row)\"\n [attr.tabindex]=\"_rowsInteractive ? 0 : null\"\n [attr.aria-current]=\"highlighted === row.rowSrc ? 'true' : null\"\n (mouseenter)=\"onRowEnter(row)\"\n (mouseleave)=\"onRowLeave(row)\"\n [ngClass]=\"rowNgClass(row)\"\n [style]=\"rowStyle(row)\">\n </tr>\n\n <!--expanded-row (\u0434\u0435\u0444 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043C \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0438 \u043D\u0430\u043B\u0438\u0447\u0438\u0438 \u0448\u0430\u0431\u043B\u043E\u043D\u0430)-->\n <ng-container *ngIf=\"extendedRowTemplate\">\n <ng-container matColumnDef=\"expandedRow\">\n <td mat-cell class=\"expanded-cell\" *matCellDef=\"let element\" [attr.colspan]=\"_displayColumns.length\"\n style=\"padding-right: 0!important;\">\n <div class=\"row-detail\"\n [@detailExpand]=\"element.rowSrc === highlighted ? expandedStateEnum.EXPANDED : expandedStateEnum.COLLAPSED\">\n <!-- timeline continuation -->\n <div *ngIf=\"timelineProvider.isEnabled\"\n class=\"aur-timeline-continuation\"\n [style.border-left-width.px]=\"timelineProvider.line.width\"\n [style.border-left-color]=\"_timelineGaps.get(element.id)?.bottomColor ?? timelineProvider.line.color\"\n [style.border-left-style]=\"_timelineGaps.get(element.id)?.bottomGap ? timelineProvider.line.gapStyle : timelineProvider.line.style\">\n </div>\n <!-- lazy-load of details -->\n <ng-container *ngIf=\"element.rowSrc === highlighted\">\n <ng-container *ngTemplateOutlet=\"extendedRowTemplate; context: {$implicit: element}\"></ng-container>\n </ng-container>\n </div>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"extendedRowTemplate\">\n <tr mat-row class=\"expanded-row\" *matRowDef=\"let row; columns: ['expandedRow']\"></tr>\n </ng-container>\n <!--expanded-row-->\n\n <ng-container *ngIf=\"totalRowProvider.isEnabled\">\n <tr mat-footer-row *matFooterRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.total\"\n [style]=\"_totalStyle\" [ngClass]=\"_totalClass\"\n [style.display]=\"isTotalRowVisible() ? null : 'none'\"></tr>\n </ng-container>\n\n <!--sub-footer-row (\u0434\u0435\u0444 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043C \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0438 \u043D\u0430\u043B\u0438\u0447\u0438\u0438 \u043A\u043E\u043D\u0442\u0435\u043D\u0442\u0430)-->\n <ng-container *ngIf=\"subFooterRowTemplate\">\n <ng-container matColumnDef=\"subFooterRow\">\n <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"_displayColumns.length\">\n <ng-container>\n <ng-content select=\"[ngxAurTableSubFooterRow]\"></ng-content>\n </ng-container>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"subFooterRowTemplate\">\n <tr mat-footer-row *matFooterRowDef=\"['subFooterRow']; sticky: this.tableConfig.stickyCfg?.subFooter\"></tr>\n </ng-container>\n <!-- sub-footer-row END-->\n </table>\n </div>\n </ng-container>\n\n <!-- Pagination -->\n @if (this.paginationProvider.isEnabled && !externalPaginator) {\n <mat-paginator [ngClass]=\"{'hidePaginator': isTableBodyHide}\"\n [pageSizeOptions]=\"paginationProvider.sizes\"\n [pageSize]=\"paginationProvider.size\"\n [style]=\"tableConfig?.paginationCfg?.style\"\n [length]=\"paginatorState?.length\"\n [pageIndex]=\"paginatorState?.pageIndex\"\n (page)=\"onPageChangeInternal($event)\"\n [showFirstLastButtons]=\"tableConfig.paginationCfg?.showFirstLastButtons !== false\">\n </mat-paginator>\n }\n</div>\n", styles: ["@charset \"UTF-8\";.aur-mat-table{display:flex;flex-direction:column}.aur-mat-table.sticky-pagination{height:100%}.aur-mat-table table{border-collapse:collapse}.aur-mat-table .table-container{position:relative}.aur-mat-table .table-container.sticky-pagination{flex-grow:1;overflow:auto}.aur-mat-table th,.aur-mat-table td{padding-right:var(--aur-cell-padding-right, 4px)!important;padding-left:var(--aur-cell-padding-left, 4px)!important}.aur-mat-table .new-color td.mat-mdc-cell,.aur-mat-table .new-color td.mat-mdc-footer-cell{color:inherit}.aur-mat-table mat-form-field{width:100%}.aur-mat-table th.aur-align-center,.aur-mat-table td.aur-align-center{text-align:center}.aur-mat-table th.aur-align-right,.aur-mat-table td.aur-align-right{text-align:right}.aur-mat-table th.aur-align-center ::ng-deep .mat-sort-header-container{justify-content:center}.aur-mat-table th.aur-align-right ::ng-deep .mat-sort-header-container{justify-content:flex-end}.aur-mat-table .aur-col-fit{width:1%;white-space:nowrap}.aur-mat-table .pointer{cursor:pointer}.aur-mat-table .flex-container{display:flex;align-items:center}.aur-mat-table .aur-plain-cell{margin-left:4px}.aur-mat-table .expanded-row{height:0}.aur-mat-table .expanded-row .expanded-cell{padding-right:0!important;padding-left:0!important}.aur-mat-table .row-detail{overflow:hidden;display:flex}.aur-mat-table .clear-bottom-border{border-bottom:none}.aur-mat-table .table-settings-button{position:absolute;right:4px;top:12px;cursor:pointer;border-radius:4px;padding-bottom:2px;padding-top:2px;z-index:9999999999}.aur-mat-table table.aur-has-header-button .mat-mdc-header-row th:last-child{padding-right:var(--aur-last-header-padding-right, 25px)!important}.aur-mat-table .search-container{display:flex;gap:8px;align-items:center}.aur-mat-table .extra-header-top-row th{border-bottom:none}.aur-mat-table .drag-icon{cursor:grab}.hide-table-body tr:not(.mat-mdc-header-row){display:none!important}.hidePaginator{display:none}.aur-mat-table .drag-column{padding-left:8px;padding-right:8px;width:35px}.aur-mat-table .aur-timeline-cell{width:40px;min-width:40px;max-width:40px;padding:0!important}.aur-mat-table .aur-timeline-marker-container{display:flex;flex-direction:column;align-items:center;height:100%;min-height:48px}.aur-mat-table .aur-timeline-line{flex:1;min-height:8px}.aur-mat-table .aur-timeline-marker-default{width:12px;height:12px;border-radius:50%;flex-shrink:0}.aur-mat-table .aur-timeline-continuation{border-left-style:solid;align-self:stretch;margin-left:20px;flex-shrink:0}.aur-mat-table tr.mat-mdc-row:focus-visible{outline:2px solid currentColor;outline-offset:-2px}\n"] }]
1842
+ ], standalone: false, template: "<div class=\"aur-mat-table\"\n [ngClass]=\"{'sticky-pagination': paginationProvider.isEnabled && !externalPaginator && paginationProvider.position === 'sticky'}\">\n <ng-container>\n <!-- Filter -->\n <ng-container *ngIf=\"isFeatureEnabled(tableConfig.filterCfg)\">\n <div class=\"search-container\">\n <ng-container>\n <ng-content select=\"[ngxAurTableSearchPrefix]\"></ng-content>\n </ng-container>\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <mat-label>{{ tableConfig.filterCfg?.label }}</mat-label>\n <input matInput (keyup)=\"applySearchFilter($event)\"\n placeholder=\"{{tableConfig.filterCfg?.placeholder}}\"\n style=\"font-size: 18px;\">\n <mat-icon matPrefix>search</mat-icon>\n </mat-form-field>\n <ng-container>\n <ng-content select=\"[ngxAurTableSearchSuffix]\"></ng-content>\n </ng-container>\n </div>\n </ng-container>\n\n\n <div class=\"table-container\"\n [ngClass]=\"{'sticky-pagination': paginationProvider.isEnabled && !externalPaginator && paginationProvider.position === 'sticky'}\">\n <mat-icon *ngIf=\"headerButtonProvider.isEnabled\"\n class=\"table-settings-button\"\n [style.color]=\"headerButtonProvider.color\"\n [style.background-color]=\"headerButtonProvider.background\"\n (click)=\"headerButton.emit($event)\">\n {{ headerButtonProvider.icon }}\n </mat-icon>\n\n <!-- Table -->\n <table #table mat-table matSort\n [matSortActive]=\"tableConfig.sortCfg?.active ?? ''\"\n [matSortDirection]=\"tableConfig.sortCfg?.direction ?? ''\"\n [trackBy]=\"trackByRow\"\n [multiTemplateDataRows]=\"extendedRowTemplate !== null\"\n [dataSource]=\"tableDataSource\"\n (matSortChange)=\"sortTable($event)\"\n [style.height]=\"tableConfig.tableViewCfg?.height\"\n [style.max-height]=\"tableConfig.tableViewCfg?.maxHeight\"\n [style.min-height]=\"tableConfig.tableViewCfg?.minHeight\"\n [class.aur-has-header-button]=\"headerButtonProvider.isEnabled\"\n [style.--aur-cell-padding-left]=\"tableConfig.tableViewCfg?.cellPaddingLeft\"\n [style.--aur-cell-padding-right]=\"tableConfig.tableViewCfg?.cellPaddingRight\"\n [ngClass]=\"{'hide-table-body': isTableBodyHide}\">\n\n\n <!-- timeline-column-->\n <ng-container *ngIf=\"timelineProvider.isEnabled\" [matColumnDef]=\"timelineProvider.COLUMN_NAME\">\n <th mat-header-cell *matHeaderCellDef class=\"aur-timeline-cell\"\n [style.width]=\"timelineProvider.size?.width\"\n [style.min-width]=\"timelineProvider.size?.minWidth\"\n [style.max-width]=\"timelineProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"timelineProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"timelineProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"timelineProvider.size?.paddingRight\"></th>\n <td mat-cell *matCellDef=\"let element\" class=\"aur-timeline-cell\"\n [style.width]=\"timelineProvider.size?.width\"\n [style.min-width]=\"timelineProvider.size?.minWidth\"\n [style.max-width]=\"timelineProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"timelineProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"timelineProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"timelineProvider.size?.paddingRight\">\n <div class=\"aur-timeline-marker-container\">\n\n <div class=\"aur-timeline-line\"\n *ngIf=\"element.id !== _timelineFirstId\"\n [style.border-left-width.px]=\"timelineProvider.line.width\"\n [style.border-left-color]=\"_timelineGaps.get(element.id)?.topColor ?? timelineProvider.line.color\"\n [style.border-left-style]=\"_timelineGaps.get(element.id)?.topGap ? timelineProvider.line.gapStyle : timelineProvider.line.style\">\n </div>\n\n <ng-container *ngIf=\"timelineMarkerTemplate; else defaultMarker\">\n <ng-container *ngTemplateOutlet=\"timelineMarkerTemplate; context: {$implicit: element}\"></ng-container>\n </ng-container>\n <ng-template #defaultMarker>\n <div class=\"aur-timeline-marker-default\"\n [style.background-color]=\"timelineProvider.markerColor\">\n </div>\n </ng-template>\n\n <div class=\"aur-timeline-line\"\n *ngIf=\"element.id !== _timelineLastId\"\n [style.border-left-width.px]=\"timelineProvider.line.width\"\n [style.border-left-color]=\"_timelineGaps.get(element.id)?.bottomColor ?? timelineProvider.line.color\"\n [style.border-left-style]=\"_timelineGaps.get(element.id)?.bottomGap ? timelineProvider.line.gapStyle : timelineProvider.line.style\">\n </div>\n\n </div>\n </td>\n <td mat-footer-cell *matFooterCellDef class=\"aur-timeline-cell\"\n [style.width]=\"timelineProvider.size?.width\"\n [style.min-width]=\"timelineProvider.size?.minWidth\"\n [style.max-width]=\"timelineProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"timelineProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"timelineProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"timelineProvider.size?.paddingRight\"></td>\n </ng-container>\n\n <!-- drag-column-->\n <ng-container *ngIf=\"dragDropProvider.isEnabled && dragDropProvider.draggable\" [matColumnDef]=\"dragDropProvider.COLUMN_NAME\">\n\n <th mat-header-cell *matHeaderCellDef\n [style.width]=\"dragDropProvider.size?.width\"\n [style.min-width]=\"dragDropProvider.size?.minWidth\"\n [style.max-width]=\"dragDropProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"dragDropProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"dragDropProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"dragDropProvider.size?.paddingRight\">\n </th>\n\n <td mat-cell *matCellDef=\"let element;\" class=\"drag-column\"\n [style.width]=\"dragDropProvider.size?.width\"\n [style.min-width]=\"dragDropProvider.size?.minWidth\"\n [style.max-width]=\"dragDropProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"dragDropProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"dragDropProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"dragDropProvider.size?.paddingRight\">\n <lib-icon-view draggable=\"true\"\n class=\"drag-icon\"\n [view]=\"dragDropProvider.dragIconView\"\n (dragstart)=\"onDragStart($event, element)\"\n (dragend)=\"onDragEnd($event, element)\">\n </lib-icon-view>\n\n </td>\n\n <td mat-footer-cell *matFooterCellDef\n [style.width]=\"dragDropProvider.size?.width\"\n [style.min-width]=\"dragDropProvider.size?.minWidth\"\n [style.max-width]=\"dragDropProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"dragDropProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"dragDropProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"dragDropProvider.size?.paddingRight\">\n </td>\n </ng-container>\n\n <!-- index-column-->\n <ng-container *ngIf=\"indexProvider.isEnabled\" [matColumnDef]=\"indexProvider.COLUMN_NAME\">\n\n <th mat-header-cell *matHeaderCellDef\n [style.width]=\"indexProvider.size?.width\"\n [style.min-width]=\"indexProvider.size?.minWidth\"\n [style.max-width]=\"indexProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"indexProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"indexProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"indexProvider.size?.paddingRight\"\n [ngClass]=\"_alignClass[indexProvider.COLUMN_NAME]\">\n <!-- \u0438\u043C\u044F \u043F\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044F \u0447\u0435\u0440\u0435\u0437 [value]: \u0443 lib-column-view \u043D\u0435\u0442 ng-content, \u043F\u0440\u043E\u0435\u043A\u0446\u0438\u044F \u0433\u0430\u0441\u0438\u0442\u0441\u044F -->\n <lib-column-view [config]=\"indexProvider.headerView\" [value]=\"indexProvider.name\">\n </lib-column-view>\n </th>\n\n <td mat-cell *matCellDef=\"let element;\"\n [style.width]=\"indexProvider.size?.width\"\n [style.min-width]=\"indexProvider.size?.minWidth\"\n [style.max-width]=\"indexProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"indexProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"indexProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"indexProvider.size?.paddingRight\"\n [ngClass]=\"_alignClass[indexProvider.COLUMN_NAME]\">\n {{ indexProvider.format(element.id + _indexPageOffset) }}\n </td>\n\n <td mat-footer-cell *matFooterCellDef\n [style.width]=\"indexProvider.size?.width\"\n [style.min-width]=\"indexProvider.size?.minWidth\"\n [style.max-width]=\"indexProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"indexProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"indexProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"indexProvider.size?.paddingRight\"\n [ngClass]=\"_alignClass[indexProvider.COLUMN_NAME]\">\n {{ totalRowProvider.totals.get(indexProvider.COLUMN_NAME) ?? '' }}\n </td>\n </ng-container>\n\n <!-- selection-column-->\n <ng-container [matColumnDef]=\"selectionProvider.COLUMN_NAME\" *ngIf=\"selectionProvider.isEnabled\">\n <th mat-header-cell *matHeaderCellDef\n [style.width]=\"selectionProvider.size?.width\"\n [style.min-width]=\"selectionProvider.size?.minWidth\"\n [style.max-width]=\"selectionProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"selectionProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"selectionProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"selectionProvider.size?.paddingRight\">\n <div class=\"flex-container\">\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\n [checked]=\"selectionProvider.selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selectionProvider.selection.hasValue() && !isAllSelected()\">\n </mat-checkbox>\n <div\n *ngIf=\"tableConfig.selectionCfg?.showSelectedCount && selectionProvider.selection.hasValue()\">\n {{ selectionProvider.selection.selected.length }}\n <span\n *ngIf=\"tableConfig.selectionCfg?.showTotalCount !== false\">/{{ paginatorState?.length ? paginatorState?.length : tableDataSource.filteredData.length }}</span>\n </div>\n\n <div *ngIf=\"selectionProvider.selection.hasValue() && tableConfig?.selectionCfg?.actions\">\n <ng-container *ngFor=\"let action of tableConfig.selectionCfg!.actions\">\n <button mat-icon-button\n (click)=\"emitSelectedRowsAction(action.action, selectionProvider.selection.selected)\"\n [matTooltip]=\"action.icon.tooltip || ''\"\n [matTooltipPosition]=\"action.icon.tooltipPosition || 'below'\"\n *ngIf=\"action.visible !== false\">\n <mat-icon [style.color]=\"action.icon.color\">\n {{ action.icon.name }}\n </mat-icon>\n </button>\n </ng-container>\n </div>\n </div>\n\n </th>\n <td mat-cell *matCellDef=\"let row\"\n (click)=\"$event.stopPropagation(); selectionProvider.selection.toggle(castSrc(row).rowSrc)\"\n [style.width]=\"selectionProvider.size?.width\"\n [style.min-width]=\"selectionProvider.size?.minWidth\"\n [style.max-width]=\"selectionProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"selectionProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"selectionProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"selectionProvider.size?.paddingRight\">\n <mat-checkbox (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selectionProvider.selection.toggle(castSrc(row).rowSrc) : null\"\n [checked]=\"selectionProvider.selection.isSelected(castSrc(row).rowSrc)\">\n </mat-checkbox>\n </td>\n\n <td mat-footer-cell *matFooterCellDef\n [style.width]=\"selectionProvider.size?.width\"\n [style.min-width]=\"selectionProvider.size?.minWidth\"\n [style.max-width]=\"selectionProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"selectionProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"selectionProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"selectionProvider.size?.paddingRight\">\n </td>\n </ng-container>\n\n <!-- action column -->\n <ng-container *ngIf=\"rowActionsProvider.isEnabled\" [matColumnDef]=\"rowActionsProvider.COLUMN_NAME\">\n <th mat-header-cell *matHeaderCellDef\n [style.width]=\"rowActionsProvider.size?.width\"\n [style.min-width]=\"rowActionsProvider.size?.minWidth\"\n [style.max-width]=\"rowActionsProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"rowActionsProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"rowActionsProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"rowActionsProvider.size?.paddingRight\"></th>\n <td mat-cell *matCellDef=\"let element\" (click)=\"$event.stopPropagation()\" style=\"cursor: default\"\n [style.width]=\"rowActionsProvider.size?.width\"\n [style.min-width]=\"rowActionsProvider.size?.minWidth\"\n [style.max-width]=\"rowActionsProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"rowActionsProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"rowActionsProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"rowActionsProvider.size?.paddingRight\">\n <ng-container *ngFor=\"let action of rowActionsProvider.actionView.get(element.id)\">\n <!-- action with dropdown menu -->\n <ng-container *ngIf=\"action.menu; else directAction\">\n <ng-container *ngIf=\"action.visible !== false\">\n <mat-menu #actionMenu=\"matMenu\">\n <ng-container *ngFor=\"let item of action.menu\">\n <button mat-menu-item\n *ngIf=\"item.visible !== false\"\n [disabled]=\"item.disabled === true\"\n (click)=\"emitMenuAction(item.action, element.rowSrc)\">\n <mat-icon *ngIf=\"item.icon\" [style.color]=\"item.icon.color\">\n {{ item.icon.name }}\n </mat-icon>\n <span>{{ item.text }}</span>\n </button>\n </ng-container>\n </mat-menu>\n <span *ngIf=\"action.icon.tooltip; else menuBtnPlain\"\n [matTooltip]=\"action.icon.tooltip\"\n [matTooltipClass]=\"action.icon.tooltipClass || ''\"\n [matTooltipPosition]=\"action.icon.tooltipPosition || 'below'\">\n <button mat-icon-button\n [matMenuTriggerFor]=\"actionMenu\"\n [disabled]=\"action.disabled === true\">\n <mat-icon [style.color]=\"action.icon.color\">\n {{ action.icon.name }}\n </mat-icon>\n </button>\n </span>\n <ng-template #menuBtnPlain>\n <button mat-icon-button [matMenuTriggerFor]=\"actionMenu\"\n [disabled]=\"action.disabled === true\">\n <mat-icon [style.color]=\"action.icon.color\">\n {{ action.icon.name }}\n </mat-icon>\n </button>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <!-- direct action (existing behavior) -->\n <ng-template #directAction>\n <ng-container *ngIf=\"action.visible !== false\">\n <span *ngIf=\"action.icon.tooltip; else directBtnPlain\"\n [matTooltip]=\"action.icon.tooltip\"\n [matTooltipClass]=\"action.icon.tooltipClass || ''\"\n [matTooltipPosition]=\"action.icon.tooltipPosition || 'below'\">\n <button mat-icon-button\n [disabled]=\"action.disabled === true\"\n (click)=\"emitRowAction(action.action, element.rowSrc, $event)\">\n <mat-icon [style.color]=\"action.icon.color\">\n {{ action.icon.name }}\n </mat-icon>\n </button>\n </span>\n <ng-template #directBtnPlain>\n <button mat-icon-button\n [disabled]=\"action.disabled === true\"\n (click)=\"emitRowAction(action.action, element.rowSrc, $event)\">\n <mat-icon [style.color]=\"action.icon.color\">\n {{ action.icon.name }}\n </mat-icon>\n </button>\n </ng-template>\n </ng-container>\n </ng-template>\n </ng-container>\n </td>\n\n <td mat-footer-cell *matFooterCellDef\n [style.width]=\"rowActionsProvider.size?.width\"\n [style.min-width]=\"rowActionsProvider.size?.minWidth\"\n [style.max-width]=\"rowActionsProvider.size?.maxWidth\"\n [class.aur-col-fit]=\"rowActionsProvider.size?.fit\"\n [style.--aur-cell-padding-left]=\"rowActionsProvider.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"rowActionsProvider.size?.paddingRight\">\n {{ totalRowProvider.totals.get(rowActionsProvider.COLUMN_NAME) ?? '' }}\n </td>\n </ng-container>\n\n <!-- value-icon-->\n <ng-container *ngFor=\"let columnConfig of tableConfig.columnsCfg\" [matColumnDef]=\"columnConfig.key\">\n\n <!-- if sortable column header -->\n <ng-container *ngIf=\"isFeatureEnabled(columnConfig.sort); else notSortable\">\n <th mat-header-cell *matHeaderCellDef [mat-sort-header]=\"columnConfig.key\"\n [arrowPosition]=\"columnConfig.sort?.position === 'start' ? 'before' : 'after'\"\n [style.width]=\"columnConfig.size?.width\"\n [style.min-width]=\"columnConfig.size?.minWidth\"\n [style.max-width]=\"columnConfig.size?.maxWidth\"\n [class.aur-col-fit]=\"columnConfig.size?.fit\"\n [style.--aur-cell-padding-left]=\"columnConfig.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"columnConfig.size?.paddingRight\"\n [ngClass]=\"_alignClass[columnConfig.key]\">\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\n </th>\n </ng-container>\n\n <!-- else not sortable -->\n <ng-template #notSortable>\n <th mat-header-cell *matHeaderCellDef\n [style.width]=\"columnConfig.size?.width\"\n [style.min-width]=\"columnConfig.size?.minWidth\"\n [style.max-width]=\"columnConfig.size?.maxWidth\"\n [class.aur-col-fit]=\"columnConfig.size?.fit\"\n [style.--aur-cell-padding-left]=\"columnConfig.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"columnConfig.size?.paddingRight\"\n [ngClass]=\"_alignClass[columnConfig.key]\">\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\n </th>\n </ng-template>\n\n <!-- header value-->\n <ng-template #headerValue>\n <lib-column-view [config]=\"columnConfig.headerView\"\n [value]=\"columnConfig.name\">\n </lib-column-view>\n </ng-template>\n\n <!-- column value \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u043A\u043E\u043B\u043E\u043D\u043E\u043A \u043D\u0443\u0436\u043D\u043E \u0447\u0435\u0440\u0435\u0437 getView(rowIndex, columnConfig.key) \u0442\u0430\u043C \u043D\u0430\u0445\u043E\u0434\u044F\u0442\u0441\u044F \u0443\u0436\u0435\n \u043F\u043E\u0434\u0433\u043E\u0442\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0434\u043B\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F-->\n <td mat-cell *matCellDef=\"let element;\"\n [style.width]=\"columnConfig.size?.width\"\n [style.min-width]=\"columnConfig.size?.minWidth\"\n [style.max-width]=\"columnConfig.size?.maxWidth\"\n [class.aur-col-fit]=\"columnConfig.size?.fit\"\n [style.--aur-cell-padding-left]=\"columnConfig.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"columnConfig.size?.paddingRight\"\n [ngClass]=\"_alignClass[columnConfig.key]\">\n <!-- \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u0439 \u0448\u0430\u0431\u043B\u043E\u043D \u044F\u0447\u0435\u0439\u043A\u0438 (ngxAurCellDef) \u0438\u043C\u0435\u0435\u0442 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442 \u043D\u0430\u0434 valueView -->\n <ng-container *ngIf=\"_cellTemplates.get(columnConfig.key) as cellTpl; else builtinCell\">\n <ng-container *ngTemplateOutlet=\"cellTpl; context: cellCtx(element, columnConfig.key)\"></ng-container>\n </ng-container>\n <ng-template #builtinCell>\n <!-- \u043A\u043E\u043B\u043E\u043D\u043A\u0438 \u0431\u0435\u0437 valueView \u043C\u0438\u043D\u0443\u044E\u0442 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u044B \u044F\u0447\u0435\u0439\u043A\u0438: \u043B\u0451\u0433\u043A\u0438\u0439 span \u0434\u0435\u0448\u0435\u0432\u043B\u0435 \u043F\u0430\u0440\u044B \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u043E\u0432 \u0441 \u043E\u0431\u0451\u0440\u0442\u043A\u0430\u043C\u0438 -->\n <lib-column-view *ngIf=\"columnConfig.valueView; else plainCell\"\n [config]=\"tableView[element.id]?.get(columnConfig.key)\"\n [value]=\"element | dataPropertyGetter: columnConfig.key\">\n </lib-column-view>\n <ng-template #plainCell>\n <span class=\"aur-plain-cell\">{{ element | dataPropertyGetter: columnConfig.key }}</span>\n </ng-template>\n </ng-template>\n </td>\n\n <td mat-footer-cell *matFooterCellDef\n [style.width]=\"columnConfig.size?.width\"\n [style.min-width]=\"columnConfig.size?.minWidth\"\n [style.max-width]=\"columnConfig.size?.maxWidth\"\n [class.aur-col-fit]=\"columnConfig.size?.fit\"\n [style.--aur-cell-padding-left]=\"columnConfig.size?.paddingLeft\"\n [style.--aur-cell-padding-right]=\"columnConfig.size?.paddingRight\"\n [ngClass]=\"_alignClass[columnConfig.key]\">\n {{ totalRowProvider.totals.get(columnConfig.key) ?? '' }}\n </td>\n\n </ng-container>\n\n <!-- extra header top cell (\u0434\u0435\u0444\u044B \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043C \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0438 \u043D\u0430\u043B\u0438\u0447\u0438\u0438 \u0448\u0430\u0431\u043B\u043E\u043D\u0430)-->\n <ng-container *ngIf=\"extraHeaderCellTopTemplate\">\n <ng-container *ngFor=\"let extraTopCell of _displayExtraHeaderTopCell; let index = index\"\n [matColumnDef]=\"extraTopCell\">\n <th mat-header-cell *matHeaderCellDef>\n <ng-container\n *ngTemplateOutlet=\"extraHeaderCellTopTemplate; context: {key: extraTopCell.replace(EXTRA_HEADER_CELL_TOP_SUFFIX, ''), index: index}\"></ng-container>\n </th>\n </ng-container>\n </ng-container>\n\n\n <!-- extra header bottom cell (\u0434\u0435\u0444\u044B \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043C \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0438 \u043D\u0430\u043B\u0438\u0447\u0438\u0438 \u0448\u0430\u0431\u043B\u043E\u043D\u0430)-->\n <ng-container *ngIf=\"extraHeaderCellBottomTemplate\">\n <ng-container *ngFor=\"let extraBottomCell of _displayExtraHeaderBottomCell; let index = index\"\n [matColumnDef]=\"extraBottomCell\">\n <th mat-header-cell *matHeaderCellDef>\n <ng-container\n *ngTemplateOutlet=\"extraHeaderCellBottomTemplate; context: {key: extraBottomCell.replace(EXTRA_HEADER_CELL_BOTTOM_SUFFIX, ''), index: index}\"></ng-container>\n </th>\n </ng-container>\n </ng-container>\n\n <!-- extra header top row-->\n <ng-container *ngIf=\"extraHeaderCellTopTemplate\">\n <tr mat-header-row *matHeaderRowDef=\"_displayExtraHeaderTopCell; sticky: this.tableConfig.stickyCfg?.header\"\n class=\"extra-header-top-row\">\n </tr>\n </ng-container>\n\n <!-- header row-->\n <tr mat-header-row *matHeaderRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.header\"\n [style]=\"_headerStyle\" [ngClass]=\"_headerClass\">\n </tr>\n\n <!-- extra header bottom row -->\n <ng-container *ngIf=\"extraHeaderCellBottomTemplate\">\n <tr mat-header-row\n *matHeaderRowDef=\"_displayExtraHeaderBottomCell; sticky: this.tableConfig.stickyCfg?.header\">\n </tr>\n </ng-container>\n\n <tr mat-row #rowLink\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop($event, row)\"\n *matRowDef=\"let row; columns: _displayColumns;\"\n (click)=\"handleRowClick(row)\"\n (keydown)=\"handleRowKeydown($event, row)\"\n [attr.tabindex]=\"_rowsInteractive ? 0 : null\"\n [attr.aria-current]=\"highlighted === row.rowSrc ? 'true' : null\"\n (mouseenter)=\"onRowEnter(row)\"\n (mouseleave)=\"onRowLeave(row)\"\n [ngClass]=\"rowNgClass(row)\"\n [style]=\"rowStyle(row)\">\n </tr>\n\n <!--expanded-row (\u0434\u0435\u0444 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043C \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0438 \u043D\u0430\u043B\u0438\u0447\u0438\u0438 \u0448\u0430\u0431\u043B\u043E\u043D\u0430)-->\n <ng-container *ngIf=\"extendedRowTemplate\">\n <ng-container matColumnDef=\"expandedRow\">\n <td mat-cell class=\"expanded-cell\" *matCellDef=\"let element\" [attr.colspan]=\"_displayColumns.length\"\n style=\"padding-right: 0!important;\">\n <div class=\"row-detail\"\n [@detailExpand]=\"element.rowSrc === highlighted ? expandedStateEnum.EXPANDED : expandedStateEnum.COLLAPSED\">\n <!-- timeline continuation -->\n <div *ngIf=\"timelineProvider.isEnabled\"\n class=\"aur-timeline-continuation\"\n [style.border-left-width.px]=\"timelineProvider.line.width\"\n [style.border-left-color]=\"_timelineGaps.get(element.id)?.bottomColor ?? timelineProvider.line.color\"\n [style.border-left-style]=\"_timelineGaps.get(element.id)?.bottomGap ? timelineProvider.line.gapStyle : timelineProvider.line.style\">\n </div>\n <!-- lazy-load of details -->\n <ng-container *ngIf=\"element.rowSrc === highlighted\">\n <ng-container *ngTemplateOutlet=\"extendedRowTemplate; context: {$implicit: element}\"></ng-container>\n </ng-container>\n </div>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"extendedRowTemplate\">\n <tr mat-row class=\"expanded-row\" *matRowDef=\"let row; columns: ['expandedRow']\"></tr>\n </ng-container>\n <!--expanded-row-->\n\n <ng-container *ngIf=\"totalRowProvider.isEnabled\">\n <tr mat-footer-row *matFooterRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.total\"\n [style]=\"_totalStyle\" [ngClass]=\"_totalClass\"\n [style.display]=\"isTotalRowVisible() ? null : 'none'\"></tr>\n </ng-container>\n\n <!--sub-footer-row (\u0434\u0435\u0444 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043C \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0438 \u043D\u0430\u043B\u0438\u0447\u0438\u0438 \u043A\u043E\u043D\u0442\u0435\u043D\u0442\u0430)-->\n <ng-container *ngIf=\"subFooterRowTemplate\">\n <ng-container matColumnDef=\"subFooterRow\">\n <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"_displayColumns.length\">\n <ng-container>\n <ng-content select=\"[ngxAurTableSubFooterRow]\"></ng-content>\n </ng-container>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"subFooterRowTemplate\">\n <tr mat-footer-row *matFooterRowDef=\"['subFooterRow']; sticky: this.tableConfig.stickyCfg?.subFooter\"></tr>\n </ng-container>\n <!-- sub-footer-row END-->\n </table>\n </div>\n </ng-container>\n\n <!-- Pagination -->\n @if (this.paginationProvider.isEnabled && !externalPaginator) {\n <mat-paginator [ngClass]=\"{'hidePaginator': isTableBodyHide}\"\n [pageSizeOptions]=\"paginationProvider.sizes\"\n [pageSize]=\"paginationProvider.size\"\n [style]=\"tableConfig?.paginationCfg?.style\"\n [length]=\"paginatorState?.length\"\n [pageIndex]=\"paginatorState?.pageIndex\"\n (page)=\"onPageChangeInternal($event)\"\n [showFirstLastButtons]=\"tableConfig.paginationCfg?.showFirstLastButtons !== false\">\n </mat-paginator>\n }\n</div>\n", styles: ["@charset \"UTF-8\";.aur-mat-table{display:flex;flex-direction:column}.aur-mat-table.sticky-pagination{height:100%}.aur-mat-table table{border-collapse:collapse}.aur-mat-table .table-container{position:relative}.aur-mat-table .table-container.sticky-pagination{flex-grow:1;overflow:auto}.aur-mat-table th,.aur-mat-table td{padding-right:var(--aur-cell-padding-right, 4px)!important;padding-left:var(--aur-cell-padding-left, 4px)!important}.aur-mat-table .new-color td.mat-mdc-cell,.aur-mat-table .new-color td.mat-mdc-footer-cell{color:inherit}.aur-mat-table mat-form-field{width:100%}.aur-mat-table th.aur-align-center,.aur-mat-table td.aur-align-center{text-align:center}.aur-mat-table th.aur-align-right,.aur-mat-table td.aur-align-right{text-align:right}.aur-mat-table th.aur-align-center ::ng-deep .mat-sort-header-container{justify-content:center}.aur-mat-table th.aur-align-right ::ng-deep .mat-sort-header-container{justify-content:flex-end}.aur-mat-table .aur-col-fit{width:1%;white-space:nowrap}.aur-mat-table .pointer{cursor:pointer}.aur-mat-table .flex-container{display:flex;align-items:center}.aur-mat-table .aur-plain-cell{margin-left:4px}.aur-mat-table .expanded-row{height:0}.aur-mat-table .expanded-row .expanded-cell{padding-right:0!important;padding-left:0!important}.aur-mat-table .row-detail{overflow:hidden;display:flex}.aur-mat-table .clear-bottom-border{border-bottom:none}.aur-mat-table .table-settings-button{position:absolute;right:4px;top:12px;cursor:pointer;border-radius:4px;padding-bottom:2px;padding-top:2px;z-index:9999999999}.aur-mat-table table.aur-has-header-button .mat-mdc-header-row th:last-child{padding-right:var(--aur-last-header-padding-right, 25px)!important}.aur-mat-table .search-container{display:flex;gap:8px;align-items:center}.aur-mat-table .extra-header-top-row th{border-bottom:none}.aur-mat-table .drag-icon{cursor:grab}.hide-table-body tr:not(.mat-mdc-header-row){display:none!important}.hidePaginator{display:none}.aur-mat-table .drag-column{padding-left:8px;padding-right:8px;width:35px}.aur-mat-table .aur-timeline-cell{width:40px;min-width:40px;max-width:40px;padding:0!important}.aur-mat-table .aur-timeline-marker-container{display:flex;flex-direction:column;align-items:center;height:100%;min-height:48px}.aur-mat-table .aur-timeline-line{flex:1;min-height:8px}.aur-mat-table .aur-timeline-marker-default{width:12px;height:12px;border-radius:50%;flex-shrink:0}.aur-mat-table .aur-timeline-continuation{border-left-style:solid;align-self:stretch;margin-left:20px;flex-shrink:0}.aur-mat-table tr.mat-mdc-row:focus-visible{outline:2px solid currentColor;outline-offset:-2px}\n"] }]
1793
1843
  }], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }], propDecorators: { displayColumns: [{
1794
1844
  type: Input
1795
1845
  }], subFooterRowTemplate: [{
1796
1846
  type: ContentChild,
1797
1847
  args: [NgxTableSubFooterRowDirective]
1848
+ }], cellDefs: [{
1849
+ type: ContentChildren,
1850
+ args: [NgxAurCellDefDirective, { descendants: true }]
1798
1851
  }], extraHeaderCellTopTemplate: [{
1799
1852
  type: Input
1800
1853
  }], extraHeaderCellBottomTemplate: [{
@@ -1895,7 +1948,8 @@ class NgxAurMatTableModule {
1895
1948
  IconViewComponent,
1896
1949
  NgxTableSubFooterRowDirective,
1897
1950
  NgxAurTableSearchPrefixDirective,
1898
- NgxAurTableSearchSuffixDirective], imports: [CommonModule,
1951
+ NgxAurTableSearchSuffixDirective,
1952
+ NgxAurCellDefDirective], imports: [CommonModule,
1899
1953
  MatIconModule,
1900
1954
  MatTableModule,
1901
1955
  MatPaginatorModule,
@@ -1909,7 +1963,8 @@ class NgxAurMatTableModule {
1909
1963
  DataPropertyGetterPipe,
1910
1964
  NgxTableSubFooterRowDirective,
1911
1965
  NgxAurTableSearchPrefixDirective,
1912
- NgxAurTableSearchSuffixDirective] }); }
1966
+ NgxAurTableSearchSuffixDirective,
1967
+ NgxAurCellDefDirective] }); }
1913
1968
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: NgxAurMatTableModule, imports: [CommonModule,
1914
1969
  MatIconModule,
1915
1970
  MatTableModule,
@@ -1932,7 +1987,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
1932
1987
  IconViewComponent,
1933
1988
  NgxTableSubFooterRowDirective,
1934
1989
  NgxAurTableSearchPrefixDirective,
1935
- NgxAurTableSearchSuffixDirective
1990
+ NgxAurTableSearchSuffixDirective,
1991
+ NgxAurCellDefDirective
1936
1992
  ],
1937
1993
  imports: [
1938
1994
  CommonModule,
@@ -1952,7 +2008,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
1952
2008
  DataPropertyGetterPipe,
1953
2009
  NgxTableSubFooterRowDirective,
1954
2010
  NgxAurTableSearchPrefixDirective,
1955
- NgxAurTableSearchSuffixDirective
2011
+ NgxAurTableSearchSuffixDirective,
2012
+ NgxAurCellDefDirective
1956
2013
  ]
1957
2014
  }]
1958
2015
  }] });
@@ -2228,5 +2285,5 @@ var NgxAurFilters;
2228
2285
  * Generated bundle index. Do not edit.
2229
2286
  */
2230
2287
 
2231
- export { AurDragDropManager, DataPropertyGetterPipe, IndexProvider, IndexProviderDummy, NgxAurFilters, NgxAurMatTableComponent, NgxAurMatTableModule, NgxAurTableConfigUtil, NgxAurTablePageEventUtils, NgxAurTableSearchPrefixDirective, NgxAurTableSearchSuffixDirective, NgxTableSubFooterRowDirective, PaginatorState, RowActionProvider, RowActionProviderDummy, SelectionProvider, SelectionProviderDummy, ServerPageController, StyleBuilder, TableRow, TimelineProvider, TimelineProviderDummy };
2288
+ export { AurDragDropManager, DataPropertyGetterPipe, IndexProvider, IndexProviderDummy, NgxAurCellDefDirective, NgxAurFilters, NgxAurMatTableComponent, NgxAurMatTableModule, NgxAurTableConfigUtil, NgxAurTablePageEventUtils, NgxAurTableSearchPrefixDirective, NgxAurTableSearchSuffixDirective, NgxTableSubFooterRowDirective, PaginatorState, RowActionProvider, RowActionProviderDummy, SelectionProvider, SelectionProviderDummy, ServerPageController, StyleBuilder, TableRow, TimelineProvider, TimelineProviderDummy };
2232
2289
  //# sourceMappingURL=ngx-aur-mat-table.mjs.map