diff --git a/src/components/Scripts.astro b/src/components/Scripts.astro index cccfd81..0072d8f 100644 --- a/src/components/Scripts.astro +++ b/src/components/Scripts.astro @@ -83,18 +83,47 @@ import '../styles/sal.css'; } function setSearchLink() { + const body = document.body; const dialog = document.querySelector('dialog'); const openDialogLink = document.getElementById('search-link'); + const closeDialogLink = document.getElementById('close-search'); + + dialog.addEventListener('close', () => { + body.style.overflow = 'auto'; + }); openDialogLink?.addEventListener('click', (event) => { + const searchInput = dialog?.querySelector('input'); event.preventDefault(); dialog?.showModal(); + searchInput?.focus(); + body.style.overflow = 'hidden'; + }); + + closeDialogLink?.addEventListener('click', (event) => { + event.preventDefault(); + if (!dialog?.classList.contains('hide')) { + dialog?.classList.add('hide'); + dialog?.addEventListener( + 'animationend', + (animationEvent) => { + if (animationEvent.animationName === 'hide-modal') { + dialog?.close(); + dialog?.classList.remove('hide'); + } + }, + { once: true } + ); + } }); document.addEventListener('keydown', (event) => { if (event.key === '/') { + const searchInput = dialog?.querySelector('input'); event.preventDefault(); dialog?.showModal(); + searchInput?.focus(); + body.style.overflow = 'hidden'; } }); } diff --git a/src/components/SearchLink.astro b/src/components/SearchLink.astro index 0c89c2a..c9fd353 100644 --- a/src/components/SearchLink.astro +++ b/src/components/SearchLink.astro @@ -5,9 +5,9 @@ import { Link } from '.'; --- + + + + +