import { Controller } from "@hotwired/stimulus" export default class extends Controller { connect() { // Écoute tous les clics sur .open-modal -> détournement vers #lastStep + MAJ des options du formulaire document.querySelectorAll('.participant-box').forEach(element => { element.addEventListener('click', this.handleClick.bind(this)) }) } handleClick(event) { event.preventDefault() const participantId = event.currentTarget.dataset.id const box = event.currentTarget; const icon = box.querySelector('.icon'); if (!participantId) return // Etape 1 fetch(`/checkin/participant/${participantId}`, { method: 'POST', headers: { 'Accept': 'application/json' } }) .then(response => { if (!response.ok) { throw new Error(`Erreur API: ${response.status}`); } return response.json(); }) .then(data => { // Etape 2 console.log('ID du particpant cliqué :', participantId); console.log('ÉTAT DU SLOT :', data.status); if (data.status === "CHECKED") { box.classList.add('has-background-primary'); box.classList.remove('has-background-danger'); icon.innerHTML = ''+ ''+ ''+ ''; } else if (data.status === "UNCHECKED") { box.classList.remove('has-background-primary'); box.classList.add('has-background-danger'); icon.innerHTML = ''+ ''+ ''; } else { console.warn("Statut de réponse sans action :", data.status); } }) .catch(error => { console.error('Erreur lors de la récupération des slots :', error); }); } disconnect() { this.element.querySelectorAll('.planning-cell-free').forEach(element => { element.removeEventListener('click', this.handleClick) }) } }