Add unsaved changed check to check form
Some checks failed
/ Run tests (push) Failing after 16s
/ Run system tests (push) Failing after 15s
/ Build, push and deploy image (push) Has been skipped

This commit is contained in:
david 2024-10-28 22:39:32 +01:00
parent fd86bdd10f
commit 4f8b18ca25
3 changed files with 43 additions and 1 deletions

View file

@ -27,3 +27,6 @@ application.register("set-theme", SetThemeController)
import ThemeSwitcherController from "./theme_switcher_controller"
application.register("theme-switcher", ThemeSwitcherController)
import UnsavedChangesController from "./unsaved_changes_controller"
application.register("unsaved-changes", UnsavedChangesController)

View file

@ -0,0 +1,39 @@
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;
}
}
}

View file

@ -1,4 +1,4 @@
= bootstrap_form_with(model: check, remote: true) do |form|
= bootstrap_form_with(model: check, remote: true, data: { controller: "unsaved-changes" }) do |form|
h2 Details
= multilang_form_field(form, :name)
= form.text_field :number, required: false