From 3c13a02be7c50e50ad9aaa0ef5b32f4b7e9c32d5 Mon Sep 17 00:00:00 2001 From: sirineJ <112706079+sirineJ@users.noreply.github.com> Date: Wed, 5 Mar 2025 13:07:23 +0100 Subject: [PATCH] only account for active instances of useScrollLock hook --- .../hooks/useScrollLock/useScrollLock.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/circuit-ui/hooks/useScrollLock/useScrollLock.ts b/packages/circuit-ui/hooks/useScrollLock/useScrollLock.ts index a8c4558c32..e780ea16c0 100644 --- a/packages/circuit-ui/hooks/useScrollLock/useScrollLock.ts +++ b/packages/circuit-ui/hooks/useScrollLock/useScrollLock.ts @@ -17,7 +17,7 @@ import { useCallback, useEffect, useRef } from 'react'; let instanceCount = 0; -export const useScrollLock = (isLocked: boolean): void => { +export const useScrollLock = (isActive: boolean): void => { const scrollValue = useRef(); const restoreScroll = useCallback(() => { @@ -31,18 +31,20 @@ export const useScrollLock = (isLocked: boolean): void => { }, []); useEffect(() => { - instanceCount += 1; + if (isActive) { + instanceCount += 1; + } return () => { instanceCount -= 1; - if (instanceCount === 0) { + if (instanceCount <= 1) { restoreScroll(); } }; - }, [restoreScroll]); + }, [restoreScroll, isActive]); useEffect(() => { - if (isLocked) { + if (isActive) { scrollValue.current = `${window.scrollY}px`; const scrollY = scrollValue.current; const { body } = document; @@ -56,5 +58,5 @@ export const useScrollLock = (isLocked: boolean): void => { } else if (instanceCount === 1) { restoreScroll(); } - }, [isLocked, restoreScroll]); + }, [isActive, restoreScroll]); };