@@ -7,17 +7,23 @@ import {
7
7
} from '~/components/language-selector/language-selector' ;
8
8
import { FormattedMessage } from 'react-intl' ;
9
9
import { useLocation } from 'react-router-dom' ;
10
- import { useDataFromSlug } from '~/helpers/page-data-utils' ;
10
+ import { useDataFromSlug } from '~/helpers/page-data-utils' ;
11
11
import Dropdown , { MenuItem } from './dropdown/dropdown' ;
12
12
import LoginMenu from './login-menu/login-menu' ;
13
13
import GiveButton from '../give-button/give-button' ;
14
14
import { treatSpaceOrEnterAsClick } from '~/helpers/events' ;
15
15
import './main-menu.scss' ;
16
16
17
17
function DropdownOrMenuItem ( { item} ) {
18
+ if ( ! item . name && ! item . label ) {
19
+ return null ;
20
+ }
18
21
if ( 'menu' in item ) {
19
22
return (
20
- < Dropdown label = { item . name } navAnalytics = { `Main Menu (${ item . name } )` } >
23
+ < Dropdown
24
+ label = { item . name }
25
+ navAnalytics = { `Main Menu (${ item . name } )` }
26
+ >
21
27
< MenusFromStructure structure = { item . menu } />
22
28
</ Dropdown >
23
29
) ;
@@ -43,18 +49,11 @@ function MenusFromCMS() {
43
49
return null ;
44
50
}
45
51
46
- return (
47
- < MenusFromStructure structure = { structure } />
48
- ) ;
52
+ return < MenusFromStructure structure = { structure } /> ;
49
53
}
50
54
51
55
function K12MenuItem ( ) {
52
- return (
53
- < MenuItem
54
- label = '& #127822 ; For K12 Teachers '
55
- url = '/k12'
56
- />
57
- ) ;
56
+ return < MenuItem label = "& #127822 ; For K12 Teachers " url = "/k12" /> ;
58
57
}
59
58
60
59
function SubjectsMenu ( ) {
@@ -69,27 +68,38 @@ function SubjectsMenu() {
69
68
}
70
69
71
70
return (
72
- < Dropdown className = 'subjects-dropdown' label = 'Subjects' navAnalytics = "Main Menu (Subjects)" >
73
- { categories . filter ( ( obj ) => obj . html !== 'K12' ) . map ( ( obj ) => (
74
- < MenuItem
75
- key = { obj . value }
76
- label = { obj . html }
77
- url = { `/subjects/${ obj . value } ` }
78
- />
79
- ) ) }
71
+ < Dropdown
72
+ className = "subjects-dropdown"
73
+ label = "Subjects"
74
+ navAnalytics = "Main Menu (Subjects)"
75
+ >
76
+ { categories
77
+ . filter ( ( obj ) => obj . html !== 'K12' )
78
+ . map ( ( obj ) => (
79
+ < MenuItem
80
+ key = { obj . value }
81
+ label = { obj . html }
82
+ url = { `/subjects/${ obj . value } ` }
83
+ />
84
+ ) ) }
80
85
{ pathname . startsWith ( '/details/books' ) ? null : (
81
86
< React . Fragment >
82
87
< LanguageSelectorWrapper >
83
- < FormattedMessage id = ' view' defaultMessage = ' View' /> { ' ' }
88
+ < FormattedMessage id = " view" defaultMessage = " View" /> { ' ' }
84
89
< LanguageLink locale = { otherLocale } />
85
90
</ LanguageSelectorWrapper >
86
91
< LanguageSelectorWrapper >
87
- < FormattedMessage id = ' view' defaultMessage = ' View' /> { ' ' }
88
- < LanguageLink locale = 'pl' />
92
+ < FormattedMessage id = " view" defaultMessage = " View" /> { ' ' }
93
+ < LanguageLink locale = "pl" />
89
94
</ LanguageSelectorWrapper >
90
95
</ React . Fragment >
91
- ) }
92
- { language === 'en' ? < React . Fragment > < hr /> < K12MenuItem /> </ React . Fragment > : null }
96
+ ) }
97
+ { language === 'en' ? (
98
+ < React . Fragment >
99
+ < hr />
100
+ < K12MenuItem />
101
+ </ React . Fragment >
102
+ ) : null }
93
103
</ Dropdown >
94
104
) ;
95
105
}
@@ -99,12 +109,18 @@ function navigateWithArrows(event) {
99
109
case 'ArrowRight' :
100
110
event . preventDefault ( ) ;
101
111
event . stopPropagation ( ) ;
102
- event . target . closest ( 'li' ) . nextElementSibling ?. querySelector ( 'a' ) . focus ( ) ;
112
+ event . target
113
+ . closest ( 'li' )
114
+ . nextElementSibling ?. querySelector ( 'a' )
115
+ . focus ( ) ;
103
116
break ;
104
117
case 'ArrowLeft' :
105
118
event . preventDefault ( ) ;
106
119
event . stopPropagation ( ) ;
107
- event . target . closest ( 'li' ) . previousElementSibling ?. querySelector ( 'a' ) . focus ( ) ;
120
+ event . target
121
+ . closest ( 'li' )
122
+ . previousElementSibling ?. querySelector ( 'a' )
123
+ . focus ( ) ;
108
124
break ;
109
125
default :
110
126
break ;
@@ -117,7 +133,7 @@ export function MainMenuItems() {
117
133
< React . Fragment >
118
134
< SubjectsMenu />
119
135
< MenusFromCMS />
120
- < li className = ' give-button-item' role = ' presentation' >
136
+ < li className = " give-button-item" role = " presentation" >
121
137
< GiveButton />
122
138
</ li >
123
139
< LoginMenu />
@@ -127,7 +143,11 @@ export function MainMenuItems() {
127
143
128
144
export default function MainMenu ( ) {
129
145
return (
130
- < ul className = 'nav-menu main-menu no-bullets' data-analytics-nav = "Main Menu" onKeyDown = { navigateWithArrows } >
146
+ < ul
147
+ className = "nav-menu main-menu no-bullets"
148
+ data-analytics-nav = "Main Menu"
149
+ onKeyDown = { navigateWithArrows }
150
+ >
131
151
< MainMenuItems />
132
152
</ ul >
133
153
) ;
0 commit comments