This commit is contained in:
2026-09-10 18:40:43 +02:00
parent 4fbabace79
commit dbdf8b0d8b
2 changed files with 54 additions and 17 deletions
+49 -7
View File
@@ -1194,17 +1194,59 @@ window.cancelAnimFrame = (function () {
window.closeOnaraModal = closeOnaraModal;
window.isOnaraActive = isOnaraActive;
// Onara modal close click delegation: clicking outside .item-main-content closes modal
// Onara modal close click delegation: clicking on empty/free space closes the modal
document.addEventListener('click', (e) => {
if (!document.body.classList.contains('onara-modal-open')) return;
// Do not close if clicking inside the item content
if (e.target.closest('.item-main-content')) return;
// Do not close if clicking auxiliary modals, dropdowns, or notifications
if (e.target.closest('.modal-overlay:not(#onara-modal), .modal-content, .swal2-container, .tippy-box, #comments-container .emoji-picker')) return;
// Do not close if clicking the global sidebar right or navbar (as modal respects them)
// Do not close if clicking auxiliary modals, dropdowns, tooltips, or emoji pickers
if (e.target.closest('.modal-overlay:not(#onara-modal), .modal-content, .swal2-container, .tippy-box, #comments-container .emoji-picker, .dropdown-menu, .custom-confirm-overlay')) return;
// Do not close if clicking the global sidebar right or navbar
if (e.target.closest('.global-sidebar-right, nav.navbar, #sidebar-drag-zone')) return;
// Any click outside .item-main-content (e.g. left side, right side, backdrop, modal background) closes
// Do not close if clicking interactive content elements or actual item components
const contentElementSelector = [
'.media-object',
'.previous-post',
'.next-post',
'.arrow-prev',
'.arrow-next',
'#prev',
'#next',
'.nav-prev',
'.nav-next',
'#random',
'.location',
'.item_title',
'.blahlol',
'#comments-container',
'.tag-controls',
'.sidebar-tags-container',
'.xd-score-wrapper',
'.user-infobox-block',
'a',
'button',
'input',
'textarea',
'select',
'label',
'form',
'video',
'audio',
'img',
'canvas',
'iframe',
'.iconset',
'.badge',
'.btn',
'time',
'[role="button"]',
'i[class*="fa-"]'
].join(', ');
if (e.target.closest(contentElementSelector)) return;
// Any click on free space (backdrop, modal wrapper, container background, empty space in item-main-content) closes
if (e.target.closest('#onara-modal') || e.target.id === 'onara-backdrop') {
e.preventDefault();
closeOnaraModal();