@@ -19,6 +19,12 @@ const NavItemOnLargeScreens = styled(NavItem)`
19
19
display: none !important;
20
20
}
21
21
`
22
+ // Typscript TODO: otpConfig type
23
+ export type Props = {
24
+ otpConfig : any
25
+ popupTarget ?: string
26
+ setPopupContent : ( url : string ) => void
27
+ }
22
28
23
29
/**
24
30
* The desktop navigation bar, featuring a `branding` logo or a `title` text
@@ -27,81 +33,63 @@ const NavItemOnLargeScreens = styled(NavItem)`
27
33
* The `branding` and `title` parameters in config.yml are handled
28
34
* and shown in this order in the navigation bar:
29
35
* 1. If `branding` is defined, it is shown, and no title is displayed.
36
+ * (The title is still rendered for screen readers and browsers that lack image support.)
30
37
* 2. If `branding` is not defined but if `title` is, then `title` is shown.
31
38
* 3. If neither is defined, just show 'OpenTripPlanner' (DEFAULT_APP_TITLE).
32
39
*
33
40
* TODO: merge with the mobile navigation bar.
34
41
*/
35
- // Typscript TODO: otpConfig type
36
- export type Props = {
37
- otpConfig : any
38
- popupTarget ?: string
39
- setPopupContent : ( url : string ) => void
40
- }
41
-
42
42
const DesktopNav = ( { otpConfig, popupTarget, setPopupContent } : Props ) => {
43
43
const { branding, persistence, title = DEFAULT_APP_TITLE } = otpConfig
44
44
const { language : configLanguages } = otpConfig
45
45
const showLogin = Boolean ( getAuth0Config ( persistence ) )
46
46
47
- // Display branding and title in the order as described in the class summary.
48
- let brandingOrTitle
49
- if ( branding ) {
50
- brandingOrTitle = (
51
- < div
52
- className = { `icon-${ branding } ` }
53
- // FIXME: Style hack for desktop view.
54
- style = { { marginLeft : 50 } }
55
- />
56
- )
57
- } else {
58
- brandingOrTitle = (
59
- < div className = "navbar-title" style = { { marginLeft : 50 } } >
60
- { title }
61
- </ div >
62
- )
63
- }
64
-
65
47
return (
66
- < Navbar fluid inverse >
67
- { /* Required to allow the hamburger button to be clicked */ }
68
- < Navbar . Header style = { { position : 'relative' , width : '100%' , zIndex : 2 } } >
69
- < Navbar . Brand >
70
- { /* TODO: Reconcile CSS class and inline style. */ }
71
- < div
72
- className = "app-menu-container"
73
- style = { { color : 'white' , float : 'left' , marginTop : '5px' } }
74
- >
48
+ < header >
49
+ < Navbar fluid inverse >
50
+ < Navbar . Header
51
+ style = { { position : 'relative' , width : '100%' , zIndex : 2 } }
52
+ >
53
+ < Navbar . Brand >
75
54
< AppMenu />
76
- </ div >
55
+ < div
56
+ className = { branding && `with-icon icon-${ branding } ` }
57
+ style = { { marginLeft : 50 } }
58
+ >
59
+ { /* A title is always rendered (e.g.for screen readers)
60
+ but is visually-hidden if a branding icon is used. */ }
61
+ < div className = "navbar-title" > { title } </ div >
62
+ </ div >
63
+ </ Navbar . Brand >
77
64
78
- { brandingOrTitle }
79
- </ Navbar . Brand >
80
- < ViewSwitcher sticky />
65
+ < ViewSwitcher sticky />
81
66
82
- < Nav pullRight >
83
- { popupTarget && (
84
- < NavItemOnLargeScreens onClick = { ( ) => setPopupContent ( popupTarget ) } >
85
- < FormattedMessage id = { `config.popups.${ popupTarget } ` } />
86
- </ NavItemOnLargeScreens >
87
- ) }
88
- { configLanguages &&
89
- // Ensure that > 1 valid language is defined
90
- Object . keys ( configLanguages ) . filter (
91
- ( key ) => key !== 'allLanguages' && configLanguages [ key ] . name
92
- ) . length > 1 && (
93
- < LocaleSelector configLanguages = { configLanguages } />
67
+ < Nav pullRight >
68
+ { popupTarget && (
69
+ < NavItemOnLargeScreens
70
+ onClick = { ( ) => setPopupContent ( popupTarget ) }
71
+ >
72
+ < FormattedMessage id = { `config.popups.${ popupTarget } ` } />
73
+ </ NavItemOnLargeScreens >
74
+ ) }
75
+ { configLanguages &&
76
+ // Ensure that > 1 valid language is defined
77
+ Object . keys ( configLanguages ) . filter (
78
+ ( key ) => key !== 'allLanguages' && configLanguages [ key ] . name
79
+ ) . length > 1 && (
80
+ < LocaleSelector configLanguages = { configLanguages } />
81
+ ) }
82
+ { showLogin && (
83
+ < NavLoginButtonAuth0
84
+ id = "login-control"
85
+ links = { accountLinks }
86
+ style = { { float : 'right' } }
87
+ />
94
88
) }
95
- { showLogin && (
96
- < NavLoginButtonAuth0
97
- id = "login-control"
98
- links = { accountLinks }
99
- style = { { float : 'right' } }
100
- />
101
- ) }
102
- </ Nav >
103
- </ Navbar . Header >
104
- </ Navbar >
89
+ </ Nav >
90
+ </ Navbar . Header >
91
+ </ Navbar >
92
+ </ header >
105
93
)
106
94
}
107
95
0 commit comments