@@ -44,19 +44,28 @@ Object.keys(eventMap).forEach(key => {
44
44
Object . assign ( node , targetProperties )
45
45
const window = getWindowFromNode ( node )
46
46
const EventConstructor = window [ EventType ] || window . Event
47
+ let event
47
48
/* istanbul ignore else */
48
49
if ( typeof EventConstructor === 'function' ) {
49
- return new EventConstructor ( eventName , eventInit )
50
+ event = new EventConstructor ( eventName , eventInit )
50
51
} else {
51
52
// IE11 polyfill from https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent#Polyfill
52
- const event = window . document . createEvent ( EventType )
53
+ event = window . document . createEvent ( EventType )
53
54
const { bubbles, cancelable, detail, ...otherInit } = eventInit
54
55
event . initEvent ( eventName , bubbles , cancelable , detail )
55
56
Object . keys ( otherInit ) . forEach ( eventKey => {
56
57
event [ eventKey ] = otherInit [ eventKey ]
57
58
} )
58
- return event
59
59
}
60
+
61
+ // Approximate dataTransfer on the event object
62
+ // jsdom does not support DataTransfer constructor
63
+ // https://github.com/testing-library/react-testing-library/issues/339#issuecomment-526310225
64
+ const { dataTransfer} = eventInit
65
+ if ( typeof dataTransfer === 'object' ) {
66
+ Object . assign ( event , { dataTransfer} )
67
+ }
68
+ return event
60
69
}
61
70
62
71
fireEvent [ key ] = ( node , init ) => fireEvent ( node , createEvent [ key ] ( node , init ) )
0 commit comments