Skip to content

Instantly share code, notes, and snippets.

@ChadTaljaardt
Created September 28, 2016 13:36
Show Gist options
  • Save ChadTaljaardt/5e6d314f44e848165ef535a514a06385 to your computer and use it in GitHub Desktop.
Save ChadTaljaardt/5e6d314f44e848165ef535a514a06385 to your computer and use it in GitHub Desktop.
<style>
</style>
<template>
<li>
<div :class="{bold: isFolder}" @click="toggle" @dblclick="changeType">
{{model.name}}
<span v-if="isFolder">[{{open ? '-' : '+'}}]</span>
</div>
<ul v-show="open" v-if="isFolder">
<item
class="item" v-for="model in model.children" :model="model">
</item>
<li @click="addChild">+</li>
</ul>
</li>
</template>
<script>
export default {
props: {
model: Object
},
data: function () {
return {
open: false
}
},
computed: {
isFolder: function () {
return this.model.children &&
this.model.children.length
}
},
methods: {
toggle: function () {
if (this.isFolder) {
this.open = !this.open
}
},
changeType: function () {
if (!this.isFolder) {
Vue.set(this.model, 'children', [])
this.addChild()
this.open = true
}
},
addChild: function () {
this.model.children.push({
name: 'new stuff'
})
}
}
}
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment