UNPKG

@shakibdshy/react-tablegrid

Version:

A modern, flexible, headless and advanced table component for React with grid layout

58 lines (55 loc) 2.25 kB
import { TableState, Column, SortDirection, ColumnResizeInfoState, ServerSideConfig, TableEventMap } from './types.mjs'; 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 };