diff --git a/app.db b/app.db index 68d0ac3..d760d1e 100644 Binary files a/app.db and b/app.db differ diff --git a/client/src/components/Modals/UsersModal.tsx b/client/src/components/Modals/UsersModal.tsx index 21fe471..e85d438 100644 --- a/client/src/components/Modals/UsersModal.tsx +++ b/client/src/components/Modals/UsersModal.tsx @@ -1,12 +1,21 @@ 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 { User } from "../../types/User"; import { FilterBar } from "../FilterBar"; +import { UsersModalEntry } from "./UsersModalEntry"; +import { User } from "../../types/User"; import { patch } from "../../utils/http"; import { Constants } from "../../utils/Constants"; -import { UsersModalEntry } from "./UsersModalEntry"; -import { useParams } from "react-router-dom"; interface IProps { show: boolean; @@ -15,29 +24,56 @@ interface IProps { 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 [filterText, setFilterText] = useState(""); - const [members, setMembers] = useState(users); 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) + members //.map((m) => m.id) ); handleClose(); }; + const classes = useStyles(); + return ( = ({ action="Submit" handleAction={handleSubmit} > -
-
-

Manage users

-
-
- - close - -
-
-
+ setFilterText("")} handleChange={handleChange} /> -
+ -
-
    - {allUsers.map((u: User) => ( -
  • - + {allUsers.map((u: User) => ( + + + + + + + -
  • - ))} -
-
- -
-
+ + + ))} +
); };