diff --git a/src/DataGrid.tsx b/src/DataGrid.tsx index b8532c13fd..044ba729ac 100644 --- a/src/DataGrid.tsx +++ b/src/DataGrid.tsx @@ -710,7 +710,13 @@ export function DataGrid(props: DataGridPr return; } - if (isCellEditable(selectedPosition) && isDefaultCellInput(event, onCellPaste != null)) { + const column = columns[selectedPosition.idx]; + + if ( + isCellEditable(selectedPosition) && + column.renderEditCell != null && + isDefaultCellInput(event, onCellPaste != null) + ) { setSelectedPosition(({ idx, rowIdx }) => ({ idx, rowIdx, @@ -839,7 +845,8 @@ export function DataGrid(props: DataGridPr const samePosition = isSamePosition(selectedPosition, position); - if (options?.enableEditor && isCellEditable(position)) { + const column = columns[selectedPosition.idx]; + if (options?.enableEditor && isCellEditable(position) && column.renderEditCell != null) { const row = rows[position.rowIdx]; setSelectedPosition({ ...position, mode: 'EDIT', row, originalRow: row }); } else if (samePosition) { @@ -973,10 +980,9 @@ export function DataGrid(props: DataGridPr const { idx, rowIdx } = selectedPosition; const column = columns[idx]; - if (column.renderEditCell == null || column.editable === false) { + if (!isCellEditable(selectedPosition)) { return; } - const isLastRow = rowIdx === maxRowIdx; const columnWidth = getColumnWidth(column); const colSpan = column.colSpan?.({ type: 'ROW', row: rows[rowIdx] }) ?? 1; diff --git a/src/utils/selectedCellUtils.ts b/src/utils/selectedCellUtils.ts index 62e88cbeef..7f7469956c 100644 --- a/src/utils/selectedCellUtils.ts +++ b/src/utils/selectedCellUtils.ts @@ -25,10 +25,7 @@ export function isSelectedCellEditable({ // https://github.com/vercel/next.js/issues/56480 export function isCellEditableUtil(column: CalculatedColumn, row: R): boolean { - return ( - column.renderEditCell != null && - (typeof column.editable === 'function' ? column.editable(row) : column.editable) !== false - ); + return !!(typeof column.editable === 'function' ? column.editable(row) : column.editable); } interface GetNextSelectedCellPositionOpts {