@@ -31,19 +31,14 @@ import {
3131import { useFormContext , useWatch } from 'react-hook-form' ;
3232import {
3333 Button ,
34- ButtonGroup ,
35- ClickAwayListener ,
3634 Dialog ,
3735 DialogActions ,
3836 DialogContent ,
39- Grow ,
37+ Menu ,
4038 MenuItem ,
41- MenuList ,
42- Paper ,
43- Popper ,
4439 Stack ,
4540} from '@mui/material' ;
46- import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown ' ;
41+ import MoreButton from '@mui/icons-material/MoreVert ' ;
4742
4843// Client side id generation. We start from 100 to avoid querying the post list to get the next id as we
4944// may be offline and accessing this page directly (without going through the list page first) which would
@@ -334,88 +329,51 @@ const MutationModesSelector = (props: {
334329 setMutationMode : ( mode : MutationMode ) => void ;
335330} ) => {
336331 const { setMutationMode, mutationMode } = props ;
337- const [ open , setOpen ] = React . useState ( false ) ;
338- const anchorRef = React . useRef < HTMLDivElement > ( null ) ;
339- const buttonRef = React . useRef < HTMLButtonElement > ( null ) ;
340-
341- const handleMenuItemClick = ( mutationMode : MutationMode ) => {
342- setOpen ( false ) ;
343- setMutationMode ( mutationMode ) ;
332+ const [ anchorEl , setAnchorEl ] = React . useState < null | HTMLElement > ( null ) ;
333+ const open = Boolean ( anchorEl ) ;
334+ const handleClick = ( event : React . MouseEvent < HTMLButtonElement > ) => {
335+ setAnchorEl ( event . currentTarget ) ;
344336 } ;
345-
346- const handleToggle = ( ) => {
347- setOpen ( prevOpen => ! prevOpen ) ;
337+ const handleClose = ( ) => {
338+ setAnchorEl ( null ) ;
348339 } ;
349340
350- const handleClose = ( event : Event ) => {
351- if (
352- anchorRef . current &&
353- anchorRef . current . contains ( event . target as HTMLElement )
354- ) {
355- return ;
356- }
357-
358- setOpen ( false ) ;
341+ const handleMenuItemClick = ( mutationMode : MutationMode ) => {
342+ setMutationMode ( mutationMode ) ;
359343 } ;
360344
361345 return (
362346 < >
363- < ButtonGroup
364- variant = "text"
365- ref = { anchorRef }
366- aria-label = "Button group with a nested menu"
347+ < Button
348+ id = "mutation-modes-button"
349+ size = "small"
350+ aria-controls = { open ? 'mutation-modes-menu' : undefined }
351+ aria-expanded = { open ? 'true' : undefined }
352+ aria-label = "select mutation mode"
353+ aria-haspopup = "menu"
354+ onClick = { handleClick }
355+ endIcon = { < MoreButton /> }
367356 >
368- < Button ref = { buttonRef } > { mutationMode } </ Button >
369- < Button
370- size = "small"
371- aria-controls = { open ? 'split-button-menu' : undefined }
372- aria-expanded = { open ? 'true' : undefined }
373- aria-label = "select merge strategy"
374- aria-haspopup = "menu"
375- onClick = { handleToggle }
376- >
377- < ArrowDropDownIcon />
378- </ Button >
379- </ ButtonGroup >
380- < Popper
381- sx = { { zIndex : 1 } }
357+ { mutationMode }
358+ </ Button >
359+ < Menu
360+ id = "mutation-modes-menu"
361+ anchorEl = { anchorEl }
382362 open = { open }
383- anchorEl = { anchorRef . current }
384- role = { undefined }
385- transition
386- disablePortal
363+ onClose = { handleClose }
364+ MenuListProps = { {
365+ 'aria-labelledby' : 'mutation-modes-button' ,
366+ } }
387367 >
388- { ( { TransitionProps, placement } ) => (
389- < Grow
390- { ...TransitionProps }
391- style = { {
392- transformOrigin :
393- placement === 'bottom'
394- ? 'center top'
395- : 'center bottom' ,
396- } }
368+ { MutationModes . map ( mutationMode => (
369+ < MenuItem
370+ key = { mutationMode }
371+ onClick = { ( ) => handleMenuItemClick ( mutationMode ) }
397372 >
398- < Paper >
399- < ClickAwayListener onClickAway = { handleClose } >
400- < MenuList id = "split-button-menu" autoFocusItem >
401- { MutationModes . map ( mutationMode => (
402- < MenuItem
403- key = { mutationMode }
404- onClick = { ( ) =>
405- handleMenuItemClick (
406- mutationMode
407- )
408- }
409- >
410- { mutationMode }
411- </ MenuItem >
412- ) ) }
413- </ MenuList >
414- </ ClickAwayListener >
415- </ Paper >
416- </ Grow >
417- ) }
418- </ Popper >
373+ { mutationMode }
374+ </ MenuItem >
375+ ) ) }
376+ </ Menu >
419377 </ >
420378 ) ;
421379} ;
0 commit comments