From dda38e50aa0c08e30b95a4a78afc3ac8a90f9679 Mon Sep 17 00:00:00 2001 From: fkb032 <249513614+fkb032@users.noreply.github.com> Date: Wed, 10 Jun 2026 22:21:49 -0600 Subject: [PATCH 1/3] Fix feedback dialog focus ring clipping --- .../widget/feedback/feedback-dialog.test.tsx | 35 +++++++++++++++++++ .../widget/feedback/feedback-dialog.tsx | 8 +++-- 2 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 apps/native/src/components/widget/feedback/feedback-dialog.test.tsx diff --git a/apps/native/src/components/widget/feedback/feedback-dialog.test.tsx b/apps/native/src/components/widget/feedback/feedback-dialog.test.tsx new file mode 100644 index 000000000..074ab64ac --- /dev/null +++ b/apps/native/src/components/widget/feedback/feedback-dialog.test.tsx @@ -0,0 +1,35 @@ +import { render, screen } from "@testing-library/react"; +import { describe, expect, it, vi } from "vitest"; +import { useWidgetStore } from "@/stores/widget-store"; +import { FeedbackType } from "@/types/feedback"; +import { FeedbackDialog } from "./feedback-dialog"; + +vi.mock("@/ipc/api", () => ({ + tauriAPI: { + feedback: { + gatherMetadata: vi.fn<() => Promise>(), + submit: vi.fn<() => Promise>(), + }, + promptHistory: { + get: vi.fn<() => Promise>().mockResolvedValue([]), + }, + }, +})); + +describe("FeedbackDialog focus ring buffers", () => { + it("keeps focus-ring paint inside scrollable dialog containers", async () => { + useWidgetStore.getState().openFeedback(FeedbackType.Issue); + + render(); + + const textarea = await screen.findByLabelText("DESCRIBE WHAT HAPPENED"); + const dialogBody = textarea.closest(".overflow-y-auto"); + + expect(dialogBody).toHaveClass("pl-1", "py-1", "pr-3"); + + const shareCheckbox = screen.getByRole("checkbox", { name: "Current app state" }); + const shareOptions = shareCheckbox.closest(".overflow-y-auto"); + + expect(shareOptions).toHaveClass("pl-1", "py-1", "pr-2"); + }); +}); diff --git a/apps/native/src/components/widget/feedback/feedback-dialog.tsx b/apps/native/src/components/widget/feedback/feedback-dialog.tsx index 866718755..47089c488 100644 --- a/apps/native/src/components/widget/feedback/feedback-dialog.tsx +++ b/apps/native/src/components/widget/feedback/feedback-dialog.tsx @@ -52,6 +52,10 @@ const ISSUE_SHARE_OPTIONS: ShareOptions = { appLogs: true, }; +const FEEDBACK_DIALOG_BODY_CLASS = "space-y-6 flex-1 overflow-y-auto pl-1 py-1 pr-3"; +const FEEDBACK_SHARE_OPTIONS_CLASS = + "space-y-2 max-h-[28vh] overflow-y-auto pl-1 py-1 pr-2"; + // Visibility helper functions for share options checkboxes // Each function returns a boolean indicating whether the checkbox should be visible // Parameters: feedbackType, step, mainWindowError @@ -486,7 +490,7 @@ export function FeedbackDialog() { {dialogDescription} -
+
{isPreviewingReport ? (