1# llimphi-widget-table
2
3Editable table and list for Llimphi.
4
5A grid of text cells: optional per-column headers, one row per record with a
6**remove** button, and an **add** button at the foot. The `list_view` variant is
7the single-column, header-less case.
8
9**Stateless by design.** Like `text_input_view`, the widget owns neither the
10focus nor the editing buffers: the caller says which cell is focused (`focused`)
11and lends it its `TextInputState` (`focused_state`); the remaining cells are
12painted from their text. Typing is routed by the caller into its `TextInputState`
13and the value is rebuilt — exactly as with a standalone text input.
14
15It is agnostic: it knows nothing about config. It emits the caller's `Msg`
16through three callbacks (`on_focus_cell`, `on_remove_row`, `on_add_row`). The
17"what changed" protocol (replace a cell, add/remove a row) is decided by the
18caller; the widget only fires the event with the coordinate.
19
20---
21
22Part of **llimphi** — see [llimphi](../../README.md).
README.md
llimphi-widget-table
Editable table and list for Llimphi.
A grid of text cells: optional per-column headers, one row per record with a
remove button, and an add button at the foot. The list_view variant is
the single-column, header-less case.
Stateless by design. Like text_input_view, the widget owns neither the
focus nor the editing buffers: the caller says which cell is focused (focused)
and lends it its TextInputState (focused_state); the remaining cells are
painted from their text. Typing is routed by the caller into its TextInputState
and the value is rebuilt — exactly as with a standalone text input.
It is agnostic: it knows nothing about config. It emits the caller's Msg
through three callbacks (on_focus_cell, on_remove_row, on_add_row). The
"what changed" protocol (replace a cell, add/remove a row) is decided by the
caller; the widget only fires the event with the coordinate.
Part of llimphi — see llimphi.