UNPKG

@table-library/react-table-library

Version:
95 lines (94 loc) 3.35 kB
import * as React from 'react'; import { Nullish } from '@table-library/react-table-library/types/common'; import { Theme } from '@table-library/react-table-library/types/theme'; import { Layout } from '@table-library/react-table-library/types/layout'; import { ColumnResizeProps } from '@table-library/react-table-library/types/resize'; import { Select } from '@table-library/react-table-library/types/select'; import { Tree } from '@table-library/react-table-library/types/tree'; import { Sort } from '@table-library/react-table-library/types/sort'; import { Pagination } from '@table-library/react-table-library/types/pagination'; export declare type Identifier = string | number; export declare type TableNode = { id: Identifier; nodes?: TableNode[] | Nullish; [prop: string]: any; }; export declare type ExtendedNode<T extends TableNode> = T & { treeXLevel?: number; treeYLevel?: number; parentNode?: ExtendedNode<T> | Nullish; ancestors?: ExtendedNode<T>[]; }; export declare type Data<T extends TableNode> = { pageInfo?: any; nodes: T[]; }; export declare type RestProps = Record<string, any>; export declare type Event = React.SyntheticEvent | React.KeyboardEvent; export declare type OnClick<T extends TableNode> = (node: T, event: Event) => void; export declare type CellProps = { className?: string; pinLeft?: boolean; pinRight?: boolean; stiff?: boolean; gridColumnStart?: number; gridColumnEnd?: number; onClick?: (event: React.SyntheticEvent) => void; children?: React.ReactNode; } & RestProps; export declare type HeaderCellProps = { index?: number; className?: string; hide?: boolean; pinLeft?: boolean; pinRight?: boolean; stiff?: boolean; isFooter?: boolean; gridColumnStart?: number; gridColumnEnd?: number; resize?: ColumnResizeProps; children?: React.ReactNode; } & RestProps; export declare type RowProps<T extends TableNode> = { item: T; className?: string; disabled?: boolean; onClick?: OnClick<T>; onDoubleClick?: OnClick<T>; children: React.ReactNode; } & RestProps; export declare type BodyProps = { children: React.ReactNode; } & RestProps; export declare type HeaderRowProps = { isFooter?: boolean; className?: string; children: React.ReactNode; } & RestProps; export declare type HeaderProps = { children: React.ReactNode; } & RestProps; export declare type TableProps<T extends TableNode> = { data: Data<T>; theme?: Theme; layout?: Layout; sort?: Sort<T>; pagination?: Pagination<T>; select?: Select<T>; tree?: Tree<T>; onInit?: OnInitFunction; children?: (nodes: ExtendedNode<TableNode>[]) => React.ReactNode; } & RestProps; export declare type OnInitFunction = (node: HTMLTableElement) => void; export declare type Features<T extends TableNode> = { select: Select<T> | Nullish; tree: Tree<T> | Nullish; sort: Sort<T> | Nullish; pagination: Pagination<T> | Nullish; }; export declare type FeatureProps<T extends TableNode> = { theme?: string; className?: string; onClick: OnClick<T>; }; export declare type GetRowProps<T extends TableNode> = (props: RowProps<T>, features: Features<T>) => FeatureProps<T>;