feat(remix): add data table component - #109
Merged
Merged
Conversation
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Adds
RemixDataTable<T>and the generatedFortalDataTable<T>recipe: a host-neutral table for comparing many records under shared column headers, complementingRemixDataList, which describes one record as label/value metadata. Flutter's coreTableis the layout and semantics authority, so every row negotiates one column-width map andRenderTableemits 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 soonHovered/onSelectedvariants evaluate against that row, and the composed checkbox, page buttons, and page-size select receive unresolved styles through Mix'sStyleProviderinheritance because each control must resolve its own widget states. The Fortal recipe maps pinned Radix Themes 3.3.0table.cssfor 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 privateDataGridis deleted.Related Issues
None.
Checklist
Note: Updating the
pubspec.yamlandCHANGELOG.mdis not required. These are handled automatically during the release process.///).Breaking Change
Does this PR require users of the package to manually update their code?