UNPKG

react-cm-ui

Version:
267 lines (219 loc) 7.61 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _lodash = require("lodash"); var _classnames = _interopRequireDefault(require("classnames")); var _propTypes = _interopRequireDefault(require("prop-types")); var _react = _interopRequireDefault(require("react")); var _telephoneLink = _interopRequireDefault(require("../telephoneLink")); var _emailLink = _interopRequireDefault(require("../emailLink")); var _makeStyles = _interopRequireDefault(require("../../styles/makeStyles")); var _constants = require("../../global/constants"); var _typography = _interopRequireDefault(require("../typography")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } var preferredMethodEnums = ['email', 'mail', 'none', 'phone', 'text-message', '', null]; var propTypes = { /** * Override or extend the styles applied to PersonContactInfo. */ classes: _propTypes["default"].shape({ root: _propTypes["default"].string }), email: _propTypes["default"].string, emergencyContactEmail: _propTypes["default"].string, emergencyContactPhone: _propTypes["default"].string, emergencyContactPreferredMethod: _propTypes["default"].oneOf(preferredMethodEnums), emergencyContactRelationshipName: _propTypes["default"].string, /** * The `id` of the PersonContactInfo. */ id: _propTypes["default"].string, isDoNotContact: _propTypes["default"].bool, isDoNotEmail: _propTypes["default"].bool, isDoNotMail: _propTypes["default"].bool, isDoNotPhone: _propTypes["default"].bool, isDoNotText: _propTypes["default"].bool, phone: _propTypes["default"].string, preferredMethod: _propTypes["default"].oneOf(preferredMethodEnums), recordType: _propTypes["default"].oneOf(['adult', 'child', 'student']) }; var defaultProps = { classes: null, emergencyContactEmail: null, emergencyContactPhone: null, emergencyContactPreferredMethod: null, emergencyContactRelationshipName: null, email: null, id: null, isDoNotContact: false, isDoNotEmail: false, isDoNotMail: false, isDoNotPhone: false, isDoNotText: false, phone: null, preferredMethod: null, recordType: 'adult' }; var useStyles = (0, _makeStyles["default"])(function (theme) { var palette = theme.palette; return { preferredContactMethod: { color: palette.text.secondary }, preferredContactInfo: { fontWeight: theme.typography.fontWeightBold, '& .ui.a': { color: palette.text.link } }, root: { overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap', maxWidth: '250px !important' } }; }); function PersonContactInfo(props) { var emergencyContactEmail = props.emergencyContactEmail, emergencyContactPhone = props.emergencyContactPhone, emergencyContactPreferredMethod = props.emergencyContactPreferredMethod, emergencyContactRelationshipName = props.emergencyContactRelationshipName, id = props.id, isDoNotContact = props.isDoNotContact, isDoNotEmail = props.isDoNotEmail, isDoNotMail = props.isDoNotMail, isDoNotPhone = props.isDoNotPhone, isDoNotText = props.isDoNotText, preferredMethodProp = props.preferredMethod, emailProp = props.email, phoneProp = props.phone, recordType = props.recordType; var classes = useStyles(props); var isChild = recordType === 'child'; var renderEmail = function renderEmail() { var email = emailProp; if (isChild && emergencyContactEmail) { email = emergencyContactEmail; } if ((0, _lodash.isEmpty)(email)) { return null; } if (email === 'N/A') { return email; } return /*#__PURE__*/_react["default"].createElement(_emailLink["default"], { email: email }); }; var renderPhone = function renderPhone() { var phone = phoneProp; if (isChild && emergencyContactPhone) { phone = emergencyContactPhone; } if ((0, _lodash.isEmpty)(phone)) { return null; } if (phone === 'N/A') { return phone; } return /*#__PURE__*/_react["default"].createElement(_telephoneLink["default"], { number: phone }); }; var contactMethodText = ''; var preferredContactInfoText = ''; var preferredMethod = preferredMethodProp; if (isChild && emergencyContactPreferredMethod) { preferredMethod = emergencyContactPreferredMethod; } if (isDoNotContact) { contactMethodText = 'Do Not Contact This Individual'; } else { switch (preferredMethod) { case 'email': if (isChild && emergencyContactEmail && emergencyContactRelationshipName) { contactMethodText = "".concat(emergencyContactRelationshipName, "'s Email"); } else if (!isChild) { contactMethodText = 'Prefers Email'; } if (renderEmail()) { preferredContactInfoText = renderEmail(); } break; case 'phone': if (isChild && emergencyContactPhone && emergencyContactRelationshipName) { contactMethodText = "".concat(emergencyContactRelationshipName, "'s Phone"); } else if (!isChild) { contactMethodText = 'Prefers Phone'; } if (renderPhone()) { preferredContactInfoText = renderPhone(); } break; case 'text-message': // eslint-disable-next-line no-case-declarations var textNumber = phoneProp; if (isChild && emergencyContactPhone) { textNumber = emergencyContactPhone; } if (isChild && emergencyContactPhone && emergencyContactRelationshipName) { contactMethodText = "".concat(emergencyContactRelationshipName, "'s Text"); } else if (!isChild) { contactMethodText = 'Prefers Text'; } if (phoneProp) { preferredContactInfoText = textNumber; } break; case 'mail': case 'none': default: if (!isChild && renderPhone()) { preferredContactInfoText = renderPhone(); } else if (!isChild && renderEmail()) { preferredContactInfoText = renderEmail(); } } if (!isChild && (isDoNotEmail || isDoNotMail || isDoNotPhone || isDoNotText)) { if (contactMethodText) { contactMethodText += ', DNC via '; } else { contactMethodText = 'DNC via '; } if (isDoNotEmail) { contactMethodText += 'Email, '; } if (isDoNotMail) { contactMethodText += 'Mail, '; } if (isDoNotPhone) { contactMethodText += 'Phone, '; } if (isDoNotText) { contactMethodText += 'Text'; } contactMethodText = (0, _lodash.trimEnd)(contactMethodText, ', '); } } if (!contactMethodText) { return null; } return /*#__PURE__*/_react["default"].createElement("div", { className: (0, _classnames["default"])(_constants.PERSON_CONTACT_INFO_CLASSES, classes.root), id: id }, /*#__PURE__*/_react["default"].createElement(_typography["default"], { className: classes.preferredContactMethod, component: "h5", variant: "h5" }, "(".concat(contactMethodText, ")")), preferredContactInfoText && /*#__PURE__*/_react["default"].createElement(_typography["default"], { className: classes.preferredContactInfo, variant: "body2" }, preferredContactInfoText)); } PersonContactInfo.propTypes = propTypes; PersonContactInfo.defaultProps = defaultProps; var _default = PersonContactInfo; exports["default"] = _default;