ngx-mat-dynamic-table
Version:
Dynamic material table table.
116 lines (115 loc) • 4.25 kB
TypeScript
import { OnInit, EventEmitter, SimpleChanges, OnChanges, AfterViewInit } from '@angular/core';
import { MatTableDataSource } from '@angular/material/table';
import { MatSort } from '@angular/material/sort';
import { MatPaginator } from '@angular/material/paginator';
import { SelectionModel } from '@angular/cdk/collections';
import { MatCheckboxChange } from '@angular/material/checkbox';
import { FormControl } from '@angular/forms';
import { MatSelectChange } from '@angular/material/select';
import { XlsxExportService } from '../xlsx-table-export/service/xlsx-export.service';
import { BehaviorSubject, Subject } from 'rxjs';
import { SearchTerm } from '../table-search-input/table-search-input.component';
import { ColumnStorageService, ColumnStorage } from '../services/column-storage.service';
export interface DynamicTableColumnDefinition extends DynamicTableColumn {
columnDef: string;
columnTitle: string;
type?: 'number' | 'date' | 'icon';
search?: boolean;
total?: boolean;
average?: boolean;
sticky?: boolean;
stickyEnd?: boolean;
icons?: {
value: any;
matIcon: string;
color: string;
matTooltip: string;
}[];
sort?: 'asc' | 'desc';
dateFormat?: string;
hidden?: boolean;
ignoreSave?: boolean;
cellClassKey?: string;
unit?: {
key: string;
position: 'before' | 'after';
};
}
interface DynamicTableColumn {
totalValue?: number;
averageValue?: number;
}
export interface DynamicTableCellClickResult {
row: any;
column: string;
data: string;
}
export declare class DynamicTableComponent<T> implements OnInit, OnChanges, AfterViewInit {
private locale;
private xlsxExportService;
private columnStorageService;
tableId: string;
tableData: T[];
rowClick: boolean;
cellClick: boolean;
fileName: string;
columns: DynamicTableColumnDefinition[];
pageSizeOptions: number[];
export: boolean;
filter: boolean;
multiple: boolean;
optionalColumns: boolean;
emitFilteredData: boolean;
rowClicked: EventEmitter<T>;
cellClicked: EventEmitter<DynamicTableCellClickResult>;
selectedRows: EventEmitter<T[]>;
filterResult: EventEmitter<T[]>;
sort: MatSort;
paginator: MatPaginator;
selection: SelectionModel<T>;
displayedColumns: string[];
dataSource: MatTableDataSource<T>;
totalsRowVisible: boolean;
xlsxHeaders: any;
exportData: T[];
columnsToShow: FormControl;
filterKeyUp: BehaviorSubject<string>;
sortActive: string;
sortDirection: 'asc' | 'desc';
tableFilters: {
type: 'column' | 'global';
reference: any;
search: string;
}[];
searchLoading: boolean;
columnSearch$: Subject<SearchTerm>;
savedColumnsLoading: boolean;
constructor(locale: string, xlsxExportService: XlsxExportService, columnStorageService: ColumnStorageService);
ngOnChanges(changes: SimpleChanges): void;
ngAfterViewInit(): void;
ngOnInit(): void;
updateXLSXHeaders(): void;
updateColumnTotals(): void;
applyFilter(searchTerms: SearchTerm[]): void;
applyColumnFilter(element: any, column: any, columnTitle: string, searchType: '=' | '!=' | '>=' | '<=' | 'empty'): void;
_rowClicked(row: any): void;
onMatCellClick(row: any, column: DynamicTableColumnDefinition): void;
/** Whether the number of selected elements matches the total number of rows. */
isAllSelected(): boolean;
/** Selects all rows if they are not all selected; otherwise clear selection. */
masterToggle(): void;
toggle(event: MatCheckboxChange, row: T): void;
emitSelected(): void;
setColumns(): void;
setStaticColumns(): void;
displayColumnsChanged(event: MatSelectChange): void;
eportToExcell(): void;
getFilteredData(): void;
cloneData(): void;
formatExportData(): void;
nestedFilterCheck(search: any, data: any, key: any): any;
setDefaultSorting(): void;
setSavedColumnSelection(saved: ColumnStorage): void;
saveCurrentColumnSelection(displayedColumns: string[]): void;
}
export {};