backpack-ui
Version:
Lonely Planet's Components
167 lines (125 loc) • 4.25 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends2 = require("babel-runtime/helpers/extends");
var _extends3 = _interopRequireDefault(_extends2);
var _react = require("react");
var _react2 = _interopRequireDefault(_react);
var _propTypes = require("prop-types");
var _propTypes2 = _interopRequireDefault(_propTypes);
var _radium = require("radium");
var _radium2 = _interopRequireDefault(_radium);
var _capitalize = require("lodash/capitalize");
var _capitalize2 = _interopRequireDefault(_capitalize);
var _colors = require("../../styles/colors");
var _colors2 = _interopRequireDefault(_colors);
var _typography = require("../../styles/typography");
var _icon = require("../icon");
var _icon2 = _interopRequireDefault(_icon);
var _mixins = require("../../utils/mixins");
var _schema = require("../../utils/schema");
var _schema2 = _interopRequireDefault(_schema);
var _font = require("../../utils/font");
var _font2 = _interopRequireDefault(_font);
var _color = require("../../utils/color");
var _propTypes3 = require("../../utils/propTypes");
var _propTypes4 = _interopRequireDefault(_propTypes3);
var _createQAHook = require("../../utils/createQAHook");
var _createQAHook2 = _interopRequireDefault(_createQAHook);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var _ = { capitalize: _capitalize2.default };
var styles = {
container: {
color: (0, _color.rgba)(_colors2.default.textPrimary, 0.56),
fontFamily: (0, _font2.default)("benton"),
fontSize: _typography.fontSizeBodySmall + "px",
fontWeight: _typography.fontWeightRegular,
lineHeight: _typography.lineHeightBodySmall
},
item: {
padded: {
marginRight: 10 / _typography.fontSizeBodySmall + "em"
}
},
anchor: {
base: (0, _mixins.blueLink)(),
padded: {
marginRight: 10 / _typography.fontSizeBodySmall + "em"
}
}
};
var listMicroData = (0, _schema2.default)({
itemType: "BreadcrumbList"
});
var itemMicroData = (0, _schema2.default)({
itemProp: "itemListElement",
itemType: "ListItem"
});
function linkMicroData(link) {
if (link && link.type) {
return (0, _schema2.default)({
itemProp: "item",
itemType: _.capitalize(link.type)
});
}
return (0, _schema2.default)({
itemProp: "item",
itemType: "Thing"
});
}
function Breadcrumbs(_ref) {
var links = _ref.links,
style = _ref.style,
qaHook = _ref.qaHook;
var items = links.map(function (link, index) {
return _react2.default.createElement(
"span",
(0, _extends3.default)({
className: "Breadcrumbs-item",
style: [index !== links.length - 1 && styles.item.padded],
key: link.href
}, itemMicroData),
_react2.default.createElement(
"a",
(0, _extends3.default)({
style: [styles.anchor.base, index < links.length - 1 && styles.anchor.padded],
"data-testid": qaHook ? (0, _createQAHook2.default)(link.title + "-breadcrumb", "breadcrumb-" + index, "link") : null,
href: "//www.lonelyplanet.com" + link.href,
key: link.href
}, linkMicroData(link)),
_react2.default.createElement(
"span",
{ itemProp: "name" },
link.title
)
),
index < links.length - 1 && _react2.default.createElement(_icon2.default.ChevronRight, {
width: 6 / _typography.fontSizeBodySmall + "em",
height: 6 / _typography.fontSizeBodySmall + "em"
}),
_react2.default.createElement("meta", { itemProp: "position", content: index + 1 })
);
});
return _react2.default.createElement(
"nav",
(0, _extends3.default)({
className: "Breadcrumbs",
style: [styles.container, style]
}, listMicroData),
items
);
}
Breadcrumbs.propTypes = {
links: _propTypes2.default.arrayOf(_propTypes2.default.shape({
title: _propTypes2.default.string,
href: _propTypes2.default.string,
type: _propTypes2.default.string
})).isRequired,
style: _propTypes4.default.style,
qaHook: _propTypes2.default.bool
};
Breadcrumbs.defaultProps = {
qaHook: false
};
exports.default = (0, _radium2.default)(Breadcrumbs);