Paint a full-screen composer above the others

A maximised composer goes position: fixed but stays a child of the dock,
and had no z-index of its own. The dock is a stacking context, so the
positioned parts of any composer later in the DOM (its recipients row, its
editor) painted straight over the full-screen one.

Give the maximised composer its own layer, and hide the other composers
while one is full screen: they cannot be reached anyway, and the 24px
inset would otherwise show their footers along the bottom edge. They stay
mounted, so nothing being written in them is lost.

Fixes #330
This commit is contained in:
2026-09-12 12:20:58 -07:00
parent c3d2dc2418
commit 5855da0ba9
3 changed files with 86 additions and 2 deletions
+3 -1
View File
@@ -9,8 +9,10 @@ export function ComposerDock() {
if (!drafts.length) return null;
// On mobile only the active composer is shown (full screen); others are minimized bars.
const visible = isMobile ? drafts.filter((d) => d.key === activeKey || d.minimized) : drafts;
// On desktop a full-screen composer stands alone: the rest are hidden until it is restored.
const hasMaximized = !isMobile && drafts.some((d) => d.maximized && !d.minimized);
return (
<div className="composer-dock">
<div className={`composer-dock${hasMaximized ? " has-maximized" : ""}`}>
{visible.map((d) => (
<Composer key={d.key} draft={isMobile && d.key !== activeKey ? { ...d, minimized: true } : d} />
))}