39 lines
1 KiB
JavaScript
39 lines
1 KiB
JavaScript
|
|
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;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|