diff --git a/src/components/MainNavigation.astro b/src/components/MainNavigation.astro
index 4845150..4c92ba8 100644
--- a/src/components/MainNavigation.astro
+++ b/src/components/MainNavigation.astro
@@ -9,7 +9,7 @@ import navigation from '../data/navigation.json';
{
navigation.map(({ title, url }) => (
- -
+
-
+
+
diff --git a/src/components/MenuModal.astro b/src/components/MenuModal.astro
new file mode 100644
index 0000000..7879aa8
--- /dev/null
+++ b/src/components/MenuModal.astro
@@ -0,0 +1,92 @@
+---
+import Link from './Link.astro';
+import MenuNavigation from './MenuNavigation.astro';
+import { Close } from './icons';
+---
+
+
+
+
diff --git a/src/components/MenuNavigation.astro b/src/components/MenuNavigation.astro
new file mode 100644
index 0000000..a1575d9
--- /dev/null
+++ b/src/components/MenuNavigation.astro
@@ -0,0 +1,44 @@
+---
+import data from '../data/subnavigation.json';
+
+import Link from './Link.astro';
+---
+
+
diff --git a/src/components/PageHeader.astro b/src/components/PageHeader.astro
index cd59f6a..1909854 100644
--- a/src/components/PageHeader.astro
+++ b/src/components/PageHeader.astro
@@ -4,6 +4,7 @@ import ThemeToggle from '../components/ThemeToggle.astro';
import Logo from '../components/Logo.astro';
import SearchLink from './SearchLink.astro';
+import MenuLink from './MenuLink.astro';
export interface Props {
class?: string;
@@ -27,5 +28,6 @@ const { class: className, navigation = true } = Astro.props;
{navigation && }
+
diff --git a/src/components/Scripts.astro b/src/components/Scripts.astro
index 0825d38..ba2b5a3 100644
--- a/src/components/Scripts.astro
+++ b/src/components/Scripts.astro
@@ -32,7 +32,7 @@
function setSearchLink() {
const body = document.body;
- const dialog = document.querySelector('dialog');
+ const dialog = document.querySelector('#search-dialog');
const openDialogLink = document.getElementById('search-link');
const closeDialogLink = document.getElementById('close-search');
@@ -76,24 +76,36 @@
});
}
- function setSearchModalLink() {
- const dialog = document.querySelector('dialog');
+ function setMenuLink() {
+ const body = document.body;
+ const dialog = document.querySelector('#menu-dialog');
+ const openDialogLink = document.getElementById('menu-link');
+ const closeDialogLink = document.getElementById('close-menu');
- dialog?.addEventListener('click', (event) => {
- if (event.target === dialog) {
- 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 }
- );
- }
+ dialog?.addEventListener('close', () => {
+ body.style.overflow = 'auto';
+ });
+
+ openDialogLink?.addEventListener('click', (event) => {
+ event.preventDefault();
+ dialog?.showModal();
+ 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 }
+ );
}
});
}
@@ -122,7 +134,7 @@
setActiveLink();
setEmailLink();
setSearchLink();
- setSearchModalLink();
+ setMenuLink();
setUpLink();
}
diff --git a/src/components/SearchModal.astro b/src/components/SearchModal.astro
index 978545c..8db23be 100644
--- a/src/components/SearchModal.astro
+++ b/src/components/SearchModal.astro
@@ -5,7 +5,7 @@ import Link from './Link.astro';
import { Close } from './icons';
---
-