Rows and columns are virtualized, display performance is not impacted by the number of rows or columns. Renders have been optimized to the strict minimum, follow the performance guides to get the most out of DSG.
Simple underlying data
You don't need to wrap you data in fancy objects.
The spreadsheet takes 100% of the div it is in and grows and shrinks with it. You can specify how columns should react using known flexbox syntax. More details on how to setup column widths.
A lot of keyboard shortcuts are supported so power user can feel just right:
Arrowsto move active cell around
Shift+Tabto go to next / previous cell
Shift+Arrowsto select multiple cells
Shift+Clickto expand selection
⌘+Arrowsto move to first / last / top / bottom cell
⌘+Shift+Arrowsto select to first / last / top / bottom cell
F2to start / stop editing cell
Shift+Enterto insert row below
⌘+Dto duplicate current row / selected rows
Delto clear cell / delete rows
⌘+Ato select all
Ctrl+Left clickto open context menu
Smart context menu when right clicking is 100% supported and customizable with a single component. More details on how to setup a custom context menu.
Try right clicking on the grid, selecting a few rows, clicking on headers...
Copy pasting to and from Excel, Google-sheet, and other spreadsheet software is supported and completely customizable: you decide what data is copied and how pasting is handled with simple functions. More details on how to customize copy pasting behavior.
Expanding the selection is supported and can be disabled. It does not require any additional work it to work. Try it out on other examples!
It might be desirable to lock rows. Here the user cannot insert or delete rows, even when using keyboard shortcuts or when pasting large data-set. More details on grid options.
Disable columns or cells
Columns can be disabled entirely, or on a per-row basis.
Disabling a column prevents the user from editing its cells, including any pasting or deleting operation. The user can still copy the value of a disabled column. More details on disabling columns and cells.
Try toggling the "active" column: