Files
fizzy/app/javascript/controllers/dialog_manager_controller.js
2025-11-06 16:46:50 -06:00

25 lines
664 B
JavaScript

import { Controller } from "@hotwired/stimulus"
export default class extends Controller {
connect() {
this.element.addEventListener("dialog:show", this.handleDialogShow.bind(this))
}
disconnect() {
this.element.removeEventListener("dialog:show", this.handleDialogShow.bind(this))
}
handleDialogShow(event) {
this.#dialogControllers.forEach(dialogController => {
if (dialogController !== event.target) {
const dialog = dialogController.querySelector("dialog")
dialog.removeAttribute("open")
}
})
}
get #dialogControllers() {
return this.element.querySelectorAll('[data-controller~="dialog"]')
}
}