import { useEffect, useState } from "react"; const data1 = []; export default function NewPaginatedList({ data = data1, itemsPerPage = 5, filterItem, tableTitle, children, }) { const [searchTerm, setSearchTerm] = useState(""); const [filteredData, setFilteredData] = useState(data); const [currentPage, setCurrentPage] = useState(0); const [newData, setNewData] = useState([]); const numberOfSelection = itemsPerPage; const handlePrev = () => { if (currentPage != 0) { setCurrentPage((prev) => prev - numberOfSelection); } }; const handleNext = () => { if (currentPage < data.length) { setCurrentPage((prev) => prev + numberOfSelection); } }; const handleSearch = ({ target: { value } }, name) => { setSearchTerm(value); let newFilteredData = data.filter((item) => item[name].toLowerCase().startsWith(value.toLowerCase()) ); setFilteredData(newFilteredData); setCurrentPage(0); }; useEffect(() => { setNewData( filteredData?.slice(currentPage, numberOfSelection + currentPage) ); }, [currentPage, filteredData]); console.log("newData", newData, filteredData); return (

{tableTitle}

{data.length > 0 && filterItem && (
{filterItem.map((item, index) => ( ))}
)} {children({ data: newData })} {/* show prev and next button if data exist */} {data.length > 0 && (
{data.length && data.map((item, index)=>{ if(index%itemsPerPage == 0 && index >= currentPage && index <= currentPage+itemsPerPage){ return ( ) } })}
)}
); }