Skip to content
Snippets Groups Projects
action-button-footer.js 2.2 KiB
Newer Older
import React, { Component } from 'react'
import {
  View, TouchableOpacity, Text, Alert
} from 'react-native'
import Icon from 'react-native-vector-icons/MaterialCommunityIcons'
import { saveSymptom } from '../../../db'
import styles, {iconStyles} from '../../../styles'
import {sharedDialogs as labels} from '../labels/labels'

export default class ActionButtonFooter extends Component {
  render() {
      cycleDay,
      saveAction,
      saveDisabled,
      navigate,
      autoShowDayView = true}
      = this.props
    const navigateToOverView = () => navigate('CycleDay', {cycleDay})
    const buttons = [
        title: labels.unset,
        action: () => {
          Alert.alert(
            labels.areYouSureTitle,
            labels.areYouSureToUnset,
            [{
              text: labels.cancel,
              style: 'cancel'
            }, {
              text: labels.reallyUnsetData,
              onPress: () => {
                saveSymptom(symptom, cycleDay)
                navigateToOverView()
              }
            }]
          )
        },
        disabledCondition: !cycleDay[symptom],
        icon: 'delete-outline'
      }, {
        title: labels.save,
        action: () => {
          saveAction()
          if (autoShowDayView) navigateToOverView()
        },
        disabledCondition: saveDisabled,
        icon: 'content-save-outline'
      }
    ]
      <View style={styles.menu}>
        {buttons.map(({ title, action, disabledCondition, icon }, i) => {
          const textStyle = [styles.menuText]
          if (disabledCondition) textStyle.push(styles.menuTextInActive)
          const iconStyle = disabledCondition ?
            Object.assign({}, iconStyles.menuIcon, iconStyles.menuIconInactive) :
            iconStyles.menuIcon

          return (
            <TouchableOpacity
              onPress={action}
              style={styles.menuItem}
              disabled={disabledCondition}
              key={i.toString()}
            >
              <Icon name={icon} {...iconStyle} />
              <Text style={textStyle}>
                {title}
              </Text>
            </TouchableOpacity>
          )
        })}