Skip to content

v2.0.0

Latest

Choose a tag to compare

@ndlabdev ndlabdev released this 11 Sep 10:57
18ad6d0

The largest release the grid has had: sixteen feature modules, nine parts to draw them with, and a second entry point for writing spreadsheets. Every module is opt-in, and a build test proves a feature you do not register is code your bundle never sees.

Upgrading from 1.x is four behaviour changes, each with the diff that fixes it, in MIGRATING.md.

Added

  • Grouping by any number of columns, thirteen aggregators, footers and a grand total
  • Show values as a share of the grand total, the parent group or the row
  • Tree data from nested children or a parent id, and a detail panel under any row
  • Calculated columns from an expression: 31 functions, a dependency graph, no eval
  • A filter builder for nested (A AND B) OR C, beside the column filters
  • Excel-style cell ranges: multiple selections, a fill handle, cut and move, HTML clipboard
  • Find and replace across the rows a filter left
  • Conditional formatting: colour scales, data bars, duplicates, top N, expression rules
  • An import wizard for CSV, TSV, XLSX and the clipboard, staged in the grid to fix in place
  • Saved views, and a link that carries the whole grid state
  • Value masking at render, export, clipboard, search, facet and edit
  • A server row model fetching by page or by block, and a worker row model that filters off the main thread
  • A command palette behind Ctrl/Cmd+K
  • @sv5ui/datagrid/xlsx: real workbooks with styles, Excel's own conditional rules and formula cells, written in chunks
  • GridFeature.component and GridFeature.rowCount as extension points; GridState.status and grid.filteredNodes on the grid
  • 147 more label keys and 66 more slots, in all twelve languages

Changed

  • Breaking. DataGridLabels gains 147 required members; DataGridLabelsInput, the type an app normally passes, is unaffected
  • Breaking. neq on a number column keeps a blank cell, as notEqual on text always has
  • Breaking. A typed column draws text it cannot parse instead of an empty cell
  • The loading skeleton gives its cells role="gridcell"

Fixed

Five in code 1.3.1 already ships:

  • The footer no longer runs page numbers together on a grid of many pages
  • gateReader composes readers once per pass: 15,000 compositions became three
  • A boolean column no longer draws a tick for the string false
  • A height on a non-virtual DataGrid holds the rows inside it
  • A typed column no longer swallows text it cannot parse

And the rest in the new modules, found while the documentation was written against them: a column with an accessor shows what a feature computed for it, the status bar and the screen reader agree on how many rows a filter left, a server hierarchy is a treegrid, a saved view asks the server once, and Find's next match scrolls into view on any grid.

Every change has its paragraph and its reasoning in the CHANGELOG.