@resourge/react-fetch
Version:
[](LICENSE)
70 lines (69 loc) • 3.12 kB
TypeScript
/**
* react-fetch v1.43.1
*
* Copyright (c) resourge.
*
* This source code is licensed under the MIT license found in the
* LICENSE.md file in the root directory of this source tree.
*
* @license MIT
*/
import { type MutableRefObject } from 'react';
import { type OrderByEnum, type PaginationSearchParamsType, type ParamsType, type SortCriteria, type SortSearchParamsType } from '../types/ParamsType';
import { type FilterKeysState } from '../utils/createProxy';
import { type Pagination } from './usePagination';
import { type PreloadRef } from './usePreload';
export type FilterSearchParamsDefaultValue<T extends Record<string, any>> = {
filter: T;
pagination: PaginationSearchParamsType;
} & SortSearchParamsType;
export type SearchParamsMetadata<FilterSearchParams extends Record<string, any>> = {
filter: FilterSearchParams;
pagination: Pagination;
} & SortSearchParamsType;
export type State<FilterSearchParams extends Record<string, any>> = SearchParamsMetadata<FilterSearchParams> & {
url: URL;
};
type SortTableFunctionType = {
(sort: SortCriteria): void;
(orderBy: OrderByEnum, orderColumn: string): void;
};
export type FilterSearchParamsReturn<FilterSearchParams extends Record<string, any>> = {
filter: FilterSearchParams;
pagination: Pagination;
} & SortSearchParamsType & {
/**
* Method to updates filters.
*/
setFilter: <F extends Record<string, any> = FilterSearchParams>(newFilter: Omit<ParamsType<F>, 'f'> & Partial<F>) => void;
/**
* Method to update params.
*/
setParams: <F extends Record<string, any> = FilterSearchParams>(newFilter: ParamsType<F>) => void;
/**
* Changes which column to order asc/desc.
*/
sortTable: SortTableFunctionType;
};
export type FilterSearchParamsProps<Data, FilterSearchParams extends Record<string, any> = Record<string, any>> = {
defaultFilter: FilterSearchParams;
deps: readonly any[];
fetch: (metadata: SearchParamsMetadata<FilterSearchParams>, whatChanged: Set<'pagination' | 'sort' | 'filter'>) => Promise<Data>;
filterKeysRef: React.MutableRefObject<FilterKeysState>;
initialPage: PaginationSearchParamsType['page'];
initialPerPage: PaginationSearchParamsType['perPage'];
preloadRef: MutableRefObject<PreloadRef<Data>>;
defaultSort?: SortSearchParamsType['sort'];
enable?: boolean;
/**
* Optional unique identifier to namespace multiple filter states in the URL.
*
* When two or more instances of useFilterSearchParams are used in the same page,
* this ID helps prevent conflicts by grouping related search parameters together.
* If not provided, a unique ID will be automatically generated.
*/
fId?: string;
hash?: boolean;
};
export declare const useFilterSearchParams: <Data, FilterSearchParams extends Record<string, any> = Record<string, any>>({ defaultFilter, initialPage, initialPerPage, defaultSort, fetch, preloadRef, hash, deps, filterKeysRef, fId, enable }: FilterSearchParamsProps<Data, FilterSearchParams>) => FilterSearchParamsReturn<FilterSearchParams>;
export {};