mui-easy-table
Version:
142 lines (124 loc) • 4.72 kB
TypeScript
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 { }