document.addEventListener("DOMContentLoaded", () => { // --- GESTION DES ONGLETS EXISTANTE --- const navLinks = document.querySelectorAll(".nav-link"); const tabContents = document.querySelectorAll(".tab-content"); navLinks.forEach(link => { link.addEventListener("click", (e) => { e.preventDefault(); navLinks.forEach(l => l.classList.remove("active")); tabContents.forEach(tc => tc.classList.remove("active")); link.classList.add("active"); const tabId = link.getAttribute("data-tab"); document.getElementById(tabId).classList.add("active"); }); }); // --- OPTION 1 : DRAG & DROP ENGINE (AAA SOUVERAIN) --- const draggables = document.querySelectorAll(".rym-draggable-workout"); const dropZones = document.querySelectorAll(".drop-zone"); draggables.forEach(draggable => { draggable.addEventListener("dragstart", (e) => { e.dataTransfer.setData("text/plain", draggable.id); // Petit délai pour l'effet visuel de déplacement setTimeout(() => { draggable.style.display = "none"; }, 0); }); draggable.addEventListener("dragend", () => { draggable.style.display = "block"; }); }); dropZones.forEach(zone => { zone.addEventListener("dragover", (e) => { e.preventDefault(); // Indispensable pour autoriser le drop zone.classList.add("drag-over"); }); zone.addEventListener("dragleave", () => { zone.classList.remove("drag-over"); }); zone.addEventListener("drop", (e) => { e.preventDefault(); zone.classList.remove("drag-over"); const id = e.dataTransfer.getData("text/plain"); const draggableElement = document.getElementById(id); if (draggableElement) { zone.appendChild(draggableElement); // Ici se branchera l'appel API asynchrone vers ton Gitea/Serveur const targetDay = zone.getAttribute("data-day"); console.log(`Séance déplacée avec succès sur le jour : ${targetDay}`); } }); }); });