import { Box, Button, HStack, Input, Text, Tooltip, useToast, } from "@chakra-ui/react"; import React, { useContext, useEffect, useState, useRef } from "react"; import { Link, Link as RouterLink, useNavigate } from "react-router-dom"; import {EditIcon,} from "@chakra-ui/icons"; import { OPACITY_ON_LOAD } from "../../Layout/animations"; import DataTable from "../../Components/DataTable/NormalTable"; import GlobalStateContext from "../../Contexts/GlobalStateContext"; import CustomAlertDialog from "../../Components/CustomAlertDialog"; import ToastBox from "../../Components/ToastBox"; import { debounce } from "./Contact"; const formatDate = (date) => new Date(date).toLocaleDateString(); // Simple date formatter const Users = () => { const navigate = useNavigate(); const toast = useToast(); const thirdField = useRef(); const { users, setUsers, slideFromRight } = useContext(GlobalStateContext); const [searchTerm, setSearchTerm] = useState(""); const [isLoading, setIsLoading] = useState(true); const [deleteAlert, setDeleteAlert] = useState(false); const [actionId, setActionId] = useState(false); const [mouseEntered, setMouseEntered] = useState(false); const [mouseEnteredId, setMouseEnteredId] = useState(""); // const { // isOpen: isEditOpen, // onOpen: onEditOpen, // onClose: onEditClose, // } = useDisclosure(); const btnRef = React.useRef(); // const { // data: bankDetails, // isLoading: bankDetailsLoading, // error, // } = useGetBankQuery({ page: 1, size: 10 }); useEffect(() => { // Simulate loading const timer = setTimeout(() => { setIsLoading(false); }, 1500); // Cleanup the timer on component unmount return () => clearTimeout(timer); }, []); // ====================================================[Table Setup]================================================================ const tableHeadRow = [ "Sr N/O", "First Name", "Last Name", "E-mail ID", "Role", "Phone Number", "Action", ]; const handleUpdateStatus = debounce((id) => { setUsers((prevData) => prevData.map((users) => users.id === id ? { ...users } : users ) ); toast({ render: () => , }); }, 300); // ====================================================[Table Filter]================================================================ const filteredData = users?.data?.filter((item) => { // Filter by name (case insensitive) const name = item.emailID; const searchLower = searchTerm.toLowerCase(); const nameMatches = name?.toLowerCase().includes(searchLower); // Filter by status // const status = item.status; // const statusLower = status ? "active" : "inactive"; // const statusMatches = // statusFilter === "all" || // (statusFilter === "active" && status === true) || // (statusFilter === "inactive" && status === false); return nameMatches; }); const extractedArray = filteredData?.map((item) => ({ id: item?.id, "Sr N/O": ( {item.id} ), "First Name": ( {item.firstName} ), "Last Name": ( {item?.lastName} ), "E-mail ID": ( {item?.emailID} ), "Role": ( {item.role} ), "Phone Number": ( {item.phoneNumber} ), Action: ( ), })); const handleDelete = () => { const updatedInvestorDetails = InvestorDetails.filter( (sponsor) => sponsor.id !== actionId ); setTimeout(() => { setInvestorDetails(updatedInvestorDetails); setDeleteAlert(false); setIsLoading(false); }, 100); setIsLoading(true); }; const handleEdit = (id) => { setActionId(id); onEditOpen(); }; return ( setSearchTerm(e.target.value)} /> setDeleteAlert(false)} isOpen={deleteAlert} message={"Are you sure you want to delete sponers?"} alertHandler={handleDelete} isLoading={isLoading} /> ); }; export default Users;