62 lines
1.7 KiB
React
62 lines
1.7 KiB
React
const PaginatedList = ({ onClick, prev, next, data, start, stop }) => {
|
|
if (data.length > process.env.REACT_APP_ITEM_PER_PAGE) {
|
|
return (
|
|
<div className="p-3 flex justify-center items-center min-h-[70px] space-x-2 border-t-2">
|
|
{/* Render pagination buttons */}
|
|
{!prev && (
|
|
<button
|
|
className={`p-2 border ${
|
|
prev ? "border-black" : "border-transparent"
|
|
} btn-shine rounded-full h-11 w-11`}
|
|
name="prev"
|
|
onClick={onClick}
|
|
>
|
|
<><</>
|
|
</button>
|
|
)}
|
|
|
|
{data.map((item, index) => {
|
|
if (
|
|
index % process.env.REACT_APP_ITEM_PER_PAGE == 0 &&
|
|
index >= start &&
|
|
index <= stop
|
|
) {
|
|
return (
|
|
<button
|
|
key={index}
|
|
value={index}
|
|
className={`p-2 border ${
|
|
index === start ? "border-black" : "border-transparent"
|
|
} btn-shine rounded-full h-11 w-11`}
|
|
onClick={onClick}
|
|
name="page_num"
|
|
disabled={index === start}
|
|
>
|
|
{index <= 0
|
|
? index + 1
|
|
: index / process.env.REACT_APP_ITEM_PER_PAGE + 1}
|
|
</button>
|
|
);
|
|
}
|
|
})}
|
|
|
|
{!next && (
|
|
<button
|
|
className={`p-2 border ${
|
|
next ? "border-black" : "border-transparent"
|
|
} btn-shine rounded-full h-11 w-11`}
|
|
name="next"
|
|
onClick={onClick}
|
|
>
|
|
<>></>
|
|
</button>
|
|
)}
|
|
</div>
|
|
);
|
|
} else {
|
|
return null;
|
|
}
|
|
};
|
|
|
|
export default PaginatedList;
|