import React from 'react' interface PaginationControlsProps { currentPage: number totalPages: number pageSize: number totalCount: number hasNext: boolean hasPrev: boolean onPageChange: (page: number) => void onPageSizeChange: (size: number) => void } export const PaginationControls: React.FC = ({ currentPage, totalPages, pageSize, totalCount, hasNext, hasPrev, onPageChange, onPageSizeChange }) => { const startItem = totalCount > 0 ? (currentPage - 1) * pageSize + 1 : 0 const endItem = Math.min(currentPage * pageSize, totalCount) const handlePrevPage = () => { if (hasPrev) { onPageChange(currentPage - 1) } } const handleNextPage = () => { if (hasNext) { onPageChange(currentPage + 1) } } const handlePageSizeChange = (e: React.ChangeEvent) => { onPageSizeChange(Number(e.target.value)) } if (totalCount === 0) { return null } return (
{/* 左側:顯示資訊 */}
顯示 {startItem} 到 {endItem} 筆,共 {totalCount} 筆 {/* 每頁筆數選擇 */}
{/* 右側:分頁控制 */}
{/* 上一頁按鈕 */} {/* 頁碼顯示 */}
{/* 顯示當前頁附近的頁碼 */} {Array.from({ length: Math.min(5, totalPages) }, (_, i) => { let pageNumber if (totalPages <= 5) { pageNumber = i + 1 } else if (currentPage <= 3) { pageNumber = i + 1 } else if (currentPage >= totalPages - 2) { pageNumber = totalPages - 4 + i } else { pageNumber = currentPage - 2 + i } return ( ) })}
{/* 下一頁按鈕 */}
) }