@cmk/fe_utils
Version:
frontend utility library
75 lines (73 loc) • 2.48 kB
TypeScript
import { KeyboardEvent, ChangeEvent } from 'react';
import { GenericFilterType, GenericFilterValueType } from './types';
export type TableUiType = {
searchValue: string;
searchParam: string;
pageNumber: number;
itemsPerPage: number;
filters: GenericFilterType[];
};
export type TableHookProps = {
onStartLoading?: () => void;
onFetch: (url: string, srcUrl?: string) => void;
url: string;
externalFilters?: {
filterKey: string;
value: GenericFilterValueType;
}[];
initial?: {
filters?: {
filterKey: string;
value: GenericFilterValueType;
}[];
searchParam?: string;
pageNumber?: number;
itemsPerPage?: number;
};
onUpdateTableParams?: (newValue: {
filters: {
filterKey: string;
value: GenericFilterValueType;
}[];
searchParam: string;
pageNumber: number;
itemsPerPage: number;
}) => void;
onChangeItemsPerPage?: (newvalue: number) => void;
itemsPerPageStorageKey?: string;
preprocessFilters?: (filtersIn: {
filterKey: string;
value: GenericFilterValueType;
}[]) => {
filterKey: string;
value: GenericFilterValueType;
}[];
postprocessFilters?: (filtersIn: {
filterKey: string;
value: GenericFilterValueType;
}[]) => {
filterKey: string;
value: GenericFilterValueType;
}[];
searchValue?: string;
isUnpaginated?: boolean;
disablePagination?: boolean;
scrollContainerId?: string;
};
export declare const useTableUi: (props: TableHookProps) => {
tableUi: TableUiType;
setTableUi: import('react').Dispatch<import('react').SetStateAction<TableUiType>>;
handleSeachChange: (e: ChangeEvent<HTMLInputElement>) => void;
handleSeachParamChange: (e: ChangeEvent<HTMLInputElement>) => void;
handleSearchKeyUp: (e: KeyboardEvent<HTMLInputElement> & ChangeEvent<HTMLInputElement>) => void;
clearFilters: () => void;
setFilters: (newValue: ((current: GenericFilterType[]) => GenericFilterType[]) | GenericFilterType[]) => void;
updateData: () => Promise<void>;
changePageNumber: (newValue: ((current: number) => number) | number) => void;
changeItemsPerPage: (newValue: ((current: number) => number) | number) => void;
UrlParams: {
fullUrl: string;
paramsString: string;
unpaginatedParamsString: string;
};
};