@intuitionrobotics/thunderstorm
Version:
36 lines (35 loc) • 1.62 kB
TypeScript
import { ObjectTS } from "@intuitionrobotics/ts-common";
import { Stylable } from "../tools/Stylable";
import React = require("react");
export type HeaderRenderer<T extends ObjectTS> = {
[P in keyof T]: (columnKey: P) => React.ReactNode;
};
export type ActionItemRenderer<P> = (rowIndex: number, actionKey: P) => React.ReactNode;
export type ActionsRenderer<A extends ObjectTS> = {
[P in keyof A]: ActionItemRenderer<P>;
};
export type CellRenderer<P, V, T> = (cellValue: V, rowIndex: number, columnKey: P, rowObject: T) => React.ReactNode;
export type RowRenderer<T extends ObjectTS> = {
[P in keyof T]: CellRenderer<P, T[P], T>;
};
export type CellStyle<P, V, T> = (rowObject: T, rowIndex: number, cellValue?: V, columnKey?: P) => Stylable;
export type TableProps<T extends ObjectTS, A extends ObjectTS = never> = Stylable & {
id: string;
header: (keyof T)[];
rows: T[];
headerRenderer: ((columnKey: keyof T) => React.ReactNode) | HeaderRenderer<T>;
cellRenderer: CellRenderer<keyof T, T[keyof T], T> | RowRenderer<T>;
actions?: (keyof A)[];
actionsRenderer?: ActionsRenderer<A> | ActionItemRenderer<keyof A>;
body?: Stylable;
tr?: Stylable | ((rowValue: T, rowIndex: number) => Stylable);
td?: Stylable | CellStyle<keyof T, T[keyof T], T>;
};
export declare class TS_Table<T extends ObjectTS, A extends ObjectTS = never> extends React.Component<TableProps<T, A>, any> {
constructor(p: TableProps<T, A>);
render(): React.JSX.Element;
private renderTableHeader;
private renderTableBody;
private resolveTDStyleable;
private resolveTRStyleable;
}