UNPKG

ignite-boilerplate-andross-typescript

Version:
92 lines (81 loc) 2.01 kB
/* eslint no-use-before-define: ["error", { "variables": false }] */ import PropTypes from 'prop-types' import React from 'react' import { StyleSheet, Text, View, ViewPropTypes } from 'react-native' import moment from 'moment' import Color from './Color' import { TIME_FORMAT } from './Constant' export default function Time ( { position, containerStyle, currentMessage, timeFormat, textStyle, timeTextStyle }, context ) { return ( <View style={[styles[position].container, containerStyle[position]]}> <Text style={[styles[position].text, textStyle[position], timeTextStyle[position]]}> {moment(currentMessage.createdAt) .locale(context.getLocale()) .format(timeFormat)} </Text> </View> ) } const containerStyle = { marginLeft: 10, marginRight: 10, marginBottom: 5 } const textStyle = { fontSize: 10, backgroundColor: 'transparent', textAlign: 'right' } const styles = { left: StyleSheet.create({ container: { ...containerStyle }, text: { color: Color.timeTextColor, ...textStyle } }), right: StyleSheet.create({ container: { ...containerStyle }, text: { color: Color.white, ...textStyle } }) } Time.contextTypes = { getLocale: PropTypes.func } Time.defaultProps = { position: 'left', currentMessage: { createdAt: null }, containerStyle: {}, textStyle: {}, timeFormat: TIME_FORMAT, timeTextStyle: {} } Time.propTypes = { position: PropTypes.oneOf(['left', 'right']), currentMessage: PropTypes.object, containerStyle: PropTypes.shape({ left: ViewPropTypes.style, right: ViewPropTypes.style }), textStyle: PropTypes.shape({ left: Text.propTypes.style, right: Text.propTypes.style }), timeFormat: PropTypes.string, timeTextStyle: PropTypes.shape({ left: Text.propTypes.style, right: Text.propTypes.style }) }