import { ChevronLeftIcon, ChevronRightIcon } from "@heroicons/react/20/solid"; import Container from "@ui/Container/Container"; import Flex from "@ui/Flex/Flex"; import React, { useEffect } from "react"; interface ITableFooter { range: number[]; setPage: React.Dispatch<React.SetStateAction<number>>; page: number; slice: any; totalLength: number; rowsPerPage: number; } export default function TableFooter({ range, setPage, page, slice, totalLength, rowsPerPage, }: ITableFooter) { useEffect(() => { if (slice.length < 1 && page !== 1) { setPage(page - 1); } }, [slice, page, setPage]); return ( <Container> <Flex justifyContent="between" alignItems="center" customStyle="pt-4" aria-label="Table navigation" > <span className="text-sm font-normal text-gray-400"> Showing{" "} <span className="font-semibold text-white"> {page === 1 ? 1 : page * rowsPerPage - (rowsPerPage - 1)}- {Number(totalLength) < rowsPerPage * page ? totalLength : rowsPerPage * page} </span>{" "} items out of{" "} <span className="font-semibold text-white"> {totalLength} items </span> </span> <ul className="inline-flex items-center -space-x-px"> <li> <button onClick={() => setPage(page - 1)} disabled={page === 1} className="ml-0 block rounded-l-lg border border-gray-300 bg-white py-2 px-3 leading-tight text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white" > <ChevronLeftIcon className="h-5 w-5" /> </button> </li> {range.map((el, index) => ( <button key={index} aria-current="page" className={`${ page === el ? "z-10 border border-blue-300 bg-blue-50 py-2 px-3 leading-tight text-blue-600 hover:bg-blue-100 hover:text-blue-700 dark:border-gray-700 dark:bg-gray-700 dark:text-white" : "border border-gray-300 bg-white py-2 px-3 leading-tight text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white" }`} onClick={() => setPage(el)} > {el} </button> ))} <li> <button onClick={() => setPage(page + 1)} disabled={page === range.length} className="block rounded-r-lg border border-gray-300 bg-white py-2 px-3 leading-tight text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white" > <ChevronRightIcon className="h-5 w-5" /> </button> </li> </ul> </Flex> </Container> ); }