Skip to content

Split DataTableCore into focused modules - #373

Merged
woksin merged 2 commits into
mainfrom
refactor/datatablecore-split
Sep 29, 2026
Merged

woksin merged 2 commits into
mainfrom
refactor/datatablecore-split

Conversation

@woksin

@woksin woksin commented Sep 29, 2026

Copy link
Copy Markdown
Contributor

DataTableCore is split into focused modules ahead of server mode for the bound tables (#178). Nothing a consumer can observe changes: rendered markup, parts, focus behavior, callbacks and the public API are the same, so this PR publishes nothing.

Changed

  • DataTableCore.tsx shrinks from 892 lines to its props contract and the composition of:
    • useDataTableState (controlled filter, search and sort);
    • useDataTableMessages;
    • useRowSelection;
    • processRows (filter and sort, or rows as given);
    • the search box, header cell, body and row components.
  • Row value reading, filter matching and row processing have direct specs.
  • Evidence of no change:
    • A comparison harness rendered the original and the split table across 29 prop combinations, on the server and in the browser, and the markup was byte-identical in all 58 comparisons. A planted one-character change failed 14 of them.
    • api-surface.json and the parts inventory are unchanged, and every spec and Storybook check passes.

Closes #372.

valueAtPath, the filter matchers and processRows become their own modules
with direct specs, so the filter-and-sort pipeline #178 step 2 bypasses for
server mode can be reasoned about on its own (#372)
DataTableCore keeps its props contract and composes useDataTableState,
useDataTableMessages, useRowSelection, the search box, header cell, body
and row. Internal components take the part attributes as parts, so the
public pt inventory is unchanged, and the parts manifest lists their files
as DataTableCore sources. Rendered markup is byte-identical to before across
29 prop combinations, server and client, and the API surface snapshot is
unchanged (#372)
@woksin woksin added the no-release Merging publishes no package, image, release, or deployment label Sep 29, 2026
@woksin woksin self-assigned this Sep 29, 2026
@woksin
woksin merged commit fd4a4ac into main Sep 29, 2026
49 of 50 checks passed
@woksin
woksin deleted the refactor/datatablecore-split branch September 29, 2026 11:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

no-release Merging publishes no package, image, release, or deployment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Split DataTableCore into focused modules before server mode

1 participant