fix: [sidebar] 메뉴 검색 닫기 시 스크롤 위치가 초기화되는 문제 수정
- 검색 닫기 시 매칭된 메뉴 위치로 스크롤 유지 - 부모 그룹 자동 펼침으로 해당 메뉴 바로 확인 가능
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 원래 메뉴 상태 저장
|
||||
|
||||
Reference in New Issue
Block a user