@@ -7,23 +7,32 @@ import UserLogoutModal from 'components/UserLogoutModal/UserLogoutModal';
77export default function UserLogoModal ( { isOpen, onClose } ) {
88 const [ activateModal , setActivateModal ] = useState ( null ) ;
99 const dropDownRef = useRef ( ) ;
10+
1011 const openModal = modalName => {
1112 setActivateModal ( modalName ) ;
1213 } ;
14+ const closeActivateModal = ( ) => {
15+ setActivateModal ( null ) ;
16+ onClose ( ) ;
17+ } ;
1318
1419 useEffect ( ( ) => {
15- const handleKeyDown = e => {
20+ const handleKeyDown = ( e ) => {
1621 if ( e . key === 'Escape' ) {
17- setActivateModal ( null ) ;
18- onClose ( ) ;
22+ if ( activateModal ) {
23+ closeActivateModal ( ) ;
24+ } else {
25+ onClose ( ) ;
26+ }
1927 }
2028 } ;
21- const handleClickOutside = e => {
29+ const handleClickOutside = ( e ) => {
2230 if (
2331 isOpen &&
2432 dropDownRef . current &&
2533 ! dropDownRef . current . contains ( e . target ) &&
26- ! e . target . closest ( `.${ css . btn } ` )
34+ ! e . target . closest ( `.${ css . user__btn } ` ) &&
35+ ! activateModal
2736 ) {
2837 onClose ( ) ;
2938 }
@@ -40,7 +49,7 @@ export default function UserLogoModal({ isOpen, onClose }) {
4049 window . removeEventListener ( 'mousedown' , handleClickOutside ) ;
4150 document . body . style . overflow = '' ;
4251 } ;
43- } , [ onClose , activateModal , dropDownRef , isOpen ] ) ;
52+ } , [ onClose , isOpen , activateModal , closeActivateModal ] ) ;
4453
4554 const closeModal = ( ) => {
4655 setActivateModal ( null ) ;
@@ -72,6 +81,7 @@ export default function UserLogoModal({ isOpen, onClose }) {
7281 < SettingModal
7382 closeModal = { closeModal }
7483 closeBackdrop = { handleCloseBackdrop }
84+ onClick = { ( e ) => e . stopPropagation ( ) }
7585 />
7686 ) }
7787 { activateModal === 'logout' && (
0 commit comments