// 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 === "..." ? (
...
) : (
)
)}
);
};