diff --git a/frontend/src/components/SchedulePage.jsx b/frontend/src/components/SchedulePage.jsx index 9c30332..853276c 100644 --- a/frontend/src/components/SchedulePage.jsx +++ b/frontend/src/components/SchedulePage.jsx @@ -1428,6 +1428,7 @@ export default function SchedulePage({ isToolManager, isMobile, onProfile, onHel const [createOpen, setCreateOpen] = useState(false); const [mobilePanel, setMobilePanel] = useState(null); // null | 'eventForm' | 'groupManager' const createRef = useRef(null); + const contentRef = useRef(null); const load = useCallback(() => { const ugPromise = isToolManager ? api.getUserGroups() : Promise.resolve({ groups: [] }); @@ -1438,6 +1439,9 @@ export default function SchedulePage({ isToolManager, isMobile, onProfile, onHel useEffect(() => { load(); }, [load]); + // Reset scroll to top whenever the selected date or view changes + useEffect(() => { if (contentRef.current) contentRef.current.scrollTop = 0; }, [selDate, view]); + useEffect(() => { if (!createOpen) return; const h = e => { if (createRef.current && !createRef.current.contains(e.target)) setCreateOpen(false); }; @@ -1628,12 +1632,12 @@ export default function SchedulePage({ isToolManager, isMobile, onProfile, onHel eventDates={eventDates} onMonthChange={(dir, exactDate) => { if(exactDate) { setSelDate(exactDate); } - else { const d=new Date(selDate); d.setMonth(d.getMonth()+dir); d.setDate(1); setSelDate(d); } + else { const d=new Date(selDate); d.setDate(1); d.setMonth(d.getMonth()+dir); setFilterFromDate(null); setSelDate(d); } }} /> )} {/* Calendar or panel content */} -
+
{panel === 'calendar' && view === 'schedule' &&
} {panel === 'calendar' && view === 'day' && { const d=new Date(selDate); d.setDate(d.getDate()+dir); setSelDate(d); } : undefined}/>} {panel === 'calendar' && view === 'week' && }