First attempt for radio buttons
This commit is contained in:
@@ -0,0 +1,36 @@
|
|||||||
|
import React, { Component } from 'react'
|
||||||
|
import {
|
||||||
|
View,
|
||||||
|
Text,
|
||||||
|
TouchableOpacity,
|
||||||
|
} from 'react-native'
|
||||||
|
import styles from '../../styles'
|
||||||
|
|
||||||
|
export default class RadioButton extends Component {
|
||||||
|
render() {
|
||||||
|
return (
|
||||||
|
<View style={styles.radioButtonGroup}>
|
||||||
|
{
|
||||||
|
this.props.buttons.map(({ label, value }) => {
|
||||||
|
const circleStyle = [styles.radioButton]
|
||||||
|
if (value === this.props.active) {
|
||||||
|
circleStyle.push(styles.radioButtonActive)
|
||||||
|
}
|
||||||
|
return (
|
||||||
|
<TouchableOpacity
|
||||||
|
onPress={() => this.props.onSelect(value)}
|
||||||
|
key={value}
|
||||||
|
activeOpacity={1}
|
||||||
|
>
|
||||||
|
<View style={styles.radioButtonTextGroup}>
|
||||||
|
<View style={circleStyle} />
|
||||||
|
<Text>{label}</Text>
|
||||||
|
</View>
|
||||||
|
</TouchableOpacity>
|
||||||
|
)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
</View>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,7 +5,6 @@ import {
|
|||||||
Switch,
|
Switch,
|
||||||
ScrollView
|
ScrollView
|
||||||
} from 'react-native'
|
} from 'react-native'
|
||||||
import RadioForm from 'react-native-simple-radio-button'
|
|
||||||
import styles from '../../../styles'
|
import styles from '../../../styles'
|
||||||
import { saveSymptom } from '../../../db'
|
import { saveSymptom } from '../../../db'
|
||||||
import {
|
import {
|
||||||
@@ -14,7 +13,7 @@ import {
|
|||||||
} from '../labels/labels'
|
} from '../labels/labels'
|
||||||
import computeSensiplanValue from '../../../lib/sensiplan-mucus'
|
import computeSensiplanValue from '../../../lib/sensiplan-mucus'
|
||||||
import ActionButtonFooter from './action-button-footer'
|
import ActionButtonFooter from './action-button-footer'
|
||||||
import SelectBox from '../select-box'
|
import RadioButtonGroup from '../radio-button-group'
|
||||||
|
|
||||||
|
|
||||||
export default class Mucus extends Component {
|
export default class Mucus extends Component {
|
||||||
@@ -37,13 +36,13 @@ export default class Mucus extends Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const mucusFeelingBoxes = [
|
const mucusFeeling = [
|
||||||
{ label: feelingLabels[0], value: 0 },
|
{ label: feelingLabels[0], stateKey: ''},
|
||||||
{ label: feelingLabels[1], value: 1 },
|
{ label: feelingLabels[1], value: 1 },
|
||||||
{ label: feelingLabels[2], value: 2 },
|
{ label: feelingLabels[2], value: 2 },
|
||||||
{ label: feelingLabels[3], value: 3 }
|
{ label: feelingLabels[3], value: 3 }
|
||||||
]
|
]
|
||||||
const mucusTextureRadioProps = [
|
const mucusTexture = [
|
||||||
{ label: textureLabels[0], value: 0 },
|
{ label: textureLabels[0], value: 0 },
|
||||||
{ label: textureLabels[1], value: 1 },
|
{ label: textureLabels[1], value: 1 },
|
||||||
{ label: textureLabels[2], value: 2 }
|
{ label: textureLabels[2], value: 2 }
|
||||||
@@ -54,11 +53,19 @@ export default class Mucus extends Component {
|
|||||||
<View>
|
<View>
|
||||||
<Text style={styles.symptomViewHeading}>Feeling</Text>
|
<Text style={styles.symptomViewHeading}>Feeling</Text>
|
||||||
<View style={styles.radioButtonRow}>
|
<View style={styles.radioButtonRow}>
|
||||||
{makeSelectBoxes(mucusFeelingBoxes, 'feeling')}
|
<RadioButtonGroup
|
||||||
|
buttons={mucusFeeling}
|
||||||
|
onSelect={val => this.setState({feeling: val})}
|
||||||
|
active={this.state.feeling}
|
||||||
|
/>
|
||||||
</View>
|
</View>
|
||||||
<Text style={styles.symptomViewHeading}>Texture</Text>
|
<Text style={styles.symptomViewHeading}>Texture</Text>
|
||||||
<View style={styles.radioButtonRow}>
|
<View style={styles.radioButtonRow}>
|
||||||
{makeSelectBoxes(mucusTextureRadioProps, 'texture')}
|
<RadioButtonGroup
|
||||||
|
buttons={mucusTexture}
|
||||||
|
onSelect={val => this.setState({texture: val})}
|
||||||
|
active={this.state.texture}
|
||||||
|
/>
|
||||||
</View>
|
</View>
|
||||||
<View style={styles.symptomViewRowInline}>
|
<View style={styles.symptomViewRowInline}>
|
||||||
<Text style={styles.symptomViewHeading}>Exclude</Text>
|
<Text style={styles.symptomViewHeading}>Exclude</Text>
|
||||||
@@ -89,15 +96,3 @@ export default class Mucus extends Component {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function makeSelectBoxes(boxes, category) {
|
|
||||||
return boxes.map(({ label, value }) => {
|
|
||||||
return (
|
|
||||||
<SelectBox
|
|
||||||
label={label}
|
|
||||||
onPress={() => this.setState({ [category]: value })}
|
|
||||||
key={value}
|
|
||||||
/>
|
|
||||||
)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
+22
-8
@@ -30,12 +30,6 @@ export default StyleSheet.create({
|
|||||||
width: 50,
|
width: 50,
|
||||||
height: 50
|
height: 50
|
||||||
},
|
},
|
||||||
radioButton: {
|
|
||||||
fontSize: 18,
|
|
||||||
margin: 8,
|
|
||||||
textAlign: 'center',
|
|
||||||
textAlignVertical: 'center'
|
|
||||||
},
|
|
||||||
symptomBoxesView: {
|
symptomBoxesView: {
|
||||||
flexDirection: 'row',
|
flexDirection: 'row',
|
||||||
flexWrap: 'wrap',
|
flexWrap: 'wrap',
|
||||||
@@ -151,8 +145,6 @@ export default StyleSheet.create({
|
|||||||
},
|
},
|
||||||
radioButtonRow: {
|
radioButtonRow: {
|
||||||
marginTop: 15,
|
marginTop: 15,
|
||||||
marginLeft: 'auto',
|
|
||||||
marginRight: 'auto'
|
|
||||||
},
|
},
|
||||||
statsIntro: {
|
statsIntro: {
|
||||||
fontSize: 18,
|
fontSize: 18,
|
||||||
@@ -216,6 +208,28 @@ export default StyleSheet.create({
|
|||||||
flexWrap: 'wrap',
|
flexWrap: 'wrap',
|
||||||
marginVertical: 10,
|
marginVertical: 10,
|
||||||
},
|
},
|
||||||
|
radioButton: {
|
||||||
|
width: 30,
|
||||||
|
height: 30,
|
||||||
|
borderRadius: 100,
|
||||||
|
borderStyle: 'solid',
|
||||||
|
borderWidth: 2,
|
||||||
|
borderColor: secondaryColor,
|
||||||
|
marginBottom: 5
|
||||||
|
},
|
||||||
|
radioButtonActive: {
|
||||||
|
backgroundColor: secondaryColor,
|
||||||
|
color: fontOnPrimaryColor
|
||||||
|
},
|
||||||
|
radioButtonGroup: {
|
||||||
|
flexDirection: 'row',
|
||||||
|
flexWrap: 'wrap',
|
||||||
|
marginVertical: 10,
|
||||||
|
},
|
||||||
|
radioButtonTextGroup: {
|
||||||
|
alignItems: 'center',
|
||||||
|
marginHorizontal: 10
|
||||||
|
},
|
||||||
page: {
|
page: {
|
||||||
padding: 10
|
padding: 10
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user