ドラッグで移動可能なTreeコンポーネント「sl-vue-tree」
by kabanoki
HTML
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/css/font-awesome.min.css">
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/sl-vue-tree.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/sl-vue-tree-dark.css">
<div id="app">
<sl-vue-tree v-model="nodes2">
<template slot="title" slot-scope="{ node }">
<span class="item-icon">
<i class="fa fa-file" v-if="node.isLeaf"></i>
<i class="fa fa-folder" v-if="!node.isLeaf"></i>
</span>
{{ node.title }}
</template>
</sl-vue-tree>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.10/vue.min.js"></script>
CSS
body {
background: #20262E;
padding: 20px;
font-family: Helvetica;
}
#app {
border-radius: 4px;
padding: 20px;
transition: all 0.2s;
}
li {
margin: 8px 0;
}
h2 {
font-weight: bold;
margin-bottom: 15px;
}
Vue
new Vue({
el: '#app',
components: {
'sl-vue-tree':SlVueTree
},
data: {
nodes2: [
{
"title": "Item1",
"isLeaf": true,
"isSelected": true,
"data": {
"visible": true
}
},
{
"title": "Item2",
"isLeaf": true,
"data": {
"visible": false
}
},
{
"title": "Folder1"
},
{
"title": "Folder2",
"isExpanded": true,
"children": [
{
"title": "Item3",
"isLeaf": true
},
{
"title": "Item4",
"isLeaf": true
},
{
"title": "Folder3",
"children": [
{
"title": "Item5",
"isLeaf": true
}
]
}
]
},
{
"title": "Folder5",
"isExpanded": false
},
{
"title": "Item6",
"isLeaf": true
},
{
"title": "Item7",
"isLeaf": true,
"data": {
"visible": false
}
},
{
"title": "Folder6",
"children": [
{
"title": "Folder7",
"children": [
{
"title": "Item8",
"isLeaf": true
},
{
"title": "Item9",
"isLeaf": true
}
]
}
]
}
]
}
});