diff --git a/src/App.tsx b/src/App.tsx index 189a990c8..4b8648bc7 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,25 +1,55 @@ -import React from 'react'; import './App.css'; import { getNumbers } from './utils'; - -// eslint-disable-next-line @typescript-eslint/no-unused-vars +import { Pagination } from './components/Pagination'; +import { useSearchParams } from 'react-router-dom'; +import React from 'react'; const items = getNumbers(1, 42).map(n => `Item ${n}`); export const App: React.FC = () => { + const [searchParams, setSearchParams] = useSearchParams(); + + const currentPage = Number(searchParams.get('page')) || 1; + const perPage = Number(searchParams.get('perPage')) || 5; + + function onPageChange(newPage: number): void { + const params = new URLSearchParams(searchParams); + + params.set('page', newPage.toString()); + setSearchParams(params); + } + + function onPerPageChange(newPerPage: number): void { + const params = new URLSearchParams(searchParams); + + params.set('perPage', newPerPage.toString()); + params.set('page', '1'); + setSearchParams(params); + } + + const startIndex = (currentPage - 1) * perPage; + const calculatedEndIndex = startIndex + perPage; + const endIndex = Math.min(calculatedEndIndex, items.length); + return (

Items with Pagination

- Page 1 (items 1 - 5 of 42) + {`Page ${currentPage} (items ${startIndex + 1} - ${endIndex} of ${items.length})`}

+ {/* зміна items на сторінці */}