Skip to content

Commit aabea34

Browse files
author
Vince Malone
committed
feat: support TransitionEvent init properties
1 parent accb6cc commit aabea34

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

src/__tests__/events.js

+16
Original file line numberDiff line numberDiff line change
@@ -358,6 +358,22 @@ test('assigns clipboardData properties', () => {
358358
expect(clipboardData.getData('text')).toBe('example')
359359
})
360360

361+
test('assigns TransitionEvent init properties', () => {
362+
const node = document.createElement('div')
363+
const spy = jest.fn()
364+
node.addEventListener('transitionend', spy)
365+
const transitionEventInit = {
366+
propertyName: 'opacity',
367+
elapsedTime: 100,
368+
pseudoElement: '',
369+
}
370+
fireEvent.transitionEnd(node, transitionEventInit)
371+
expect(spy).toHaveBeenCalledTimes(1)
372+
expect(spy.mock.calls[0][0]).toEqual(
373+
expect.objectContaining(transitionEventInit),
374+
)
375+
})
376+
361377
test('fires events on Window', () => {
362378
const messageSpy = jest.fn()
363379
window.addEventListener('message', messageSpy)

src/events.js

+13
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,19 @@ function createEvent(
6262
})
6363
}
6464

65+
// TransitionEvent is not supported in jsdom: https://github.com/jsdom/jsdom/issues/1781
66+
if (EventType === 'TransitionEvent') {
67+
const transitionEventProperties = [
68+
'propertyName',
69+
'elapsedTime',
70+
'pseudoElement',
71+
]
72+
transitionEventProperties.forEach(property => {
73+
const value = eventInit[property]
74+
Object.defineProperty(event, property, {value})
75+
})
76+
}
77+
6578
// DataTransfer is not supported in jsdom: https://github.com/jsdom/jsdom/issues/1568
6679
const dataTransferProperties = ['dataTransfer', 'clipboardData']
6780
dataTransferProperties.forEach(dataTransferKey => {

0 commit comments

Comments
 (0)