blob: 8301ab3e0dfc41c61a5483f8f4c59139337b594c [file] [log] [blame]
/**
* Merge typing interfaces for UseTable hooks.
*
* Ref: https://gist.github.com/ggascoigne/646e14c9d54258e40588a13aabf0102d
*/
import {
UseGlobalFiltersState,
UseGlobalFiltersOptions,
UseGlobalFiltersInstanceProps,
UsePaginationInstanceProps,
UsePaginationOptions,
UsePaginationState,
UseSortByColumnOptions,
UseSortByColumnProps,
UseSortByInstanceProps,
UseSortByOptions,
UseSortByState,
UseTableHooks,
UseSortByHooks,
Renderer,
HeaderProps,
} from 'react-table';
import { UseStickyState, UseStickyTableOptions, UseStickyInstanceProps } from '../hooks/useSticky';
declare module 'react-table' {
export interface TableOptions<D extends object>
extends UseExpandedOptions<D>,
UseGlobalFiltersOptions<D>,
UsePaginationOptions<D>,
UseRowSelectOptions<D>,
UseSortByOptions<D>,
UseStickyTableOptions {}
export interface TableInstance<D extends object>
extends UseColumnOrderInstanceProps<D>,
UseExpandedInstanceProps<D>,
UseGlobalFiltersInstanceProps<D>,
UsePaginationInstanceProps<D>,
UseRowSelectInstanceProps<D>,
UseRowStateInstanceProps<D>,
UseSortByInstanceProps<D>,
UseStickyInstanceProps {}
export interface TableState<D extends object>
extends UseColumnOrderState<D>,
UseExpandedState<D>,
UseGlobalFiltersState<D>,
UsePaginationState<D>,
UseRowSelectState<D>,
UseSortByState<D>,
UseStickyState {}
// Typing from @types/react-table is incomplete
interface TableSortByToggleProps {
style?: React.CSSProperties;
title?: string;
onClick?: React.MouseEventHandler;
}
export interface ColumnInterface<D extends object>
extends UseGlobalFiltersColumnOptions<D>,
UseSortByColumnOptions<D> {
// must define as a new property because it's not possible to override
// the existing `Header` renderer option
Header?: Renderer<TableSortByToggleProps & HeaderProps<D>>;
}
export interface ColumnInstance<D extends object>
extends UseGlobalFiltersColumnOptions<D>,
UseSortByColumnProps<D> {
getSortByToggleProps: (props?: Partial<TableSortByToggleProps>) => TableSortByToggleProps;
}
export interface Hooks<D extends object> extends UseTableHooks<D>, UseSortByHooks<D> {}
}