Skip to content
This repository was archived by the owner on Sep 22, 2025. It is now read-only.

Commit 169e018

Browse files
Refocusing on last clicked "Suggest Issue" button after closing modal
1 parent faaa6b4 commit 169e018

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

src/routes/protected/reports/message-details.tsx

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { QueryClient, useQuery } from '@tanstack/react-query';
22
import { ColumnDef } from '@tanstack/react-table';
3-
import { useState } from 'react';
3+
import { useEffect, useState } from 'react';
44
import { Link, LoaderFunctionArgs, useLoaderData } from 'react-router-dom';
55

66
import Timeline from '~/components/charts/timeline';
@@ -9,7 +9,6 @@ import { DataTable } from '~/components/tables';
99
import { messageDetailsQuery } from '~/queries';
1010
import { assertNonNull } from '~/utils/safety';
1111
import { post } from 'aws-amplify/api';
12-
import { InfoDialog } from '~/components/dialogs';
1312
import { Modal } from '~/components/modals';
1413

1514
interface Node {
@@ -24,6 +23,7 @@ interface Node {
2423
* @param queryClient - The Query Client instance.
2524
* @returns Loader function to be used with React Router.
2625
*/
26+
let suggestIndex = 0;
2727
export const messageDetailsLoader =
2828
(queryClient: QueryClient) =>
2929
async ({ params }: LoaderFunctionArgs) => {
@@ -60,7 +60,8 @@ const MessageDetails = () => {
6060

6161
const [suggestIssueResponse, setSuggestIssueResponse] = useState(null);
6262
const [open, setOpen] = useState(false);
63-
const suggestIssue = async ({ codeSnippet, pageUrl }) => {
63+
const suggestIssue = async ({ codeSnippet, pageUrl, index }) => {
64+
suggestIndex = index;
6465
setSuggestIssueResponse(null);
6566
setOpen(true);
6667
const response = await (await post({
@@ -81,6 +82,12 @@ const MessageDetails = () => {
8182
// if (!window.open(response?.url)) { window.location.href = response?.url }
8283
}
8384

85+
useEffect(() => {
86+
if (!open) {
87+
document.querySelector(`#suggest-${suggestIndex}`)?.focus();
88+
}
89+
}, [open])
90+
8491
const NodeColumns: ColumnDef<Node>[] = [
8592
{
8693
accessorKey: 'codeSnippet',
@@ -105,8 +112,9 @@ const MessageDetails = () => {
105112
header: 'Action',
106113
cell: ({ row }) => (
107114
<button
115+
id={`suggest-${row.index}`}
108116
className={`inline-flex h-9 items-center justify-end gap-2 place-self-end whitespace-nowrap rounded-md px-2 py-3 text-white shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[#0d6efd] focus-visible:ring-offset-2 max-sm:w-fit max-sm:px-1 ml-2 bg-[#0d6efd] hover:opacity-50 text-xs`}
109-
onClick={() => suggestIssue({ codeSnippet: row.getValue('codeSnippet'), pageUrl: row.getValue('pageUrl') })}
117+
onClick={() => suggestIssue({ codeSnippet: row.getValue('codeSnippet'), pageUrl: row.getValue('pageUrl'), index: row.index })}
110118
>
111119
Suggest Issue
112120
<svg

0 commit comments

Comments
 (0)