From 6900e4a6be1ae860a3945ff2e6dee79d162fffd6 Mon Sep 17 00:00:00 2001 From: Tim van Dijen <tvdijen@gmail.com> Date: Mon, 21 Mar 2022 00:33:58 +0100 Subject: [PATCH] Reorder JS --- modules/admin/templates/federation.twig | 5 ++ src/js/bundle.js | 63 +++++----------------- src/js/expander.js | 16 ------ src/js/main.js | 69 +++++++++++++++++++++++++ templates/auth_status.twig | 8 +++ templates/base.twig | 4 +- templates/includes/expander.twig | 3 -- webpack.config.js | 1 - 8 files changed, 96 insertions(+), 73 deletions(-) delete mode 100644 src/js/expander.js create mode 100644 src/js/main.js diff --git a/modules/admin/templates/federation.twig b/modules/admin/templates/federation.twig index 367acbe68..bcf5c6fba 100644 --- a/modules/admin/templates/federation.twig +++ b/modules/admin/templates/federation.twig @@ -4,6 +4,7 @@ {% block preload %} <link rel="stylesheet" href="{{ asset('css/admin.css', 'admin') }}"> +<link rel="preload" href="{{ asset('js/bundle.js') }}" as="script"> {% endblock %} {% block content %} @@ -146,3 +147,7 @@ </fieldset> </form> {% endblock %} +{% block postload %} + <script src="{{ asset('js/bundle.js') }}"></script> +{% endblock %} + diff --git a/src/js/bundle.js b/src/js/bundle.js index 2a50cad51..f2d1436b8 100644 --- a/src/js/bundle.js +++ b/src/js/bundle.js @@ -1,66 +1,27 @@ -import "es5-shim"; -import "es6-shim"; import ClipboardJS from "clipboard/dist/clipboard"; import hljs from "highlight.js/lib/core"; import xml from "highlight.js/lib/languages/xml"; import php from "highlight.js/lib/languages/php"; import json from "highlight.js/lib/languages/json"; -window.readyHandlers = []; -window.ready = function ready(handler) -{ - window.readyHandlers.push(handler); - handleState(); -}; - -window.handleState = function handleState() -{ - if (document.readyState === 'interactive' || document.readyState === "complete") { - while (window.readyHandlers.length > 0) { - (window.readyHandlers.shift())(); - } - } -}; - -document.onreadystatechange = window.handleState; - -ready(function () { - // Language selector - var languageSelector = document.getElementById("language-selector"); - languageSelector.onchange = function () { - let languageForm = document.getElementById("language-form"); - languageForm.submit(); - return true; - }; - - - // Side menu - var menuLink = document.getElementById("menuLink"); - menuLink.onclick = function (e) { +// Expander boxes +var expandable = document.querySelectorAll('.expandable > .expander'); +expandable.forEach(function (currentValue, index, arr) { + currentValue.onclick = function (e) { e.preventDefault(); - let layout = document.getElementById("layout"); - if (layout.className.match(/(?:^|\s)active(?!\S)/)) { - layout.className = layout.className.replace(/(?:^|\s)active(?!\S)/g , ''); + var parent = e.currentTarget.parentNode; + if (parent.className.match(/(?:^|\s)expanded(?!\S)/)) { + parent.className = parent.className.replace(/(?:^|\s)expanded(?!\S)/g , ''); } else { - layout.className += " active"; + parent.className += " expanded"; } - let foot = document.getElementById("foot"); - if (foot.className.match(/(?:^|\s)active(?!\S)/)) { - foot.className = foot.className.replace(/(?:^|\s)active(?!\S)/g , ''); - } else { - foot.className += " active"; - } - - if (menuLink.className.match(/(?:^|\s)active(?!\S)/)) { - menuLink.className = menuLink.className.replace(/(?:^|\s)active(?!\S)/g , ''); - } else { - menuLink.className += " active"; - } - }; - + e.currentTarget.blur(); + } +}); +ready(function () { // Syntax highlight hljs.registerLanguage('xml', xml); hljs.registerLanguage('php', php); diff --git a/src/js/expander.js b/src/js/expander.js deleted file mode 100644 index a141b0a48..000000000 --- a/src/js/expander.js +++ /dev/null @@ -1,16 +0,0 @@ -// 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/src/js/main.js b/src/js/main.js new file mode 100644 index 000000000..ec5d4fc1f --- /dev/null +++ b/src/js/main.js @@ -0,0 +1,69 @@ +import "es5-shim"; +import "es6-shim"; + +window.readyHandlers = []; +window.ready = function ready(handler) { + window.readyHandlers.push(handler); + handleState(); +}; + +window.handleState = function handleState () { + if (document.readyState === 'interactive' || document.readyState === "complete") { + while(window.readyHandlers.length > 0) { + (window.readyHandlers.shift())(); + } + } +}; + +document.onreadystatechange = window.handleState; + +ready(function () { + // Language selector + var languageSelector = document.getElementById("language-selector"); + languageSelector.onchange = function() { + let languageForm = document.getElementById("language-form"); + languageForm.submit(); + return true; + }; + + + // Side menu + var menuLink = document.getElementById("menuLink"); + menuLink.onclick = function(e) { + e.preventDefault(); + + let layout = document.getElementById("layout"); + if (layout.className.match(/(?:^|\s)active(?!\S)/)) { + layout.className = layout.className.replace(/(?:^|\s)active(?!\S)/g , ''); + } else { + layout.className += " active"; + } + + let foot = document.getElementById("foot"); + if (foot.className.match(/(?:^|\s)active(?!\S)/)) { + foot.className = foot.className.replace(/(?:^|\s)active(?!\S)/g , ''); + } else { + foot.className += " active"; + } + + if (menuLink.className.match(/(?:^|\s)active(?!\S)/)) { + menuLink.className = menuLink.className.replace(/(?:^|\s)active(?!\S)/g , ''); + } else { + menuLink.className += " active"; + } + }; + + // Expander boxes + var expandable = document.querySelectorAll('.expandable > .expander'); + expandable.forEach(function (currentValue, index, arr) { + currentValue.onclick = function (e) { + 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/auth_status.twig b/templates/auth_status.twig index 731ef1f87..f276f26b9 100644 --- a/templates/auth_status.twig +++ b/templates/auth_status.twig @@ -1,6 +1,10 @@ {% set pagetitle = 'Authentication status'|trans %} {% extends 'base.twig' %} +{% block preload %} + <link rel="preload" href="{{ asset('js/main.js') }}" as="script"> +{% endblock %} + {% block content %} <h2>{{ pagetitle }}</h2> @@ -116,3 +120,7 @@ </div> {% endif %} {% endblock %} +{% block postload %} + <script src="{{ asset('js/bundle.js') }}"></script> +{% endblock %} + diff --git a/templates/base.twig b/templates/base.twig index 8579598f8..34641fb8b 100644 --- a/templates/base.twig +++ b/templates/base.twig @@ -12,7 +12,7 @@ <link rel="stylesheet" href="{{ asset("assets/css/src/default-rtl.css") }}"> {% endif %} <meta name="robots" content="noindex, nofollow"> - <link rel="preload" href="{{ asset('js/bundle.js') }}" as="script"> + <link rel="preload" href="{{ asset('js/main.js') }}" as="script"> {% block preload %}{% endblock %} </head> <body id="{{ templateId }}"> @@ -30,7 +30,7 @@ <div id="foot"> {% block footer %}{% include "_footer.twig" %}{% endblock %} </div> - <script src="{{ asset('js/bundle.js') }}"></script> + <script src="{{ asset('js/main.js') }}"></script> {% block postload %}{% endblock %} </body> </html> diff --git a/templates/includes/expander.twig b/templates/includes/expander.twig index 55db45ae6..37deceb6b 100644 --- a/templates/includes/expander.twig +++ b/templates/includes/expander.twig @@ -11,6 +11,3 @@ </div> </div> -{% block postload %} - <script src="{{ asset('js/expander.js') }}"></script> -{% endblock %} diff --git a/webpack.config.js b/webpack.config.js index 01b924209..12a13b08a 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -18,7 +18,6 @@ module.exports = environment => { return { entry: { bundle: './src/js/bundle', - expander: './src/js/expander', logout: './src/js/logout/main', stylesheet: './src/js/style' }, -- GitLab