1
- import React , { Component } from 'react'
2
- import { FormattedMessage as Message } from 'react-intl'
3
- import GithubConnector from '../../GithubConnector'
4
- import classNames from 'classnames'
5
-
6
- import styles from './sass/header.module.sass'
7
-
8
- import HeaderLogo from './HeaderLogo'
9
- import HeaderAccount from './HeaderAccount'
10
- import HeaderHamburger from './HeaderHamburger'
11
- import HeaderLink from './HeaderLink'
12
- import HeaderLinks from './HeaderLinks'
13
- import HeaderSeparator from './HeaderSeparator'
14
- import HeaderSpacer from './HeaderSpacer'
15
-
16
- export default class Header extends Component {
17
- constructor ( props ) {
1
+ import React , { Component } from "react" ;
2
+
3
+ import { FormattedMessage as Message } from "react-intl" ;
4
+ import GithubConnector from "../../GithubConnector" ;
5
+ import classNames from "classnames" ;
6
+
7
+ import HeaderLogo from "./HeaderLogo" ;
8
+ import HeaderAccount from "./HeaderAccount" ;
9
+ import HeaderHamburger from "./HeaderHamburger" ;
10
+ import HeaderLink from "./HeaderLink" ;
11
+ import HeaderLinks from "./HeaderLinks" ;
12
+ import HeaderSeparator from "./HeaderSeparator" ;
13
+ import HeaderSpacer from "./HeaderSpacer" ;
14
+
15
+ import styles from "./sass/Header.module.sass" ;
16
+
17
+ type HeaderProps = React . HTMLProps < HTMLHeadElement > ;
18
+
19
+ type HeaderState = {
20
+ isOpened : boolean ;
21
+ connector : GithubConnector ;
22
+ } ;
23
+
24
+ export default class Header extends Component < HeaderProps , HeaderState > {
25
+ constructor ( props : HeaderProps ) {
18
26
super ( props ) ;
19
-
27
+
20
28
this . state = {
21
29
isOpened : false ,
22
- connector : GithubConnector . getInstance ( )
30
+ connector : GithubConnector . getInstance ( ) ,
23
31
} ;
24
32
25
33
this . login = this . login . bind ( this ) ;
@@ -29,19 +37,19 @@ export default class Header extends Component {
29
37
this . closeHamburger = this . closeHamburger . bind ( this ) ;
30
38
31
39
this . onAuthStateChanged = this . onAuthStateChanged . bind ( this ) ;
32
-
40
+
33
41
this . componentDidMount = this . componentDidMount . bind ( this ) ;
34
42
this . componentWillUnmount = this . componentWillUnmount . bind ( this ) ;
35
43
}
36
-
44
+
37
45
componentDidMount ( ) {
38
46
this . state . connector . onAuthStateChanged ( this . onAuthStateChanged ) ;
39
47
}
40
-
48
+
41
49
componentWillUnmount ( ) {
42
50
this . state . connector . removeAuthStateChanged ( this . onAuthStateChanged ) ;
43
51
}
44
-
52
+
45
53
onAuthStateChanged ( ) {
46
54
this . forceUpdate ( ) ;
47
55
}
@@ -55,7 +63,7 @@ export default class Header extends Component {
55
63
}
56
64
57
65
toggleHamburger ( ) {
58
- this . setState ( { isOpened : ! this . state . isOpened } ) ;
66
+ this . setState ( { isOpened : ! this . state . isOpened } ) ;
59
67
}
60
68
61
69
closeHamburger ( ) {
@@ -66,26 +74,36 @@ export default class Header extends Component {
66
74
let isLogged = this . state . connector . isLogged ( ) ;
67
75
68
76
let messages = {
69
- omega : < Message id = 'toolbar.omega' defaultMessage = 'Omega' /> ,
70
- install : < Message id = 'toolbar.install' defaultMessage = 'Install' /> ,
71
- releases : < Message id = 'toolbar.releases' defaultMessage = 'Releases' /> ,
72
- simulator : < Message id = 'toolbar.simulator' defaultMessage = 'Simulator' /> ,
73
- wiki : < Message id = 'toolbar.wiki' defaultMessage = 'Wiki' /> ,
74
- IDE : < Message id = 'toolbar.ide' defaultMessage = 'Python IDE' /> ,
75
- gitHub : < Message id = 'toolbar.github' defaultMessage = 'GitHub' /> ,
76
- login : < Message id = 'toolbar.login' defaultMessage = 'Login with Github' /> ,
77
- logout : < Message id = 'toolbar.logout' defaultMessage = 'Logout' /> ,
78
- }
77
+ omega : < Message id = "toolbar.omega" defaultMessage = "Omega" /> ,
78
+ install : < Message id = "toolbar.install" defaultMessage = "Install" /> ,
79
+ releases : (
80
+ < Message id = "toolbar.releases" defaultMessage = "Releases" />
81
+ ) ,
82
+ simulator : (
83
+ < Message id = "toolbar.simulator" defaultMessage = "Simulator" />
84
+ ) ,
85
+ wiki : < Message id = "toolbar.wiki" defaultMessage = "Wiki" /> ,
86
+ IDE : < Message id = "toolbar.ide" defaultMessage = "Python IDE" /> ,
87
+ gitHub : < Message id = "toolbar.github" defaultMessage = "GitHub" /> ,
88
+ login : (
89
+ < Message
90
+ id = "toolbar.login"
91
+ defaultMessage = "Login with Github"
92
+ />
93
+ ) ,
94
+ logout : < Message id = "toolbar.logout" defaultMessage = "Logout" /> ,
95
+ } ;
79
96
80
97
return (
81
98
< header
99
+ { ...this . props }
82
100
className = { classNames ( {
83
101
[ styles . header ] : true ,
84
102
[ styles . headerOpened ] : this . state . isOpened ,
85
- [ this . props . className ] : true ,
103
+ header : true , // For Omega-IDE
86
104
} ) }
87
105
>
88
- < HeaderLogo onClick = { this . closeHamburger } className = "logo ">
106
+ < HeaderLogo onClick = { this . closeHamburger } to = "/ ">
89
107
{ messages . omega }
90
108
</ HeaderLogo >
91
109
< HeaderSpacer />
0 commit comments