import React from "react"; import type { QueryObserverResult, UseQueryOptions } from "@tanstack/react-query"; import type { BaseRecord, CrudFilter, CrudSort, GetListResponse, HttpError, MetaQuery, Pagination, Prettify } from "../../contexts/data/types"; import type { LiveModeProps } from "../../contexts/live/types"; import type { SuccessErrorNotification } from "../../contexts/notification/types"; import type { BaseListProps } from "../data/useList"; import type { MakeOptional } from "../../definitions/types/index"; import type { UseLoadingOvertimeOptionsProps, UseLoadingOvertimeReturnType } from "../useLoadingOvertime"; type SetFilterBehavior = "merge" | "replace"; export type useTableProps = { /** * Resource name for API data interactions * @default Resource name that it reads from route */ resource?: string; /** * Configuration for pagination */ pagination?: Pagination; /** * Sort configs */ sorters?: { /** * Initial sorter state */ initial?: CrudSort[]; /** * Default and unchangeable sorter state * @default `[]` */ permanent?: CrudSort[]; /** * Whether to use server side sorting or not. * @default "server" */ mode?: "server" | "off"; }; /** * Filter configs */ filters?: { /** * Initial filter state */ initial?: CrudFilter[]; /** * Default and unchangeable filter state * @default `[]` */ permanent?: CrudFilter[]; /** * Default behavior of the `setFilters` function * @default `"merge"` */ defaultBehavior?: SetFilterBehavior; /** * Whether to use server side filter or not. * @default "server" */ mode?: "server" | "off"; }; /** * Sortings, filters, page index and records shown per page are tracked by browser history * @default Value set in [Refine](/docs/api-reference/core/components/refine-config/#syncwithlocation). If a custom resource is given, it will be `false` */ syncWithLocation?: boolean; /** * react-query's [useQuery](https://tanstack.com/query/v5/docs/framework/react/reference/useQuery) options */ queryOptions?: MakeOptional, TError, GetListResponse>, "queryKey" | "queryFn">; /** * Metadata query for dataProvider */ meta?: MetaQuery; /** * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use. */ dataProviderName?: string; } & SuccessErrorNotification, TError, Prettify> & LiveModeProps & UseLoadingOvertimeOptionsProps; type ReactSetState = React.Dispatch>; type SyncWithLocationParams = { pagination: { currentPage?: number; pageSize?: number; }; sorters: CrudSort[]; filters: CrudFilter[]; }; export type useTableReturnType = { tableQuery: QueryObserverResult, TError>; sorters: CrudSort[]; setSorters: (sorter: CrudSort[]) => void; filters: CrudFilter[]; setFilters: ((filters: CrudFilter[], behavior?: SetFilterBehavior) => void) & ((setter: (prevFilters: CrudFilter[]) => CrudFilter[]) => void); createLinkForSyncWithLocation: (params: SyncWithLocationParams) => string; currentPage: number; setCurrentPage: ReactSetState; pageSize: number; setPageSize: ReactSetState; pageCount: number; result: { data: TData[]; total: number | undefined; [key: string]: any; }; } & UseLoadingOvertimeReturnType; export declare function useTable({ pagination, filters: filtersFromProp, sorters: sortersFromProp, syncWithLocation: syncWithLocationProp, resource: resourceFromProp, successNotification, errorNotification, queryOptions, liveMode: liveModeFromProp, onLiveEvent, liveParams, meta, dataProviderName, overtimeOptions, }?: useTableProps): useTableReturnType; export {}; //# sourceMappingURL=index.d.ts.map