]> git.ipfire.org Git - ipfire.org.git/commitdiff
Commit forgotten JS file
authorRico Hoppe <rico.hoppe@ipfire.org>
Wed, 15 Mar 2023 19:25:50 +0000 (19:25 +0000)
committerRico Hoppe <rico.hoppe@ipfire.org>
Wed, 15 Mar 2023 19:25:50 +0000 (19:25 +0000)
src/static/js/site.js [new file with mode: 0644]

diff --git a/src/static/js/site.js b/src/static/js/site.js
new file mode 100644 (file)
index 0000000..ab6e1f9
--- /dev/null
@@ -0,0 +1,52 @@
+/*\r
+       Navigation\r
+*/\r
+\r
+var burger = document.querySelector(".navbar-burger");\r
+var menu = document.querySelector("#" + burger.dataset.target);\r
+burger.addEventListener('click', function () {\r
+    burger.classList.toggle('is-active');\r
+       menu.classList.toggle('is-active');\r
+});\r
+\r
+/*\r
+\r
+       Dropdowns\r
+\r
+*/\r
+\r
+// Get all dropdowns on the page that aren't hoverable\r
+const dropdowns = document.querySelectorAll('.dropdown:not(.is-hoverable)');\r
+\r
+if (dropdowns.length > 0) {\r
+       // For each dropdown, add event handler to open on click.\r
+       dropdowns.forEach(function(el) {\r
+               el.addEventListener('click', function(e) {\r
+                       closeDropdowns();\r
+                       e.stopPropagation();\r
+                       el.classList.toggle('is-active');\r
+               });\r
+       });\r
+\r
+       // If user clicks outside dropdown, close it.\r
+       document.addEventListener('click', function(e) {\r
+               closeDropdowns();\r
+       });\r
+}\r
+\r
+/*\r
+ * Close dropdowns by removing the "is-active" class\r
+ */\r
+function closeDropdowns() {\r
+       dropdowns.forEach(function(el) {\r
+               el.classList.remove('is-active');\r
+       });\r
+}\r
+\r
+// Close dropdowns if ESC pressed\r
+document.addEventListener('keydown', function(e) {\r
+       let event = e || window.event;\r
+       if (event.key === 'Esc' || event.key === 'Escape') {\r
+               closeDropdowns();\r
+       }\r
+});
\ No newline at end of file