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 <noreply@anthropic.com>
This commit is contained in:
r-zakarya
2026-08-28 17:47:59 +01:00
parent 0ec32a7c19
commit cc51540283
+20
View File
@@ -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 { '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;' }[c];