Files
maquette_backoffice/js/confirmDelete.js
2025-12-12 15:02:57 +01:00

61 lines
2.2 KiB
JavaScript

/**
* confirmDelete.js
*
* Modal de confirmation générique pour les actions de suppression.
*
* Usage:
* 1. Ajouter data-bs-toggle="modal" et data-bs-target="#confirmDeleteModal" au lien de suppression.
* 2. Lors de la confirmation, l'attribut href du lien est utilisé pour la navigation (GET).
*/
(function(){
let pendingHref = null;
let pendingModalId = '#confirmDeleteModal';
function getBootstrapModal(modalEl){
//retourne l'instance Bootstrap Modal associée à modalEl, ou en crée une nouvelle si nécessaire
if (!modalEl || !window.bootstrap) return null;
return bootstrap.Modal.getInstance(modalEl) || new bootstrap.Modal(modalEl);
}
document.addEventListener('click', function(e){
const btn = e.target.closest('a[data-bs-toggle="modal"][data-bs-target]');
if (!btn) return;
const target = btn.getAttribute('data-bs-target');
// Gérer les boutons de type suppression ; restreindre éventuellement en utilisant une classe CSS spécifique
// Pour un appariement plus strict, ajouter une classe dédiée et la vérifier ici.
e.preventDefault();
pendingHref = btn.getAttribute('href');
pendingModalId = btn.getAttribute('data-confirm-modal') || target || '#confirmDeleteModal';
const modalEl = document.querySelector(pendingModalId);
const modal = getBootstrapModal(modalEl);
if (modal) modal.show();
});
document.addEventListener('click', function(e){
const confirmBtn = e.target.closest('#confirmDeleteBtn');
if (!confirmBtn) return;
if (pendingHref && pendingHref !== '#' && pendingHref.trim() !== ''){
window.location.assign(pendingHref);
return; // la navigation va se produire, arrêter le traitement ici
}
// Si aucun href n'est présent, fermer simplement le modal
const modalEl = document.querySelector(pendingModalId);
const modal = getBootstrapModal(modalEl);
if (modal) modal.hide();
pendingHref = null;
pendingModalId = '#confirmDeleteModal';
});
// Réinitialiser l'état stocké lorsque n'importe quel modal Bootstrap est caché
document.addEventListener('hidden.bs.modal', function(){
pendingHref = null;
pendingModalId = '#confirmDeleteModal';
});
})();