Skip to content

GridRenderer

GridRenderer draws a workbook into a container and owns selection, editing, commands and view options.

ts
import { GridRenderer } from '@ezygrid/core';

const renderer = new GridRenderer(container, workbook, {
  formulaBar: true,
  toolbar: true,
});

Options

ts
interface GridRendererOptions {
  mode?: 'editor' | 'grid';   // default editor
  topbar?: boolean;          // default true in editor mode
  sheetTabs?: boolean;       // default true in editor mode
  statusBar?: boolean;       // default true in editor mode
  overscanRows?: number;      // default 5
  overscanColumns?: number;   // default 2
  headerHeight?: number;      // default 24
  headerWidth?: number;       // default 48
  formulaBar?: boolean;       // default true (name box + formula input)
  toolbar?: boolean;          // editor: ribbon, default true; grid: basic toolbar, default false
  contextMenu?: boolean;      // default true
  direction?: 'ltr' | 'rtl';
}

Members

ts
readonly selection: SelectionService;
readonly editing: EditService;
readonly commands: CommandRegistry;

render(): void;    // full pass
refresh(): void;   // repaint without clearing caches
destroy(): void;
ts
scrollTo(row: number, column: number): void;
navigateToAddress(address: string): void;   // name-box style navigation
setFormulaBarVisible(visible: boolean): void;
commitEdits(): void;
focus(): void;
insertFormula(formula: string): void;
setZoom(zoom: number): void;
getZoom(): number;

enablePagination(pageSize: number): void;
disablePagination(): void;
setPage(page: number): void;
getPage(): number;
getPageCount(): number;

Introspection

ts
renderedCellCount: number;               // cells currently in the DOM
getCellElement(row, column): HTMLElement | undefined;
getEditorInput(): HTMLInputElement | null;

Built-in commands

IdShortcutAction
edit.undo / edit.redoMod+Z / Mod+YHistory
clipboard.copy / .cut / .pasteMod+C/X/VClipboard
cells.fillDownMod+DFill down
format.bold / .italic / .underlineMod+B/I/UStyles
format.clearClear formatting
format.align.left / .center / .rightAlignment

Register your own via the command registry or renderer.commands.

Rendering pipeline

  • Two-axis virtualization with a DOM cell pool and spacer scroller
  • Frozen rows/columns in dedicated overlay layers
  • Merges render from the anchor; covered cells are recycled
  • Nested header levels render as spanning header rows
  • Charts, images and shapes render on a floating media layer
  • ARIA grid semantics are emitted during rendering

Released under the MIT License.