From 39c3d799e28f1527cfe75adb34f5a34a95372e4d Mon Sep 17 00:00:00 2001 From: masteryada378 Date: Fri, 26 Jun 2026 08:22:43 +0300 Subject: [PATCH 1/7] paginator --- src/App.tsx | 115 ++++++++--------------- src/components/Pagination/Pagination.tsx | 80 +++++++++++++++- 2 files changed, 118 insertions(+), 77 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 189a990c8..a6b3715cb 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,17 +1,36 @@ -import React from 'react'; +import React, { useState } from 'react'; import './App.css'; import { getNumbers } from './utils'; +import { Pagination } from './components/Pagination/Pagination'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -const items = getNumbers(1, 42).map(n => `Item ${n}`); +const items = getNumbers(1, 420).map(n => `Item ${n}`); export const App: React.FC = () => { + const [currentPage, setCurrentPage] = useState(1); + const [perPage, setPerPage] = useState(5); + + const indexOfLastItem = currentPage * perPage; + const indexOfFirstItem = indexOfLastItem - perPage; + const visibleItems = items.slice(indexOfFirstItem, indexOfLastItem); + + const startItemNum = items.length === 0 ? 0 : indexOfFirstItem + 1; + const endItemNum = Math.min(indexOfLastItem, items.length); + + const handlePerPageChange = (event: React.ChangeEvent) => { + setPerPage(Number(event.target.value)); + setCurrentPage(1); + }; + + const handlePageChange = (page: number) => { + setCurrentPage(page); + }; + return (

Items with Pagination

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

@@ -19,7 +38,10 @@ export const App: React.FC = () => {