a11yist/app/javascript/controllers/unsaved_changes_controller.js

39 lines
1 KiB
JavaScript
Raw Normal View History

import { Controller } from "@hotwired/stimulus"
// Connects to data-controller="unsaved-changes"
export default class extends Controller {
changed = false
connect() {
window.addEventListener("beforeunload", (event) => {
this.leavingPage(event);
});
document.addEventListener('turbo:before-visit', (event) => {
this.leavingPage(event);
});
this.element.addEventListener("submit", (_) => {
this.changed = false
})
this.element.addEventListener("change", (_) => {
this.changed = true
})
}
leavingPage(event) {
if(!this.changed) {
return
}
console.log("leavingPage", this.changed)
if (event.type == "turbo:before-visit") {
if (!window.confirm("Es gibt ungespeicherte Änderungen! Wirklich verlassen?")) {
event.preventDefault()
}
} else {
if (!window.confirm("Es gibt ungespeicherte Änderungen! Wirklich verlassen?")) {
event.preventDefault()
}
return event.returnValue;
}
}
}