fix(p2): Calendar view toggle - sync internal view state with parent prop via useEffect
This commit is contained in:
@@ -401,7 +401,7 @@ export default function CalendarPage() {
|
||||
</div>
|
||||
}
|
||||
>
|
||||
<BigCalendar key={view}
|
||||
<BigCalendar
|
||||
events={filteredEvents}
|
||||
onEventDrop={handleEventDrop}
|
||||
defaultView={view}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use client';
|
||||
|
||||
import { useCallback, useMemo } from 'react';
|
||||
import { useCallback, useMemo, useState, useEffect } from 'react';
|
||||
import { Calendar, dateFnsLocalizer, Views } from 'react-big-calendar';
|
||||
import withDragAndDrop from 'react-big-calendar/lib/addons/dragAndDrop';
|
||||
import 'react-big-calendar/lib/css/react-big-calendar.css';
|
||||
@@ -76,6 +76,11 @@ export function BigCalendarWrapper({
|
||||
onViewChange,
|
||||
}: BigCalendarWrapperProps) {
|
||||
const router = useRouter();
|
||||
const [currentView, setCurrentView] = useState(defaultView);
|
||||
|
||||
useEffect(() => {
|
||||
setCurrentView(defaultView);
|
||||
}, [defaultView]);
|
||||
|
||||
const handleSelectEvent = useCallback(
|
||||
(event: CalendarEvent) => {
|
||||
@@ -102,6 +107,7 @@ export function BigCalendarWrapper({
|
||||
|
||||
const handleViewChange = useCallback(
|
||||
(newView: string) => {
|
||||
setCurrentView(newView);
|
||||
if (onViewChange) onViewChange(newView);
|
||||
},
|
||||
[onViewChange]
|
||||
@@ -129,7 +135,7 @@ export function BigCalendarWrapper({
|
||||
eventPropGetter={eventStyleGetter}
|
||||
onSelectEvent={handleSelectEvent}
|
||||
views={['month', 'week', 'day']}
|
||||
defaultView={defaultView} key={defaultView}
|
||||
view={currentView}
|
||||
date={date}
|
||||
onNavigate={handleNavigate}
|
||||
onView={handleViewChange}
|
||||
|
||||
Reference in New Issue
Block a user