UNPKG

backpack-ui

Version:

Lonely Planet's Components

179 lines (146 loc) 4.24 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; var _react = require("react"); var _react2 = _interopRequireDefault(_react); var _radium = require("radium"); var _radium2 = _interopRequireDefault(_radium); var _objectAssign = require("object-assign"); var _objectAssign2 = _interopRequireDefault(_objectAssign); var _settings = require("../../../settings.json"); var _icon = require("../icon"); var _icon2 = _interopRequireDefault(_icon); var _mixins = require("../../utils/mixins"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var baseFontSize = 11; var styles = { container: { base: { color: _settings.color.darkGray, display: "flex", fontSize: baseFontSize + "px", lineHeight: 1 } }, link: { base: { color: "inherit", display: "flex", flex: 1, overflow: "hidden", paddingBottom: 20 / baseFontSize + "em", paddingTop: 20 / baseFontSize + "em", transition: "color " + _settings.timing.fast + " ease-in-out", ":hover": { color: _settings.color.blue }, ":active": { color: _settings.color.blue }, ":focus": (0, _objectAssign2.default)({}, (0, _mixins.outline)(), { color: _settings.color.blue }) }, call: { paddingRight: 5 / baseFontSize + "em" }, website: { paddingLeft: 5 / baseFontSize + "em" } }, icon: { base: { fontSize: 25 / baseFontSize + "em" } }, label: { base: { display: "block", flex: 1, fontWeight: 600, marginLeft: 12 / baseFontSize + "em", overflow: "hidden" }, strong: { color: _settings.color.blue, display: "block", fontWeight: 400, marginTop: 4 / baseFontSize + "em", overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" } } }; function getTelephone(phone) { if ((typeof phone === "undefined" ? "undefined" : _typeof(phone)) === "object") { return Object.keys(phone).map(function (t, i) { return i === 0 && phone[t]; }); } return phone && typeof phone === "string" ? phone : ""; } function ContactBar(_ref) { var phone = _ref.phone; var website = _ref.website; var telephone = getTelephone(phone); return _react2.default.createElement( "div", { className: "ContactBar", style: styles.container.base }, telephone && _react2.default.createElement( "a", { className: "ContactBar-phone", href: "tel:" + telephone, style: [styles.link.base, styles.link.call], key: "phone" }, _react2.default.createElement(_icon2.default, { name: "mobile", style: styles.icon.base }), _react2.default.createElement( "span", { style: styles.label.base }, "Call ", _react2.default.createElement( "strong", { style: styles.label.strong }, telephone ) ) ), website && _react2.default.createElement( "a", { className: "ContactBar-website", href: website, style: [styles.link.base, styles.link.website], key: "website" }, _react2.default.createElement(_icon2.default, { name: "globe", style: styles.icon.base }), _react2.default.createElement( "span", { style: styles.label.base }, "Visit ", _react2.default.createElement( "strong", { style: styles.label.strong }, website ) ) ) ); } ContactBar.propTypes = { /** * Phone number for POI */ phone: _react2.default.PropTypes.oneOf([_react2.default.PropTypes.string, _react2.default.PropTypes.object]), /** * Website URL for POI */ website: _react2.default.PropTypes.string }; ContactBar.defaultProps = { phone: "", website: "" }; ContactBar.styles = styles; exports.default = (0, _radium2.default)(ContactBar);