Merge pull request #36 from CPSC319-Winter-term-2/mbalsdon-contacts-search
contacts page search
This commit is contained in:
commit
b8ed1e825b
@ -3,8 +3,10 @@ import {
|
|||||||
Divider,
|
Divider,
|
||||||
Drawer,
|
Drawer,
|
||||||
List,
|
List,
|
||||||
|
ListItem,
|
||||||
ListItemButton,
|
ListItemButton,
|
||||||
ListItemText,
|
ListItemText,
|
||||||
|
TextField,
|
||||||
Toolbar,
|
Toolbar,
|
||||||
} from "@mui/material";
|
} from "@mui/material";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
@ -19,13 +21,21 @@ const sidebarWidth = 240;
|
|||||||
const Sidebar: React.FC = () => {
|
const Sidebar: React.FC = () => {
|
||||||
const [favoritesOpen, setFavoritesOpen] = React.useState<boolean>(true);
|
const [favoritesOpen, setFavoritesOpen] = React.useState<boolean>(true);
|
||||||
const [teamOpen, setTeamOpen] = React.useState<boolean>(false);
|
const [teamOpen, setTeamOpen] = React.useState<boolean>(false);
|
||||||
|
const [inputText, setInputText] = React.useState<string>("");
|
||||||
|
|
||||||
const favoritesUuids = useAppSelector(selectFavorites);
|
const favoritesUuids = useAppSelector(selectFavorites);
|
||||||
const favorites = useAppSelector((state) =>
|
const favorites = useAppSelector((state) =>
|
||||||
selectUsers(state, favoritesUuids)
|
selectUsers(state, favoritesUuids)
|
||||||
);
|
);
|
||||||
|
let filteredFavorites = favorites.filter((favorite) =>
|
||||||
|
favorite.name.toLowerCase().includes(inputText.toLowerCase())
|
||||||
|
);
|
||||||
|
|
||||||
const teamUuids = useAppSelector(selectTeam);
|
const teamUuids = useAppSelector(selectTeam);
|
||||||
const team = useAppSelector((state) => selectUsers(state, teamUuids));
|
const team = useAppSelector((state) => selectUsers(state, teamUuids));
|
||||||
|
let filteredTeam = team.filter((member) =>
|
||||||
|
member.name.toLowerCase().includes(inputText.toLowerCase())
|
||||||
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Drawer
|
<Drawer
|
||||||
@ -42,18 +52,29 @@ const Sidebar: React.FC = () => {
|
|||||||
primaryTypographyProps={{ variant: "h6" }}
|
primaryTypographyProps={{ variant: "h6" }}
|
||||||
sx={{ textAlign: "center" }}
|
sx={{ textAlign: "center" }}
|
||||||
/>
|
/>
|
||||||
|
<ListItem>
|
||||||
|
<TextField
|
||||||
|
label="Search Contacts"
|
||||||
|
variant="outlined"
|
||||||
|
placeholder="Person"
|
||||||
|
onChange={(e) => {
|
||||||
|
setInputText(e.target.value);
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</ListItem>
|
||||||
|
|
||||||
<Divider />
|
<Divider />
|
||||||
<ListItemButton onClick={() => setFavoritesOpen(!favoritesOpen)}>
|
<ListItemButton onClick={() => setFavoritesOpen(!favoritesOpen)}>
|
||||||
{favoritesOpen ? <ExpandLess /> : <ExpandMore />}
|
{favoritesOpen ? <ExpandLess /> : <ExpandMore />}
|
||||||
<ListItemText primary="Favorites" sx={{ textAlign: "center" }} />
|
<ListItemText primary="Favorites" sx={{ textAlign: "center" }} />
|
||||||
<ListItemText
|
<ListItemText
|
||||||
primary={favorites.length}
|
primary={filteredFavorites.length}
|
||||||
sx={{ textAlign: "right" }}
|
sx={{ textAlign: "right" }}
|
||||||
/>
|
/>
|
||||||
</ListItemButton>
|
</ListItemButton>
|
||||||
<Collapse in={favoritesOpen} timeout="auto" unmountOnExit>
|
<Collapse in={favoritesOpen} timeout="auto" unmountOnExit>
|
||||||
<List disablePadding>
|
<List disablePadding>
|
||||||
{favorites.map((favorite, i) => (
|
{filteredFavorites.map((favorite, i) => (
|
||||||
<ContactItem contactInfo={favorite} key={i} />
|
<ContactItem contactInfo={favorite} key={i} />
|
||||||
))}
|
))}
|
||||||
</List>
|
</List>
|
||||||
@ -61,11 +82,14 @@ const Sidebar: React.FC = () => {
|
|||||||
<ListItemButton onClick={() => setTeamOpen(!teamOpen)}>
|
<ListItemButton onClick={() => setTeamOpen(!teamOpen)}>
|
||||||
{teamOpen ? <ExpandLess /> : <ExpandMore />}
|
{teamOpen ? <ExpandLess /> : <ExpandMore />}
|
||||||
<ListItemText primary="Team" sx={{ textAlign: "center" }} />
|
<ListItemText primary="Team" sx={{ textAlign: "center" }} />
|
||||||
<ListItemText primary={team.length} sx={{ textAlign: "right" }} />
|
<ListItemText
|
||||||
|
primary={filteredTeam.length}
|
||||||
|
sx={{ textAlign: "right" }}
|
||||||
|
/>
|
||||||
</ListItemButton>
|
</ListItemButton>
|
||||||
<Collapse in={teamOpen} timeout="auto" unmountOnExit>
|
<Collapse in={teamOpen} timeout="auto" unmountOnExit>
|
||||||
<List disablePadding>
|
<List disablePadding>
|
||||||
{team.map((member, i) => (
|
{filteredTeam.map((member, i) => (
|
||||||
<ContactItem contactInfo={member} key={i} />
|
<ContactItem contactInfo={member} key={i} />
|
||||||
))}
|
))}
|
||||||
</List>
|
</List>
|
||||||
|
|||||||
Reference in New Issue
Block a user