diff --git a/resources/views/partials/sidebar.blade.php b/resources/views/partials/sidebar.blade.php index 40b38a38..32bd1fd2 100644 --- a/resources/views/partials/sidebar.blade.php +++ b/resources/views/partials/sidebar.blade.php @@ -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); + } + } } // 원래 메뉴 상태 저장