Inline Editing
Raw Markdown source for LLM and agent workflows.
# @mycrm-ui/react-table LLM Guide
## 6. Inline Editing
This guide is for AI agents that need to add cell-level inline editing to `@mycrm-ui/react-table`.
Use this part when the user wants cells to become editable on interaction, validation before save, or custom edit UIs per column.
## Purpose
Separate these concerns:
- whether a column is editable
- how data is saved
- which edit UI is shared vs column-specific
## Required Inputs
### `editable: true`
```tsx
{
key: "name",
label: "Name",
editable: true,
render: (row) => row.name,
}
```
### `validate`
```tsx
validate: (value) => (value.trim() ? null : "Required")
```
Return:
- `null` on success
- error string on failure
### `editing.onCellChange`
```tsx
editing={{
onCellChange: (rowKey, colKey, value) => {
setData((prev) =>
prev.map((row) =>
String(row.id) === rowKey ? { ...row, [colKey]: value } : row,
),
);
},
}}
```
### `editing.renderCell`
Shared edit UI for all editable columns.
### `renderEditCell`
Column-level custom edit UI.
Important:
- `renderEditCell` overrides `editing.renderCell`.
## Minimal Pattern
```tsx
<Table
columns={columns}
data={data}
rowKey={(row) => String(row.id)}
editing={{
onCellChange: (rowKey, colKey, value) => {
setData((prev) =>
prev.map((row) =>
String(row.id) === rowKey ? { ...row, [colKey]: value } : row,
),
);
},
}}
/>
```
## LLM Decision Rules
Use this guide when the request means:
- "Make cells editable"
- "Validate before save"
- "Use select instead of input for one column"
Then:
1. Mark editable columns.
2. Add validation where needed.
3. Wire `editing.onCellChange`.
4. Choose shared vs column-specific edit UI.
## Common Mistakes
- Marking a column editable without wiring save logic
- Expecting inline error UI while also using `onValidationError`
- Forgetting that `renderEditCell` takes precedence