diff --git a/src/index.js b/src/index.js
index 4409bd7..9dcce1c 100644
--- a/src/index.js
+++ b/src/index.js
@@ -11,6 +11,10 @@ import {
export default function wrap (Vue, Component) {
const isAsync = typeof Component === 'function' && !Component.cid
+
+ if (!isAsync && Component.extends && Vue.util.mergeOptions) {
+ Component = Vue.util.mergeOptions(Component, Component.extends)
+ }
let isInitialized = false
let hyphenatedPropsList
let camelizedPropsList
diff --git a/test/fixtures/extended-component-properties.html b/test/fixtures/extended-component-properties.html
new file mode 100644
index 0000000..d7bcf53
--- /dev/null
+++ b/test/fixtures/extended-component-properties.html
@@ -0,0 +1,26 @@
+
+
+
+
diff --git a/test/test.js b/test/test.js
index 9f60f7f..48f1b98 100644
--- a/test/test.js
+++ b/test/test.js
@@ -23,6 +23,29 @@ test('properties', async () => {
expect(newBar).toBe('lol')
})
+test('extended-component-properties', async () => {
+ const { page } = await launchPage(`extended-component-properties`)
+
+ // props proxying: get
+ const foo = await page.evaluate(() => el.foo)
+ expect(foo).toBe(123)
+
+ // get camelCase
+ const someProp = await page.evaluate(() => el.someProp)
+ expect(someProp).toBe('bar')
+
+ // props proxying: set
+ await page.evaluate(() => {
+ el.foo = 234
+ el.someProp = 'lol'
+ })
+ const newFoo = await page.evaluate(() => el.vueComponent.foo)
+
+ expect(newFoo).toBe(234)
+ const newBar = await page.evaluate(() => el.vueComponent.someProp)
+ expect(newBar).toBe('lol')
+})
+
test('attributes', async () => {
const { page } = await launchPage(`attributes`)