MessageListProductCell.js 4.88 KB
'use strict';

import React, {Component} from 'react';
import ReactNative, {
    View,
    Text,
    Image,
    StyleSheet,
    Dimensions,
    Platform,
    TouchableOpacity,
} from 'react-native';

import MessageListCellFooter from './MessageListCellFooter'
import SlicedImage from '../../../common/components/SlicedImage'
import EditIconView from './EditIconView'

export default class MessageListProductCell extends Component {
    constructor(props) {
        super(props);
    }
    render() {
        let {itemData, isEditing}= this.props;
        let body = itemData.get('body');
        let imageUri = body ? body.get('img_url','www.yohobuy.com') : 'www.yohobuy.com';
        let content = body ? body.get('product_name','') : '';
        let isSelected = itemData.get('isSelected');
        let salePrice = body ? body.get('sales_price','') : '';

        imageUri = SlicedImage.getSlicedUrl(imageUri, 46, 60, 2)

        let borderLeftWidth = isEditing ? 1 : 0;
        let borderLeftColor = isEditing ? '#e0e0e0' : 'transparent';
        let editStyle = {borderLeftWidth, borderLeftColor};

        return(
            <View style={styles.editContainer}>
                {
                    isEditing
                    ?
                    <EditIconView isSelected={isSelected} onSelectPress={() =>{
                        this.props.selectListItem&&this.props.selectListItem(itemData);
                    }}/>
                    :
                     null
                }
                <View style={[styles.container, editStyle]}>
                    <TouchableOpacity
                        activeOpacity={1}
                        disabled={isEditing}
                        onLongPress={() =>{
                            this.props.onLongPressListItem && this.props.onLongPressListItem(itemData);
                        }}
                        onPress={() =>{
                            this.props.onPressListItem && this.props.onPressListItem(itemData);
                        }}
                    >
                        <View style={styles.contentContainer}>
                            <Text
                                 numberOfLines={1}
                                 style={styles.titleStyle}
                            >
                                {itemData.get('title')}
                            </Text>
                            <View style={styles.descStyle}>
                                <Image
                                    style={styles.iconStyle}
                                    source={{uri: imageUri}}
                                    resizeMode="contain"
                                />
                                <View style={styles.detailContent}>
                                    <Text
                                        style={styles.detail}
                                        numberOfLines={2}
                                    >
                                        {content}
                                    </Text>
                                    <Text
                                        style={styles.price}
                                        numberOfLines={1}
                                    >
                                        {salePrice}
                                    </Text>
                                </View>
                            </View>
                        </View>
                    </TouchableOpacity>
                    <MessageListCellFooter
                        onPressListItem={this.props.onPressListItem}
                        itemData={itemData}
                    />
                </View>
            </View>
        )
    };
}

let {width, height} = Dimensions.get('window');

let styles = StyleSheet.create({
    editContainer: {
        flexDirection: 'row'
    },

    container: {
        backgroundColor: 'white'
    },
    contentContainer: {
        flex: 1,
        minHeight: 97,
        flexDirection: 'column',
        backgroundColor: 'white'
    },
    titleStyle: {
        marginTop: 15,
        marginLeft: 15,
        fontSize: 14,
        fontWeight: 'bold',
        color: '#444444',
        marginRight: 15,
        backgroundColor: 'white',
        maxWidth: width-30,
    },
    descStyle:{
        flexDirection: 'row',
        backgroundColor: 'white'
    },
    iconStyle: {
        marginLeft: 15,
        marginTop: 10,
        marginBottom: 10,
        width: 46,
        height: 60,
        backgroundColor: 'white'
    },

    detailContent: {
        flexDirection: 'column',
        maxWidth: width-15-50-10-20,
    },

    detail: {
        marginLeft: 10,
        marginTop: 9,
        fontSize: 12,
        color: '#686868',
        lineHeight: 18,
        backgroundColor: 'white'
    },

    price: {
        marginLeft: 10,
        marginTop: 8,
        fontSize: 12,
        color: '#d0021b',
        lineHeight: 18,
        backgroundColor: 'white'
    }
})