diff --git a/ui/src/components/AttentionQueueRow.test.tsx b/ui/src/components/AttentionQueueRow.test.tsx index 837f7766ccb..72bcd2c0fe3 100644 --- a/ui/src/components/AttentionQueueRow.test.tsx +++ b/ui/src/components/AttentionQueueRow.test.tsx @@ -229,7 +229,15 @@ describe("AttentionQueueRow", () => { expect(decisionActions?.textContent).toContain("Reject"); const actionArea = decisionActions?.closest('[data-attention-actions="true"]'); - expect(actionArea?.getAttribute("class")).toContain("self-end"); + expect(actionArea?.getAttribute("class")).toContain("mt-auto"); + + const controls = decisionActions?.closest('[data-attention-controls="true"]'); + expect(controls?.getAttribute("class")).toContain("self-stretch"); + expect(controls?.getAttribute("class")).toContain("justify-between"); + + const rowMenu = container?.querySelector('[aria-label="Row actions"]'); + expect(rowMenu?.closest('[data-attention-menu="true"]')).toBeTruthy(); + expect(rowMenu?.closest('[data-attention-actions="true"]')).toBeNull(); const buttons = Array.from(decisionActions?.querySelectorAll("button") ?? []); expect(buttons.find((button) => button.textContent === "Approve")?.getAttribute("data-variant")).toBe( diff --git a/ui/src/components/AttentionQueueRow.tsx b/ui/src/components/AttentionQueueRow.tsx index 994e6ab500a..0df1b48d6c5 100644 --- a/ui/src/components/AttentionQueueRow.tsx +++ b/ui/src/components/AttentionQueueRow.tsx @@ -225,44 +225,9 @@ export function AttentionQueueRow({ {/* Controls: kept as siblings (not inside the clickable header) so they never toggle expand and stay valid interactive targets. */} -
- {expandable && !expanded && verbs.length > 0 && ( -
- {verbs.map((verb) => ( - - ))} -
- )} - -
- {!inline && href && ( - - )} - - {isHidden ? ( - onRestore && ( - - ) - ) : ( +
+
+ {!isHidden && (
+ +
+ {expandable && !expanded && verbs.length > 0 && ( +
+ {verbs.map((verb) => ( + + ))} +
+ )} + +
+ {!inline && href && ( + + )} + + {isHidden && onRestore && ( + + )} +
+