Skip to content

feat(remix): add data table component - #109

Merged
tilucasoli merged 2 commits into
mainfrom
feat/data-table
Aug 6, 2026
Merged

feat(remix): add data table component#109
tilucasoli merged 2 commits into
mainfrom
feat/data-table

Conversation

@leoafarias

Copy link
Copy Markdown
Member

Description

Adds RemixDataTable<T> and the generated FortalDataTable<T> recipe: a host-neutral table for comparing many records under shared column headers, complementing RemixDataList, which describes one record as label/value metadata. Flutter's core Table is the layout and semantics authority, so every row negotiates one column-width map and RenderTable emits the native table/row/columnHeader/cell role hierarchy; sorting, page-scoped selection, and pagination are controlled signals, so Remix never fetches, filters, sorts, or slices caller data. Row and cell style regions re-resolve inside each row's own widget-state scope so onHovered/onSelected variants evaluate against that row, and the composed checkbox, page buttons, and page-size select receive unresolved styles through Mix's StyleProvider inheritance because each control must resolve its own widget states. The Fortal recipe maps pinned Radix Themes 3.3.0 table.css for sizes 1-3 and surface/ghost, advancing the parity ledger from 20 to 21 mapped families, with sorting, selection, pagination, hover, and horizontal scrolling recorded as Fortal extensions rather than parity claims. The dashboard's Customers, Orders, and Overview pages move onto the new component and the private DataGrid is deleted.

Related Issues

None.


Checklist

Note: Updating the pubspec.yaml and CHANGELOG.md is not required. These are handled automatically during the release process.

  • My PR includes unit or integration tests for all changed/updated/fixed behaviors.
  • I have updated or added relevant documentation (doc comments with ///).
  • I am prepared to follow up on review comments in a timely manner.

Breaking Change

Does this PR require users of the package to manually update their code?

  • Yes, this is a breaking change.
  • No, this is not a breaking change.

leoafarias and others added 2 commits August 5, 2026 17:54
Adds RemixDataTable<T> and the generated FortalDataTable<T> recipe: a
host-neutral table for comparing many records under shared column headers.
Flutter's core Table is the layout and semantics authority, so every row
negotiates one column-width map and RenderTable emits the native
table/row/columnHeader/cell role hierarchy.

Sorting, page-scoped selection, and pagination are controlled signals only.
Remix never fetches, filters, sorts, or slices caller data: rows is already
the current page in its final order. Labels and the page-range formatter keep
the component independent of MaterialLocalizations.

Row and cell style regions re-resolve inside each row's own widget-state
scope, so onHovered/onSelected variants evaluate against that row. The
composed checkbox, page buttons, and page-size select receive unresolved
styles through Mix's StyleProvider inheritance, because each control has to
resolve its own widget states.

Maps the pinned Radix Themes 3.3.0 table.css for sizes 1-3 and the
surface/ghost variants, advancing the Fortal parity ledger from 20 to 21
mapped families. Sorting, selection, pagination, hover, and horizontal
scrolling have no Radix counterpart and are recorded as Fortal extensions.

Migrates the dashboard's Customers, Orders, and Overview pages onto the new
component and deletes the private DataGrid.
@tilucasoli
tilucasoli merged commit 5ca4e48 into main Aug 6, 2026
2 checks passed
@tilucasoli
tilucasoli deleted the feat/data-table branch August 6, 2026 01:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants