UNPKG

backpack-ui

Version:
167 lines (125 loc) 4.25 kB
"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);