@shakibdshy/react-tablegrid
Version:
A modern, flexible, headless and advanced table component for React with grid layout
58 lines (55 loc) • 2.25 kB
TypeScript
import { TableState, Column, SortDirection, ColumnResizeInfoState, ServerSideConfig, TableEventMap } from './types.js';
interface UseTableContextOptions<T extends Record<string, unknown>> {
data: T[];
columns: Column<T>[];
initialState?: Partial<TableState<T>>;
onStateChange?: (state: TableState<T>) => void;
events?: Partial<TableEventMap<T>>;
columnResizeMode?: "onChange" | "onResize";
columnResizeDirection?: "ltr" | "rtl";
debounceMs?: number;
isLoading?: boolean;
serverSide?: ServerSideConfig<T>;
}
/**
* Main hook for table functionality
* Combines state and event management
*/
declare function useTableContext<T extends Record<string, unknown>>({ data, columns, initialState, onStateChange, events, columnResizeMode, columnResizeDirection, debounceMs, isLoading, serverSide, }: UseTableContextOptions<T>): {
state: TableState<T>;
columns: Column<T>[];
data: T[];
filteredData: T[];
visibleColumns: (keyof T)[];
toggleColumnVisibility: (columnId: keyof T, isVisible: boolean) => void;
pinnedColumns: {
left: (keyof T)[];
right: (keyof T)[];
};
toggleColumnPin: (columnId: keyof T, position: "left" | "right" | false) => void;
sortColumn: keyof T;
sortDirection: SortDirection;
handleSort: (column: Column<T>) => void;
filterValue: string;
setFilterValue: (value: string) => void;
columnSizing: {
columnSizes: {
[key: string]: number;
};
};
columnResizeInfo: ColumnResizeInfoState;
columnResizeMode: "onChange" | "onResize";
columnResizeDirection: "ltr" | "rtl";
handleColumnResize: (columnId: keyof T, width: number) => void;
handleColumnResizeStart: (columnId: string, startX: number) => void;
handleColumnResizeMove: (currentX: number) => void;
handleColumnResizeEnd: () => void;
updateColumnSizing: (columnId: string, width: number) => void;
handleRowSelect: (row: T, index: number) => void;
resetState: () => void;
setData: (newData: T[]) => void;
handleStateChange: (newState: TableState<T>) => void;
serverSide: ServerSideConfig<T> | undefined;
};
declare const useTableGrid: typeof useTableContext;
export { useTableGrid as u };