ngx-aur-mat-table 17.2.2-2 → 17.2.2-21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/esm2022/lib/drag-drop/aur-drag-drop-component.mjs +1 -1
  2. package/esm2022/lib/drag-drop/aur-drag-drop.manager.mjs +85 -54
  3. package/esm2022/lib/drag-drop/can-drop-manager.mjs +29 -0
  4. package/esm2022/lib/drag-drop/drag-drop-mapping-manager.mjs +29 -0
  5. package/esm2022/lib/drag-drop/drag-preview-manager.mjs +39 -0
  6. package/esm2022/lib/drag-drop/model/aur-drag-drop-mapping.mjs +2 -0
  7. package/esm2022/lib/drag-drop/model/aur-drag-preview-component.mjs +2 -0
  8. package/esm2022/lib/model/ColumnConfig.mjs +1 -1
  9. package/esm2022/lib/ngx-aur-mat-table.component.mjs +21 -14
  10. package/esm2022/lib/providers/DragDropProvider.mjs +11 -7
  11. package/esm2022/lib/providers/SelectionProvider.mjs +4 -1
  12. package/esm2022/lib/providers/TotalRowProvider.mjs +4 -3
  13. package/esm2022/public-api.mjs +4 -2
  14. package/fesm2022/ngx-aur-mat-table.mjs +203 -63
  15. package/fesm2022/ngx-aur-mat-table.mjs.map +1 -1
  16. package/lib/drag-drop/aur-drag-drop-component.d.ts +1 -1
  17. package/lib/drag-drop/aur-drag-drop.manager.d.ts +55 -56
  18. package/lib/drag-drop/can-drop-manager.d.ts +8 -0
  19. package/lib/drag-drop/drag-drop-mapping-manager.d.ts +9 -0
  20. package/lib/drag-drop/drag-preview-manager.d.ts +11 -0
  21. package/lib/drag-drop/model/aur-drag-drop-mapping.d.ts +44 -0
  22. package/lib/drag-drop/model/aur-drag-preview-component.d.ts +13 -0
  23. package/lib/model/ColumnConfig.d.ts +6 -1
  24. package/lib/ngx-aur-mat-table.component.d.ts +5 -3
  25. package/lib/providers/DragDropProvider.d.ts +9 -7
  26. package/lib/providers/SelectionProvider.d.ts +1 -0
  27. package/package.json +1 -1
  28. package/public-api.d.ts +3 -1
@@ -8,6 +8,7 @@ import * as i4 from '@angular/material/paginator';
8
8
  import { MatPaginator, MatPaginatorModule } from '@angular/material/paginator';
9
9
  import { SelectionModel } from '@angular/cdk/collections';
10
10
  import { trigger, state, style, transition, animate } from '@angular/animations';
11
+ import { first, finalize } from 'rxjs';
11
12
  import * as i1 from '@angular/common';
12
13
  import { CommonModule } from '@angular/common';
13
14
  import * as i2 from '@angular/material/icon';
