From 6eaef1ddda527c7776db99633fb3919b84b70b88 Mon Sep 17 00:00:00 2001 From: Pierre Marx Date: Thu, 4 Sep 2025 15:59:32 -0400 Subject: [PATCH] =?UTF-8?q?fix:=20Ajout=20de=20l'autofocus=20sur=20le=20ch?= =?UTF-8?q?amp=20code=20d'acc=C3=A8s=20pour=20une=20saisie=20imm=C3=A9diat?= =?UTF-8?q?e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Focus automatique au lancement de l'application - Focus automatique après déconnexion - Plus besoin de cliquer avant de commencer à taper - Amélioration significative de l'ergonomie de connexion --- docs/changelog.md | 20 ++++++++++++++++++++ index.html | 1 + renderer.js | 24 ++++++++++++++++++++++++ 3 files changed, 45 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 4fb5491..f2b6e87 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -1,5 +1,25 @@ # Changelog - SimpleConnect Electron +## [1.2.9] - 2025-09-04 + +### Ajouté +- **Autofocus sur le champ code d'accès** : Amélioration de l'ergonomie de connexion + - Focus automatique au lancement de l'application + - Focus automatique après déconnexion + - Sélection automatique du contenu existant pour remplacement rapide + - Plus besoin de cliquer avant de taper + +### Modifié +- **Expérience utilisateur de connexion** : Accès direct au clavier + - Attribut HTML `autofocus` sur le champ code d'accès + - Focus forcé après fermeture de la modal de déconnexion + - Délais optimisés pour garantir le focus malgré les animations + +### Technique +- Focus appliqué à 3 endroits : attribut HTML, chargement initial, après déconnexion +- Utilisation de `select()` pour sélectionner le contenu existant +- Délais de 100-200ms pour contourner les interférences des animations + ## [1.2.8] - 2025-09-04 ### Ajouté diff --git a/index.html b/index.html index 584f09b..98cd482 100644 --- a/index.html +++ b/index.html @@ -25,6 +25,7 @@ id="accessCode" placeholder="Code d'accès" required + autofocus /> { } else { // S'assurer que le formulaire est propre au démarrage resetLoginForm(); + // Mettre le focus sur le champ code d'accès + const accessCodeInput = document.getElementById('accessCode'); + if (accessCodeInput) { + accessCodeInput.focus(); + } } // Gestionnaire du formulaire de connexion @@ -248,6 +253,16 @@ function showLogoutModal() { webviews = {}; resetLoginForm(); // Réinitialiser le formulaire showLoginPage(); + + // Forcer le focus après la fermeture complète de la modal + setTimeout(() => { + const accessCodeInput = document.getElementById('accessCode'); + if (accessCodeInput) { + accessCodeInput.focus(); + accessCodeInput.select(); + } + }, 200); + cancelBtn.removeEventListener('click', handleCancel); confirmBtn.removeEventListener('click', handleConfirm); }; @@ -354,6 +369,15 @@ function hideLoginProgress() { function showLoginPage() { document.getElementById('loginPage').classList.add('active'); document.getElementById('mainPage').classList.remove('active'); + + // Mettre le focus sur le champ code d'accès après un court délai + setTimeout(() => { + const accessCodeInput = document.getElementById('accessCode'); + if (accessCodeInput) { + accessCodeInput.focus(); + accessCodeInput.select(); // Sélectionner le contenu s'il y en a + } + }, 100); } // Réinitialiser le formulaire de connexion