diff --git a/.yarn/versions/ae1744f4.yml b/.yarn/versions/ae1744f4.yml new file mode 100644 index 0000000000..03c01858e9 --- /dev/null +++ b/.yarn/versions/ae1744f4.yml @@ -0,0 +1,5 @@ +releases: + "@radix-ui/react-tooltip": patch + +declined: + - primitives diff --git a/packages/react/tooltip/src/Tooltip.tsx b/packages/react/tooltip/src/Tooltip.tsx index 45cb76ac89..269cfd32f2 100644 --- a/packages/react/tooltip/src/Tooltip.tsx +++ b/packages/react/tooltip/src/Tooltip.tsx @@ -190,12 +190,14 @@ const Tooltip: React.FC = (props: ScopedProps) => { const handleOpen = React.useCallback(() => { window.clearTimeout(openTimerRef.current); + openTimerRef.current = 0; wasOpenDelayedRef.current = false; setOpen(true); }, [setOpen]); const handleClose = React.useCallback(() => { window.clearTimeout(openTimerRef.current); + openTimerRef.current = 0; setOpen(false); }, [setOpen]); @@ -204,11 +206,17 @@ const Tooltip: React.FC = (props: ScopedProps) => { openTimerRef.current = window.setTimeout(() => { wasOpenDelayedRef.current = true; setOpen(true); + openTimerRef.current = 0; }, delayDuration); }, [delayDuration, setOpen]); React.useEffect(() => { - return () => window.clearTimeout(openTimerRef.current); + return () => { + if (openTimerRef.current) { + window.clearTimeout(openTimerRef.current); + openTimerRef.current = 0; + } + }; }, []); return ( @@ -230,6 +238,7 @@ const Tooltip: React.FC = (props: ScopedProps) => { } else { // Clear the timer in case the pointer leaves the trigger before the tooltip is opened. window.clearTimeout(openTimerRef.current); + openTimerRef.current = 0; } }, [handleClose, disableHoverableContent])} onOpen={handleOpen}