Beim Antworten war das Schreibfeld einen Buchstaben breit
Filipes Bildschirmfoto: Die Antwortleiste nimmt die ganze Breite, und daneben steht ein Schreibfeld, in dem der Text senkrecht laeuft -- "defi / niti / v / hah / a". DIE ABSICHT STAND DA, DIE REGEL NICHT. `.chat__eingabe` ist eine Reihe OHNE Umbruch, und die Antwortleiste ist darin ein gleichberechtigtes Element -- sie nimmt ihren Platz NEBEN dem Schreibfeld. Das `margin-bottom: 8px` an der Leiste sagt seit jeher, dass sie darueber gehoert; durchgesetzt wurde es nie. Dazu stand am Schreibfeld `min-width: 0`. Das ist woertlich die Erlaubnis, auf nichts zu schrumpfen -- und genau das hat es getan. BEHOBEN MIT EINER REGEL, NICHT MIT EINER ZAHL: Die Zeile darf jetzt umbrechen, die Antwortleiste nimmt sich mit `flex-basis: 100%` immer die ganze Zeile, und das Schreibfeld hat eine Untergrenze von 8rem. Bricht es darunter, bricht lieber die Zeile um, als dass das Feld unbenutzbar wird. Gemessen an der schmalsten Breite, die das Haus kennt: 320 px: Schreibfeld 166 px, Antwortleiste 670 px (eigene Zeile) 430 px: Schreibfeld 216 px Vorher: rund 30 px. pruef-chat-optik prueft das jetzt mit -- und nicht nur die Breite des Feldes, sondern auch, dass die Leiste wirklich eine eigene Zeile nimmt. Ohne die zweite Zeile waere die erste nur zufaellig gruen, solange der zitierte Text kurz genug ist. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -591,6 +591,72 @@ melde("\n=== Man sieht, mit wem man schreibt ===");
|
||||
|
||||
await luna.ctx.close();
|
||||
await pat.ctx.close();
|
||||
/* =======================================================================
|
||||
DAS SCHREIBFELD BLEIBT BREIT GENUG -- AUCH BEIM ANTWORTEN
|
||||
=======================================================================
|
||||
|
||||
Filipes Bildschirmfoto vom 21.09.2026: Die Antwortleiste nimmt die
|
||||
ganze Breite, und daneben steht ein Schreibfeld von der Breite eines
|
||||
einzigen Buchstabens. Der Text laeuft senkrecht: "defi / niti / v /
|
||||
hah / a".
|
||||
|
||||
URSACHE: `.chat__eingabe` ist eine Reihe OHNE Umbruch, und die
|
||||
Antwortleiste ist darin ein gleichberechtigtes Element. Das
|
||||
Schreibfeld hatte `min-width: 0` -- also woertlich die Erlaubnis,
|
||||
auf nichts zu schrumpfen.
|
||||
|
||||
Das `margin-bottom` an der Leiste sagte seit jeher, dass sie
|
||||
DARUEBER gehoert. Durchgesetzt wurde es nie. Wieder ein Fall von:
|
||||
Die Absicht stand da, die Regel nicht.
|
||||
|
||||
GEMESSEN WIRD AN DER SCHMALSTEN BREITE, die das Haus kennt -- wenn
|
||||
es dort passt, passt es ueberall.
|
||||
======================================================================= */
|
||||
melde("\n=== Antworten quetscht das Schreibfeld nicht ===");
|
||||
{
|
||||
for (const breite of [320, 430]) {
|
||||
const p2 = await alsRolle("admin", "CODE-DOGI-0001", "chat.html?raum=treff", breite);
|
||||
try {
|
||||
await p2.seite.waitForTimeout(900);
|
||||
const mass = await p2.seite.evaluate(() => {
|
||||
const l = document.getElementById("antwort-leiste");
|
||||
const t = document.getElementById("text");
|
||||
if (!l || !t) return null;
|
||||
/* Die Leiste wird eingeblendet wie beim Antworten -- mit einem
|
||||
langen Text, denn genau der hat sie breit gemacht. */
|
||||
l.hidden = false;
|
||||
const von = document.getElementById("antwort-von");
|
||||
const txt = document.getElementById("antwort-text");
|
||||
if (von) von.textContent = "Diene";
|
||||
if (txt) {
|
||||
txt.textContent = "Ohaaa, da bin ich voll dabei. Das waere ein "
|
||||
+ "Unterschied wie Tag und Nacht, wirklich jedes Mal wieder.";
|
||||
}
|
||||
const r = t.getBoundingClientRect();
|
||||
const rl = l.getBoundingClientRect();
|
||||
return { feld: Math.round(r.width), leiste: Math.round(rl.width),
|
||||
fenster: window.innerWidth };
|
||||
});
|
||||
ok(!!mass, `${breite} px: Schreibfeld und Antwortleiste sind da`);
|
||||
if (mass) {
|
||||
/* 8rem = 128 px ist die Untergrenze aus der Stilvorlage. Ein
|
||||
Feld darunter ist kein Schreibfeld mehr, sondern ein Spalt. */
|
||||
ok(mass.feld >= 128,
|
||||
`${breite} px: das Schreibfeld ist ${mass.feld} px breit (mindestens 128)`);
|
||||
/* UND DIE LEISTE HAT IHRE EIGENE ZEILE. Waere sie schmaler als
|
||||
das Fenster, saesse sie wieder neben dem Feld -- dann waere
|
||||
die Zeile darueber nur zufaellig gruen, weil der Text kurz
|
||||
genug war. */
|
||||
ok(mass.leiste > mass.feld,
|
||||
`${breite} px: die Antwortleiste nimmt die ganze Zeile `
|
||||
+ `(${mass.leiste} gegen ${mass.feld} px)`);
|
||||
}
|
||||
} finally {
|
||||
await p2.ctx.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
await browser.close();
|
||||
try { rmSync(ordner, { recursive: true, force: true }); } catch { /* egal */ }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user