import React, { MouseEvent } from 'react'; import { FormErrorType } from '../form/FormTypes'; export type BaseRowEvent = { data: T; index: number; }; export type SimpleCellEvent = BaseRowEvent & { value: any; }; export type ChangeCellEvent = SimpleCellEvent & { newValue: any; }; export type DefaultColumTableProps = { headerName?: string; flex?: number; width?: number; minWidth?: number; editable?: boolean; dataType?: 'string' | 'number' | 'boolean' | 'date' | 'object' | 'array'; cellRenderer?: (dat: SimpleCellEvent) => React.ReactNode; }; export type ColumTableProps = DefaultColumTableProps & { field: string; }; export type TableAction = { name: string; icon: React.ReactNode; onClick: (event: MouseEvent) => void; disabled?: boolean; }; export type TableActionFc = (dat: BaseRowEvent) => TableAction; export type TableProps = { className?: string; rowData: T[] | null | undefined; isSelectable?: keyof T; fixedHeader?: boolean; onSelectionChange?: (selected: (string | number)[]) => void; columnDefs: ColumTableProps[]; onClickRow?: (rowData: T) => void; defaultColDef?: DefaultColumTableProps; onCellValueChanged?: (change: ChangeCellEvent) => void; extendRowRenderer?: (dat: BaseRowEvent) => React.ReactNode; rowAction?: TableActionFc[]; editMode?: (row: T, setError: (err: FormErrorType | null) => void, clear: () => void) => Promise; }; export type TableRowProps = { rowData: T; api: ITableFc; index: number; extendRowRenderer?: (dat: BaseRowEvent) => React.ReactNode; }; export type ITableFc = { editMode?: (row: T, setError: (err: FormErrorType | null) => void, clear: () => void) => Promise; hasEditMode(): boolean; rowSelected(index: number | string | T): boolean; rowSelect(index: number | string | T): void; rowUnSelect(index: number | string | T): void; getColumDefs(add?: TableActionFc[]): ColumTableProps[]; }; export declare function useTableStore>(props: TableProps): { data: { rowData: T[]; }; api: ITableFc; }; export declare function getCellValue(rot: T | any, col: ColumTableProps): any;