@@ -18,7 +18,6 @@ import {
1818 useContentSVChangeConfig ,
1919} from '../../hooks' ;
2020import { getClassName , getPopupPlacementStyle , mergeStyle } from '../../utils' ;
21- import { checkOutEl } from './utils' ;
2221
2322export interface DTriggerRenderProps {
2423 [ key : `data-${string } popup-trigger`] : string ;
@@ -102,12 +101,10 @@ const Popup: React.ForwardRefRenderFunction<DPopupRef, DPopupProps> = (props, re
102101
103102 const dataRef = useRef < {
104103 clearTid : ( ( ) => void ) | null ;
105- hasCancelLeave : boolean ;
106104 transitionState ?: DTransitionStateList ;
107105 triggerRect ?: { top : number ; left : number } ;
108106 } > ( {
109107 clearTid : null ,
110- hasCancelLeave : false ,
111108 } ) ;
112109
113110 const asyncCapture = useAsync ( ) ;
@@ -294,7 +291,6 @@ const Popup: React.ForwardRefRenderFunction<DPopupRef, DPopupProps> = (props, re
294291 dVisible,
295292 dCallbackList : {
296293 beforeEnter : ( ) => {
297- dataRef . current . hasCancelLeave = false ;
298294 updatePosition ( ) ;
299295 setRendered ( true ) ;
300296 onRendered ?.( ) ;
@@ -304,9 +300,6 @@ const Popup: React.ForwardRefRenderFunction<DPopupRef, DPopupProps> = (props, re
304300 beforeLeave : ( ) => dataRef . current . transitionState ,
305301 } ,
306302 afterEnter : ( ) => {
307- if ( dataRef . current . hasCancelLeave && checkMouseLeave ( ) ) {
308- changeVisible ( false ) ;
309- }
310303 afterVisibleChange ?.( true ) ;
311304 } ,
312305 afterLeave : ( ) => {
@@ -329,18 +322,6 @@ const Popup: React.ForwardRefRenderFunction<DPopupRef, DPopupProps> = (props, re
329322 }
330323 } , [ dPrefix , dZIndex , hidden , isFixed , maxZIndex ] ) ;
331324
332- // `onMouseEnter` and `onMouseLeave` trigger time is uncertain.
333- // Very strange, sometimes popup element emit `onMouseEnter` before
334- // trigger element emit `onMouseLeave`.
335- // It's also no emit `onMouseEnter` when enter to popup element sometimes.
336- const checkMouseLeave = useCallback ( ( ) => {
337- if ( popupEl && triggerEl ) {
338- return checkOutEl ( popupEl ) && checkOutEl ( triggerEl ) ;
339- }
340-
341- return false ;
342- } , [ popupEl , triggerEl ] ) ;
343-
344325 const handleMouseEnter = useCallback (
345326 ( e ) => {
346327 onMouseEnter ?.( e ) ;
@@ -364,15 +345,11 @@ const Popup: React.ForwardRefRenderFunction<DPopupRef, DPopupProps> = (props, re
364345 dataRef . current . clearTid && dataRef . current . clearTid ( ) ;
365346 dataRef . current . clearTid = asyncCapture . setTimeout ( ( ) => {
366347 dataRef . current . clearTid = null ;
367- if ( checkMouseLeave ( ) ) {
368- changeVisible ( false ) ;
369- } else {
370- dataRef . current . hasCancelLeave = true ;
371- }
348+ changeVisible ( false ) ;
372349 } , dMouseLeaveDelay ) ;
373350 }
374351 } ,
375- [ onMouseLeave , dTrigger , asyncCapture , dMouseLeaveDelay , checkMouseLeave , changeVisible ]
352+ [ onMouseLeave , dTrigger , asyncCapture , dMouseLeaveDelay , changeVisible ]
376353 ) ;
377354
378355 const handleFocus = useCallback (
@@ -429,11 +406,7 @@ const Popup: React.ForwardRefRenderFunction<DPopupRef, DPopupProps> = (props, re
429406 dataRef . current . clearTid && dataRef . current . clearTid ( ) ;
430407 dataRef . current . clearTid = asyncCapture . setTimeout ( ( ) => {
431408 dataRef . current . clearTid = null ;
432- if ( checkMouseLeave ( ) ) {
433- flushSync ( ( ) => changeVisible ( false ) ) ;
434- } else {
435- dataRef . current . hasCancelLeave = true ;
436- }
409+ flushSync ( ( ) => changeVisible ( false ) ) ;
437410 } , dMouseLeaveDelay ) ;
438411 } ,
439412 } ) ;
@@ -467,7 +440,7 @@ const Popup: React.ForwardRefRenderFunction<DPopupRef, DPopupProps> = (props, re
467440 asyncCapture . deleteGroup ( asyncId ) ;
468441 } ;
469442 }
470- } , [ asyncCapture , checkMouseLeave , dMouseEnterDelay , dMouseLeaveDelay , dTrigger , dTriggerEl , changeVisible , triggerEl ] ) ;
443+ } , [ asyncCapture , dMouseEnterDelay , dMouseLeaveDelay , dTrigger , dTriggerEl , changeVisible , triggerEl ] ) ;
471444
472445 useEffect ( ( ) => {
473446 const [ asyncGroup , asyncId ] = asyncCapture . createGroup ( ) ;
@@ -566,12 +539,7 @@ const Popup: React.ForwardRefRenderFunction<DPopupRef, DPopupProps> = (props, re
566539 triggerRenderProps . onMouseLeave = ( ) => {
567540 dataRef . current . clearTid && dataRef . current . clearTid ( ) ;
568541 dataRef . current . clearTid = asyncCapture . setTimeout ( ( ) => {
569- dataRef . current . clearTid = null ;
570- if ( checkMouseLeave ( ) ) {
571- changeVisible ( false ) ;
572- } else {
573- dataRef . current . hasCancelLeave = true ;
574- }
542+ changeVisible ( false ) ;
575543 } , dMouseLeaveDelay ) ;
576544 } ;
577545 }
@@ -592,7 +560,7 @@ const Popup: React.ForwardRefRenderFunction<DPopupRef, DPopupProps> = (props, re
592560 }
593561
594562 return triggerRenderProps ;
595- } , [ asyncCapture , checkMouseLeave , dMouseEnterDelay , dMouseLeaveDelay , dPrefix , dTrigger , uniqueId , changeVisible ] ) ;
563+ } , [ asyncCapture , dMouseEnterDelay , dMouseLeaveDelay , dPrefix , dTrigger , uniqueId , changeVisible ] ) ;
596564
597565 return (
598566 < >
0 commit comments