All Projects → tinwan → vue2-data-tree

tinwan / vue2-data-tree

Licence: other
A tree that data is lazy loaded. Support dragging node, checking node, editing node's name and selecting node.

Programming Languages

Vue
7211 projects
javascript
184084 projects - #8 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to vue2-data-tree

v-drag
The simplest way to integrate dragging on Vue.js
Stars: ✭ 71 (+73.17%)
Mutual labels:  drag, vue2, draggable
vue-sortable-tree
vue tree draggable, drag item sort
Stars: ✭ 87 (+112.2%)
Mutual labels:  tree, drag, draggable
Gijgo
Gijgo - Free Javascript Controls
Stars: ✭ 424 (+934.15%)
Mutual labels:  tree, draggable
Vue Jstree
A Tree Plugin For Vue2.0+
Stars: ✭ 469 (+1043.9%)
Mutual labels:  tree, vue2
Vue Treeselect
A Tree Select Plugin For Vue2.0+
Stars: ✭ 40 (-2.44%)
Mutual labels:  tree, vue2
twtree
a highly customizable tree component for vue 2
Stars: ✭ 27 (-34.15%)
Mutual labels:  tree, draggable
Vue Drag Tree
🌴🌳a Vue's drag and drop tree component || 🌾Demo
Stars: ✭ 337 (+721.95%)
Mutual labels:  tree, drag
React Ui Tree
React tree component with drag & drop
Stars: ✭ 720 (+1656.1%)
Mutual labels:  tree, draggable
Luy Dragger
dragger with a render props
Stars: ✭ 135 (+229.27%)
Mutual labels:  drag, draggable
Angular Tree Dnd
Display tree table (or list) & event Drap & Drop (allow drag multi tree-table include all type: table, ol, ul) by AngularJS
Stars: ✭ 146 (+256.1%)
Mutual labels:  tree, drag
Vue Drag Tree
基于Vue的拖拽组织树
Stars: ✭ 98 (+139.02%)
Mutual labels:  tree, drag
Heyui
🎉UI Toolkit for Web, Vue2.0 http://www.heyui.top
Stars: ✭ 2,373 (+5687.8%)
Mutual labels:  tree, vue2
React Rnd
🖱 A resizable and draggable component for React.
Stars: ✭ 2,560 (+6143.9%)
Mutual labels:  drag, draggable
Vue3 Draggable Resizable
[Vue3 组件] 用于拖拽调整位置和大小的的组件,同时支持冲突检测,元素吸附对齐,实时参考线。
Stars: ✭ 159 (+287.8%)
Mutual labels:  drag, draggable
Ngx Smooth Dnd
angular wrapper for smooth-dnd
Stars: ✭ 152 (+270.73%)
Mutual labels:  drag, draggable
Vue Drag Tree Table
vue 可以拖拽排序的树形表格
Stars: ✭ 488 (+1090.24%)
Mutual labels:  tree, drag
react-native-dnd-board
A drag and drop Kanban board for React Native.
Stars: ✭ 41 (+0%)
Mutual labels:  drag, draggable
React Smooth Dnd
react wrapper components for smooth-dnd
Stars: ✭ 1,560 (+3704.88%)
Mutual labels:  drag, draggable
React Dragline
🐼Guide lines and magnetic adsorption to better align draggable elements in React.
Stars: ✭ 134 (+226.83%)
Mutual labels:  drag, draggable
Angular Draggable Mat Tree
Example implementation of drag and drop on Angular Material Tree
Stars: ✭ 47 (+14.63%)
Mutual labels:  tree, draggable

npm npm GitHub stars GitHub forks license

