summaryrefslogtreecommitdiff
path: root/themes/terminal/assets/js/menu.js
diff options
context:
space:
mode:
authorIndrajith K L2022-03-20 00:38:25 +0530
committerIndrajith K L2022-03-20 00:38:25 +0530
commit941642aee876a97dbb79666d8fabaa2b1feb9ff5 (patch)
tree6147d3027127466b312eaa0b34c75966743bf547 /themes/terminal/assets/js/menu.js
parent31fc0796a09e1c0b8acbee6ac2fbee17d525b528 (diff)
downloadexperimentsofindrajith-941642aee876a97dbb79666d8fabaa2b1feb9ff5.tar.gz
experimentsofindrajith-941642aee876a97dbb79666d8fabaa2b1feb9ff5.tar.bz2
experimentsofindrajith-941642aee876a97dbb79666d8fabaa2b1feb9ff5.zip
Theme changes
Diffstat (limited to 'themes/terminal/assets/js/menu.js')
-rw-r--r--themes/terminal/assets/js/menu.js51
1 files changed, 51 insertions, 0 deletions
diff --git a/themes/terminal/assets/js/menu.js b/themes/terminal/assets/js/menu.js
new file mode 100644
index 0000000..0a4899b
--- /dev/null
+++ b/themes/terminal/assets/js/menu.js
@@ -0,0 +1,51 @@
+const container = document.querySelector(".container");
+const menu = document.querySelector(".menu");
+const mobileMenuTrigger = document.querySelector(".menu-trigger");
+const desktopMenu = document.querySelector(".menu__inner--desktop");
+const desktopMenuTrigger = document.querySelector(".menu__sub-inner-more-trigger");
+const menuMore = document.querySelector(".menu__sub-inner-more");
+const mobileQuery = getComputedStyle(document.body).getPropertyValue("--phoneWidth");
+const isMobile = () => window.matchMedia(mobileQuery).matches;
+const handleMenuClasses = () => {
+ mobileMenuTrigger && mobileMenuTrigger.classList.toggle("hidden", !isMobile());
+ menu && menu.classList.toggle("hidden", isMobile());
+ menuMore && menuMore.classList.toggle("hidden", !isMobile());
+};
+
+// Common
+
+menu && menu.addEventListener("click", e => e.stopPropagation());
+menuMore && menuMore.addEventListener("click", e => e.stopPropagation());
+
+handleMenuClasses();
+
+document.body.addEventListener("click", () => {
+ if (!isMobile() && menuMore && !menuMore.classList.contains("hidden")) {
+ menuMore.classList.add("hidden");
+ } else if (isMobile() && !menu.classList.contains("hidden")) {
+ menu.classList.add("hidden");
+ }
+});
+
+window.addEventListener("resize", handleMenuClasses);
+
+// Mobile menu
+
+mobileMenuTrigger &&
+ mobileMenuTrigger.addEventListener("click", e => {
+ e.stopPropagation();
+ menu && menu.classList.toggle("hidden");
+ });
+
+// Desktop menu
+
+desktopMenuTrigger &&
+ desktopMenuTrigger.addEventListener("click", e => {
+ e.stopPropagation();
+ menuMore && menuMore.classList.toggle("hidden");
+
+ if (menuMore.getBoundingClientRect().right > container.getBoundingClientRect().right) {
+ menuMore.style.left = "auto";
+ menuMore.style.right = 0;
+ }
+ });