feat: Animation de progression pendant la déconnexion (v1.2.7)

- Ajout d'un spinner circulaire animé pendant la déconnexion
- Rotation fluide avec design violet cohérent
- Textes dynamiques "Déconnexion en cours..." pendant le processus
- Boutons masqués pour éviter les doubles clics
- Transitions en fondu entre icône et spinner
- Délais optimisés pour une expérience fluide
This commit is contained in:
Pierre Marx
2025-09-04 15:51:01 -04:00
parent f0b407d4b8
commit c7bef13dcd
4 changed files with 126 additions and 6 deletions

View File

@@ -208,8 +208,21 @@ function showLogoutModal() {
};
const handleConfirm = async () => {
modal.classList.remove('active');
// Afficher l'animation de déconnexion
showLogoutProgress();
// Attendre un peu pour que l'animation soit visible
await new Promise(resolve => setTimeout(resolve, 300));
// Effectuer la déconnexion
await ipcRenderer.invoke('logout');
// Attendre encore un peu pour une transition fluide
await new Promise(resolve => setTimeout(resolve, 500));
// Réinitialiser et fermer
modal.classList.remove('active');
hideLogoutProgress();
currentAgent = null;
currentCentres = [];
activeCenter = null;
@@ -240,6 +253,47 @@ function showLogoutModal() {
document.addEventListener('keydown', handleEscape);
}
// Afficher l'animation de progression de déconnexion
function showLogoutProgress() {
const modal = document.querySelector('.logout-modal');
const icon = document.getElementById('logoutIcon');
const spinner = document.getElementById('logoutSpinner');
const title = document.getElementById('logoutTitle');
const text = document.getElementById('logoutText');
const subtitle = document.getElementById('logoutSubtitle');
const buttons = document.getElementById('logoutButtons');
// Masquer l'icône et afficher le spinner
icon.style.display = 'none';
spinner.style.display = 'block';
// Mettre à jour les textes
title.textContent = 'Déconnexion en cours...';
text.textContent = 'Veuillez patienter';
subtitle.textContent = 'Fermeture de votre session...';
// Masquer les boutons
buttons.style.display = 'none';
}
// Masquer l'animation de progression de déconnexion
function hideLogoutProgress() {
const icon = document.getElementById('logoutIcon');
const spinner = document.getElementById('logoutSpinner');
const title = document.getElementById('logoutTitle');
const text = document.getElementById('logoutText');
const subtitle = document.getElementById('logoutSubtitle');
const buttons = document.getElementById('logoutButtons');
// Restaurer l'état initial
icon.style.display = 'flex';
spinner.style.display = 'none';
title.textContent = 'Déconnexion';
text.textContent = 'Êtes-vous sûr de vouloir vous déconnecter ?';
subtitle.textContent = 'Votre session sera fermée et vous devrez vous reconnecter.';
buttons.style.display = 'flex';
}
// === GESTION DES PAGES ===
function showLoginPage() {
document.getElementById('loginPage').classList.add('active');