File tree Expand file tree Collapse file tree 1 file changed +26
-4
lines changed
src/app/map/[id]/components/controls Expand file tree Collapse file tree 1 file changed +26
-4
lines changed Original file line number Diff line number Diff line change 1- import { useState } from "react" ;
1+ import { useState , useRef } from "react" ;
22import {
33 DropdownMenu ,
44 DropdownMenuContent ,
@@ -17,18 +17,40 @@ export default function ControlHoverMenu({
1717 onDelete : ( ) => void ;
1818} ) {
1919 const [ open , setOpen ] = useState ( false ) ;
20+ const timeoutRef = useRef < NodeJS . Timeout | null > ( null ) ;
21+
22+ const handleMouseEnter = ( ) => {
23+ if ( timeoutRef . current ) {
24+ clearTimeout ( timeoutRef . current ) ;
25+ timeoutRef . current = null ;
26+ }
27+ setOpen ( true ) ;
28+ } ;
29+
30+ const handleMouseLeave = ( ) => {
31+ // Add a small delay before closing to allow moving to menu
32+ timeoutRef . current = setTimeout ( ( ) => {
33+ setOpen ( false ) ;
34+ } , 150 ) ;
35+ } ;
2036
2137 return (
2238 < div
2339 className = "relative w-full"
24- onMouseEnter = { ( ) => setOpen ( true ) }
25- onMouseLeave = { ( ) => setOpen ( false ) }
40+ onMouseEnter = { handleMouseEnter }
41+ onMouseLeave = { handleMouseLeave }
2642 >
2743 < DropdownMenu open = { open } onOpenChange = { setOpen } >
2844 < DropdownMenuTrigger asChild >
2945 < div className = "w-full" > { children } </ div >
3046 </ DropdownMenuTrigger >
31- < DropdownMenuContent align = "end" side = "right" sideOffset = { 8 } >
47+ < DropdownMenuContent
48+ align = "end"
49+ side = "right"
50+ sideOffset = { 8 }
51+ onMouseEnter = { handleMouseEnter }
52+ onMouseLeave = { handleMouseLeave }
53+ >
3254 < DropdownMenuItem onClick = { onEdit } >
3355 < PencilIcon size = { 12 } />
3456 Rename
You can’t perform that action at this time.
0 commit comments