From d329cf4f02bf3a2db00a769c7836410b2e364079 Mon Sep 17 00:00:00 2001 From: Filipa Lacerda Date: Mon, 11 Sep 2017 14:34:16 +0000 Subject: Adds Event polyfill for IE --- app/assets/javascripts/commons/polyfills.js | 1 + .../javascripts/commons/polyfills/custom_event.js | 7 ++++++- app/assets/javascripts/commons/polyfills/event.js | 18 ++++++++++++++++++ changelogs/unreleased/ie-event-polyfill.yml | 5 +++++ 4 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 app/assets/javascripts/commons/polyfills/event.js create mode 100644 changelogs/unreleased/ie-event-polyfill.yml diff --git a/app/assets/javascripts/commons/polyfills.js b/app/assets/javascripts/commons/polyfills.js index b78089525cc..cb5a9a9f6b5 100644 --- a/app/assets/javascripts/commons/polyfills.js +++ b/app/assets/javascripts/commons/polyfills.js @@ -12,4 +12,5 @@ import 'core-js/fn/symbol'; // Browser polyfills import './polyfills/custom_event'; import './polyfills/element'; +import './polyfills/event'; import './polyfills/nodelist'; diff --git a/app/assets/javascripts/commons/polyfills/custom_event.js b/app/assets/javascripts/commons/polyfills/custom_event.js index aea61b82d03..db51ade61ae 100644 --- a/app/assets/javascripts/commons/polyfills/custom_event.js +++ b/app/assets/javascripts/commons/polyfills/custom_event.js @@ -1,7 +1,12 @@ if (typeof window.CustomEvent !== 'function') { window.CustomEvent = function CustomEvent(event, params) { const evt = document.createEvent('CustomEvent'); - const evtParams = params || { bubbles: false, cancelable: false, detail: undefined }; + const evtParams = { + bubbles: false, + cancelable: false, + detail: undefined, + ...params, + }; evt.initCustomEvent(event, evtParams.bubbles, evtParams.cancelable, evtParams.detail); return evt; }; diff --git a/app/assets/javascripts/commons/polyfills/event.js b/app/assets/javascripts/commons/polyfills/event.js new file mode 100644 index 00000000000..ff5b9a1982f --- /dev/null +++ b/app/assets/javascripts/commons/polyfills/event.js @@ -0,0 +1,18 @@ +/** + * Polyfill for IE11 support. + * new Event() is not supported by IE11. + * Although `initEvent` is deprecated for modern browsers it is the one supported by IE + */ +if (typeof window.Event !== 'function') { + window.Event = function Event(event, params) { + const evt = document.createEvent('Event'); + const evtParams = { + bubbles: false, + cancelable: false, + ...params, + }; + evt.initEvent(event, evtParams.bubbles, evtParams.cancelable); + return evt; + }; + window.Event.prototype = Event; +} diff --git a/changelogs/unreleased/ie-event-polyfill.yml b/changelogs/unreleased/ie-event-polyfill.yml new file mode 100644 index 00000000000..eaab089a47e --- /dev/null +++ b/changelogs/unreleased/ie-event-polyfill.yml @@ -0,0 +1,5 @@ +--- +title: Adds Event polyfill for IE11 +merge_request: +author: +type: fixed -- cgit v1.2.1