forked from ganmor/react-native-webbrowser
-
Notifications
You must be signed in to change notification settings - Fork 4
/
Toolbar.js
executable file
·122 lines (100 loc) · 3.29 KB
/
Toolbar.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
'use strict';
import React from 'react';
import {
View,
Image
} from 'react-native';
import BaseComponent from './BaseComponent'
import Button from './Button'
import styles from './styles'
class Toolbar extends BaseComponent {
constructor(props) {
super(props);
this.inputText = '';
this.state = Toolbar.updateState(this.props);
}
static updateState(props) {
return {
backButtonEnabled: props.backButtonEnabled,
forwardButtonEnabled: props.forwardButtonEnabled,
homeButtonEnabled: props.homeButtonEnabled,
onBack: props.onBack,
onHome: props.onHome,
onForward: props.onForward
}
}
componentWillReceiveProps(nextProps) {
this.setState(Toolbar.updateState(nextProps));
}
renderHomeButton() {
if (this.props.hideHomeButton) {
return <View/>
}
let homeButtonComponent = (
<Image
style={this.buttonStyle()}
source={require('./assets/images/home-outline.png')}
/>
);
if (this.props.renderHomeButton) {
homeButtonComponent = this.props.renderHomeButton(this.buttonStyle());
}
return (
<Button
disabled={!this.state.homeButtonEnabled}
onPress={this.state.onHome}>
{homeButtonComponent}
</Button>
);
}
buttonStyle() {
return [styles.toolBarIcons, this.props.foregroundColor && {tintColor:this.props.foregroundColor}];
}
render() {
return (
<View style={styles.toolBar}>
<View style={{flex:1, flexDirection:'row'}}>
<Button
disabled={!this.state.backButtonEnabled}
onPress={this.state.onBack}>
<Image
style={this.buttonStyle()}
source={require('./assets/images/arrow-left.png')}
/>
</Button>
<Button
disabled={!this.state.forwardButtonEnabled}
onPress={this.state.onForward}>
<Image
style={this.buttonStyle()}
source={require('./assets/images/arrow-right.png')}
/>
</Button>
</View>
<View style={{flex:1, flexDirection:'row', justifyContent:'flex-end'}}>
{this.renderHomeButton()}
</View>
</View>
);
}
}
Toolbar.propTypes = {
backButtonEnabled: React.PropTypes.bool,
forwardButtonEnabled: React.PropTypes.bool,
homeButtonEnabled: React.PropTypes.bool,
hideHomeButton: React.PropTypes.bool,
onBack: React.PropTypes.func,
onHome: React.PropTypes.func,
onForward: React.PropTypes.func,
foregroundColor: React.PropTypes.string
};
Toolbar.defaultProps = {
backButtonEnabled: false,
forwardButtonEnabled: false,
homeButtonEnabled: true,
hideHomeButton: false,
onBack: ()=> {},
onHome: ()=> {},
onForward: ()=> {}
};
module.exports = Toolbar;