vuetify
Version:
Vue.js 2 Semantic Component Framework
61 lines (50 loc) • 1.34 kB
JavaScript
function searchChildren (children) {
const results = []
for (let index = 0; index < children.length; index++) {
const child = children[index]
if (child.isActive && child.isDependent) {
results.push(child)
} else {
results.push(...searchChildren(child.$children))
}
}
return results
}
export default {
name: 'dependent',
data () {
return {
closeDependents: true,
isDependent: true
}
},
methods: {
getOpenDependents () {
if (this.closeDependents) return searchChildren(this.$children)
return []
},
getOpenDependentElements () {
const result = []
const openDependents = this.getOpenDependents()
for (let index = 0; index < openDependents.length; index++) {
result.push(...openDependents[index].getClickableDependentElements())
}
return result
},
getClickableDependentElements () {
const result = [this.$el]
if (this.$refs.content) result.push(this.$refs.content)
result.push(...this.getOpenDependentElements())
return result
}
},
watch: {
isActive (val) {
if (val) return
const openDependents = this.getOpenDependents()
for (let index = 0; index < openDependents.length; index++) {
openDependents[index].isActive = false
}
}
}
}