Skip to content

Commit 3706e5d

Browse files
authored
Merge pull request #299 from Stijn98s/class-component-support
Add support for class components
2 parents 5622ea6 + 5775137 commit 3706e5d

File tree

6 files changed

+39
-1
lines changed

6 files changed

+39
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
2+
<template>
3+
<div>{{ msg }}</div>
4+
</template>
5+
6+
<script lang="ts">
7+
import { Vue, Options } from 'vue-class-component'
8+
9+
@Options({
10+
props: ['msg']
11+
})
12+
export default class ClassComponent extends Vue {}
13+
</script>

e2e/__projects__/basic/package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717
"babel-helper-vue-jsx-merge-props": "^2.0.3",
1818
"babel-plugin-syntax-jsx": "^6.18.0",
1919
"babel-plugin-transform-vue-jsx": "^3.7.0",
20-
"jest": "^24.0.0"
20+
"jest": "^24.0.0",
21+
"vue-class-component": "^8.0.0-beta.4"
2122
},
2223
"jest": {
2324
"moduleFileExtensions": [

e2e/__projects__/basic/test.js

+6
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import BasicSrc from './components/BasicSrc.vue'
66
import Pug from './components/Pug.vue'
77
import Coffee from './components/Coffee.vue'
88
import Basic from './components/Basic.vue'
9+
import ClassComponent from './components/ClassComponent.vue'
910
import TypeScript from './components/TypeScript.vue'
1011
import jestVue from '../../../'
1112
import RenderFunction from './components/RenderFunction.vue'
@@ -116,6 +117,11 @@ test('supports relative paths when extending templates from .pug files', () => {
116117
expect(document.querySelector('.pug-relative-base')).toBeTruthy()
117118
})
118119

120+
test('supports class component .vue files', () => {
121+
mount(ClassComponent, { msg: 'Hello' })
122+
expect(document.querySelector('div').textContent).toBe('Hello')
123+
})
124+
119125
// TODO: How do functional components work in Vue 3?
120126
xtest('processes functional components', () => {
121127
// const clickSpy = jest.fn()

e2e/__projects__/basic/yarn.lock

+5
Original file line numberDiff line numberDiff line change
@@ -4157,6 +4157,11 @@ [email protected]:
41574157
core-util-is "1.0.2"
41584158
extsprintf "^1.2.0"
41594159

4160+
vue-class-component@^8.0.0-beta.4:
4161+
version "8.0.0-beta.4"
4162+
resolved "https://registry.yarnpkg.com/vue-class-component/-/vue-class-component-8.0.0-beta.4.tgz#bff95cdd44eb450a4a4e54b69da22099613d8071"
4163+
integrity sha512-+QXBhVH/Mz8dEC+IU7e8XXM54Tn0Aj9/saybeuK8XmhQiJlcijCB8kB7CYpBEMpHWaA+DoLr6LvHMbclYRCwZQ==
4164+
41604165
vue@^3.0.0:
41614166
version "3.0.0"
41624167
resolved "https://registry.yarnpkg.com/vue/-/vue-3.0.0.tgz#cfb5df5c34efce319b113a1667d12b74dcfd9c90"

lib/generate-code.js

+8
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,18 @@ module.exports = function generateCode(
2828

2929
var tempOutput = node.toString()
3030

31+
if (
32+
tempOutput.match(/\}\(.*.?Vue\);/) &&
33+
tempOutput.includes('vue-class-component')
34+
) {
35+
node.add(';exports.default = {...exports.default.__vccBase};')
36+
}
37+
3138
if (tempOutput.includes('exports.render = render;')) {
3239
node.add(';exports.default = {...exports.default, render};')
3340
} else {
3441
node.add(';exports.default = {...exports.default};')
3542
}
43+
3644
return node.toStringWithSourceMap({ file: filename })
3745
}

yarn.lock

+5
Original file line numberDiff line numberDiff line change
@@ -8589,6 +8589,11 @@ yargs@~3.10.0:
85898589
decamelize "^1.0.0"
85908590
window-size "0.1.0"
85918591

8592+
yarn@^1.22.10:
8593+
version "1.22.10"
8594+
resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.10.tgz#c99daa06257c80f8fa2c3f1490724e394c26b18c"
8595+
integrity sha512-IanQGI9RRPAN87VGTF7zs2uxkSyQSrSPsju0COgbsKQOOXr5LtcVPeyXWgwVa0ywG3d8dg6kSYKGBuYK021qeA==
8596+
85928597
yup@^0.27.0:
85938598
version "0.27.0"
85948599
resolved "https://registry.yarnpkg.com/yup/-/yup-0.27.0.tgz#f8cb198c8e7dd2124beddc2457571329096b06e7"

0 commit comments

Comments
 (0)