Skip to content

Commit

Permalink
feat: support TransitionEvent init properties
Browse files Browse the repository at this point in the history
  • Loading branch information
Vince Malone committed Jan 4, 2021
1 parent ec1b642 commit 76bd76f
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 0 deletions.
16 changes: 16 additions & 0 deletions src/__tests__/events.js
Original file line number Diff line number Diff line change
Expand Up @@ -358,6 +358,22 @@ test('assigns clipboardData properties', () => {
expect(clipboardData.getData('text')).toBe('example')
})

test('assigns TransitionEvent init properties', () => {
const node = document.createElement('div')
const spy = jest.fn()
node.addEventListener('transitionend', spy)
const transitionEventInit = {
propertyName: 'opacity',
elapsedTime: 100,
pseudoElement: '',
}
fireEvent.transitionEnd(node, transitionEventInit)
expect(spy).toHaveBeenCalledTimes(1)
expect(spy.mock.calls[0][0]).toEqual(
expect.objectContaining(transitionEventInit),
)
})

test('fires events on Window', () => {
const messageSpy = jest.fn()
window.addEventListener('message', messageSpy)
Expand Down
17 changes: 17 additions & 0 deletions src/events.js
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,23 @@ function createEvent(
})
}

// TransitionEvent is not supported in jsdom: https://github.com/jsdom/jsdom/issues/1781
if (
EventType === 'TransitionEvent' &&
window.TransitionEvent !== 'function'
) {
const transitionEventProperties = [
'propertyName',
'elapsedTime',
'pseudoElement',
]
transitionEventProperties.forEach(property => {
Object.defineProperty(event, property, {
value: eventInit[property],
})
})
}

// DataTransfer is not supported in jsdom: https://github.com/jsdom/jsdom/issues/1568
const dataTransferProperties = ['dataTransfer', 'clipboardData']
dataTransferProperties.forEach(dataTransferKey => {
Expand Down

0 comments on commit 76bd76f

Please sign in to comment.