Skip to content

Commit 61621e1

Browse files
committed
Add search funtionality
1 parent 271c36e commit 61621e1

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed

src/components/projects/ProjectsGrid.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ import { ProjectsContext } from '../../context/ProjectsContext';
55
import ProjectsFilter from './ProjectsFilter';
66

77
const ProjectsGrid = () => {
8-
const { projects } = useContext(ProjectsContext);
8+
const { setSearchProject, searchProjectsByTitle } =
9+
useContext(ProjectsContext);
910

1011
// const selectedProject = '';
1112
// const searchProject = '';
@@ -86,6 +87,9 @@ const ProjectsGrid = () => {
8687
<FiSearch className="text-ternary-dark dark:text-ternary-light w-5 h-5"></FiSearch>
8788
</span>
8889
<input
90+
onChange={(e) => {
91+
setSearchProject(e.target.value);
92+
}}
8993
className="
9094
pl-3
9195
pr-1
@@ -120,7 +124,7 @@ const ProjectsGrid = () => {
120124

121125
{/* Projects grid start */}
122126
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 mt-6 sm:gap-10">
123-
{projects.map((project) => (
127+
{searchProjectsByTitle.map((project) => (
124128
<ProjectSingle
125129
title={project.title}
126130
category={project.category}

src/context/ProjectsContext.js

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,24 @@ export const ProjectsContext = createContext();
77
// Create the projects context provider
88
export const ProjectsProvider = (props) => {
99
const [projects, setProjects] = useState(projectsData);
10+
const [searchProject, setSearchProject] = useState('');
11+
12+
// Search projects
13+
const searchProjectsByTitle = projects.filter((item) => {
14+
if (item.title.toLowerCase().includes(searchProject.toLowerCase()))
15+
return item;
16+
else if (searchProject === '') return item;
17+
});
1018

1119
return (
12-
<ProjectsContext.Provider value={{ projects, setProjects }}>
20+
<ProjectsContext.Provider
21+
value={{
22+
projects,
23+
setProjects,
24+
setSearchProject,
25+
searchProjectsByTitle,
26+
}}
27+
>
1328
{props.children}
1429
</ProjectsContext.Provider>
1530
);

0 commit comments

Comments
 (0)