[feat] image results: dismiss image viewer on back button press on mobile devices

This commit is contained in:
Bnyro 2025-01-16 20:01:11 +01:00 committed by Markus Heiser
parent 2f087a3a22
commit c760ad0808

View file

@ -52,6 +52,7 @@
this.innerText = this.dataset.copiedText; this.innerText = this.dataset.copiedText;
}); });
const isMobile = screen.orientation.type.startsWith('portrait');
searxng.selectImage = function (resultElement) { searxng.selectImage = function (resultElement) {
/* eslint no-unused-vars: 0 */ /* eslint no-unused-vars: 0 */
if (resultElement) { if (resultElement) {
@ -82,26 +83,36 @@
} }
} }
d.getElementById('results').classList.add('image-detail-open'); d.getElementById('results').classList.add('image-detail-open');
// add a hash to the browser history so that pressing back doesn't return to the previous page
// this allows us to dismiss the image details on pressing the back button on mobile devices
window.location.hash = '#image-viewer';
searxng.scrollPageToSelected(); searxng.scrollPageToSelected();
} };
searxng.closeDetail = function (e) { searxng.closeDetail = function (e) {
d.getElementById('results').classList.remove('image-detail-open'); d.getElementById('results').classList.remove('image-detail-open');
searxng.scrollPageToSelected(); searxng.scrollPageToSelected();
} };
searxng.on('.result-detail-close', 'click', e => { searxng.on('.result-detail-close', 'click', e => {
e.preventDefault(); e.preventDefault();
searxng.closeDetail(); searxng.closeDetail();
}); });
searxng.on('.result-detail-previous', 'click', e => { searxng.on('.result-detail-previous', 'click', e => {
e.preventDefault(); e.preventDefault();
searxng.selectPrevious(false) searxng.selectPrevious(false);
}); });
searxng.on('.result-detail-next', 'click', e => { searxng.on('.result-detail-next', 'click', e => {
e.preventDefault(); e.preventDefault();
searxng.selectNext(false); searxng.selectNext(false);
}); });
// listen for the back button to be pressed and dismiss the image details when called
window.addEventListener('hashchange', () => {
if (!window.location.hash) searxng.closeDetail();
});
w.addEventListener('scroll', function () { w.addEventListener('scroll', function () {
var e = d.getElementById('backToTop'), var e = d.getElementById('backToTop'),
scrollTop = document.documentElement.scrollTop || document.body.scrollTop, scrollTop = document.documentElement.scrollTop || document.body.scrollTop,