From 0d433ac53d0cf387e8d6ce88850a46d0671e78f9 Mon Sep 17 00:00:00 2001
From: Tim van Dijen <tvdijen@gmail.com>
Date: Thu, 24 Mar 2022 22:21:30 +0100
Subject: [PATCH] Use events instead of the more rudimentary implementation

---
 modules/core/www/assets/js/loginuserpass.js |  7 ++++++-
 package-lock.json                           |  5 -----
 src/js/bundle/clipboard.js                  |  3 +--
 src/js/bundle/expander.js                   |  9 ++-------
 src/js/bundle/highlight.js                  |  3 +--
 src/js/bundle/language.js                   | 20 ++++----------------
 src/js/bundle/main.js                       |  1 -
 src/js/bundle/ready.js                      | 15 ---------------
 src/js/logout/main.js                       |  2 +-
 9 files changed, 15 insertions(+), 50 deletions(-)
 delete mode 100644 src/js/bundle/ready.js

diff --git a/modules/core/www/assets/js/loginuserpass.js b/modules/core/www/assets/js/loginuserpass.js
index 8667593a7..ff67c96f7 100644
--- a/modules/core/www/assets/js/loginuserpass.js
+++ b/modules/core/www/assets/js/loginuserpass.js
@@ -1,4 +1,4 @@
-ready(function () {
+document.addEventListener("DOMContentLoaded", function(event) {
     var button = document.getElementById("submit_button");
     button.onclick = function () {
         this.innerHTML = button.getAttribute("data-processing");
@@ -8,5 +8,10 @@ ready(function () {
         form.submit();
         return true;
     };
+
+    button.focus();
+
+    var username = document.getElementById("username");
+    username.focus();
 });
 
diff --git a/package-lock.json b/package-lock.json
index 24c2c78aa..fab1daece 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1387,11 +1387,6 @@
         }
       }
     },
-    "jquery": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz",
-      "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw=="
-    },
     "js-tokens": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
diff --git a/src/js/bundle/clipboard.js b/src/js/bundle/clipboard.js
index f3dfbeb81..5a360f6b6 100644
--- a/src/js/bundle/clipboard.js
+++ b/src/js/bundle/clipboard.js
@@ -1,7 +1,6 @@
 import ClipboardJS from "clipboard/dist/clipboard";
 
-ready(function () {
-    // Clipboard
+document.addEventListener("DOMContentLoaded", function(event) {
     var clipboard = new ClipboardJS('.copy');
     clipboard.on('success', function (e) {
         setTimeout(function () {
diff --git a/src/js/bundle/expander.js b/src/js/bundle/expander.js
index 42bb2e57d..2aadb2471 100644
--- a/src/js/bundle/expander.js
+++ b/src/js/bundle/expander.js
@@ -1,14 +1,9 @@
-ready(function () {
-    // Expander boxes
+document.addEventListener("DOMContentLoaded", function(event) {
     var expandable = document.querySelectorAll('.expandable > .expander');
     for (var i = 0; i < expandable.length; i++) {
         expandable[i].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";
-            }
+            parent.classList.toggle('expanded');
             e.currentTarget.blur();
         };
     }
diff --git a/src/js/bundle/highlight.js b/src/js/bundle/highlight.js
index ce7b0728a..f1974a337 100644
--- a/src/js/bundle/highlight.js
+++ b/src/js/bundle/highlight.js
@@ -3,8 +3,7 @@ import xml from "highlight.js/lib/languages/xml";
 import php from "highlight.js/lib/languages/php";
 import json from "highlight.js/lib/languages/json";
 
-ready(function () {
-    // Syntax highlight
+document.addEventListener("DOMContentLoaded", function(event) {
     hljs.registerLanguage('xml', xml);
     hljs.registerLanguage('php', php);
     hljs.registerLanguage('json', json);
diff --git a/src/js/bundle/language.js b/src/js/bundle/language.js
index 5734632b4..72a6a72d4 100644
--- a/src/js/bundle/language.js
+++ b/src/js/bundle/language.js
@@ -1,4 +1,4 @@
-ready(function () {
+document.addEventListener("DOMContentLoaded", function(event) {
     // Language selector
     var languageSelector = document.getElementById("language-selector");
     languageSelector.onchange = function() {
@@ -14,23 +14,11 @@ ready(function () {
         e.preventDefault();
 
         var layout = document.getElementById("layout");
-        if (layout.className.match(/(?:^|\s)active(?!\S)/)) {
-            layout.className = layout.className.replace(/(?:^|\s)active(?!\S)/g , '');
-        } else {
-            layout.className += " active";
-        }
+        layout.classList.toggle('active');
 
         var foot = document.getElementById("foot");
-        if (foot.className.match(/(?:^|\s)active(?!\S)/)) {
-            foot.className = foot.className.replace(/(?:^|\s)active(?!\S)/g , '');
-        } else {
-            foot.className += " active";
-        }
+        foot.classList.toggle('active');
 
-        if (menuLink.className.match(/(?:^|\s)active(?!\S)/)) {
-            menuLink.className = menuLink.className.replace(/(?:^|\s)active(?!\S)/g , '');
-        } else {
-            menuLink.className += " active";
-        }
+        menuLink.classList.toggle('active');
     };
 });
diff --git a/src/js/bundle/main.js b/src/js/bundle/main.js
index dba686359..066b0da96 100644
--- a/src/js/bundle/main.js
+++ b/src/js/bundle/main.js
@@ -2,7 +2,6 @@
 
 import "es5-shim";
 import "es6-shim";
-import * as ready from './ready';
 import * as language from './language';
 import * as expander from './expander';
 import * as clipboard from './clipboard';
diff --git a/src/js/bundle/ready.js b/src/js/bundle/ready.js
deleted file mode 100644
index 8e6c27a09..000000000
--- a/src/js/bundle/ready.js
+++ /dev/null
@@ -1,15 +0,0 @@
-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;
diff --git a/src/js/logout/main.js b/src/js/logout/main.js
index f0f759031..5d859d2e8 100644
--- a/src/js/logout/main.js
+++ b/src/js/logout/main.js
@@ -2,6 +2,6 @@
 
 import SimpleSAMLLogout from './logout.js';
 
-ready(function () {
+document.addEventListener("DOMContentLoaded", function(event) {
     new SimpleSAMLLogout(document.body.id);
 });
-- 
GitLab