diff --git a/src/directives/body_scroll_lock.js b/src/directives/body_scroll_lock.js index d7f114b5..13a6de1c 100644 --- a/src/directives/body_scroll_lock.js +++ b/src/directives/body_scroll_lock.js @@ -2,18 +2,16 @@ import * as bodyScrollLock from 'body-scroll-lock' let previousNavPaddingRight let previousAppBgWrapperRight -let lockerEls = [] +const lockerEls = new Set([]) const disableBodyScroll = (el) => { const scrollBarGap = window.innerWidth - document.documentElement.clientWidth bodyScrollLock.disableBodyScroll(el, { reserveScrollBarGap: true }) - if (!lockerEls.includes(el)) { - lockerEls.push(el) - } + lockerEls.add(el) setTimeout(() => { - if (lockerEls.length <= 1) { + if (lockerEls.size <= 1) { // If previousNavPaddingRight is already set, don't set it again. if (previousNavPaddingRight === undefined) { const navEl = document.getElementById('nav') @@ -32,11 +30,9 @@ const disableBodyScroll = (el) => { } const enableBodyScroll = (el) => { - if (lockerEls.includes(el)) { - lockerEls = lockerEls.filter(e => e !== el) - } + lockerEls.delete(el) setTimeout(() => { - if (lockerEls.length === 0) { + if (lockerEls.size === 0) { if (previousNavPaddingRight !== undefined) { document.getElementById('nav').style.paddingRight = previousNavPaddingRight // Restore previousNavPaddingRight to undefined so disableBodyScroll knows it can be set again.