Merge pull request #467 from MareStare/fix/burger-button-eating-click

Get rid of `stopPropagation` on `click` events to make autocomplete popup disappear
This commit is contained in:
liamwhite 2025-03-19 08:13:08 -04:00 committed by GitHub
commit fa70d20943
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 31 additions and 20 deletions

View file

@ -53,19 +53,24 @@ export function setupBurgerMenu() {
copyUserLinksTo(burger);
toggle.addEventListener('click', event => {
event.stopPropagation();
event.preventDefault();
if (content.classList.contains('open')) {
close(burger, content, body, root);
} else {
open(burger, content, body, root);
document.addEventListener('click', event => {
if (!(event.target instanceof Node)) {
return;
}
});
content.addEventListener('click', () => {
if (content.classList.contains('open')) {
if (toggle.contains(event.target)) {
event.preventDefault();
if (content.classList.contains('open')) {
close(burger, content, body, root);
} else {
open(burger, content, body, root);
}
return;
}
if (content.contains(event.target) && content.classList.contains('open')) {
close(burger, content, body, root);
}
});

View file

@ -19,7 +19,13 @@ const endpoints = {
const spoilerDownvoteMsg = 'Neigh! - Remove spoilered tags from your filters to downvote from thumbnails';
/* Quick helper function to less verbosely iterate a QSA */
/**
* Quick helper function to less verbosely iterate a QSA
*
* @param {string} id
* @param {string} selector
* @param {(node: HTMLElement) => void} cb
*/
function onImage(id, selector, cb) {
[].forEach.call(document.querySelectorAll(`${selector}[data-image-id="${id}"]`), cb);
}
@ -145,14 +151,6 @@ function loadInteractions() {
icon.setAttribute('title', spoilerDownvoteMsg);
a.classList.add('disabled');
a.addEventListener(
'click',
event => {
event.stopPropagation();
event.preventDefault();
},
true,
);
});
});
}
@ -163,6 +161,10 @@ const targets = {
interact('vote', imageId, 'DELETE').then(() => resetVoted(imageId));
},
'.interaction--downvote.active'(imageId) {
if (window.booru.imagesWithDownvotingDisabled.includes(imageId)) {
return;
}
interact('vote', imageId, 'DELETE').then(() => resetVoted(imageId));
},
'.interaction--fave.active'(imageId) {
@ -180,6 +182,10 @@ const targets = {
});
},
'.interaction--downvote:not(.active)'(imageId) {
if (window.booru.imagesWithDownvotingDisabled.includes(imageId)) {
return;
}
interact('vote', imageId, 'POST', { up: false }).then(() => {
resetVoted(imageId);
showDownvoted(imageId);