UNPKG

6.99 kBJavaScriptView Raw
1"use strict";
2
3function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4
5Object.defineProperty(exports, "__esModule", {
6 value: true
7});
8exports.default = AppNavBar;
9
10var React = _interopRequireWildcard(require("react"));
11
12var _index = require("../styles/index.js");
13
14var _index2 = require("../layout-grid/index.js");
15
16var _mainMenuItem = _interopRequireDefault(require("./main-menu-item.js"));
17
18var _secondaryMenu = _interopRequireDefault(require("./secondary-menu.js"));
19
20var _mobileNav = _interopRequireDefault(require("./mobile-menu/mobile-nav.js"));
21
22var _logo = _interopRequireDefault(require("./logo.js"));
23
24var _userMenu = _interopRequireDefault(require("./user-menu/user-menu.js"));
25
26var _constants = require("./constants.js");
27
28var _styledComponents = require("./styled-components.js");
29
30function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
32function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
33
34function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
35
36function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
37
38function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
39
40function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
41
42function _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
43
44function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
45
46function AppNavBar(props) {
47 var _useStyletron = (0, _index.useStyletron)(),
48 _useStyletron2 = _slicedToArray(_useStyletron, 2),
49 css = _useStyletron2[0],
50 theme = _useStyletron2[1]; // const [activeMainNavItem, setActiveMainNavItem] = React.useState(null);
51
52
53 var breakpoints = theme.breakpoints;
54 var appDisplayName = props.appDisplayName,
55 _props$isNavItemActiv = props.isNavItemActive,
56 isNavItemActive = _props$isNavItemActiv === void 0 ? function (params) {
57 return false;
58 } : _props$isNavItemActiv,
59 onNavItemSelect = props.onNavItemSelect,
60 _props$mainNav = props.mainNav,
61 mainNav = _props$mainNav === void 0 ? [] : _props$mainNav,
62 _props$userNav = props.userNav,
63 userNav = _props$userNav === void 0 ? [] : _props$userNav;
64 var secondaryMenu;
65 var desktopSubNavPosition = _constants.POSITION.horizontal;
66 var mobileSubNavPosition = _constants.POSITION.vertical;
67 var mainMenu = mainNav.map(function (item, index) {
68 var active = item.active !== undefined ? item.active : isNavItemActive({
69 item: item
70 }); // For an active top level menu get the secondary navigation and its positioning
71
72 if (active && item.nav && item.nav.length) {
73 secondaryMenu = item.nav;
74
75 if (item.navPosition) {
76 desktopSubNavPosition = item.navPosition.desktop || desktopSubNavPosition;
77 mobileSubNavPosition = item.navPosition.mobile || mobileSubNavPosition;
78 }
79 } // Render main menu item
80
81
82 return React.createElement(_mainMenuItem.default, {
83 active: active,
84 item: item,
85 key: index,
86 onSelect: onNavItemSelect
87 });
88 });
89 return React.createElement(_styledComponents.StyledRoot, {
90 "data-baseweb": "app-nav-bar"
91 }, React.createElement("div", {
92 className: css(_defineProperty({}, "@media screen and (min-width: ".concat(breakpoints.large, "px)"), {
93 display: 'none'
94 }))
95 }, React.createElement(_index2.Grid, null, React.createElement(_index2.Cell, {
96 span: [4, 8, 0]
97 }, React.createElement(_styledComponents.StyledSpacing, null, mainNav.length || userNav.length ? React.createElement(_mobileNav.default, props) : null, React.createElement(_logo.default, {
98 appDisplayName: appDisplayName
99 })))), secondaryMenu && mobileSubNavPosition === _constants.POSITION.horizontal ? React.createElement(_secondaryMenu.default, {
100 nav: secondaryMenu,
101 isNavItemActive: isNavItemActive,
102 onNavItemSelect: onNavItemSelect
103 }) : null), React.createElement("div", {
104 className: css(_defineProperty({}, "@media screen and (max-width: ".concat(breakpoints.large - 1, "px)"), {
105 display: 'none'
106 }))
107 }, React.createElement(_index2.Grid, null, React.createElement(_index2.Cell, {
108 span: [0, 3, 3]
109 }, React.createElement(_styledComponents.StyledSpacing, null, React.createElement(_logo.default, {
110 appDisplayName: appDisplayName
111 }))), React.createElement(_index2.Cell, {
112 span: userNav.length ? [0, 4, 8] : [0, 5, 9]
113 }, React.createElement(_styledComponents.StyledPrimaryMenuContainer, {
114 role: "navigation",
115 "aria-label": "Main navigation"
116 }, mainMenu)), userNav.length ? React.createElement(_index2.Cell, {
117 span: [0, 1, 1]
118 }, React.createElement(_styledComponents.StyledSpacing, null, React.createElement(_userMenu.default, {
119 isNavItemActive: isNavItemActive,
120 onNavItemSelect: onNavItemSelect,
121 username: props.username,
122 usernameSubtitle: props.usernameSubtitle,
123 userImgUrl: props.userImgUrl,
124 userNav: userNav
125 }))) : null), secondaryMenu && desktopSubNavPosition === _constants.POSITION.horizontal ? React.createElement(_secondaryMenu.default, {
126 nav: secondaryMenu,
127 isNavItemActive: isNavItemActive,
128 onNavItemSelect: onNavItemSelect
129 }) : null));
130}
\No newline at end of file