Glossary

Terminology used across the docs and the source. Sorted A-Z. If a term is unclear in a topic page and isn't on this list, please file an issue.

A

Accessor. A function on a ColumnDef (accessorFn) that computes a cell value from the row instead of reading a property by field. Used heavily by pivot tables and computed columns.

Active cell. The cell with focus. Tracked through every keyboard move + click; exposed via onActiveCellChange. At most one cell is active per grid. Has tabindex="0"; every other cell has tabindex="-1" (roving-tabindex pattern).

Aggregator. A function that reduces a group's values to a single cell value (sum, avg, count, min, max, custom). Used by columnGroupingFeature and the pivot engine.

API (SvGridApi). The imperative interface exposed via <SvGrid onApiReady>. Methods like setSort, setFilter, addRow, getDisplayedRows. See API reference.

C

Cell context. The ctx object passed to cell, editable, and formatter callbacks. Contains cell, row, column, table, getValue. Used inside custom cell snippets to access surrounding state.

Column definition (ColumnDef). The plain object that describes one column: how to read its value (field / accessorFn), how to render it (cell, header), and which features apply (editable, format, editorType). See Column definitions.

Column group. A ColumnDef whose columns array contains child column defs. The grid emits one header row per nesting depth with proper colSpan. See Column groups.

Controlled vs uncontrolled state. Controlled: the consumer owns the state (a $state in your component) and listens to change events. Uncontrolled: the engine owns the state internally. Most grid state is uncontrollable-by-default; opt in via the onXxxChange props.

D

Density. The vertical compaction of rows. Controlled via the --sg-row-height CSS variable + the rowHeight prop. Default is 36 px ("comfortable"); 28 px is "compact"; 48 px is "loose".

Display rows. The rows the grid is currently showing AFTER the pipeline runs (filter -> sort -> group -> page). Accessible via api.getDisplayedRows(). NOT the same as the raw data prop.

E

Editor type. A string on the ColumnDef that picks which built-in editor the grid uses when a user edits the cell. Values: 'text' / 'number' / 'date' / 'datetime' / 'checkbox' / 'list' / 'chips'. A column without editorType is read-only even when enableInlineEditing is true.

Engine. Layer 2 in the architecture. The pure-function row-and-column model pipeline. Lives in packages/sv-grid-community/src/core.ts + the row-models/ folder.

F

Feature. A bundle of row-model + state + behaviour you register via tableFeatures({...}). Examples: rowSortingFeature, columnFilteringFeature. Features compose - registering five of them is normal.

Field. The row property a column reads + writes by default. A shortcut for accessorFn: (row) => row[field]. When you can use field, prefer it - the engine has a fast path for property-keyed columns.

Filter mode. A single prop on <SvGrid> that picks which filter UI the grid renders: 'menu' (icon in each header), 'row' (input under each header), 'global' (one search box), or 'none'.

Format / formatter. format is a declarative config ({ type: 'currency', currency: 'USD' }) that the grid hands to Intl. formatter is a free-form callback that returns a string. Use format for standard types; formatter for custom output.

G

Group by. A list of column ids whose unique values become rollup group rows. Set via api.setGroupBy([...]) or the column menu's "Group by this column" entry. Drives columnGroupingFeature.

H

Header context. The ctx object passed to header and footer templates. Contains header, column, table. Used inside custom header snippets.

Headless. Layer 2 without the renderer. createSvGrid(...) returns a headless instance that emits the same row model + state but doesn't paint anything. See Why headless?.

I

Imperative API. See API (SvGridApi).

Inline editing. Editing that happens inside the cell itself, vs in a side form. Toggled via enableInlineEditing on <SvGrid> + editorType on each column.

L

Layer 1, 2, 3. See Architecture overview. Layer 1 is your data; Layer 2 is the engine; Layer 3 is the <SvGrid> renderer.

License key. A string starting with SVPRO- set via setLicenseKey(...). Removes the unlicensed watermark + console nudge. See API stability for license-related errors.

P

Pinned column. A column sticky-positioned to the left or right edge while the rest scroll. Set via the column menu or api.pinColumn(id, 'left' | 'right' | null).

Pipeline. The chain of row-model transformations: core -> filtered -> sorted -> grouped -> expanded -> paginated. Runs once per state change, NOT per scroll frame.

Pivot. A reshape of facts into a grid of intersections - row dimensions cross column dimensions, with measures (aggregated values) at each intersection. SvGrid doesn't have a pivot prop; the pivot engine in pivot.md builds the pivoted data + nested ColumnDef tree the renderer needs.

Placeholder row. A frozen "stand-in" row used by sparse infinite scroll. Renders skeleton cells until the real row loads. See Server-side data.

Pro. The paid sv-grid-pro companion package adding export, import, print, pivot helpers, and the AI assistant. Installed separately; activated by installPro(api).

R

Render template. A cell / header / footer value that returns a Svelte snippet via renderSnippet(SnippetRef, props). The grid mounts the snippet inside the cell.

Roving tabindex. The pattern of giving only the active cell tabindex="0" while every other cell has tabindex="-1". Puts the grid in the tab order exactly once. See Accessibility.

Row data. The data prop. Anything assignable to RowData[] (which is Record<string, unknown>[]). Plain objects; the grid never introspects beyond field reads.

Row model. A pipeline stage that takes rows in and emits rows out. Examples: createSortedRowModel, createFilteredRowModel. Pipe them in via tableFeatures(...). See Architecture.

S

Selection range. A rectangular cell selection (anchor + focus cells), enabled by enableCellSelection={true}. Copy + paste (TSV) and the fill handle both operate on this range.

Snippet. A Svelte 5 {#snippet Foo(props)} block. Used by the grid as the render template format for cells, headers, and editors. renderSnippet(Foo, props) is the wrapper the column passes to cell.

Soft-gate. The unlicensed Pro behaviour: features still run; a small watermark + one-time console message appear. Removed by setLicenseKey('SVPRO-...').

T

Table features. The bag returned by tableFeatures({...}) - a typed object identifying which row models + state slices the grid should enable. Pass to <SvGrid features={...}> and use as the first generic of ColumnDef<...>.

Tree row. A row with a depth field + childIds (or equivalent). Renders with indented chevron + connector lines. The grid doesn't have a treeData prop; you derive visibleRows from allRows + expanded. See Tree rows.

V

Virtualization. Rendering only the rows + columns currently in view + a small overscan buffer. Enabled by default for any grid with more than a few hundred rows. Bypassed in jsdom (zero layout metrics)

Visible rows. Same as Display rows.

W

Watermark. The "Unlicensed sv-grid-pro" badge that appears bottom-right when a Pro feature runs without a valid license. Removed by setLicenseKey('SVPRO-...') or dismissUnlicensedNudge() (the nudge only).

See also