From: Christian Heller Date: Sun, 27 Apr 2025 16:56:42 +0000 (+0200) Subject: Remove confirmation dialogue on edit if using newly enabled buttons. X-Git-Url: https://plomlompom.com/repos/%22https:/validator.w3.org/template?a=commitdiff_plain;h=fa25360c40699d6664e26cbabda55e83d579078f;p=ledgplom Remove confirmation dialogue on edit if using newly enabled buttons. --- diff --git a/src/templates/_macros.tmpl b/src/templates/_macros.tmpl index 7d6b9c4..a9a4b22 100644 --- a/src/templates/_macros.tmpl +++ b/src/templates/_macros.tmpl @@ -100,10 +100,15 @@ td.direct_target { {% macro js_taint() %} +var suppress_beforeunload = false; + function taint() { // activate buttons "apply", "revert" Array.from(document.getElementsByClassName('enable_on_change')).forEach((el) => { el.disabled = false; + el.addEventListener('click', function(e) { + suppress_beforeunload = true; + }); }); // deactivate "disable_on_change" span contents function recursive_span_disable(el) { @@ -130,9 +135,11 @@ function taint() { }); // try to catch user closing or reloading window window.addEventListener('beforeunload', function(e) { - e.preventDefault(); - e.returnValue = true; } - ); + if (!suppress_beforeunload) { + e.preventDefault(); + e.returnValue = true; + } + }); // remove oninput handlers no longer needed (since we only ever go one way) Array.from(document.querySelectorAll('*') ).filter(el => (el.oninput !== null)