From e29c72790b02ccde145fd95d27408578f048c5e3 Mon Sep 17 00:00:00 2001 From: Sebastian Silbermann Date: Sat, 1 Feb 2020 22:27:17 +0100 Subject: [PATCH 1/2] fix: fireEvent in IE11 --- src/events.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/events.js b/src/events.js index 56aa5a13..c26c534c 100644 --- a/src/events.js +++ b/src/events.js @@ -392,7 +392,17 @@ Object.keys(eventMap).forEach(key => { Object.assign(node, targetProperties) const window = getWindowFromNode(node) const EventConstructor = window[EventType] || window.Event - return new EventConstructor(eventName, eventInit) + if (typeof EventConstructor === 'function') { + return new EventConstructor(eventName, eventInit) + } + // IE11 polyfill from https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent#Polyfill + const event = window.document.createEvent(EventType) + const {bubbles, cancelable, detail, ...otherInit} = eventInit + event.initEvent(eventName, bubbles, cancelable, detail) + Object.keys(otherInit).forEach(eventKey => { + event[eventKey] = otherInit[eventKey] + }) + return event } fireEvent[key] = (node, init) => fireEvent(node, createEvent[key](node, init)) From 6f6550d532e803ec85681032aa9a0ed1b96bfb16 Mon Sep 17 00:00:00 2001 From: Sebastian Silbermann Date: Sat, 1 Feb 2020 22:56:10 +0100 Subject: [PATCH 2/2] chore: fix coverage --- src/events.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/events.js b/src/events.js index c26c534c..1bc3c6ff 100644 --- a/src/events.js +++ b/src/events.js @@ -392,17 +392,19 @@ Object.keys(eventMap).forEach(key => { Object.assign(node, targetProperties) const window = getWindowFromNode(node) const EventConstructor = window[EventType] || window.Event + /* istanbul ignore else */ if (typeof EventConstructor === 'function') { return new EventConstructor(eventName, eventInit) + } else { + // IE11 polyfill from https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent#Polyfill + const event = window.document.createEvent(EventType) + const {bubbles, cancelable, detail, ...otherInit} = eventInit + event.initEvent(eventName, bubbles, cancelable, detail) + Object.keys(otherInit).forEach(eventKey => { + event[eventKey] = otherInit[eventKey] + }) + return event } - // IE11 polyfill from https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent#Polyfill - const event = window.document.createEvent(EventType) - const {bubbles, cancelable, detail, ...otherInit} = eventInit - event.initEvent(eventName, bubbles, cancelable, detail) - Object.keys(otherInit).forEach(eventKey => { - event[eventKey] = otherInit[eventKey] - }) - return event } fireEvent[key] = (node, init) => fireEvent(node, createEvent[key](node, init))