안형욱

feat: 검색 조건 상태 slice 추가

...@@ -126,7 +126,11 @@ const Header = () => { ...@@ -126,7 +126,11 @@ const Header = () => {
126 float="left" 126 float="left"
127 fontsize="20px" 127 fontsize="20px"
128 height="50px" 128 height="50px"
129 - options={[{ id: 1, name: '전체' }]} 129 + options={[
130 + { id: 0, name: '전체' },
131 + { id: 1, name: '작성자' },
132 + { id: 2, name: '내용' },
133 + ]}
130 /> 134 />
131 </DropDownWrap> 135 </DropDownWrap>
132 </DropDownContainer> 136 </DropDownContainer>
......
1 import React, { useState, useEffect } from 'react'; 1 import React, { useState, useEffect } from 'react';
2 import { TiArrowSortedDown } from 'react-icons/ti'; 2 import { TiArrowSortedDown } from 'react-icons/ti';
3 import { Menu, MenuItem } from '@mantine/core'; 3 import { Menu, MenuItem } from '@mantine/core';
4 +import { useDispatch } from 'react-redux';
4 import styled from 'styled-components'; 5 import styled from 'styled-components';
5 import { dropdownHeaderColorMap } from '../../lib/styles/palette'; 6 import { dropdownHeaderColorMap } from '../../lib/styles/palette';
7 +import { setSearchOption } from '../../features/searchOption';
6 8
7 const DropDownBlock = styled.div` 9 const DropDownBlock = styled.div`
8 margin: 0 auto; 10 margin: 0 auto;
...@@ -41,6 +43,7 @@ const DropDown = ({ ...@@ -41,6 +43,7 @@ const DropDown = ({
41 size, 43 size,
42 }) => { 44 }) => {
43 const [menuTitle, setTitle] = useState(''); 45 const [menuTitle, setTitle] = useState('');
46 + const dispatch = useDispatch();
44 useEffect(() => { 47 useEffect(() => {
45 setTitle(title); 48 setTitle(title);
46 }, []); 49 }, []);
...@@ -62,14 +65,15 @@ const DropDown = ({ ...@@ -62,14 +65,15 @@ const DropDown = ({
62 </DropDownWrap> 65 </DropDownWrap>
63 } 66 }
64 > 67 >
65 - {options.map(friend => ( 68 + {options.map(option => (
66 <MenuItem 69 <MenuItem
67 - value={friend.id} 70 + value={option.id}
68 onClick={() => { 71 onClick={() => {
69 - setTitle(friend.name); 72 + dispatch(setSearchOption(option.id));
73 + setTitle(option.name);
70 }} 74 }}
71 > 75 >
72 - {friend.name} 76 + {option.name}
73 </MenuItem> 77 </MenuItem>
74 ))} 78 ))}
75 </DropDownHeader> 79 </DropDownHeader>
......
1 +import { createSlice } from '@reduxjs/toolkit';
2 +
3 +const OPTION = ['ALL', 'WRITER', 'CONTENT'];
4 +
5 +const searchOptionSlice = createSlice({
6 + name: 'searchOption',
7 + initialState: {
8 + option: OPTION[0],
9 + },
10 + reducers: {
11 + setSearchOption: (state, action) => {
12 + state.option = OPTION[action.payload];
13 + },
14 + },
15 +});
16 +
17 +export const { setSearchOption } = searchOptionSlice.actions;
18 +
19 +export default searchOptionSlice.reducer;
...@@ -51,9 +51,9 @@ const HomePage = () => { ...@@ -51,9 +51,9 @@ const HomePage = () => {
51 fontsize="20px" 51 fontsize="20px"
52 height="50px" 52 height="50px"
53 options={[ 53 options={[
54 - { id: 1, name: '전체' }, 54 + { id: 0, name: '전체' },
55 - { id: 2, name: '개인' }, 55 + { id: 1, name: '작성자' },
56 - { id: 3, name: '부서' }, 56 + { id: 2, name: '내용' },
57 ]} 57 ]}
58 /> 58 />
59 <Input color="blue" paddingsize="10px" width="100%" display /> 59 <Input color="blue" paddingsize="10px" width="100%" display />
......
1 import { combineReducers } from 'redux'; 1 import { combineReducers } from 'redux';
2 import parsedDocumentsReducer from '../features/parsedDocumentsSlice'; 2 import parsedDocumentsReducer from '../features/parsedDocumentsSlice';
3 +import searchOptionReducer from '../features/searchOption';
3 4
4 export default combineReducers({ 5 export default combineReducers({
5 parsedDocuments: parsedDocumentsReducer, 6 parsedDocuments: parsedDocumentsReducer,
7 + searchOption: searchOptionReducer,
6 }); 8 });
......