@@ -25,7 +25,7 @@ export type ContextMenuOptionType<T> = Readonly<{
2525} > ;
2626
2727type RenderButtonProps = Readonly < {
28- openMenu : ( ev : React . MouseEvent ) => void ;
28+ onClick : ( ev : React . MouseEvent ) => void ;
2929 onKeyDown : ( ev : KeyboardEvent ) => void ;
3030 isMenuShowing : boolean ;
3131 ref : React . Ref < HTMLButtonElement > | null ;
@@ -207,10 +207,15 @@ export function ContextMenu<T>({
207207 } ;
208208
209209 const handleClick = ( ev : React . MouseEvent ) => {
210- closeCurrentOpenContextMenu ?.( ) ;
211- closeCurrentOpenContextMenu = ( ) => setIsMenuShowing ( false ) ;
212- virtualElement . current = generateVirtualElement ( ev . clientX , ev . clientY ) ;
213- setIsMenuShowing ( true ) ;
210+ if ( isMenuShowing && ev . type !== 'contextmenu' ) {
211+ setIsMenuShowing ( false ) ;
212+ closeCurrentOpenContextMenu = undefined ;
213+ } else {
214+ closeCurrentOpenContextMenu ?.( ) ;
215+ closeCurrentOpenContextMenu = ( ) => setIsMenuShowing ( false ) ;
216+ virtualElement . current = generateVirtualElement ( ev . clientX , ev . clientY ) ;
217+ setIsMenuShowing ( true ) ;
218+ }
214219 ev . stopPropagation ( ) ;
215220 ev . preventDefault ( ) ;
216221 } ;
@@ -316,7 +321,7 @@ export function ContextMenu<T>({
316321 buttonNode = (
317322 < >
318323 { ( children as ( props : RenderButtonProps ) => JSX . Element ) ( {
319- openMenu : onClick || handleClick ,
324+ onClick : onClick || handleClick ,
320325 onKeyDown : handleKeyDown ,
321326 isMenuShowing,
322327 ref : setReferenceElement ,
0 commit comments