mirror of https://github.com/vuejs/core.git
fix(runtime-dom): should properly patch as props for vue custom element (#12408)
This commit is contained in:
parent
6eb29d345a
commit
1f0062c2c7
|
@ -471,6 +471,14 @@ describe('defineCustomElement', () => {
|
|||
container.appendChild(e)
|
||||
expect(e.shadowRoot!.innerHTML).toBe('<div></div>')
|
||||
})
|
||||
|
||||
// #12408
|
||||
test('should set number tabindex as attribute', () => {
|
||||
render(h('my-el-attrs', { tabindex: 1, 'data-test': true }), container)
|
||||
const el = container.children[0] as HTMLElement
|
||||
expect(el.getAttribute('tabindex')).toBe('1')
|
||||
expect(el.getAttribute('data-test')).toBe('true')
|
||||
})
|
||||
})
|
||||
|
||||
describe('emits', () => {
|
||||
|
|
|
@ -60,7 +60,11 @@ export const patchProp: DOMRendererOptions['patchProp'] = (
|
|||
} else if (
|
||||
// #11081 force set props for possible async custom element
|
||||
(el as VueElement)._isVueCE &&
|
||||
(/[A-Z]/.test(key) || !isString(nextValue))
|
||||
// #12408 check if it's hyphen prop or it's async custom element
|
||||
(camelize(key) in el ||
|
||||
// @ts-expect-error _def is private
|
||||
((el as VueElement)._def.__asyncLoader &&
|
||||
(/[A-Z]/.test(key) || !isString(nextValue))))
|
||||
) {
|
||||
patchDOMProp(el, camelize(key), nextValue, parentComponent, key)
|
||||
} else {
|
||||
|
|
Loading…
Reference in New Issue