fix(views): clear the selection when entering a view without checkboxes
The batch bar survived into vault health, the authenticator grid and the audit log, none of which render checkboxes - it kept offering Delete, Move to folder and Add tag on entries the user could no longer see selected.
This commit is contained in:
@@ -356,6 +356,8 @@ l'éditeur slideover : créer + éditer une entrée, ajouter/retirer des tags,
|
||||
### G2 · *Fix* sur une entrée supprimée entre-temps — **sans objet**
|
||||
- **ACTION prévue** : ouvrir *Vault health* → mettre à la corbeille une entrée listée → revenir sur health sans *Recompute* → **Fix** sur cette entrée.
|
||||
- **Pourquoi c'est irréalisable** : G3 a rendu ce cas impossible à mettre en scène — le cache est invalidé à **chaque** mutation, donc revenir sur le tableau de bord recalcule toujours et l'entrée supprimée n'y figure plus. Le garde reste en place dans le code (`openEntryForFix` sort si `openSlideOver` renvoie `false`), il n'est simplement plus atteignable par l'interface.
|
||||
- **Tentative la plus proche, vérifiée** : cocher une entrée dans la liste (la barre de sélection apparaît) → passer en *Vault health* → *Delete* depuis cette barre. Le tableau de bord se **recalcule tout seul** et l'entrée disparaît de la liste : toujours pas de liste périmée.
|
||||
- **Défaut trouvé au passage** : la barre de sélection **survivait** au passage en vue santé (comme en authenticator et journal d'audit), qui n'affichent aucune case à cocher. Elle proposait *Delete* / *Move to folder* / *Add tag* sur des entrées qu'on ne voyait plus sélectionnées. La sélection est désormais vidée à l'entrée dans ces trois vues.
|
||||
|
||||
### G5 · activer / désactiver HIBP depuis la vue santé ✅
|
||||
- **ACTION** : dans *Vault health*, activer la vérification HIBP → attendre la fin du scan **sans quitter la vue**.
|
||||
|
||||
@@ -2288,12 +2288,21 @@ async function addTagToEntry(id, tag) {
|
||||
} catch (err) { toast(err.message, 'error'); }
|
||||
}
|
||||
|
||||
// Views that render no checkboxes: audit log, authenticator grid, vault health.
|
||||
const VIEWS_WITHOUT_SELECTION = ['audit', 'authenticator', 'health'];
|
||||
|
||||
function renderGrid() {
|
||||
$('#contentTitle').textContent = viewTitle();
|
||||
// Re-apply the keyboard cursor after the grid re-renders. Defer one
|
||||
// tick so the new cards are in the DOM before we query for them.
|
||||
setTimeout(applyCursorHighlight, 0);
|
||||
|
||||
// A selection made in the list survived into these views, where nothing
|
||||
// shows what is selected — yet the batch bar still offered Delete, Move to
|
||||
// folder and Add tag on rows the user could no longer see.
|
||||
if (state.checked.size && VIEWS_WITHOUT_SELECTION.indexOf(state.view) !== -1)
|
||||
state.checked.clear();
|
||||
|
||||
// Audit log: read-only chronological feed, custom render.
|
||||
if (state.view === 'audit') {
|
||||
if (authTickTimer) { clearInterval(authTickTimer); authTickTimer = null; }
|
||||
|
||||
Reference in New Issue
Block a user