@@ -138,6 +139,9 @@ class SelectionProvider extends AbstractProvider {
138
139
  isAllSelected() {
139
140
  return this.tableDataSource.filteredData.every(r => this.selection.isSelected(r.rowSrc));
140
141
  }
142
+ getSelectedRows() {
143
+ return this.tableDataSource.filteredData.filter(row => this.selection.isSelected(row.rowSrc));
144
+ }
141
145
  static canEnable(tableConfig) {
142
146
  return (tableConfig.selectionCfg && tableConfig.selectionCfg.enable) || false;
143
147
  }
@@ -465,7 +469,7 @@ class TotalRowProvider extends AbstractProvider {
465
469
  this.totals = new Map();
466
470
  }
467
471
  setStyle() {
468
- this.style = this.tableConfig.tableView?.totalRowView?.style;
472
+ this.style = this.tableConfig.totalRowCfg?.totalRowView?.style;
469
473
  return this;
470
474
  }
471
475
  setTotalRow() {
@@ -480,7 +484,8 @@ class TotalRowProvider extends AbstractProvider {
480
484
  return tableConfig.columnsCfg.some(col => col.totalConverter);
481
485
  }
482
486
  static create(tableConfig, tableDataSource) {
483
- if (TotalRowProvider.canEnable(tableConfig)) {
487
+ const enabled = tableConfig.totalRowCfg?.enable ?? true;
488
+ if (enabled && TotalRowProvider.canEnable(tableConfig)) {
484
489
  return new TotalRowProvider(tableConfig, tableDataSource);
485
490
  }
486
491
  return new TotalRowProviderDummy();
@@ -535,65 +540,189 @@ class HeaderButtonProviderDummy extends HeaderButtonProvider {
535
540
  }
536
541
  }
537
542
 
538
- class AurDragDropManager {
543
+ class CanDropManager {
539
544
  constructor(mappings) {
540
- this.mappings = mappings;
541
545
  //can drop [key from table, value to table name]
542
546
  this.canDropStorage = new Map();
543
- this.mappings.forEach(m => {
544
- this.canDropStorage.set(m.sourceName, new Set());
545
- });
546
- this.mappings.forEach(m => {
547
+ this.fillStorage(mappings);
548
+ }
549
+ fillStorage(mappings) {
550
+ mappings.forEach(m => {
551
+ if (!this.canDropStorage.has(m.sourceName)) {
552
+ this.canDropStorage.set(m.sourceName, new Set());
553
+ }
547
554
  this.canDropStorage.get(m.sourceName).add(m.targetName);
548
555
  });
549
556
  }
550
- startDrag(targetName, data) {
551
- this.dragStartCtx = { name: targetName, data: data };
557
+ canDrop(sourceName, targetName) {
558
+ if (!sourceName || !targetName) {
559
+ return false;
560
+ }
561
+ return this.canDropStorage.get(sourceName)?.has(targetName) ?? false;
552
562
  }
553
- endDrag(sourceDataset) {
554
- return this.endDragInternal({
555
- targetData: this.dragEndCtx.data,
556
- targetName: this.dragEndCtx.name,
557
- sourceData: this.dragStartCtx.data,
558
- sourceName: this.dragStartCtx.name,
559
- sourceDataset: sourceDataset
563
+ dropPreventDefault(sourceName, targetName, $event) {
564
+ const canDrop = this.canDrop(sourceName, targetName);
565
+ if (canDrop) {
566
+ $event.preventDefault();
567
+ }
568
+ return canDrop;
569
+ }
570
+ }
571
+
572
+ class DragPreviewManager {
573
+ constructor(viewContainerRef, mappings) {
574
+ this.viewContainerRef = viewContainerRef;
575
+ this.previewStorage = new Map();
576
+ this.fillStorage(mappings);
577
+ }
578
+ fillStorage(mappings) {
579
+ mappings.forEach(m => {
580
+ if (this.previewStorage.has(m.sourceName)) {
581
+ console.log(`WARN: Duplicate drag preview mapping for source ${m.sourceName}`);
582
+ }
583
+ this.previewStorage.set(m.sourceName, m.preview);
560
584
  });
561
585
  }
562
- endDragInternal(grabCtx) {
563
- let mapping = this.mappings.find(m => m.sourceName === grabCtx.sourceName && m.targetName === grabCtx.targetName);
564
- let mappedData = mapping.grabFn(grabCtx);
565
- this.dragStartCtx = undefined;
566
- this.dragEndCtx = undefined;
567
- return mappedData;
586
+ showPreview(sourceName, event, draggedData) {
587
+ this.previewStorage.forEach((k, v) => console.log('key', k, 'value', v));
588
+ let previewConstructor = this.previewStorage.get(sourceName);
589
+ if (previewConstructor) {
590
+ // Динамически создаем компонент превью
591
+ this.currentPreviewComponentRef = this.viewContainerRef.createComponent(previewConstructor);
592
+ this.currentPreviewComponentRef.instance.data = draggedData;
593
+ const nativePreview = this.currentPreviewComponentRef.location.nativeElement;
594
+ // Применение необходимых стилей к элементу превью
595
+ nativePreview.style.position = 'absolute';
596
+ nativePreview.style.top = '0';
597
+ nativePreview.style.left = '-9999px'; // Скрыть элемент за пределами экрана
598
+ document.body.appendChild(nativePreview); // Временно добавляем в DOM для отображения
599
+ event.dataTransfer?.setDragImage(nativePreview, 0, 0);
600
+ }
601
+ }
602
+ removePreview() {
603
+ if (this.currentPreviewComponentRef) {
604
+ document.body.removeChild(this.currentPreviewComponentRef.location.nativeElement);
605
+ this.currentPreviewComponentRef.destroy();
606
+ this.currentPreviewComponentRef = undefined;
607
+ }
568
608
  }
569
- canDrop(tableName, $event) {
570
- if (this.canDropStorage.get(this.dragStartCtx.name)?.has(tableName) ?? false) {
571
- $event.preventDefault();
609
+ }
610
+
611
+ class DragDropMappingManager {
612
+ constructor(mappings) {
613
+ this.mappingsStorage = new Map();
614
+ this.fillStorage(mappings);
615
+ }
616
+ get(sourceName, targetName) {
617
+ const mapping = this.mappingsStorage.get(this.buildKey(sourceName, targetName));
618
+ if (!mapping) {
619
+ throw new Error(`Mapping for ${sourceName} -> ${targetName} was not found`);
572
620
  }
621
+ return mapping;
573
622
  }
574
- onDrop(targetDataset, targetName, targetData) {
575
- return this.onDropInternal({
576
- sourceName: this.dragStartCtx.name,
577
- sourceData: this.dragStartCtx.data,
578
- targetName: targetName,
579
- targetData: targetData,
580
- targetDataset: targetDataset
623
+ fillStorage(mappings) {
624
+ mappings.forEach(mapping => {
625
+ const key = this.buildKeyForMapping(mapping);
626
+ if (this.mappingsStorage.has(key)) {
627
+ console.log(`WARN: duplicate drag drop mapping: ${key}`);
628
+ }
629
+ this.mappingsStorage.set(key, mapping);
581
630
  });
582
631
  }
583
- onDropInternal(dropCtx) {
584
- let mapping = this.mappings.find(m => m.sourceName === dropCtx.sourceName && m.targetName === dropCtx.targetName);
585
- let mappedData = mapping.dropFn(dropCtx);
586
- this.dragEndCtx = {
587
- name: dropCtx.targetName,
588
- data: dropCtx.targetData
589
- };
590
- return mappedData;
632
+ buildKeyForMapping(mapping) {
633
+ return this.buildKey(mapping.sourceName, mapping.targetName);
591
634
  }
592
- get draggableTableNames() {
593
- return this.mappings?.map(mapping => mapping.sourceName) || [];
635
+ buildKey(sourceName, targetName) {
636
+ return `${sourceName}->${targetName}`;
594
637
  }
638
+ }
639
+
640
+ /**
641
+ * Manages the drag-and-drop process, including start, drop, and end events.
642
+ * Handles drag previews, drop validation, and dataset updates after a successful drop.
643
+ */
644
+ class AurDragDropManager {
645
+ /**
646
+ * Creates an empty instance of AurDragDropManager.
647
+ * @returns {AurDragDropManager} - An empty manager with no initialized references.
648
+ */
595
649
  static empty() {
596
- return new AurDragDropManager([]);
650
+ return new AurDragDropManager(undefined, [], []);
651
+ }
652
+ constructor(viewContainerRef, mappings, previewMappings) {
653
+ this.mappings = mappings;
654
+ this.previewMappings = previewMappings;
655
+ this.canDropManager = new CanDropManager(mappings);
656
+ this.previewManager = new DragPreviewManager(viewContainerRef, this.previewMappings);
657
+ this.mappingManager = new DragDropMappingManager(mappings);
658
+ }
659
+ /**
660
+ * Returns the list of all available draggable source names.
661
+ * @returns {string[]} - Array of source names.
662
+ */
663
+ get draggableSourceNames() {
664
+ return this.mappings?.map(mapping => mapping.sourceName) || [];
665
+ }
666
+ /**
667
+ * Initiates a drag operation, saving the context and showing a drag preview.
668
+ * @param {string} sourceName - The name of the drag source.
669
+ * @param {unknown[]} draggedData - The data being dragged.
670
+ * @param {DragEvent} event - The drag event.
671
+ * @throws Error if a drag is already in progress.
672
+ */
673
+ startDrag(sourceName, draggedData, event) {
674
+ if (this.startDragEvent) {
675
+ throw new Error('Start new drag before complete current');
676
+ }
677
+ this.startDragEvent = { sourceName, draggedData };
678
+ this.previewManager.showPreview(sourceName, event, draggedData);
679
+ }
680
+ /**
681
+ * Validates whether a drop is allowed on the target element by calling preventDefault.
682
+ * @param {string} targetName - The name of the target element.
683
+ * @param {DragEvent} event - The drag event.
684
+ */
685
+ canDropPreventDefault(targetName, event) {
686
+ if (!this.startDragEvent) {
687
+ // перетаскивание не начато
688
+ return;
689
+ }
690
+ this.canDropManager.dropPreventDefault(this.startDragEvent.sourceName, targetName, event);
691
+ }
692
+ /**
693
+ * Executes the drop operation on the specified target.
694
+ * @param {string} targetName - The name of the target element.
695
+ * @param {any} targetData - The data for the target element.
696
+ */
697
+ drop(targetName, targetData) {
698
+ this.dropEvent = { targetName, targetData };
699
+ }
700
+ /**
701
+ * Ends the drag operation and updates the dataset if the drop was successful.
702
+ */
703
+ endDrag() {
704
+ this.previewManager.removePreview();
705
+ if (!this.dropEvent || !this.startDragEvent) {
706
+ return;
707
+ }
708
+ const mapping = this.getMapping(this.startDragEvent.sourceName, this.dropEvent.targetName);
709
+ const dropContext = this.buildDropContext();
710
+ mapping.afterDropFn(dropContext)?.pipe(first())
711
+ .pipe(finalize(() => {
712
+ this.dropEvent = undefined;
713
+ this.startDragEvent = undefined;
714
+ })).subscribe();
715
+ }
716
+ buildDropContext() {
717
+ return {
718
+ targetName: this.dropEvent.targetName,
719
+ targetData: this.dropEvent.targetData,
720
+ sourceName: this.startDragEvent.sourceName,
721
+ sourceData: this.startDragEvent.draggedData,
722
+ };
723
+ }
724
+ getMapping(sourceName, targetName) {
725
+ return this.mappingManager.get(sourceName, targetName);
597
726
  }
598
727
  }
599
728
 
@@ -601,17 +730,19 @@ class DragDropProvider extends AbstractProvider {
601
730
  static { this.DEFAULT_ICON_VIEW = {
602
731
  name: 'drag_handle'
603
732
  }; }
604
- constructor(tableName, dragCfg) {
733
+ constructor(viewContainerRef, tableName, dragCfg) {
605
734
  super();
735
+ this.viewContainerRef = viewContainerRef;
606
736
  this.tableName = tableName;
607
- this.dragCfg = dragCfg;
608
737
  this.isEnabled = true;
609
738
  this.COLUMN_NAME = 'tbl_drag_col';
610
739
  this.draggable = false;
611
740
  this.dragIconView = DragDropProvider.DEFAULT_ICON_VIEW;
741
+ this.multiple = false;
612
742
  // здесь заполнить конфиг значениями по умолчанию если такие появятся
613
743
  this.manager = dragCfg?.manager ?? AurDragDropManager.empty();
614
- this.draggable = (new Set(this.manager.draggableTableNames)).has(tableName);
744
+ this.multiple = dragCfg?.multiple ?? false;
745
+ this.draggable = (new Set(this.manager.draggableSourceNames)).has(tableName);
615
746
  this.dragIconView = dragCfg?.dragIcon ?? DragDropProvider.DEFAULT_ICON_VIEW;
616
747
  }
617
748
  addColumn(columns) {
@@ -626,9 +757,10 @@ class DragDropProvider extends AbstractProvider {
626
757
  * @param tableConfig The configuration of the table.
627
758
  * @returns An instance of IndexProvider or IndexProviderDummy.
628
759
  */
629
- static create(tableConfig) {
760
+ static create(viewContainerRef, tableConfig) {
630
761
  if (DragDropProvider.canCreate(tableConfig)) {
631
- return new DragDropProvider(tableConfig.name ?? 'unknown-table', tableConfig.dragCfg);
762
+ // @ts-ignore
763
+ return new DragDropProvider(viewContainerRef, tableConfig.name ?? 'unknown-table', tableConfig.dragCfg);
632
764
  }
633
765
  return new DragProviderDummy();
634
766
  }
@@ -638,7 +770,8 @@ class DragDropProvider extends AbstractProvider {
638
770
  }
639
771
  class DragProviderDummy extends DragDropProvider {
640
772
  constructor() {
641
- super('dummy-unknown-name');
773
+ // @ts-ignore
774
+ super(undefined, 'dummy-unknown-name');
642
775
  this.isEnabled = false;
643
776
  }
644
777
  addColumn(columns) {
@@ -712,7 +845,9 @@ class NgxAurMatTableComponent {
712
845
  this._customDisplayColumnsEnabled = columns && columns.length > 0;
713
846
  }
714
847
  }
715
- constructor() {
848
+ constructor(viewContainerRef, cdr) {
849
+ this.viewContainerRef = viewContainerRef;
850
+ this.cdr = cdr;
716
851
  this.expandedStateEnum = ExpandState;
717
852
  this.EXTRA_HEADER_CELL_TOP_SUFFIX = '_extra_header_cell_top';
718
853
  this.EXTRA_HEADER_CELL_BOTTOM_SUFFIX = '_extra_header_cell_bottom';
@@ -847,8 +982,6 @@ class NgxAurMatTableComponent {
847
982
  this.initPaginator();
848
983
  }
849
984
  this.initSortingDataAccessor();
850
- this.dragDropProvider = DragDropProvider.create(this.tableConfig)
851
- .addColumn(this._displayColumns);
852
985
  this.indexProvider = IndexProvider.create(this.tableConfig)
853
986
  .addIndexColumn(this._displayColumns);
854
987
  this.rowActionsProvider = RowActionProvider.create(this.tableConfig)
@@ -862,6 +995,8 @@ class NgxAurMatTableComponent {
862
995
  .setStyle()
863
996
  .setTotalRow();
864
997
  this.headerButtonProvider = new HeaderButtonProvider(this.tableConfig.tableHeaderButtonCfg);
998
+ this.dragDropProvider = DragDropProvider.create(this.viewContainerRef, this.tableConfig)
999
+ .addColumn(this._displayColumns);
865
1000
  this.emitFilteredValues();
866
1001
  this._displayExtraHeaderTopCell = this._displayColumns.map(col => col + this.EXTRA_HEADER_CELL_TOP_SUFFIX);
867
1002
  this._displayExtraHeaderBottomCell = this._displayColumns.map(col => col + this.EXTRA_HEADER_CELL_BOTTOM_SUFFIX);
@@ -949,21 +1084,26 @@ class NgxAurMatTableComponent {
949
1084
  this.resizeColumnOffsetsObserver.disconnect();
950
1085
  }
951
1086
  onDragStart($event, row) {
952
- this.dragDropProvider.manager.startDrag(this._tableName, row);
1087
+ if (this.selectionProvider.isEnabled && this.dragDropProvider.multiple && this.selectionProvider.selection.selected.length > 1) {
1088
+ let selectedRows = this.selectionProvider.getSelectedRows();
1089
+ if (selectedRows.find(r => r.id === row.id)) {
1090
+ this.dragDropProvider.manager.startDrag(this._tableName, selectedRows, $event);
1091
+ return;
1092
+ }
1093
+ }
1094
+ this.dragDropProvider.manager.startDrag(this._tableName, [row], $event);
953
1095
  }
954
1096
  onDragOver($event) {
955
- this.dragDropProvider.manager.canDrop(this._tableName, $event);
1097
+ this.dragDropProvider.manager.canDropPreventDefault(this._tableName, $event);
956
1098
  }
957
1099
  onDrop($event, row) {
958
- this.tableData = this.dragDropProvider.manager.onDrop(this.tableDataSource.data, this._tableName, row).map(row => row.rowSrc);
959
- this.refreshTable();
1100
+ this.dragDropProvider.manager.drop(this._tableName, row);
960
1101
  }
961
1102
  onDragEnd($event, row) {
962
- this.tableData = this.dragDropProvider.manager.endDrag(this.tableDataSource.data).map(row => row.rowSrc);
963
- this.refreshTable();
1103
+ this.dragDropProvider.manager.endDrag();
964
1104
  }
965
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: NgxAurMatTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
966
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: NgxAurMatTableComponent, selector: "aur-mat-table", inputs: { displayColumns: "displayColumns", extraHeaderCellTopTemplate: "extraHeaderCellTopTemplate", extraHeaderCellBottomTemplate: "extraHeaderCellBottomTemplate", tableConfig: "tableConfig", tableData: "tableData", extendedRowTemplate: "extendedRowTemplate", paginatorState: "paginatorState", isTableBodyHide: "isTableBodyHide", highlight: "highlight" }, outputs: { sort: "sort", pageChange: "pageChange", onRowAction: "onRowAction", selected: "selected", onSelect: "onSelect", onDeselect: "onDeselect", onSelectedRowsAction: "onSelectedRowsAction", selectionModel: "selectionModel", onRowClick: "onRowClick", onFilter: "onFilter", columnOffsets: "columnOffsets", onHeaderButton: "onHeaderButton" }, 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\"\r\n [ngClass]=\"{'bottom-pagination': paginationProvider.isEnabled && paginationProvider.position === 'bottom'}\">\r\n <ng-container>\r\n <!-- Filter -->\r\n <ng-container *ngIf=\"tableConfig.filterCfg\">\r\n <div class=\"search-container\">\r\n <ng-container>\r\n <ng-content select=\"[ngxAurTableSearchPrefix]\"></ng-content>\r\n </ng-container>\r\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\r\n <mat-label>{{ tableConfig.filterCfg?.label }}</mat-label>\r\n <input matInput (keyup)=\"applySearchFilter($event)\"\r\n placeholder=\"{{tableConfig.filterCfg?.placeholder}}\"\r\n style=\"font-size: 18px;\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n </mat-form-field>\r\n <ng-container>\r\n <ng-content select=\"[ngxAurTableSearchSuffix]\"></ng-content>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div class=\"table-container\"\r\n [ngClass]=\"{'bottom-pagination': paginationProvider.isEnabled && paginationProvider.position === 'bottom'}\">\r\n <mat-icon *ngIf=\"headerButtonProvider.isEnabled\"\r\n class=\"table-settings-button\"\r\n [style.color]=\"headerButtonProvider.color\"\r\n [style.background-color]=\"headerButtonProvider.background\"\r\n (click)=\"onHeaderButton.emit($event)\">\r\n {{ headerButtonProvider.icon }}\r\n </mat-icon>\r\n\r\n <!-- Table -->\r\n <table #table mat-table matSort\r\n [multiTemplateDataRows]=\"extendedRowTemplate !== null\"\r\n [dataSource]=\"tableDataSource\"\r\n (matSortChange)=\"sortTable($event)\"\r\n [style.height]=\"tableConfig.tableView?.height\"\r\n [style.max-height]=\"tableConfig.tableView?.maxHeight\"\r\n [style.min-height]=\"tableConfig.tableView?.minHeight\"\r\n [ngClass]=\"{'hide-table-body': isTableBodyHide}\">\r\n\r\n\r\n <!-- drag-column-->\r\n <ng-container *ngIf=\"dragDropProvider.isEnabled && dragDropProvider.draggable\" [matColumnDef]=\"dragDropProvider.COLUMN_NAME\">\r\n\r\n <th mat-header-cell *matHeaderCellDef>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let element;\">\r\n <lib-icon-view draggable=\"true\"\r\n class=\"drag-icon\"\r\n [view]=\"dragDropProvider.dragIconView\"\r\n (dragstart)=\"onDragStart($event, element)\"\r\n (dragend)=\"onDragEnd($event, element)\">\r\n </lib-icon-view>\r\n\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- index-column-->\r\n <ng-container *ngIf=\"indexProvider.isEnabled\" [matColumnDef]=\"indexProvider.COLUMN_NAME\">\r\n\r\n <th mat-header-cell *matHeaderCellDef>\r\n <lib-column-view [config]=\"indexProvider.headerView\">\r\n {{ indexProvider.name }}\r\n </lib-column-view>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let element;\">\r\n {{ element.id + indexProvider.offset }}\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(indexProvider.COLUMN_NAME) || '' }}\r\n </td>\r\n </ng-container>\r\n\r\n <!-- selection-column-->\r\n <ng-container [matColumnDef]=\"selectionProvider.COLUMN_NAME\" *ngIf=\"selectionProvider.isEnabled\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <div class=\"flex-container\">\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"selectionProvider.selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selectionProvider.selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n <div\r\n *ngIf=\"tableConfig.selectionCfg?.showSelectedCount && selectionProvider.selection.hasValue()\">\r\n {{ selectionProvider.selection.selected.length }}\r\n <span\r\n *ngIf=\"tableConfig.selectionCfg?.showTotalCount !== false\">/{{ paginatorState?.length ? paginatorState?.length : tableDataSource.filteredData.length }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"selectionProvider.selection.hasValue() && tableConfig?.selectionCfg?.actions\">\r\n <ng-container *ngFor=\"let action of tableConfig.selectionCfg!.actions\">\r\n <button mat-icon-button\r\n (click)=\"emitSelectedRowsAction(action.action, selectionProvider.selection.selected)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngIf=\"action.display !== 'none'\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\"\r\n (click)=\"$event.stopPropagation(); selectionProvider.selection.toggle(castSrc(row).rowSrc)\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selectionProvider.selection.toggle(castSrc(row).rowSrc) : null\"\r\n [checked]=\"selectionProvider.selection.isSelected(castSrc(row).rowSrc)\">\r\n </mat-checkbox>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- action column -->\r\n <ng-container *ngIf=\"rowActionsProvider.isEnabled\" [matColumnDef]=\"rowActionsProvider.COLUMN_NAME\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\" (click)=\"$event.stopPropagation()\" style=\"cursor: default\">\r\n <ng-container *ngFor=\"let action of rowActionsProvider.actionView.get(element.id)\">\r\n <button mat-icon-button\r\n (click)=\"emitRowAction(action.action, element.rowSrc, $event)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngIf=\"action.display !== 'none'\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </ng-container>\r\n </td>\r\n\r\n <ng-container *ngTemplateOutlet=\"footerCellTemplate; context: {$implicit: rowActionsProvider.COLUMN_NAME}\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- value-icon-->\r\n <ng-container *ngFor=\"let columnConfig of tableConfig.columnsCfg\" [matColumnDef]=\"columnConfig.key\">\r\n\r\n <!-- if sortable column header -->\r\n <ng-container *ngIf=\"columnConfig.sort && columnConfig.sort.enable; else notSortable\">\r\n <th mat-header-cell *matHeaderCellDef [mat-sort-header]=\"columnConfig.key\"\r\n [arrowPosition]=\"columnConfig.sort.position === 'right' ? 'before' : 'after'\">\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-container>\r\n\r\n <!-- else not sortable -->\r\n <ng-template #notSortable>\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-template>\r\n\r\n <!-- header value-->\r\n <ng-template #headerValue>\r\n <lib-column-view [config]=\"columnConfig.headerView\"\r\n [value]=\"columnConfig.name\">\r\n </lib-column-view>\r\n </ng-template>\r\n\r\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\r\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-->\r\n <td mat-cell *matCellDef=\"let element;\">\r\n <lib-column-view\r\n [config]=\"tableView[element.id]?.get(columnConfig.key)\"\r\n [value]=\"element | dataPropertyGetter: columnConfig.key\">\r\n </lib-column-view>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnConfig.key) || '' }}\r\n </td>\r\n\r\n </ng-container>\r\n\r\n <!-- extra header top cell-->\r\n <ng-container *ngFor=\"let extraTopCell of _displayExtraHeaderTopCell; let index = index\"\r\n [matColumnDef]=\"extraTopCell\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-container\r\n *ngTemplateOutlet=\"extraHeaderCellTopTemplate; context: {key: extraTopCell.replace(EXTRA_HEADER_CELL_TOP_SUFFIX, ''), index: index}\"></ng-container>\r\n </th>\r\n </ng-container>\r\n\r\n\r\n <!-- extra header bottom cell-->\r\n <ng-container *ngFor=\"let extraBottomCell of _displayExtraHeaderBottomCell; let index = index\"\r\n [matColumnDef]=\"extraBottomCell\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-container\r\n *ngTemplateOutlet=\"extraHeaderCellBottomTemplate; context: {key: extraBottomCell.replace(EXTRA_HEADER_CELL_BOTTOM_SUFFIX, ''), index: index}\"></ng-container>\r\n </th>\r\n </ng-container>\r\n\r\n <!-- extra header top row-->\r\n <ng-container *ngIf=\"extraHeaderCellTopTemplate\">\r\n <tr mat-header-row *matHeaderRowDef=\"_displayExtraHeaderTopCell; sticky: this.tableConfig.stickyCfg?.header\"\r\n class=\"extra-header-top-row\">\r\n </tr>\r\n </ng-container>\r\n\r\n <!-- header row-->\r\n <tr mat-header-row *matHeaderRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.header\">\r\n </tr>\r\n\r\n <!-- extra header bottom row -->\r\n <ng-container *ngIf=\"extraHeaderCellBottomTemplate\">\r\n <tr mat-header-row\r\n *matHeaderRowDef=\"_displayExtraHeaderBottomCell; sticky: this.tableConfig.stickyCfg?.header\">\r\n </tr>\r\n </ng-container>\r\n\r\n <tr mat-row #rowLink\r\n (dragover)=\"onDragOver($event)\"\r\n (drop)=\"onDrop($event, row)\"\r\n *matRowDef=\"let row; columns: _displayColumns;\"\r\n (click)=\"rowClick(row)\"\r\n [ngClass]=\"{'pointer': tableConfig.clickCfg?.pointer || false, 'new-color': highlighted===row.rowSrc && tableConfig?.clickCfg?.highlightClicked?.color}\"\r\n [ngStyle]=\"{\r\n 'color': highlighted===row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.color : undefined,\r\n 'background-color': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.background : undefined,\r\n 'border': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.border : undefined\r\n }\">\r\n </tr>\r\n\r\n <!--expanded-row-->\r\n <ng-container matColumnDef=\"expandedRow\">\r\n <td mat-cell class=\"expanded-cell\" *matCellDef=\"let element\" [attr.colspan]=\"_displayColumns.length\"\r\n style=\"padding-right: 0!important;\">\r\n <div class=\"row-detail\"\r\n [@detailExpand]=\"element.rowSrc === highlighted ? expandedStateEnum.EXPANDED : expandedStateEnum.COLLAPSED\">\r\n <!-- lazy-load of details -->\r\n <ng-container *ngIf=\"element.rowSrc === highlighted\">\r\n <ng-container *ngTemplateOutlet=\"extendedRowTemplate; context: {$implicit: element}\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"extendedRowTemplate\">\r\n <tr mat-row class=\"expanded-row\" *matRowDef=\"let row; columns: ['expandedRow']\"></tr>\r\n </ng-container>\r\n <!--expanded-row-->\r\n\r\n <ng-container *ngIf=\"totalRowProvider.isEnabled\">\r\n <tr mat-footer-row *matFooterRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.total\"\r\n [style]=\"totalRowProvider.style\"></tr>\r\n </ng-container>\r\n\r\n <!--sub-footer-row-->\r\n <ng-container matColumnDef=\"subFooterRow\">\r\n <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"_displayColumns.length\">\r\n <ng-container>\r\n <ng-content select=\"[ngxAurTableSubFooterRow]\"></ng-content>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"subFooterRowTemplate\">\r\n <tr mat-footer-row *matFooterRowDef=\"['subFooterRow']; sticky: this.tableConfig.stickyCfg?.subFooter\"></tr>\r\n </ng-container>\r\n <!-- sub-footer-row END-->\r\n </table>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Pagination -->\r\n @if (this.paginationProvider.isEnabled) {\r\n <mat-paginator [ngClass]=\"{'hidePaginator': isTableBodyHide}\"\r\n [pageSizeOptions]=\"paginationProvider.sizes\"\r\n [pageSize]=\"paginationProvider.size\"\r\n [style]=\"tableConfig?.pageableCfg?.style\"\r\n [length]=\"paginatorState?.length\"\r\n [pageIndex]=\"paginatorState?.pageIndex\"\r\n (page)=\"pageChange.emit($event)\"\r\n showFirstLastButtons>\r\n </mat-paginator>\r\n }\r\n</div>\r\n\r\n<ng-template #footerCellTemplate let-columnName>\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnName) || '' }}\r\n </td>\r\n</ng-template>\r\n", styles: [".aur-mat-table{display:flex;flex-direction:column}.aur-mat-table.bottom-pagination{height:100%}.aur-mat-table table{border-collapse:collapse}.aur-mat-table .table-container{position:relative}.aur-mat-table .table-container.bottom-pagination{flex-grow:1;overflow:auto}.aur-mat-table th,td{padding-right:4px!important;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 .text-right{text-align:right!important}.aur-mat-table .pointer:hover{background-color:#f2f2f2;cursor:pointer}.aur-mat-table .flex-container{display:flex;align-items:center}.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}.mat-mdc-header-row th:last-child{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}\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: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { 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", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { 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: [
1105
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: NgxAurMatTableComponent, deps: [{ token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
1106
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: NgxAurMatTableComponent, selector: "aur-mat-table", inputs: { displayColumns: "displayColumns", extraHeaderCellTopTemplate: "extraHeaderCellTopTemplate", extraHeaderCellBottomTemplate: "extraHeaderCellBottomTemplate", tableConfig: "tableConfig", tableData: "tableData", extendedRowTemplate: "extendedRowTemplate", paginatorState: "paginatorState", isTableBodyHide: "isTableBodyHide", highlight: "highlight" }, outputs: { sort: "sort", pageChange: "pageChange", onRowAction: "onRowAction", selected: "selected", onSelect: "onSelect", onDeselect: "onDeselect", onSelectedRowsAction: "onSelectedRowsAction", selectionModel: "selectionModel", onRowClick: "onRowClick", onFilter: "onFilter", columnOffsets: "columnOffsets", onHeaderButton: "onHeaderButton" }, 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\"\r\n [ngClass]=\"{'bottom-pagination': paginationProvider.isEnabled && paginationProvider.position === 'bottom'}\">\r\n <ng-container>\r\n <!-- Filter -->\r\n <ng-container *ngIf=\"tableConfig.filterCfg?.enable ?? false\">\r\n <div class=\"search-container\">\r\n <ng-container>\r\n <ng-content select=\"[ngxAurTableSearchPrefix]\"></ng-content>\r\n </ng-container>\r\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\r\n <mat-label>{{ tableConfig.filterCfg?.label }}</mat-label>\r\n <input matInput (keyup)=\"applySearchFilter($event)\"\r\n placeholder=\"{{tableConfig.filterCfg?.placeholder}}\"\r\n style=\"font-size: 18px;\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n </mat-form-field>\r\n <ng-container>\r\n <ng-content select=\"[ngxAurTableSearchSuffix]\"></ng-content>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div class=\"table-container\"\r\n [ngClass]=\"{'bottom-pagination': paginationProvider.isEnabled && paginationProvider.position === 'bottom'}\">\r\n <mat-icon *ngIf=\"headerButtonProvider.isEnabled\"\r\n class=\"table-settings-button\"\r\n [style.color]=\"headerButtonProvider.color\"\r\n [style.background-color]=\"headerButtonProvider.background\"\r\n (click)=\"onHeaderButton.emit($event)\">\r\n {{ headerButtonProvider.icon }}\r\n </mat-icon>\r\n\r\n <!-- Table -->\r\n <table #table mat-table matSort\r\n [multiTemplateDataRows]=\"extendedRowTemplate !== null\"\r\n [dataSource]=\"tableDataSource\"\r\n (matSortChange)=\"sortTable($event)\"\r\n [style.height]=\"tableConfig.tableView?.height\"\r\n [style.max-height]=\"tableConfig.tableView?.maxHeight\"\r\n [style.min-height]=\"tableConfig.tableView?.minHeight\"\r\n [ngClass]=\"{'hide-table-body': isTableBodyHide}\">\r\n\r\n\r\n <!-- drag-column-->\r\n <ng-container *ngIf=\"dragDropProvider.isEnabled && dragDropProvider.draggable\" [matColumnDef]=\"dragDropProvider.COLUMN_NAME\">\r\n\r\n <th mat-header-cell *matHeaderCellDef>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let element;\" class=\"drag-column\">\r\n <lib-icon-view draggable=\"true\"\r\n class=\"drag-icon\"\r\n [view]=\"dragDropProvider.dragIconView\"\r\n (dragstart)=\"onDragStart($event, element)\"\r\n (dragend)=\"onDragEnd($event, element)\">\r\n </lib-icon-view>\r\n\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- index-column-->\r\n <ng-container *ngIf=\"indexProvider.isEnabled\" [matColumnDef]=\"indexProvider.COLUMN_NAME\">\r\n\r\n <th mat-header-cell *matHeaderCellDef>\r\n <lib-column-view [config]=\"indexProvider.headerView\">\r\n {{ indexProvider.name }}\r\n </lib-column-view>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let element;\">\r\n {{ element.id + indexProvider.offset }}\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(indexProvider.COLUMN_NAME) || '' }}\r\n </td>\r\n </ng-container>\r\n\r\n <!-- selection-column-->\r\n <ng-container [matColumnDef]=\"selectionProvider.COLUMN_NAME\" *ngIf=\"selectionProvider.isEnabled\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <div class=\"flex-container\">\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"selectionProvider.selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selectionProvider.selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n <div\r\n *ngIf=\"tableConfig.selectionCfg?.showSelectedCount && selectionProvider.selection.hasValue()\">\r\n {{ selectionProvider.selection.selected.length }}\r\n <span\r\n *ngIf=\"tableConfig.selectionCfg?.showTotalCount !== false\">/{{ paginatorState?.length ? paginatorState?.length : tableDataSource.filteredData.length }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"selectionProvider.selection.hasValue() && tableConfig?.selectionCfg?.actions\">\r\n <ng-container *ngFor=\"let action of tableConfig.selectionCfg!.actions\">\r\n <button mat-icon-button\r\n (click)=\"emitSelectedRowsAction(action.action, selectionProvider.selection.selected)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngIf=\"action.display !== 'none'\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\"\r\n (click)=\"$event.stopPropagation(); selectionProvider.selection.toggle(castSrc(row).rowSrc)\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selectionProvider.selection.toggle(castSrc(row).rowSrc) : null\"\r\n [checked]=\"selectionProvider.selection.isSelected(castSrc(row).rowSrc)\">\r\n </mat-checkbox>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- action column -->\r\n <ng-container *ngIf=\"rowActionsProvider.isEnabled\" [matColumnDef]=\"rowActionsProvider.COLUMN_NAME\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\" (click)=\"$event.stopPropagation()\" style=\"cursor: default\">\r\n <ng-container *ngFor=\"let action of rowActionsProvider.actionView.get(element.id)\">\r\n <button mat-icon-button\r\n (click)=\"emitRowAction(action.action, element.rowSrc, $event)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngIf=\"action.display !== 'none'\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </ng-container>\r\n </td>\r\n\r\n <ng-container *ngTemplateOutlet=\"footerCellTemplate; context: {$implicit: rowActionsProvider.COLUMN_NAME}\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- value-icon-->\r\n <ng-container *ngFor=\"let columnConfig of tableConfig.columnsCfg\" [matColumnDef]=\"columnConfig.key\">\r\n\r\n <!-- if sortable column header -->\r\n <ng-container *ngIf=\"columnConfig.sort && columnConfig.sort.enable; else notSortable\">\r\n <th mat-header-cell *matHeaderCellDef [mat-sort-header]=\"columnConfig.key\"\r\n [arrowPosition]=\"columnConfig.sort.position === 'right' ? 'before' : 'after'\">\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-container>\r\n\r\n <!-- else not sortable -->\r\n <ng-template #notSortable>\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-template>\r\n\r\n <!-- header value-->\r\n <ng-template #headerValue>\r\n <lib-column-view [config]=\"columnConfig.headerView\"\r\n [value]=\"columnConfig.name\">\r\n </lib-column-view>\r\n </ng-template>\r\n\r\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\r\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-->\r\n <td mat-cell *matCellDef=\"let element;\">\r\n <lib-column-view\r\n [config]=\"tableView[element.id]?.get(columnConfig.key)\"\r\n [value]=\"element | dataPropertyGetter: columnConfig.key\">\r\n </lib-column-view>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnConfig.key) || '' }}\r\n </td>\r\n\r\n </ng-container>\r\n\r\n <!-- extra header top cell-->\r\n <ng-container *ngFor=\"let extraTopCell of _displayExtraHeaderTopCell; let index = index\"\r\n [matColumnDef]=\"extraTopCell\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-container\r\n *ngTemplateOutlet=\"extraHeaderCellTopTemplate; context: {key: extraTopCell.replace(EXTRA_HEADER_CELL_TOP_SUFFIX, ''), index: index}\"></ng-container>\r\n </th>\r\n </ng-container>\r\n\r\n\r\n <!-- extra header bottom cell-->\r\n <ng-container *ngFor=\"let extraBottomCell of _displayExtraHeaderBottomCell; let index = index\"\r\n [matColumnDef]=\"extraBottomCell\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-container\r\n *ngTemplateOutlet=\"extraHeaderCellBottomTemplate; context: {key: extraBottomCell.replace(EXTRA_HEADER_CELL_BOTTOM_SUFFIX, ''), index: index}\"></ng-container>\r\n </th>\r\n </ng-container>\r\n\r\n <!-- extra header top row-->\r\n <ng-container *ngIf=\"extraHeaderCellTopTemplate\">\r\n <tr mat-header-row *matHeaderRowDef=\"_displayExtraHeaderTopCell; sticky: this.tableConfig.stickyCfg?.header\"\r\n class=\"extra-header-top-row\">\r\n </tr>\r\n </ng-container>\r\n\r\n <!-- header row-->\r\n <tr mat-header-row *matHeaderRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.header\">\r\n </tr>\r\n\r\n <!-- extra header bottom row -->\r\n <ng-container *ngIf=\"extraHeaderCellBottomTemplate\">\r\n <tr mat-header-row\r\n *matHeaderRowDef=\"_displayExtraHeaderBottomCell; sticky: this.tableConfig.stickyCfg?.header\">\r\n </tr>\r\n </ng-container>\r\n\r\n <tr mat-row #rowLink\r\n (dragover)=\"onDragOver($event)\"\r\n (drop)=\"onDrop($event, row)\"\r\n *matRowDef=\"let row; columns: _displayColumns;\"\r\n (click)=\"rowClick(row)\"\r\n [ngClass]=\"{'pointer': tableConfig.clickCfg?.pointer || false, 'new-color': highlighted===row.rowSrc && tableConfig?.clickCfg?.highlightClicked?.color}\"\r\n [ngStyle]=\"{\r\n 'color': highlighted===row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.color : undefined,\r\n 'background-color': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.background : undefined,\r\n 'border': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.border : undefined\r\n }\">\r\n </tr>\r\n\r\n <!--expanded-row-->\r\n <ng-container matColumnDef=\"expandedRow\">\r\n <td mat-cell class=\"expanded-cell\" *matCellDef=\"let element\" [attr.colspan]=\"_displayColumns.length\"\r\n style=\"padding-right: 0!important;\">\r\n <div class=\"row-detail\"\r\n [@detailExpand]=\"element.rowSrc === highlighted ? expandedStateEnum.EXPANDED : expandedStateEnum.COLLAPSED\">\r\n <!-- lazy-load of details -->\r\n <ng-container *ngIf=\"element.rowSrc === highlighted\">\r\n <ng-container *ngTemplateOutlet=\"extendedRowTemplate; context: {$implicit: element}\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"extendedRowTemplate\">\r\n <tr mat-row class=\"expanded-row\" *matRowDef=\"let row; columns: ['expandedRow']\"></tr>\r\n </ng-container>\r\n <!--expanded-row-->\r\n\r\n <ng-container *ngIf=\"totalRowProvider.isEnabled\">\r\n <tr mat-footer-row *matFooterRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.total\"\r\n [style]=\"totalRowProvider.style\"></tr>\r\n </ng-container>\r\n\r\n <!--sub-footer-row-->\r\n <ng-container matColumnDef=\"subFooterRow\">\r\n <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"_displayColumns.length\">\r\n <ng-container>\r\n <ng-content select=\"[ngxAurTableSubFooterRow]\"></ng-content>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"subFooterRowTemplate\">\r\n <tr mat-footer-row *matFooterRowDef=\"['subFooterRow']; sticky: this.tableConfig.stickyCfg?.subFooter\"></tr>\r\n </ng-container>\r\n <!-- sub-footer-row END-->\r\n </table>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Pagination -->\r\n @if (this.paginationProvider.isEnabled) {\r\n <mat-paginator [ngClass]=\"{'hidePaginator': isTableBodyHide}\"\r\n [pageSizeOptions]=\"paginationProvider.sizes\"\r\n [pageSize]=\"paginationProvider.size\"\r\n [style]=\"tableConfig?.pageableCfg?.style\"\r\n [length]=\"paginatorState?.length\"\r\n [pageIndex]=\"paginatorState?.pageIndex\"\r\n (page)=\"pageChange.emit($event)\"\r\n showFirstLastButtons>\r\n </mat-paginator>\r\n }\r\n</div>\r\n\r\n<ng-template #footerCellTemplate let-columnName>\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnName) || '' }}\r\n </td>\r\n</ng-template>\r\n", styles: [".aur-mat-table{display:flex;flex-direction:column}.aur-mat-table.bottom-pagination{height:100%}.aur-mat-table table{border-collapse:collapse}.aur-mat-table .table-container{position:relative}.aur-mat-table .table-container.bottom-pagination{flex-grow:1;overflow:auto}.aur-mat-table th,td{padding-right:4px!important;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 .text-right{text-align:right!important}.aur-mat-table .pointer:hover{background-color:#f2f2f2;cursor:pointer}.aur-mat-table .flex-container{display:flex;align-items:center}.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}.mat-mdc-header-row th:last-child{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}\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: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { 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", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { 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: [
967
1107
  trigger('detailExpand', [
968
1108
  state(ExpandState.COLLAPSED, style({ height: '0px', minHeight: '0' })),
969
1109
  state(ExpandState.EXPANDED, style({ height: '*' })),
@@ -979,8 +1119,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
979
1119
  state(ExpandState.EXPANDED, style({ height: '*' })),
980
1120
  transition(`${ExpandState.EXPANDED} <=> ${ExpandState.COLLAPSED}`, animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
981
1121
  ]),
982
- ], template: "<div class=\"aur-mat-table\"\r\n [ngClass]=\"{'bottom-pagination': paginationProvider.isEnabled && paginationProvider.position === 'bottom'}\">\r\n <ng-container>\r\n <!-- Filter -->\r\n <ng-container *ngIf=\"tableConfig.filterCfg\">\r\n <div class=\"search-container\">\r\n <ng-container>\r\n <ng-content select=\"[ngxAurTableSearchPrefix]\"></ng-content>\r\n </ng-container>\r\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\r\n <mat-label>{{ tableConfig.filterCfg?.label }}</mat-label>\r\n <input matInput (keyup)=\"applySearchFilter($event)\"\r\n placeholder=\"{{tableConfig.filterCfg?.placeholder}}\"\r\n style=\"font-size: 18px;\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n </mat-form-field>\r\n <ng-container>\r\n <ng-content select=\"[ngxAurTableSearchSuffix]\"></ng-content>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div class=\"table-container\"\r\n [ngClass]=\"{'bottom-pagination': paginationProvider.isEnabled && paginationProvider.position === 'bottom'}\">\r\n <mat-icon *ngIf=\"headerButtonProvider.isEnabled\"\r\n class=\"table-settings-button\"\r\n [style.color]=\"headerButtonProvider.color\"\r\n [style.background-color]=\"headerButtonProvider.background\"\r\n (click)=\"onHeaderButton.emit($event)\">\r\n {{ headerButtonProvider.icon }}\r\n </mat-icon>\r\n\r\n <!-- Table -->\r\n <table #table mat-table matSort\r\n [multiTemplateDataRows]=\"extendedRowTemplate !== null\"\r\n [dataSource]=\"tableDataSource\"\r\n (matSortChange)=\"sortTable($event)\"\r\n [style.height]=\"tableConfig.tableView?.height\"\r\n [style.max-height]=\"tableConfig.tableView?.maxHeight\"\r\n [style.min-height]=\"tableConfig.tableView?.minHeight\"\r\n [ngClass]=\"{'hide-table-body': isTableBodyHide}\">\r\n\r\n\r\n <!-- drag-column-->\r\n <ng-container *ngIf=\"dragDropProvider.isEnabled && dragDropProvider.draggable\" [matColumnDef]=\"dragDropProvider.COLUMN_NAME\">\r\n\r\n <th mat-header-cell *matHeaderCellDef>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let element;\">\r\n <lib-icon-view draggable=\"true\"\r\n class=\"drag-icon\"\r\n [view]=\"dragDropProvider.dragIconView\"\r\n (dragstart)=\"onDragStart($event, element)\"\r\n (dragend)=\"onDragEnd($event, element)\">\r\n </lib-icon-view>\r\n\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- index-column-->\r\n <ng-container *ngIf=\"indexProvider.isEnabled\" [matColumnDef]=\"indexProvider.COLUMN_NAME\">\r\n\r\n <th mat-header-cell *matHeaderCellDef>\r\n <lib-column-view [config]=\"indexProvider.headerView\">\r\n {{ indexProvider.name }}\r\n </lib-column-view>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let element;\">\r\n {{ element.id + indexProvider.offset }}\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(indexProvider.COLUMN_NAME) || '' }}\r\n </td>\r\n </ng-container>\r\n\r\n <!-- selection-column-->\r\n <ng-container [matColumnDef]=\"selectionProvider.COLUMN_NAME\" *ngIf=\"selectionProvider.isEnabled\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <div class=\"flex-container\">\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"selectionProvider.selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selectionProvider.selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n <div\r\n *ngIf=\"tableConfig.selectionCfg?.showSelectedCount && selectionProvider.selection.hasValue()\">\r\n {{ selectionProvider.selection.selected.length }}\r\n <span\r\n *ngIf=\"tableConfig.selectionCfg?.showTotalCount !== false\">/{{ paginatorState?.length ? paginatorState?.length : tableDataSource.filteredData.length }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"selectionProvider.selection.hasValue() && tableConfig?.selectionCfg?.actions\">\r\n <ng-container *ngFor=\"let action of tableConfig.selectionCfg!.actions\">\r\n <button mat-icon-button\r\n (click)=\"emitSelectedRowsAction(action.action, selectionProvider.selection.selected)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngIf=\"action.display !== 'none'\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\"\r\n (click)=\"$event.stopPropagation(); selectionProvider.selection.toggle(castSrc(row).rowSrc)\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selectionProvider.selection.toggle(castSrc(row).rowSrc) : null\"\r\n [checked]=\"selectionProvider.selection.isSelected(castSrc(row).rowSrc)\">\r\n </mat-checkbox>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- action column -->\r\n <ng-container *ngIf=\"rowActionsProvider.isEnabled\" [matColumnDef]=\"rowActionsProvider.COLUMN_NAME\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\" (click)=\"$event.stopPropagation()\" style=\"cursor: default\">\r\n <ng-container *ngFor=\"let action of rowActionsProvider.actionView.get(element.id)\">\r\n <button mat-icon-button\r\n (click)=\"emitRowAction(action.action, element.rowSrc, $event)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngIf=\"action.display !== 'none'\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </ng-container>\r\n </td>\r\n\r\n <ng-container *ngTemplateOutlet=\"footerCellTemplate; context: {$implicit: rowActionsProvider.COLUMN_NAME}\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- value-icon-->\r\n <ng-container *ngFor=\"let columnConfig of tableConfig.columnsCfg\" [matColumnDef]=\"columnConfig.key\">\r\n\r\n <!-- if sortable column header -->\r\n <ng-container *ngIf=\"columnConfig.sort && columnConfig.sort.enable; else notSortable\">\r\n <th mat-header-cell *matHeaderCellDef [mat-sort-header]=\"columnConfig.key\"\r\n [arrowPosition]=\"columnConfig.sort.position === 'right' ? 'before' : 'after'\">\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-container>\r\n\r\n <!-- else not sortable -->\r\n <ng-template #notSortable>\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-template>\r\n\r\n <!-- header value-->\r\n <ng-template #headerValue>\r\n <lib-column-view [config]=\"columnConfig.headerView\"\r\n [value]=\"columnConfig.name\">\r\n </lib-column-view>\r\n </ng-template>\r\n\r\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\r\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-->\r\n <td mat-cell *matCellDef=\"let element;\">\r\n <lib-column-view\r\n [config]=\"tableView[element.id]?.get(columnConfig.key)\"\r\n [value]=\"element | dataPropertyGetter: columnConfig.key\">\r\n </lib-column-view>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnConfig.key) || '' }}\r\n </td>\r\n\r\n </ng-container>\r\n\r\n <!-- extra header top cell-->\r\n <ng-container *ngFor=\"let extraTopCell of _displayExtraHeaderTopCell; let index = index\"\r\n [matColumnDef]=\"extraTopCell\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-container\r\n *ngTemplateOutlet=\"extraHeaderCellTopTemplate; context: {key: extraTopCell.replace(EXTRA_HEADER_CELL_TOP_SUFFIX, ''), index: index}\"></ng-container>\r\n </th>\r\n </ng-container>\r\n\r\n\r\n <!-- extra header bottom cell-->\r\n <ng-container *ngFor=\"let extraBottomCell of _displayExtraHeaderBottomCell; let index = index\"\r\n [matColumnDef]=\"extraBottomCell\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-container\r\n *ngTemplateOutlet=\"extraHeaderCellBottomTemplate; context: {key: extraBottomCell.replace(EXTRA_HEADER_CELL_BOTTOM_SUFFIX, ''), index: index}\"></ng-container>\r\n </th>\r\n </ng-container>\r\n\r\n <!-- extra header top row-->\r\n <ng-container *ngIf=\"extraHeaderCellTopTemplate\">\r\n <tr mat-header-row *matHeaderRowDef=\"_displayExtraHeaderTopCell; sticky: this.tableConfig.stickyCfg?.header\"\r\n class=\"extra-header-top-row\">\r\n </tr>\r\n </ng-container>\r\n\r\n <!-- header row-->\r\n <tr mat-header-row *matHeaderRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.header\">\r\n </tr>\r\n\r\n <!-- extra header bottom row -->\r\n <ng-container *ngIf=\"extraHeaderCellBottomTemplate\">\r\n <tr mat-header-row\r\n *matHeaderRowDef=\"_displayExtraHeaderBottomCell; sticky: this.tableConfig.stickyCfg?.header\">\r\n </tr>\r\n </ng-container>\r\n\r\n <tr mat-row #rowLink\r\n (dragover)=\"onDragOver($event)\"\r\n (drop)=\"onDrop($event, row)\"\r\n *matRowDef=\"let row; columns: _displayColumns;\"\r\n (click)=\"rowClick(row)\"\r\n [ngClass]=\"{'pointer': tableConfig.clickCfg?.pointer || false, 'new-color': highlighted===row.rowSrc && tableConfig?.clickCfg?.highlightClicked?.color}\"\r\n [ngStyle]=\"{\r\n 'color': highlighted===row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.color : undefined,\r\n 'background-color': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.background : undefined,\r\n 'border': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.border : undefined\r\n }\">\r\n </tr>\r\n\r\n <!--expanded-row-->\r\n <ng-container matColumnDef=\"expandedRow\">\r\n <td mat-cell class=\"expanded-cell\" *matCellDef=\"let element\" [attr.colspan]=\"_displayColumns.length\"\r\n style=\"padding-right: 0!important;\">\r\n <div class=\"row-detail\"\r\n [@detailExpand]=\"element.rowSrc === highlighted ? expandedStateEnum.EXPANDED : expandedStateEnum.COLLAPSED\">\r\n <!-- lazy-load of details -->\r\n <ng-container *ngIf=\"element.rowSrc === highlighted\">\r\n <ng-container *ngTemplateOutlet=\"extendedRowTemplate; context: {$implicit: element}\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"extendedRowTemplate\">\r\n <tr mat-row class=\"expanded-row\" *matRowDef=\"let row; columns: ['expandedRow']\"></tr>\r\n </ng-container>\r\n <!--expanded-row-->\r\n\r\n <ng-container *ngIf=\"totalRowProvider.isEnabled\">\r\n <tr mat-footer-row *matFooterRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.total\"\r\n [style]=\"totalRowProvider.style\"></tr>\r\n </ng-container>\r\n\r\n <!--sub-footer-row-->\r\n <ng-container matColumnDef=\"subFooterRow\">\r\n <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"_displayColumns.length\">\r\n <ng-container>\r\n <ng-content select=\"[ngxAurTableSubFooterRow]\"></ng-content>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"subFooterRowTemplate\">\r\n <tr mat-footer-row *matFooterRowDef=\"['subFooterRow']; sticky: this.tableConfig.stickyCfg?.subFooter\"></tr>\r\n </ng-container>\r\n <!-- sub-footer-row END-->\r\n </table>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Pagination -->\r\n @if (this.paginationProvider.isEnabled) {\r\n <mat-paginator [ngClass]=\"{'hidePaginator': isTableBodyHide}\"\r\n [pageSizeOptions]=\"paginationProvider.sizes\"\r\n [pageSize]=\"paginationProvider.size\"\r\n [style]=\"tableConfig?.pageableCfg?.style\"\r\n [length]=\"paginatorState?.length\"\r\n [pageIndex]=\"paginatorState?.pageIndex\"\r\n (page)=\"pageChange.emit($event)\"\r\n showFirstLastButtons>\r\n </mat-paginator>\r\n }\r\n</div>\r\n\r\n<ng-template #footerCellTemplate let-columnName>\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnName) || '' }}\r\n </td>\r\n</ng-template>\r\n", styles: [".aur-mat-table{display:flex;flex-direction:column}.aur-mat-table.bottom-pagination{height:100%}.aur-mat-table table{border-collapse:collapse}.aur-mat-table .table-container{position:relative}.aur-mat-table .table-container.bottom-pagination{flex-grow:1;overflow:auto}.aur-mat-table th,td{padding-right:4px!important;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 .text-right{text-align:right!important}.aur-mat-table .pointer:hover{background-color:#f2f2f2;cursor:pointer}.aur-mat-table .flex-container{display:flex;align-items:center}.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}.mat-mdc-header-row th:last-child{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}\n"] }]
983
- }], ctorParameters: () => [], propDecorators: { displayColumns: [{
1122
+ ], template: "<div class=\"aur-mat-table\"\r\n [ngClass]=\"{'bottom-pagination': paginationProvider.isEnabled && paginationProvider.position === 'bottom'}\">\r\n <ng-container>\r\n <!-- Filter -->\r\n <ng-container *ngIf=\"tableConfig.filterCfg?.enable ?? false\">\r\n <div class=\"search-container\">\r\n <ng-container>\r\n <ng-content select=\"[ngxAurTableSearchPrefix]\"></ng-content>\r\n </ng-container>\r\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\r\n <mat-label>{{ tableConfig.filterCfg?.label }}</mat-label>\r\n <input matInput (keyup)=\"applySearchFilter($event)\"\r\n placeholder=\"{{tableConfig.filterCfg?.placeholder}}\"\r\n style=\"font-size: 18px;\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n </mat-form-field>\r\n <ng-container>\r\n <ng-content select=\"[ngxAurTableSearchSuffix]\"></ng-content>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div class=\"table-container\"\r\n [ngClass]=\"{'bottom-pagination': paginationProvider.isEnabled && paginationProvider.position === 'bottom'}\">\r\n <mat-icon *ngIf=\"headerButtonProvider.isEnabled\"\r\n class=\"table-settings-button\"\r\n [style.color]=\"headerButtonProvider.color\"\r\n [style.background-color]=\"headerButtonProvider.background\"\r\n (click)=\"onHeaderButton.emit($event)\">\r\n {{ headerButtonProvider.icon }}\r\n </mat-icon>\r\n\r\n <!-- Table -->\r\n <table #table mat-table matSort\r\n [multiTemplateDataRows]=\"extendedRowTemplate !== null\"\r\n [dataSource]=\"tableDataSource\"\r\n (matSortChange)=\"sortTable($event)\"\r\n [style.height]=\"tableConfig.tableView?.height\"\r\n [style.max-height]=\"tableConfig.tableView?.maxHeight\"\r\n [style.min-height]=\"tableConfig.tableView?.minHeight\"\r\n [ngClass]=\"{'hide-table-body': isTableBodyHide}\">\r\n\r\n\r\n <!-- drag-column-->\r\n <ng-container *ngIf=\"dragDropProvider.isEnabled && dragDropProvider.draggable\" [matColumnDef]=\"dragDropProvider.COLUMN_NAME\">\r\n\r\n <th mat-header-cell *matHeaderCellDef>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let element;\" class=\"drag-column\">\r\n <lib-icon-view draggable=\"true\"\r\n class=\"drag-icon\"\r\n [view]=\"dragDropProvider.dragIconView\"\r\n (dragstart)=\"onDragStart($event, element)\"\r\n (dragend)=\"onDragEnd($event, element)\">\r\n </lib-icon-view>\r\n\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- index-column-->\r\n <ng-container *ngIf=\"indexProvider.isEnabled\" [matColumnDef]=\"indexProvider.COLUMN_NAME\">\r\n\r\n <th mat-header-cell *matHeaderCellDef>\r\n <lib-column-view [config]=\"indexProvider.headerView\">\r\n {{ indexProvider.name }}\r\n </lib-column-view>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let element;\">\r\n {{ element.id + indexProvider.offset }}\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(indexProvider.COLUMN_NAME) || '' }}\r\n </td>\r\n </ng-container>\r\n\r\n <!-- selection-column-->\r\n <ng-container [matColumnDef]=\"selectionProvider.COLUMN_NAME\" *ngIf=\"selectionProvider.isEnabled\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <div class=\"flex-container\">\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"selectionProvider.selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selectionProvider.selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n <div\r\n *ngIf=\"tableConfig.selectionCfg?.showSelectedCount && selectionProvider.selection.hasValue()\">\r\n {{ selectionProvider.selection.selected.length }}\r\n <span\r\n *ngIf=\"tableConfig.selectionCfg?.showTotalCount !== false\">/{{ paginatorState?.length ? paginatorState?.length : tableDataSource.filteredData.length }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"selectionProvider.selection.hasValue() && tableConfig?.selectionCfg?.actions\">\r\n <ng-container *ngFor=\"let action of tableConfig.selectionCfg!.actions\">\r\n <button mat-icon-button\r\n (click)=\"emitSelectedRowsAction(action.action, selectionProvider.selection.selected)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngIf=\"action.display !== 'none'\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\"\r\n (click)=\"$event.stopPropagation(); selectionProvider.selection.toggle(castSrc(row).rowSrc)\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selectionProvider.selection.toggle(castSrc(row).rowSrc) : null\"\r\n [checked]=\"selectionProvider.selection.isSelected(castSrc(row).rowSrc)\">\r\n </mat-checkbox>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- action column -->\r\n <ng-container *ngIf=\"rowActionsProvider.isEnabled\" [matColumnDef]=\"rowActionsProvider.COLUMN_NAME\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\" (click)=\"$event.stopPropagation()\" style=\"cursor: default\">\r\n <ng-container *ngFor=\"let action of rowActionsProvider.actionView.get(element.id)\">\r\n <button mat-icon-button\r\n (click)=\"emitRowAction(action.action, element.rowSrc, $event)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngIf=\"action.display !== 'none'\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </ng-container>\r\n </td>\r\n\r\n <ng-container *ngTemplateOutlet=\"footerCellTemplate; context: {$implicit: rowActionsProvider.COLUMN_NAME}\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- value-icon-->\r\n <ng-container *ngFor=\"let columnConfig of tableConfig.columnsCfg\" [matColumnDef]=\"columnConfig.key\">\r\n\r\n <!-- if sortable column header -->\r\n <ng-container *ngIf=\"columnConfig.sort && columnConfig.sort.enable; else notSortable\">\r\n <th mat-header-cell *matHeaderCellDef [mat-sort-header]=\"columnConfig.key\"\r\n [arrowPosition]=\"columnConfig.sort.position === 'right' ? 'before' : 'after'\">\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-container>\r\n\r\n <!-- else not sortable -->\r\n <ng-template #notSortable>\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-template>\r\n\r\n <!-- header value-->\r\n <ng-template #headerValue>\r\n <lib-column-view [config]=\"columnConfig.headerView\"\r\n [value]=\"columnConfig.name\">\r\n </lib-column-view>\r\n </ng-template>\r\n\r\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\r\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-->\r\n <td mat-cell *matCellDef=\"let element;\">\r\n <lib-column-view\r\n [config]=\"tableView[element.id]?.get(columnConfig.key)\"\r\n [value]=\"element | dataPropertyGetter: columnConfig.key\">\r\n </lib-column-view>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnConfig.key) || '' }}\r\n </td>\r\n\r\n </ng-container>\r\n\r\n <!-- extra header top cell-->\r\n <ng-container *ngFor=\"let extraTopCell of _displayExtraHeaderTopCell; let index = index\"\r\n [matColumnDef]=\"extraTopCell\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-container\r\n *ngTemplateOutlet=\"extraHeaderCellTopTemplate; context: {key: extraTopCell.replace(EXTRA_HEADER_CELL_TOP_SUFFIX, ''), index: index}\"></ng-container>\r\n </th>\r\n </ng-container>\r\n\r\n\r\n <!-- extra header bottom cell-->\r\n <ng-container *ngFor=\"let extraBottomCell of _displayExtraHeaderBottomCell; let index = index\"\r\n [matColumnDef]=\"extraBottomCell\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-container\r\n *ngTemplateOutlet=\"extraHeaderCellBottomTemplate; context: {key: extraBottomCell.replace(EXTRA_HEADER_CELL_BOTTOM_SUFFIX, ''), index: index}\"></ng-container>\r\n </th>\r\n </ng-container>\r\n\r\n <!-- extra header top row-->\r\n <ng-container *ngIf=\"extraHeaderCellTopTemplate\">\r\n <tr mat-header-row *matHeaderRowDef=\"_displayExtraHeaderTopCell; sticky: this.tableConfig.stickyCfg?.header\"\r\n class=\"extra-header-top-row\">\r\n </tr>\r\n </ng-container>\r\n\r\n <!-- header row-->\r\n <tr mat-header-row *matHeaderRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.header\">\r\n </tr>\r\n\r\n <!-- extra header bottom row -->\r\n <ng-container *ngIf=\"extraHeaderCellBottomTemplate\">\r\n <tr mat-header-row\r\n *matHeaderRowDef=\"_displayExtraHeaderBottomCell; sticky: this.tableConfig.stickyCfg?.header\">\r\n </tr>\r\n </ng-container>\r\n\r\n <tr mat-row #rowLink\r\n (dragover)=\"onDragOver($event)\"\r\n (drop)=\"onDrop($event, row)\"\r\n *matRowDef=\"let row; columns: _displayColumns;\"\r\n (click)=\"rowClick(row)\"\r\n [ngClass]=\"{'pointer': tableConfig.clickCfg?.pointer || false, 'new-color': highlighted===row.rowSrc && tableConfig?.clickCfg?.highlightClicked?.color}\"\r\n [ngStyle]=\"{\r\n 'color': highlighted===row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.color : undefined,\r\n 'background-color': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.background : undefined,\r\n 'border': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.border : undefined\r\n }\">\r\n </tr>\r\n\r\n <!--expanded-row-->\r\n <ng-container matColumnDef=\"expandedRow\">\r\n <td mat-cell class=\"expanded-cell\" *matCellDef=\"let element\" [attr.colspan]=\"_displayColumns.length\"\r\n style=\"padding-right: 0!important;\">\r\n <div class=\"row-detail\"\r\n [@detailExpand]=\"element.rowSrc === highlighted ? expandedStateEnum.EXPANDED : expandedStateEnum.COLLAPSED\">\r\n <!-- lazy-load of details -->\r\n <ng-container *ngIf=\"element.rowSrc === highlighted\">\r\n <ng-container *ngTemplateOutlet=\"extendedRowTemplate; context: {$implicit: element}\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"extendedRowTemplate\">\r\n <tr mat-row class=\"expanded-row\" *matRowDef=\"let row; columns: ['expandedRow']\"></tr>\r\n </ng-container>\r\n <!--expanded-row-->\r\n\r\n <ng-container *ngIf=\"totalRowProvider.isEnabled\">\r\n <tr mat-footer-row *matFooterRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.total\"\r\n [style]=\"totalRowProvider.style\"></tr>\r\n </ng-container>\r\n\r\n <!--sub-footer-row-->\r\n <ng-container matColumnDef=\"subFooterRow\">\r\n <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"_displayColumns.length\">\r\n <ng-container>\r\n <ng-content select=\"[ngxAurTableSubFooterRow]\"></ng-content>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"subFooterRowTemplate\">\r\n <tr mat-footer-row *matFooterRowDef=\"['subFooterRow']; sticky: this.tableConfig.stickyCfg?.subFooter\"></tr>\r\n </ng-container>\r\n <!-- sub-footer-row END-->\r\n </table>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Pagination -->\r\n @if (this.paginationProvider.isEnabled) {\r\n <mat-paginator [ngClass]=\"{'hidePaginator': isTableBodyHide}\"\r\n [pageSizeOptions]=\"paginationProvider.sizes\"\r\n [pageSize]=\"paginationProvider.size\"\r\n [style]=\"tableConfig?.pageableCfg?.style\"\r\n [length]=\"paginatorState?.length\"\r\n [pageIndex]=\"paginatorState?.pageIndex\"\r\n (page)=\"pageChange.emit($event)\"\r\n showFirstLastButtons>\r\n </mat-paginator>\r\n }\r\n</div>\r\n\r\n<ng-template #footerCellTemplate let-columnName>\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnName) || '' }}\r\n </td>\r\n</ng-template>\r\n", styles: [".aur-mat-table{display:flex;flex-direction:column}.aur-mat-table.bottom-pagination{height:100%}.aur-mat-table table{border-collapse:collapse}.aur-mat-table .table-container{position:relative}.aur-mat-table .table-container.bottom-pagination{flex-grow:1;overflow:auto}.aur-mat-table th,td{padding-right:4px!important;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 .text-right{text-align:right!important}.aur-mat-table .pointer:hover{background-color:#f2f2f2;cursor:pointer}.aur-mat-table .flex-container{display:flex;align-items:center}.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}.mat-mdc-header-row th:last-child{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}\n"] }]
1123
+ }], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }], propDecorators: { displayColumns: [{
984
1124
  type: Input
985
1125
  }], subFooterRowTemplate: [{
986
1126
  type: ContentChild,