@@ -3,34 +3,40 @@ import { FiSearch } from 'react-icons/fi';
33import ProjectSingle from './ProjectSingle' ;
44import { ProjectsContext } from '../../context/ProjectsContext' ;
55import ProjectsFilter from './ProjectsFilter' ;
6+ import { motion } from 'framer-motion' ;
67
78const ProjectsGrid = ( ) => {
8- const [ projects , setProjects ] = useContext ( ProjectsContext ) ;
9+ const {
10+ projects,
11+ searchProject,
12+ setSearchProject,
13+ searchProjectsByTitle,
14+ selectProject,
15+ setSelectProject,
16+ selectProjectsByCategory,
17+ } = useContext ( ProjectsContext ) ;
918
10- // const selectedProject = '';
11- // const searchProject = '';
12-
13- // const filteredProjects = () => {
14- // if (selectedProject) {
15- // return filterProjectsByCategory();
16- // } else if (searchProject) {
17- // return filterProjectsBySearch();
18- // }
19- // return ProjectsData;
20- // };
21-
22- // const filterProjectsByCategory = () => {
23- // return ProjectsData.filter((item) => {
24- // let category =
25- // item.category.charAt(0).toUpperCase() + item.category.slice(1);
26- // return category.includes(selectedProject);
27- // });
28- // };
29-
30- // const filterProjectsBySearch = () => {
31- // let project = new RegExp(searchProject, 'i');
32- // return ProjectsData.filter((el) => el.title.match(project));
33- // };
19+ const projectsResult = ( ) => {
20+ if ( setSearchProject ) {
21+ return searchProjectsByTitle . map ( ( project ) => (
22+ < ProjectSingle
23+ title = { project . title }
24+ category = { project . category }
25+ image = { project . img }
26+ key = { project . id }
27+ />
28+ ) ) ;
29+ } else if ( setSelectProject ) {
30+ return selectProjectsByCategory . map ( ( project ) => (
31+ < ProjectSingle
32+ title = { project . title }
33+ category = { project . category }
34+ image = { project . img }
35+ key = { project . id }
36+ />
37+ ) ) ;
38+ }
39+ } ;
3440
3541 return (
3642 < section className = "py-5 sm:py-10 mt-5 sm:mt-10" >
@@ -86,6 +92,9 @@ const ProjectsGrid = () => {
8692 < FiSearch className = "text-ternary-dark dark:text-ternary-light w-5 h-5" > </ FiSearch >
8793 </ span >
8894 < input
95+ onChange = { ( e ) => {
96+ setSearchProject ( e . target . value ) ;
97+ } }
8998 className = "
9099 pl-3
91100 pr-1
@@ -112,22 +121,40 @@ const ProjectsGrid = () => {
112121 </ div >
113122 { /* <ProjectsFilter @change="selectedProject = $event" /> */ }
114123
115- < ProjectsFilter />
124+ < ProjectsFilter setSelectProject = { setSelectProject } />
116125 { /* <p>Filter projects</p> */ }
117126 </ div >
118127 </ div >
119128 { /* Filter and search projects end */ }
120129
121130 { /* Projects grid start */ }
122131 < div className = "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 mt-6 sm:gap-10" >
123- { projects . map ( ( project ) => (
124- < ProjectSingle
125- title = { project . title }
126- category = { project . category }
127- image = { project . img }
128- key = { project . id }
129- />
130- ) ) }
132+ { selectProject
133+ ? selectProjectsByCategory . map ( ( project ) => (
134+ < ProjectSingle
135+ title = { project . title }
136+ category = { project . category }
137+ image = { project . img }
138+ key = { project . id }
139+ />
140+ ) )
141+ : searchProject
142+ ? searchProjectsByTitle . map ( ( project ) => (
143+ < ProjectSingle
144+ title = { project . title }
145+ category = { project . category }
146+ image = { project . img }
147+ key = { project . id }
148+ />
149+ ) )
150+ : projects . map ( ( project ) => (
151+ < ProjectSingle
152+ title = { project . title }
153+ category = { project . category }
154+ image = { project . img }
155+ key = { project . id }
156+ />
157+ ) ) }
131158 </ div >
132159 { /* Projects grid end */ }
133160 </ section >
0 commit comments