diff --git a/src/components/Pagination.tsx b/src/components/Pagination.tsx index e06782c..1901ed4 100644 --- a/src/components/Pagination.tsx +++ b/src/components/Pagination.tsx @@ -14,31 +14,36 @@ const Pagination: React.FC = ({ }) => { const getPageNumbers = () => { const pageNumbers: (number | string)[] = []; - const maxVisiblePages = 5; // تعداد حداکثری صفحات قابل مشاهده - if (totalPages <= maxVisiblePages) { + if (totalPages <= 7) { + // Show all pages if total pages are 7 or less for (let i = 1; i <= totalPages; i++) { pageNumbers.push(i); } } else { - if (currentPage > 3) { - pageNumbers.push(1); - if (currentPage > 4) { - pageNumbers.push("..."); + // Always show first page + pageNumbers.push(1); + + if (currentPage <= 4) { + // Near the beginning + for (let i = 2; i <= 5; i++) { + pageNumbers.push(i); } - } - - const start = Math.max(2, currentPage - 1); - const end = Math.min(totalPages - 1, currentPage + 1); - - for (let i = start; i <= end; i++) { - pageNumbers.push(i); - } - - if (currentPage < totalPages - 2) { - if (currentPage < totalPages - 3) { - pageNumbers.push("..."); + pageNumbers.push("..."); + pageNumbers.push(totalPages); + } else if (currentPage >= totalPages - 3) { + // Near the end + pageNumbers.push("..."); + for (let i = totalPages - 4; i <= totalPages; i++) { + pageNumbers.push(i); } + } else { + // In the middle + pageNumbers.push("..."); + pageNumbers.push(currentPage - 1); + pageNumbers.push(currentPage); + pageNumbers.push(currentPage + 1); + pageNumbers.push("..."); pageNumbers.push(totalPages); } } @@ -48,51 +53,61 @@ const Pagination: React.FC = ({ const pageNumbers = getPageNumbers(); - return ( -
- {/* دکمه قبلی */} - {/* */} + const handlePageChange = (page: number) => { + if (page >= 1 && page <= totalPages) { + onPageChange(page); + } + }; - {/* شماره صفحات */} + return ( +
+ {/* Previous button */} + + + {/* Page numbers */} {pageNumbers.map((page, index) => typeof page === "number" ? ( ) : ( - + {page} ) )} - {/* دکمه بعدی */} - {/* */} + > +
); };