Skip to content

Commit 40dfb52

Browse files
authored
fix: warn without save (#680)
1 parent 3e232ec commit 40dfb52

File tree

1 file changed

+20
-7
lines changed
  • src/unfold/static/unfold/js

1 file changed

+20
-7
lines changed

src/unfold/static/unfold/js/app.js

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,27 @@ window.addEventListener("load", (e) => {
1717
*************************************************************/
1818
const warnWithoutSaving = () => {
1919
let formChanged = false;
20+
const form = document.querySelector("form.warn-unsaved-form");
2021

21-
Array.from(
22-
document.querySelectorAll(
23-
"form.warn-unsaved-form input, form.warn-unsaved-form select"
24-
)
25-
).forEach((field) => {
26-
field.addEventListener("change", (e) => (formChanged = true));
27-
});
22+
const checkFormChanged = () => {
23+
const elements = document.querySelectorAll(
24+
"form.warn-unsaved-form input, form.warn-unsaved-form select, form.warn-unsaved-form textarea"
25+
);
26+
27+
Array.from(elements).forEach((field) => {
28+
field.addEventListener("input", (e) => (formChanged = true));
29+
});
30+
};
31+
32+
if (!form) {
33+
return;
34+
}
35+
36+
new MutationObserver((mutationsList, observer) => {
37+
checkFormChanged();
38+
}).observe(form, { attributes: true, childList: true, subtree: true });
39+
40+
checkFormChanged();
2841

2942
window.addEventListener("beforeunload", (e) => {
3043
if (formChanged) {

0 commit comments

Comments
 (0)