UNPKG

@massds/mayflower-react

Version:

React versions of Mayflower design system UI components

103 lines (97 loc) 5.08 kB
"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;