@@ -20,7 +20,7 @@ type ModalType = 'rename' | 'move';
2020export default ( { uuid } : { uuid : string } ) => {
2121 const menu = createRef < HTMLDivElement > ( ) ;
2222 const menuButton = createRef < HTMLDivElement > ( ) ;
23- const [ visible , setVisible ] = useState ( false ) ;
23+ const [ menuVisible , setMenuVisible ] = useState ( false ) ;
2424 const [ showSpinner , setShowSpinner ] = useState ( false ) ;
2525 const [ modal , setModal ] = useState < ModalType | null > ( null ) ;
2626 const [ posX , setPosX ] = useState ( 0 ) ;
@@ -35,7 +35,7 @@ export default ({ uuid }: { uuid: string }) => {
3535 }
3636
3737 const windowListener = ( e : MouseEvent ) => {
38- if ( e . button === 2 || ! visible || ! menu . current ) {
38+ if ( e . button === 2 || ! menuVisible || ! menu . current ) {
3939 return ;
4040 }
4141
@@ -44,7 +44,7 @@ export default ({ uuid }: { uuid: string }) => {
4444 }
4545
4646 if ( e . target !== menu . current && ! menu . current . contains ( e . target as Node ) ) {
47- setVisible ( false ) ;
47+ setMenuVisible ( false ) ;
4848 }
4949 } ;
5050
@@ -70,16 +70,16 @@ export default ({ uuid }: { uuid: string }) => {
7070 } ;
7171
7272 useEffect ( ( ) => {
73- visible
73+ menuVisible
7474 ? document . addEventListener ( 'click' , windowListener )
7575 : document . removeEventListener ( 'click' , windowListener ) ;
7676
77- if ( visible && menu . current ) {
77+ if ( menuVisible && menu . current ) {
7878 menu . current . setAttribute (
7979 'style' , `margin-top: -0.35rem; left: ${ Math . round ( posX - menu . current . clientWidth ) } px` ,
8080 ) ;
8181 }
82- } , [ visible ] ) ;
82+ } , [ menuVisible ] ) ;
8383
8484 useEffect ( ( ) => ( ) => {
8585 document . removeEventListener ( 'click' , windowListener ) ;
@@ -92,34 +92,29 @@ export default ({ uuid }: { uuid: string }) => {
9292 className = { 'p-3 hover:text-white' }
9393 onClick = { e => {
9494 e . preventDefault ( ) ;
95- setModal ( null ) ;
96-
97- if ( ! visible ) {
95+ if ( ! menuVisible ) {
9896 setPosX ( e . clientX ) ;
9997 }
100-
101- setVisible ( ! visible ) ;
98+ setModal ( null ) ;
99+ setMenuVisible ( ! menuVisible ) ;
102100 } }
103101 >
104102 < FontAwesomeIcon icon = { faEllipsisH } />
105- { visible &&
106- < React . Fragment >
107- < RenameFileModal
108- file = { file }
109- visible = { modal === 'rename' || modal === 'move' }
110- useMoveTerminology = { modal === 'move' }
111- onDismissed = { ( ) => {
112- setModal ( null ) ;
113- setVisible ( false ) ;
114- } }
115- />
116- < SpinnerOverlay visible = { showSpinner } fixed = { true } large = { true } />
117- </ React . Fragment >
118- }
103+ < RenameFileModal
104+ file = { file }
105+ visible = { modal === 'rename' || modal === 'move' }
106+ useMoveTerminology = { modal === 'move' }
107+ onDismissed = { ( ) => {
108+ setModal ( null ) ;
109+ setMenuVisible ( false ) ;
110+ } }
111+ />
112+ < SpinnerOverlay visible = { showSpinner } fixed = { true } large = { true } />
119113 </ div >
120- < CSSTransition timeout = { 250 } in = { visible } unmountOnExit = { true } classNames = { 'fade' } >
114+ < CSSTransition timeout = { 250 } in = { menuVisible } unmountOnExit = { true } classNames = { 'fade' } >
121115 < div
122116 ref = { menu }
117+ onClick = { ( ) => setMenuVisible ( false ) }
123118 className = { 'absolute bg-white p-2 rounded border border-neutral-700 shadow-lg text-neutral-500 min-w-48' }
124119 >
125120 < div
0 commit comments