Skip to main content

Current limitations

The current feature surface is broad, but the following constraints should be evaluated before adoption.

Not currently implemented​

  • Variable or automatic row heights and cell text wrapping (header labels can wrap and grow the header: wrapHeaderText / autoHeaderHeight)
  • Sticky column-group labels: a wide group's label scrolls out of view with the group's left edge rather than staying visible while the group is on screen
  • Master/detail row panels
  • Pivoting on the server-side row model (client-side pivot is supported)
  • Within pivot mode: filters on the generated columns (filters run pre-pivot on source rows), in-table row/column grand totals (the footer aggregate row shows per-column grand totals), and drag-and-drop between the column panel's field wells (an entry drags to reorder within its own well; moving between roles is the + and × buttons)
  • ARIA exposure of the column-group header hierarchy (parent header cells are presentational; leaf headers are full columnheaders)
  • An in-grid contextual keyboard-shortcut reference

The grid's assistive-technology support — the ARIA grid model, focus and announcement behavior, and its current boundaries — is described on the dedicated accessibility page.

Client-side-only behavior​

Quick filter, full-width rows, custom filter matchers, and row transactions require the client-side model. Server-side grouping, server-side tree data, and sticky ancestors are supported, but server-side group sorting is local to each listing. Tree data's path, parent, and children relationship modes are client-side; the server-side model uses mode: "server", where the data source answers one parent's children at a time.

The quick filter's find behavior additionally needs data-row cells to highlight, so it is unavailable while the pivot layout is displayed (every displayed row there is a group row). In both cases getFindState().available is false and the search filters instead.

Finding in a very narrow grid keeps one rough edge. A match the grid cannot scroll clear of the floating search box is normally uncovered by moving the box to the opposite edge (Keeping matches visible), but that only helps where the grid can hold the box clear of where it already stands — under roughly twice its width, both edges cover the same cells, so the box stays put and the match stays behind it. Host the widget in the toolbar at those widths, where it sits outside the data region altogether.

Server-side differences​

The server is responsible for filtering and sorting complete data. As a result, iteration cannot expose a separate pre-filter/pre-sort universe. Open-ended listings have provisional row/page counts until a short block establishes the end. Under server-side tree data, filtering — ancestor preservation included — is likewise the server's. Export writes the rows the client holds, in the shape on screen: an expanded parent with the children the grid has fetched, a collapsed one alone, and nothing from blocks never requested. The aggregate cells of a server-side export — group subtotals and the footer — are the numbers the grid displays, written as values rather than formulas, since a formula over the exported rows could not reproduce them.

Layout​

All rows currently have one fixed height. Cell spans stop at pinned-section boundaries.

Column virtualization covers the body's centre section only. The header renders a cell for every column (its cost is columns × header levels, and autoHeaderHeight measures every header cell), as do the pinned sections, the aggregate row and the pinned and sticky rows. While any centre column defines colSpan, the centre renders every column. A span that exists only on some rows can produce a visually non-rectangular selected region even though the selection model remains a rectangle.

Right-to-left​

Right-to-left layout is supported, with these exceptions:

  • Sparklines and charts render left-to-right in a right-to-left grid.
  • Exported files (CSV and Excel) are not mirrored: columns keep the grid's column order.
  • The direction is fixed when the grid is created. Changing dir on the page (or an ancestor) later does not flip a live grid, and enableRtl cannot be updated at runtime; destroy the grid and create it again.