fix(runtime-dom): ensure customElement handles empty props correctly. (#6182)

fix Scoped attribute in Vue file affects the use of web component #6163,#6895
This commit is contained in:
Thorsten Lünborg 2022-11-01 09:49:06 +01:00 committed by GitHub
parent 3bed82be32
commit f67bb500b6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 1 deletions

View File

@ -210,6 +210,20 @@ describe('defineCustomElement', () => {
customElements.define('my-el-upgrade', E)
expect(el.shadowRoot.innerHTML).toBe(`foo: hello`)
})
// https://github.com/vuejs/core/issues/6163
test('handle components with no props', async () => {
const E = defineCustomElement({
render() {
return h('div', 'foo')
}
})
customElements.define('my-element-noprops', E)
const el = document.createElement('my-element-noprops')
container.appendChild(el)
await nextTick()
expect(el.shadowRoot!.innerHTML).toMatchInlineSnapshot('"<div>foo</div>"')
})
})
describe('emits', () => {

View File

@ -215,7 +215,7 @@ export class VueElement extends BaseClass {
}).observe(this, { attributes: true })
const resolve = (def: InnerComponentDef) => {
const { props, styles } = def
const { props = {}, styles } = def
const hasOptions = !isArray(props)
const rawKeys = props ? (hasOptions ? Object.keys(props) : props) : []