A simple component for render tree diagram for Vue.js
npm install vue-tree-diagram
Example (click to show)
<template> <tree-diagram :data="data" @node-click="handleNodeClick"> <template v-slot:type-root="{value}"> <div class="type-root"> <h1>{{value.title}}</h1> </div> </template> <template v-slot:type-a="{value}"> <div class="type-a"> <h1>{{value.title}}</h1> </div> </template> <template v-slot:default="{value}"> <div class="type-b"> <h1>{{value.title}}</h1> <h2>{{value.subtitle}}</h2> </div> </template> </tree-diagram> </template> <script> import TreeDiagram from "vue-tree-diagram" export default { data() { return { components: { TreeDiagram }, data: [ { id: 1, type: "type-root", value: { title: "ROOT" }, children: [{ id: 2, type: "type-a", value: { title: "NodeA" }, children: [{ id: 3, type: "type-b", value: { title: "NodeB", subtitle: "NodeB subtitle" } }] }] } ] } }, methods: { handleNodeClick(node) { console.log(node) } } } </script>| Attribute | Description | Type | Accepted Values | Default |
|---|---|---|---|---|
| data | tree data | Array | - | - |
| nodePad | space of node to node | Number | - | 1 |
| levelPad | space of row to row | Number | - | 10 |
| direction | tree direction | String | 't-b', 'l-r' | 't-b' |
| align | node align in each row | String | 'start', 'center', 'end' | 'start' |
| Event Name | Description | Parameters |
|---|---|---|
| node-click | triggers when a node is clicked | (node, event) |
| before-render-tree | triggers when start render tree | - |
| after-render-tree | triggers when tree render finished | - |





