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; } } }