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 <noreply@anthropic.com>
This commit is contained in:
@@ -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 += '<option value="' + esc(names[i]) + '">' + esc(names[i]) + '</option>';
|
||||
// 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 += '<option value="' + NEW_FOLDER + '">+ new folder</option>';
|
||||
return html + '</select></div></div>';
|
||||
}
|
||||
|
||||
@@ -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'))
|
||||
|
||||
Reference in New Issue
Block a user