Spreadsheet View
Edit multiple records at once from the collection list — inline in the cell, or via an anchored popover — without opening individual edit forms.
Every collection list in the Admin UI has two layout modes: the default List View for browsing and filtering, and Spreadsheet View for bulk editing. Spreadsheet View renders your collection as a grid where you can edit fields directly in place — no page navigation required.
Activating spreadsheet view
Open the column-settings popover in the top-right corner of any collection list. Under Layout Mode, click Spreadsheet. The preference is saved per user and per collection, so switching back to List View at any time is non-destructive.
The grid renders all fields defined on the collection, in definition order, with the same column visibility and ordering you configured in List View.
Editing cells
Different field types commit their changes in different ways.
Inline fields
These fields are edited directly inside the cell — no popover opens:
| Field type | Behaviour |
|---|---|
text, email, url | Click the cell and type. Commits on blur. |
number | Click the cell and type. Commits on blur. |
boolean | Click the checkbox to toggle. Commits immediately. |
date, datetime, time | Click the cell to open the native date/time picker inline. Commits on change. |
Popover fields
Clicking a cell opens a small popover anchored to that cell. Press Escape to discard changes and close without saving. Clicking outside commits the current value for text-like fields.
| Field type | Popover contents |
|---|---|
textarea | Resizable textarea. Commits on blur (click outside). Escape discards. |
json | JSON editor. Commits on blur. Escape discards. |
select, radio | Scrollable option list. Commits immediately on selection. |
multiSelect | Checkable option list. Each toggle commits immediately. |
relationship | Relationship picker. Commits immediately on selection. |
image | Media picker. Commits immediately on selection. |
icon | Icon picker. Commits immediately on selection. |
object | Inline form with all sub-fields rendered using the same field components as the main edit form. Commits on blur. |
array | Per-item sub-form with Add and Remove controls. Commits on blur. |
Rich text
Clicking a richText cell opens a slide-out side panel with the full rich-text editor. Changes commit when you close the panel. Closing without editing leaves the original value unchanged.
Pending changes
Edits are held locally until you explicitly save or discard them. A floating bar appears at the bottom of the grid whenever there are unsaved changes, showing a count of modified and newly added records.
| Action | What happens |
|---|---|
| Save Changes | Sends all pending updates and new-row creates to the API in parallel. Clears the pending state on success. |
| Discard | Reverts all unsaved changes, including new rows. |
Navigating away while there are pending changes does not warn you — save before leaving.
Adding rows
Click the + Add row button at the bottom of the grid to append a new empty row. New rows appear immediately in the grid and grow the grid height without scrolling. They are included in the pending-changes count and created via the collection's create API endpoint when you save.
Field visibility
Spreadsheet View respects the same admin.hidden flag used by the main edit form. Fields marked hidden: true are excluded from the grid.
blocks fields are also excluded — their polymorphic structure cannot be meaningfully collapsed into a single cell. To edit block content, open the individual document in the edit form.
Fields marked admin.readOnly: true are rendered in the grid but cannot be edited.
Keyboard navigation
react-datasheet-grid (the underlying grid library) supports standard spreadsheet keyboard controls:
| Key | Action |
|---|---|
Tab / Shift+Tab | Move to the next / previous cell |
Enter | Confirm edit and move down |
Escape | Cancel edit and close popover |
Delete / Backspace | Clear the cell value |
| Arrow keys | Navigate between cells |
Ctrl+C / Cmd+C | Copy cell value |
Ctrl+V / Cmd+V | Paste into selected cell |