vue-dnd-kanban
A drag and drop kanban board component
Installation
Add vue-dnd-kanban to your project with npm
npm install vue-dnd-kanban
... or yarn
yarn add vue-dnd-kanban
Basic Usage
Install the plugin
import vueKanban from 'vue-dnd-kanban'
Vue.use(vueKanban)
and then use the component in your project.
<kanban-board :stages="stages" :blocks="blocks"></kanban-board>
Props
- stages: an array of stages for the kanban board
- blocks: an array of objects that will make up the blocks on the kanban board
{
stages: [
{
id: 1,
name: 'column 1',
bgColor: '#045DE9',
}
],
blocks: [
{
id: 1,
status: 'on-hold',
title: 'Test',
},
],
}
Receiving Changes
The component will emit an event when a block is moved
<kanban-board :stages="stages" :blocks="blocks" @update-block="updateBlock"></kanban-board>
<script>
...
methods: {
updateBlock(id, status) {
this.blocks.find(b => b.id === Number(id)).status = status;
},
},
...
</script>
Add some style
I have included a scss stylesheet in this repo as a starting point that can be used in your project
<style lang="scss">
@import './assets/kanban.scss';
</style>
Customize the kanban blocks
Each block has a named slot which can be extended from the parent, like so...
<kanban-board :stages="stages" :blocks="blocks" @update-block="updateBlock">
<div v-for="stage in stages" :slot="stage" :key="stage">
<h2>{{ stage }}</h2>
</div>
<div v-for="block in blocks" :slot="block.id" :key="block.id">
<div>
<strong>id:</strong> {{ block.id }}
</div>
<div>
{{ block.title }}
</div>
</div>
</kanban-board>