11import './Header.css' ;
2- import React from 'react' ;
2+ import React , { useState } from 'react' ;
33import LoggingPanel from '../../LoggingPanel/LoggingPanel' ;
44import { useNavigate } from "react-router-dom" ;
55import { Menu , MenuItem , IconButton } from '@mui/material' ;
@@ -8,23 +8,38 @@ import {themes} from '../../../theme';
88
99export default function Header ( { theme, changeTheme} ) {
1010 let navigate = useNavigate ( ) ;
11- const [ showLogs , setShowLogs ] = React . useState ( false )
12- const [ actionsList , setActionsList ] = React . useState ( false )
13- const [ anchorEl , setAnchorEl ] = React . useState ( null ) ;
11+ const [ showLogs , setShowLogs ] = useState ( false ) ;
12+ const [ menuActionsList , setMenuActionsList ] = useState ( false ) ;
13+ const [ menuAnchorEl , setMenuAnchorEl ] = useState ( null ) ;
14+ const [ logoMenuAnchor , setLogoMenuAnchor ] = useState ( null ) ;
15+ const [ logoActionsList , setLogoActionsList ] = useState ( false ) ;
16+ const [ current_theme , setCurrentTheme ] = useState ( localStorage . getItem ( "theme" ) ) ;
1417
1518 const handleNavigateHome = ( ) => {
16- // setActionsList(!actionsList)
1719 navigate ( "/flowsheets" , { replace : true } )
1820 }
1921
2022 const handleShowLogs = ( ) => {
2123 setShowLogs ( ! showLogs )
22- setActionsList ( false )
24+ setMenuActionsList ( false )
2325 }
2426
2527 const handleShowActions = ( event ) => {
26- setActionsList ( ! actionsList )
27- setAnchorEl ( event . currentTarget ) ;
28+ setMenuActionsList ( ! menuActionsList )
29+ setMenuAnchorEl ( event . currentTarget ) ;
30+ }
31+
32+ const handleShowLogoActions = ( event ) => {
33+ if ( process . env . NODE_ENV === 'development' ) {
34+ setLogoActionsList ( ! logoActionsList )
35+ setLogoMenuAnchor ( event . currentTarget ) ;
36+ }
37+ }
38+
39+ const getLogoStyle = ( ) => {
40+ const logoStyle = { color : theme . header . color }
41+ if ( process . env . NODE_ENV === 'development' ) logoStyle . cursor = 'pointer' ;
42+ return logoStyle ;
2843 }
2944
3045 return (
@@ -37,25 +52,38 @@ export default function Header({theme, changeTheme}) {
3752 } } onClick = { handleNavigateHome } >
3853 < img data-testid = "project-logo" src = { theme . logoOnly } alt = { `${ theme . project } logo` } />
3954 </ div >
40- < div id = "titlebar-name" style = { { color : theme . header . color } } >
55+ < div id = "titlebar-name" style = { getLogoStyle ( ) } onClick = { handleShowLogoActions } >
4156 { theme . projectTitle }
57+ < Menu
58+ id = "actions-list"
59+ anchorEl = { logoMenuAnchor }
60+ open = { logoActionsList }
61+ onClose = { ( ) => setLogoActionsList ( false ) }
62+ >
63+ { process . env . NODE_ENV === 'development' && (
64+ Object . keys ( themes ) . map ( ( key , idx ) => {
65+ if ( key !== current_theme && key !== "watertap" ) return (
66+ < MenuItem key = { `logo_${ key } ` } className = "change_theme" onClick = { ( ) => changeTheme ( key ) } > Switch to { key . replace ( "nawi" , "watertap" ) } </ MenuItem >
67+ )
68+ } )
69+ ) }
70+ </ Menu >
4271 </ div >
4372 < div className = "right" >
4473 < IconButton className = "header-actions" style = { { color : theme . menuButton . color } } onClick = { handleShowActions } >
4574 < ListIcon />
4675 </ IconButton >
4776 < Menu
4877 id = "actions-list"
49- anchorEl = { anchorEl }
50- open = { actionsList }
51- onClose = { ( ) => setActionsList ( false ) }
78+ anchorEl = { menuAnchorEl }
79+ open = { menuActionsList }
80+ onClose = { ( ) => setMenuActionsList ( false ) }
5281 >
5382 < MenuItem className = "view-logs" onClick = { handleShowLogs } > View Logs</ MenuItem >
5483 { process . env . NODE_ENV === 'development' && (
5584 Object . keys ( themes ) . map ( ( key , idx ) => {
56- let current_theme = localStorage . getItem ( "theme" )
5785 if ( key !== current_theme && key !== "watertap" ) return (
58- < MenuItem key = { key } className = "change_theme" onClick = { ( ) => changeTheme ( key ) } > Switch to { key . replace ( "nawi" , "watertap" ) } </ MenuItem >
86+ < MenuItem key = { `menu_ ${ key } ` } className = "change_theme" onClick = { ( ) => changeTheme ( key ) } > Switch to { key . replace ( "nawi" , "watertap" ) } </ MenuItem >
5987 )
6088 } )
6189 ) }
0 commit comments