npm.io
0.27.25 • Published 1 week ago

@sneat/datagrid

Licence
Version
0.27.25
Deps
0
Vulns
0
Weekly
0

@sneat/datagrid

Angular wrapper around Tabulator (sneat-datagrid), used for dense result grids — e.g. DataTug's table/query results page.

Basic usage

<sneat-datagrid
  [columns]="columns"
  [data]="rows"
  layout="fitColumns"
/>

Cell selection (opt-in)

Cell/range selection is off by default so existing consumers are unaffected. Set selectableRange to enable it, and listen to cellSelected for the currently active cell (fired on a mouse click, and — once selectableRange is on — on keyboard arrow-key navigation between cells too):

<sneat-datagrid
  [columns]="columns"
  [data]="rows"
  [selectableRange]="true"
  (cellSelected)="onCellSelected($event)"
/>
import { IDataGridCellSelectedEvent } from '@sneat/datagrid';

onCellSelected(event: IDataGridCellSelectedEvent): void {
  // event.column.field  — e.g. "CustomerId"
  // event.column.index  — the field's position in the `columns` input
  // event.value         — the cell's current value
  // event.rowData       — the full row's data object
  console.log(event);
}

selectableRange mirrors Tabulator's own option: true for unlimited ranges, or a number to cap how many ranges can be selected at once. It is mutually exclusive with row selection (selectable) — Tabulator disables range selection and logs a console warning if both are set.

Column markers

columnMarkers renders a small, unobtrusive badge in a column's header, keyed by field. The grid applies no semantic meaning to these — it only renders what the consumer passes (e.g. a semantic-detection layer flagging a declared or inferred CustomerId column):

<sneat-datagrid
  [columns]="columns"
  [data]="rows"
  [columnMarkers]="{ CustomerId: { label: 'PK', title: 'Primary key', kind: 'declared' } }"
/>

kind is purely presentational ('declared' vs 'inferred' render with a slightly different style); it carries no behaviour.