fix: [sidebar] 메뉴 검색 닫기 시 스크롤 위치가 초기화되는 문제 수정

- 검색 닫기 시 매칭된 메뉴 위치로 스크롤 유지
- 부모 그룹 자동 펼침으로 해당 메뉴 바로 확인 가능
This commit is contained in:
김보곤
2026-03-05 21:05:55 +09:00
parent bb2a3f730b
commit b19eb8c217

View File

@@ -1071,6 +1071,13 @@ function closeMenuSearch() {
if (!container || !input) return;
// 검색 결과에서 매칭된 메뉴 링크의 href를 기억 (스크롤 위치 복원용)
const matchedLink = document.querySelector('.menu-search-match a[href]');
const activeLink = document.querySelector('.sidebar-nav a.bg-primary');
const scrollTargetHref = (activeLink && activeLink.closest('.menu-search-match'))
? activeLink.getAttribute('href')
: (matchedLink ? matchedLink.getAttribute('href') : null);
menuSearchActive = false;
container.classList.add('hidden');
searchBtn.classList.remove('hidden');
@@ -1083,6 +1090,27 @@ function closeMenuSearch() {
// 원래 메뉴 상태 복원
restoreOriginalMenuState();
// 검색 결과 메뉴 위치로 스크롤
if (scrollTargetHref) {
const targetLink = document.querySelector(`.sidebar-nav a[href="${scrollTargetHref}"]`);
if (targetLink) {
// 부모 그룹을 펼침
let parent = targetLink.closest('li');
while (parent) {
const groupUl = parent.querySelector(':scope > ul[id^="menu-group-"]');
if (groupUl) {
groupUl.style.display = 'block';
localStorage.setItem('menu-group-' + groupUl.id.replace('menu-group-', ''), 'visible');
}
parent = parent.parentElement?.closest('li');
}
// 스크롤
setTimeout(() => {
targetLink.scrollIntoView({ block: 'center', behavior: 'smooth' });
}, 50);
}
}
}
// 원래 메뉴 상태 저장