All files / polyfills element.ts

100% Statements 12/12
100% Branches 9/9
100% Functions 2/2
100% Lines 12/12

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31          1x 3x   2x         3x 1x   2x   2x 4x 1x   3x   1x         1x  
/**
 * Polyfill for Element APIs for IE11
 * from https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill
 */
 
const applyPolyfills = () => {
    if (!(Element.prototype as Element).matches) {
        /* eslint @typescript-eslint/no-explicit-any: 0 */
        Element.prototype.matches =
            (Element.prototype as any).msMatchesSelector ||
            Element.prototype.webkitMatchesSelector;
    }
 
    if (!(Element.prototype as Element).closest) {
        Element.prototype.closest = function (s) {
            /* eslint @typescript-eslint/no-this-alias: 0 */
            let el = this;
 
            do {
                if (Element.prototype.matches.call(el, s)) {
                    return el;
                }
                el = el.parentElement || el.parentNode;
            } while (el !== null && el.nodeType === 1);
            return null;
        };
    }
};
 
export default applyPolyfills;