@@ -4,22 +4,27 @@ import { Views, type View } from "react-big-calendar";
44import { useQueryClient } from "@tanstack/react-query" ;
55import PullToRefresh from "react-simple-pull-to-refresh" ;
66import styles from "@styles/CalendarView.module.css" ;
7- import type {
8- CalendarEvent ,
9- Event ,
10- } from "@types" ;
7+ import type { CalendarEvent , Event } from "@types" ;
118import DetailView from "@/widgets/DetailView" ;
129import MonthSideView from "@widgets/Month/MonthSideView/MonthSideView" ;
1310import { MyCalendar } from "@widgets/MyCalendar" ;
1411import { Sidebar } from "@widgets/Sidebar" ;
12+ import {
13+ SidePanelResizeHandle ,
14+ useResizableSidePanel ,
15+ } from "@/widgets/SidePanelResize" ;
1516
1617import { useDetail } from "@contexts/DetailContext" ;
1718import { useEvents } from "@contexts/EventContext" ;
1819import { useFilter } from "@contexts/FilterContext" ;
1920import { useUserData } from "@/contexts/UserDataContext" ;
2021import BottomNav from "@/widgets/BottomNav" ;
2122import { FilterSheet } from "@/widgets/FilterSheet/FilterSheet" ;
22- import { useMonthEvents , useWeekEvents , useDayEvents } from "@/contexts/useCalendarEvents" ;
23+ import {
24+ useMonthEvents ,
25+ useWeekEvents ,
26+ useDayEvents ,
27+ } from "@/contexts/useCalendarEvents" ;
2328
2429const CalendarView = ( ) => {
2530 // EventContext
@@ -56,12 +61,28 @@ const CalendarView = () => {
5661 eventTypeId : globalCategory ?. map ( ( g ) => g . id ) ,
5762 orgId : globalOrg ?. map ( ( g ) => g . id ) ,
5863 statusId : globalStatus ?. map ( ( g ) => g . id ) ,
59- } ) , [ globalCategory , globalOrg , globalStatus ] ,
60- )
61-
62- const { data : monthViewData } = useMonthEvents ( currentDate , filters , excludedKeywords , interestCategories ) ;
63- const { data : weekViewData } = useWeekEvents ( currentDate , filters , excludedKeywords , interestCategories ) ;
64- const { data : dayViewEvents = [ ] } = useDayEvents ( currentDate , filters , excludedKeywords , interestCategories ) ;
64+ } ) ,
65+ [ globalCategory , globalOrg , globalStatus ] ,
66+ ) ;
67+
68+ const { data : monthViewData } = useMonthEvents (
69+ currentDate ,
70+ filters ,
71+ excludedKeywords ,
72+ interestCategories ,
73+ ) ;
74+ const { data : weekViewData } = useWeekEvents (
75+ currentDate ,
76+ filters ,
77+ excludedKeywords ,
78+ interestCategories ,
79+ ) ;
80+ const { data : dayViewEvents = [ ] } = useDayEvents (
81+ currentDate ,
82+ filters ,
83+ excludedKeywords ,
84+ interestCategories ,
85+ ) ;
6586
6687 const queryClient = useQueryClient ( ) ;
6788 const handleRefresh = async ( ) => {
@@ -72,11 +93,11 @@ const CalendarView = () => {
7293 ] ) ;
7394 } ;
7495
75-
76-
77- // Flatten byDate buckets in chronological key order : preserve each date bucket's internal sequence
96+ // Flatten byDate buckets in chronological key order : preserve each date bucket's internal sequence
7897 // 중복 시 첫 event만 keep : multi-day event sits at the position of its earliest bucket
79- const flattenByDate = ( byDate : Record < string , { events : Event [ ] } > | undefined ) => {
98+ const flattenByDate = (
99+ byDate : Record < string , { events : Event [ ] } > | undefined ,
100+ ) => {
80101 const seen = new Map < number , Event > ( ) ;
81102 const buckets = byDate ?? { } ;
82103 for ( const dateKey of Object . keys ( buckets ) . sort ( ) ) {
@@ -95,7 +116,6 @@ const CalendarView = () => {
95116 setCurrentDate ( dayDate ) ;
96117 } , [ dayDate ] ) ;
97118
98-
99119 // click handler
100120 const onShowMoreClick = ( date : Date , view : string ) => {
101121 // showSideMonth on, showDetailView off
@@ -138,6 +158,9 @@ const CalendarView = () => {
138158 // clicking outside of sideview (that is not event or anything else) created
139159 const sidePanelRef = useRef < HTMLDivElement > ( null ) ;
140160
161+ // shared width for both MonthSideView and DetailView panels
162+ const { handleResizeStart, sidePanelStyle } = useResizableSidePanel ( ) ;
163+
141164 // detect outside clicks
142165 useEffect ( ( ) => {
143166 function handleClickOutside ( event : MouseEvent ) {
@@ -186,7 +209,14 @@ const CalendarView = () => {
186209 ) }
187210 </ div >
188211 { showSideMonth && (
189- < div className = { styles . sidePanel } ref = { sidePanelRef } >
212+ < div
213+ className = { styles . sidePanel }
214+ ref = { sidePanelRef }
215+ style = { sidePanelStyle }
216+ >
217+ { ! isMobile && (
218+ < SidePanelResizeHandle onMouseDown = { handleResizeStart } />
219+ ) }
190220 < MonthSideView day = { clickedDate } onClose = { handleCloseSideMonth } />
191221 </ div >
192222 ) }
@@ -195,7 +225,11 @@ const CalendarView = () => {
195225 < div
196226 className = { `${ styles . sidePanel } ${ styles . detailPanel } ` }
197227 ref = { sidePanelRef }
228+ style = { sidePanelStyle }
198229 >
230+ { ! isMobile && (
231+ < SidePanelResizeHandle onMouseDown = { handleResizeStart } />
232+ ) }
199233 < DetailView eventId = { clickedEventId } />
200234 </ div >
201235 ) }
0 commit comments