From 87879e83927d66332d2d0794bc47eeb55f8c9b46 Mon Sep 17 00:00:00 2001 From: Inverle Date: Sun, 31 Aug 2025 19:09:02 +0200 Subject: Improve leave validation (#7830) * Improve leave validation * array_key_exists -> isset Co-authored-by: Alexandre Alapetite --- p/scripts/extra.js | 29 +++++++++++++++++++---------- p/scripts/main.js | 7 ++++++- 2 files changed, 25 insertions(+), 11 deletions(-) (limited to 'p') diff --git a/p/scripts/extra.js b/p/scripts/extra.js index 457610b91..8d5b960c8 100644 --- a/p/scripts/extra.js +++ b/p/scripts/extra.js @@ -179,6 +179,10 @@ function init_update_feed() { if (resetField) { resetField.remove(); } + const extBtn = feed_update.querySelector('input#extBtn'); + if (extBtn) { + extBtn.remove(); + } if (faviconExtBtn) { faviconExtBtn.disabled = false; extension.innerText = extension.dataset.initialExt ?? extension.innerText; @@ -214,6 +218,10 @@ function init_update_feed() { if (resetField) { resetField.remove(); } + const extBtn = feed_update.querySelector('input#extBtn'); + if (extBtn) { + extBtn.remove(); + } resetFavicon.disabled = false; favicon.src = URL.createObjectURL(faviconUpload.files[0]); }; @@ -231,19 +239,16 @@ function init_update_feed() { faviconExt.classList.add('hidden'); faviconError.innerHTML = ''; clearUploadedIcon(); - resetFavicon.insertAdjacentHTML('afterend', ''); + resetFavicon.insertAdjacentHTML('afterend', ''); resetFavicon.disabled = true; favicon.src = favicon.dataset.originalIcon; }; - // Discard the icon change when the "Cancel" button is clicked - feed_update.querySelectorAll('[type="reset"]').forEach(cancelBtn => { - cancelBtn.addEventListener('click', () => { - faviconExt.classList.remove('hidden'); - faviconError.innerHTML = ''; - discardIconChange(); - }); + feed_update.querySelector('form').addEventListener('reset', () => { + faviconExt.classList.remove('hidden'); + faviconError.innerHTML = ''; + discardIconChange(); }); if (faviconExtBtn) { @@ -272,6 +277,7 @@ function init_update_feed() { if (resetField) { resetField.remove(); } + faviconExtBtn.insertAdjacentHTML('afterend', ''); resetFavicon.disabled = false; faviconError.innerHTML = ''; faviconExt.classList.remove('hidden'); @@ -367,9 +373,12 @@ function close_slider_listener(ev) { if (data_leave_validation(slider) || confirm(context.i18n.confirm_exit_slider)) { slider.querySelectorAll('form').forEach(function (f) { f.reset(); }); document.documentElement.classList.remove('slider-active'); - return; + return true; } - ev.preventDefault(); + if (ev) { + ev.preventDefault(); + } + return false; } // diff --git a/p/scripts/main.js b/p/scripts/main.js index c9f856c73..813890e42 100644 --- a/p/scripts/main.js +++ b/p/scripts/main.js @@ -1185,6 +1185,7 @@ function init_shortcuts() { } return; } + const hash = location.hash.substr(1); if (k === s.skip_next_entry) { next_entry(true); ev.preventDefault(); return; } if (k === s.skip_prev_entry) { prev_entry(true); ev.preventDefault(); return; } if (k === s.collapse_entry) { collapse_entry(); ev.preventDefault(); return; } @@ -1192,7 +1193,11 @@ function init_shortcuts() { if (k === s.auto_share) { auto_share(); ev.preventDefault(); return; } if (k === s.user_filter) { user_filter(); ev.preventDefault(); return; } if (k === s.load_more) { load_more_posts(); ev.preventDefault(); return; } - if (k === s.close_dropdown) { location.hash = null; ev.preventDefault(); return; } + /* globals close_slider_listener */ + if (k === s.close_menus && ( + (hash === 'slider' && close_slider_listener()) || + hash.startsWith('dropdown') + )) { location.hash = ''; ev.preventDefault(); return; } if (k === s.help) { window.open(context.urls.help); ev.preventDefault(); return; } if (k === s.focus_search) { document.getElementById('search').focus(); ev.preventDefault(); return; } if (k === s.normal_view) { delayedClick(document.querySelector('#nav_menu_views .view-normal')); ev.preventDefault(); return; } -- cgit v1.2.3