11import { QueryClient , useQuery } from '@tanstack/react-query' ;
22import { ColumnDef } from '@tanstack/react-table' ;
3- import { useState } from 'react' ;
3+ import { useEffect , useState } from 'react' ;
44import { Link , LoaderFunctionArgs , useLoaderData } from 'react-router-dom' ;
55
66import Timeline from '~/components/charts/timeline' ;
@@ -9,7 +9,6 @@ import { DataTable } from '~/components/tables';
99import { messageDetailsQuery } from '~/queries' ;
1010import { assertNonNull } from '~/utils/safety' ;
1111import { post } from 'aws-amplify/api' ;
12- import { InfoDialog } from '~/components/dialogs' ;
1312import { Modal } from '~/components/modals' ;
1413
1514interface 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 ;
2727export 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