feat: projects redux storage and select
This commit is contained in:
42
src/app/deals/components/Header/Header.tsx
Normal file
42
src/app/deals/components/Header/Header.tsx
Normal file
@ -0,0 +1,42 @@
|
||||
"use client";
|
||||
|
||||
import { useEffect } from "react";
|
||||
import { useSelector } from "react-redux";
|
||||
import { Group } from "@mantine/core";
|
||||
import ProjectSelect from "@/components/selects/ProjectSelect/ProjectSelect";
|
||||
import {
|
||||
selectProject,
|
||||
setProjects,
|
||||
} from "@/lib/features/projects/projectsSlice";
|
||||
import { RootState, useAppDispatch } from "@/lib/store";
|
||||
|
||||
const Header = () => {
|
||||
const projectsState = useSelector(
|
||||
(state: RootState) => state.projectsState
|
||||
);
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
useEffect(() => {
|
||||
const mockProjects = [
|
||||
{ id: 1, name: "Проект 1" },
|
||||
{ id: 2, name: "Проект 2" },
|
||||
{ id: 3, name: "Проект 3" },
|
||||
];
|
||||
dispatch(setProjects(mockProjects));
|
||||
dispatch(selectProject(mockProjects[0]));
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<Group
|
||||
justify={"flex-end"}
|
||||
w={"100%"}>
|
||||
<ProjectSelect
|
||||
data={projectsState.projects}
|
||||
value={projectsState.selectedProject}
|
||||
onChange={value => value && dispatch(selectProject(value))}
|
||||
/>
|
||||
</Group>
|
||||
);
|
||||
};
|
||||
|
||||
export default Header;
|
||||
@ -1,4 +1,5 @@
|
||||
import Boards from "@/app/deals/components/Boards/Boards";
|
||||
import Header from "@/app/deals/components/Header/Header";
|
||||
import PageBlock from "@/components/PageBlock/PageBlock";
|
||||
import PageContainer from "@/components/PageContainer/PageContainer";
|
||||
|
||||
@ -6,6 +7,7 @@ export default function DealsPage() {
|
||||
return (
|
||||
<PageContainer>
|
||||
<PageBlock>
|
||||
<Header />
|
||||
<Boards />
|
||||
</PageBlock>
|
||||
</PageContainer>
|
||||
|
||||
Reference in New Issue
Block a user