Keep the patch description open while editing

The description collapses past 300px behind a show more toggle, which
also applied to the editor that replaces it. Half of what was being
written could be cut off, with a control offering to hide more of it.

Editing state moves from the revision component to a bindable prop, so
the patch view that owns the collapse can see it.
This commit is contained in:
Brandon Oxendine
2026-09-03 18:40:26 +02:00
committed by Rūdolfs Ošiņš
parent 25b7ba86c4
commit f4ab2544ae
2 changed files with 11 additions and 5 deletions
+4 -2
View File
@@ -103,6 +103,9 @@
// revision list can be marked, not just the selected one.
draftRevisionIds?: string[];
showingRevisionDiff?: boolean;
// Whether the description is being edited, so the view around it can keep
// it open rather than collapsing what is being typed.
editingDescription?: boolean;
// Review ids (and `STANDALONE_COMMENTS`) whose code comments are
// hidden from the diff.
hiddenCommentSources?: string[];
@@ -132,6 +135,7 @@
draftReviewId,
draftRevisionIds = [],
showingRevisionDiff = $bindable(true),
editingDescription = $bindable(false),
hiddenCommentSources = [],
filesExpanded = $bindable(true),
onViewChanges,
@@ -1017,8 +1021,6 @@
}) as Thread[],
);
let editingDescription = $state(false);
async function editRevision(
description: string,
embeds: Embed[],
+7 -3
View File
@@ -282,8 +282,11 @@
let descriptionExpanded = $state(false);
let descriptionEl = $state<HTMLElement>();
let descriptionOverflows = $state(false);
let descriptionEditing = $state(false);
// Editing keeps the description open: collapsing it would hide part of what
// is being written, and the height is the editor's rather than the text's.
const descriptionCollapsed = $derived(
descriptionOverflows && !descriptionExpanded,
descriptionOverflows && !descriptionExpanded && !descriptionEditing,
);
$effect(() => {
const el = descriptionEl;
@@ -1578,9 +1581,10 @@
{loadPatch}
revision={revisions[0]}
{config}
view="description" />
view="description"
bind:editingDescription={descriptionEditing} />
</div>
{#if descriptionOverflows}
{#if descriptionOverflows && !descriptionEditing}
<div class="patch-description-toggle">
<button
type="button"