From 5dff6aae0b66ed0c6604f30b0a0c896efa9fa1f2 Mon Sep 17 00:00:00 2001 From: Lambda Date: Thu, 16 Jul 2026 03:45:49 +0800 Subject: [PATCH] fix(issues): anchor full-width table rows Co-authored-by: multica-agent --- .../components/table-quick-create.test.tsx | 31 +++++++- .../views/issues/components/table-view.tsx | 72 ++++++++++++------- 2 files changed, 76 insertions(+), 27 deletions(-) diff --git a/packages/views/issues/components/table-quick-create.test.tsx b/packages/views/issues/components/table-quick-create.test.tsx index 9f9f44eab6..7eaa19ad51 100644 --- a/packages/views/issues/components/table-quick-create.test.tsx +++ b/packages/views/issues/components/table-quick-create.test.tsx @@ -3,7 +3,7 @@ import { beforeEach, describe, expect, it, vi } from "vitest"; import { screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { renderWithI18n } from "../../test/i18n"; -import { QuickCreateFooter } from "./table-view"; +import { IssueTableGroupRow, QuickCreateFooter } from "./table-view"; const { createIssue } = vi.hoisted(() => ({ createIssue: vi.fn(), @@ -38,6 +38,7 @@ describe("QuickCreateFooter", () => { const input = screen.getByPlaceholderText("Add an issue…"); const submit = screen.getByRole("button", { name: "Add" }); + expect(input.closest("form")).toHaveClass("sticky", "left-1.5"); expect(submit).toBeDisabled(); await user.type(input, " Clickable quick create "); @@ -56,4 +57,32 @@ describe("QuickCreateFooter", () => { }), ); }); + + it("keeps full-width row controls anchored during horizontal scrolling", async () => { + const user = userEvent.setup(); + const onToggle = vi.fn(); + renderWithI18n( + + + + +
, + ); + + const group = screen.getByRole("button", { name: /Backlog\s*13/ }); + expect(group).toHaveClass("sticky", "left-4", "w-fit"); + + await user.click(group); + expect(onToggle).toHaveBeenCalledOnce(); + }); }); diff --git a/packages/views/issues/components/table-view.tsx b/packages/views/issues/components/table-view.tsx index 5ea67dcfda..20eb920275 100644 --- a/packages/views/issues/components/table-view.tsx +++ b/packages/views/issues/components/table-view.tsx @@ -572,7 +572,7 @@ export function QuickCreateFooter({
{ event.preventDefault(); submit(); @@ -607,6 +607,42 @@ export function QuickCreateFooter({ ); } +type IssueTableGroupRowProps = { + group: Extract; + colSpan: number; + onToggle: () => void; +}; + +export function IssueTableGroupRow({ + group, + colSpan, + onToggle, +}: IssueTableGroupRowProps) { + return ( + + + + + + ); +} + function propertyDisplayValue( property: IssueProperty, value: IssuePropertyValue | undefined, @@ -1115,7 +1151,10 @@ export function TableView({ return ( {key === "title" @@ -1286,30 +1325,11 @@ export function TableView({ renderRow={(row) => { if (row.original.kind !== "group") return null; return ( - toggleTableGroupCollapsed(row.original.key)} - > - - - - + toggleTableGroupCollapsed(row.original.key)} + /> ); }} className="min-h-0 flex-1"