diff --git a/src/layout/FullLayoutV1.astro b/src/layout/FullLayoutV1.astro index 8851f9b..0161ad6 100644 --- a/src/layout/FullLayoutV1.astro +++ b/src/layout/FullLayoutV1.astro @@ -63,6 +63,11 @@ const { title = '小帕的小窝' } = Astro.props navMain?.classList.add('nav-container-hidden') } + const navOpen = () => { + const navMain = document.getElementById('nav-main') + navMain?.classList.remove('nav-container-hidden') + } + document.getElementById('nav-main')?.addEventListener('click', (e) => { const target = e.target as HTMLElement if (target.id == 'nav-main') { @@ -70,6 +75,18 @@ const { title = '小帕的小窝' } = Astro.props } }) + document.getElementById('nav-main')?.addEventListener('focusin', navOpen) + document.getElementById('nav-main')?.addEventListener('focusout', (e) => { + if ( + e.relatedTarget && + !document + .getElementById('nav-main') + ?.contains(e.relatedTarget as HTMLElement) + ) { + navClose() + } + }) + document.addEventListener('astro:before-preparation', () => { document.getElementById('loading-indicator')?.classList.remove('hidden') }) @@ -78,6 +95,24 @@ const { title = '小帕的小窝' } = Astro.props requestAnimationFrame(navClose) document.getElementById('loading-indicator')?.classList.add('hidden') }) + + document.addEventListener('astro:page-load', () => { + document.querySelectorAll('#nav-main li:has(a)').forEach((li) => { + console.log(li) + const child = li.querySelector('a') + if (!child) { + li.classList.add('url-here') + return + } + if ( + window.location.href.replace(/\/$/, '') == child.href.replace(/\/$/, '') + ) { + li.classList.add('url-here') + } else { + li.classList.remove('url-here') + } + }) + })