From: Rico Hoppe Date: Wed, 15 Mar 2023 19:25:50 +0000 (+0000) Subject: Commit forgotten JS file X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=262be708e0c954c70b574076e50c4a22d2e8b9c4;p=ipfire.org.git Commit forgotten JS file --- diff --git a/src/static/js/site.js b/src/static/js/site.js new file mode 100644 index 00000000..ab6e1f95 --- /dev/null +++ b/src/static/js/site.js @@ -0,0 +1,52 @@ +/* + Navigation +*/ + +var burger = document.querySelector(".navbar-burger"); +var menu = document.querySelector("#" + burger.dataset.target); +burger.addEventListener('click', function () { + burger.classList.toggle('is-active'); + menu.classList.toggle('is-active'); +}); + +/* + + Dropdowns + +*/ + +// Get all dropdowns on the page that aren't hoverable +const dropdowns = document.querySelectorAll('.dropdown:not(.is-hoverable)'); + +if (dropdowns.length > 0) { + // For each dropdown, add event handler to open on click. + dropdowns.forEach(function(el) { + el.addEventListener('click', function(e) { + closeDropdowns(); + e.stopPropagation(); + el.classList.toggle('is-active'); + }); + }); + + // If user clicks outside dropdown, close it. + document.addEventListener('click', function(e) { + closeDropdowns(); + }); +} + +/* + * Close dropdowns by removing the "is-active" class + */ +function closeDropdowns() { + dropdowns.forEach(function(el) { + el.classList.remove('is-active'); + }); +} + +// Close dropdowns if ESC pressed +document.addEventListener('keydown', function(e) { + let event = e || window.event; + if (event.key === 'Esc' || event.key === 'Escape') { + closeDropdowns(); + } +}); \ No newline at end of file