@@ -9,7 +9,7 @@ import React, {
99import useKeyDownHandlers from '../../modules/IDE/hooks/useKeyDownHandlers' ;
1010import { MenuOpenContext , NavBarContext } from './contexts' ;
1111
12- function NavBar ( { children } ) {
12+ function NavBar ( { children, className } ) {
1313 const [ dropdownOpen , setDropdownOpen ] = useState ( 'none' ) ;
1414
1515 const timerRef = useRef ( null ) ;
@@ -47,6 +47,15 @@ function NavBar({ children }) {
4747 timerRef . current = setTimeout ( ( ) => setDropdownOpen ( 'none' ) , 10 ) ;
4848 } , [ timerRef , setDropdownOpen ] ) ;
4949
50+ const toggleDropdownOpen = useCallback (
51+ ( dropdown ) => {
52+ setDropdownOpen ( ( prevState ) =>
53+ prevState === dropdown ? 'none' : dropdown
54+ ) ;
55+ } ,
56+ [ setDropdownOpen ]
57+ ) ;
58+
5059 const contextValue = useMemo (
5160 ( ) => ( {
5261 createDropdownHandlers : ( dropdown ) => ( {
@@ -56,9 +65,7 @@ function NavBar({ children }) {
5665 ) ;
5766 } ,
5867 onClick : ( ) => {
59- setDropdownOpen ( ( prevState ) =>
60- prevState === 'none' ? dropdown : 'none'
61- ) ;
68+ toggleDropdownOpen ( dropdown ) ;
6269 } ,
6370 onBlur : handleBlur ,
6471 onFocus : clearHideTimeout
@@ -72,15 +79,16 @@ function NavBar({ children }) {
7279 clearHideTimeout ( ) ;
7380 setDropdownOpen ( dropdown ) ;
7481 }
75- } )
82+ } ) ,
83+ toggleDropdownOpen
7684 } ) ,
77- [ setDropdownOpen , clearHideTimeout , handleBlur ]
85+ [ setDropdownOpen , toggleDropdownOpen , clearHideTimeout , handleBlur ]
7886 ) ;
7987
8088 return (
8189 < NavBarContext . Provider value = { contextValue } >
8290 < header >
83- < nav className = "nav" ref = { nodeRef } >
91+ < nav className = { className } ref = { nodeRef } >
8492 < MenuOpenContext . Provider value = { dropdownOpen } >
8593 { children }
8694 </ MenuOpenContext . Provider >
@@ -91,11 +99,13 @@ function NavBar({ children }) {
9199}
92100
93101NavBar . propTypes = {
94- children : PropTypes . node
102+ children : PropTypes . node ,
103+ className : PropTypes . string
95104} ;
96105
97106NavBar . defaultProps = {
98- children : null
107+ children : null ,
108+ className : 'nav'
99109} ;
100110
101111export default NavBar ;
0 commit comments