2.1.8 • Published 5 years ago

vue-jstree-extended v2.1.8

Weekly downloads
39
License
MIT
Repository
github
Last release
5 years ago

vue-jstree

npm

English

Introduction

Its a fork of original vue-jstree plugin by zdy1988

https://github.com/zdy1988/vue-jstree

A tree plugin for vue2, extended with new functions, like expand-timers, resibling nodes logic and much more

NPM

    npm install vue-jstree-extended

ES6

    import VJstree from 'vue-jstree'
    
    new Vue({
      components: {
        VJstree
      }
    })

Setup

    npm install
    npm run dev

Usage

    <v-jstree :data="data" expand-timer :expand-timer-time-out="5000" execute-sibling-movement multi-tree show-checkbox multiple allow-batch whole-row @item-click="itemClick"></v-jstree>
    
    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

PropsTypeDefaultDescribe
dataArrayset tree data
sizeStringset tree item size , value : 'large' or '' or ''small'
show-checkboxBooleanfalseset it show checkbox
allow-transitionBooleantrueallow use transition animation
whole-rowBooleanfalseuse whole row state
no-dotsBooleanfalseshow or hide dots
collapseBooleanfalseset all tree item collapse state
multipleBooleanfalseset multiple selected tree item
allow-batchBooleanfalsein multiple choices. allow batch select
text-field-nameString'text'set tree item display field
value-field-nameString'value'set tree item value field
children-field-nameString'children'set tree item children field
item-eventsObject{}register any event to tree item, example
asyncFunctionasync load callback function , if node is a leaf ,you can set 'isLeaf: true' in data
loading-textString'Loading'set loading text
draggableBooleanfalseset tree item can be dragged , selective drag and drop can set 'dragDisabled: true' and 'dropDisabled: true' , all default value is 'false'
drag-over-background-colorString'#C9FDC9'set drag over background color
klassStringset append tree class
expand-timerBooleanfalseprop to control expanding of nodes during dragOver
expand-timer-time-outNumber1500prop to control duration of expanding timer
execute-siblings-movementBooleanfalseprop to control siblings movement: if true -> move node and emit event, false -> just emit event, and let user decide what to do with it
multi-treeBooleanfalseprop to define in which mode tree is working - usual or multiTree
show-drop-postionBooleantrueprop to define show or not the tree marker
allow-multi-tree-and-usualBooleanfalseprop to define act both behavior for multiTree and usual

Methods in node.model

MethodParams
addChild(object) newDataItem
addAfter(object) newDataItem, (object) selectedNode
addBefore(object) newDataItem, (object) selectedNode
openChildren
closeChildren
moveTo(object)draggedItem, (object)anchorNode
moveLeftTo(object)draggedItem, (object)anchorNode, oriIndex
moveRightTo(object)draggedItem, (object)anchorNode, oriIndex
deleteNode(object)selectedNode

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

@item-drop-sibling-left: move dragged node to left of target

@item-drop-sibling-right: move dragged node to right of target

@item-drop-multi-tree: dropped on node in multiTree mode

Data Item Optional Properties

NameTypeDefaultDescribe
iconStringcustom icon css class
openedBooleanfalseset leaf opened
selectedBooleanfalseset node selected
disabledBooleanfalseset node disabled
isLeafBooleanfalseif node is a leaf , set true can hide '+'
dragDisabledBooleanfalseselective drag
dropDisabledBooleanfalseselective drop

Custom Item Example

<v-jstree :data="data">
  <template scope="_">
    <div style="display: inherit; width: 200px" @click.ctrl="customItemClickWithCtrl">
      <i :class="_.vm.themeIconClasses" role="presentation" v-if="!_.model.loading"></i>
      {{_.model.text}}
      <button style="border: 0px; background-color: transparent; cursor: pointer;" @click="customItemClick(_.vm, _.model, $event)"><i class="fa fa-remove"></i></button>
    </div>
  </template>
</v-jstree>

more elegant:

<v-jstree :data="data">
  <template scope="_">
    <div style="display: inherit; width: 200px" @click.ctrl="customItemClickWithCtrl" @click.exact="customItemClick(_.vm, _.model, $event)">
    <i :class="_.vm.themeIconClasses" role="presentation" v-if="!_.model.loading"></i>
    {{_.model.text}}
    </div>
  </template>
</v-jstree>

scope be replaced in the vue@2.5.0+ , over vue@2.5.0+ use slot-scope

License

Licensed under the MIT license.

Thanks For jstree's UI

2.1.8

5 years ago

2.1.7

5 years ago