@@ -214,6 +214,9 @@ export function ChatPanel({
214214 const [ renamingThread , setRenamingThread ] = useState < string | null > ( null ) ;
215215 const [ renameValue , setRenameValue ] = useState < string > ( "" ) ;
216216 const [ hoveredThread , setHoveredThread ] = useState < string | null > ( null ) ;
217+ const [ openThreadMenuKey , setOpenThreadMenuKey ] = useState < string | null > (
218+ null ,
219+ ) ;
217220 const [ allowAutoSelectThread , setAllowAutoSelectThread ] =
218221 useState < boolean > ( true ) ;
219222 const submitMentionsRef = useRef < SubmitMentionsFn | undefined > ( undefined ) ;
@@ -497,7 +500,8 @@ export function ChatPanel({
497500 thread ;
498501 const plainLabel = stripHtml ( displayLabel ) ;
499502 const isHovered = hoveredThread === key ;
500- const showMenu = isHovered || selectedThreadKey === key ;
503+ const isMenuOpen = openThreadMenuKey === key ;
504+ const showMenu = isHovered || selectedThreadKey === key || isMenuOpen ;
501505 return {
502506 key,
503507 label : (
@@ -530,6 +534,13 @@ export function ChatPanel({
530534 < Dropdown
531535 menu = { threadMenuProps ( key , plainLabel , hasCustomName , isPinned ) }
532536 trigger = { [ "click" ] }
537+ open = { openThreadMenuKey === key }
538+ onOpenChange = { ( open ) => {
539+ setOpenThreadMenuKey ( open ? key : null ) ;
540+ if ( ! open ) {
541+ setHoveredThread ( ( prev ) => ( prev === key ? null : prev ) ) ;
542+ }
543+ } }
533544 >
534545 < Button
535546 type = "text"
0 commit comments