v1.0.18 (Latest)
The latest changelog for LyteNyte Grid. Track new features, improvements, and changes with each release.
Minor releases that include only internal code refactors or performance enhancements will not have a corresponding changelog entry. Changelog entries are added only for externally visible changes, such as bug fixes or new features.
v1.0.18
Adds LyteNyte Grid to the shadcn registry. See the installation guide to get started with LyteNyte Grid in shadcn.
Introduces three new prebuilt themes for LyteNyte Grid: shadcn light, shadcn dark, and cotton candy. See the demo for live examples, or refer to the theming guide for instructions on using the prebuilt themes.
v1.0.17
Enhanced useServerDataSource interfaces. This patch adds several useful server data loading
methods available from the returned server data source hook:
const ds = useServerDataSource({ });ds.[method_name] // use method here
refresh: Triggers a new data fetch for the current view. Enables easy polling.requestForGroup: Returns the DataRequest for a given group row.requestForNextSlice: Returns the DataRequest for the next slice to aid optimistic data fetching.requestsForView: Returns the DataRequests for the current view.seenRequests: A writable set that lets users clear or add request IDs to LyteNyte Grid's seen requests cache.
Additionally, the useServerDataSource hook now accepts an optional dataFetchExternals dependency array.
Use this to make the server data source depend on external React state.
See the server data loading guides for full details on using the server data source in LyteNyte Grid.
Other Fixes
- Fixed
full-widthrows in Firefox not being positioned correctly in the view.
v1.0.16
Bug fixes for Firefox
- Fixed columns pinned to the end of the grid not staying in place while scrolling.
- Fixed master-detail rows causing overflow.
- Fixed column header dragging for swapping columns.
v1.0.0
LyteNyte Grid v1.0.0 marks the official stabilization of the LyteNyte Grid API. This release incorporates lessons learned from earlier iterations and developer feedback, with a strong focus on flexibility.
At a glance, v1.0.0 delivers:
- Stabilized public interfaces, going forward, only minor changes are expected.
- Headless rendering interfaces, prior versions used a “black-box” component, which made extensions difficult. The new headless API is intuitive for React developers and makes future improvements easier without breaking changes.
- Improvements across the board, better memory usage, higher performance, and reduced bundle size.
Migration from v0.9.x
Column Definition Changes
headerName→nameheaderAutosizeFn→autosizeHeaderFncellAutosizeFn→autosizeCellFncellAutosizeFnremoved. Instead, define only the columns you want to autosize in the API.typenow accepts arbitrary strings and includes support fordatetime. Thecomplextype has been removed.aggFnsAllowedandaggFnDefaultmoved touiHints. Any column can now be aggregated without explicit configuration.hidableremoved. All columns are now hidable.- Editing props consolidated.
cellEditPredicate,cellEditParser,cellEditUnparser,cellEditProvider,cellEditParams, andcellEditRowUpdaterare replaced byeditRenderer,editSetter, andeditable. See our cell editing guide. sortablemoved touiHints. All columns are sortable when added to the sort model.sortCycleandsortComparatorremoved. Define custom logic in your own code as needed.inFilterLabelFormatterremoved. Now handled at the row data source level.inFilterFieldremoved. no longer needed.quickSearchFieldremoved. no longer needed.groupVisibilitysimplified toalways,open, orclosed.rowGroupablemoved touiHints. Any column can now be grouped when added to the group model.rowGroupFieldremoved. The row group model now accepts afieldobject directly, making it more flexible.measureFnsAllowedandmeasureFnDefaultremoved. The pivot model now accepts an aggregation model.resizableandmovablemoved touiHints.
LyteNyte State
aggFnsremoved. Aggregations are now defined at the row data source level.autosizeDoubleClickHeader→columnDoubleClickToAutosizecellEditPointerActivator→editClickActivatorcellEditProviders→editRendererscolumnHeaderHeight→headerHeightcolumnHeaderRenderersremoved. unnecessary in headless mode.columnGroupHeaderHeight→headerGroupHeightcolumnGroupHeaderRendererremoved. unnecessary in headless mode.columnGroupStickHeadersremoved. unnecessary in headless mode.columnGroupIdDelimiter→columnGroupJoinDelimiter(clearer naming).columnGroupExpansionState→columnGroupExpansionscolumnSpanScanDistance→colScanDistancerowDetailMarkerremoved. unnecessary.rowDetailEnabledremoved. Row detail is always available via detail expansion state.- Row dragging properties (
rowDragEnabled,rowDragMultiRow,rowDragExternalGrid,rowDragPredicate) removed. Usegrid.api.useRowDraginstead. rowGroupAutoApplyAggDefaultremoved. unnecessary.rowGroupColumnTemplate→rowGroupColumn- Pagination properties (
paginate,paginatePageSize,paginateCurrentPage) removed. Controlled by row data source. rowSelectionCheckboxremoved. unnecessary.rowSelectionPointerActivator→rowSelectionActivatorrowSelectionPredicateremoved. Row selection can now be prevented via therowSelectBeginevent.rowSelectionSelectChildren→rowSelectChildrenrowSelectionMultiSelectOnClickremoved. unnecessary.sortComparatorFnsremoved. Use custom comparators directly insortModel.- Overlay and menu-related properties (
overlayToShow,overlays,columnMenuRenderer,contextMenuRenderer,contextMenuPredicate,panelFrames,panelFrameButtons,menuFrames) removed. unnecessary in headless mode. - Pivot-related properties refactored.
columnPivotModelnow holds the complete pivot configuration. See the column pivoting guide. filterQuickSearch→quickSearchfilterModelsplit intoFilterModel(simple filters) andFilterInModel(set filters).measureModelremoved. Now defined incolumnPivotModel.treeDataremoved. unnecessary.
Grid API
autosizeMeasureremoved. Use the newmeasureTextfunction exported by LyteNyte Grid packages.- Cell editing events:
cellEditBegin→editBegincellEditEnd→editEndcellEditIsActive→editIsCellActive
- Most
cellEdit*APIs removed. Use events (editBegin,editEnd) instead. columnFieldnow takes(column, row)instead of(row, column).columnGroupToggle→columnToggleGroupcolumnUpdatenow handles both single and multiple updates.
ReplacescolumnUpdateMany,columnResize, andcolumnResizeMany.- Column movement APIs simplified into
columnMove. - Numerous
columnIs*andcolumnSort*helpers removed. No longer necessary. - Navigation APIs consolidated. Use
focusCellinstead ofnavigate*. navigateScrollIntoView→scrollIntoView- Row refresh, reload, and data replacement APIs removed. Handled by row data source.
- Selection APIs simplified:
rowSelectionGetSelected→rowSelectedrowSelectionSelect→rowSelectrowSelectionSelectAll→rowSelectAll
- Undo/redo and legacy menu/frame APIs removed.
- Pivot APIs consolidated into the
columnPivotModel.
Migrating to Headless Components
Replace:
function MyGrid() {const grid = useLyteNytePro(...); // or corereturn <LyteNyteGrid grid={grid} />;}
With:
import { Grid } from "@1771technologies/lytenyte-pro";function MyGrid() {const grid = Grid.useLyteNyte(...);return (<Grid.Root grid={grid}><Grid.Viewport><Grid.Header>{view.header.layout.map((row, i) => (<Grid.HeaderRow key={i} headerRowIndex={i}>{row.map((c) =>c.kind === "group" ? (<Grid.HeaderGroupCell key={c.idOccurrence} cell={c} />) : (<Grid.HeaderCell key={c.id} cell={c} />))}</Grid.HeaderRow>))}</Grid.Header><Grid.RowsContainer><Grid.RowsCenter>{view.rows.center.map((row) =>row.kind === "full-width" ? (<Grid.RowFullWidth key={row.id} row={row} />) : (<Grid.Row key={row.id} row={row}>{row.cells.map((c) => (<Grid.Cell key={c.id} cell={c} />))}</Grid.Row>))}</Grid.RowsCenter></Grid.RowsContainer></Grid.Viewport></Grid.Root>);}