A versatile table/datagrid component with built-in keyboard navigation for displaying and interacting with structured data. Use it for anything from simple read-only tables to fully interactive, spreadsheet experiences.
<nve-grid>
<nve-grid-header>
<nve-grid-column>column 0</nve-grid-column><nve-grid-column>column 1</nve-grid-column
><nve-grid-column>column 2</nve-grid-column><nve-grid-column>column 3</nve-grid-column
><nve-grid-column>column 4</nve-grid-column>
</nve-grid-header>
<nve-grid-row>
<nve-grid-cell>cell 0-0</nve-grid-cell><nve-grid-cell>cell 0-1</nve-grid-cell><nve-grid-cell>cell 0-2</nve-grid-cell
><nve-grid-cell>cell 0-3</nve-grid-cell><nve-grid-cell>cell 0-4</nve-grid-cell>
</nve-grid-row>
<nve-grid-row>
<nve-grid-cell>cell 1-0</nve-grid-cell><nve-grid-cell>cell 1-1</nve-grid-cell><nve-grid-cell>cell 1-2</nve-grid-cell
><nve-grid-cell>cell 1-3</nve-grid-cell><nve-grid-cell>cell 1-4</nve-grid-cell>
</nve-grid-row>
<nve-grid-row>
<nve-grid-cell>cell 2-0</nve-grid-cell><nve-grid-cell>cell 2-1</nve-grid-cell><nve-grid-cell>cell 2-2</nve-grid-cell
><nve-grid-cell>cell 2-3</nve-grid-cell><nve-grid-cell>cell 2-4</nve-grid-cell>
</nve-grid-row>
<nve-grid-row>
<nve-grid-cell>cell 3-0</nve-grid-cell><nve-grid-cell>cell 3-1</nve-grid-cell><nve-grid-cell>cell 3-2</nve-grid-cell
><nve-grid-cell>cell 3-3</nve-grid-cell><nve-grid-cell>cell 3-4</nve-grid-cell>
</nve-grid-row>
<nve-grid-row>
<nve-grid-cell>cell 4-0</nve-grid-cell><nve-grid-cell>cell 4-1</nve-grid-cell><nve-grid-cell>cell 4-2</nve-grid-cell
><nve-grid-cell>cell 4-3</nve-grid-cell><nve-grid-cell>cell 4-4</nve-grid-cell>
</nve-grid-row>
<nve-grid-row>
<nve-grid-cell>cell 5-0</nve-grid-cell><nve-grid-cell>cell 5-1</nve-grid-cell><nve-grid-cell>cell 5-2</nve-grid-cell
><nve-grid-cell>cell 5-3</nve-grid-cell><nve-grid-cell>cell 5-4</nve-grid-cell>
</nve-grid-row>
<nve-grid-row>
<nve-grid-cell>cell 6-0</nve-grid-cell><nve-grid-cell>cell 6-1</nve-grid-cell><nve-grid-cell>cell 6-2</nve-grid-cell
><nve-grid-cell>cell 6-3</nve-grid-cell><nve-grid-cell>cell 6-4</nve-grid-cell>
</nve-grid-row>
<nve-grid-row>
<nve-grid-cell>cell 7-0</nve-grid-cell><nve-grid-cell>cell 7-1</nve-grid-cell><nve-grid-cell>cell 7-2</nve-grid-cell
><nve-grid-cell>cell 7-3</nve-grid-cell><nve-grid-cell>cell 7-4</nve-grid-cell>
</nve-grid-row>
<nve-grid-row>
<nve-grid-cell>cell 8-0</nve-grid-cell><nve-grid-cell>cell 8-1</nve-grid-cell><nve-grid-cell>cell 8-2</nve-grid-cell
><nve-grid-cell>cell 8-3</nve-grid-cell><nve-grid-cell>cell 8-4</nve-grid-cell>
</nve-grid-row>
<nve-grid-row>
<nve-grid-cell>cell 9-0</nve-grid-cell><nve-grid-cell>cell 9-1</nve-grid-cell><nve-grid-cell>cell 9-2</nve-grid-cell
><nve-grid-cell>cell 9-3</nve-grid-cell><nve-grid-cell>cell 9-4</nve-grid-cell>
</nve-grid-row>
</nve-grid>
column 0column 1column 2column 3column 4 cell 0-0cell 0-1cell 0-2cell 0-3cell 0-4 cell 1-0cell 1-1cell 1-2cell 1-3cell 1-4 cell 2-0cell 2-1cell 2-2cell 2-3cell 2-4 cell 3-0cell 3-1cell 3-2cell 3-3cell 3-4 cell 4-0cell 4-1cell 4-2cell 4-3cell 4-4 cell 5-0cell 5-1cell 5-2cell 5-3cell 5-4 cell 6-0cell 6-1cell 6-2cell 6-3cell 6-4 cell 7-0cell 7-1cell 7-2cell 7-3cell 7-4 cell 8-0cell 8-1cell 8-2cell 8-3cell 8-4 cell 9-0cell 9-1cell 9-2cell 9-3cell 9-4
Installation
import '@nvidia-elements/core/grid/define.js';
<nve-grid>
<nve-grid-header>
<nve-grid-column>column 1</nve-grid-column>
<nve-grid-column>column 2</nve-grid-column>
<nve-grid-column>column 3</nve-grid-column>
<nve-grid-column>column 4</nve-grid-column>
</nve-grid-header>
<nve-grid-row>
<nve-grid-cell>cell 1-1</nve-grid-cell>
<nve-grid-cell>cell 1-2</nve-grid-cell>
<nve-grid-cell>cell 1-3</nve-grid-cell>
<nve-grid-cell>cell 1-4</nve-grid-cell>
</nve-grid-row>
...
</nve-grid>
Column Count
Do Don't
Ensure column count matches the number of cells in the row to preserve keyboard navigation.
<nve-grid>
<div hidden></div>
<nve-grid-header>
<nve-grid-column>column 0</nve-grid-column><nve-grid-column>column 1</nve-grid-column
><nve-grid-column>column 2</nve-grid-column><nve-grid-column>column 3</nve-grid-column>
</nve-grid-header>
<nve-grid-row>
<nve-grid-cell>cell 0-0</nve-grid-cell><nve-grid-cell>cell 0-1</nve-grid-cell><nve-grid-cell>cell 0-2</nve-grid-cell
><nve-grid-cell>cell 0-3</nve-grid-cell>
</nve-grid-row>
<nve-grid-row>
<nve-grid-cell>cell 1-0</nve-grid-cell><nve-grid-cell>cell 1-1</nve-grid-cell><nve-grid-cell>cell 1-2</nve-grid-cell
><nve-grid-cell>cell 1-3</nve-grid-cell>
</nve-grid-row>
<nve-grid-row>
<nve-grid-cell>cell 2-0</nve-grid-cell><nve-grid-cell>cell 2-1</nve-grid-cell><nve-grid-cell>cell 2-2</nve-grid-cell
><nve-grid-cell>cell 2-3</nve-grid-cell>
</nve-grid-row>
<nve-grid-row>
<nve-grid-cell>cell 3-0</nve-grid-cell><nve-grid-cell>cell 3-1</nve-grid-cell><nve-grid-cell>cell 3-2</nve-grid-cell
><nve-grid-cell>cell 3-3</nve-grid-cell>
</nve-grid-row>
</nve-grid>
column 0column 1column 2column 3 cell 0-0cell 0-1cell 0-2cell 0-3 cell 1-0cell 1-1cell 1-2cell 1-3 cell 2-0cell 2-1cell 2-2cell 2-3 cell 3-0cell 3-1cell 3-2cell 3-3 Do not set the column count to a value that does not match the number of cells in the row.
<nve-grid>
<div hidden></div>
<nve-grid-header>
<div hidden></div>
<nve-grid-column>column 0</nve-grid-column><nve-grid-column>column 1</nve-grid-column
><nve-grid-column>column 2</nve-grid-column><nve-grid-column>column 3</nve-grid-column>
</nve-grid-header>
<div>
<nve-grid-row>
<nve-grid-cell>cell 0-0</nve-grid-cell><nve-grid-cell>cell 0-1</nve-grid-cell
><nve-grid-cell>cell 0-2</nve-grid-cell>
</nve-grid-row>
</div>
<div>
<nve-grid-row>
<nve-grid-cell>cell 1-0</nve-grid-cell><nve-grid-cell>cell 1-1</nve-grid-cell
><nve-grid-cell>cell 1-2</nve-grid-cell>
</nve-grid-row>
</div>
<div>
<nve-grid-row>
<nve-grid-cell>cell 2-0</nve-grid-cell><nve-grid-cell>cell 2-1</nve-grid-cell
><nve-grid-cell>cell 2-2</nve-grid-cell>
</nve-grid-row>
</div>
<div>
<nve-grid-row>
<nve-grid-cell>cell 3-0</nve-grid-cell><nve-grid-cell>cell 3-1</nve-grid-cell
><nve-grid-cell>cell 3-2</nve-grid-cell>
</nve-grid-row>
</div>
</nve-grid>
column 0column 1column 2column 3 cell 0-0cell 0-1cell 0-2
cell 1-0cell 1-1cell 1-2
cell 2-0cell 2-1cell 2-2
cell 3-0cell 3-1cell 3-2
Release Status
All elements and features go through 3 phases of stability, pre-release, beta and stable.
pre-release Docs Preview API Documentation Fully Themeable
beta Robust unit test coverages Passed API Review Passed Designer VQA Review Included in library package stable No known outstanding AA WCAG issues No known outstanding performance issues Adapts to different screen/container sizes No breaking API changes for at least 90 days