44 ForwardedRef ,
55 forwardRef ,
66 ReactNode ,
7+ useCallback ,
8+ useEffect ,
79 useMemo ,
810 useState ,
911} from 'react' ;
@@ -497,7 +499,7 @@ const ItemBase = <T extends HTMLElement = HTMLDivElement>(
497499 const mergedLabelRef = useCombinedRefs ( ( labelProps as any ) ?. ref ) ;
498500 const [ isLabelOverflowed , setIsLabelOverflowed ] = useState ( false ) ;
499501
500- const checkLabelOverflow = ( ) => {
502+ const checkLabelOverflow = useCallback ( ( ) => {
501503 const label = mergedLabelRef . current ;
502504 if ( ! label ) {
503505 setIsLabelOverflowed ( false ) ;
@@ -507,28 +509,25 @@ const ItemBase = <T extends HTMLElement = HTMLDivElement>(
507509 const hasOverflow = label . scrollWidth > label . clientWidth ;
508510
509511 setIsLabelOverflowed ( hasOverflow ) ;
510- } ;
512+ } , [ mergedLabelRef ] ) ;
511513
512- useLayoutEffect ( ( ) => {
514+ useEffect ( ( ) => {
513515 if ( isAutoTooltipEnabled ) {
514516 checkLabelOverflow ( ) ;
515517 }
516- } , [ children , isAutoTooltipEnabled ] ) ;
518+ } , [ children , isAutoTooltipEnabled , checkLabelOverflow ] ) ;
517519
518- useLayoutEffect ( ( ) => {
520+ useEffect ( ( ) => {
519521 if ( ! isAutoTooltipEnabled ) return ;
520522
521523 const label = mergedLabelRef . current ;
522524 if ( ! label ) return ;
523525
524- // Initial check
525- checkLabelOverflow ( ) ;
526+ const resizeObserver = new ResizeObserver ( checkLabelOverflow ) ;
527+ resizeObserver . observe ( label ) ;
526528
527- // const resizeObserver = new ResizeObserver(checkLabelOverflow);
528- // resizeObserver.observe(label);
529-
530- // return () => resizeObserver.disconnect();
531- } , [ mergedLabelRef . current , isAutoTooltipEnabled ] ) ;
529+ return ( ) => resizeObserver . disconnect ( ) ;
530+ } , [ isAutoTooltipEnabled , checkLabelOverflow , children , mergedLabelRef ] ) ;
532531
533532 const finalLabelProps = useMemo ( ( ) => {
534533 return {
0 commit comments