From 6de7ff21e426a8047a45fbfbebfc479b1ac8e50c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Thu, 5 Mar 2026 21:05:55 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20[sidebar]=20=EB=A9=94=EB=89=B4=20?= =?UTF-8?q?=EA=B2=80=EC=83=89=20=EB=8B=AB=EA=B8=B0=20=EC=8B=9C=20=EC=8A=A4?= =?UTF-8?q?=ED=81=AC=EB=A1=A4=20=EC=9C=84=EC=B9=98=EA=B0=80=20=EC=B4=88?= =?UTF-8?q?=EA=B8=B0=ED=99=94=EB=90=98=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 검색 닫기 시 매칭된 메뉴 위치로 스크롤 유지 - 부모 그룹 자동 펼침으로 해당 메뉴 바로 확인 가능 --- resources/views/partials/sidebar.blade.php | 28 ++++++++++++++++++++++ 1 file changed, 28 insertions(+) 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); + } + } } // 원래 메뉴 상태 저장