1- import * as React from 'react' ;
2- import { IRouterContext } from 'react-router'
3- import { Router } from '../../../decorators/router'
1+ import * as React from 'react'
42
53import Toggle from 'material-ui/Toggle' ;
64import Drawer from 'material-ui/Drawer' ;
@@ -16,41 +14,37 @@ import RaisedButton from 'material-ui/RaisedButton';
1614import FlatButton from 'material-ui/FlatButton' ;
1715import { Toolbar , ToolbarGroup , ToolbarSeparator , ToolbarTitle } from 'material-ui/Toolbar' ;
1816
17+ interface TopBarProps {
18+ toggleTheme :( ) => void ;
19+ logout :( ) => void ;
20+ useDarkTheme :boolean ;
21+ }
1922
20- interface MainState {
23+ interface TopBarState {
2124sideBarOpen ?:boolean
2225value ?:any
2326}
2427
25- @Router
26- export default class Main extends React . Component < any , MainState > {
28+ export class TopBar extends React . Component < TopBarProps , TopBarState > {
2729
28- constructor ( props : any , context : any ) {
29- super ( props , context ) ;
30+ constructor ( ) {
31+ super ( ) ;
3032
3133this . state = {
3234sideBarOpen :false
3335}
3436
35- this . handleToggleSideMenu = this . handleToggleSideMenu . bind ( this ) ;
36- this . logout = this . logout . bind ( this ) ;
37+ this . toggleSideMenu = this . toggleSideMenu . bind ( this ) ;
3738}
3839
39- context :IRouterContext ;
40-
41- handleToggleSideMenu ( open :boolean ) {
40+ toggleSideMenu ( open :boolean ) {
4241this . setState ( {
4342sideBarOpen :open
4443} ) ;
4544}
4645
47- logout ( ) {
48- localStorage . removeItem ( "auth" ) ;
49- this . context . router . push ( "dashboard" ) ;
50- }
51-
5246render ( ) {
53- var toolbar =
47+ const toolbar =
5448< Toolbar >
5549< ToolbarGroup firstChild = { true } >
5650< DropDownMenu value = { this . state . value } >
@@ -81,49 +75,43 @@ export default class Main extends React.Component<any, MainState>{
8175</ ToolbarGroup >
8276</ Toolbar > ;
8377
84- var sideMenu =
78+ const sideMenu =
8579< Drawer
8680docked = { false }
8781width = { 300 }
8882open = { this . state . sideBarOpen }
89- onRequestChange = { this . handleToggleSideMenu }
83+ onRequestChange = { this . toggleSideMenu }
9084>
91- < MenuItem onTouchTap = { ( ) => this . handleToggleSideMenu ( false ) } > Menu Item</ MenuItem >
92- < MenuItem onTouchTap = { ( ) => this . handleToggleSideMenu ( false ) } > Menu Item 2</ MenuItem >
85+ < MenuItem onTouchTap = { ( ) => this . toggleSideMenu ( false ) } > Menu Item</ MenuItem >
86+ < MenuItem onTouchTap = { ( ) => this . toggleSideMenu ( false ) } > Menu Item 2</ MenuItem >
9387</ Drawer >
9488
95- var swithTheme =
89+ const themeToggle =
9690< Toggle
97- // onToggle={this.handleToggleTheme }
98- // label={"dark:" + this.state .useDarkTheme}
99- // toggled={! this.state .useDarkTheme}
91+ onToggle = { this . props . toggleTheme }
92+ label = { "dark:" + this . props . useDarkTheme }
93+ toggled = { this . props . useDarkTheme }
10094/> ;
10195
102- var logoutButton =
96+ const logoutButton =
10397< FlatButton
104- onClick = { this . logout }
98+ onClick = { this . props . logout }
10599label = "logout"
106100/>
107101
108- var appBarRightElement =
102+ const appBarRightElement =
109103< div style = { { display :"inline-block" } } >
110- { swithTheme }
104+ { themeToggle }
111105{ logoutButton }
112106</ div >
113107
114- // var childProps = {
115- // this.props.children && React.cloneElement(this.props.children, {
116- // onToggleTheme: this.handleToggleTheme
117- // })
118- // };
119108
120109return (
121110< div >
122111{ sideMenu }
123- < AppBar iconElementRight = { appBarRightElement } onLeftIconButtonTouchTap = { ( ) => this . handleToggleSideMenu ( true ) } zDepth = { 0 } />
112+ < AppBar iconElementRight = { appBarRightElement } onLeftIconButtonTouchTap = { ( ) => this . toggleSideMenu ( true ) } zDepth = { 0 } />
124113{ toolbar }
125- { swithTheme }
126- { this . props . children }
114+ { themeToggle }
127115</ div >
128116) ;
129117}