Skip to content
Snippets Groups Projects
Commit 4d6f0db3 authored by mashazyu's avatar mashazyu Committed by Sofiya Tepikin
Browse files

Moves Segment stiles to local file, separates MenuItem component.

parent ce92b0af
No related branches found
No related tags found
No related merge requests found
......@@ -4,7 +4,7 @@ import { StyleSheet, View } from 'react-native'
import AppText from './app-text'
import { Containers, Spacing, Typography } from '../../styles/redesign'
import { Colors, Spacing, Typography } from '../../styles/redesign'
const Segment = ({ children, last, title }) => {
const containerStyle = last ? styles.containerLast : styles.container
......@@ -30,8 +30,11 @@ const segmentContainer = {
const styles = StyleSheet.create({
container: {
...segmentContainer,
...Containers.bottomBorder
borderStyle: 'solid',
borderBottomWidth: 2,
borderBottomColor: Colors.grey,
paddingBottom: Spacing.base,
...segmentContainer
},
containerLast: {
...segmentContainer
......
import React from 'react'
import PropTypes from 'prop-types'
import { StyleSheet, TouchableOpacity, View } from 'react-native'
import AppIcon from '../common/app-icon'
import AppText from '../common/app-text'
import Segment from '../common/segment'
import { connect } from 'react-redux'
import { navigate } from '../../slices/navigation'
import { Colors, Containers, Sizes } from '../../styles/redesign'
const MenuItem = ({ item, last, navigate }) => {
return (
<Segment last={last}>
<TouchableOpacity
style={styles.container}
key={item.name}
onPress={() => navigate(item.component)}
>
<View>
<AppText style={styles.title}>{item.name}</AppText>
{item.text.length > 0 && <AppText>{item.text}</AppText>}
</View>
<AppIcon name={'chevron-right'} isCTA/>
</TouchableOpacity>
</Segment>
)
}
MenuItem.propTypes = {
item: PropTypes.object.isRequired,
last: PropTypes.bool.isRequired,
navigate: PropTypes.func.isRequired
}
const styles = StyleSheet.create({
container: {
...Containers.rowContainer
},
title: {
color: Colors.purple,
fontSize: Sizes.subtitle
}
})
const mapDispatchToProps = (dispatch) => {
return({
navigate: (page) => dispatch(navigate(page)),
})
}
export default connect(
null,
mapDispatchToProps
)(MenuItem)
\ No newline at end of file
import React from 'react'
import PropTypes from 'prop-types'
import { StyleSheet, TouchableOpacity, View } from 'react-native'
import AppIcon from '../common/app-icon'
import AppPage from '../common/app-page'
import AppText from '../common/app-text'
import MenuItem from './menu-item'
import { connect } from 'react-redux'
import { navigate } from '../../slices/navigation'
import { Colors, Containers, Sizes, Spacing } from '../../styles/redesign'
import settingsLabels from '../../i18n/en/settings'
const { menuItems } = settingsLabels
......@@ -20,71 +13,17 @@ const menu = [
{ ...menuItems.password, component: 'Password'}
]
const SettingsMenu = ({ navigate }) => {
const SettingsMenu = () => {
return (
<AppPage title={settingsLabels.title}>
{menu.map((menuItem, i) =>
<MenuItem item={menuItem} i={i} navigate={navigate} key={i}/>
{menu.map((menuItem, i) => {
const last = (menu.length === i + 1)
return <MenuItem item={menuItem} key={i} last={last}/>
}
)}
</AppPage>
)
}
SettingsMenu.propTypes = {
navigate: PropTypes.func.isRequired
}
const MenuItem = ({ i, item, navigate }) => {
const isLast = (menu.length === i + 1)
const containerStyle = isLast ? styles.containerLast : styles.container
return (
<TouchableOpacity
style={containerStyle}
key={item.name}
onPress={() => navigate(item.component)}
>
<View>
<AppText style={styles.title}>{item.name}</AppText>
{item.text.length > 0 && <AppText>{item.text}</AppText>}
</View>
<AppIcon name={'chevron-right'} isCTA/>
</TouchableOpacity>
)
}
MenuItem.propTypes = {
i: PropTypes.number.isRequired,
item: PropTypes.object.isRequired,
navigate: PropTypes.func.isRequired
}
const menuItemContainer = {
margin: Spacing.base,
...Containers.rowContainer
}
const styles = StyleSheet.create({
container: {
...menuItemContainer,
...Containers.bottomBorder
},
containerLast: {
...menuItemContainer
},
title: {
color: Colors.purple,
fontSize: Sizes.subtitle
},
})
const mapDispatchToProps = (dispatch) => {
return({
navigate: (page) => dispatch(navigate(page)),
})
}
export default connect(
null,
mapDispatchToProps
)(SettingsMenu)
\ No newline at end of file
export default SettingsMenu
\ No newline at end of file
import Colors from './colors'
import Spacing from './spacing'
export default {
bottomBorder: {
borderStyle: 'solid',
borderBottomWidth: 2,
borderBottomColor: Colors.grey,
paddingBottom: Spacing.base
},
centerItems: {
alignItems: 'center',
flex: 1,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment