UNPKG

ans-ui

Version:

A vue-based UI components library for analysys

60 lines (53 loc) 1.64 kB
// base on iview assist.js // Find components upward export function findComponentUpward (context, componentName, componentNames) { if (typeof componentName === 'string') { componentNames = [componentName] } else { componentNames = componentName } let parent = context.$parent let name = parent.$options.name while (parent && (!name || componentNames.indexOf(name) < 0)) { parent = parent.$parent if (parent) name = parent.$options.name } return parent } // Find component downward export function findComponentDownward (context, componentName) { const childrens = context.$children let children = null if (childrens.length) { for (const child of childrens) { const name = child.$options.name if (name === componentName) { children = child break } else { children = findComponentDownward(child, componentName) if (children) break } } } return children } // Find components downward export function findComponentsDownward (context, componentName) { return context.$children.reduce((components, child) => { if (child.$options.name === componentName) components.push(child) const foundChilds = findComponentsDownward(child, componentName) return components.concat(foundChilds) }, []) } // Find components upward export function findComponentsUpward (context, componentName) { const parents = [] const parent = context.$parent if (parent) { if (parent.$options.name === componentName) parents.push(parent) return parents.concat(findComponentsUpward(parent, componentName)) } else { return [] } }