DataGrid Core
This section is split into two audiences:
- Core: deterministic headless grid for advanced integrations.
- Sugar: fast setup without direct access to Core.
Guidance
- When to use Core vs Sugar → /datagrid/core-vs-sugar
Package set
- Core: row/column models, viewport, snapshots, determinism,
GridApi. - Interaction Orchestration Engine: range edit, copy/paste/cut, fill/drag/move, pointer lifecycle.
- Adapters: Vue/Laravel stay thin and consume Core + Interaction Runtime.
Design philosophy
Affino DataGrid is:
- deterministic
- snapshot-driven
- headless-first
- interaction-runtime-aware
- contract-enforced
- performance-budgeted
DataGrid Platform
- Core Runtime
- Interaction Engine
- Framework Adapters
- Integration Contracts
Core path (advanced)
- Core quickstart: models +
GridApi→ /datagrid/core-quickstart - Architecture: package boundaries → /datagrid/architecture
- Data models: row/column/row-node → /datagrid/data-models
- Model contracts: API invariants → /datagrid/model-contracts
- Grid API: operation facade → /datagrid/grid-api
- GroupBy projection: pipeline and groups → /datagrid/groupby-projection
- Row models: client/server, refresh → /datagrid/row-models
- Interaction Orchestration Engine: selection/clipboard/fill/move → /datagrid/orchestration
- Data source protocol: pull/push/abort‑first → /datagrid/data-source-protocol
- Deterministic integration: pinned/overlay/viewport → /datagrid/deterministic-integration
- Runtime events: diagnostics and hooks → /datagrid/runtime-events
- Custom renderer:
useAffinoDataGridUi→ /datagrid/custom-renderer - Range selection engine: anchor/focus/range → /datagrid/range-selection
- Fill handle: autofill and copy → /datagrid/fill-handle
- Range move: drag‑move ranges → /datagrid/drag-move
- Reordering: row/column drag → /datagrid/reordering
- Viewport & a11y: snapshot integration → /datagrid/viewport-a11y
- End‑to‑end: full Core → Interaction Runtime → UI path → /datagrid/end-to-end
Sugar path (fast setup)
- Vue integration: ready component + composable UI → /datagrid/vue-integration
- Sugar overview: fast table without Core → /datagrid/sugar-overview
- Vue Sugar Playbook: full
useAffinoDataGridpath → /datagrid/vue-sugar-playbook
Operations & quality
- Migration guide: legacy move → /datagrid/migration-guide
- Migration & compat: contract stability → /datagrid/migration-compat
- Quality gates: required checks → /datagrid/quality-gates
- Performance gates: SLA and budgets → /datagrid/performance-gates
- Perf‑by‑design: runtime contracts → /datagrid/perf-by-design-runtime
- Parity matrix: unified matrix → /datagrid/parity-matrix
- Performance & diagnostics: perf contours and metrics → /datagrid/performance-diagnostics
- Testing & QA: unit/integration/e2e → /datagrid/testing-qa
- Release notes: summary → /datagrid/releases
- Troubleshooting: common issues → /datagrid/troubleshooting
Baseline references (contracts)
- Models and contracts: /docs/datagrid-model-contracts.md
- Unified Grid API: /docs/datagrid-grid-api.md
- Deterministic integration: /docs/datagrid-deterministic-integration-setup.md
- Typed runtime events: /docs/datagrid-typed-runtime-events.md
Core in 5 lines
ts
import {
createClientRowModel,
createDataGridColumnModel,
createDataGridApi,
} from "@affino/datagrid-core"
const rowModel = createClientRowModel({ rows })
const columnModel = createDataGridColumnModel({ columns })
const api = createDataGridApi({ rowModel, columnModel })Next steps:
- drive sort/filter/group via
api - wire viewport and overlay snapshots
- add interaction runtime for interactive scenarios