Range selection
View sourceDrag across cells to make a rectangular range, extend with Shift+arrow, select-all with Cmd+A. The visual layer composes with the active cell, focus ring, and pinned-column boundaries.
Try this
Range selection is on by default — no opt-in flag.
- Click a cell, then drag to another cell — rectangle highlights every cell in between.
- Click a cell, then Shift+Arrow to grow the range one cell at a time.
- Shift+Click on a far cell to extend the range to that point.
- Cmd+A (or Ctrl+A) to select every cell.
- Drag from a pinned-left column into the unpinned middle and back into pinned-right — the range is contiguous across all three lanes.
- Press Escape (or click outside the range) to clear it.
What range gets you
- Clipboard. Cmd+C copies the rectangle as TSV (tab-separated, paste-ready into Excel / Sheets / VSCode).
- Paste. Paste TSV from anywhere; bc-grid parses + validates + applies as a bulk row patch. See the Copy / paste page.
- Fill handle. The small square at the bottom-right of the active range — drag it to fill values across rows or columns. See the Fill handle page.
- Status-bar aggregation. Sum / count / avg of the selected numeric cells render in the status bar segment.
- Range delete. Opt in via
rangeDeleteEnabled— Delete or Backspace clears every cell in the range with a single confirmation.
API
Range selection is on by default. Pass rangeSelectionOptions={ fillHandle: false } to hide the fill handle, or rangeSelectionOptions={ multiRange: true } to enable disjoint ranges (reserved for the multi-range path). Controlled-state pair: rangeSelection / defaultRangeSelection / onRangeSelectionChange.