Lattice Grid Buy a licence

editing · v1.13.0

A grid you change, not just one you read.

Editing is not a paid add-on or a second component wrapped around the table. Type into a cell, drag the fill handle down a column, paste a block from a spreadsheet, and undo the lot with one keystroke, all standard in the box. Every gesture goes through one edit pipeline, so a typed value, a fill and a paste each land as a single entry on the same undo stack.

Building…
Loading a live grid…

twenty-two editors

An editor matched to the column, not a text box for everything.

Twenty-two editors ship, each wired to the type it belongs to: a number stepper, a date picker, a duration field, a colour swatch, a slider, a rating, a lookup, an IP-address field, a code editor. Setting a column's type brings its editor along with it, and every one opens on the same double-click, Enter or type-to-start gesture, so the interaction stays constant even as the widget underneath changes. Each is keyboard-operable end to end.

Building…
Loading a live grid…

one row, four gestures

Four ways to edit the same row.

The same record and the same columns, edited four ways: in the cell, along the whole row at once, on a form beside it, or in a detail pane underneath. The grid is the same in each; only the gesture changes, so the choice is a matter of the screen you are building, not of a different component.

Building…
Loading a live grid…
Building…
Loading a live grid…
Building…
Loading a live grid…
Building…
Loading a live grid…

In the cell → Along the row → On a form → The form, four ways → In a detail pane →

refused before it lands

Validation that keeps the editor open.

A per-column rule runs on commit, after the column's parse and before the value reaches the row. A refused value never lands: the editor stays open on it, the cell carries the error, and the reason is exposed to a screen reader alongside the value. The rule sees the whole row as well as the value, so a budget can be checked against the quantity in the same record rather than in isolation.

Building…
Loading a live grid…

written, then confirmed

Async commits, with a rollback if the server says no.

This is the line between a grid you can demo and a grid you can deploy. An edit applies to the cell immediately, then waits on the commit: a resolution confirms it, a rejection rolls it back to the last value a confirmation vouched for and surfaces the reason. Nothing on this site is sent anywhere, the server here is a function in the page, but the contract is the real one, and no competitor's marketing explains it.

Building…
Loading a live grid…

the clipboard round-trip

Copy to Excel, edit there, paste it back.

Copy a range and the grid writes tab-separated values, the form Excel and Google Sheets both read as columns and rows. Paste one back and each value runs through the destination column's parser and validation before it commits, so a bad cell is rejected on its own without rolling back the rest of the paste. The whole paste is one entry on the undo stack, however many cells it touched.

Building…
Loading a live grid…

The nearer gesture, shown here on its own: grab the fill handle at the corner of a selection and drag it down a column, and the grid extends the values, a copy, a series or a pattern, through the same edit pipeline, as one entry on the undo stack.

Building…
Loading a live grid…

who may edit what

The first question after "it edits".

Editing that a whole team shares needs an answer to who may change which cell. A column can be read-only outright, editable by a per-row rule, or gated by a permission a viewer does not hold, and the cell menu, the fill handle and a paste all respect the same answer. Values a viewer must not see at all can be redacted before a screen share, the count and the sort intact, only the numbers gone.

Read-only rules → Permissions → Redaction → Bulk edits → Row form →