@massds/mayflower-react
Version:
React versions of Mayflower design system UI components
103 lines (97 loc) • 5.08 kB
JavaScript
"use strict";
exports.__esModule = true;
exports["default"] = void 0;
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _index = _interopRequireDefault(require("../DecorativeLink/index.js"));
var _IconMarker = _interopRequireDefault(require("../Icon/IconMarker.js"));
var _IconPhone = _interopRequireDefault(require("../Icon/IconPhone.js"));
var _IconLaptop = _interopRequireDefault(require("../Icon/IconLaptop.js"));
var _IconFax = _interopRequireDefault(require("../Icon/IconFax.js"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
/**
* ContactGroup module.
* @module @massds/mayflower-react/ContactGroup
* @requires module:@massds/mayflower-assets/scss/01-atoms/01-atoms/content-link
* @requires module:@massds/mayflower-assets/scss/01-atoms/02-molecules/contact-group
* @requires module:@massds/mayflower-assets/scss/01-atoms/decorative-link
* @requires module:@massds/mayflower-assets/scss/01-atoms/svg-icons
* @requires module:@massds/mayflower-assets/scss/01-atoms/svg-loc-icons
*/
// eslint-disable-next-line import/no-unresolved
// eslint-disable-next-line import/no-unresolved
// eslint-disable-next-line import/no-unresolved
// eslint-disable-next-line import/no-unresolved
var ContactGroup = function ContactGroup(contactGroup) {
var icons = {
SvgMarker: /*#__PURE__*/_react["default"].createElement(_IconMarker["default"], null),
SvgPhone: /*#__PURE__*/_react["default"].createElement(_IconPhone["default"], null),
SvgLaptop: /*#__PURE__*/_react["default"].createElement(_IconLaptop["default"], null),
SvgFax: /*#__PURE__*/_react["default"].createElement(_IconFax["default"], null)
};
var Element = "h" + (contactGroup.level ? contactGroup.level : 2);
var createItems = function createItems(item) {
switch (item.type) {
case 'online':
return /*#__PURE__*/_react["default"].createElement(_index["default"], item.link);
case 'phone':
return /*#__PURE__*/_react["default"].createElement("a", {
href: "tel:" + item.link.href,
className: "ma__content-link ma__content-link--phone"
}, item.link.text);
case 'email':
return /*#__PURE__*/_react["default"].createElement("a", {
href: "mailto:" + item.link.href,
className: "ma__content-link"
}, item.link.text);
case 'address':
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("div", {
className: "ma__contact-group__address",
dangerouslySetInnerHTML: {
__html: item.address
}
}), item.link.href && /*#__PURE__*/_react["default"].createElement("div", {
className: "ma__contact-group__directions"
}, /*#__PURE__*/_react["default"].createElement(_index["default"], item.link)));
default:
return /*#__PURE__*/_react["default"].createElement("span", {
className: "ma__contact-group__value"
}, item.link.text);
}
};
return /*#__PURE__*/_react["default"].createElement("div", {
className: "ma__contact-group"
}, contactGroup.name && contactGroup.icon && /*#__PURE__*/_react["default"].createElement(Element, {
className: "ma__contact-group__name"
}, icons[contactGroup.icon], /*#__PURE__*/_react["default"].createElement("span", null, contactGroup.name)), contactGroup.items && contactGroup.items.map(function (item, itemIndex) {
return /*#__PURE__*/ /* eslint-disable-next-line react/no-array-index-key */_react["default"].createElement(_react["default"].Fragment, {
key: "contactGroup.item." + itemIndex
}, /*#__PURE__*/_react["default"].createElement("div", {
className: "ma__contact-group__item"
}, item.label && /*#__PURE__*/_react["default"].createElement("span", {
className: "ma__contact-group__label"
}, item.label), createItems(item)), item.details && /*#__PURE__*/_react["default"].createElement("p", {
className: "ma__contact-group__details"
}, item.details));
}));
};
ContactGroup.propTypes = process.env.NODE_ENV !== "production" ? {
/** icon to pass to the contact group */
icon: _propTypes["default"].oneOf(['SvgMarker', 'SvgPhone', 'SvgLaptop', 'SvgFax']),
/** The heading text */
text: _propTypes["default"].string,
/** The name of the contact info */
name: _propTypes["default"].oneOf(['Phone', 'Online', 'Fax', 'Address']),
/** The heading level, default is 2 */
level: _propTypes["default"].number,
/** A set of contact info items */
items: _propTypes["default"].arrayOf(_propTypes["default"].shape({
type: _propTypes["default"].oneOf(['phone', 'online', 'email', 'address']),
label: _propTypes["default"].string,
address: _propTypes["default"].string,
link: _propTypes["default"].shape(_index["default"].propTypes),
details: _propTypes["default"].string
}))
} : {};
var _default = exports["default"] = ContactGroup;
module.exports = exports.default;