fix(apk): URL du depot sur plusieurs lignes, la fin n'etait pas atteignable
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+13
-18
@@ -296,7 +296,13 @@
|
|||||||
border: 0; border-radius: var(--radius-s);
|
border: 0; border-radius: var(--radius-s);
|
||||||
background: rgba(255,255,255,.10); color: var(--text);
|
background: rgba(255,255,255,.10); color: var(--text);
|
||||||
font: inherit; outline: none;
|
font: inherit; outline: none;
|
||||||
|
/* Le body interdit la selection (user-select: none) et les champs en
|
||||||
|
HERITAIENT : le curseur ne suivait pas le doigt et le texte ne defilait
|
||||||
|
jamais - la fin d'une URL longue restait hors d'atteinte. */
|
||||||
|
-webkit-user-select: text; user-select: text;
|
||||||
}
|
}
|
||||||
|
.field-in.multi { height: auto; padding: 12px 44px 12px 14px; resize: none;
|
||||||
|
line-height: 1.35; word-break: break-all; display: block; }
|
||||||
.field-in::placeholder { color: var(--muted); }
|
.field-in::placeholder { color: var(--muted); }
|
||||||
/* La fleche dit si le panneau est deplie, et de quel bouton il descend. */
|
/* La fleche dit si le panneau est deplie, et de quel bouton il descend. */
|
||||||
.chev { display: inline-block; margin-left: 6px; font-size: 11px;
|
.chev { display: inline-block; margin-left: 6px; font-size: 11px;
|
||||||
@@ -563,9 +569,13 @@
|
|||||||
<div class="scroll">
|
<div class="scroll">
|
||||||
<h2>Repository</h2>
|
<h2>Repository</h2>
|
||||||
<div class="in-wrap">
|
<div class="in-wrap">
|
||||||
<input class="field-in" id="sUrl" placeholder="repository URL, e.g. https://git.example.com/owner/repo"
|
<!-- ZONE DE TEXTE ET NON input : l'URL passe a la ligne et se lit en
|
||||||
|
entier. Un input d'une ligne ne defilait pas sous le doigt dans la
|
||||||
|
WebView de l'app, et la fin d'une URL d'API restait inatteignable. -->
|
||||||
|
<textarea class="field-in multi" id="sUrl" rows="3"
|
||||||
|
placeholder="repository URL, e.g. https://git.example.com/owner/repo"
|
||||||
autocomplete="off" autocorrect="off" autocapitalize="none"
|
autocomplete="off" autocorrect="off" autocapitalize="none"
|
||||||
spellcheck="false" inputmode="url">
|
spellcheck="false" inputmode="url"></textarea>
|
||||||
<div class="in-x" data-clear="sUrl">×</div>
|
<div class="in-x" data-clear="sUrl">×</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="in-wrap">
|
<div class="in-wrap">
|
||||||
@@ -1629,23 +1639,8 @@ function openSettings() {
|
|||||||
// https://git.example.com/OWNER/REPO (ou .../src/branch/main/FICHIER) devient
|
// https://git.example.com/OWNER/REPO (ou .../src/branch/main/FICHIER) devient
|
||||||
// l'URL de l'API des contenus. Une URL d'API ou d'endpoint PHP passe telle quelle,
|
// l'URL de l'API des contenus. Une URL d'API ou d'endpoint PHP passe telle quelle,
|
||||||
// et une forme non reconnue aussi - Sync dira alors ce qui ne va pas.
|
// et une forme non reconnue aussi - Sync dira alors ce qui ne va pas.
|
||||||
// ENTRER DANS UN CHAMP MET LE CURSEUR A LA FIN. Sous Android, toucher un champ
|
|
||||||
// plus long que sa largeur pose le curseur sur le caractere touche, et la fin
|
|
||||||
// d'une URL ou d'un jeton reste hors d'atteinte. Differe : le toucher pose son
|
|
||||||
// propre curseur APRES l'evenement focus. Un second toucher place le curseur
|
|
||||||
// ou l'on veut.
|
|
||||||
document.addEventListener('focusin', function (ev) {
|
|
||||||
var el = ev.target;
|
|
||||||
if (!el.classList || !el.classList.contains('field-in')) return;
|
|
||||||
setTimeout(function () {
|
|
||||||
var n = el.value.length;
|
|
||||||
try { el.setSelectionRange(n, n); } catch (e) { return; }
|
|
||||||
el.scrollLeft = el.scrollWidth;
|
|
||||||
}, 60);
|
|
||||||
});
|
|
||||||
|
|
||||||
function normalizeRepoUrl(u) {
|
function normalizeRepoUrl(u) {
|
||||||
u = u.trim();
|
u = u.replace(/\s+/g, '');
|
||||||
if (!u || /\/api\/v1\/repos\//i.test(u) || /\.php(\?|$)/i.test(u)) return u;
|
if (!u || /\/api\/v1\/repos\//i.test(u) || /\.php(\?|$)/i.test(u)) return u;
|
||||||
var m = u.match(/^(https?:\/\/[^\/]+)\/([^\/]+)\/([^\/]+?)(?:\.git)?(?:\/src\/branch\/[^\/]+\/(.+?))?\/?$/i);
|
var m = u.match(/^(https?:\/\/[^\/]+)\/([^\/]+)\/([^\/]+?)(?:\.git)?(?:\/src\/branch\/[^\/]+\/(.+?))?\/?$/i);
|
||||||
if (!m) return u;
|
if (!m) return u;
|
||||||
|
|||||||
Reference in New Issue
Block a user