
syncfusion-vue-kanban
Implements the Syncfusion Vue Kanban component for column-based task board UIs with drag-and-drop, swimlanes, WIP constraints, and virtual scrolling. Use this when building sprint boards, kanban boards, workflow trackers, or any column-based task management UI. Covers data binding (local and remote), cards, columns, dialog, events, and accessibility.
- Installs
- 62
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/syncfusion/vue-ui-components-skills --skill syncfusion-vue-kanban- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads syncfusion-vue-kanban automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Implementing Syncfusion Vue Kanban
A column-based task board that groups cards by a status field, supports drag-and-drop reordering, swimlane row grouping, column validation (WIP limits), and virtual scrolling for large datasets.
When to Use This Skill
- User needs a Kanban / sprint board with status columns (To Do, In Progress, Done, etc.)
- User wants drag-and-drop card movement between columns or across swimlane rows
- User needs to bind Kanban to a REST API, OData, or local JSON dataset
- User wants to group cards by assignee, team, or any field (swimlanes)
- User needs WIP limits (min/max card counts per column)
- User wants virtual scrolling for 1000+ cards without performance issues
- User wants to customize card layout with a template or apply custom CSS
Component Overview
| Concept | What it does |
|---|---|
keyField | Board-level field that maps data records to columns (e.g. "Status") |
cardSettings | Specifies headerField (unique ID) and contentField (body text) |
<e-columns> | Declare each board column; keyField on column matches data values |
swimlaneSettings | Groups cards into horizontal rows by a data field |
allowDragAndDrop | Enables/disables card drag between columns (default: true) |
enableVirtualization | Enables virtual scrolling for large datasets |
Documentation and Navigation Guide
Component Overview
📄 Read: references/overview.md
- Full feature list with descriptions (drag-and-drop, swimlanes, WIP, virtual scrolling, etc.)
- When-to-use decision table matching user needs to features
- Package installation and all required CSS imports
- Minimal working example
Accessibility
📄 Read: references/accessibility.md
- WCAG 2.2 and Section 508 compliance summary
- All WAI-ARIA attributes (
aria-label,aria-expanded,aria-selected,aria-grabbed, etc.) - Full keyboard shortcut reference
- Disabling keyboard interaction (
allowKeyboard: false) - Screen reader support details
- RTL accessibility with
enableRtl - Testing with axe-core and accessibility checker tools
Getting Started
📄 Read: references/getting-started.md
- Vite + Vue 3 project setup
- Package installation (
@syncfusion/ej2-vue-kanban) - CSS imports (tailwind3 theme)
- Minimal Kanban with columns
- Populating cards from a local data array
- Enabling swimlanes on first render
Data Binding
📄 Read: references/data-binding.md
- Binding local JSON arrays
- Remote data with
DataManager+ODataAdaptor/ODataV4Adaptor - Web API binding with
WebApiAdaptor - CRUD operations with
UrlAdaptor(insertUrl,updateUrl,removeUrl) - Custom adaptor by extending
ODataAdaptor - Sending extra query parameters with
Query.addParams - Loading data dynamically via Ajax
- Handling HTTP errors with
actionFailure
Cards
📄 Read: references/cards.md
headerField(mandatory unique ID) andcontentField- Hiding the card header with
showHeader: false - Custom card layout using Vue component template
- Card selection: None / Single / Multiple (
selectionType) - Multi-select with Ctrl+click / Shift+click
Columns
📄 Read: references/columns.md
- Single-key and multi-key column mapping
- Column header text and header templates
- Toggle columns (expand/collapse) with
allowToggle - Rendering a column initially collapsed (
isExpanded: false) - Stacked headers grouping multiple columns
- Column-level drag-and-drop reordering (
allowColumnDragAndDrop)
Dialog (Add / Edit / Delete Cards)
📄 Read: references/dialog.md
- Default built-in dialog (double-click to open)
- Custom dialog fields with
dialogSettings.fields - Custom field labels and field types
- Field validation with
validationRules - Full dialog template using Vue component
- Preventing dialog open with
dialogOpenevent - Programmatic
openDialog()andcloseDialog()
Dimensions (Height and Width)
📄 Read: references/dimensions.md
- Auto height/width (default)
- Pixel dimensions (
height="550px",:width="650") - Percentage dimensions (
width="100%",height="100%") - When to use each mode
Events
📄 Read: references/events.md
- Action events:
actionBegin,actionComplete,actionFailure - Card events:
cardClick,cardDoubleClick,cardRendered - Column drag events:
columnDragStart,columnDrag,columnDrop - Data events:
dataBinding,dataBound,dataSourceChanged,dataStateChange - Dialog events:
dialogOpen,dialogClose - Card drag events:
dragStart,drag,dragStop - Lifecycle:
created,queryCellInfo
Swimlanes
📄 Read: references/swimlane.md
- Rendering swimlane rows with
swimlaneSettings.keyField - Custom row label text with
textField - Custom swimlane header template
- Sorting rows (Ascending / Descending)
- Cross-row drag-and-drop (
allowDragAndDrop: truein swimlaneSettings) - Empty row display (
showEmptyRow) - Card count badge (
showItemCount) - Frozen swimlane header while scrolling (
enableFrozenRows)
Drag and Drop
📄 Read: references/drag-and-drop.md
- Disabling drag-and-drop globally (
allowDragAndDrop: false) - Per-column drag/drop control (
allowDrag,allowDrop) - Cross-swimlane drag-and-drop
- Kanban-to-Kanban drag-and-drop (
externalDropId,dragStop,addCard,deleteCard) - Kanban to TreeView drag-and-drop
- Kanban to Scheduler drag-and-drop
Localization and RTL
📄 Read: references/localization.md
- All locale keys reference table
- Loading translations with
L10n.load() - Setting
localeprop on the board - Right-to-left (RTL) mode with
enableRtl
Public Methods
📄 Read: references/methods.md
- Card CRUD:
addCard,updateCard,deleteCard,getCardDetails - Column methods:
addColumn,deleteColumn,showColumn,hideColumn,getColumnData - Dialog:
openDialog,closeDialog - Data:
getSwimlaneData - Selection:
getSelectedCards - UI:
refreshHeader,refreshUI,showSpinner,hideSpinner,destroy
State Persistence
📄 Read: references/persistence.md
- Enabling
enablePersistenceto save state inlocalStorage - Persisted state: data source, column expand/collapse, swimlane expand/collapse
- Setting a unique
idto avoid key collisions - Clearing persisted state
Priority and Sort Settings
📄 Read: references/priority-and-sort.md
cardSettings.priorityfor rank-based card positioningsortSettings.sortBy:'Index','DataSourceOrder','Custom'sortSettings.fieldfor field-mapped orderingsortSettings.direction:'Ascending'/'Descending'
Responsive Mode
📄 Read: references/responsive-mode.md
- Mobile layout: column sizing, swipe navigation, tap-and-hold drag
- Swimlane popup menu on mobile
- Single and multiple card selection on touch devices
Tooltip
📄 Read: references/tooltip.md
- Enabling default card tooltip (
enableTooltip) e-tooltip-textclass for custom element tooltips- Custom tooltip template via
tooltipTemplate
Customization and Troubleshooting
📄 Read: references/customization-and-troubleshooting.md
- CSS class reference table
- Sticky/fixed column headers
- Column WIP validation (
minCount,maxCount,constraintType) - WAI-ARIA attributes
- Full keyboard shortcut reference
- Theme Studio
Virtual Scrolling
📄 Read: references/virtual-scrolling.md
- Enabling virtualization (
enableVirtualization: true) - Setting
cardHeightin pixels - Remote data service configuration for virtual scrolling
- Known limitations (swimlane + virtualization, card position, % height)
How-To Recipes
📄 Read: references/how-to.md
- Dynamically change column properties at runtime
- Replace all columns at runtime
- Filter cards with a
Query - Search cards by text with
Query.search() - Handle column header double-click
Properties Reference
📄 Read: references/properties.md
- Complete root-level prop table (all types, defaults, descriptions)
cardSettingssub-properties (headerField,contentField,selectionType,priority, etc.)columnssub-properties (keyField,allowToggle,minCount,maxCount,transitionColumns, etc.)dialogSettingsandDialogFieldsModelfieldssortSettings,swimlaneSettings,stackedHeadersinterfaces- All enum values:
SelectionType,ConstraintType,SortOrderBy,SortDirection
Style and CSS Customization
📄 Read: references/style.md
- Full CSS class reference table for header cells and WIP limit indicators
- CSS classes for card elements (header, content, footer, tags, color stripe)
- Swimlane row and cell CSS selectors
- Compact table-scoped selector variants
- Fixed / sticky Kanban header (height-based and
position: sticky) - Theme Studio for generating custom themes
Validation (WIP Limits)
📄 Read: references/validation.md
minCount— minimum cards required per column/cellmaxCount— maximum cards allowed per column/cellconstraintType:'Column'(default) vs'Swimlane'scope- Visual feedback: highlight colors when limits are violated
- CSS classes to customize validation highlight colors
Quick Start
<template>
<div id="app">
<ejs-kanban id="kanban" keyField="Status" :dataSource="kanbanData" :cardSettings="cardSettings">
<e-columns>
<e-column headerText="To Do" keyField="Open"></e-column>
<e-column headerText="In Progress" keyField="InProgress"></e-column>
<e-column headerText="Testing" keyField="Testing"></e-column>
<e-column headerText="Done" keyField="Close"></e-column>
</e-columns>
</ejs-kanban>
</div>
</template>
<script setup>
import { KanbanComponent as EjsKanban, ColumnDirective as EColumn, ColumnsDirective as EColumns }
from '@syncfusion/ej2-vue-kanban';
import { extend } from '@syncfusion/ej2-base';
const rawData = [
{ Id: 1, Status: 'Open', Summary: 'Analyze requirements', Assignee: 'Nancy' },
{ Id: 2, Status: 'InProgress', Summary: 'Improve performance', Assignee: 'Andrew' },
{ Id: 3, Status: 'Testing', Summary: 'Fix IE browser bug', Assignee: 'Janet' },
{ Id: 4, Status: 'Close', Summary: 'Deploy to production', Assignee: 'Nancy' },
];
const kanbanData = extend([], rawData, null, true);
const cardSettings = { contentField: 'Summary', headerField: 'Id' };
</script>
<style>
@import '../node_modules/@syncfusion/ej2-base/styles/tailwind3.css';
@import '../node_modules/@syncfusion/ej2-buttons/styles/tailwind3.css';
@import '../node_modules/@syncfusion/ej2-inputs/styles/tailwind3.css';
@import '../node_modules/@syncfusion/ej2-popups/styles/tailwind3.css';
@import '../node_modules/@syncfusion/ej2-vue-kanban/styles/tailwind3.css';
</style>
Common Patterns
Add swimlanes (group by assignee)
<ejs-kanban keyField="Status" :dataSource="kanbanData"
:cardSettings="cardSettings" :swimlaneSettings="swimlaneSettings">
...columns...
</ejs-kanban>
<script setup>
const swimlaneSettings = { keyField: 'Assignee' };
</script>
Bind to remote OData service
<script setup>
import { DataManager, ODataAdaptor } from '@syncfusion/ej2-data';
const kanbanData = new DataManager({
url: 'https://your-api.com/api/Tasks',
adaptor: new ODataAdaptor(),
crossDomain: true
});
</script>
Enable WIP limits on a column
<e-column headerText="In Progress" keyField="InProgress" :maxCount="5" :minCount="1"></e-column>
Enable virtual scrolling for large data
<ejs-kanban :enableVirtualization="true" keyField="Status" :dataSource="largeDataset"
:cardSettings="{ headerField: 'Id', contentField: 'Summary' }">
...
</ejs-kanban>
Key Props Reference
| Prop | Type | Purpose |
|---|---|---|
keyField | String | Data field that maps records to columns |
dataSource | Array / DataManager | Cards data source |
cardSettings | Object | headerField (required), contentField, template, selectionType |
swimlaneSettings | Object | keyField, textField, allowDragAndDrop, showEmptyRow, enableFrozenRows |
allowDragAndDrop | Boolean | Board-level card drag-and-drop (default: true) |
allowColumnDragAndDrop | Boolean | Reorder columns by dragging headers |
enableVirtualization | Boolean | Virtual scrolling for large datasets |
enableTooltip | Boolean | Show tooltip on card hover |
constraintType | String | 'Column' or 'Swimlane' for WIP validation |
FAQ
What does the syncfusion-vue-kanban skill do?
Implements the Syncfusion Vue Kanban component for column-based task board UIs with drag-and-drop, swimlanes, WIP constraints, and virtual scrolling. Use this when building sprint boards, kanban boards, workflow trackers, or any column-based task management UI. Covers data binding (local and remote), cards, columns, dialog, events, and accessibility.
How do I install syncfusion-vue-kanban?
Run npx skills add https://github.com/syncfusion/vue-ui-components-skills --skill syncfusion-vue-kanban in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/syncfusion-vue-kanban/ (personal) or .claude/skills/syncfusion-vue-kanban/ (project).
Which AI agents can use syncfusion-vue-kanban?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is syncfusion-vue-kanban safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains syncfusion-vue-kanban?
It is published by syncfusion in syncfusion/vue-ui-components-skills. It has 62 recorded installs.
More from syncfusion/vue-ui-components-skills
syncfusion-vue-grid
syncfusion/vue-ui-components-skills
Implements Syncfusion Vue Grid component for feature-rich data tables and grids. Use this when working with data display, sorting, filtering, grouping, aggregates, editing, or exporting. This skill covers grid configuration, CRUD operations, virtual scrolling or infinite scrolling, hierarchy grids, state persistence, and advanced data management features for data-intensive applications.
syncfusion-vue-scheduler
syncfusion/vue-ui-components-skills
Implement event scheduling, calendar views, and appointment management using Syncfusion Vue Scheduler component. Use this skill when working with calendars, event scheduling, appointment booking systems, resource management, timeline views, recurring events, drag-and-drop event handling, or any scenario involving time-based event visualization and management in Vue applications. Trigger for scheduler implementations, calendar integrations, booking systems, meeting planners, task schedulers, or resource allocation tools.
syncfusion-vue-rich-text-editor
syncfusion/vue-ui-components-skills
Open the skill to read its SKILL.md instructions.
syncfusion-vue-gantt-chart
syncfusion/vue-ui-components-skills
Open the skill to read its SKILL.md instructions.
syncfusion-vue-blockeditor
syncfusion/vue-ui-components-skills
Implement Syncfusion Vue BlockEditor component for block-based content editing with rich text, images, tables, and interactive blocks. Use this skill ALWAYS when user needs block editor, notion-style editor, content blocks, rich text blocks, document editor with blocks, modular content editor, or mentions @syncfusion/ej2-vue-blockeditor, BlockEditor, block-based editing, content management editor, collaborative editing, real-time collaboration. Covers all 14 block types, 5 content types, drag-and-drop, menus, methods, events, real-time collaborative editing with Yjs support, user presence and remote cursors, version history, and Composition API patterns.
syncfusion-vue-barcode
syncfusion/vue-ui-components-skills
Open the skill to read its SKILL.md instructions.
Popular frontend & design skills
setup-matt-pocock-skills
mattpocock/skills
Configure this repo for the engineering skills: set up its issue tracker, triage label vocabulary, and domain doc layout. Run once before first use of the other engineering skills.
frontend-design
anthropics/skills
Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.
hyperframes-animation
heygen-com/hyperframes
All animation knowledge for HyperFrames — atomic motion rules, multi-phase scene blueprints, scene transitions, broader motion-design techniques, AND the seven runtime adapters (GSAP default, plus Lottie, Three.js, Anime.js, CSS keyframes, Web Animations API, TypeGPU). Use for any motion or animation task: pick 2-4 rules and compose, or load a blueprint, or look up runtime-specific API (e.g. GSAP eases / Lottie player / Three.js mixer). Also covers auditing an existing composition's choreography (animation map) and 24 named text-animation effects. HyperFrames-native: single paused timeline, seek-safe, deterministic.
prototype
mattpocock/skills
Build a throwaway prototype to answer a design question. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like.
hyperframes-core
heygen-com/hyperframes
The HyperFrames composition contract — build one renderable project. Use for composition structure, the data- timing attributes, class="clip", tracks, sub-compositions, variables, framework-owned media playback, deterministic-render rules, and validation. Read before writing composition HTML.
vercel-react-best-practices
vercel-labs/agent-skills
React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.