Filter cards in Vue Kanban component
11 Apr 20244 minutes to read
You can filter the collection of cards from the dataSource and display it on the Kanban board by using the query
property.
To learn about Kanban filtering cards, you can check out this video:
In the below sample, you can filter the cards based on the ‘where’ query and display the filtered data to the Kanban board.
<template>
<div id="app">
<ejs-dropdownlist
ref="PriorityDrop"
id="priority_filter"
:dataSource="priorityData"
:change="change"
value="None"
placeholder="Select a priority"
></ejs-dropdownlist>
<ejs-kanban
ref="KanbanObj"
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>
import Vue from "vue";
import { KanbanPlugin } from "@syncfusion/ej2-vue-kanban";
import { DropDownListPlugin } from "@syncfusion/ej2-vue-dropdowns";
import { extend } from "@syncfusion/ej2-base";
import { Query } from "@syncfusion/ej2-data";
import { kanbanData } from "./datasource.js";
Vue.use(KanbanPlugin);
Vue.use(DropDownListPlugin);
export default {
data: function () {
return {
kanbanData: extend([], kanbanData, null, true),
cardSettings: {
contentField: "Summary",
headerField: "Id",
},
priorityData: ["None", "High", "Normal", "Low"],
};
},
mounted: function () {
this.kanbanObj = this.$refs.KanbanObj.ej2Instances;
this.priorityObj = this.$refs.PriorityDrop.ej2Instances;
},
methods: {
change: function (args) {
let filterQuery = new Query();
if (args.value !== "None") {
filterQuery = new Query().where("Priority", "equal", args.value);
}
this.kanbanObj.query = filterQuery;
},
},
};
</script>
<style>
@import "../node_modules/@syncfusion/ej2-base/styles/material.css";
@import "../node_modules/@syncfusion/ej2-buttons/styles/material.css";
@import "../node_modules/@syncfusion/ej2-layouts/styles/material.css";
@import "../node_modules/@syncfusion/ej2-dropdowns/styles/material.css";
@import "../node_modules/@syncfusion/ej2-inputs/styles/material.css";
@import "../node_modules/@syncfusion/ej2-navigations/styles/material.css";
@import "../node_modules/@syncfusion/ej2-popups/styles/material.css";
@import "../node_modules/@syncfusion/ej2-vue-kanban/styles/material.css";
</style>