@@ -168,6 +168,10 @@ const CalendarDayCard: React.FC<CalendarDayCardProps> = ({
168168 const [ tooltipHovered , setTooltipHovered ] = useState ( false ) ;
169169 const tooltipKey = `task-${ task . taskId } ` ;
170170 const isLocked = lockedTooltipEventId === tooltipKey ;
171+ const tooltipHoveredRef = useRef ( false ) ;
172+ tooltipHoveredRef . current = tooltipHovered ;
173+ const isLockedRef = useRef ( false ) ;
174+ isLockedRef . current = isLocked ;
171175 const shouldBeOpen = isLocked || isHovered || tooltipHovered ;
172176
173177 return (
@@ -177,8 +181,9 @@ const CalendarDayCard: React.FC<CalendarDayCardProps> = ({
177181 marginRight = { 0.5 }
178182 onMouseEnter = { ( ) => setIsHovered ( true ) }
179183 onMouseLeave = { ( ) => {
184+ setTooltipHovered ( false ) ;
180185 setTimeout ( ( ) => {
181- if ( ! isLocked && ! tooltipHovered ) {
186+ if ( ! isLockedRef . current && ! tooltipHoveredRef . current ) {
182187 setIsHovered ( false ) ;
183188 }
184189 } , 100 ) ;
@@ -299,6 +304,10 @@ const CalendarDayCard: React.FC<CalendarDayCardProps> = ({
299304 event . approved === ConflictStatus . DENIED ;
300305 const bgColor = isPending ? getMutedColor ( baseColor , 0.35 ) : baseColor ;
301306 const isLocked = lockedTooltipEventId === event . eventId ;
307+ const tooltipHoveredRef = useRef ( false ) ;
308+ tooltipHoveredRef . current = tooltipHovered ;
309+ const isLockedRef = useRef ( false ) ;
310+ isLockedRef . current = isLocked ;
302311 const shouldBeOpen = isLocked || isHovered || tooltipHovered ;
303312
304313 return (
@@ -308,8 +317,9 @@ const CalendarDayCard: React.FC<CalendarDayCardProps> = ({
308317 marginRight = { 0.5 }
309318 onMouseEnter = { ( ) => setIsHovered ( true ) }
310319 onMouseLeave = { ( ) => {
320+ setTooltipHovered ( false ) ;
311321 setTimeout ( ( ) => {
312- if ( ! isLocked && ! tooltipHovered ) {
322+ if ( ! isLockedRef . current && ! tooltipHoveredRef . current ) {
313323 setIsHovered ( false ) ;
314324 }
315325 } , 100 ) ;
@@ -414,6 +424,10 @@ const CalendarDayCard: React.FC<CalendarDayCardProps> = ({
414424 const [ isHovered , setIsHovered ] = useState ( false ) ;
415425 const [ tooltipHovered , setTooltipHovered ] = useState ( false ) ;
416426 const isLocked = lockedTooltipEventId === event . eventId ;
427+ const tooltipHoveredRef = useRef ( false ) ;
428+ tooltipHoveredRef . current = tooltipHovered ;
429+ const isLockedRef = useRef ( false ) ;
430+ isLockedRef . current = isLocked ;
417431 const shouldBeOpen = isLocked || isHovered || tooltipHovered ;
418432
419433 return (
@@ -475,8 +489,9 @@ const CalendarDayCard: React.FC<CalendarDayCardProps> = ({
475489 < Box
476490 onMouseEnter = { ( ) => setIsHovered ( true ) }
477491 onMouseLeave = { ( ) => {
492+ setTooltipHovered ( false ) ;
478493 setTimeout ( ( ) => {
479- if ( ! isLocked && ! tooltipHovered ) {
494+ if ( ! isLockedRef . current && ! tooltipHoveredRef . current ) {
480495 setIsHovered ( false ) ;
481496 }
482497 } , 100 ) ;
@@ -497,6 +512,10 @@ const CalendarDayCard: React.FC<CalendarDayCardProps> = ({
497512 const [ tooltipHovered , setTooltipHovered ] = useState ( false ) ;
498513 const tooltipKey = `task-${ task . taskId } ` ;
499514 const isLocked = lockedTooltipEventId === tooltipKey ;
515+ const tooltipHoveredRef = useRef ( false ) ;
516+ tooltipHoveredRef . current = tooltipHovered ;
517+ const isLockedRef = useRef ( false ) ;
518+ isLockedRef . current = isLocked ;
500519 const shouldBeOpen = isLocked || isHovered || tooltipHovered ;
501520
502521 return (
@@ -547,8 +566,9 @@ const CalendarDayCard: React.FC<CalendarDayCardProps> = ({
547566 < Box
548567 onMouseEnter = { ( ) => setIsHovered ( true ) }
549568 onMouseLeave = { ( ) => {
569+ setTooltipHovered ( false ) ;
550570 setTimeout ( ( ) => {
551- if ( ! isLocked && ! tooltipHovered ) {
571+ if ( ! isLockedRef . current && ! tooltipHoveredRef . current ) {
552572 setIsHovered ( false ) ;
553573 }
554574 } , 100 ) ;
0 commit comments