Skip to content

feat(react-headless-components-preview): add headless Table and DataGrid component families#36052

Draft
dmytrokirpa wants to merge 3 commits intomicrosoft:masterfrom
dmytrokirpa:feat/headless-table-datagrid
Draft

feat(react-headless-components-preview): add headless Table and DataGrid component families#36052
dmytrokirpa wants to merge 3 commits intomicrosoft:masterfrom
dmytrokirpa:feat/headless-table-datagrid

Conversation

@dmytrokirpa
Copy link
Copy Markdown
Contributor

Summary

Adds headless wrappers for the complete react-table component surface to @fluentui/react-headless-components-preview. All components delegate to @fluentui/react-table hooks and render functions — no Griffel styling, no design tokens.

Table family (10 components):
Table, TableBody, TableHeader, TableHeaderCell, TableRow, TableCell, TableSelectionCell, TableCellActions, TableCellLayout, TableResizeHandle

DataGrid family (7 components):
DataGrid, DataGridBody, DataGridHeader, DataGridHeaderCell, DataGridRow, DataGridCell, DataGridSelectionCell

Stack order (review in this order)

  1. test(react-table): hook unit tests (test(react-table): add unit tests for useTable_unstable and useDataGrid_unstable hooks #36050)
  2. feat(react-table): base hook exports (feat(react-table): export useTableContextValues_unstable and useTableCellLayoutContextValues_unstable #36051)
  3. This PR — headless Table + DataGrid families ← you are here

Test plan

  • Components render without any applied styling
  • Context values propagate correctly (Table, TableCellLayout, DataGrid)
  • Consumers can apply arbitrary className/style
  • DataGrid column definitions and selection modes work end-to-end

🤖 Generated with Claude Code

dmytrokirpa and others added 3 commits April 26, 2026 18:57
…id_unstable hooks

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…CellLayoutContextValues_unstable

Required for the headless layer to compose context values without importing
internal module paths.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…rid component families

Adds headless wrappers for the full react-table component families:

Table family: Table, TableBody, TableHeader, TableHeaderCell, TableRow,
TableCell, TableSelectionCell, TableCellActions, TableCellLayout, TableResizeHandle

DataGrid family: DataGrid, DataGridBody, DataGridHeader, DataGridHeaderCell,
DataGridRow, DataGridCell, DataGridSelectionCell

All components are thin wrappers around @fluentui/react-table hooks and render
functions with no Griffel styling applied.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

Pull request demo site: URL

@@ -0,0 +1,7 @@
{
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🕵🏾‍♀️ visual changes to review in the Visual Change Report

vr-tests-react-components/Avatar Converged 1 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-react-components/Avatar Converged.badgeMask.normal.chromium.png 3 Changed
vr-tests-react-components/CalendarCompat 4 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-react-components/CalendarCompat.multiDayView.default.chromium.png 654 Changed
vr-tests-react-components/CalendarCompat.multiDayView - Dark Mode.default.chromium.png 2172 Changed
vr-tests-react-components/CalendarCompat.multiDayView - High Contrast.default.chromium.png 2243 Changed
vr-tests-react-components/CalendarCompat.multiDayView.default.chromium_1.png 654 Changed
vr-tests-react-components/Charts-DonutChart 2 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-react-components/Charts-DonutChart.Dynamic - Dark Mode.default.chromium.png 7530 Changed
vr-tests-react-components/Charts-DonutChart.Dynamic.default.chromium.png 5581 Changed
vr-tests-react-components/Menu Converged - submenuIndicator slotted content 1 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-react-components/Menu Converged - submenuIndicator slotted content.default - RTL.submenus open.chromium.png 404 Changed
vr-tests-react-components/Positioning 2 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-react-components/Positioning.Positioning end.chromium.png 15 Changed
vr-tests-react-components/Positioning.Positioning end.updated 2 times.chromium.png 8 Changed
vr-tests-react-components/ProgressBar converged 1 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-react-components/ProgressBar converged.Indeterminate + thickness - High Contrast.default.chromium.png 67 Changed
vr-tests-react-components/TagPicker 2 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-react-components/TagPicker.disabled - High Contrast.disabled input hover.chromium.png 1319 Changed
vr-tests-react-components/TagPicker.disabled.disabled input hover.chromium.png 677 Changed

There were 3 duplicate changes discarded. Check the build logs for more information.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant