@@ -13,6 +13,7 @@ interface TimeTableToolbarProps {
1313 onSemesterChange : ( semester : Semester ) => void ;
1414 isToggleOn : boolean ;
1515 onToggleChange : ( isToggleOn : boolean ) => void ;
16+ isLoading ?: boolean ;
1617 years ?: number [ ] ;
1718}
1819
@@ -25,6 +26,7 @@ const TimeTableToolbar = ({
2526 onSemesterChange,
2627 isToggleOn,
2728 onToggleChange,
29+ isLoading = false ,
2830 years,
2931} : TimeTableToolbarProps ) => {
3032 const { user } = useAuth ( ) ;
@@ -36,47 +38,60 @@ const TimeTableToolbar = ({
3638 < div className = { styles . timetableToolbarContainer } >
3739 < div className = { styles . headerRow } >
3840 < div className = { styles . selectGroup } >
39- < span className = { styles . selectWrap } >
40- < select
41- className = { styles . select }
42- value = { year }
43- onChange = { ( e ) => onYearChange ( Number ( e . target . value ) ) }
44- aria-label = "년도 선택"
45- >
46- { yearOptions . map ( ( y ) => (
47- < option key = { y } value = { y } >
48- { y } 학년도
49- </ option >
50- ) ) }
51- </ select >
52- </ span >
41+ < div className = { styles . semesterSelectGroup } >
42+ < span className = { styles . selectWrap } >
43+ < select
44+ className = { styles . select }
45+ value = { year }
46+ disabled = { isLoading }
47+ onChange = { ( e ) => {
48+ onYearChange ( Number ( e . target . value ) ) ;
49+ e . currentTarget . blur ( ) ;
50+ } }
51+ aria-label = "년도 선택"
52+ >
53+ { yearOptions . map ( ( y ) => (
54+ < option key = { y } value = { y } >
55+ { y } 학년도
56+ </ option >
57+ ) ) }
58+ </ select >
59+ </ span >
5360
54- < span className = { styles . selectWrap } >
55- < select
56- className = { styles . select }
57- value = { semester }
58- onChange = { ( e ) => onSemesterChange ( e . target . value as Semester ) }
59- aria-label = "학기 선택"
60- >
61- { SEMESTER_LABEL . map ( ( s ) => (
62- < option key = { s . id } value = { s . id } >
63- { s . label }
64- </ option >
65- ) ) }
66- </ select >
67- </ span >
61+ < span className = { styles . selectWrap } >
62+ < select
63+ className = { styles . select }
64+ value = { semester }
65+ disabled = { isLoading }
66+ onChange = { ( e ) => {
67+ onSemesterChange ( e . target . value as Semester ) ;
68+ e . currentTarget . blur ( ) ;
69+ } }
70+ aria-label = "학기 선택"
71+ >
72+ { SEMESTER_LABEL . map ( ( s ) => (
73+ < option key = { s . id } value = { s . id } >
74+ { s . label }
75+ </ option >
76+ ) ) }
77+ </ select >
78+ </ span >
79+ </ div >
6880 < p className = { styles . dateTitle } > { timetableName } </ p >
69- < button
70- type = "button"
71- className = { `${ styles . timetableToggle } ${
72- isToggleOn ? styles . timetableToggleOn : ""
73- } `}
74- aria-label = "시간표 토글"
75- aria-pressed = { isToggleOn }
76- onClick = { ( ) => onToggleChange ( ! isToggleOn ) }
77- >
78- < span className = { styles . timetableToggleThumb } />
79- </ button >
81+ < div className = { styles . timetableToggleGroup } >
82+ < span className = { styles . timetableToggleLabel } > 행사 함께 보기</ span >
83+ < button
84+ type = "button"
85+ className = { `${ styles . timetableToggle } ${
86+ isToggleOn ? styles . timetableToggleOn : ""
87+ } `}
88+ aria-label = "행사 함께 보기"
89+ aria-pressed = { isToggleOn }
90+ onClick = { ( ) => onToggleChange ( ! isToggleOn ) }
91+ >
92+ < span className = { styles . timetableToggleThumb } />
93+ </ button >
94+ </ div >
8095 </ div >
8196
8297 < div className = { styles . profileRow } >
0 commit comments