material-dynamic-table
Version:
Dynamic table component for angular built on top of angular material table. It offers sorting, pagination, filtering per column and the ability to specify content types and components used for displaying them.
43 lines (42 loc) • 1.93 kB
TypeScript
import { DataSource } from '@angular/cdk/collections';
import { MatPaginator } from '@angular/material/paginator';
import { BehaviorSubject, Subscription } from 'rxjs';
import { MdtMultiSort } from './multi-sort.directive';
import { TableFilter } from './table-filter';
export declare class MdtTableDataSource<T> extends DataSource<T> {
private readonly _data;
/** Stream emitting render data to the table (depends on ordered data changes). */
private readonly _renderData;
/** Stream that emits when a new filter string is set on the data source. */
private readonly _filter;
private readonly _filters;
/** Used to react to internal changes of the paginator that are made by the data source itself. */
private readonly _internalPageChanges;
_renderChangesSubscription: Subscription | null;
filteredData: T[];
constructor(initialData?: T[]);
/** Array of data that should be rendered by the table, where each object represents one row. */
get data(): T[];
set data(data: T[]);
get filter(): string;
set filter(filter: string);
get filters(): TableFilter[];
set filters(filters: TableFilter[]);
get sort(): MdtMultiSort | null;
set sort(sort: MdtMultiSort | null);
private _multiSort;
get paginator(): MatPaginator | null;
set paginator(paginator: MatPaginator | null);
private _paginator;
sortingDataAccessor: (data: T, sortHeaderId: string) => string | number;
connect(): BehaviorSubject<T[]>;
disconnect(): void;
_updateChangeSubscription(): void;
_filterData(data: T[]): T[];
filterPredicate: (data: T, filter: string) => boolean;
_pageData(data: T[]): T[];
_orderData(data: T[]): T[];
sortData: ((data: T[], sort: MdtMultiSort) => T[]);
compareValues(valueA: string | number, valueB: string | number, direction: string): number;
_updatePaginator(filteredDataLength: number): void;
}