Skip to content

Commit 61725d4

Browse files
committed
Refactoring
1 parent a22080e commit 61725d4

File tree

1 file changed

+1
-125
lines changed

1 file changed

+1
-125
lines changed

index.js

+1-125
Original file line numberDiff line numberDiff line change
@@ -1,127 +1,3 @@
1-
var React = require('react-native')
2-
3-
4-
var {
5-
Animated,
6-
ActivityIndicatorIOS,
7-
Component,
8-
View,
9-
Text,
10-
StyleSheet,
11-
TouchableHighlight
12-
} = React
13-
14-
15-
class InnerButtonView extends Component {
16-
17-
render() {
18-
return(
19-
<View style={styles.insideView}>
20-
{ this.props.currentStateObject.spinner ? <ActivityIndicatorIOS color="white" style={styles.activityIndicator}/> : null }
21-
<Text style={ this.props.currentStateObject.labelStyle }>{ this.props.currentStateObject.text }</Text>
22-
</View>
23-
)
24-
}
25-
26-
}
27-
28-
29-
class ButtonView extends Component {
30-
31-
shadeColor1(color, percent) {
32-
const num = parseInt(color.slice(1),16), amt = Math.round(2.55 * percent), R = (num >> 16) + amt, G = (num >> 8 & 0x00FF) + amt, B = (num & 0x0000FF) + amt;
33-
return "#" + (0x1000000 + (R<255?R<1?0:R:255)*0x10000 + (G<255?G<1?0:G:255)*0x100 + (B<255?B<1?0:B:255)).toString(16).slice(1);
34-
}
35-
36-
render() {
37-
if(this.props.states.hasOwnProperty(this.props.buttonState)){
38-
const currentStateObject = this.props.states[this.props.buttonState]
39-
} else {
40-
const currentStateObject = {
41-
text: 'Button state not recognized',
42-
backgroundStyle: {
43-
backgroundColor: 'black',
44-
},
45-
labelStyle: {
46-
color: 'white',
47-
}
48-
}
49-
}
50-
if (currentStateObject.touchable) {
51-
return (
52-
<TouchableHighlight style={[ this.props.style, currentStateObject.backgroundStyle ]}
53-
underlayColor={this.shadeColor1(currentStateObject.backgroundStyle.backgroundColor,-5)}
54-
onPress={currentStateObject.onClick}>
55-
<View style={[styles.container, this.props.style ]}>
56-
<InnerButtonView currentStateObject={currentStateObject}/>
57-
</View>
58-
</TouchableHighlight>
59-
)
60-
} else {
61-
return (
62-
<View style={[ this.props.style, currentStateObject.backgroundStyle ]}>
63-
<InnerButtonView currentStateObject={currentStateObject}/>
64-
</View>
65-
)
66-
}
67-
}
68-
69-
}
70-
71-
72-
var AnimatedButton = Animated.createAnimatedComponent(ButtonView)
73-
74-
75-
class AwesomeButton extends Component {
76-
77-
constructor(props: any) {
78-
super(props);
79-
this.state = {
80-
opacityValue: new Animated.Value(0),
81-
view1: this.props.buttonState,
82-
}
83-
}
84-
85-
startAnimation() {
86-
Animated.timing(this.state.opacityValue,
87-
{
88-
toValue: 1,
89-
duration: 300,
90-
delay: 50
91-
}).start()
92-
}
93-
94-
componentWillReceiveProps(nextProps) {
95-
this.setState({ view1: this.props.buttonState, view2: nextProps.buttonState })
96-
this.startAnimation()
97-
}
98-
99-
render() {
100-
return (
101-
<View>
102-
<ButtonView {...this.props} buttonState={this.state.view1}/>
103-
<AnimatedButton {...this.props} buttonState={this.state.view2} style={[ this.props.style, { position: 'absolute', top: 0, left: 0, opacity: this.state.opacityValue }]}/>
104-
</View>
105-
)
106-
}
107-
108-
}
109-
110-
111-
const styles = StyleSheet.create({
112-
insideView: {
113-
flex: 1,
114-
flexDirection: 'row',
115-
alignItems: 'center',
116-
alignSelf: 'center'
117-
},
118-
activityIndicator: {
119-
marginRight: 8,
120-
},
121-
container: {
122-
flex: 1,
123-
}
124-
})
125-
1+
const AwesomeButton = require('./src/AwesomeButton.js')
1262

1273
module.exports = AwesomeButton

0 commit comments

Comments
 (0)