joplin/ReactNativeClient/lib/components/checkbox.js

54 lines
1.1 KiB
JavaScript
Raw Normal View History

2017-05-16 19:12:37 +00:00
import React, { Component } from 'react';
2017-05-24 20:51:50 +00:00
import { StyleSheet, TouchableHighlight } from 'react-native';
import Icon from 'react-native-vector-icons/Ionicons';
const styles = StyleSheet.create({
checkboxIcon: {
fontSize: 20,
height: 22,
marginRight: 10,
},
});
2017-05-16 19:12:37 +00:00
class Checkbox extends Component {
2017-05-24 20:51:50 +00:00
constructor() {
super();
this.state = {
checked: false,
}
}
componentWillMount() {
this.state = { checked: this.props.checked };
}
2017-07-15 18:13:31 +00:00
componentWillReceiveProps(newProps) {
if ('checked' in newProps) {
this.setState({ checked: newProps.checked });
}
}
2017-06-06 20:01:43 +00:00
onPress() {
2017-05-24 20:51:50 +00:00
let newChecked = !this.state.checked;
this.setState({ checked: newChecked });
if (this.props.onChange) this.props.onChange(newChecked);
}
render() {
const iconName = this.state.checked ? 'md-checkbox-outline' : 'md-square-outline';
2017-07-15 18:37:17 +00:00
let style = this.props.style ? Object.assign({}, this.props.style) : {};
style.justifyContent = 'center';
style.alignItems = 'center';
2017-05-24 20:51:50 +00:00
return (
2017-07-15 18:37:17 +00:00
<TouchableHighlight onPress={() => this.onPress()} style={style}>
2017-05-24 20:51:50 +00:00
<Icon name={iconName} style={styles.checkboxIcon}/>
</TouchableHighlight>
);
}
2017-05-16 19:12:37 +00:00
}
2017-05-24 20:51:50 +00:00
export { Checkbox };