'use client' import ReactPaginate from 'react-paginate'; import { createUrl } from 'lib/utils'; import { usePathname, useSearchParams, useRouter } from 'next/navigation'; export default function Pagination({ itemsPerPage, itemsTotal, currentPage }: { itemsPerPage: number, itemsTotal: number, currentPage: number }) { const router = useRouter(); const pathname = usePathname(); const currentParams = useSearchParams(); const q = currentParams.get('q'); const sort = currentParams.get('sort'); const pageCount = Math.ceil(itemsTotal / itemsPerPage); // Invoke when user click to request another page. test const handlePageClick = (event: clickEvent) => { const page = event.selected; const newPage = page + 1; let newUrl = createUrl(pathname, new URLSearchParams({ ...(q && { q }), ...(sort && { sort }), })); if (page !== 0) { newUrl = createUrl(pathname, new URLSearchParams({ ...(q && { q }), ...(sort && { sort }), page: newPage.toString(), })); } router.replace(newUrl); }; return ( <> ); } type clickEvent = { index: number | null; selected: number; nextSelectedPage: number | undefined; event: object; isPrevious: boolean; isNext: boolean; isBreak: boolean; isActive: boolean; }