import { MoreVertical } from "lucide-react"; import React from "react"; import { useEffect, useState } from "react"; import { deleteUser, updateUserFunc } from "../utils/functions.ts"; interface User { id: number; username: string; first_name: string; last_name: string; email: string; password: string; created: string; role: string; } interface UserTableProps { users: User[]; } const UserTable: React.FC = ({ users }) => { const [openMenu, setOpenMenu] = useState(null); const [userList, setUserList] = useState(users); useEffect(() => { setUserList(users); }, [users]); const handleMenuClick = (userId: number) => { setOpenMenu(openMenu === userId ? null : userId); }; const handleMenuClose = () => setOpenMenu(null); const handleInputChange = (id: number, field: keyof User, value: string) => { setUserList((prev) => prev.map((user) => (user.id === id ? { ...user, [field]: value } : user)) ); }; return ( {userList.map((user) => ( ))}
# Username First name Last name Email Password Created Role Actions
{user.id} handleInputChange(user.id, "username", e.target.value) } /> handleInputChange(user.id, "first_name", e.target.value) } /> handleInputChange(user.id, "last_name", e.target.value) } /> handleInputChange(user.id, "email", e.target.value) } /> handleInputChange(user.id, "password", e.target.value) } /> {user.created} handleInputChange(user.id, "role", e.target.value) } /> {openMenu === user.id && (
)}
); }; export default UserTable;