One source, multiple views
Keep cards in grid.source. Set grid.kanban to show the board and set it to false to restore the latest cards and table columns.
KanbanPlugin turns canonical grid.source rows into workflow cards without creating a second data model. Configured workflow columns become RevoGrid columns and optional swimlanes expand into native card rows. Every workflow cell contains at most one card, so RevoGrid owns both horizontal and vertical virtualization.
pnpm add @revolist/revogrid @revolist/revogrid-pro @revolist/kanbanimport '@revolist/revogrid-pro/dist/revogrid-pro.css';import '@revolist/kanban/styles.css';One source, multiple views
Keep cards in grid.source. Set grid.kanban to show the board and set it to false to restore the latest cards and table columns.
Provider-backed
RevoGrid providers own projected data, columns, dimensions, focus, viewport state, and plugin dependencies.
Workflow interaction
Reorder cards, move across columns or lanes, drag a multi-selection, validate transitions, and enforce WIP limits.
Product-owned content
Replace card, header, lane, empty-state, and drag-preview content while the managed shell preserves interaction and accessibility.
import { defineCustomElements } from '@revolist/revogrid/loader';import { KanbanPlugin, type KanbanConfig } from '@revolist/kanban';import '@revolist/revogrid-pro/styles.css';import '@revolist/kanban/styles.css';
defineCustomElements();await customElements.whenDefined('revo-grid');
const kanban: KanbanConfig = { columns: [ { prop: 'todo', name: 'To do' }, { prop: 'doing', name: 'In progress', wipLimit: 3 }, { prop: 'done', name: 'Done' }, ], card: { titleField: 'title', descriptionField: 'description' },};
const grid = document.createElement('revo-grid');grid.style.cssText = 'display:block;height:600px;width:100%';grid.plugins = [KanbanPlugin];grid.kanban = kanban;document.body.append(grid);grid.source = [ { id: 'card-1', title: 'First card', status: 'todo', order: 1000 },];
// Call when the host view unmounts.export const destroy = () => grid.remove();The packaged editor is installed automatically. Double-click a card to edit it;
set grid.kanbanCardEditorDialog = false only when supplying your own editor.
Install KanbanToolbarPlugin alongside KanbanPlugin for
card actions, search, field filters, undo/redo and board/table switching. The toolbar
uses the same editor, canonical cards and persistence adapter as other interactions.
Add react, react-dom, their TypeScript types and @revolist/react-datagrid.
Include the following JSX augmentation to type the kanban property in your
application.
import { useMemo } from 'react';import { RevoGrid } from '@revolist/react-datagrid';import { KanbanPlugin, type KanbanConfig } from '@revolist/kanban';import '@revolist/revogrid-pro/styles.css';import '@revolist/kanban/styles.css';
declare module '@revolist/revogrid' { namespace JSX { interface RevoGrid { kanban?: KanbanConfig<any> | false; } }}
type Card = { id: string; title: string; status: string; order: number };
export default function Board({ rows }: { rows: Card[] }) { const plugins = useMemo(() => [KanbanPlugin], []); const kanban = useMemo<KanbanConfig>(() => ({ columns: [{ prop: 'todo', name: 'To do' }, { prop: 'done', name: 'Done' }], card: { titleField: 'title' }, }), []); return <RevoGrid style={{ height: '600px', width: '100%' }} plugins={plugins} kanban={kanban} source={rows} />;}Pass rows={[]} for an empty board; replace rows when application data arrives.
React owns mounting and unmounting the grid. The standalone
Kanban showcase also includes Vue and Angular
examples.
The default fields are id, status, and order. Configure idField, columnField, or orderField when your application uses other names.
columns is optional so Kanban can be enabled before workflow metadata or data
loads. An empty configuration and empty source render a stable empty board. If
cards arrive before columns, they remain visible in the managed Unmapped
column until the workflow configuration is supplied.
canonical grid.source cards + KanbanConfig │ ▼ validated card and bucket indexes │ ▼RevoGrid columns + expandable swimlane card rowsYour application supplies card records and a save endpoint. Kanban manages projection, interaction, validation, and local updates. Configure the persistence adapter to save canonical changes with approval, rollback, retry, and conflict handling.