import { useEffect, useState } from "react"; import MainBtn from "../MainBtn"; import Icons from "../Icons"; export default function TableWrapper({ data = [], itemsPerPage = 5, filterItem, children, }) { const [isLoading, setIsLoading] = useState(true) 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(() => { setIsLoading(true) setTimeout(()=>{ setNewData( filteredData?.slice(currentPage, numberOfSelection + currentPage) ); setIsLoading(false) },1000) }, [currentPage, filteredData, numberOfSelection]); useEffect(()=>{ setCurrentPage(0) },[itemsPerPage]) return (
Loading...