1
1
import { useSpecificApplicantId } from '@contexts/SpecificApplicnatIdContext' ;
2
2
import { useSpecificProcessId } from '@contexts/SpecificProcessIdContext' ;
3
3
4
+ import useTab from '@components/_common/molecules/Tab/useTab' ;
5
+ import { FiFileText , FiMail } from 'react-icons/fi' ;
4
6
import BaseModal from './BaseModal' ;
5
7
6
8
import ApplicantBaseInfo from './ApplicantBaseInfo' ;
7
- import ApplicatnModalHeader from './ModalHeader' ;
8
9
import QuestionSection from './ApplicantDetailInfo/QuestionSection' ;
9
10
import ApplicantEvalInfo from './ApplicantEvalInfo' ;
10
11
import EvaluationHeader from './ApplicantEvalInfo/EvaluationHeader' ;
11
12
import InquireEvalHeader from './InquireEvalHeader' ;
13
+ import ApplicantModalHeader from './ModalHeader' ;
12
14
13
15
import S from './style' ;
14
16
import usePaginatedEvaluation from './usePaginatedEvaluation' ;
17
+ import EmailHistorySection from './ApplicantDetailInfo/EmailHistorySection' ;
18
+
19
+ export type ApplicantModalTabItems = '지원서' | '이메일' ;
20
+
21
+ const TabMenus = {
22
+ 지원서 : {
23
+ title : '지원서' ,
24
+ icon : FiFileText ,
25
+ description : '지원 시 접수된 지원서 내용입니다.' ,
26
+ } ,
27
+ 이메일 : {
28
+ title : '이메일' ,
29
+ icon : FiMail ,
30
+ description : '지원자에게 전송한 이메일 내역입니다.' ,
31
+ } ,
32
+ } as const ;
15
33
16
34
export default function ApplicantModal ( ) {
17
35
const { applicantId } = useSpecificApplicantId ( ) ;
18
36
const { processId } = useSpecificProcessId ( ) ;
19
37
38
+ const { currentMenu, moveTabByParam } = useTab < ApplicantModalTabItems > ( { defaultValue : '지원서' } ) ;
20
39
const { currentProcess, isCurrentProcess, moveProcess, isLastProcess, isFirstProcess } =
21
40
usePaginatedEvaluation ( processId ) ;
22
41
@@ -26,22 +45,36 @@ export default function ApplicantModal() {
26
45
< BaseModal >
27
46
< S . Container >
28
47
< S . ModalHeader >
29
- < ApplicatnModalHeader title = "지원서 " />
48
+ < ApplicantModalHeader title = "지원자 상세 " />
30
49
</ S . ModalHeader >
31
50
32
51
< S . ModalSidebar >
33
52
< ApplicantBaseInfo applicantId = { applicantId } />
53
+ < S . ModalMenus >
54
+ < S . ModalMenusTitle > 메뉴</ S . ModalMenusTitle >
55
+ { Object . values ( TabMenus ) . map ( ( menu ) => (
56
+ < S . ModalMenusItem
57
+ key = { menu . title }
58
+ isSelected = { currentMenu === menu . title }
59
+ onClick = { ( ) => moveTabByParam ( menu . title ) }
60
+ >
61
+ < menu . icon size = { 20 } />
62
+ { menu . title }
63
+ </ S . ModalMenusItem >
64
+ ) ) }
65
+ </ S . ModalMenus >
34
66
</ S . ModalSidebar >
35
67
36
68
< S . ModalNav >
37
69
< S . ModalNavHeaderContainer >
38
- < S . ModalNavHeader > 지원서 </ S . ModalNavHeader >
39
- < S . ModalNavContent > 지원 시 접수된 지원서 내용입니다. </ S . ModalNavContent >
70
+ < S . ModalNavHeader > { TabMenus [ currentMenu ] . title } </ S . ModalNavHeader >
71
+ < S . ModalNavContent > { TabMenus [ currentMenu ] . description } </ S . ModalNavContent >
40
72
</ S . ModalNavHeaderContainer >
41
73
</ S . ModalNav >
42
74
43
75
< S . ModalMain >
44
- < QuestionSection applicantId = { applicantId } />
76
+ { currentMenu === '지원서' && < QuestionSection applicantId = { applicantId } /> }
77
+ { currentMenu === '이메일' && < EmailHistorySection applicantId = { applicantId } /> }
45
78
</ S . ModalMain >
46
79
47
80
< S . ModalEvalHeader >
0 commit comments