diff --git a/packages/material-react-table/src/components/menus/MRT_RowActionMenu.tsx b/packages/material-react-table/src/components/menus/MRT_RowActionMenu.tsx index 2ae2ea3a0..29c3615ab 100644 --- a/packages/material-react-table/src/components/menus/MRT_RowActionMenu.tsx +++ b/packages/material-react-table/src/components/menus/MRT_RowActionMenu.tsx @@ -1,4 +1,4 @@ -import { ReactNode, useMemo, type MouseEvent } from 'react'; +import { isValidElement, ReactNode, useMemo, type MouseEvent } from 'react'; import Menu, { type MenuProps } from '@mui/material/Menu'; import { MRT_ActionMenuItem } from './MRT_ActionMenuItem'; import { @@ -42,7 +42,19 @@ export const MRT_RowActionMenu = ({ const menuItems = useMemo(() => { const items: ReactNode[] = []; - const editItem = parseFromValuesOrFunc(enableEditing, row) && + + const rowActionMenuItems = renderRowActionMenuItems?.({ + closeMenu: () => setAnchorEl(null), + row, + staticRowIndex, + table, + }); + + const hasEditItem = rowActionMenuItems?.some( + (item) => isValidElement(item) && item.key === 'edit', + ); + + const editItem = !hasEditItem && parseFromValuesOrFunc(enableEditing, row) && ['modal', 'row'].includes(editDisplayMode!) && ( ({ /> ); if (editItem) items.push(editItem); - const rowActionMenuItems = renderRowActionMenuItems?.({ - closeMenu: () => setAnchorEl(null), - row, - staticRowIndex, - table, - }); if (rowActionMenuItems?.length) items.push(...rowActionMenuItems); return items; }, [renderRowActionMenuItems, row, staticRowIndex, table]);