diff --git a/frontend/src/pages/mobile/public/Schedule.jsx b/frontend/src/pages/mobile/public/Schedule.jsx index 3b606ce..9096c9f 100644 --- a/frontend/src/pages/mobile/public/Schedule.jsx +++ b/frontend/src/pages/mobile/public/Schedule.jsx @@ -8,6 +8,7 @@ import { useVirtualizer } from '@tanstack/react-virtual'; import confetti from 'canvas-confetti'; import { getTodayKST } from '../../../utils/date'; import { getSchedules, getCategories, searchSchedules } from '../../../api/public/schedules'; +import useScheduleStore from '../../../stores/useScheduleStore'; // 폭죽 애니메이션 함수 const fireBirthdayConfetti = () => { @@ -121,7 +122,17 @@ function MobileBirthdayCard({ schedule, onClick, delay = 0 }) { // 모바일 일정 페이지 function MobileSchedule() { const navigate = useNavigate(); - const [selectedDate, setSelectedDate] = useState(new Date()); + + // zustand store에서 상태 가져오기 + const { + selectedDate: storedSelectedDate, + setSelectedDate: setStoredSelectedDate, + } = useScheduleStore(); + + // 선택된 날짜 (store에 없으면 오늘 날짜) + const selectedDate = storedSelectedDate || new Date(); + const setSelectedDate = (date) => setStoredSelectedDate(date); + const [isSearchMode, setIsSearchMode] = useState(false); const [searchInput, setSearchInput] = useState(''); // 입력값 const [searchTerm, setSearchTerm] = useState(''); // 실제 검색어 @@ -131,7 +142,7 @@ function MobileSchedule() { const contentRef = useRef(null); // 스크롤 초기화용 const searchContainerRef = useRef(null); // 검색 컨테이너 (외부 클릭 감지용) const searchInputRef = useRef(null); // 검색 입력 필드 (키패드 닫기용) - + // 검색 추천 관련 상태 const [showSuggestions, setShowSuggestions] = useState(false); const [selectedSuggestionIndex, setSelectedSuggestionIndex] = useState(-1); @@ -442,19 +453,20 @@ function MobileSchedule() { // 날짜 선택 컨테이너 ref const dateScrollRef = useRef(null); - // 선택된 날짜로 자동 스크롤 + 페이지 스크롤 초기화 + // 선택된 날짜로 자동 스크롤 useEffect(() => { - // 페이지 스크롤을 맨 위로 즉시 이동 - window.scrollTo(0, 0); - - if (dateScrollRef.current) { + // 검색 모드가 아닐 때만 스크롤 조정 + if (!isSearchMode && dateScrollRef.current) { const selectedDay = selectedDate.getDate(); const buttons = dateScrollRef.current.querySelectorAll('button'); if (buttons[selectedDay - 1]) { - buttons[selectedDay - 1].scrollIntoView({ behavior: 'smooth', inline: 'center', block: 'nearest' }); + // 약간의 지연 후 스크롤 (DOM 렌더링 완료 후) + setTimeout(() => { + buttons[selectedDay - 1].scrollIntoView({ behavior: 'smooth', inline: 'center', block: 'nearest' }); + }, 50); } } - }, [selectedDate]); + }, [selectedDate, isSearchMode]); return ( <> @@ -823,10 +835,11 @@ function MobileSchedule() { }} >
+ {decodeHtmlEntities(schedule.description)} +
+ )} +