backpack-ui
Version:
Lonely Planet's Components
179 lines (147 loc) • 4.73 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _react = require("react");
var _react2 = _interopRequireDefault(_react);
var _radium = require("radium");
var _radium2 = _interopRequireDefault(_radium);
var _settings = require("../../../settings.json");
var _moreLink = require("../moreLink");
var _moreLink2 = _interopRequireDefault(_moreLink);
var _staticMap = require("../staticMap");
var _staticMap2 = _interopRequireDefault(_staticMap);
var _mixins = require("../../utils/mixins");
var _schema = require("../../utils/schema");
var _schema2 = _interopRequireDefault(_schema);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function Location(_ref) {
var name = _ref.name;
var street = _ref.street;
var place = _ref.place;
var coordinates = _ref.coordinates;
var mobile = _ref.mobile;
var styles = {
container: {
base: {}
},
address: {
base: {}
},
directionsLink: {
base: {
borderTop: "1px solid " + _settings.color.gray,
display: "inline-block",
marginTop: "10px",
paddingRight: "13px",
paddingTop: "13px"
}
},
map: {
base: {}
}
};
var schemaProps = (0, _schema2.default)({
itemProp: "address",
itemType: "PostalAddress"
});
return _react2.default.createElement(
"div",
{ className: "Location clearfix", style: styles.container.base },
(street || place && place.length > 0 || coordinates) && _react2.default.createElement(
"div",
{ className: "Location-address", style: [mobile && { float: "left" }] },
(street || place && place.length > 0) && _react2.default.createElement(
"div",
schemaProps,
street && _react2.default.createElement(
"div",
{ itemProp: "streetAddress" },
street
),
place && place.length > 0 && _react2.default.createElement(
"div",
null,
place.map(function (placeItem, i) {
return _react2.default.createElement(
"span",
{ key: placeItem.title + " span" },
_react2.default.createElement(
"a",
{ key: placeItem.title, style: (0, _mixins.blueLink)(), href: placeItem.href },
_react2.default.createElement(
"span",
{ itemProp: placeItem.type === "city" ? "addressLocality" : "addressCountry" },
placeItem.title
)
),
i !== place.length - 1 && ", "
);
})
)
),
coordinates && mobile && _react2.default.createElement(
"div",
{ style: styles.directionsLink.base },
_react2.default.createElement(
_moreLink2.default,
{
href: "https://www.google.com/maps/place/" + (name.split(" ").join("+") + ",") + (coordinates[1] + "," + coordinates[0]),
size: "small"
},
"Get directions"
)
)
),
coordinates && _react2.default.createElement(
"div",
{
className: "Location-map",
style: [mobile && { float: "right", marginTop: "-26px" }]
},
_react2.default.createElement(_staticMap2.default, {
location: coordinates.join(","),
size: mobile ? "88x88" : "278x90",
sidebar: !mobile,
hideAttribution: mobile,
name: name,
url: mobile ? "https://www.google.com/maps/place/" + (name.split(" ").join("+") + ",") + (coordinates[1] + "," + coordinates[0]) : ""
})
)
);
}
Location.propTypes = {
/**
* Name of the location; used for the static map and in the Google URL with
* the coordinates
*/
name: _react2.default.PropTypes.string.isRequired,
/**
* Street address of the location
*/
street: _react2.default.PropTypes.string.isRequired,
/**
* An array of containing places, usually city and country
*/
place: _react2.default.PropTypes.arrayOf(_react2.default.PropTypes.shape({
href: _react2.default.PropTypes.string,
title: _react2.default.PropTypes.string,
type: _react2.default.PropTypes.string
})).isRequired,
/**
* An array of latitude and longitude coordinates; used in the Google URL
*/
coordinates: _react2.default.PropTypes.arrayOf(_react2.default.PropTypes.number).isRequired,
/**
* Should mobile-specific styles and props be used
*/
mobile: _react2.default.PropTypes.bool.isRequired
};
Location.defaultProps = {
name: "",
street: "",
place: null,
coordinates: null,
mobile: false
};
exports.default = (0, _radium2.default)(Location);