From e2ba9c410df4eceab579847ea90e42013ea71c8a Mon Sep 17 00:00:00 2001
From: Tim van Dijen <tvdijen@gmail.com>
Date: Sun, 20 Mar 2022 17:41:40 +0100
Subject: [PATCH] Only load expander-related JS on pages that include the
 expander

---
 src/js/bundle.js                 | 18 ------------------
 src/js/expander.js               | 16 ++++++++++++++++
 templates/includes/expander.twig |  3 +++
 webpack.config.js                |  1 +
 4 files changed, 20 insertions(+), 18 deletions(-)
 create mode 100644 src/js/expander.js

diff --git a/src/js/bundle.js b/src/js/bundle.js
index e58ca0ba5..2a50cad51 100644
--- a/src/js/bundle.js
+++ b/src/js/bundle.js
@@ -61,24 +61,6 @@ ready(function () {
     };
 
 
-    // Expander boxes
-    var expandable = document.querySelectorAll('.expandable > .expander');
-    expandable.forEach(function (currentValue, index, arr) {
-        currentValue.onclick = function (e) {
-            e.preventDefault();
-
-            var parent = e.currentTarget.parentNode;
-            if (parent.className.match(/(?:^|\s)expanded(?!\S)/)) {
-                parent.className = parent.className.replace(/(?:^|\s)expanded(?!\S)/g , '');
-            } else {
-                parent.className += " expanded";
-            }
-
-            e.currentTarget.blur();
-        }
-    });
-
-
     // Syntax highlight
     hljs.registerLanguage('xml', xml);
     hljs.registerLanguage('php', php);
diff --git a/src/js/expander.js b/src/js/expander.js
new file mode 100644
index 000000000..a141b0a48
--- /dev/null
+++ b/src/js/expander.js
@@ -0,0 +1,16 @@
+// Expander boxes
+var expandable = document.querySelectorAll('.expandable > .expander');
+expandable.forEach(function (currentValue, index, arr) {
+    currentValue.onclick = function (e) {
+        e.preventDefault();
+
+        var parent = e.currentTarget.parentNode;
+        if (parent.className.match(/(?:^|\s)expanded(?!\S)/)) {
+            parent.className = parent.className.replace(/(?:^|\s)expanded(?!\S)/g , '');
+        } else {
+            parent.className += " expanded";
+        }
+
+        e.currentTarget.blur();
+    }
+});
diff --git a/templates/includes/expander.twig b/templates/includes/expander.twig
index 37deceb6b..55db45ae6 100644
--- a/templates/includes/expander.twig
+++ b/templates/includes/expander.twig
@@ -11,3 +11,6 @@
 
           </div>
         </div>
+{% block postload %}
+    <script src="{{ asset('js/expander.js') }}"></script>
+{% endblock %}
diff --git a/webpack.config.js b/webpack.config.js
index 12a13b08a..01b924209 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -18,6 +18,7 @@ module.exports = environment => {
     return {
         entry: {
             bundle: './src/js/bundle',
+            expander: './src/js/expander',
             logout: './src/js/logout/main',
             stylesheet: './src/js/style'
         },
-- 
GitLab