@kadconsulting/dry
Version:
KAD Reusable Component Library
53 lines (52 loc) • 1.92 kB
TypeScript
import { type TableOptions, type TableState as OriginalTableState, type TableInstance as OriginalTableInstance, type HeaderGroup } from 'react-table';
export interface AdditionalTableState<D extends Record<string, unknown>> {
expandedRowIds?: {
[key: string]: boolean;
};
columnOrder?: Array<string | number>;
columnWidths?: {
[key: string]: number;
};
filters?: {
[key: string]: any;
};
sortBy?: Array<{
id: string;
desc: boolean;
}>;
}
export type TableState<D extends Record<string, unknown>> = OriginalTableState<D> & AdditionalTableState<D>;
export interface CustomTableState<D extends Record<string, unknown>> extends TableState<D> {
pageIndex: number;
pageSize: number;
selectedRowIds: {
[key: string]: boolean;
};
expandedRowIds: {
[key: string]: boolean;
};
columnOrder: Array<string | number>;
columnWidths: {
[key: string]: number;
};
}
export interface CustomHeaderGroup<D extends Record<string, unknown>> extends HeaderGroup<D> {
getSortByToggleProps: () => void;
isSorted: boolean;
isSortedDesc: boolean;
isResizing: boolean;
}
export interface CustomTableInstance<D extends Record<string, unknown>> extends OriginalTableInstance<D> {
setGlobalFilter: (filterValue: any) => void;
setPageSize: (size: number) => void;
gotoPage: (page: number) => void;
nextPage: () => void;
previousPage: () => void;
setColumnOrder: (order: Array<string | number>) => void;
toggleRowSelected: (index: number, isSelected: boolean) => void;
toggleRowExpanded: (id: string, isExpanded: boolean) => void;
setColumnWidth: (id: string, width: number) => void;
state: CustomTableState<D>;
selectedFlatRows: any;
}
export declare function useCustomTable<D extends Record<string, unknown>>(options: TableOptions<D>): CustomTableInstance<D>;