@vitorlans/react-table-ui
Version:
Out-of-the-box UI for React-Table 7
69 lines (68 loc) • 3.17 kB
TypeScript
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;