FN-5879: restore desktop tab scrolling in task detail modal
Keep the task detail tab strip scrollable on desktop without shrinking tab labels. - move horizontal tab-strip scrolling and momentum styles into the base .detail-tabs rule - keep .detail-tab items from shrinking at all viewport sizes so overflow remains scrollable - add a CSS contract test for the base tab strip behavior and extend task detail API mocks with refreshPrStatus Files changed: packages/dashboard/app/components/TaskDetailModal.css | 7 ++++--- .../dashboard/app/components/__tests__/TaskDetailModal.css.test.ts | 7 +++++++ .../app/components/__tests__/TaskDetailModal.test-helpers.ts | 1 + 3 files changed, 12 insertions(+), 3 deletions(-) Fusion-Task-Id: FN-5879 Fusion-Task-Lineage: b990a88e-7b1d-44d9-b222-986a28ae143d
This commit is contained in:
@@ -1625,11 +1625,15 @@
|
||||
.detail-tabs {
|
||||
display: flex;
|
||||
gap: 0;
|
||||
overflow-x: auto;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
scrollbar-width: thin;
|
||||
border-bottom: 1px solid var(--border);
|
||||
margin-bottom: var(--space-md);
|
||||
}
|
||||
|
||||
.detail-tab {
|
||||
flex-shrink: 0;
|
||||
padding: var(--space-sm) var(--space-lg);
|
||||
background: none;
|
||||
border: none;
|
||||
@@ -1788,8 +1792,6 @@
|
||||
}
|
||||
|
||||
.detail-tabs {
|
||||
overflow-x: auto;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
scrollbar-width: none;
|
||||
}
|
||||
|
||||
@@ -1800,7 +1802,6 @@
|
||||
.detail-tab {
|
||||
padding: var(--space-sm) var(--space-md);
|
||||
font-size: 13px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
/* Task detail modal: prevent header clipping + full-screen refine flow */
|
||||
|
||||
@@ -7,4 +7,11 @@ describe("TaskDetailModal CSS contract", () => {
|
||||
|
||||
expect(css).toMatch(/\.detail-source-header\s*\{[^}]*align-items\s*:\s*flex-start\s*;/);
|
||||
});
|
||||
|
||||
it("FN-5879 keeps the base detail tab strip horizontally scrollable without shrinking tabs", async () => {
|
||||
const css = await loadAllAppCssBaseOnly();
|
||||
|
||||
expect(css).toMatch(/\.detail-tabs\s*\{[^}]*overflow-x\s*:\s*auto\s*;/);
|
||||
expect(css).toMatch(/\.detail-tab\s*\{[^}]*flex-shrink\s*:\s*0\s*;/);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -36,6 +36,7 @@ vi.mock("../../api", async (importOriginal) => {
|
||||
pauseTask: vi.fn().mockResolvedValue({}),
|
||||
unpauseTask: vi.fn().mockResolvedValue({}),
|
||||
recoverBranchBinding: vi.fn(),
|
||||
refreshPrStatus: vi.fn(),
|
||||
fetchWorkflowResults: vi.fn().mockResolvedValue([]),
|
||||
fetchTaskReview: vi.fn().mockResolvedValue({ reviewState: { source: "reviewer-agent", items: [], addressing: [] }, automationStatus: null, emptyMessage: "No reviewer feedback yet — this task has not produced reviewer-agent feedback in direct mode." }),
|
||||
refreshTaskReview: vi.fn().mockResolvedValue({ reviewState: undefined, automationStatus: null }),
|
||||
|
||||
Reference in New Issue
Block a user