mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-11 17:26:57 +02:00
Flèche d'envoi : la centrer pour de bon
La flèche était décalée de 8 px vers la gauche dans son pavé — mesuré, pas supposé : centre du bouton 1339, centre du dessin 1331. La cause n'était pas dans la feuille de style mais dans le JS. syncSendBtn montrait et cachait les deux boutons avec `style.display = 'inline-block'` ; ce style INLINE l'emportait sur le `display:flex` de la règle commune. Le bouton gardait donc sa boîte de 34 px, mais son icône de 18 px se collait au bord gauche, `justify-content` n'ayant plus rien à centrer. Invisible tant que l'icône était un glyphe de texte (qui remplit sa ligne), flagrant depuis qu'elle est un SVG de taille fixe. L'état « génération en cours » passe désormais par un attribut sur <html> (data-busy) et c'est la feuille qui décide lequel des deux boutons s'affiche — comme pour le thème, la barre latérale et le panneau Fichiers. Le style inline `display:none` du bouton d'arrêt disparaît aussi du gabarit. Vérifié au pixel dans les deux états : écart nul entre le centre du bouton et celui du dessin, pour les trois commandes de la barre (dépôt, fichiers, envoi) comme pour le bouton d'arrêt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LPyFxVHNAN9u5pVzSYMwjd
This commit is contained in:
4 files changed
+26
-6
No files matched your search
@@ -1651,6 +1651,12 @@ button:active:not(:disabled){transform:translateY(1px)}
|
||||
display:inline-flex;align-items:center;justify-content:center;align-self:center;
|
||||
border:0;border-radius:10px;background:transparent;color:var(--dim);
|
||||
transition:background .15s ease,color .15s ease,transform .08s ease}
|
||||
/* Envoyer / arrêter : un seul des deux à la fois, décidé par data-busy (posé par
|
||||
syncSendBtn). C'est la feuille qui garde la main sur `display` — un style
|
||||
inline y substituait `inline-block`, et le centrage flex tombait avec lui. */
|
||||
#stop{display:none}
|
||||
html[data-busy="1"] #send{display:none}
|
||||
html[data-busy="1"] #stop{display:inline-flex}
|
||||
#inputbar #attach svg,#inputbar #files-btn svg,#send svg,#stop svg{display:block;width:18px;height:18px}
|
||||
#inputbar #attach:hover,#inputbar #files-btn:hover{background:var(--row-bg-on);color:var(--text)}
|
||||
html[data-files="1"] #files-btn{color:var(--accent)}
|
||||
@@ -2218,7 +2224,7 @@ html[data-files="1"] #files-btn{color:var(--accent)}
|
||||
<button id="send" onclick="send()" title="Envoyer" aria-label="Envoyer">
|
||||
<svg viewBox="0 0 24 24" width="18" height="18" fill="currentColor" stroke="none" aria-hidden="true"><path d="M3.4 20.4 21 12 3.4 3.6l.02 6.53L15.5 12 3.42 13.87z"/></svg>
|
||||
</button>
|
||||
<button id="stop" onclick="stopGen()" style="display:none" title="Arrêter la génération" aria-label="Arrêter la génération">
|
||||
<button id="stop" onclick="stopGen()" title="Arrêter la génération" aria-label="Arrêter la génération">
|
||||
<svg viewBox="0 0 24 24" width="18" height="18" fill="currentColor" stroke="none" aria-hidden="true"><rect x="5" y="5" width="14" height="14" rx="3"/></svg>
|
||||
</button>
|
||||
</div>
|
||||
@@ -5461,8 +5467,12 @@ function labelTokens(el, role, n, firstTs, lastTs){
|
||||
function setBusy(on){ busy=on; if(!REPLAYING) syncSendBtn(); }
|
||||
function syncSendBtn(){
|
||||
const sb=document.getElementById('send');
|
||||
sb.style.display=busy?'none':'inline-block';
|
||||
document.getElementById('stop').style.display=busy?'inline-block':'none';
|
||||
// ⚠️ L'état passe par un ATTRIBUT, jamais par un style inline. Ces deux
|
||||
// boutons étaient montrés/cachés avec `style.display='inline-block'`, qui
|
||||
// l'emportait sur le `display:flex` de la feuille : le bouton gardait sa
|
||||
// boîte de 34 px mais son icône de 18 px se collait à gauche, décalée de 8 px.
|
||||
// C'est invisible tant que l'icône est un glyphe de texte, flagrant en SVG.
|
||||
document.documentElement.setAttribute('data-busy', busy ? '1' : '0');
|
||||
// Tant que le moteur n'a pas fini de charger le modèle, envoyer ne mène à rien :
|
||||
// on bloque le bouton et l'Entrée, et on le DIT sous le champ. `STATUS_SEEN`
|
||||
// évite de verrouiller le chat quand /api/status n'a pas encore répondu (ou ne
|
||||
|
||||
Reference in new issue
Block a user