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 = () => (
+
-
+
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) => {