UNPKG

@impossiblefinance/uikit

Version:
147 lines (146 loc) 3.86 kB
/// <reference types="react" /> export declare type ColumnType<T> = { name: string; label?: string; hidden?: boolean; sort?: ((a: RowType<T>, b: RowType<T>) => number) | undefined; render?: ({ value, row }: { value: any; row: T; }) => React.ReactNode; headerRender?: HeaderRenderType; }; export declare type ColumnStateType<T> = { name: string; label: string; hidden: boolean; sort?: ((a: RowType<T>, b: RowType<T>) => number) | undefined; sorted: { on: boolean; asc?: boolean; }; headerRender?: HeaderRenderType; }; export declare type HeaderRenderType = ({ label }: { label: React.ReactNode; }) => React.ReactNode; export declare type HeaderType<T> = { id?: string; name: string; label?: string; hidden?: boolean; sorted: { on: boolean; asc?: boolean; }; sort?: ((a: RowType<T>, b: RowType<T>) => number) | undefined; render: () => React.ReactNode; }; export declare type DataType = { [key: string]: any; }; export declare type ColumnByNamesType<T> = { [key: string]: ColumnType<T>; }; export declare type RenderFunctionType<T> = ({ value, row }: RenderFunctionArgsType<T>) => React.ReactNode | undefined; declare type RenderFunctionArgsType<T> = { value: any; row: T; }; export declare type ColumnByNameType<T> = Omit<Required<ColumnType<T>>, 'name' | 'sort'>; export interface RowType<T extends DataType> { id: number; cells: CellType[]; hidden?: boolean; selected?: boolean; original: T; } export declare type CellType = { value: any; render: () => React.ReactNode; }; export interface UseTableTypeParams<T extends DataType> { columns: ColumnType<T>[]; data: T[]; options?: { sortable?: boolean; selectable?: boolean; filter?: (row: RowType<T>[]) => RowType<T>[]; filterOn?: boolean; }; } export interface UseTablePropsType<T> { columns: ColumnType<T>[]; data: T[]; options?: { sortable?: boolean; selectable?: boolean; filter?: (row: RowType<T>[]) => RowType<T>[]; }; } export interface UseTableOptionsType<T> { sortable?: boolean; selectable?: boolean; pagination?: boolean; sortColumn?: string; filter?: (row: RowType<T>[]) => RowType<T>[]; } export interface UseTableReturnType<T> { headers: HeaderType<T>[]; originalRows: RowType<T>[]; rows: RowType<T>[]; selectedRows: RowType<T>[]; dispatch: React.Dispatch<TableAction<T>>; toggleSort: (columnName: string, isAscOverride?: boolean) => void; selectRow: (id: number) => void; toggleAll: () => void; setSearchString: (searchString: string) => void; toggleAllState: boolean; pagination: PaginatorType; } declare type PaginatorType = { nextPage: () => void; prevPage: () => void; page: number; perPage: number; canNext: boolean; canPrev: boolean; }; export declare type TableState<T extends DataType> = { columnsByName: ColumnByNamesType<T>; columns: ColumnStateType<T>[]; rows: RowType<T>[]; originalRows: RowType<T>[]; selectedRows: RowType<T>[]; filterOn: boolean; sortColumn: string | null | undefined; toggleAllState: boolean; pagination: PaginatorType; paginationEnabled: boolean; }; export declare type TableAction<T extends DataType> = { type: 'TOGGLE_SORT'; columnName: string; isAscOverride?: boolean; } | { type: 'SELECT_ROW'; rowId: number; } | { type: 'GLOBAL_FILTER'; filter: (row: RowType<T>[]) => RowType<T>[]; } | { type: 'SEARCH_STRING'; searchString: string; } | { type: 'GLOBAL_FILTER_OFF'; } | { type: 'SET_ROWS'; data: RowType<T>[]; } | { type: 'NEXT_PAGE'; } | { type: 'PREV_PAGE'; } | { type: 'TOGGLE_ALL'; }; export {};