@swimlane/ngx-datatable
Version:
ngx-datatable is an Angular table grid component for presenting large and complex data.
143 lines (142 loc) • 3.66 kB
TypeScript
import { TableColumn, TableColumnProp } from './table-column.type';
import { BehaviorSubject, Observable } from 'rxjs';
export interface SortPropDir {
dir: SortDirection | 'desc' | 'asc';
prop: TableColumnProp;
}
export declare enum SortDirection {
asc = "asc",
desc = "desc"
}
export interface InnerSortEvent {
column: TableColumn;
prevValue: SortDirection;
newValue: SortDirection;
}
export interface SortEvent extends InnerSortEvent {
sorts: SortPropDir[];
}
export declare enum SortType {
single = "single",
multi = "multi"
}
export declare enum ColumnMode {
standard = "standard",
flex = "flex",
force = "force"
}
export type TreeStatus = 'collapsed' | 'expanded' | 'loading' | 'disabled';
export interface ActivateEvent<TRow> {
type: 'checkbox' | 'click' | 'dblclick' | 'keydown' | 'mouseenter';
event: MouseEvent | KeyboardEvent;
row: TRow;
group?: TRow[];
rowHeight?: number;
column?: TableColumn;
value?: any;
cellElement?: HTMLElement;
treeStatus?: TreeStatus;
cellIndex?: number;
rowElement?: HTMLElement;
}
export interface HeaderCellContext {
column: TableColumn;
sortDir: SortDirection | 'asc' | 'desc';
sortFn: () => void;
allRowsSelected: boolean;
selectFn: () => void;
}
export interface GroupContext<TRow = any> {
group: Group<TRow>;
expanded: boolean;
rowIndex: number;
}
export interface CellContext<TRow = any> {
onCheckboxChangeFn: (event: Event) => void;
activateFn: (event: ActivateEvent<TRow>) => void;
row: TRow;
group: TRow[];
value: any;
column: TableColumn;
rowHeight: number;
isSelected: boolean;
rowIndex: number;
treeStatus: TreeStatus;
disable$: BehaviorSubject<boolean>;
onTreeAction: () => void;
expanded?: boolean;
}
export interface FooterContext {
rowCount: number;
pageSize: number;
selectedCount: number;
curPage: number;
offset: number;
}
export declare enum ContextmenuType {
header = "header",
body = "body"
}
/** A Group row */
export interface Group<TRow> {
/** The value by which to rows are grouped. */
key: TRow[keyof TRow];
/** All rows that are part of the group. */
value: TRow[];
}
/** Type for either a row or a group */
export type RowOrGroup<TRow> = TRow | Group<TRow>;
export interface RowDetailContext<TRow = any> {
row: TRow;
expanded: boolean;
rowIndex: number;
disableRow$?: Observable<boolean>;
}
export interface ReorderEvent {
column: TableColumn;
prevValue: number;
newValue: number;
}
export interface PageEvent {
count: number;
pageSize: number;
limit: number;
offset: number;
}
export interface PagerPageEvent {
page: number;
}
export interface ColumnResizeEvent {
column: TableColumn;
prevValue: number;
newValue: number;
}
export interface ScrollEvent {
offsetY: number;
offsetX: number;
}
export interface GroupToggleEvent<TRow> {
type: 'group';
value: Group<TRow>;
}
export interface AllGroupsToggleEvent {
type: 'all';
value: boolean;
}
export type GroupToggleEvents<TRow> = GroupToggleEvent<TRow> | AllGroupsToggleEvent;
export declare enum SelectionType {
single = "single",
multi = "multi",
multiClick = "multiClick",
cell = "cell",
checkbox = "checkbox"
}
export type DragEventType = 'drag' | 'dragend' | 'dragenter' | 'dragleave' | 'dragover' | 'dragstart' | 'drop';
export interface DragEventData {
event: DragEvent;
srcElement: HTMLElement;
targetElement?: HTMLElement;
eventType: DragEventType;
dragRow: any;
dropRow?: any;
}