@siemens/ngx-datatable
Version:
ngx-datatable is an Angular table grid component for presenting large and complex data.
84 lines (83 loc) • 2.66 kB
TypeScript
import { ValueGetter } from '../utils/column-prop-getters';
import { Row, SortDirection, TreeStatus } from './public.types';
import { TableColumn, TableColumnProp } from './table-column.type';
export type PinDirection = 'left' | 'center' | 'right';
export interface PinnedColumns {
type: PinDirection;
columns: TableColumnInternal[];
}
export interface ColumnGroupWidth {
left: number;
center: number;
right: number;
total: number;
}
export interface TargetChangedEvent {
newIndex?: number;
prevIndex: number;
initialIndex: number;
}
export interface ColumnResizeEventInternal {
column: TableColumnInternal;
prevValue: number;
newValue: number;
}
export interface ReorderEventInternal {
column: TableColumnInternal;
prevValue: number;
newValue: number;
}
export interface Page {
number: number;
text: string;
}
export interface InnerSortEvent {
column: SortableTableColumnInternal;
prevValue: SortDirection | undefined;
newValue: SortDirection | undefined;
}
export interface CellActiveEvent<TRow> {
type: 'checkbox' | 'click' | 'dblclick' | 'keydown' | 'mouseenter';
event: Event;
row: TRow;
group?: TRow[];
rowHeight?: number;
column?: TableColumn;
value?: any;
cellElement?: HTMLElement;
treeStatus?: TreeStatus;
}
export interface BaseTableColumnInternal<TRow extends Row = any> extends TableColumn<TRow> {
/** Internal unique id */
$$id: string;
/** Internal for column width distributions */
$$oldWidth?: number;
/** Internal for setColumnDefaults */
$$valueGetter: ValueGetter;
dragging?: boolean;
isTarget?: boolean;
targetMarkerContext?: any;
name: string;
width: number;
}
export interface StandardTableColumnInternal<TRow extends Row = any> extends BaseTableColumnInternal<TRow> {
sortable?: false;
}
export interface SortableTableColumnInternal<TRow extends Row = any> extends BaseTableColumnInternal<TRow> {
comparator: Exclude<TableColumn['comparator'], undefined>;
prop: TableColumnProp;
sortable: true;
}
export type TableColumnInternal<TRow extends Row = any> = StandardTableColumnInternal<TRow> | SortableTableColumnInternal<TRow>;
export interface TableColumnGroup {
left: TableColumnInternal[];
center: TableColumnInternal[];
right: TableColumnInternal[];
}
/** Represents the index of a row. */
export interface RowIndex {
/** Index of the row. If the row is inside a group, it will hold the index the group. */
index: number;
/** Index of a row inside a group. Only present if the row is inside a group. */
indexInGroup?: number;
}