From f09a2177dda51ed326bc8c43cd82f7ec460c2502 Mon Sep 17 00:00:00 2001 From: mbalsdon Date: Thu, 24 Mar 2022 14:22:08 -0700 Subject: [PATCH 1/3] implement contactspage search (buggy) --- .../contacts/contacts-components/Sidebar.tsx | 42 ++++++++++++++++++- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/src/components/contacts/contacts-components/Sidebar.tsx b/src/components/contacts/contacts-components/Sidebar.tsx index 2795687..e5255c0 100644 --- a/src/components/contacts/contacts-components/Sidebar.tsx +++ b/src/components/contacts/contacts-components/Sidebar.tsx @@ -3,8 +3,10 @@ import { Divider, Drawer, List, + ListItem, ListItemButton, ListItemText, + TextField, Toolbar, } from "@mui/material"; import React from "react"; @@ -13,12 +15,15 @@ import ContactItem from "./sidebar-components/ContactItem"; import { useAppSelector } from "../../../redux/hooks"; import { selectUsers, selectTeam } from "../../../redux/slices/usersSlice"; import { selectFavorites } from "../../../redux/slices/favoritesSlice"; +import UserLite from "../../../api-bodies/UserLite"; const sidebarWidth = 240; const Sidebar: React.FC = () => { const [favoritesOpen, setFavoritesOpen] = React.useState(true); const [teamOpen, setTeamOpen] = React.useState(false); + const [filteredFavorites, setFilteredFavorites] = React.useState([]); + const [filteredTeam, setFilteredTeam] = React.useState([]); const favoritesUuids = useAppSelector(selectFavorites); const favorites = useAppSelector((state) => @@ -27,6 +32,25 @@ const Sidebar: React.FC = () => { const teamUuids = useAppSelector(selectTeam); const team = useAppSelector((state) => selectUsers(state, teamUuids)); + const handleInputFavorites = (e: React.ChangeEvent) => { + const inputText = e.target.value.toLowerCase(); + const result = (inputText == "") ? favorites : + favorites.filter(f => ( + f.name.toLowerCase().slice(0, inputText.length) == inputText.slice(0, inputText.length))); + + setFilteredFavorites(result); + }; + + const handleInputTeam = (e: React.ChangeEvent) => { + + const inputText = e.target.value.toLowerCase(); + const result = (inputText == "") ? team : + team.filter(f => ( + f.name.toLowerCase().slice(0, inputText.length) == inputText.slice(0, inputText.length))); + + setFilteredTeam(result); + }; + return ( { primaryTypographyProps={{ variant: "h6" }} sx={{ textAlign: "center" }} /> + + { + handleInputFavorites(e); + handleInputTeam(e); + }} + // can we make it so the outline doesnt turn white (primary color) when its clicked on? + /> + + + setFavoritesOpen(!favoritesOpen)}> {favoritesOpen ? : } @@ -53,7 +91,7 @@ const Sidebar: React.FC = () => { - {favorites.map((favorite, i) => ( + {filteredFavorites.map((favorite, i) => ( ))} @@ -65,7 +103,7 @@ const Sidebar: React.FC = () => { - {team.map((member, i) => ( + {filteredTeam.map((member, i) => ( ))} From e18562c0c97ecba479aeff66bd8c4bcbad3543fd Mon Sep 17 00:00:00 2001 From: mbalsdon Date: Thu, 24 Mar 2022 14:34:46 -0700 Subject: [PATCH 2/3] implement basic contactspage search --- .../contacts/contacts-components/Sidebar.tsx | 47 +++++++------------ 1 file changed, 16 insertions(+), 31 deletions(-) diff --git a/src/components/contacts/contacts-components/Sidebar.tsx b/src/components/contacts/contacts-components/Sidebar.tsx index e5255c0..811b282 100644 --- a/src/components/contacts/contacts-components/Sidebar.tsx +++ b/src/components/contacts/contacts-components/Sidebar.tsx @@ -15,15 +15,13 @@ import ContactItem from "./sidebar-components/ContactItem"; import { useAppSelector } from "../../../redux/hooks"; import { selectUsers, selectTeam } from "../../../redux/slices/usersSlice"; import { selectFavorites } from "../../../redux/slices/favoritesSlice"; -import UserLite from "../../../api-bodies/UserLite"; const sidebarWidth = 240; const Sidebar: React.FC = () => { const [favoritesOpen, setFavoritesOpen] = React.useState(true); const [teamOpen, setTeamOpen] = React.useState(false); - const [filteredFavorites, setFilteredFavorites] = React.useState([]); - const [filteredTeam, setFilteredTeam] = React.useState([]); + const [inputText, setInputText] = React.useState(""); const favoritesUuids = useAppSelector(selectFavorites); const favorites = useAppSelector((state) => @@ -32,25 +30,6 @@ const Sidebar: React.FC = () => { const teamUuids = useAppSelector(selectTeam); const team = useAppSelector((state) => selectUsers(state, teamUuids)); - const handleInputFavorites = (e: React.ChangeEvent) => { - const inputText = e.target.value.toLowerCase(); - const result = (inputText == "") ? favorites : - favorites.filter(f => ( - f.name.toLowerCase().slice(0, inputText.length) == inputText.slice(0, inputText.length))); - - setFilteredFavorites(result); - }; - - const handleInputTeam = (e: React.ChangeEvent) => { - - const inputText = e.target.value.toLowerCase(); - const result = (inputText == "") ? team : - team.filter(f => ( - f.name.toLowerCase().slice(0, inputText.length) == inputText.slice(0, inputText.length))); - - setFilteredTeam(result); - }; - return ( { variant="outlined" placeholder="Person" onChange={(e) => { - handleInputFavorites(e); - handleInputTeam(e); + setInputText(e.target.value); }} - // can we make it so the outline doesnt turn white (primary color) when its clicked on? /> @@ -91,9 +68,13 @@ const Sidebar: React.FC = () => { - {filteredFavorites.map((favorite, i) => ( - - ))} + { + favorites.filter(favorite => ( + favorite.name.toLowerCase().slice(0, inputText.length) == inputText.toLowerCase().slice(0, inputText.length) + )).map((favorite, i) => ( + + )) + } setTeamOpen(!teamOpen)}> @@ -103,9 +84,13 @@ const Sidebar: React.FC = () => { - {filteredTeam.map((member, i) => ( - - ))} + { + team.filter(member => ( + member.name.toLowerCase().slice(0, inputText.length) == inputText.toLowerCase().slice(0, inputText.length) + )).map((member, i) => ( + + )) + } From cdac8e9ef4c10363cadecb0236fa6f5cf0ddf878 Mon Sep 17 00:00:00 2001 From: Taehee Choi Date: Thu, 24 Mar 2022 22:04:00 -0700 Subject: [PATCH 3/3] now search uses includes and num contacts updated properly --- .../contacts/contacts-components/Sidebar.tsx | 37 ++++++++++--------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/src/components/contacts/contacts-components/Sidebar.tsx b/src/components/contacts/contacts-components/Sidebar.tsx index 811b282..47cf766 100644 --- a/src/components/contacts/contacts-components/Sidebar.tsx +++ b/src/components/contacts/contacts-components/Sidebar.tsx @@ -27,8 +27,15 @@ const Sidebar: React.FC = () => { const favorites = useAppSelector((state) => selectUsers(state, favoritesUuids) ); + let filteredFavorites = favorites.filter((favorite) => + favorite.name.toLowerCase().includes(inputText.toLowerCase()) + ); + const teamUuids = useAppSelector(selectTeam); const team = useAppSelector((state) => selectUsers(state, teamUuids)); + let filteredTeam = team.filter((member) => + member.name.toLowerCase().includes(inputText.toLowerCase()) + ); return ( { }} /> - - + setFavoritesOpen(!favoritesOpen)}> {favoritesOpen ? : } - { - favorites.filter(favorite => ( - favorite.name.toLowerCase().slice(0, inputText.length) == inputText.toLowerCase().slice(0, inputText.length) - )).map((favorite, i) => ( - - )) - } + {filteredFavorites.map((favorite, i) => ( + + ))} setTeamOpen(!teamOpen)}> {teamOpen ? : } - + - { - team.filter(member => ( - member.name.toLowerCase().slice(0, inputText.length) == inputText.toLowerCase().slice(0, inputText.length) - )).map((member, i) => ( - - )) - } + {filteredTeam.map((member, i) => ( + + ))}