diff --git a/src/component.ts b/src/component.ts index b2cd349..2404e4c 100644 --- a/src/component.ts +++ b/src/component.ts @@ -26,7 +26,7 @@ export function componentFactory ( Component: VueClass, options: ComponentOptions = {} ): VueClass { - options.name = options.name || (Component as any)._componentTag + options.name = options.name || (Component as any)._componentTag || (Component as any).name // prototype props. const proto = Component.prototype Object.getOwnPropertyNames(proto).forEach(function (key) { diff --git a/test/test.ts b/test/test.ts index c90f272..bcef77e 100644 --- a/test/test.ts +++ b/test/test.ts @@ -114,6 +114,34 @@ describe('vue-class-component', () => { expect(c.b).to.equal(3) }) + describe('name', () => { + it('via name option', () => { + @Component({ name: 'test' }) + class MyComp extends Vue {} + + const c = new MyComp() + expect(c.$options.name).to.equal('test') + }) + + it('via _componentTag', () => { + @Component + class MyComp extends Vue { + static _componentTag = 'test' + } + + const c = new MyComp() + expect(c.$options.name).to.equal('test') + }) + + it('via class name', () => { + @Component + class MyComp extends Vue {} + + const c = new MyComp() + expect(c.$options.name).to.equal('MyComp') + }) + }) + it('other options', (done) => { let v: number diff --git a/test/webpack.config.js b/test/webpack.config.js index 065d223..7bc90ec 100644 --- a/test/webpack.config.js +++ b/test/webpack.config.js @@ -4,7 +4,7 @@ module.exports = { './test/test-babel.js' ], output: { - path: './test', + path: __dirname, filename: 'test.build.js' }, module: {