summaryrefslogtreecommitdiff
path: root/searx/static/themes/simple/src
diff options
context:
space:
mode:
authorAlexandre Flament <alex@al-f.net>2021-11-05 15:29:48 +0100
committerGitHub <noreply@github.com>2021-11-05 15:29:48 +0100
commit082d55e6c5c2f576396d4790179e13ad627f7253 (patch)
tree474814ffa753995d05a7a92be40aa9377f3ce39e /searx/static/themes/simple/src
parentba342db55e419a84b462bca17b16395f7a08c777 (diff)
parent558e0c32419d9e3f78e543fea7c51b295f24c245 (diff)
Merge pull request #481 from dalf/simple-fix-hotkeys
Simple themes: fixes in keyboard.js
Diffstat (limited to 'searx/static/themes/simple/src')
-rw-r--r--searx/static/themes/simple/src/js/head/00_init.js1
-rw-r--r--searx/static/themes/simple/src/js/main/keyboard.js83
-rw-r--r--searx/static/themes/simple/src/js/main/results.js20
-rw-r--r--searx/static/themes/simple/src/less/definitions.less2
-rw-r--r--searx/static/themes/simple/src/less/toolkit.less6
5 files changed, 68 insertions, 44 deletions
diff --git a/searx/static/themes/simple/src/js/head/00_init.js b/searx/static/themes/simple/src/js/head/00_init.js
index 4406b764e..d359a9174 100644
--- a/searx/static/themes/simple/src/js/head/00_init.js
+++ b/searx/static/themes/simple/src/js/head/00_init.js
@@ -21,6 +21,7 @@
autocompleter: script.getAttribute('data-autocompleter') === 'true',
search_on_category_select: script.getAttribute('data-search-on-category-select') === 'true',
infinite_scroll: script.getAttribute('data-infinite-scroll') === 'true',
+ hotkeys: script.getAttribute('data-hotkeys') === 'true',
static_path: script.getAttribute('data-static-path'),
translations: JSON.parse(script.getAttribute('data-translations')),
};
diff --git a/searx/static/themes/simple/src/js/main/keyboard.js b/searx/static/themes/simple/src/js/main/keyboard.js
index 394f97730..788d289ef 100644
--- a/searx/static/themes/simple/src/js/main/keyboard.js
+++ b/searx/static/themes/simple/src/js/main/keyboard.js
@@ -3,21 +3,56 @@
searxng.ready(function() {
- searxng.on('.result', 'click', function() {
- highlightResult(this)(true);
- });
+ function isElementInDetail(el) {
+ while (el !== undefined) {
+ if (el.classList.contains('detail')) {
+ return true;
+ }
+ if (el.classList.contains('result')) {
+ // we found a result, no need to go to the root of the document:
+ // el is not inside a <div class="detail"> element
+ return false;
+ }
+ el = el.parentNode;
+ }
+ return false;
+ }
- searxng.on('.result a', 'focus', function(e) {
- var el = e.target;
+ function getResultElement(el) {
while (el !== undefined) {
if (el.classList.contains('result')) {
- if (el.getAttribute("data-vim-selected") === null) {
- highlightResult(el)(true);
- }
- break;
+ return el;
}
el = el.parentNode;
}
+ return undefined;
+ }
+
+ function isImageResult(resultElement) {
+ return resultElement && resultElement.classList.contains('result-images');
+ }
+
+ searxng.on('.result', 'click', function(e) {
+ if (!isElementInDetail(e.target)) {
+ highlightResult(this)(true);
+ let resultElement = getResultElement(e.target);
+ if (isImageResult(resultElement)) {
+ e.preventDefault();
+ searxng.selectImage(resultElement);
+ }
+ }
+ });
+
+ searxng.on('.result a', 'focus', function(e) {
+ if (!isElementInDetail(e.target)) {
+ let resultElement = getResultElement(e.target);
+ if (resultElement && resultElement.getAttribute("data-vim-selected") === null) {
+ highlightResult(resultElement)(true);
+ }
+ if (isImageResult(resultElement)) {
+ searxng.selectImage(resultElement);
+ }
+ }
}, true);
var vimKeys = {
@@ -119,20 +154,22 @@ searxng.ready(function() {
}
};
- searxng.on(document, "keydown", function(e) {
- // check for modifiers so we don't break browser's hotkeys
- if (Object.prototype.hasOwnProperty.call(vimKeys, e.keyCode) && !e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey) {
- var tagName = e.target.tagName.toLowerCase();
- if (e.keyCode === 27) {
- vimKeys[e.keyCode].fun(e);
- } else {
- if (e.target === document.body || tagName === 'a' || tagName === 'button') {
- e.preventDefault();
- vimKeys[e.keyCode].fun();
+ if (searxng.hotkeys) {
+ searxng.on(document, "keydown", function(e) {
+ // check for modifiers so we don't break browser's hotkeys
+ if (Object.prototype.hasOwnProperty.call(vimKeys, e.keyCode) && !e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey) {
+ var tagName = e.target.tagName.toLowerCase();
+ if (e.keyCode === 27) {
+ vimKeys[e.keyCode].fun(e);
+ } else {
+ if (e.target === document.body || tagName === 'a' || tagName === 'button') {
+ e.preventDefault();
+ vimKeys[e.keyCode].fun();
+ }
}
}
- }
- });
+ });
+ }
function highlightResult(which) {
return function(noScroll) {
@@ -353,14 +390,12 @@ searxng.ready(function() {
}
function toggleHelp() {
- var helpPanel = document.querySelector('#vim-hotkeys-help');
- console.log(helpPanel);
+ var helpPanel = document.querySelector('#vim-hotkeys-help');
if (helpPanel === undefined || helpPanel === null) {
// first call
helpPanel = document.createElement('div');
helpPanel.id = 'vim-hotkeys-help';
helpPanel.className='dialog-modal';
- helpPanel.style='width: 40%';
initHelpContent(helpPanel);
initHelpContent(helpPanel);
initHelpContent(helpPanel);
diff --git a/searx/static/themes/simple/src/js/main/results.js b/searx/static/themes/simple/src/js/main/results.js
index 5ccbb38b5..e4b139fe0 100644
--- a/searx/static/themes/simple/src/js/main/results.js
+++ b/searx/static/themes/simple/src/js/main/results.js
@@ -31,17 +31,13 @@
}
});
- function selectImage(e) {
+ searxng.selectImage = function(resultElement) {
/*eslint no-unused-vars: 0*/
- let t = e.target;
- while (t && t.nodeName != 'ARTICLE') {
- t = t.parentNode;
- }
- if (t) {
+ if (resultElement) {
// load full size image in background
- const imgElement = t.querySelector('.result-images-source img');
- const thumbnailElement = t.querySelector('.image_thumbnail');
- const detailElement = t.querySelector('.detail');
+ const imgElement = resultElement.querySelector('.result-images-source img');
+ const thumbnailElement = resultElement.querySelector('.image_thumbnail');
+ const detailElement = resultElement.querySelector('.detail');
if (imgElement) {
const imgSrc = imgElement.getAttribute('data-src');
if (imgSrc) {
@@ -74,12 +70,6 @@
searxng.image_thumbnail_layout.align();
searxng.scrollPageToSelected();
}
-
- searxng.on('.result-images', 'click', e => {
- e.preventDefault();
- selectImage(e);
- });
- searxng.on('.result-images a', 'focus', selectImage, true);
searxng.on('.result-detail-close', 'click', e => {
e.preventDefault();
searxng.closeDetail();
diff --git a/searx/static/themes/simple/src/less/definitions.less b/searx/static/themes/simple/src/less/definitions.less
index a09735c5e..33b65a682 100644
--- a/searx/static/themes/simple/src/less/definitions.less
+++ b/searx/static/themes/simple/src/less/definitions.less
@@ -185,7 +185,7 @@
--color-toolkit-badge-background: #777;
--color-toolkit-kbd-font: #000;
--color-toolkit-kbd-background: #fff;
- --color-toolkit-dialog-border: #333;
+ --color-toolkit-dialog-border: #555;
--color-toolkit-dialog-background: #222;
--color-toolkit-tabs-label-border: #222;
--color-toolkit-tabs-section-border: #555;
diff --git a/searx/static/themes/simple/src/less/toolkit.less b/searx/static/themes/simple/src/less/toolkit.less
index 4f1c3f338..faed6ea9f 100644
--- a/searx/static/themes/simple/src/less/toolkit.less
+++ b/searx/static/themes/simple/src/less/toolkit.less
@@ -196,11 +196,9 @@ div.selectable_url {
position: fixed;
top: 50%;
left: 50%;
-
- /* bring your own prefixes */
+ margin: 0 auto;
transform: translate(-50%, -50%);
- z-index: 100000;
- margin: 0 50% 0 0;
+ z-index: 10000000;
}
// btn-collapse