diff --git a/apps/storybook/stories/tooltip.stories.tsx b/apps/storybook/stories/tooltip.stories.tsx index f9dcfd4f1..9dc4b4f44 100644 --- a/apps/storybook/stories/tooltip.stories.tsx +++ b/apps/storybook/stories/tooltip.stories.tsx @@ -174,9 +174,9 @@ export const CustomDurations = () => (

Custom (0ms to move from one to another tooltip = never skip)

-
+
- + Hover me @@ -185,7 +185,7 @@ export const CustomDurations = () => ( - + Hover me @@ -194,7 +194,7 @@ export const CustomDurations = () => ( - + Hover me diff --git a/packages/react/tooltip/src/tooltip.tsx b/packages/react/tooltip/src/tooltip.tsx index 6c2cbd0c3..99357278c 100644 --- a/packages/react/tooltip/src/tooltip.tsx +++ b/packages/react/tooltip/src/tooltip.tsx @@ -76,8 +76,7 @@ const TooltipProvider: React.FC = ( const skipDelayTimerRef = React.useRef(0); React.useEffect(() => { - const skipDelayTimer = skipDelayTimerRef.current; - return () => window.clearTimeout(skipDelayTimer); + return () => window.clearTimeout(skipDelayTimerRef.current); }, []); return ( @@ -86,15 +85,21 @@ const TooltipProvider: React.FC = ( isOpenDelayedRef={isOpenDelayedRef} delayDuration={delayDuration} onOpen={React.useCallback(() => { - window.clearTimeout(skipDelayTimerRef.current); - isOpenDelayedRef.current = false; - }, [])} + if (skipDelayDuration > 0) { + window.clearTimeout(skipDelayTimerRef.current); + isOpenDelayedRef.current = false; + } + }, [skipDelayDuration])} onClose={React.useCallback(() => { - window.clearTimeout(skipDelayTimerRef.current); - skipDelayTimerRef.current = window.setTimeout( - () => (isOpenDelayedRef.current = true), - skipDelayDuration - ); + if (skipDelayDuration > 0) { + window.clearTimeout(skipDelayTimerRef.current); + skipDelayTimerRef.current = window.setTimeout( + () => (isOpenDelayedRef.current = true), + skipDelayDuration + ); + } else { + isOpenDelayedRef.current = true; + } }, [skipDelayDuration])} isPointerInTransitRef={isPointerInTransitRef} onPointerInTransitChange={React.useCallback((inTransit: boolean) => {