From 4fda63ec3089f740b20b3fbdcaefb86fa849b09c Mon Sep 17 00:00:00 2001 From: r-zakarya <82443831+r-zakarya@users.noreply.github.com> Date: Fri, 28 Aug 2026 22:54:46 +0100 Subject: [PATCH] feat(android): creer une entree et son dossier d'un seul geste "+ new folder" n'existait qu'a l'edition. Creer une entree ET son dossier demandait donc trois gestes - creer, rouvrir, changer le dossier - pour ce que le meme controle sait faire ailleurs en un seul. L'asymetrie ne se voyait qu'en s'en servant. Deux cas que le chemin de l'edition ne posait pas : un champ laisse vide et le marqueur interne du "+ new folder" retombent tous deux sur All - sans quoi valider sans rien taper aurait envoye au coffre un nom de dossier fait d'un caractere de controle. Co-Authored-By: Claude Opus 5 --- android-client/web/app.html | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/android-client/web/app.html b/android-client/web/app.html index f3384b0..3f551a6 100644 --- a/android-client/web/app.html +++ b/android-client/web/app.html @@ -1144,6 +1144,22 @@ document.getElementById('fields').addEventListener('change', function (ev) { input.focus(); }); +// Le meme echange sur le formulaire de creation. Delegue sur #fields comme +// ci-dessus : les deux controles y vivent, seul leur identifiant differe. +document.getElementById('fields').addEventListener('change', function (ev) { + if (ev.target.id !== 'nFolder' || ev.target.value !== NEW_FOLDER) return; + var line = ev.target.parentNode; + var input = document.createElement('input'); + input.className = 'field-in'; + input.id = 'nFolder'; + input.setAttribute('placeholder', 'folder name'); + input.setAttribute('autocomplete', 'off'); + input.setAttribute('autocapitalize', 'none'); + input.style.cssText = 'margin:0;flex:1;min-width:0;width:auto'; + line.replaceChild(input, ev.target); + input.focus(); +}); + // EDITEUR EN PLACE, pas window.prompt : une invite JavaScript demande au // moteur un WebChromeClient que FMX ne fournit pas, et prompt() rend alors // null sans un mot - le bouton semblerait ne rien faire. @@ -1289,6 +1305,11 @@ function newFolderField() { + ' style="margin:0;flex:1;min-width:0;width:auto">'; for (i = 0; i < names.length; i++) html += ''; + // LA MEME OPTION QU'A L'EDITION, et il a fallu la reclamer pour s'en rendre + // compte : creer une entree ET son dossier d'un coup etait impossible. Il + // fallait creer l'entree, la rouvrir, changer son dossier - trois gestes pour + // ce que le meme controle sait faire ailleurs en un seul. + html += ''; return html + ''; } @@ -1382,7 +1403,11 @@ document.getElementById('fields').addEventListener('click', function (ev) { var v = function (id) { return document.getElementById(id).value.trim(); }; ev.target.disabled = true; var fold = document.getElementById('nFolder'); - send('newentry?d=' + encodeURIComponent(fold ? fold.value : 'All') + // Le champ libre peut rester vide, et le marqueur du "+ new folder" ne doit + // jamais partir tel quel : les deux retombent sur All. + var foldName = fold ? fold.value.trim() : ''; + if (foldName === '' || foldName === NEW_FOLDER) foldName = 'All'; + send('newentry?d=' + encodeURIComponent(foldName) + '&t=' + encodeURIComponent(v('nTitle')) + '&s=' + encodeURIComponent(v('nSite')) + '&u=' + encodeURIComponent(v('nUser'))