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 | - |