diff --git a/components/header/index.js b/components/header/index.js index 7072d2f..d810ed6 100644 --- a/components/header/index.js +++ b/components/header/index.js @@ -23,7 +23,7 @@ export default class Header extends Component { return ( - + ) } diff --git a/components/header/menu-item.js b/components/header/menu-item.js new file mode 100644 index 0000000..d848059 --- /dev/null +++ b/components/header/menu-item.js @@ -0,0 +1,47 @@ +import React from 'react' +import { StyleSheet, TouchableOpacity } from 'react-native' +import PropTypes from 'prop-types' + +import AppText from '../common/app-text' + +import { connect } from 'react-redux' +import { navigate } from '../../slices/navigation' + +import { Typography } from '../../styles/redesign' + +const MenuItem = ({ item, navigate, closeMenu }) => { + const { component, name } = item + const onPress = () => { + closeMenu() + navigate(component) + } + + return( + + {name} + + ) +} + +MenuItem.propTypes = { + item: PropTypes.object.isRequired, + navigate: PropTypes.func.isRequired, + closeMenu: PropTypes.func.isRequired +} + +const styles = StyleSheet.create({ + text: { + ...Typography.subtitle + } +}) + +const mapDispatchToProps = (dispatch) => { + return({ + navigate: (page) => dispatch(navigate(page)), + }) +} + +export default connect( + null, + mapDispatchToProps, +)(MenuItem) diff --git a/components/header/side-menu.js b/components/header/side-menu.js index 0b48e3e..3591eee 100644 --- a/components/header/side-menu.js +++ b/components/header/side-menu.js @@ -3,52 +3,44 @@ import { Modal, StyleSheet, TouchableOpacity, View } from 'react-native' import PropTypes from 'prop-types' import AppIcon from '../common/app-icon' -import AppText from '../common/app-text' +import MenuItem from './menu-item' -import { connect } from 'react-redux' -import { navigate } from '../../slices/navigation' - -import { Sizes, Typography } from '../../styles/redesign' +import { Sizes } from '../../styles/redesign' import settingsLabels from '../../i18n/en/settings' const { menuItems } = settingsLabels const settingsMenuItems = [ - {name: menuItems.settings, component: 'SettingsMenu'}, - {name: menuItems.about, component: 'About'}, - {name: menuItems.license, component: 'License'}, + { name: menuItems.settings, component: 'SettingsMenu' }, + { name: menuItems.about, component: 'About' }, + { name: menuItems.license, component: 'License' }, ] -const SideMenu = ({ navigate, onPress, shouldShowMenu }) => { - const navigateMenuItem = (page) => { - onPress() - navigate(page) - } - +const SideMenu = ({ shouldShowMenu, toggleMenu }) => { return( {!shouldShowMenu && - + } {shouldShowMenu && - - + + {settingsMenuItems.map(item => )} @@ -59,24 +51,8 @@ const SideMenu = ({ navigate, onPress, shouldShowMenu }) => { } SideMenu.propTypes = { - navigate: PropTypes.func.isRequired, - onPress: PropTypes.func, - shouldShowMenu: PropTypes.bool.isRequired -} - -const MenuItem = ({ item, navigate }) => { - return( - - navigate(item.component)}> - {item.name} - - - ) -} - -MenuItem.propTypes = { - item: PropTypes.object.isRequired, - navigate: PropTypes.func.isRequired, + shouldShowMenu: PropTypes.bool.isRequired, + toggleMenu: PropTypes.func } const styles = StyleSheet.create({ @@ -96,19 +72,7 @@ const styles = StyleSheet.create({ padding: Sizes.base, position: 'absolute', width: '60%' - }, - text: { - ...Typography.subtitle } }) -const mapDispatchToProps = (dispatch) => { - return({ - navigate: (page) => dispatch(navigate(page)), - }) -} - -export default connect( - null, - mapDispatchToProps, -)(SideMenu) +export default SideMenu