@@ -19,76 +19,50 @@ class DesktopHeader extends React.Component {
19
19
super ( props ) ;
20
20
}
21
21
22
- renderMainMenu ( ) {
23
- const { mainMenu } = this . props ;
24
-
25
- // Nodes are accepted as a prop
26
- if ( ! Array . isArray ( mainMenu ) ) {
27
- return mainMenu ;
28
- }
29
-
30
- return mainMenu . map ( ( menuItem ) => {
31
- const {
32
- type,
33
- href,
34
- content,
35
- submenuContent,
36
- } = menuItem ;
37
-
38
- if ( type === 'item' ) {
39
- return (
40
- < a key = { `${ type } -${ content } ` } className = "nav-link" href = { href } > { content } </ a >
41
- ) ;
42
- }
43
-
44
- return (
45
- < Menu key = { `${ type } -${ content } ` } tag = "div" className = "nav-item" respondToPointerEvents >
46
- < MenuTrigger tag = "a" className = "nav-link d-inline-flex align-items-center" href = { href } >
47
- { content } < CaretIcon role = "img" aria-hidden focusable = "false" />
48
- </ MenuTrigger >
49
- < MenuContent className = "pin-left pin-right shadow py-2" >
50
- { submenuContent }
51
- </ MenuContent >
52
- </ Menu >
53
- ) ;
54
- } ) ;
55
- }
22
+ userMenuWithUsername ( ) {
23
+ const {
24
+ userMenu,
25
+ avatar,
26
+ username,
27
+ intl,
28
+ } = this . props ;
56
29
57
- // Renders an optional App Menu for
58
- renderAppMenu ( ) {
59
- const { appMenu } = this . props ;
60
- const { content : appMenuContent , menuItems } = appMenu ;
61
30
return (
62
31
< Menu transitionClassName = "menu-dropdown" transitionTimeout = { 250 } >
63
- < MenuTrigger tag = "a" className = "nav-link d-inline-flex align-items-center" >
64
- { appMenuContent } < CaretIcon role = "img" aria-hidden focusable = "false" />
32
+ < MenuTrigger
33
+ tag = "button"
34
+ aria-label = { intl . formatMessage ( messages [ 'header.label.account.menu.for' ] , { username } ) }
35
+ className = "btn btn-outline-primary d-inline-flex align-items-center pl-2 pr-3"
36
+ >
37
+ < Avatar size = "1.5em" src = { avatar } alt = "" className = "mr-2" />
38
+ { username } < CaretIcon role = "img" aria-hidden focusable = "false" />
65
39
</ MenuTrigger >
66
40
< MenuContent className = "mb-0 dropdown-menu show dropdown-menu-right pin-right shadow py-2" >
67
- { menuItems . map ( ( { type, href, content } ) => (
41
+ { userMenu . map ( ( { type, href, content } ) => (
68
42
< a className = { `dropdown-${ type } ` } key = { `${ type } -${ content } ` } href = { href } > { content } </ a >
69
43
) ) }
70
44
</ MenuContent >
71
45
</ Menu >
72
46
) ;
73
47
}
74
48
75
- renderUserMenu ( ) {
49
+ userMenuWithoutUsername ( ) {
76
50
const {
77
51
userMenu,
78
52
avatar,
79
- username ,
53
+ name ,
80
54
intl,
81
55
} = this . props ;
82
56
83
57
return (
84
58
< Menu transitionClassName = "menu-dropdown" transitionTimeout = { 250 } >
85
59
< MenuTrigger
86
60
tag = "button"
87
- aria-label = { intl . formatMessage ( messages [ 'header.label.account.menu.for' ] , { username } ) }
61
+ aria-label = { intl . formatMessage ( messages [ 'header.label.account.menu.for' ] , { name } ) }
88
62
className = "btn btn-outline-primary d-inline-flex align-items-center pl-2 pr-3"
89
63
>
90
64
< Avatar size = "1.5em" src = { avatar } alt = "" className = "mr-2" />
91
- { username } < CaretIcon role = "img" aria-hidden focusable = "false" />
65
+ < CaretIcon role = "img" aria-hidden focusable = "false" />
92
66
</ MenuTrigger >
93
67
< MenuContent className = "mb-0 dropdown-menu show dropdown-menu-right pin-right shadow py-2" >
94
68
{ userMenu . map ( ( { type, href, content } ) => (
@@ -99,6 +73,63 @@ class DesktopHeader extends React.Component {
99
73
) ;
100
74
}
101
75
76
+ renderUserMenu ( ) {
77
+ return ( getConfig ( ) . ENABLE_HEADER_WITHOUT_USERNAME ? this . userMenuWithoutUsername ( ) : this . userMenuWithUsername ( ) ) ;
78
+ }
79
+
80
+ // Renders an optional App Menu for
81
+ renderAppMenu ( ) {
82
+ const { appMenu } = this . props ;
83
+ const { content : appMenuContent , menuItems } = appMenu ;
84
+ return (
85
+ < Menu transitionClassName = "menu-dropdown" transitionTimeout = { 250 } >
86
+ < MenuTrigger tag = "a" className = "nav-link d-inline-flex align-items-center" >
87
+ { appMenuContent } < CaretIcon role = "img" aria-hidden focusable = "false" />
88
+ </ MenuTrigger >
89
+ < MenuContent className = "mb-0 dropdown-menu show dropdown-menu-right pin-right shadow py-2" >
90
+ { menuItems . map ( ( { type, href, content } ) => (
91
+ < a className = { `dropdown-${ type } ` } key = { `${ type } -${ content } ` } href = { href } > { content } </ a >
92
+ ) ) }
93
+ </ MenuContent >
94
+ </ Menu >
95
+ ) ;
96
+ }
97
+
98
+ renderMainMenu ( ) {
99
+ const { mainMenu } = this . props ;
100
+
101
+ // Nodes are accepted as a prop
102
+ if ( ! Array . isArray ( mainMenu ) ) {
103
+ return mainMenu ;
104
+ }
105
+
106
+ return mainMenu . map ( ( menuItem ) => {
107
+ const {
108
+ type,
109
+ href,
110
+ content,
111
+ submenuContent,
112
+ } = menuItem ;
113
+
114
+ if ( type === 'item' ) {
115
+ return (
116
+ < a key = { `${ type } -${ content } ` } className = "nav-link" href = { href } > { content } </ a >
117
+ ) ;
118
+ }
119
+
120
+ return (
121
+ < Menu key = { `${ type } -${ content } ` } tag = "div" className = "nav-item" respondToPointerEvents >
122
+ < MenuTrigger tag = "a" className = "nav-link d-inline-flex align-items-center" href = { href } >
123
+ { content } < CaretIcon role = "img" aria-hidden focusable = "false" />
124
+ </ MenuTrigger >
125
+ < MenuContent className = "pin-left pin-right shadow py-2" >
126
+ { submenuContent }
127
+ </ MenuContent >
128
+ </ Menu >
129
+ ) ;
130
+ } ) ;
131
+ }
132
+
102
133
renderLoggedOutItems ( ) {
103
134
const { loggedOutItems } = this . props ;
104
135
@@ -178,6 +209,7 @@ DesktopHeader.propTypes = {
178
209
logoDestination : PropTypes . string ,
179
210
avatar : PropTypes . string ,
180
211
username : PropTypes . string ,
212
+ name : PropTypes . string ,
181
213
loggedIn : PropTypes . bool ,
182
214
183
215
// i18n
@@ -207,6 +239,7 @@ DesktopHeader.defaultProps = {
207
239
logoDestination : null ,
208
240
avatar : null ,
209
241
username : null ,
242
+ name : null ,
210
243
loggedIn : false ,
211
244
appMenu : null ,
212
245
} ;
0 commit comments