| import React from 'react'; |
|
|
| type TPagesProps = { |
| pages: number; |
| pageNumber: number; |
| setPageNumber: (pageNumber: number) => void; |
| nextPage: () => Promise<void>; |
| previousPage: () => Promise<void>; |
| }; |
|
|
| export default function Pages({ |
| pageNumber, |
| pages, |
| nextPage, |
| previousPage, |
| setPageNumber, |
| }: TPagesProps) { |
| const clickHandler = |
| (func: () => Promise<void>) => async (e: React.MouseEvent<HTMLButtonElement>) => { |
| e.preventDefault(); |
| await func(); |
| }; |
|
|
| if (pageNumber > pages) { |
| setPageNumber(pages); |
| } |
|
|
| return pageNumber == 1 && pages == 1 ? null : ( |
| <div className="m-auto mb-2 mt-4 flex items-center justify-center gap-2"> |
| <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} |
| > |
| < |
| </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} |
| > |
| > |
| </button> |
| </div> |
| ); |
| } |
|
|