diff --git a/src/site/_assets/css/main.css b/src/site/_assets/css/main.css index b20cbe3a..07eee14c 100644 --- a/src/site/_assets/css/main.css +++ b/src/site/_assets/css/main.css @@ -9,18 +9,18 @@ } /* -------------------- Main navigation -------------------- */ - nav li a{ + nav > ul > li > a{ @apply relative } - nav li a:after{ + nav > ul > li > a:after{ content: ''; transition: width .6s cubic-bezier(0.075, 0.82, 0.165, 1); @apply absolute -bottom-2 left-0 h-1 w-0 bg-savjeered dark:bg-savjeered-darkmode } - nav li a:hover:after, - nav li a.active:after{ + nav > ul > li > a:hover:after, + nav > ul > li > a.active:after{ @apply w-5 } diff --git a/src/site/_assets/js/all.js b/src/site/_assets/js/all.js index c26bf8d0..438e14ba 100644 --- a/src/site/_assets/js/all.js +++ b/src/site/_assets/js/all.js @@ -1,4 +1,5 @@ import "./static-youtube-embed.js" import "./disqus-comments.js" import "./responsive-navigation.js" -import "instant.page" \ No newline at end of file +import "instant.page" +import "./more-menu.js" \ No newline at end of file diff --git a/src/site/_assets/js/more-menu.js b/src/site/_assets/js/more-menu.js new file mode 100644 index 00000000..92ade803 --- /dev/null +++ b/src/site/_assets/js/more-menu.js @@ -0,0 +1,23 @@ +document.addEventListener('DOMContentLoaded', function () { + const menu = document.querySelector('#more-menu'); + if (!menu) return; + + document.addEventListener('click', (event) => { + if (!menu.open) return; + if (!menu.contains(event.target)) { + menu.open = false; + } + }); + + document.addEventListener('keydown', (event) => { + if (event.key === 'Escape') { + menu.open = false; + } + }); + + menu.querySelectorAll('[data-more-menu-link]').forEach((link) => { + link.addEventListener('click', () => { + menu.open = false; + }); + }); +}); diff --git a/src/site/_includes/layouts/default.html b/src/site/_includes/layouts/default.html index bd043c7c..c7944762 100644 --- a/src/site/_includes/layouts/default.html +++ b/src/site/_includes/layouts/default.html @@ -108,15 +108,22 @@ Blog -