import React, { useState, useEffect } from "react"; import { useSortableData } from "../../hooks/useSortableData"; import Avatar from "../common/Avatar"; const EmployeeList = ({ employees, onChange, bucket }) => { const [employeefiltered, setEmployeeFilter] = useState([]); const [employeeStatusList, setEmployeeStatusList] = useState([]); const [searchTerm, setSearchTerm] = useState(""); useEffect(() => { setEmployeeFilter(employees?.filter((emp) => emp.email != null) || []); }, [employees]); // Initialize checked employees based on assignedEmployee prop useEffect(() => { if (Array.isArray(bucket?.employeeIds)) { const initialStatus = bucket?.employeeIds?.map((id) => ({ employeeId: id, isActive: true, })); setEmployeeStatusList(initialStatus); } }, [bucket]); // Send updated list to parent useEffect(() => { if (onChange) { onChange(employeeStatusList); } }, [employeeStatusList]); const handleCheckboxChange = (id) => { setEmployeeStatusList((prev) => { const exists = prev.find((emp) => emp.employeeId === id); if (exists) { return prev.map((emp) => emp.employeeId === id ? { ...emp, isActive: !emp.isActive } : emp ); } else { return [...prev, { employeeId: id, isActive: true }]; } }); }; const isChecked = (id) => { const found = employeeStatusList.find((emp) => emp.employeeId === id); return found?.isActive || false; }; // Sorting const { items: sortedEmployees, requestSort, sortConfig, } = useSortableData(employeefiltered, { key: (e) => `${e?.firstName} ${e?.lastName}`, direction: "asc", }); const getSortIcon = () => { if (!sortConfig) return null; return sortConfig.direction === "asc" ? ( ) : ( ); }; const filteredEmployees = sortedEmployees?.filter((employee) => { const fullName = `${employee?.firstName} ${employee?.lastName}`?.toLowerCase(); return fullName.includes(searchTerm.toLowerCase()); }); return ( <>

Add Employee

setSearchTerm(e.target.value)} />
{employees.length === 0 ? ( ) : filteredEmployees.length === 0 ? ( ) : ( filteredEmployees?.map((employee) => ( )) )}
requestSort((e) => `${e.firstName} ${e.lastName}`) } className="text-start cursor-pointer" > Name {getSortIcon()} Role
No Employee Available
No Matching Employee Found.
handleCheckboxChange(employee?.id)} disabled={bucket?.createdBy?.id === employee?.id} /> {`${employee.firstName} ${employee.lastName}`}
{employee.jobRole}
); }; export default EmployeeList;