This commit is contained in:
parent
1cc8712235
commit
b302cbbbd3
@ -153,4 +153,30 @@ describe(`runtime-dom: events patching`, () => {
|
|||||||
expect(prevFn).toHaveBeenCalledTimes(2)
|
expect(prevFn).toHaveBeenCalledTimes(2)
|
||||||
expect(nextFn).toHaveBeenCalledTimes(4)
|
expect(nextFn).toHaveBeenCalledTimes(4)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// #2841
|
||||||
|
test('should patch event correctly in web-components', async () => {
|
||||||
|
class TestElement extends HTMLElement {
|
||||||
|
constructor() {
|
||||||
|
super()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
window.customElements.define('test-element', TestElement)
|
||||||
|
const testElement = document.createElement('test-element', {
|
||||||
|
is: 'test-element'
|
||||||
|
})
|
||||||
|
const fn1 = jest.fn()
|
||||||
|
const fn2 = jest.fn()
|
||||||
|
|
||||||
|
// in webComponents, @foo-bar will patch prop 'onFooBar'
|
||||||
|
// and @foobar will patch prop 'onFoobar'
|
||||||
|
|
||||||
|
patchProp(testElement, 'onFooBar', null, fn1)
|
||||||
|
testElement.dispatchEvent(new CustomEvent('foo-bar'))
|
||||||
|
expect(fn1).toHaveBeenCalledTimes(1)
|
||||||
|
|
||||||
|
patchProp(testElement, 'onFoobar', null, fn2)
|
||||||
|
testElement.dispatchEvent(new CustomEvent('foobar'))
|
||||||
|
expect(fn2).toHaveBeenCalledTimes(1)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { isArray } from '@vue/shared'
|
import { hyphenate, isArray } from '@vue/shared'
|
||||||
import {
|
import {
|
||||||
ComponentInternalInstance,
|
ComponentInternalInstance,
|
||||||
callWithAsyncErrorHandling
|
callWithAsyncErrorHandling
|
||||||
@ -96,7 +96,7 @@ function parseName(name: string): [string, EventListenerOptions | undefined] {
|
|||||||
options
|
options
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return [name.slice(2).toLowerCase(), options]
|
return [hyphenate(name.slice(2)), options]
|
||||||
}
|
}
|
||||||
|
|
||||||
function createInvoker(
|
function createInvoker(
|
||||||
|
Loading…
Reference in New Issue
Block a user