diff --git a/TEST_SCENARIOS.md b/TEST_SCENARIOS.md index 820cc00..acb5074 100644 --- a/TEST_SCENARIOS.md +++ b/TEST_SCENARIOS.md @@ -50,15 +50,15 @@ Préparer : 3 entrées `A`, `B`, `C`, dont `A` dans le dossier `Work` avec le ta ### A6 · glisser une **multi-sélection** sur un dossier (`moveEntriesToFolder`) ⚠️ - **ACTION** : cocher `A` + `B` → glisser sur `Perso` → recharger (F5 impossible : relancer l'app) - **ATTENDU** : dossier changé **et** nom / username / site / tags **intacts**. -- **Historique** : ce chemin n'appelait pas `withEncryptedMeta` → il blanchissait les métadonnées chiffrées. Si des entrées ont été déplacées ainsi avant le fix, elles sont peut-être déjà vides — vérifier. +- **Historique** : ce chemin n'appelait pas `withEncryptedMeta` → il blanchissait les métadonnées chiffrées. Si des entrées ont été déplacées ainsi avant le fix, elles sont peut-être déjà vides — vérifier.✅ ### A7 · suppression du dossier de l'entrée éditée - **ACTION** : `A` (dossier `Work`) ouverte + dirty → sidebar → supprimer le dossier `Work` → Save -- **ATTENDU** : le select de l'éditeur passe à `All` ; après Save l'entrée est dans `All`, le dossier supprimé **ne réapparaît pas**. +- **ATTENDU** : le select de l'éditeur passe à `All` ; après Save l'entrée est dans `All`, le dossier supprimé **ne réapparaît pas**.✅ ### A8 · tags édités des deux côtés - **ACTION** : `A` ouverte, ajouter le chip `mine` dans l'éditeur (ne pas sauver) → batch *Add tag* `shared` sur `A` → Save -- **ATTENDU** : `old, mine, shared` — aucun des trois perdu. +- **ATTENDU** : `old, mine, shared` — aucun des trois perdu.✅ ### A9 · favori / épingle pendant l'édition (non-régression) - **ACTION** : `A` ouverte + dirty → cliquer ★ et 📌 sur la ligne `A` → Save diff --git a/js/app.js b/js/app.js index 9a2a69a..0680c57 100644 --- a/js/app.js +++ b/js/app.js @@ -8003,6 +8003,14 @@ async function init() { closeGen(); return; } + // Any other open modal — the folder modal is built dynamically and + // has no id in this list, so without this Esc fell through to the + // slideover close below and shut the editor behind it. Closing a + // stray .modal is just .remove() (how its backdrop click closes). + // The static modals above never reach here (their id checks return + // first), so this only ever catches the dynamic ones. + const strayModal = document.querySelector('.modal:not(.is-hidden)'); + if (strayModal) { strayModal.remove(); return; } if ($('#slideover').classList.contains('is-open')) { requestCloseSlideOver(); return;