1- import classnames from 'classnames' ;
2- import { noop } from 'lodash/noop' ;
1+ import noop from 'lodash/noop' ;
32import { t } from 'i18next' ;
3+ import tap from 'lodash/tap' ;
44import PropTypes from 'prop-types' ;
55import React from 'react' ;
66import config from '../../config' ;
7+ import createMenu , { MenuItem } from './createMenu' ;
8+ import HamburgerMenuButton from './HamburgerMenuButton' ;
79
8- export default function HamburgerMenu ( {
9- isExperimental,
10- isGistExportInProgress,
11- isOpen,
12- isUserAuthenticated,
13- onExportGist,
14- onExportRepo,
15- } ) {
16- if ( ! isOpen ) {
17- return null ;
18- }
10+ const HamburgerMenu = createMenu ( {
11+ name : 'hamburger' ,
1912
13+ renderItems ( {
14+ isExperimental,
15+ isGistExportInProgress,
16+ isUserAuthenticated,
17+ onExportGist,
18+ onExportRepo,
19+ } ) {
20+ return tap ( [ ] , ( items ) => {
21+ items . push (
22+ < MenuItem
23+ key = "exportGist"
24+ onClick = { isGistExportInProgress ? noop : onExportGist }
25+ >
26+ { t ( 'top-bar.export-gist' ) }
27+ </ MenuItem > ,
28+ ) ;
2029
21- return (
22- < div className = "top-bar__menu" >
23- < div
24- className = "top-bar__menu-item"
25- onClick = { isGistExportInProgress ? noop : onExportGist }
26- >
27- { t ( 'top-bar.export-gist' ) }
28- </ div >
29- < div
30- className = {
31- classnames (
32- 'top-bar__menu-item' ,
33- { u__hidden : ! ( isUserAuthenticated && isExperimental ) } ,
34- )
35- }
36- onClick = { onExportRepo }
37- >
38- { t ( 'top-bar.export-repo' ) }
39- </ div >
40- < a
41- className = "top-bar__menu-item"
42- href = { config . feedbackUrl }
43- rel = "noopener noreferrer"
44- target = "blank"
45- >
46- { t ( 'top-bar.send-feedback' ) }
47- </ a >
48- < div className = "top-bar__menu-item top-bar__menu-item_icons" >
49- < a
50- className = "u__icon"
51- href = "https://github.com/popcodeorg/popcode"
52- rel = "noopener noreferrer"
53- target = "_blank"
54- > </ a >
55- < a
56- className = "u__icon"
57- href = "https://twitter.com/popcodeorg"
58- rel = "noopener noreferrer"
59- target = "_blank"
60- > </ a >
30+ if ( isUserAuthenticated && isExperimental ) {
31+ items . push (
32+ < MenuItem
33+ key = "exportRepo"
34+ onClick = { onExportRepo }
35+ >
36+ { t ( 'top-bar.export-repo' ) }
37+ </ MenuItem > ,
38+ ) ;
39+ }
40+
41+ items . push (
6142 < a
62- className = "u__icon"
63- href = "https://slack.popcode.org/"
43+ className = "top-bar__menu-item"
44+ href = { config . feedbackUrl }
45+ key = "feedback"
6446 rel = "noopener noreferrer"
65- target = "_blank"
66- > </ a >
67- </ div >
68- </ div >
69- ) ;
70- }
47+ target = "blank"
48+ >
49+ { t ( 'top-bar.send-feedback' ) }
50+ </ a > ,
51+ ) ;
52+
53+ items . push (
54+ < div
55+ className = "top-bar__menu-item top-bar__menu-item_icons"
56+ key = "social"
57+ >
58+ < a
59+ className = "u__icon"
60+ href = "https://github.com/popcodeorg/popcode"
61+ rel = "noopener noreferrer"
62+ target = "_blank"
63+ > </ a >
64+ < a
65+ className = "u__icon"
66+ href = "https://twitter.com/popcodeorg"
67+ rel = "noopener noreferrer"
68+ target = "_blank"
69+ > </ a >
70+ < a
71+ className = "u__icon"
72+ href = "https://slack.popcode.org/"
73+ rel = "noopener noreferrer"
74+ target = "_blank"
75+ > </ a >
76+ </ div > ,
77+ ) ;
78+ } ) ;
79+ } ,
80+ } ) ( HamburgerMenuButton ) ;
81+
7182
7283HamburgerMenu . propTypes = {
7384 isExperimental : PropTypes . bool . isRequired ,
@@ -77,3 +88,5 @@ HamburgerMenu.propTypes = {
7788 onExportGist : PropTypes . func . isRequired ,
7889 onExportRepo : PropTypes . func . isRequired ,
7990} ;
91+
92+ export default HamburgerMenu ;
0 commit comments