@gridkitjs/react v0.9.0
Last updated August 30, 2026
Minor Changes#
-
bedd76c:
infiniteScroll: loads more rows as the user scrolls near the bottom of the grid's body, in place ofpaginated's page-by-page navigation.<DataGridComponent columns={columns} dataSource={rows} height={400} infiniteScroll={{ hasMore, isLoadingMore, onLoadMore }} />hasMoreandonLoadMoreare required;isLoadingMoresuppresses further calls while a load is in flight;rootMargin(default"200px") tunes how early it fires relative to the grid's own scrollable body;loadingTemplatereplaces the built-in "Loading more…" row.Mutually exclusive with
paginated— setting both logs a dev-timeconsole.errorand onlypaginatedtakes effect. Independent ofvirtualized, though pairing the two is the recommended combination for a dataset that grows without bound. -
bedd76c:
height: bounds the row area to a fixed size, independently scrollable — the group-by bar, header, footer, and pager stay outside it and always visible.<DataGridComponent columns={columns} dataSource={rows} height={400} />A number is pixels; a string is passed through as a CSS length (e.g.
"60vh"). Omitted, the body's height stays content-driven, exactly as before this prop existed.Breaking: the header, body, and footer now render as three separate
<table>s —.gridkit-data-grid-header, the body's own (wrapped in a new.gridkit-data-grid-bodyscroll container), and.gridkit-data-grid-footer— inside a new.gridkit-data-grid-tableswrapper<div>that now carriesrole="grid"/"treegrid"and the grid's other grid-level ARIA attributes. Previously all three sat inside one<table>, which itself carried that role. This only matters to a consumer whose own CSS or tests reach into the grid's raw table structure (unsupported usage, but possible) — every cell-level role, and everything reachable throughDataGridApi, is unchanged. One exception:DataGridApi.tablenow points at the body's<table>specifically (the one holding<tbody>) rather than a single table that also held the header and footer. -
bedd76c:
virtualized: renders only the rows near the current scroll position rather than every row at once, for a dataset too large to mount in full. Requiresheightto be set — a body with no bounded height has no viewport to window rows against, and a dev-timeconsole.errorfires ifvirtualizedis on without it.<DataGridComponent columns={columns} dataSource={rows} height={400} virtualized />Row height is measured per row rather than assumed uniform, so
.is-wrappedcells and group header/summary rows (which differ in height from data rows) lay out correctly. Two new props tune it:overscan(rows rendered outside the visible range on each side, default4) andestimatedRowHeight(the assumed height for a row never yet measured, default40) — both meaningful only withvirtualizedon.scrollToRowand keyboard navigation (arrow keys,Home/End,Ctrl+Home/Ctrl+End) both work correctly when their target row isn't currently mounted: they scroll it into range first, using measured heights where known, then correct the exact position once it mounts and is measured.Fully orthogonal to
paginatedandgroupBy— combinable with either, though virtualizing an already-small paginated page is low-value.@gridkitjs/coregainsvisibleRange(plus itsRowHeights/VisibleRangetypes) — the pure range mathvirtualizedis built on. Not something most consumers need directly; it's exported for the same reasonpaginateRowsis.
Patch Changes#
- Updated dependencies [bedd76c]
- @gridkitjs/core@0.10.0