@@ -4,7 +4,7 @@ import type { DRefExtra } from '@react-devui/hooks/useRefExtra';
44import type { DPopupPlacement } from '@react-devui/utils/position' ;
55
66import { isString , isUndefined } from 'lodash' ;
7- import React , { useEffect , useImperativeHandle , useRef , useState } from 'react' ;
7+ import React , { useImperativeHandle , useRef , useState } from 'react' ;
88import ReactDOM from 'react-dom' ;
99
1010import { useEvent , useEventCallback , useId , useLockScroll , useRefExtra } from '@react-devui/hooks' ;
@@ -246,20 +246,6 @@ function Popover(props: DPopoverProps, ref: React.ForwardedRef<DPopoverRef>): JS
246246 ! dEscClosable || ! visible
247247 ) ;
248248
249- useEffect ( ( ) => {
250- if ( dModal ) {
251- if ( visible ) {
252- dataRef . current . prevActiveEl = document . activeElement as HTMLElement | null ;
253-
254- if ( popoverRef . current ) {
255- popoverRef . current . focus ( { preventScroll : true } ) ;
256- }
257- } else if ( dataRef . current . prevActiveEl ) {
258- dataRef . current . prevActiveEl . focus ( { preventScroll : true } ) ;
259- }
260- }
261- } , [ dModal , visible ] ) ;
262-
263249 const headerNode = ( ( ) => {
264250 if ( dHeader ) {
265251 const node = isString ( dHeader ) ? < DPopoverHeader > { dHeader } </ DPopoverHeader > : dHeader ;
@@ -311,9 +297,20 @@ function Popover(props: DPopoverProps, ref: React.ForwardedRef<DPopoverRef>): JS
311297 onEnter = { updatePosition }
312298 afterEnter = { ( ) => {
313299 afterVisibleChange ?.( true ) ;
300+
301+ if ( dModal ) {
302+ dataRef . current . prevActiveEl = document . activeElement as HTMLElement | null ;
303+ if ( popoverRef . current ) {
304+ popoverRef . current . focus ( { preventScroll : true } ) ;
305+ }
306+ }
314307 } }
315308 afterLeave = { ( ) => {
316309 afterVisibleChange ?.( false ) ;
310+
311+ if ( dModal && dataRef . current . prevActiveEl ) {
312+ dataRef . current . prevActiveEl . focus ( { preventScroll : true } ) ;
313+ }
317314 } }
318315 >
319316 { ( state ) => {
0 commit comments