chore: prevent feedback form from closing when clicking on a non-submission link (#16769)

chore: prevent feedback form from closing when clicking on a non-submission link
Signed-off-by: Sonia Sandler <ssandler@redhat.com>
(cherry picked from commit 0774054286)

# Conflicts:
#	packages/renderer/src/lib/feedback/SendFeedback.svelte
This commit is contained in:
Sonia Sandler 2026-04-01 16:56:57 -04:00 committed by Mergify
parent f4f2741d98
commit 70e4996076
5 changed files with 29 additions and 4 deletions

View file

@ -56,7 +56,11 @@ function handleUpdate(e: boolean): void {
{#if displayModal}
<div class='z-40'>
<<<<<<< HEAD
<Modal name="Share your feedback" on:close={(): Promise<void> => hideModal()}>
=======
<Modal name="Share your feedback" onclose={(): Promise<void> => hideModal()} ignoreFocusOut={true}>
>>>>>>> 077405428 (chore: prevent feedback form from closing when clicking on a non-submission link (#16769))
<div class="flex items-center justify-between pl-4 pr-3 py-3 space-x-2 text-[var(--pd-modal-header-text)]">
<h1 class="grow text-lg font-bold capitalize">Share your feedback</h1>
<CloseButton onclick={(): Promise<void> => hideModal()} />

View file

@ -158,7 +158,8 @@ test('Expect message for happy-smiley to use like', async () => {
});
test('Expect GitHub dialog visible when very-happy-smiley selected', async () => {
render(DirectFeedback, { category: 'developers', contentChange: vi.fn(), onCloseForm: vi.fn() });
const onCloseFormMock = vi.fn();
render(DirectFeedback, { category: 'developers', contentChange: vi.fn(), onCloseForm: onCloseFormMock });
// click on a smiley
const smiley = await screen.findByRole('button', { name: 'very-happy-smiley' });
@ -174,6 +175,8 @@ test('Expect GitHub dialog visible when very-happy-smiley selected', async () =>
expect(window.telemetryTrack).toHaveBeenCalledWith('feedback.openGitHub');
expect(window.openExternal).toHaveBeenCalledWith('https://github.com/containers/podman-desktop');
});
expect(onCloseFormMock).not.toHaveBeenCalled();
});
test('Expect category to be sent', async () => {

View file

@ -70,7 +70,6 @@ async function sendFeedback(): Promise<void> {
}
async function openGitHub(): Promise<void> {
onCloseForm(false);
await window.telemetryTrack('feedback.openGitHub');
await window.openExternal('https://github.com/containers/podman-desktop');
}

View file

@ -182,9 +182,10 @@ test.each<GitHubFeedbackCategory>([
'bug',
'feature',
])('Expect %s to be included in previewOnGitHub call', async category => {
const onCloseFormMock = vi.fn();
const { preview, title, description } = renderGitHubIssueFeedback({
category: category,
onCloseForm: vi.fn(),
onCloseForm: onCloseFormMock,
contentChange: vi.fn(),
});
@ -205,6 +206,8 @@ test.each<GitHubFeedbackCategory>([
category: category,
}),
);
expect(onCloseFormMock).toHaveBeenCalled();
});
describe('includeSystemInfo', () => {
@ -366,3 +369,20 @@ test('Expect close confirmation to be true if cancel clicked', async () => {
expect(closeMock).toHaveBeenCalledOnce();
expect(closeMock).toHaveBeenCalledWith(true);
});
test('Expect opening existing GitHub issues to not close the feedback window', async () => {
const onCloseFormMock = vi.fn();
const { getByLabelText } = renderGitHubIssueFeedback({
category: 'bug',
onCloseForm: onCloseFormMock,
contentChange: vi.fn(),
});
const gitHubLink = getByLabelText('GitHub issues');
expect(gitHubLink).toBeInTheDocument();
await userEvent.click(gitHubLink);
expect(window.openExternal).toHaveBeenCalled();
expect(onCloseFormMock).not.toHaveBeenCalled();
});

View file

@ -48,7 +48,6 @@ onMount(async () => {
});
async function openGitHubIssues(): Promise<void> {
onCloseForm(false);
await window.openExternal(existingIssuesLink);
}