scroll update for schedule list view
This commit is contained in:
@@ -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 */}
|
||||
<div style={{ flex:1, display:'flex', flexDirection:'column', overflow: view==='month' && panel==='calendar' ? 'hidden' : (panel==='eventForm'?'auto':'auto'), overflowX: panel==='eventForm'?'auto':'hidden' }}>
|
||||
<div ref={contentRef} style={{ flex:1, display:'flex', flexDirection:'column', overflow: view==='month' && panel==='calendar' ? 'hidden' : (panel==='eventForm'?'auto':'auto'), overflowX: panel==='eventForm'?'auto':'hidden' }}>
|
||||
{panel === 'calendar' && view === 'schedule' && <div style={{paddingBottom: isMobile ? 80 : 0}}><ScheduleView events={events} selectedDate={selDate} onSelect={openDetail} filterKeyword={filterKeyword} filterTypeId={filterTypeId} filterAvailability={filterAvailability} filterFromDate={filterFromDate} isMobile={isMobile}/></div>}
|
||||
{panel === 'calendar' && view === 'day' && <DayView events={events} selectedDate={selDate} onSelect={openDetail} onSwipe={isMobile ? dir => { const d=new Date(selDate); d.setDate(d.getDate()+dir); setSelDate(d); } : undefined}/>}
|
||||
{panel === 'calendar' && view === 'week' && <WeekView events={events} selectedDate={selDate} onSelect={openDetail}/>}
|
||||
|
||||
Reference in New Issue
Block a user