backpack-ui
Version:
Lonely Planet's Components
179 lines (146 loc) • 4.24 kB
JavaScript
"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);