forked from realstoman/react-tailwindcss-portfolio
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathProjectsContext.jsx
48 lines (43 loc) · 1.19 KB
/
ProjectsContext.jsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import { useState, createContext } from 'react';
import { projectsData } from '../data/projects';
// Create projects context
export const ProjectsContext = createContext();
// Create the projects context provider
export const ProjectsProvider = (props) => {
const [projects, setProjects] = useState(projectsData);
const [searchProject, setSearchProject] = useState('');
const [selectProject, setSelectProject] = useState('');
// Search projects by project title
const searchProjectsByTitle = projects.filter((item) => {
const result = item.title
.toLowerCase()
.includes(searchProject.toLowerCase())
? item
: searchProject === ''
? item
: '';
return result;
});
// Select projects by project category
const selectProjectsByCategory = projects.filter((item) => {
let category =
item.category.charAt(0).toUpperCase() + item.category.slice(1);
return category.includes(selectProject);
});
return (
<ProjectsContext.Provider
value={{
projects,
setProjects,
searchProject,
setSearchProject,
searchProjectsByTitle,
selectProject,
setSelectProject,
selectProjectsByCategory,
}}
>
{props.children}
</ProjectsContext.Provider>
);
};