import React from "react"; interface PaginationProps { currentPage: number; totalPages: number; onPageChange: (page: number) => void; } const Pagination: React.FC = ({ currentPage, totalPages, onPageChange, }) => { // اگر فقط یک صفحه داریم، pagination نمایش داده نمی‌شود if (totalPages <= 1) return null; const getPageNumbers = () => { const pageNumbers: (number | string)[] = []; const maxVisiblePages = window.innerWidth < 768 ? 3 : 5; // تعداد کمتر برای موبایل if (totalPages <= maxVisiblePages) { for (let i = 1; i <= totalPages; i++) { pageNumbers.push(i); } } else { // نمایش صفحه اول pageNumbers.push(1); if (currentPage > 3) { pageNumbers.push("..."); } // صفحات میانی const start = Math.max(2, Math.min(currentPage - 1, totalPages - 3)); const end = Math.min(totalPages - 1, Math.max(currentPage + 1, 4)); for (let i = start; i <= end; i++) { if (!pageNumbers.includes(i)) { pageNumbers.push(i); } } if (currentPage < totalPages - 2) { pageNumbers.push("..."); } // نمایش صفحه آخر if (!pageNumbers.includes(totalPages)) { pageNumbers.push(totalPages); } } return pageNumbers; }; const pageNumbers = getPageNumbers(); return (
{/* دکمه صفحه قبل */} {/* شماره صفحات */}
{pageNumbers.map((page, index) => typeof page === "number" ? ( ) : ( {page} ) )}
{/* دکمه صفحه بعد */}
); }; export default Pagination;