# vue-jstree
[](https://github.com/zdy1988/vue-jstree)
[English](./README.md)/[中文](./README-CN.md)
## Introduction
A tree plugin for vue2
## DEMO
[http://zdy1988.github.io/vue-jstree](http://zdy1988.github.io/vue-jstree)
## NPM
```html
npm install vue-jstree
```
## ES6
```html
import VJstree from 'vue-jstree'
new Vue({
components: {
VJstree
}
})
```
## Setup
```html
npm install
npm run dev
```
## Usage
```html
new Vue({
data: {
data: [
{
"text": "Same but with checkboxes",
"children": [
{
"text": "initially selected",
"selected": true
},
{
"text": "custom icon",
"icon": "fa fa-warning icon-state-danger"
},
{
"text": "initially open",
"icon": "fa fa-folder icon-state-default",
"opened": true,
"children": [
{
"text": "Another node"
}
]
},
{
"text": "custom icon",
"icon": "fa fa-warning icon-state-warning"
},
{
"text": "disabled node",
"icon": "fa fa-check icon-state-success",
"disabled": true
}
]
},
{
"text": "Same but with checkboxes",
"opened": true,
"children": [
{
"text": "initially selected",
"selected": true
},
{
"text": "custom icon",
"icon": "fa fa-warning icon-state-danger"
},
{
"text": "initially open",
"icon": "fa fa-folder icon-state-default",
"opened": true,
"children": [
{
"text": "Another node"
}
]
},
{
"text": "custom icon",
"icon": "fa fa-warning icon-state-warning"
},
{
"text": "disabled node",
"icon": "fa fa-check icon-state-success",
"disabled": true
}
]
},
{
"text": "And wholerow selection"
}
]
},
methods: {
itemClick (node) {
console.log(node.model.text + ' clicked !')
}
}
})
```
## API
| Props | Type | Default | Describe |
| ------------- |:-------------:|:-----:|:--------------------------------------------------------|
| data | Array | | set tree data |
| size | String | | set tree item size , value : 'large' or '' or ''small' |
| show-checkbox | Boolean | false | set it show checkbox |
| allow-transition | Boolean | true | allow use transition animation |
| whole-row | Boolean | false | use whole row state |
| no-dots | Boolean | false | show or hide dots |
| collapse | Boolean | false | set all tree item collapse state |
| multiple | Boolean | false | set multiple selected tree item |
| allow-batch | Boolean | false | in multiple choices. allow batch select |
| text-field-name | String | 'text' | set tree item display field |
| value-field-name | String | 'value' | set tree item value field |
| children-field-name | String | 'children' | set tree item children field |
| item-events | Object | {} | register any event to tree item, [example](https://github.com/zdy1988/vue-jstree/blob/master/App.vue) |
| async | Function | | async load callback function , if node is a leaf ,you can set 'isLeaf: true' in data |
| loading-text | String | 'Loading' | set loading text |
| draggable | Boolean | false | set tree item can be dragged , selective drag and drop can set 'dragDisabled: true' and 'dropDisabled: true' , all default value is 'false' |
| drag-over-background-color | String | '#C9FDC9' | set drag over background color |
| klass | String | | set append tree class |
## Methods in node.model
| Method | Params |
| ------------- |:-------------:|
| addChild | (object) newDataItem |
| addAfter | (object) newDataItem, (object) selectedNode |
| addBefore | (object) newDataItem, (object) selectedNode |
| openChildren | |
| closeChildren | |
## Event
**@item-click(node, item, e)**
**@item-toggle(node, item, e)**
**@item-drag-start(node, item, e)**
**@item-drag-end(node, item, e)**
**@item-drop-before(node, item, draggedItem, e)**
**@item-drop(node, item, draggedItem, e)**
**node** : current node vue object
**item** : current node data item object
**e** : event
## Data Item Optional Properties
| Name | Type | Default | Describe |
| ------------- |:-------------:| -----:|:----------------------------------------------|
| icon | String | | custom icon css class |
| opened | Boolean | false | set leaf opened |
| selected | Boolean | false | set node selected |
| disabled | Boolean | false | set node disabled |
| isLeaf | Boolean | false | if node is a leaf , set true can hide '+' |
| dragDisabled | Boolean | false | selective drag |
| dropDisabled | Boolean | false | selective drop |
## Custom Item Example
```
{{_.model.text}}
```
more elegant:
```
{{_.model.text}}
```
**scope** be replaced in the **vue@2.5.0+** , over **vue@2.5.0+** use **slot-scope**
## License
Licensed under the [MIT license](https://opensource.org/licenses/mit-license.php).
Thanks For [jstree](https://github.com/vakata/jstree)'s UI