Skip to content

Commit

Permalink
fix(customElement): customElement can emit event (vuejs#7296)
Browse files Browse the repository at this point in the history
  • Loading branch information
baiwusanyu-c authored and chrislone committed Feb 4, 2023
1 parent 99da7b7 commit 8f17c75
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 1 deletion.
3 changes: 2 additions & 1 deletion packages/runtime-core/src/vnode.ts
Expand Up @@ -672,7 +672,8 @@ export function cloneVNode<T, U>(
ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),
el: vnode.el,
anchor: vnode.anchor,
ctx: vnode.ctx
ctx: vnode.ctx,
ce: vnode.ce
}
if (__COMPAT__) {
defineLegacyVNodeProperties(cloned as VNode)
Expand Down
19 changes: 19 additions & 0 deletions packages/runtime-dom/__tests__/customElement.spec.ts
Expand Up @@ -384,6 +384,25 @@ describe('defineCustomElement', () => {
detail: [1]
})
})
// #7293
test('emit in an async component wrapper with properties bound', async () => {
const E = defineCustomElement(
defineAsyncComponent(
() => new Promise<typeof CompDef>(res => res(CompDef as any))
)
)
customElements.define('my-async-el-props-emits', E)
container.innerHTML = `<my-async-el-props-emits id="my_async_el_props_emits"></my-async-el-props-emits>`
const e = container.childNodes[0] as VueElement
const spy = jest.fn()
e.addEventListener('my-click', spy)
await customElements.whenDefined('my-async-el-props-emits')
e.shadowRoot!.childNodes[0].dispatchEvent(new CustomEvent('click'))
expect(spy).toHaveBeenCalled()
expect(spy.mock.calls[0][0]).toMatchObject({
detail: [1]
})
})
})

describe('slots', () => {
Expand Down

0 comments on commit 8f17c75

Please sign in to comment.