Skip to content

Commit 9492003

Browse files
committed
try nodes collapsing animation
1 parent 685d9a8 commit 9492003

File tree

3 files changed

+123
-1
lines changed

3 files changed

+123
-1
lines changed

src/App.vue

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,16 @@
33
#app
44
BaseTree.mr
55
MaxLevelTree.mr
6+
CollapsingAnimation.mr
67
</template>
78

89
<script>
910
import BaseTree from '@/examples/Base'
1011
import MaxLevelTree from '@/examples/MaxLevel'
12+
import CollapsingAnimation from '@/examples/CollapsingAnimation'
13+
1114
export default {
12-
components: {BaseTree, MaxLevelTree},
15+
components: {BaseTree, MaxLevelTree, CollapsingAnimation},
1316
// data() {
1417
// return {
1518
// }
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
<!-- this is an example -->
2+
<template lang="pug">
3+
div
4+
h2 Collapse Animation
5+
Tree(:data="originalData" draggable crossTree ref="tree1" @change="tree1Change" @drag="ondrag" @drop="ondrop")
6+
div(slot-scope="{data, store}")
7+
b(v-if="data.children && data.children.length" @click="store.toggleOpen(data)") {{data.open ? '-' : '+'}}&nbsp;
8+
span {{data.text}}-level:{{data.level}}
9+
</template>
10+
11+
<script>
12+
import Tree0 from '@/components/DraggableTree'
13+
import CustomTreeNode from './CustomTreeNode.vue'
14+
15+
const Tree = {
16+
extends: Tree0,
17+
components: {
18+
TreeNode: CustomTreeNode,
19+
},
20+
data() {
21+
return {
22+
nodesTransition: 'fade',
23+
}
24+
},
25+
}
26+
27+
export default {
28+
components: {Tree},
29+
data() {
30+
return {
31+
originalData: [
32+
{text: 'node 1'},
33+
{text: 'node 2'},
34+
{text: 'node 3'},
35+
{text: 'node 4'},
36+
{text: 'node 4 undroppable', droppable: false},
37+
{text: 'node 5', children: [
38+
{text: 'node 1'},
39+
{text: 'node 2', children: [
40+
{text: 'node 3'},
41+
{text: 'node 4'},
42+
]},
43+
{text: 'node 2 undroppable', droppable: false, children: [
44+
{text: 'node 3'},
45+
{text: 'node 4'},
46+
]},
47+
{text: 'node 2', children: [
48+
{text: 'node 3'},
49+
{text: 'node 4 undroppable', droppable: false},
50+
]},
51+
{text: 'node 3'},
52+
{text: 'node 4'},
53+
{text: 'node 3'},
54+
{text: 'node 4'},
55+
{text: 'node 3'},
56+
{text: 'node 4'},
57+
{text: 'node 3'},
58+
{text: 'node 4'},
59+
]},
60+
],
61+
data: null,
62+
}
63+
},
64+
// computed: {},
65+
// watch: {},
66+
methods: {
67+
tree1Change(node, targetTree) {
68+
this.data = targetTree.getPureData()
69+
},
70+
ondrag() {
71+
const tree = this.$refs.tree1
72+
tree.nodesTransition = null
73+
},
74+
ondrop() {
75+
const tree = this.$refs.tree1
76+
tree.nodesTransition = 'fade'
77+
},
78+
},
79+
// created() {},
80+
// mounted() {},
81+
}
82+
</script>
83+
84+
<style lang="scss">
85+
</style>

src/examples/CustomTreeNode.vue

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<template lang="pug">
2+
.tree-node(
3+
:class="[data.active ? store.activatedClass : '', data.open ? store.openedClass : '', data.class]"
4+
:id="data._id" :data-level="data.level"
5+
)
6+
.tree-node-inner-back(v-if="!isRoot" :style="[innerBackStyle, data.innerBackStyle]" :class="[data.innerBackClass]")
7+
.tree-node-inner(:style="[data.innerStyle]" :class="[data.innerClass]")
8+
slot(:data="data" :store="store")
9+
transition(:name="store.nodesTransition")
10+
.tree-node-children(v-if="childrenVisible")
11+
TreeNode(v-for="child in data.children" :key="child._id"
12+
:data="child" :store="store"
13+
)
14+
template(slot-scope="props")
15+
slot(:data="props.data" :store="props.store")
16+
</template>
17+
18+
<script>
19+
import DraggableTreeNode from '@/components/DraggableTreeNode'
20+
21+
export default {
22+
name: 'TreeNode',
23+
extends: DraggableTreeNode,
24+
}
25+
</script>
26+
27+
<style lang="scss">
28+
.fade-enter-active, .fade-leave-active {
29+
transition: opacity .5s;
30+
}
31+
.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
32+
opacity: 0;
33+
}
34+
</style>

0 commit comments

Comments
 (0)