From df36e34aa8b94b32c2bb9765a86b45272b3e4c5e Mon Sep 17 00:00:00 2001 From: Stefan Imhoff Date: Sat, 1 Jul 2023 12:30:14 +0200 Subject: [PATCH] feat: change design of search modal --- src/components/Scripts.astro | 29 ++++++++++++++++++++ src/components/SearchLink.astro | 4 +-- src/components/SearchModal.astro | 47 ++++++++++++++++++++++++++------ 3 files changed, 69 insertions(+), 11 deletions(-) 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 '.'; --- + + + + +