diff --git a/components/cycle-day/radio-button-group.js b/components/cycle-day/radio-button-group.js deleted file mode 100644 index 8b7ffacd7a1c3b6f3c07b86de0a6cfddfe53c044..0000000000000000000000000000000000000000 --- a/components/cycle-day/radio-button-group.js +++ /dev/null @@ -1,36 +0,0 @@ -import React, { Component } from 'react' -import { - View, - TouchableOpacity, -} from 'react-native' -import styles from '../../styles' -import { AppText } from '../app-text' - -export default class RadioButton extends Component { - render() { - return ( - <View style={styles.radioButtonGroup}> - { - this.props.buttons.map(({ label, value }) => { - const isActive = value === this.props.active - return ( - <TouchableOpacity - onPress={() => this.props.onSelect(value)} - key={value} - activeOpacity={1} - > - <View style={styles.radioButtonTextGroup}> - <View style={styles.radioButton}> - {isActive ? - <View style={styles.radioButtonActiveDot}/> : null} - </View> - <AppText>{label}</AppText> - </View> - </TouchableOpacity> - ) - }) - } - </View> - ) - } -} \ No newline at end of file diff --git a/components/cycle-day/select-tab-group.js b/components/cycle-day/select-tab-group.js new file mode 100644 index 0000000000000000000000000000000000000000..f40224071e5906800f3c0cecb1bb0dc4dd8829be --- /dev/null +++ b/components/cycle-day/select-tab-group.js @@ -0,0 +1,46 @@ +import React, { Component } from 'react' +import { + View, + TouchableOpacity, +} from 'react-native' +import styles from '../../styles' +import { AppText } from '../app-text' + +export default class SelectTabGroup extends Component { + render() { + return ( + <View style={styles.selectTabGroup}> + { + this.props.buttons.map(({ label, value }, i) => { + let firstOrLastStyle + if (i === this.props.buttons.length - 1) { + firstOrLastStyle = styles.selectTabLast + } else if (i === 0) { + firstOrLastStyle = styles.selectTabFirst + } + let activeStyle + const isActive = value === this.props.active + if (isActive) activeStyle = styles.selectTabActive + return ( + <TouchableOpacity + onPress={() => this.props.onSelect(value)} + key={value} + activeOpacity={1} + > + <View style={styles.radioButtonTextGroup}> + <View style={[ + styles.selectTab, + firstOrLastStyle, + activeStyle + ]}> + <AppText style={activeStyle}>{label}</AppText> + </View> + </View> + </TouchableOpacity> + ) + }) + } + </View> + ) + } +} \ No newline at end of file diff --git a/components/cycle-day/symptoms/bleeding.js b/components/cycle-day/symptoms/bleeding.js index 57a084acdcc6c0cccd4a22c6f1cd62b0a2770e9a..132116272c8f49f4b02fbd4a10d43b9bf4b0c293 100644 --- a/components/cycle-day/symptoms/bleeding.js +++ b/components/cycle-day/symptoms/bleeding.js @@ -8,7 +8,7 @@ import styles from '../../../styles' import { saveSymptom } from '../../../db' import { bleeding as labels } from '../labels/labels' import ActionButtonFooter from './action-button-footer' -import RadioButtonGroup from '../radio-button-group' +import SelectTabGroup from '../select-tab-group' import { SymptomSectionHeader, AppText } from '../../app-text' export default class Bleeding extends Component { @@ -39,7 +39,7 @@ export default class Bleeding extends Component { <View> <SymptomSectionHeader>Heaviness</SymptomSectionHeader> <AppText>How heavy is the bleeding?</AppText> - <RadioButtonGroup + <SelectTabGroup buttons={bleedingRadioProps} active={this.state.currentValue} onSelect={val => this.setState({ currentValue: val })} diff --git a/components/cycle-day/symptoms/cervix.js b/components/cycle-day/symptoms/cervix.js index 86d46aae3af7ef733685ed469a90c76132ac8081..ba1872e0d6b9c77ce3b9fadaa90b27fc5ee3dec8 100644 --- a/components/cycle-day/symptoms/cervix.js +++ b/components/cycle-day/symptoms/cervix.js @@ -12,7 +12,7 @@ import { cervixPosition as positionLabels } from '../labels/labels' import ActionButtonFooter from './action-button-footer' -import RadioButtonGroup from '../radio-button-group' +import SelectTabGroup from '../select-tab-group' import { SymptomSectionHeader } from '../../app-text' export default class Cervix extends Component { @@ -54,19 +54,19 @@ export default class Cervix extends Component { <ScrollView style={styles.page}> <View> <SymptomSectionHeader>Opening</SymptomSectionHeader> - <RadioButtonGroup + <SelectTabGroup buttons={cervixOpeningRadioProps} active={this.state.opening} onSelect={val => this.setState({ opening: val })} /> <SymptomSectionHeader>Firmness</SymptomSectionHeader> - <RadioButtonGroup + <SelectTabGroup buttons={cervixFirmnessRadioProps} active={this.state.firmness} onSelect={val => this.setState({ firmness: val })} /> <SymptomSectionHeader>Position</SymptomSectionHeader> - <RadioButtonGroup + <SelectTabGroup buttons={cervixPositionRadioProps} active={this.state.position} onSelect={val => this.setState({ position: val })} diff --git a/components/cycle-day/symptoms/desire.js b/components/cycle-day/symptoms/desire.js index 64a0306ea8cb46c6fcc053061a273c50f89c7600..d78bcff4a0c0ebf4e690622c26d23b7ee679b422 100644 --- a/components/cycle-day/symptoms/desire.js +++ b/components/cycle-day/symptoms/desire.js @@ -7,7 +7,7 @@ import styles from '../../../styles' import { saveSymptom } from '../../../db' import { intensity as labels } from '../labels/labels' import ActionButtonFooter from './action-button-footer' -import RadioButtonGroup from '../radio-button-group' +import SelectTabGroup from '../select-tab-group' export default class Desire extends Component { constructor(props) { @@ -31,7 +31,7 @@ export default class Desire extends Component { <View style={{ flex: 1 }}> <ScrollView style={styles.page}> <View> - <RadioButtonGroup + <SelectTabGroup buttons={desireRadioProps} acitve={this.state.currentValue} onSelect={val => this.setState({ currentValue: val })} diff --git a/components/cycle-day/symptoms/mucus.js b/components/cycle-day/symptoms/mucus.js index f8c35343c3ea765d1f5c5c5deae3fbd7d8a93596..586fcb234307cd9d866ff3e821d08b51e3f716cd 100644 --- a/components/cycle-day/symptoms/mucus.js +++ b/components/cycle-day/symptoms/mucus.js @@ -12,7 +12,7 @@ import { } from '../labels/labels' import computeSensiplanValue from '../../../lib/sensiplan-mucus' import ActionButtonFooter from './action-button-footer' -import RadioButtonGroup from '../radio-button-group' +import SelectTabGroup from '../select-tab-group' import { SymptomSectionHeader } from '../../app-text' @@ -52,13 +52,13 @@ export default class Mucus extends Component { <ScrollView style={styles.page}> <View> <SymptomSectionHeader>Feeling</SymptomSectionHeader> - <RadioButtonGroup + <SelectTabGroup buttons={mucusFeeling} onSelect={val => this.setState({ feeling: val })} active={this.state.feeling} /> <SymptomSectionHeader>Texture</SymptomSectionHeader> - <RadioButtonGroup + <SelectTabGroup buttons={mucusTexture} onSelect={val => this.setState({ texture: val })} active={this.state.texture} diff --git a/styles/index.js b/styles/index.js index b357a8287af8f9babf92a283e99f90df3aacef4f..e3fd7d2ff300a7aea1a34299d6930ea3442031f8 100644 --- a/styles/index.js +++ b/styles/index.js @@ -213,31 +213,33 @@ export default StyleSheet.create({ flexWrap: 'wrap', marginVertical: 10, }, - radioButtonGroup: { - marginTop: 10 + selectTabGroup: { + marginTop: 10, + flexDirection: 'row' }, - radioButton: { - width: 20, - height: 20, - borderRadius: 100, + selectTab: { + backgroundColor: 'lightgrey', borderStyle: 'solid', - borderWidth: 2, - borderColor: secondaryColor, + borderLeftWidth: 1, + paddingVertical: 10, + paddingHorizontal: 15, + borderColor: 'white', marginBottom: 3, - marginRight: 10, alignItems: 'center', justifyContent: 'center' }, - radioButtonActiveDot: { - width: 10, - height: 10, - borderRadius: 100, - backgroundColor: secondaryColor + selectTabActive: { + backgroundColor: secondaryColor, + color: fontOnPrimaryColor }, - radioButtonTextGroup: { - marginRight: 10, - flexDirection: 'row', - marginBottom: 10 + selectTabLast: { + borderTopRightRadius: 10, + borderBottomRightRadius: 10, + }, + selectTabFirst: { + borderTopLeftRadius: 10, + borderBottomLeftRadius: 10, + borderLeftWidth: null }, page: { marginHorizontal: 10