| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 | 
import { Controller } from "@hotwired/stimulus"export default class extends Controller {    connect() {        this._closeListener = () => this.close()        this._escapeListener = (event) => {            if (event.key === 'Escape') {                this.close()            }        }        window.addEventListener('modal:close', this._closeListener)        document.addEventListener('keydown', this._escapeListener)        // Écoute tous les clics sur .open-modal        document.querySelectorAll('.open-modal').forEach(element => {            element.addEventListener('click', this.handleClick.bind(this))        })    }    disconnect() {        window.removeEventListener('modal:close', this._closeListener)        document.removeEventListener('keydown', this._escapeListener)        // Nettoie les événements attachés        document.querySelectorAll('.open-modal').forEach(element => {            element.removeEventListener('click', this.handleClick.bind(this))        })    }    handleClick(event) {        event.preventDefault()        const url = event.currentTarget.getAttribute('href') || event.currentTarget.dataset.url        if (!url) return        fetch(url, {            headers: { "Turbo-Frame": "modal-content" }        })        .then(response => response.text())        .then(html => {            document.getElementById('modal-content').innerHTML = html            document.getElementById('modal').classList.add('is-active')        })    }    close() {        document.getElementById('modal').classList.remove('is-active')        document.getElementById('modal-content').innerHTML = ''    }}
 |