UNPKG

@vitorlans/react-table-ui

Version:

Out-of-the-box UI for React-Table 7

69 lines (68 loc) 3.17 kB
import type { FC, ReactNode } from 'react'; import type { UsePaginationOptions, UsePaginationState, UsePaginationInstanceProps } from './ReactTable'; import type { DataType, StateChangeHandler } from './DataType'; export declare type PaginationOptions<Data extends DataType> = ManualPaginationOptions<Data> | AutoPaginationOptions<Data>; interface ManualPaginationOptions<Data extends DataType> extends CommonPaginationOptions<Data> { /** Manually paginate data using external methods. */ manualPagination?: true; /** Number of pages available. Required for manual pagination. */ pageCount: number; /** Number of total records available across all pages. * If not provided, an estimation is used in the Status. */ recordCount?: number; /** * Callback to fetch more data when `manualPagination` is enabled. * It receives current pagination state as parameter. * It should be wrapped in `React.useCallback`. */ fetchData: (paginationState: UsePaginationState<Data>) => void; } interface AutoPaginationOptions<Data extends DataType> extends CommonPaginationOptions<Data> { manualPagination?: undefined; pageCount?: undefined; fetchData?: undefined; recordCount?: undefined; } /** Type interface for pagination options. * @category Options */ interface CommonPaginationOptions<Data extends DataType> extends UsePaginationOptions<Data> { /** Initial settings of pagination */ initialState?: Partial<UsePaginationState<Data>>; /** Disable pagination. * @default false */ disablePagination?: boolean; /** Reset pagination when data changes (sorting, filtering, etc.). * @default true for client-side pagination * @default false for manual-pagination. */ autoResetPage?: boolean; /** Count expanded sub-rows while calculating rows on a page. * @default true */ paginateExpandedRows?: boolean; /** Callback executed when page changes (all pagination changes). * The function must be wrapped in useCallback hook. */ onStateChange?: StateChangeHandler<UsePaginationState<Data>>; /** Custom component to be rendered for pagination. * Overrides all indicators. * @category Custom Component */ Component?: PaginationComponent<Data>; /** Indicator/icon used in action/button to * navigate to the next page. * @category Custom Component */ nextPageIndicator?: ReactNode; /** Indicator/icon used in action/button to * navigate to the previous page. * @category Custom Component */ previousPageIndicator?: ReactNode; /** Indicator/icon used in action/button to * navigate to the first page. * @category Custom Component */ firstPageIndicator?: ReactNode; /** Indicator/icon used in action/button to * navigate to the last page. * @category Custom Component */ lastPageIndicator?: ReactNode; } export declare type PaginationComponent<Data extends DataType> = FC<UsePaginationInstanceProps<Data> & UsePaginationState<Data> & { loading: boolean; }>; export default PaginationOptions;