-
Notifications
You must be signed in to change notification settings - Fork 0
Roadmap
github-actions[bot] edited this page Oct 1, 2026
·
2 revisions
📝 Generated from
docs/roadmap.md. Edit it there; changes made in the wiki are overwritten.
This document tracks the current status of features in OpenGridX and outlines the roadmap for future development.
-
Virtualization: Row virtualization plus horizontal virtualization of unpinned columns. Requires a bounded grid height (see
docs/features/virtualization.md). - Sorting: Client-side and server-side multi-column sorting.
- Filtering: Client-side filtering with support for various operators.
- Pagination: Client-side and server-side pagination with customizable page sizes.
- Selection: Row selection (single/multiple) with checkbox support.
- Advanced Filtering: Client-side complex filter builder (AND/OR logic, recursive groups).
- Column Pinning: Pin columns to the left or right.
- Row Pinning: Pin rows to the top or bottom.
- Column Reordering: Drag-and-drop column reordering.
- Column Resizing: Interactive column resizing.
- Detail Panels: Expandable rows to show custom detail views.
- Row Reordering: Drag-and-drop row reordering.
- Editing: Inline cell editing with value parsing/formatting.
- Tree Data: Hierarchical data display (Client-side).
- Row Grouping: Grouping rows by column values (Client-side).
- Spanning: Row and Column spanning (Cell merging).
-
Export: CSV, JSON, Print, basic Excel (HTML-table). Advanced Excel Export via ExcelJS — real
.xlsxwith styled headers, typed cells (number/date/boolean), column widths, frozen rows, auto-filter, alternating row colors, aggregation totals, and multi-sheet workbooks. - Pivot Mode: Cross-tabulation of data — group rows into columns dynamically with aggregation (Sum, Avg, Count, Min, Max).
- Server-Side Data Source: Hook-based integration for server-side sorting, filtering, and pagination.
-
Infinite Scroll: Automatically load more rows as the user scrolls (
paginationMode='infinite'). - Server-Side Tree Data: Lazy loading children nodes, partial hierarchy fetching support.
- Server-Side Aggregation: Sum, Avg, Count, Min, Max — computed server-side over the full dataset, with a sticky footer row and toolbar Σ panel.
-
CSS Barrel File (
lib/styles/opengridx.css): Single entry point — variables → reset → components. -
Consistent Naming Convention:
--ogx-*CSS variables,ogx__BEM class prefix. -
Theming API:
<DataGridThemeProvider theme={myTheme}>component mapping aGridThemeobject to--ogx-*CSS variables, with built-in light/dark/compact presets. - Production Build Optimisation: Code-split demo reduces initial bundle by 98.6% via React.lazy + manualChunks.
-
ARIA roles:
role="grid",role="row",role="gridcell",role="columnheader"on correct elements. -
ARIA attributes:
aria-sort,aria-selected,aria-label,aria-expanded,aria-readonly,aria-haspopupthroughout. v3.0 addsaria-level/aria-expandedon hierarchy rows,aria-multiselectable, andaria-sorton the primary sort column only. - Keyboard navigation: Enter / Escape / Arrow keys / Home / End / PageUp / PageDown, Shift+Space and Ctrl+A selection, Alt+ArrowDown for the column menu; the grid is a single Tab stop (v3.0). See Keyboard & Accessibility.
-
aria-rowcount/aria-rowindexandaria-colcount/aria-colindex: Count header rows and system columns, number rows across pages and pinned rows, and match between header and body cells (corrected in v3.0). - Clipboard: Full TSV-formatted copy support (Ctrl+C / Cmd+C) for seamless integration with Excel/Google Sheets.
-
exportToExcelAdvanced: Real.xlsxvia ExcelJS (lazy-loaded — zero bundle cost unless used). -
Features: Styled headers, typed cells, column widths from
colDef.width, frozen header row, auto-filter dropdowns, alternating row colors, aggregation totals rows, multi-sheet workbooks, standalone summary sheet. -
API:
ExcelAdvancedExportOptions,ExcelSheetDefinition,ExcelColumnStyle— all exported and documented. -
Demo:
AdvancedExcelExportDemoin demo app (Data Managementcategory). -
Docs:
docs/features/export-guide.mdfully updated with feature comparison table and all options.
-
DataGrid decomposition: Extracted
useGridControlledState,useGridRowPipeline,useGridVirtualization,useGridScrollSync,useGridVisibleRows,useGridColumnshooks, plusGridEmptyState,GridErrorOverlay,GridAggregationFooter,GridVirtualRows,GridPinnedRows,GridStandaloneColumnPanel,GridListViewcomponents fromDataGrid.tsx. Each module has a single clear responsibility with typed params and return interfaces. -
Full
anyelimination: Everyanyacrosslib/replaced with proper types orunknown.GridRowModelindex signature, all cell/value/error params, aggregation functions, slot types, and export utilities are now fully typed. Zeroeslint-disablesuppressions remain — every case fixed at the root. - Regression test suite: 3 test files covering column-visibility-model persistence, pivot aggregation correctness including grand-total avg and null-value exclusion, and pagination rendering/row key stability.
-
Pivot null-value fix:
Number(null) === 0caused null numeric fields to be silently included as0in avg/min/max pivot aggregation. Both the per-row bucket loop and the grand-total bucket loop inusePivot.tsnow guard withraw != nullbefore pushing values.
-
onRowClicknever fired whenonCellClickwas registered:Cell.tsxcallede.stopPropagation()on every cell click, silently preventing events from reaching the row'sonClickhandler. Removed — both callbacks now fire in natural bubble order. -
Column visibility panel order not updating after reorder: Panel received
effectiveColumns(pre-ordering, definition order) instead oforderedColumns. Fixed — panel list now reflects the live reordered sequence. -
Reset button ignoring column sequence: Reset only restored visibility; column order was left wherever the user dragged it. Added
onColumnOrderResetcallback that restoresinternalColumnOrderto original definition order. -
FilterPaneldebounce stale-closure: Debounce effect readitem/col.field/currentOperatorfrom stale closure, previously suppressed witheslint-disable. Replaced withuseLayoutEffectrefs-sync pattern. -
FilterPanelDemoinaccessible: Missingslots={{ toolbar: GridToolbar }}meant the filter panel had no UI entry point. Fixed; demo also migrated toDocsLayout. -
EventsDemodead handlers: Fixed brokenonRowClick, dead filter/column-order callbacks, and threeany-typed handler signatures.
- Interactive Pivot Builder: Drag-and-drop UI for users to dynamically create pivot tables.
- Advanced Charts Integration: Inline sparklines and trend visualization.
-
Full source viewer coverage: Migrate all 32 examples to
DocsLayoutusing Vite?rawauto-loading (eliminates string-literal source maintenance). Seedocs/superpowers/plans/2026-07-29-demo-app-refactor.md. - Syntax highlighting: Prism.js token-based highlighting in the source viewer.
- Row-grouping subtotals now use the shared aggregation functions (nulls ignored,
uniquesupported,availableAggregationFunctionshonoured);min/maxno longer overflow the call stack on very large datasets. - Group and tree-data expansion state survives row updates, including server-side lazily loaded children.
- Rows are positioned correctly when rows are pinned to the top; keyboard navigation and
scrollToIndexeskeep the target row fully visible below the sticky header. -
valueFormatterapplies under row grouping;formattedValueis passed torenderCell. -
slots.footer,slots.noRowsOverlayandslots.loadingOverlayare rendered (they were typed but ignored). - New
onRowDoubleClick;ColumnVisibilityPanelexported;exportToExcelAdvancedacceptsgroupedRows. - Dev-mode warnings for an unbounded grid container and for
paginationwith row grouping. - Real-browser test project (Vitest browser mode + Playwright; Chromium, Firefox and WebKit),
npm run test:browser; the npm publish workflow now runs unit and browser tests before publishing. - Already shipped, previously listed as upcoming: npm publishing (since 0.1.0), native PDF export (v1.2.1), GitHub Pages deployment.
-
GridRowMeta: Hierarchy metadata (hasChildren,treeDepth,groupingField,groupingValue,descendantCount,isExpanded,isGroupRow) moved fromGridRowModelinto a separateMap<GridRowId, GridRowMeta>. Exposed asparams.rowMetainrenderCell. The runtime shim (underscore-prefixed fields on copied row objects) was kept through v2.x and removed in v3.0 — seedocs/migration/v2-to-v3.md. -
CellErrorBoundary: CustomrenderCellerrors are now caught per-cell. Failing cells show a⚠indicator with the error as a tooltip; the rest of the grid renders normally. -
GridLocaleText/localeTextprop: All user-visible pagination strings (paginationRowsPerPage,paginationOf,paginationPage,noRowsLabel) are now overrideable for internationalisation. -
Core hook tests:
useGridRowPipeline,useGridControlledState,useGridKeyboardNavigationnow have full test coverage (25 new tests). -
CLAUDE.md: Root-level AI context file auto-loaded by Claude Code and other AI coding assistants.
- Demo app (partial): 32 interactive examples across 6 categories (Main features, Advanced features, Components, Customization, Tutorials, Resources) with categorized sidebar navigation and per-page Table of Contents. Source code viewer present on 6 of 32 examples. Syntax highlighting and public deployment are in the upcoming Demo Site section above.
- Quickstart & Installation Guides: Comprehensive onboarding documentation for developers.
OpenGridX 3.2.2 · MIT · This wiki is generated from docs/ on every push to main. To fix a page, open a PR against the source file.
Start here
Components
- DataGrid
- Header
- Row
- Cell
- Toolbar
- Pagination
- Filter Panel
- Tooltip
- Column Visibility
- Column Grouping
- Column Resizing
- Empty State
- Error Overlay
- Aggregation Footer
Features
- Virtualization
- Filtering & Search
- Sorting & Pagination
- Custom Pagination
- Editing & Reordering
- Row Selection
- Clipboard
- Pinning
- State Persistence
- Aggregation & Pivot
- Tree Data & Grouping
- Cell Spanning
- Master-Detail
- Keyboard & Accessibility
- List View
- Infinite Scroll
- Data Source
- Loading States
- Toolbar Customization
- Export (CSV, Excel, JSON, Print)
- PDF Export
Customization
Upgrading
Contributing
- Contributing
- Testing
- Roadmap
- DataGrid orchestration
- GridRowMeta
- useGridControlledState
- useGridRowPipeline
- useGridColumns
- useGridVirtualization
- useGridVisibleRows
- useGridScrollSync
- useGridStateSnapshot