diff --git a/src/lib/find-vue-components.js b/src/lib/find-vue-components.js index b43ffc670..aa25abb69 100644 --- a/src/lib/find-vue-components.js +++ b/src/lib/find-vue-components.js @@ -1,6 +1,5 @@ // @flow import { - COMPONENT_SELECTOR, FUNCTIONAL_OPTIONS, VUE_VERSION } from './consts' @@ -52,15 +51,20 @@ function findAllFunctionalComponentsFromVnode ( } export function vmCtorMatchesName (vm: Component, name: string): boolean { - return (vm.$vnode && vm.$vnode.componentOptions && + return !!((vm.$vnode && vm.$vnode.componentOptions && vm.$vnode.componentOptions.Ctor.options.name === name) || - (vm._vnode && vm._vnode.functionalOptions && - vm._vnode.functionalOptions.name === name) || - vm.$options && vm.$options.name === name + (vm._vnode && + vm._vnode.functionalOptions && + vm._vnode.functionalOptions.name === name) || + vm.$options && vm.$options.name === name || + vm.options && vm.options.name === name) } export function vmCtorMatchesSelector (component: Component, selector: Object) { - const Ctor = selector._Ctor || selector.options && selector.options._Ctor + const Ctor = selector._Ctor || (selector.options && selector.options._Ctor) + if (!Ctor) { + return false + } const Ctors = Object.keys(Ctor) return Ctors.some(c => Ctor[c] === component.__proto__.constructor) } @@ -95,6 +99,7 @@ export default function findVueComponents ( node[FUNCTIONAL_OPTIONS].name === selector.name ) } + const nameSelector = typeof selector === 'function' ? selector.options.name : selector.name const components = root._isVue ? findAllVueComponentsFromVm(root) : findAllVueComponentsFromVnode(root) @@ -102,8 +107,6 @@ export default function findVueComponents ( if (!component.$vnode && !component.$options.extends) { return false } - return selectorType === COMPONENT_SELECTOR - ? vmCtorMatchesSelector(component, selector) - : vmCtorMatchesName(component, selector.name) + return vmCtorMatchesSelector(component, selector) || vmCtorMatchesName(component, nameSelector) }) } diff --git a/test/resources/components/component-as-a-class.vue b/test/resources/components/component-as-a-class.vue index f92e973d2..e8357be48 100644 --- a/test/resources/components/component-as-a-class.vue +++ b/test/resources/components/component-as-a-class.vue @@ -1,5 +1,5 @@