UNPKG

@kadoui/react

Version:

Kadoui primitive components for React

43 lines (42 loc) 1.48 kB
"use client"; import { jsx as _jsx } from "react/jsx-runtime"; import { useRouter, useSearchParams } from "next/navigation"; import { useEffect, useState } from "react"; import { PaginationContext } from "./PaginationContext"; export function PaginationSearchParamsRoot({ pages, pagesLength, pageKey, ...p }) { const router = useRouter(); const searchParams = useSearchParams(); const [currentPage, setCurrentPage] = useState(1); const correctPagesLength = (pages?.length || pagesLength); useEffect(() => { setCurrentPage(+(searchParams.get(pageKey || "page") || "1")); }, [pageKey, searchParams]); const pushRouter = (page) => { const params = new URLSearchParams(searchParams.toString()); params.set(pageKey || "page", page.toString()); router.push("?" + params.toString()); }; const setPage = (page) => { if (page !== currentPage) { pushRouter(page); } }; const nextPage = () => { if (currentPage < correctPagesLength) { pushRouter(currentPage + 1); } }; const prevPage = () => { if (currentPage > 1) { pushRouter(currentPage - 1); } }; return (_jsx(PaginationContext.Provider, { value: { pages, page: currentPage, setPage, pagesLength: correctPagesLength, nextPage, prevPage, }, children: _jsx("div", { ...p }) })); }