vue2-data-tree (中文文档

QQ Group: 596446187

Demo


Install

npm install vue2-data-tree --save

Usage

<div id="app">
  <vue2-data-tree :options="options" :treeData="treeData"
      @nodeSelected="nodeSelected"      // listener for node-selecting
      @nodeChecked="nodeChecked"       // listener for node-checking
      @expandEnd="expandEnd"        // listener for initial node-expanding
      @dragEnd="dragEnd"        // listener for node-drag-end
      @nodeDataChange="nodeDataChange" // listener for node's data change
      @nodeNameChange="nodeNameChange" // listener for node's name edited
  >
  </vue2-data-tree>
</div>
import Vue from 'vue'
import Vue2DataTree from 'vue2-data-tree'

let indexedId = 10;

new Vue({
  el: '#app',
  // ...
  components: {Vue2DataTree},
  data () {
      return {
          options: {
              defaultChecked: [3, 40, 13],   // default list of checked node-id, type of
                                             // every item must be same to the node-id's type
              defaultSelected: 24,  // default selected node-id, type of this
                                    // config must be same to the node-id's type
              defaultExpandedLevel: 2, // default expanded level, must be a number
              draggable: true, // support dragging node or not,
                               // must be a boolean, default value is false
              nameEditable: false, // support editing name or not, default value is false
                     // if we want to save change to backend, we could use "shouldUpdateNodeName" function.
              selectable: true,  // support selecting node or not, default value is true
              checkable: { // support check node or not, set the value to
                           // false will disable check; default value is like this value
                  halfCheckable: true, // support half-check or not, must
                                       // be a boolean, default value is false
                  cascade: {
                      parent: true, // cascade parent or not
                      child: true // cascade child or not
                  }
               }
              getData (node) { // getData function
                  return new Promise(function (resolve, reject) {
                      setTimeout(() => {
                          resolve([
                              {
                                  id: indexedId,
                                  name: "treeNode" + indexedId,
                                  hasChildren: true,
                                  checkStatus: 0
                              },
                              {
                                  id: indexedId + 1,
                                  name: "treeNode" + (indexedId + 1),
                                  hasChildren: true,
                                  checkStatus: 0
                              }
                          ]);
                          indexedId += 2;
                          // reject(error);
                      });
                  });
              },
              /**
               * Function for submitting edit-name str, and this will executed before update the node’s name,
               *  if failed, reject function will execute, the node's name will not be changed;
               *
              /
              shouldUpdateNodeName (node, newName) {
                  // add some ajax or validate operations here, and must return a promise object
                  return new Promise(function (resolve, reject) {
                      setTimeout(() => {
                          resolve("success");
                          // reject("error");
                      }, 1000);
                  });
              }
          },
          treeData: [
              {
                  id: 1,
                  name: "treeNode1",
                  checkStatus: 0,
                  hasChildren: true,
                  children: [
                      {
                          id: 3,
                          name: "treeNode3",
                          hasChildren: false,
                          checkStatus: 0
                      },
                      {
                          id: 4,
                          name: "treeNode4",
                          hasChildren: false,
                          checkStatus: 0
                      }
                  ]
              },
              {
                  id: 2,
                  name: "treeNode2",
                  hasChildren: true,
                  checkStatus: 0
              }
          ]
      };
  },
  methods: {
      nodeSelected (node) {
          console.log("select node: " + node.id);
      },
      nodeChecked (node) {
          console.log("check node: " + node.id);
      },
      expandEnd () {
          console.log("nodeExpand");
      },
      dragEnd (currentNode, parentNode, index) {
          console.log("drag end " + currentNode.id + " " + parentNode + " " + index);
      },
      nodeDataChange (treeData) {
          console.log("nodeDataChange", treeData);
      },
      nodeNameChange (node) {
          console.log("nodeNameChange", node);
      }
  }
})

Method

Method name Description Parameters
getSelectedNode returns the currently selected node -
getCheckedNodes returns the array of nodes selected by the current check box -
delCurrentNode delete currently selected node -
refreshCurrentNode refresh currently selected node -

LICENSE

The MIT License

如果你觉得这个项目帮助到了你,你可以帮作者买一杯果汁表示鼓励

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].