2023-03-18 14:28:10 -04:00
|
|
|
import React from 'react';
|
2023-08-05 13:45:26 -07:00
|
|
|
|
|
|
|
|
type TPagesProps = {
|
|
|
|
|
pages: number;
|
|
|
|
|
pageNumber: number;
|
|
|
|
|
setPageNumber: (pageNumber: number) => void;
|
|
|
|
|
nextPage: () => Promise<void>;
|
|
|
|
|
previousPage: () => Promise<void>;
|
|
|
|
|
};
|
2023-03-18 14:28:10 -04:00
|
|
|
|
2023-08-04 16:51:23 -04:00
|
|
|
export default function Pages({
|
|
|
|
|
pageNumber,
|
|
|
|
|
pages,
|
|
|
|
|
nextPage,
|
|
|
|
|
previousPage,
|
|
|
|
|
setPageNumber,
|
2023-08-05 13:45:26 -07:00
|
|
|
}: TPagesProps) {
|
2023-08-04 16:51:23 -04:00
|
|
|
const clickHandler =
|
|
|
|
|
(func: () => Promise<void>) => async (e: React.MouseEvent<HTMLButtonElement>) => {
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
await func();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
if (pageNumber > pages) {
|
|
|
|
|
setPageNumber(pages);
|
|
|
|
|
}
|
2023-03-18 14:28:10 -04:00
|
|
|
|
2023-03-28 20:36:21 +08:00
|
|
|
return pageNumber == 1 && pages == 1 ? null : (
|
2023-05-18 11:09:31 -07:00
|
|
|
<div className="m-auto mb-2 mt-4 flex items-center justify-center gap-2">
|
2023-03-18 14:28:10 -04:00
|
|
|
<button
|
|
|
|
|
onClick={clickHandler(previousPage)}
|
|
|
|
|
className={
|
|
|
|
|
'btn btn-small bg-transition m-auto flex gap-2 transition hover:bg-gray-800 disabled:text-gray-300 dark:text-white dark:disabled:text-gray-400' +
|
|
|
|
|
(pageNumber <= 1 ? ' hidden-visibility' : '')
|
|
|
|
|
}
|
|
|
|
|
disabled={pageNumber <= 1}
|
|
|
|
|
>
|
2023-11-16 14:35:18 +01:00
|
|
|
<
|
2023-03-18 14:28:10 -04:00
|
|
|
</button>
|
|
|
|
|
<span className="flex-none text-gray-400">
|
|
|
|
|
{pageNumber} / {pages}
|
|
|
|
|
</span>
|
|
|
|
|
<button
|
|
|
|
|
onClick={clickHandler(nextPage)}
|
|
|
|
|
className={
|
|
|
|
|
'btn btn-small bg-transition m-auto flex gap-2 transition hover:bg-gray-800 disabled:text-gray-300 dark:text-white dark:disabled:text-gray-400' +
|
|
|
|
|
(pageNumber >= pages ? ' hidden-visibility' : '')
|
|
|
|
|
}
|
|
|
|
|
disabled={pageNumber >= pages}
|
|
|
|
|
>
|
2023-11-16 14:35:18 +01:00
|
|
|
>
|
2023-03-18 14:28:10 -04:00
|
|
|
</button>
|
|
|
|
|
</div>
|
|
|
|
|
);
|
|
|
|
|
}
|