UNPKG

mui-easy-table

Version:
142 lines (124 loc) 4.72 kB
import { Dispatch } from 'react'; import { Draft } from 'immer'; import { FieldValues } from 'react-hook-form'; import { JSX } from 'react/jsx-runtime'; import { Path } from 'react-hook-form'; import { PropsWithChildren } from 'react'; import { ReactNode } from 'react'; import { SetStateAction } from 'react'; export declare function ColumnManagerPopper<Row extends FieldValues>(props: ColumnManagerPopperProps<Row>): JSX.Element; export declare type ColumnManagerPopperProps<Row extends FieldValues> = { columnState: ColumnState<Row>; columns: EasyColumnProps<Row>[]; /** * update column hidden */ updateColumnHidden: (path: RowKeyPath<Row>, nextHidden: boolean) => void; /** * TODO: */ updateColumnOrder: (startIndex: number, endIndex: number) => void; anchorEl: HTMLElement | null; setAnchorEl: Dispatch<SetStateAction<HTMLElement | null>>; }; export declare type ColumnState<Row extends FieldValues> = { /** * unique */ path: RowKeyPath<Row>; /** * @default 100 */ width?: number; /** * @default false */ hidden?: boolean; }[]; export declare type EasyColumnProps<T extends FieldValues, Filter extends FieldValues | null = null> = { path: RowKeyPath<T>; headerName: ReactNode; /** * @default 'left' * */ align?: 'left' | 'center' | 'right'; /** * @default false * */ sortable?: boolean; /** * support date-fns format, money and custom render * */ render?: EasyTableCellRender<T, Filter>; /** * sum the column value * */ sum?: boolean; filterSetting?: EasyFilterSetting<any>; }; declare type EasyFilterSetting<T> = { type: 'singleSelect' | 'multiSelect'; options: T[]; renderOption?: (value: T) => ReactNode; }; declare type EasyPath<T> = Path<T> | 'actions'; export declare function EasyTable<T extends FieldValues, Filter extends FieldValues | null = null>(props: EasyTableProps<T, Filter>): JSX.Element; export declare type EasyTableCellRender<T extends FieldValues, Filter extends FieldValues | null = null> = 'yyyy-MM-dd' | 'yyyy-MM-dd HH:mm:ss' | 'money' /** * index: row index */ | ((val: any, row: T, index: number, useTableReturn: UseTableReturn<T, Filter>) => ReactNode); export declare type EasyTableProps<T extends FieldValues, Filter extends FieldValues | null = null> = { onManageColumns?: () => void; border?: boolean; selectionMode?: 'single' | 'multiple'; useTableReturn: UseTableReturn<T, Filter>; columns: EasyColumnProps<T, Filter>[]; /** * height of table * */ height?: string | number; /** * setting of columns * */ setting?: boolean; }; export declare const EasyTableProvider: <T extends FieldValues_2>(props: PropsWithChildren<UseTableReturn<T>>) => JSX.Element; declare type FieldValues_2 = Record<string, any>; declare type RowKeyPath<T> = Path<T> | 'actions'; export declare const useEasyTableContext: <T extends FieldValues_2>() => UseTableReturn<T>; export declare function useTable<Row extends FieldValues, Filter extends FieldValues | null = null>(props: UseTableProps<Row, Filter>): UseTableReturn<Row, Filter>; export declare type UseTableProps<Row extends FieldValues, Filter extends FieldValues | null = null> = { rawData: Row[]; /** * declare the key path of row * */ rowKeyPath: RowKeyPath<Row>; defaultColumnState: ColumnState<Row>; defaultFilter?: Filter; }; export declare type UseTableReturn<Row extends FieldValues, Filter extends FieldValues | null = null> = { filter: Filter | null; setFilter: (value: Filter | null) => void; visiableData: Row[]; setRawData: (nextData: Row[]) => void; addRow: (row: Row) => void; deleteRow: (rowKey: number | string) => void; updateRow: (rowKey: number | string, row: Draft<Row>) => void; updatePartialRow: (rowKey: number | string, colKeyPath: EasyPath<Row>, item: any) => void; selected: Row[]; addSelected: (row: Row) => void; deleteSelected: (rowKey: number | string) => void; setSelected: (rows: Row[]) => void; selectedAll: boolean; setSelectedAll: () => void; columnState: ColumnState<Row>; updateColumnHidden: (rowKeyPath: RowKeyPath<Row>, hidden: boolean) => void; updateColumnWidth: (rowKeyPath: RowKeyPath<Row>, nextWidth: number) => void; updateColumnOrder: (startIndex: number, endIndex: number) => void; /** * declare the key path of row * */ rowKeyPath: RowKeyPath<Row>; }; export { }