Move svg4everybody into polyfills and reorganize

This commit is contained in:
Mike Greiling 2018-06-08 23:25:15 -05:00
parent fb81210ba7
commit 3f9129dd0d
No known key found for this signature in database
GPG key ID: 0303DF507FA67596
4 changed files with 21 additions and 12 deletions

View file

@ -14,10 +14,10 @@ import 'core-js/es6/map';
import 'core-js/es6/weak-map'; import 'core-js/es6/weak-map';
// Browser polyfills // Browser polyfills
import 'classlist-polyfill';
import 'formdata-polyfill'; import 'formdata-polyfill';
import './polyfills/custom_event'; import './polyfills/custom_event';
import './polyfills/element'; import './polyfills/element';
import './polyfills/event'; import './polyfills/event';
import './polyfills/nodelist'; import './polyfills/nodelist';
import './polyfills/request_idle_callback'; import './polyfills/request_idle_callback';
import './polyfills/svg';

View file

@ -1,12 +1,17 @@
Element.prototype.closest = Element.prototype.closest || // polyfill Element.classList and DOMTokenList with classList.js
import 'classlist-polyfill';
Element.prototype.closest =
Element.prototype.closest ||
function closest(selector, selectedElement = this) { function closest(selector, selectedElement = this) {
if (!selectedElement) return null; if (!selectedElement) return null;
return selectedElement.matches(selector) ? return selectedElement.matches(selector)
selectedElement : ? selectedElement
Element.prototype.closest(selector, selectedElement.parentElement); : Element.prototype.closest(selector, selectedElement.parentElement);
}; };
Element.prototype.matches = Element.prototype.matches || Element.prototype.matches =
Element.prototype.matches ||
Element.prototype.matchesSelector || Element.prototype.matchesSelector ||
Element.prototype.mozMatchesSelector || Element.prototype.mozMatchesSelector ||
Element.prototype.msMatchesSelector || Element.prototype.msMatchesSelector ||
@ -15,13 +20,15 @@ Element.prototype.matches = Element.prototype.matches ||
function matches(selector) { function matches(selector) {
const elms = (this.document || this.ownerDocument).querySelectorAll(selector); const elms = (this.document || this.ownerDocument).querySelectorAll(selector);
let i = elms.length - 1; let i = elms.length - 1;
while (i >= 0 && elms.item(i) !== this) { i -= 1; } while (i >= 0 && elms.item(i) !== this) {
i -= 1;
}
return i > -1; return i > -1;
}; };
// From the polyfill on MDN, https://developer.mozilla.org/en-US/docs/Web/API/ChildNode/remove#Polyfill // From the polyfill on MDN, https://developer.mozilla.org/en-US/docs/Web/API/ChildNode/remove#Polyfill
((arr) => { (arr => {
arr.forEach((item) => { arr.forEach(item => {
if (Object.prototype.hasOwnProperty.call(item, 'remove')) { if (Object.prototype.hasOwnProperty.call(item, 'remove')) {
return; return;
} }

View file

@ -0,0 +1,5 @@
import svg4everybody from 'svg4everybody';
// polyfill support for external SVG file references via <use xlink:href>
// @see https://css-tricks.com/svg-use-external-source/
svg4everybody();

View file

@ -2,7 +2,6 @@
import jQuery from 'jquery'; import jQuery from 'jquery';
import Cookies from 'js-cookie'; import Cookies from 'js-cookie';
import svg4everybody from 'svg4everybody';
// bootstrap webpack, common libs, polyfills, and behaviors // bootstrap webpack, common libs, polyfills, and behaviors
import './webpack'; import './webpack';
@ -41,8 +40,6 @@ if (process.env.NODE_ENV !== 'production' && gon && gon.test_env) {
import(/* webpackMode: "eager" */ './test_utils/'); import(/* webpackMode: "eager" */ './test_utils/');
} }
svg4everybody();
document.addEventListener('beforeunload', () => { document.addEventListener('beforeunload', () => {
// Unbind scroll events // Unbind scroll events
$(document).off('scroll'); $(document).off('scroll');