// assets/js/components/Pagination.js const Pagination = ({ currentPage, totalPages, totalRecords, onPageChange, itemsPerPage = 10, }) => { const getPageNumbers = () => { const pages = []; const maxVisible = 5; if (totalPages <= maxVisible) { for (let i = 1; i <= totalPages; i++) { pages.push(i); } } else { if (currentPage <= 3) { pages.push(1, 2, 3, 4, "...", totalPages); } else if (currentPage >= totalPages - 2) { pages.push( 1, "...", totalPages - 3, totalPages - 2, totalPages - 1, totalPages ); } else { pages.push( 1, "...", currentPage - 1, currentPage, currentPage + 1, "...", totalPages ); } } return pages; }; const startRecord = Math.min( (currentPage - 1) * itemsPerPage + 1, totalRecords ); const endRecord = Math.min(currentPage * itemsPerPage, totalRecords); return (
Menampilkan {startRecord} - {endRecord} dari {totalRecords} data
{getPageNumbers().map((page, index) => page === "..." ? ( ... ) : ( ) )}
); };