bananas-commerce-admin
Version:
What's this, an admin for apes?
26 lines • 1.23 kB
JavaScript
import { useCallback, useMemo } from "react";
import { useSearchParams } from "react-router-dom";
export const useTableSearchParams = (defaults) => {
const [searchParams, setSearchParams] = useSearchParams();
const page = useMemo(() => Number.parseInt(searchParams.get("page") ?? defaults?.page?.toString() ?? "0"), [searchParams]);
const changePage = useCallback((_, newPage) => {
const params = new URLSearchParams(searchParams);
params.set("page", newPage.toString());
setSearchParams(params);
}, [searchParams, setSearchParams]);
const rowsPerPage = useMemo(() => Number.parseInt(searchParams.get("page_size") ?? defaults?.rowsPerPage?.toString() ?? "100"), [searchParams, defaults]);
const changeRowsPerPage = useCallback((event) => {
const newRowsPerPage = Number.parseInt(event.target.value);
const params = new URLSearchParams(searchParams);
params.set("page_size", newRowsPerPage.toString());
params.set("page", "0");
setSearchParams(params);
}, [searchParams, setSearchParams]);
return {
page,
changePage,
rowsPerPage,
changeRowsPerPage,
};
};
//# sourceMappingURL=useTableSearchParams.js.map