diff options
| author | 2025-08-31 19:09:02 +0200 | |
|---|---|---|
| committer | 2025-08-31 19:09:02 +0200 | |
| commit | 87879e83927d66332d2d0794bc47eeb55f8c9b46 (patch) | |
| tree | 2706ce65294feee9dd09375060d14914a9e6bfe9 /p/scripts | |
| parent | 94d4f942d3bd604473c1acd4b07113890e0890e0 (diff) | |
Improve leave validation (#7830)
* Improve leave validation
* array_key_exists -> isset
Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
Diffstat (limited to 'p/scripts')
| -rw-r--r-- | p/scripts/extra.js | 29 | ||||
| -rw-r--r-- | p/scripts/main.js | 7 |
2 files changed, 25 insertions, 11 deletions
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', '<input type="hidden" name="resetFavicon" value="1" />'); + resetFavicon.insertAdjacentHTML('afterend', '<input type="hidden" name="resetFavicon" value="1" data-leave-validation="" />'); 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', '<input type="hidden" id="extBtn" value="1" data-leave-validation="" />'); 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; } // </slider> 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; } |
