@@ -6,7 +6,8 @@ import { Close, Title } from "@radix-ui/react-dialog";
66import { useQueries } from "@tanstack/react-query" ;
77import { AlignJustifyIcon , CalendarClock , FileIcon , X } from "lucide-react" ;
88import { useParams } from "next/navigation" ;
9- import { useMemo , useState } from "react" ;
9+ import { parseAsInteger , useQueryState } from "nuqs" ;
10+ import { useMemo } from "react" ;
1011import { toast } from "sonner" ;
1112import { Panel } from "@/components/core/panel" ;
1213import { ConfirmButton } from "@/components/form/button" ;
@@ -44,7 +45,11 @@ export const TaskItem = ({
4445 canEdit ?: boolean ;
4546} ) => {
4647 const { projectId } = useParams ( ) ;
47- const [ detailsOpen , setDetailsOpen ] = useState ( false ) ;
48+ const [ selectedTaskId , setSelectedTaskId ] = useQueryState (
49+ "task" ,
50+ parseAsInteger ,
51+ ) ;
52+ const detailsOpen = selectedTaskId === task . id ;
4853 const { attributes, listeners, setNodeRef, transform, transition } =
4954 useSortable ( { id : task . id } ) ;
5055
@@ -113,7 +118,7 @@ export const TaskItem = ({
113118 creating ? "text-muted-foreground" : "" ,
114119 ) }
115120 onClick = { ( ) => {
116- if ( ! creating ) setDetailsOpen ( true ) ;
121+ if ( ! creating ) setSelectedTaskId ( task . id ) ;
117122 } }
118123 >
119124 < div
@@ -155,7 +160,12 @@ export const TaskItem = ({
155160 ) : null }
156161 </ div >
157162
158- < Panel open = { detailsOpen } setOpen = { setDetailsOpen } >
163+ < Panel
164+ open = { detailsOpen }
165+ setOpen = { ( open ) => {
166+ if ( ! open ) setSelectedTaskId ( null ) ;
167+ } }
168+ >
159169 < Title >
160170 < div className = "flex items-center px-4 h-14 border-b" >
161171 < div className = "flex items-center flex-1" >
@@ -372,7 +382,7 @@ export const TaskItem = ({
372382 "Error while copying, please try again." ,
373383 } ,
374384 ) ;
375- setDetailsOpen ( false ) ;
385+ setSelectedTaskId ( null ) ;
376386 } }
377387 >
378388 < button
0 commit comments