UNPKG

@esri/calcite-components

Version:

Web Components for Esri's Calcite Design System.

55 lines (54 loc) 1.73 kB
/*! All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://github.com/Esri/calcite-design-system/blob/dev/LICENSE.md for details. v3.2.1 */ import { makeGenericController } from "@arcgis/lumina/controllers"; let openedComponentCount = 0; let initialDocumentOverflowStyle = ""; const usePreventDocumentScroll = () => { function addOpenedComponent() { openedComponentCount++; if (openedComponentCount === 1) { initialDocumentOverflowStyle = document.documentElement.style.overflow; document.documentElement.style.overflow = "hidden"; } } function removeOpenedComponent() { openedComponentCount--; if (openedComponentCount === 0) { document.documentElement.style.overflow = initialDocumentOverflowStyle; } } return makeGenericController((component, controller) => { controller.onConnected(() => { if (component.opened && component.preventDocumentScroll) { addOpenedComponent(); } }); controller.onUpdate((changes) => { if (!component.hasUpdated) { return; } if (changes.has("opened") && component.preventDocumentScroll) { if (component.opened) { addOpenedComponent(); } else { removeOpenedComponent(); } } else if (changes.has("preventDocumentScroll") && component.opened) { if (component.preventDocumentScroll) { addOpenedComponent(); } else { removeOpenedComponent(); } } }); controller.onDisconnected(() => { if (component.opened && component.preventDocumentScroll) { removeOpenedComponent(); } }); }); }; export { usePreventDocumentScroll as u };