From 8eb919b3ad57e9289750ec38ddf5d2e016df10bb Mon Sep 17 00:00:00 2001
From: Beth Davies <daviesba4@cardiff.ac.uk>
Date: Wed, 11 Dec 2024 22:12:51 +0000
Subject: [PATCH] Fix javascript functionality

---
 .../static/js/layout/accountDropdown.js       | 18 +++++++++++++++
 src/main/resources/static/js/layout/layout.js | 23 -------------------
 .../resources/templates/layout/layout.html    |  4 ++--
 3 files changed, 20 insertions(+), 25 deletions(-)
 create mode 100644 src/main/resources/static/js/layout/accountDropdown.js
 delete mode 100644 src/main/resources/static/js/layout/layout.js

diff --git a/src/main/resources/static/js/layout/accountDropdown.js b/src/main/resources/static/js/layout/accountDropdown.js
new file mode 100644
index 0000000..f7c5077
--- /dev/null
+++ b/src/main/resources/static/js/layout/accountDropdown.js
@@ -0,0 +1,18 @@
+document.addEventListener('DOMContentLoaded', function() {
+    const accountOptions = document.getElementById('account-options');
+    const dropdownContent = document.getElementsByClassName('dropdown-content');
+
+    accountOptions.addEventListener('click', function (e) {
+            [...dropdownContent].forEach(dropdown => {
+                dropdown.style.display = dropdown.style.display ===
+                'block' ? 'none' : 'block'
+            });
+    });
+
+    //hide dropdown when user clicks outside of element
+    document.addEventListener('click', function(e) {
+        if (!accountOptions.contains(e.target)) {
+            [...dropdownContent].style.display = 'none';
+        }
+    });
+});
\ No newline at end of file
diff --git a/src/main/resources/static/js/layout/layout.js b/src/main/resources/static/js/layout/layout.js
deleted file mode 100644
index b6061aa..0000000
--- a/src/main/resources/static/js/layout/layout.js
+++ /dev/null
@@ -1,23 +0,0 @@
-document.addEventListener('DOMContentLoaded', function() {
-    const accountOptions = document.getElementsByClassName('account-options');
-    const dropdownContent = document.getElementsByClassName('dropdown-content');
-
-    accountOptions.addEventListener('click', function (e) {
-        if (window.innerWidth <= 768) {
-            e.preventDefault();
-            dropdownContent.style.display = dropdownContent.style.display ===
-            'block' ? 'none' : 'block';
-        }
-    });
-    document.addEventListener('click', function(e) {
-        if (!accountOptions.contains(e.target)) {
-            dropdownContent.style.display = 'none';
-        }
-    });
-    window.addEventListener('resize', function() {
-        if (window.innerWidth > 768) {
-            dropdownContent.style.display = '';
-        }
-    });
-
-});
\ No newline at end of file
diff --git a/src/main/resources/templates/layout/layout.html b/src/main/resources/templates/layout/layout.html
index 13cb3fd..b71dc56 100644
--- a/src/main/resources/templates/layout/layout.html
+++ b/src/main/resources/templates/layout/layout.html
@@ -62,7 +62,7 @@
                     </div>
 
                     <!-- Profile -->
-                    <div class="account-options" id="dropdown">
+                    <div id="account-options">
                         <div sec:authorize="isAnonymous()">
                             <img src="/assets/navbarImages/profile.png" class="navIcons anonymous">
                             <span class="navText">Sign in</span>
@@ -123,6 +123,6 @@
         </div>
     </footer>
     <script th:replace="~{comments/commentFragment::commentScript}"></script>
-    <script src="/js/layout/layout.js"></script>
+    <script src="/js/layout/accountDropdown.js"></script>
 </body>
 </html>
\ No newline at end of file
-- 
GitLab