UNPKG

backpack-ui

Version:
192 lines (152 loc) 5.27 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _defineProperty2 = require("babel-runtime/helpers/defineProperty"); var _defineProperty3 = _interopRequireDefault(_defineProperty2); 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 _colors = require("../../styles/colors"); var _colors2 = _interopRequireDefault(_colors); 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 styles = { container: { backgroundColor: _colors2.default.bgPrimary, borderTop: "1px solid rgba(" + (0, _color.rgb)(_colors2.default.accentGray) + ", 0.45)", fontFamily: (0, _font2.default)("benton"), fontSize: 0, height: navigationSubHeight, 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 }, innerContainer: { height: navigationSubHeight, overflow: "hidden", backgroundColor: "" + _colors2.default.bgPrimary }, list: (0, _defineProperty3.default)({ animation: "fly-in " + _timing2.default.default, height: navigationSubHeight, // to push horizontal scrollbar out of view margin: 0, WebkitOverflowScrolling: "touch", overflowX: "auto", overflowY: "hidden", padding: 0, textAlign: "center", transition: "opacity " + _timing2.default.default, whiteSpace: "nowrap", width: "100%", borderBottom: "1px solid " + _colors2.default.accentGray }, "@media (min-width: " + _mq2.default.min[480] + ")", { animation: "none" }), listItem: { display: "inline-block", lineHeight: navigationSubHeight, margin: 0, padding: 0, height: "calc(100% - 2px)", active: { borderBottom: "5px solid " + _colors2.default.accentRed } }, // to be used as rules for style component scoped: { ".sticky-inner-wrapper": { left: 0, right: 0, width: "100% !important" }, ".active nav ul": { borderBottom: "1px solid rgba(" + (0, _color.rgb)(_colors2.default.accentGray) + ", 0.45)" }, button: { backgroundColor: "transparent", border: 0, color: _colors2.default.textPrimary, display: "block", fontSize: "16px", fontWeight: 500, padding: "2px calc(" + _spacing2.default.gutter + "px / 2) 0", transition: "300ms color ease-in", cursor: "pointer", height: "100%" } } }; function TabbedNav(_ref) { var items = _ref.items, onClick = _ref.onClick, active = _ref.active, qaHook = _ref.qaHook; return _react2.default.createElement( "nav", { className: "TabbedNav", "data-testid": qaHook ? "tabbed-nav" : null, style: styles.container }, _react2.default.createElement(_radium.Style, { scopeSelector: ".TabbedNav", rules: styles.scoped }), _react2.default.createElement( _reactStickynode2.default, { innerZ: _zIndex2.default.globalHeader, enabled: true }, _react2.default.createElement( "div", { style: styles.innerContainer }, _react2.default.createElement( "ul", { style: styles.list, "data-testid": qaHook ? "tabbed-nav-ul" : null }, items && items.map(function (item, index) { return _react2.default.createElement( "li", { style: [styles.listItem, item === active ? styles.listItem.active : null], key: index, "data-testid": qaHook ? (0, _createQAHook2.default)("" + item, "tabbed-nav-li-" + index, "li") : null }, _react2.default.createElement( "button", { onClick: onClick }, item ) ); }) ) ) ) ); } TabbedNav.propTypes = { items: _propTypes2.default.arrayOf(_propTypes2.default.string).isRequired, onClick: _propTypes2.default.func, active: _propTypes2.default.string, qaHook: _propTypes2.default.bool }; TabbedNav.defaultProps = { qaHook: false }; exports.default = (0, _radium2.default)(TabbedNav);