Part of the cross-platform UI crate (see docs/UI_CRATE_DESIGN.md).
What
A flat grid primitive: rows × columns, sortable columns, resizable columns, cell selection, cell editing. No hierarchy.
Use cases:
- SQL client: query result grids (thousands of rows, paging)
- k8s dashboard: resource list views
- vimcode: quickfix list as a table (file, line, severity, message), find/replace preview
Decision needed
DataTable may be redundant with TreeTable (see sibling issue): a TreeTable with max_depth = 0 is a flat data table. Options:
- Ship
TreeTable only — apps pass rows with no children. Simpler API surface.
- Ship
TreeTable + DataTable as distinct primitives — DataTable is more optimized for large flat data (virtual scrolling, column freezing, bulk selection), with no indent/expand overhead.
- Ship all three —
TreeView, DataTable, TreeTable — each tuned for its scenario.
Recommendation: start with option 1 (TreeTable only) and fork to a dedicated DataTable if profiling shows the tree-generalization costs too much for large flat datasets.
Acceptance
A decision documented in the design doc, plus implementation if option 2 or 3 is chosen.
Part of the cross-platform UI crate (see
docs/UI_CRATE_DESIGN.md).What
A flat grid primitive: rows × columns, sortable columns, resizable columns, cell selection, cell editing. No hierarchy.
Use cases:
Decision needed
DataTablemay be redundant withTreeTable(see sibling issue): aTreeTablewithmax_depth = 0is a flat data table. Options:TreeTableonly — apps pass rows with no children. Simpler API surface.TreeTable+DataTableas distinct primitives —DataTableis more optimized for large flat data (virtual scrolling, column freezing, bulk selection), with no indent/expand overhead.TreeView,DataTable,TreeTable— each tuned for its scenario.Recommendation: start with option 1 (TreeTable only) and fork to a dedicated DataTable if profiling shows the tree-generalization costs too much for large flat datasets.
Acceptance
A decision documented in the design doc, plus implementation if option 2 or 3 is chosen.