@@ -19,49 +19,79 @@ class DesktopHeader extends React.Component {
19
19
super ( props ) ;
20
20
}
21
21
22
- userMenuWithUsername ( ) {
23
- const {
24
- userMenu,
25
- avatar,
26
- username,
27
- intl,
28
- } = this . props ;
22
+ renderMainMenu ( ) {
23
+ const { mainMenu } = this . props ;
29
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
+ }
56
+
57
+ // Renders an optional App Menu for
58
+ renderAppMenu ( ) {
59
+ const { appMenu } = this . props ;
60
+ const { content : appMenuContent , menuItems } = appMenu ;
30
61
return (
31
62
< Menu transitionClassName = "menu-dropdown" transitionTimeout = { 250 } >
32
- < MenuTrigger
33
- tag = "button"
34
- aria-label = { intl . formatMessage ( messages [ 'header.label.account.menu.with.username' ] , { 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" />
63
+ < MenuTrigger tag = "a" className = "nav-link d-inline-flex align-items-center" >
64
+ { appMenuContent } < CaretIcon role = "img" aria-hidden focusable = "false" />
39
65
</ MenuTrigger >
40
66
< MenuContent className = "mb-0 dropdown-menu show dropdown-menu-right pin-right shadow py-2" >
41
- { userMenu . map ( ( { type, href, content } ) => (
67
+ { menuItems . map ( ( { type, href, content } ) => (
42
68
< a className = { `dropdown-${ type } ` } key = { `${ type } -${ content } ` } href = { href } > { content } </ a >
43
69
) ) }
44
70
</ MenuContent >
45
71
</ Menu >
46
72
) ;
47
73
}
48
74
49
- userMenuWithoutUsername ( ) {
75
+ renderUserMenu ( ) {
50
76
const {
77
+ intl,
51
78
userMenu,
52
79
avatar,
53
80
name,
54
- intl ,
81
+ username ,
55
82
} = this . props ;
83
+ const hideUsername = getConfig ( ) . HIDE_USERNAME_IN_HEADER ;
84
+ const usernameOrName = hideUsername ? name : username ;
56
85
57
86
return (
58
87
< Menu transitionClassName = "menu-dropdown" transitionTimeout = { 250 } >
59
88
< MenuTrigger
60
89
tag = "button"
61
- aria-label = { intl . formatMessage ( messages [ 'header.label.account.menu.without. username' ] , { name } ) }
90
+ aria-label = { intl . formatMessage ( messages [ 'header.label.account.menu.using.name.or. username' ] , { usernameOrName } ) }
62
91
className = "btn btn-outline-primary d-inline-flex align-items-center pl-2 pr-3"
63
92
>
64
93
< Avatar size = "1.5em" src = { avatar } alt = "" className = "mr-2" />
94
+ { hideUsername ? null : username }
65
95
< CaretIcon role = "img" aria-hidden focusable = "false" />
66
96
</ MenuTrigger >
67
97
< MenuContent className = "mb-0 dropdown-menu show dropdown-menu-right pin-right shadow py-2" >
@@ -73,63 +103,6 @@ class DesktopHeader extends React.Component {
73
103
) ;
74
104
}
75
105
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
-
133
106
renderLoggedOutItems ( ) {
134
107
const { loggedOutItems } = this . props ;
135
108
0 commit comments