import React, { FC, useState, ChangeEvent, FormEvent } from "react"; import { useParams } from "react-router-dom"; import { Grid } from "@material-ui/core"; import { createStyles, makeStyles, Theme } from "@material-ui/core/styles"; import List from "@material-ui/core/List"; import ListItem from "@material-ui/core/ListItem"; import ListItemSecondaryAction from "@material-ui/core/ListItemSecondaryAction"; import ListItemText from "@material-ui/core/ListItemText"; import ListItemAvatar from "@material-ui/core/ListItemAvatar"; import Checkbox from "@material-ui/core/Checkbox"; import Avatar from "@material-ui/core/Avatar"; import { Modal } from "./Modal"; import { AvatarList } from "../Avatars/AvatarList"; import { FilterBar } from "../FilterBar"; import { User } from "../../types/User"; import { patch } from "../../utils/http"; import { Constants } from "../../utils/Constants"; interface IProps { show: boolean; users: User[]; allUsers: User[]; handleClose(): void; } const useStyles = makeStyles((theme: Theme) => createStyles({ root: { width: "100%", maxWidth: 360, backgroundColor: theme.palette.background.paper, }, }) ); export const UsersModal: FC = ({ show, handleClose, users, allUsers, }) => { const { id } = useParams(); const [filterText, setFilterText] = useState(""); const handleChange = (e: ChangeEvent): void => { setFilterText(e.target.value); }; const memberIDs = users.map((u) => u.id); const [members, setMembers] = useState(memberIDs); const handleToggle = (value: string) => () => { const currentIndex = members.indexOf(value); const newChecked = [...members]; if (currentIndex === -1) { newChecked.push(value); } else { newChecked.splice(currentIndex, 1); } setMembers(newChecked); }; const handleSubmit = async (e: FormEvent) => { e.preventDefault(); await patch( `${Constants.projectsURI}/${id}/members`, members //.map((m) => m.id) ); handleClose(); }; const classes = useStyles(); return ( setFilterText("")} handleChange={handleChange} /> {allUsers.map((u: User) => ( ))} ); };