From cc515402833348424b0f954a91a7c18d6ac83fb0 Mon Sep 17 00:00:00 2001 From: r-zakarya <82443831+r-zakarya@users.noreply.github.com> Date: Fri, 28 Aug 2026 17:47:59 +0100 Subject: [PATCH] fix(android): le clavier se replie une fois l'appui passe Retenir le focus au mousedown fait atteindre la cible du premier coup, mais laissait le clavier ouvert : apres "Open vault" il restait dresse par-dessus la liste. Les deux moities vont ensemble - on retient le focus le temps de l'appui, on le lache des que l'action est partie. Sauf si le bouton agit sur le champ lui-meme : un oeil qui devoile, une fleche qui deroule. Ceux-la vivent dans la meme rangee que le champ, et replier le clavier apres eux obligerait a le rouvrir pour continuer. Co-Authored-By: Claude Opus 5 --- android-client/web/app.html | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/android-client/web/app.html b/android-client/web/app.html index 4131559..ef6398e 100644 --- a/android-client/web/app.html +++ b/android-client/web/app.html @@ -790,6 +790,26 @@ document.addEventListener('mousedown', function (ev) { if (a && (a.tagName === 'INPUT' || a.tagName === 'TEXTAREA')) ev.preventDefault(); }, true); +// ET ON LE REND UNE FOIS LE CLIC PASSE. +// +// Garder le focus au mousedown fait atteindre la cible du premier coup, mais +// laisse le clavier ouvert : apres "Open vault" il restait dresse par-dessus la +// liste. Les deux moities vont ensemble - on retient le focus le temps de +// l'appui, on le lache des que l'action est partie. +// +// SAUF SI LE BOUTON AGIT SUR LE CHAMP LUI-MEME : un oeil qui devoile, une +// fleche qui deroule. Ceux-la vivent dans la meme rangee que le champ, et +// replier le clavier apres eux obligerait a le rouvrir pour continuer a taper. +document.addEventListener('click', function (ev) { + var b = ev.target.closest('button'); + if (!b) return; + var a = document.activeElement; + if (!a || (a.tagName !== 'INPUT' && a.tagName !== 'TEXTAREA')) return; + var row = a.closest('.in-wrap, .field'); + if (row && row.contains(b)) return; + a.blur(); +}); + function esc(s) { return String(s == null ? '' : s).replace(/[&<>"]/g, function (c) { return { '&': '&', '<': '<', '>': '>', '"': '"' }[c];