import Dialog, { type DialogProps } from '@mui/material/Dialog'; import DialogActions from '@mui/material/DialogActions'; import DialogContent from '@mui/material/DialogContent'; import DialogTitle from '@mui/material/DialogTitle'; import Stack from '@mui/material/Stack'; import { type MRT_Row, type MRT_RowData, type MRT_TableInstance, } from '../../types'; import { parseFromValuesOrFunc } from '../../utils/utils'; import { MRT_EditActionButtons } from '../buttons/MRT_EditActionButtons'; import { MRT_EditCellTextField } from '../inputs/MRT_EditCellTextField'; export interface MRT_EditRowModalProps extends Partial { open: boolean; table: MRT_TableInstance; } export const MRT_EditRowModal = ({ open, table, ...rest }: MRT_EditRowModalProps) => { const { getState, options: { localization, muiCreateRowModalProps, muiEditRowDialogProps, onCreatingRowCancel, onEditingRowCancel, renderCreateRowDialogContent, renderEditRowDialogContent, }, setCreatingRow, setEditingRow, } = table; const { creatingRow, editingRow } = getState(); const row = (creatingRow ?? editingRow) as MRT_Row; const dialogProps = { ...parseFromValuesOrFunc(muiEditRowDialogProps, { row, table }), ...(creatingRow && parseFromValuesOrFunc(muiCreateRowModalProps, { row, table })), ...rest, }; const internalEditComponents = row .getAllCells() .filter((cell) => cell.column.columnDef.columnDefType === 'data') .map((cell) => ( )); return ( { if (creatingRow) { onCreatingRowCancel?.({ row, table }); setCreatingRow(null); } else { onEditingRowCancel?.({ row, table }); setEditingRow(null); } row._valuesCache = {} as any; //reset values cache dialogProps.onClose?.(event, reason); }} open={open} {...dialogProps} > {((creatingRow && renderCreateRowDialogContent?.({ internalEditComponents, row, table, })) || renderEditRowDialogContent?.({ internalEditComponents, row, table, })) ?? ( <> {localization.edit}
e.preventDefault()}> {internalEditComponents}
)}
); };