UNPKG

backpack-ui

Version:
210 lines (164 loc) 6.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _defineProperty2 = require("babel-runtime/helpers/defineProperty"); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _list; 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 _reactStickynode = require("react-stickynode"); var _reactStickynode2 = _interopRequireDefault(_reactStickynode); var _reactScroll = require("react-scroll"); var _colors = require("../../styles/colors"); var _colors2 = _interopRequireDefault(_colors); var _dimensions = require("../../styles/dimensions"); var _dimensions2 = _interopRequireDefault(_dimensions); var _mq = require("../../styles/mq"); var _mq2 = _interopRequireDefault(_mq); var _spacing = require("../../styles/spacing"); var _spacing2 = _interopRequireDefault(_spacing); var _timing = require("../../styles/timing"); var _timing2 = _interopRequireDefault(_timing); var _zIndex = require("../../styles/zIndex"); var _zIndex2 = _interopRequireDefault(_zIndex); var _color = require("../../utils/color"); var _font = require("../../utils/font"); var _font2 = _interopRequireDefault(_font); var _createQAHook = require("../../utils/createQAHook"); var _createQAHook2 = _interopRequireDefault(_createQAHook); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var navigationSubHeight = "80px"; var navigationSubHeightMobile = _dimensions2.default.headerHeightMobile + "px"; var styles = { container: (0, _defineProperty3.default)({ backgroundColor: _colors2.default.bgPrimary, borderBottom: "1px solid rgba(" + (0, _color.rgb)(_colors2.default.accentGray) + ", 0.45)", borderTop: "1px solid rgba(" + (0, _color.rgb)(_colors2.default.accentGray) + ", 0.45)", fontFamily: (0, _font2.default)("benton"), fontSize: 0, height: navigationSubHeightMobile, lineHeight: 1, margin: 0, padding: 0, position: "relative", transform: "translateZ(0)", // force hardware acceleration for iOS transition: "opacity " + _timing2.default.default + ", visibility " + _timing2.default.default, zIndex: _zIndex2.default.globalHeader }, "@media (min-width: " + _mq2.default.min[768] + ")", { height: navigationSubHeight }), innerContainer: (0, _defineProperty3.default)({ height: navigationSubHeightMobile, overflow: "hidden" }, "@media (min-width: " + _mq2.default.min[768] + ")", { height: navigationSubHeight }), list: (_list = { animation: "fly-in " + _timing2.default.default, height: navigationSubHeightMobile + 2, // to push horizontal scrollbar out of view margin: 0, "-webkit-overflow-scrolling": "touch", overflowX: "auto", overflowY: "hidden", padding: 0, textAlign: "center", transition: "opacity " + _timing2.default.default, whiteSpace: "nowrap", width: "100%" }, (0, _defineProperty3.default)(_list, "@media (min-width: " + _mq2.default.min[480] + ")", { animation: "none" }), (0, _defineProperty3.default)(_list, "@media (min-width: " + _mq2.default.min[768] + ")", { height: navigationSubHeight }), _list), listItem: (0, _defineProperty3.default)({ display: "inline-block", lineHeight: navigationSubHeightMobile, margin: 0, padding: 0 }, "@media (min-width: " + _mq2.default.min[768] + ")", { height: "100%", lineHeight: navigationSubHeight }), // to be used as rules for style component scoped: { a: { color: _colors2.default.textPrimary, display: "block", fontSize: "11px", fontWeight: 600, padding: "2px calc(" + _spacing2.default.gutter + "px / 2) 0", textTransform: "uppercase", cursor: "pointer" }, "a.active": { borderBottom: "5px solid " + _colors2.default.linkPrimary }, mediaQueries: (0, _defineProperty3.default)({}, "(min-width: " + _mq2.default.min[768] + ")", { a: { fontSize: "12px", height: "100%" } }) } }; function SectionalNav(_ref) { var items = _ref.items, linkToOffset = _ref.linkToOffset, qaHook = _ref.qaHook; return _react2.default.createElement( _reactStickynode2.default, { innerZ: _zIndex2.default.globalHeader, enabled: true }, _react2.default.createElement( "nav", { "data-testid": qaHook ? "sectional-nav" : null, className: "SectionalNav", style: styles.container }, _react2.default.createElement(_radium.Style, { scopeSelector: ".SectionalNav", rules: styles.scoped }), _react2.default.createElement( "div", { style: styles.innerContainer }, _react2.default.createElement( "ul", { style: styles.list }, items && items.map(function (item, index) { return _react2.default.createElement( "li", { style: styles.listItem, key: index, "data-testid": qaHook ? "" + (0, _createQAHook2.default)(item, "sectional-nav-item-" + index + ")", "li") : null }, _react2.default.createElement( _reactScroll.Link, { to: item, spy: true, smooth: true, isDynamic: true, offset: linkToOffset, duration: 500 }, item ) ); }) ) ) ) ); } SectionalNav.propTypes = { items: _propTypes2.default.arrayOf(_propTypes2.default.string).isRequired, linkToOffset: _propTypes2.default.number, qaHook: _propTypes2.default.bool }; SectionalNav.defaultProps = { qaHook: false }; exports.default = (0, _radium2.default)(SectionalNav);