diff --git a/searx/static/themes/simple/src/js/main/preferences.js b/searx/static/themes/simple/src/js/main/preferences.js index e9dc7c85c..a0b853d61 100644 --- a/searx/static/themes/simple/src/js/main/preferences.js +++ b/searx/static/themes/simple/src/js/main/preferences.js @@ -27,6 +27,22 @@ searxng.on(el, 'mouseenter', load_engine_descriptions); } + const enableAllEngines = d.querySelectorAll(".enable-all-engines"); + const disableAllEngines = d.querySelectorAll(".disable-all-engines"); + const engineToggles = d.querySelectorAll('tbody input[type=checkbox][class~=checkbox-onoff]'); + const toggleEngines = (enable) => { + for (const el of engineToggles) { + // check if element visible, so that only engines of the current category are modified + if (el.offsetParent !== null) el.checked = !enable; + } + }; + for (const el of enableAllEngines) { + searxng.on(el, 'click', () => toggleEngines(true)); + } + for (const el of disableAllEngines) { + searxng.on(el, 'click', () => toggleEngines(false)); + } + const copyHashButton = d.querySelector("#copy-hash"); searxng.on(copyHashButton, 'click', (e) => { e.preventDefault(); diff --git a/searx/static/themes/simple/src/less/preferences.less b/searx/static/themes/simple/src/less/preferences.less index 88543e03b..ecbcceee7 100644 --- a/searx/static/themes/simple/src/less/preferences.less +++ b/searx/static/themes/simple/src/less/preferences.less @@ -185,6 +185,11 @@ table { } } + #toggle-all-engines-container { + width: max-content; + margin-left: auto; + } + div.selectable_url { pre { width: 100%; diff --git a/searx/templates/simple/preferences/engines.html b/searx/templates/simple/preferences/engines.html index ae71e1c97..f51f156d2 100644 --- a/searx/templates/simple/preferences/engines.html +++ b/searx/templates/simple/preferences/engines.html @@ -10,6 +10,12 @@ {{- ' ' -}}

{%- endif -%} + +
+ + +
+
{{- '' -}} {{- '' -}}