# RowCommitDetail

> _Since v0.4.0_

Detail payload for a committed row edit (may or may not include changes).

Fired when a row editing session ends (focus leaves the row). The event is
cancelable - call `preventDefault()` to revert the entire row to its state
before editing began.

Use this for row-level validation: if any cells are invalid, reject the
entire row edit and force the user to correct the values.

#### Example

```typescript
grid.on('row-commit', (detail, e) => {
  const editingPlugin = grid.getPluginByName('editing');
  if (editingPlugin?.hasInvalidCells(detail.rowId)) {
    e.preventDefault(); // Revert row to original values
    alert('Please fix validation errors before leaving the row');
  }
});
```

## Properties

| Property | Type | Description |
| -------- | ---- | ----------- |
| `rowIndex` | <code>number</code> | Row index that lost edit focus. |
| `rowId` | <code>string</code> | Stable row identifier (from getRowId). |
| `row` | <code>TRow</code> | Row object reference (current state after edits). |
| `oldValue` | <code>TRow &#124; undefined</code> | Snapshot of the row before edits (for comparison). |
| `newValue` | <code>TRow</code> | Current row value after edits (same as `row`). |
| `changed` | <code>boolean</code> | Whether any cell changes were actually committed in this row during the session. |
| `changedRows` | <code>TRow[]</code> | Current changed row collection. |
| `changedRowIds` | <code>string[]</code> | IDs of changed rows. |
