unstyled-table
Version:
An unstyled react table component built on top of @tanstack/react-table v8
82 lines (73 loc) • 3.33 kB
TypeScript
import { ColumnDef, InitialTableState, SortingState, ColumnFiltersState, PaginationState, VisibilityState, FilterFn, Table, Header, HeaderGroup, Row, Cell } from '@tanstack/react-table';
export { AccessorFn, Cell, CellContext, Column, ColumnDef, ColumnDefBase, ColumnFilter, ColumnFiltersState, ColumnHelper, ColumnMeta, ColumnOrderState, ColumnSort, FilterFn, Header, HeaderContext, HeaderGroup, PaginationState, Row, SortingFn, SortingState, Table, VisibilityState, createColumnHelper, flexRender } from '@tanstack/react-table';
import * as react_jsx_runtime from 'react/jsx-runtime';
import { RankingInfo } from '@tanstack/match-sorter-utils';
import { FC, InputHTMLAttributes, Dispatch, SetStateAction, ReactNode } from 'react';
type FilterInputComponent = FC<InputHTMLAttributes<HTMLInputElement>>;
type FilterSelectComponent = FC<InputHTMLAttributes<HTMLSelectElement>>;
type Renderer = FC<{
children: ReactNode;
}>;
interface UnstyledTableProps<TData extends any, TValue = any> {
columns: ColumnDef<TData, TValue>[];
data: TData[];
initialState?: InitialTableState;
defaultColumn?: Partial<ColumnDef<TData, unknown>>;
state?: {
sorting?: SortingState;
columnFilters?: ColumnFiltersState;
pagination?: PaginationState;
columnVisibility?: VisibilityState;
globalFilter?: string;
};
setSorting?: Dispatch<SetStateAction<SortingState>>;
setColumnFilters?: Dispatch<SetStateAction<ColumnFiltersState>>;
setPagination?: Dispatch<SetStateAction<PaginationState>>;
setColumnVisibility?: Dispatch<SetStateAction<VisibilityState>>;
setGlobalFilter?: Dispatch<SetStateAction<string>>;
manualSorting?: boolean;
manualFiltering?: boolean;
manualPagination?: boolean;
disableGlobalFilter?: boolean;
disableColumnVisibility?: boolean;
pageCount?: number;
showFooter?: boolean;
hidePagination?: boolean;
debugAll?: boolean;
debugTable?: boolean;
debugColumns?: boolean;
debugRows?: boolean;
debugHeaders?: boolean;
components?: {
table?: Renderer;
header?: Renderer;
headerRow?: Renderer;
headerCell?: Renderer;
body?: Renderer;
bodyRow?: Renderer;
bodyCell?: Renderer;
footer?: Renderer;
footerRow?: Renderer;
footerCell?: Renderer;
empty?: Renderer;
loading?: Renderer;
pagination?: FC;
filterInput?: FilterInputComponent;
filterSelect?: FilterSelectComponent;
};
}
declare module '@tanstack/table-core' {
interface FilterFns {
fuzzy: FilterFn<unknown>;
}
interface FilterMeta {
itemRank: RankingInfo;
}
}
declare const UnstyledTable: <TData, TValue = any>({ components, ...props }: UnstyledTableProps<TData, TValue>) => react_jsx_runtime.JSX.Element;
declare function useTable<T extends unknown>(): Table<T>;
declare function useHeader<T extends unknown, U = unknown>(): Header<T, U>;
declare function useHeaderGroup<T extends unknown>(): HeaderGroup<T>;
declare function useRow<T extends unknown>(): Row<T>;
declare function useCell<T extends unknown, U = unknown>(): Cell<T, U>;
export { FilterInputComponent, FilterSelectComponent, UnstyledTable, UnstyledTableProps, useCell, useHeader, useHeaderGroup, useRow, useTable };