maisonsport-common-ui
Version:
Suite of styled-components to be consumed by the React-Native App and by the Web (via React-Native for Web)
156 lines (143 loc) • 5.14 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.conversationCardTimeSentTestID = void 0;
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _Box = _interopRequireDefault(require("../../atoms/Box"));
var _Text = _interopRequireDefault(require("../../atoms/Text"));
var _Touchable = _interopRequireDefault(require("../../atoms/Touchable"));
var _Avatar = _interopRequireDefault(require("../../molecules/Avatar"));
var _dateTime = require("../../util/dateTime");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
const colorsByStatus = {
enquiry: 'primary',
unpaid: 'orange',
cancelled: 'red',
confirmed: 'green'
};
const conversationCardTimeSentTestID = 'conversation-card-time-sent';
exports.conversationCardTimeSentTestID = conversationCardTimeSentTestID;
function ConversationCard({
index,
name,
latestMessage,
timeSent,
totalUnread,
bookingStatus,
onPress,
email,
userAvatarUrl,
t
}) {
const isOdd = !!(index % 2);
const moreThan100Messages = totalUnread >= 100;
const sharedTextProps = {};
const formattedTimeSent = timeSent ? (0, _dateTime.getFormattedTimeSent)(timeSent, t) : null;
if (totalUnread) sharedTextProps.fontWeight = 'bold';
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Touchable.default, {
width: 1,
height: 110,
flexDirection: "row",
alignItems: "center",
backgroundColor: isOdd ? 'convoPink' : 'convoGrey',
borderRadius: 8,
marginBottom: 3,
padding: 3,
onPress: onPress
}, /*#__PURE__*/_react.default.createElement(_Avatar.default, {
name: name,
email: email,
url: userAvatarUrl
}), /*#__PURE__*/_react.default.createElement(_Box.default, {
noWrapTheme: true,
height: 1,
flex: 1,
paddingLeft: 3,
justifyContent: "center"
}, /*#__PURE__*/_react.default.createElement(_Box.default, {
width: "100%",
flexDirection: "row",
alignItems: "center",
justifyContent: "space-between"
}, /*#__PURE__*/_react.default.createElement(_Box.default, {
noWrapTheme: true,
height: 1,
maxWidth: "75%",
flexDirection: "row",
alignItems: "center",
justifyContent: "center"
}, /*#__PURE__*/_react.default.createElement(_Text.default, _extends({
noWrapTheme: true
}, sharedTextProps, {
fontSize: 2,
marginRight: 2,
numberOfLines: 1
}), name), bookingStatus && /*#__PURE__*/_react.default.createElement(_Box.default, {
noWrapTheme: true,
width: "15px",
height: "15px",
borderRadius: "15px",
backgroundColor: colorsByStatus[bookingStatus]
})), /*#__PURE__*/_react.default.createElement(_Text.default, _extends({
testID: conversationCardTimeSentTestID,
noWrapTheme: true
}, sharedTextProps, {
marginLeft: 3
}), formattedTimeSent)), /*#__PURE__*/_react.default.createElement(_Box.default, {
flexDirection: "row",
alignItems: "center",
justifyContent: "space-between"
}, /*#__PURE__*/_react.default.createElement(_Box.default, {
flex: totalUnread ? 0.85 : 1
}, /*#__PURE__*/_react.default.createElement(_Text.default, _extends({
noWrapTheme: true
}, sharedTextProps, {
fontSize: 1,
numberOfLines: 2
}), latestMessage)), !!totalUnread && /*#__PURE__*/_react.default.createElement(_Box.default, {
flex: 0.15,
alignItems: "center"
}, /*#__PURE__*/_react.default.createElement(_Box.default, {
noWrapTheme: true,
width: "25px",
height: "25px",
borderRadius: "20px",
backgroundColor: "dustyBlue",
justifyContent: "center",
alignItems: "center"
}, /*#__PURE__*/_react.default.createElement(_Text.default, _extends({
noWrapTheme: true
}, sharedTextProps, {
fontSize: moreThan100Messages ? '10px' : 0,
color: "white",
padding: 0
}), moreThan100Messages ? '99+' : totalUnread)))))));
}
ConversationCard.defaultProps = {
latestMessage: '',
timeSent: null,
totalUnread: 0,
bookingStatus: null,
onPress: () => {},
email: '',
userAvatarUrl: '',
t: key => key
};
ConversationCard.propTypes = {
index: _propTypes.default.number.isRequired,
name: _propTypes.default.string.isRequired,
latestMessage: _propTypes.default.string,
timeSent: _propTypes.default.string,
totalUnread: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),
bookingStatus: _propTypes.default.string,
onPress: _propTypes.default.func,
email: _propTypes.default.string,
userAvatarUrl: _propTypes.default.string,
t: _propTypes.default.func
};
var _default = ConversationCard;
exports.default = _default;
//# sourceMappingURL=index.js.map