script delete
This commit is contained in:
60
js/confirmDelete.js
Normal file
60
js/confirmDelete.js
Normal file
@@ -0,0 +1,60 @@
|
||||
|
||||
/**
|
||||
* 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';
|
||||
});
|
||||
})();
|
||||
Reference in New Issue
Block a user