Files
fizzy/app/javascript/controllers/dialog_controller.js
T
Jorge Manrubia f18cda45bd Fix: show updated values in the column form after saving
This removes the data turbo permanent attribute and instead, prevent the dialog closing
automatically (so that a page refresh does not make you lose context)

https://fizzy.37signals.com/5986089/cards/2300/
2025-10-16 16:31:32 +02:00

54 lines
1.1 KiB
JavaScript

import { Controller } from "@hotwired/stimulus"
import { orient } from "helpers/orientation_helpers"
export default class extends Controller {
static targets = [ "dialog" ]
static values = {
modal: { type: Boolean, default: false }
}
connect() {
this.dialogTarget.setAttribute("aria-hidden", "true")
}
open() {
const modal = this.modalValue
if (modal) {
this.dialogTarget.showModal()
} else {
this.dialogTarget.show()
orient(this.dialogTarget)
}
this.dialogTarget.setAttribute("aria-hidden", "false")
this.dispatch("show")
}
toggle() {
if (this.dialogTarget.open) {
this.close()
} else {
this.open()
}
}
close() {
this.dialogTarget.close()
this.dialogTarget.setAttribute("aria-hidden", "true")
this.dialogTarget.blur()
orient(this.dialogTarget, false)
}
closeOnClickOutside({ target }) {
if (!this.element.contains(target)) this.close()
}
preventCloseOnMorphing(event) {
if (event.detail?.attributeName === "open") {
event.preventDefault()
event.stopPropagation()
}
}
}