export interface RenderParams { item: TData; column: Column; rowIndex: number; columnIndex: number; value: string | number | unknown; cell: HTMLDivElement; } export interface ChangeParams { item: TData; id: string; key: string; oldValue: string | number | unknown; value: string | number | unknown; } type Currencies = 'USD' | 'EUR' | 'GBP' | 'JPY' | 'CNY'; export interface FormatParams extends RenderParams { currency?: Currencies; minDecimal?: number; maxDecimal?: number; } export interface GetterParams { item: TData; } export interface SetterParams { item: TData; } export interface CellStyle { [cssProperty: string]: string | number; } export interface CellStyleFn { (params: RenderParams): CellStyle | null | undefined; } export interface CellClsRules { [cssClassName: string]: ((params: RenderParams) => boolean); } export interface CellClsFn { (params: RenderParams): string | string[] | null | undefined; } export interface RowStyle { [cssProperty: string]: string | number; } export interface RowClsRules { [cssClassName: string]: ((params: RenderParams) => boolean); } export interface Column { sortable?: boolean; resizable?: boolean; draggable?: boolean; hidden?: boolean; index?: keyof TData; dataIndex?: boolean; id?: string; filter?: boolean | { defaultFilter?: 'list' | string; list?: boolean; items?: { value: string; text: string; }[]; }; menu?: boolean; menuVisibility?: 'hover' | 'always'; align?: 'left' | 'center' | 'right'; headerAlign?: 'left' | 'center' | 'right'; type?: 'string' | 'number' | 'date' | 'boolean' | 'currency' | 'order'; title?: string; sticky?: boolean; editable?: boolean; rowGroup?: boolean; rowGroupOrder?: number; children?: Column[]; checkboxSelection?: boolean; headerCheckboxSelection?: boolean; maxWidth?: number; minWidth?: number; width?: number; flex?: number; render?(params: RenderParams): string|undefined; cellStyle?: CellStyle | CellStyleFn; cellClsRules?: CellClsRules; cellCls?: string | string[] | CellClsFn; format?(params: FormatParams): string; currency?: Currencies; minDecimal?: number; maxDecimal?: number; getter?(params: GetterParams): string; setter?(params: SetterParams): string|number|undefined|null|object; agFn?: 'sum' | 'avg' | 'min' | 'max' | ((params: unknown) => number | string); editor?: { type: 'combo' | string; disabled?: boolean; typing?: boolean; leftListRender?: (params: { item: { value: string; text: string; } }) => string items?: { value: string; text: string; }[]; } }