import React from 'react'; import { I18nManager, StyleSheet, Text, View } from 'react-native'; import Touch from '../../utils/touch'; import { themes } from '../../constants/colors'; import sharedStyles from '../../views/Styles'; import { withTheme } from '../../theme'; import I18n from '../../i18n'; import { Icon } from '.'; import { BASE_HEIGHT, ICON_SIZE, PADDING_HORIZONTAL } from './constants'; import { withDimensions } from '../../dimensions'; import { CustomIcon } from '../../lib/Icons'; const styles = StyleSheet.create({ container: { flex: 1, flexDirection: 'row', alignItems: 'center', justifyContent: 'center', paddingHorizontal: PADDING_HORIZONTAL, }, leftContainer: { paddingRight: PADDING_HORIZONTAL, }, rightContainer: { paddingLeft: PADDING_HORIZONTAL, }, disabled: { opacity: 0.3, }, textContainer: { flex: 1, justifyContent: 'center', }, textAlertContainer: { flexDirection: 'row', alignItems: 'center', }, alertIcon: { paddingLeft: 4, }, title: { flexShrink: 1, fontSize: 16, ...sharedStyles.textRegular, }, subtitle: { fontSize: 14, ...sharedStyles.textRegular, }, actionIndicator: { ...I18nManager.isRTL ? { transform: [{ rotate: '180deg' }] } : {}, }, }); interface IListItemContent { title?: string; subtitle?: string; left?: Function; right?: Function; disabled?: boolean; testID?: string; theme: string; color?: string; translateTitle?: boolean; translateSubtitle?: boolean; showActionIndicator?: boolean; fontScale?: number; alert?: boolean; } const Content = React.memo(({ title, subtitle, disabled, testID, left, right, color, theme, fontScale, alert, translateTitle = true, translateSubtitle = true, showActionIndicator = false, }: IListItemContent) => ( {left ? ( {left()} ) : null} {translateTitle ? I18n.t(title) : title} {alert ? ( ) : null} {subtitle ? {translateSubtitle ? I18n.t(subtitle) : subtitle} : null } {right || showActionIndicator ? ( {right ? right() : null} {showActionIndicator ? : null} ) : null} )); interface IListItemButton { title?: string; onPress: Function; disabled?: boolean; theme: string; backgroundColor: string; underlayColor?: string; } const Button = React.memo(({ onPress, backgroundColor, underlayColor, ...props }: IListItemButton) => ( onPress(props.title)} style={{ backgroundColor: backgroundColor || themes[props.theme].backgroundColor }} underlayColor={underlayColor} enabled={!props.disabled} theme={props.theme} > )); interface IListItem { onPress: Function; theme: string; backgroundColor: string; } const ListItem = React.memo(({ ...props }: IListItem) => { if (props.onPress) { return