@pascalhonegger/ng-datatable
Version:
DataTable component for Angular framework
48 lines (47 loc) • 2 kB
TypeScript
import { EventEmitter, OnChanges, DoCheck, SimpleChanges } from "@angular/core";
import { ReplaySubject } from "rxjs";
import * as i0 from "@angular/core";
export type SortOrder = "asc" | "desc";
export type SortByFunction<T = any> = (data: T) => any;
export type SortBy<T = any> = string | SortByFunction<T> | (string | SortByFunction<T>)[];
export interface SortEvent {
sortBy: SortBy;
sortOrder: string;
}
export interface PageEvent {
activePage: number;
rowsOnPage: number;
dataLength: number;
}
export interface DataEvent {
length: number;
}
export declare class DataTable<T = any> implements OnChanges, DoCheck {
private diff;
inputData: T[];
sortBy: SortBy<T>;
sortOrder: SortOrder;
sortByChange: EventEmitter<SortBy<T>>;
sortOrderChange: EventEmitter<SortOrder>;
rowsOnPage: number;
activePage: number;
private mustRecalculateData;
data: T[];
onSortChange: ReplaySubject<SortEvent>;
onPageChange: EventEmitter<PageEvent>;
constructor();
getSort(): SortEvent;
setSort(sortBy: SortBy<T>, sortOrder: SortOrder): void;
getPage(): PageEvent;
setPage(activePage: number, rowsOnPage: number): void;
private calculateNewActivePage;
private recalculatePage;
ngOnChanges(changes: SimpleChanges): any;
ngDoCheck(): any;
private fillData;
private caseInsensitiveIteratee;
private compare;
private sorter;
static ɵfac: i0.ɵɵFactoryDeclaration<DataTable<any>, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<DataTable<any>, "table[mfData]", ["mfDataTable"], { "inputData": { "alias": "mfData"; "required": false; }; "sortBy": { "alias": "mfSortBy"; "required": false; }; "sortOrder": { "alias": "mfSortOrder"; "required": false; }; "rowsOnPage": { "alias": "mfRowsOnPage"; "required": false; }; "activePage": { "alias": "mfActivePage"; "required": false; }; }, { "sortByChange": "mfSortByChange"; "sortOrderChange": "mfSortOrderChange"; }, never, never, true, never>;
}