@nauedu/frontend-component-header 14.0.0-semantically-released → 18.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/README.rst +111 -33
  2. package/dist/Avatar.js +5 -7
  3. package/dist/Avatar.js.map +1 -1
  4. package/dist/DesktopHeader.js +98 -74
  5. package/dist/DesktopHeader.js.map +1 -1
  6. package/dist/Header.js +81 -41
  7. package/dist/Header.js.map +1 -1
  8. package/dist/Header.messages.js +15 -0
  9. package/dist/Header.messages.js.map +1 -1
  10. package/dist/Header.test.jsx +67 -90
  11. package/dist/Icons.js +1 -2
  12. package/dist/Icons.js.map +1 -1
  13. package/dist/LanguageSelector/data/api.js +65 -0
  14. package/dist/LanguageSelector/data/api.js.map +1 -0
  15. package/dist/LanguageSelector/index.js +113 -0
  16. package/dist/LanguageSelector/index.js.map +1 -0
  17. package/dist/Logo.js +11 -21
  18. package/dist/Logo.js.map +1 -1
  19. package/dist/Menu/Menu.js +42 -88
  20. package/dist/Menu/Menu.js.map +1 -1
  21. package/dist/Menu/index.js.map +1 -1
  22. package/dist/MobileHeader.js +80 -76
  23. package/dist/MobileHeader.js.map +1 -1
  24. package/dist/__snapshots__/Header.test.jsx.snap +12 -12
  25. package/dist/generic/messages.js.map +1 -1
  26. package/dist/i18n/index.js +1 -30
  27. package/dist/i18n/index.js.map +1 -1
  28. package/dist/index.js +2 -1
  29. package/dist/index.js.map +1 -1
  30. package/dist/index.scss +11 -1
  31. package/dist/learning-header/AnonymousUserMenu.js +3 -5
  32. package/dist/learning-header/AnonymousUserMenu.js.map +1 -1
  33. package/dist/learning-header/AuthenticatedUserDropdown.js +8 -10
  34. package/dist/learning-header/AuthenticatedUserDropdown.js.map +1 -1
  35. package/dist/learning-header/LearningHeader.js +56 -50
  36. package/dist/learning-header/LearningHeader.js.map +1 -1
  37. package/dist/learning-header/_header.scss +5 -2
  38. package/dist/learning-header/data/api.js +30 -42
  39. package/dist/learning-header/data/api.js.map +1 -1
  40. package/dist/learning-header/data/api.test.js +124 -175
  41. package/dist/learning-header/data/api.test.js.map +1 -1
  42. package/dist/learning-header/messages.js.map +1 -1
  43. package/dist/setupTest.js +9 -13
  44. package/dist/studio-header/BrandNav.js +21 -0
  45. package/dist/studio-header/BrandNav.js.map +1 -0
  46. package/dist/studio-header/CourseLockUp.js +45 -0
  47. package/dist/studio-header/CourseLockUp.js.map +1 -0
  48. package/dist/studio-header/HeaderBody.js +131 -0
  49. package/dist/studio-header/HeaderBody.js.map +1 -0
  50. package/dist/studio-header/MobileHeader.js +79 -0
  51. package/dist/studio-header/MobileHeader.js.map +1 -0
  52. package/dist/studio-header/MobileMenu.js +45 -0
  53. package/dist/studio-header/MobileMenu.js.map +1 -0
  54. package/dist/studio-header/NavDropdownMenu.js +30 -0
  55. package/dist/studio-header/NavDropdownMenu.js.map +1 -0
  56. package/dist/studio-header/StudioHeader.js +72 -0
  57. package/dist/studio-header/StudioHeader.js.map +1 -0
  58. package/dist/studio-header/StudioHeader.scss +49 -0
  59. package/dist/studio-header/UserMenu.js +55 -0
  60. package/dist/studio-header/UserMenu.js.map +1 -0
  61. package/dist/studio-header/index.js +3 -0
  62. package/dist/studio-header/index.js.map +1 -0
  63. package/dist/studio-header/messages.js +60 -0
  64. package/dist/studio-header/messages.js.map +1 -0
  65. package/dist/studio-header/utils.js +29 -0
  66. package/dist/studio-header/utils.js.map +1 -0
  67. package/dist/test-utils.js +26 -0
  68. package/dist/test-utils.js.map +1 -0
  69. package/package.json +33 -33
  70. package/dist/i18n/messages/ar.json +0 -30
  71. package/dist/i18n/messages/ca.json +0 -1
  72. package/dist/i18n/messages/es_419.json +0 -30
  73. package/dist/i18n/messages/fr.json +0 -30
  74. package/dist/i18n/messages/fr_CA.json +0 -30
  75. package/dist/i18n/messages/he.json +0 -1
  76. package/dist/i18n/messages/id.json +0 -1
  77. package/dist/i18n/messages/ko_KR.json +0 -2
  78. package/dist/i18n/messages/pl.json +0 -1
  79. package/dist/i18n/messages/pt_BR.json +0 -2
  80. package/dist/i18n/messages/ru.json +0 -1
  81. package/dist/i18n/messages/th.json +0 -1
  82. package/dist/i18n/messages/uk.json +0 -1
  83. package/dist/i18n/messages/zh_CN.json +0 -30
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Menu/Menu.jsx"],"names":["React","CSSTransition","PropTypes","MenuTrigger","tag","className","attributes","createElement","propTypes","string","defaultProps","MenuTriggerType","type","MenuContent","join","menuPropTypes","onClose","func","onOpen","closeOnDocumentClick","bool","respondToPointerEvents","transitionTimeout","number","transitionClassName","children","arrayOf","node","isRequired","Menu","props","menu","createRef","state","expanded","onTriggerClick","bind","onCloseClick","onKeyDown","onDocumentClick","onMouseEnter","onMouseLeave","document","removeEventListener","e","clickIsInMenu","current","target","contains","close","getAttribute","preventDefault","toggle","getFocusableElements","focus","key","stopPropagation","activeElement","shiftKey","focusPrevious","focusNext","open","querySelectorAll","Object","keys","filter","property","undefined","forEach","focusableElements","Array","from","activeIndex","indexOf","nextIndex","length","previousIndex","setState","addEventListener","cloneElement","onClick","wrappedChildren","Children","map","child","renderTrigger","renderMenuContent","rootClassName","ref","getAttributesFromProps","Component"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport PropTypes from 'prop-types';\n\nfunction MenuTrigger({ tag, className, ...attributes }) {\n return React.createElement(tag, {\n className: `menu-trigger ${className}`,\n ...attributes,\n });\n}\nMenuTrigger.propTypes = {\n tag: PropTypes.string,\n className: PropTypes.string,\n};\nMenuTrigger.defaultProps = {\n tag: 'div',\n className: null,\n};\nconst MenuTriggerType = <MenuTrigger />.type;\n\nfunction MenuContent({ tag, className, ...attributes }) {\n return React.createElement(tag, {\n className: ['menu-content', className].join(' '),\n ...attributes,\n });\n}\nMenuContent.propTypes = {\n tag: PropTypes.string,\n className: PropTypes.string,\n};\nMenuContent.defaultProps = {\n tag: 'div',\n className: null,\n};\n\nconst menuPropTypes = {\n tag: PropTypes.string,\n onClose: PropTypes.func,\n onOpen: PropTypes.func,\n closeOnDocumentClick: PropTypes.bool,\n respondToPointerEvents: PropTypes.bool,\n className: PropTypes.string,\n transitionTimeout: PropTypes.number,\n transitionClassName: PropTypes.string,\n children: PropTypes.arrayOf(PropTypes.node).isRequired,\n};\n\nclass Menu extends React.Component {\n constructor(props) {\n super(props);\n\n this.menu = React.createRef();\n this.state = {\n expanded: false,\n };\n\n this.onTriggerClick = this.onTriggerClick.bind(this);\n this.onCloseClick = this.onCloseClick.bind(this);\n this.onKeyDown = this.onKeyDown.bind(this);\n this.onDocumentClick = this.onDocumentClick.bind(this);\n this.onMouseEnter = this.onMouseEnter.bind(this);\n this.onMouseLeave = this.onMouseLeave.bind(this);\n }\n\n // Lifecycle Events\n componentWillUnmount() {\n document.removeEventListener('touchend', this.onDocumentClick, true);\n document.removeEventListener('click', this.onDocumentClick, true);\n\n // Call onClose callback when unmounting and open\n if (this.state.expanded && this.props.onClose) {\n this.props.onClose();\n }\n }\n\n // Event handlers\n onDocumentClick(e) {\n if (!this.props.closeOnDocumentClick) {\n return;\n }\n\n const clickIsInMenu = this.menu.current === e.target || this.menu.current.contains(e.target);\n if (clickIsInMenu) {\n return;\n }\n\n this.close();\n }\n\n onTriggerClick(e) {\n // Let the browser follow the link of the trigger if the menu\n // is already expanded and the trigger has an href attribute\n if (this.state.expanded && e.target.getAttribute('href')) {\n return;\n }\n\n e.preventDefault();\n this.toggle();\n }\n\n onCloseClick() {\n this.getFocusableElements()[0].focus();\n this.close();\n }\n\n onKeyDown(e) {\n if (!this.state.expanded) {\n return;\n }\n switch (e.key) {\n case 'Escape': {\n e.preventDefault();\n e.stopPropagation();\n this.getFocusableElements()[0].focus();\n this.close();\n break;\n }\n case 'Enter': {\n // Using focusable elements instead of a ref to the trigger\n // because Hyperlink and Button can handle refs as functional components\n if (document.activeElement === this.getFocusableElements()[0]) {\n e.preventDefault();\n this.toggle();\n }\n break;\n }\n case 'Tab': {\n e.preventDefault();\n if (e.shiftKey) {\n this.focusPrevious();\n } else {\n this.focusNext();\n }\n break;\n }\n case 'ArrowDown': {\n e.preventDefault();\n this.focusNext();\n break;\n }\n case 'ArrowUp': {\n e.preventDefault();\n this.focusPrevious();\n break;\n }\n default:\n }\n }\n\n onMouseEnter() {\n if (!this.props.respondToPointerEvents) {\n return;\n }\n this.open();\n }\n\n onMouseLeave() {\n if (!this.props.respondToPointerEvents) {\n return;\n }\n this.close();\n }\n\n // Internal functions\n\n getFocusableElements() {\n return this.menu.current.querySelectorAll('button:not([disabled]), [href]:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"]):not([disabled])');\n }\n\n getAttributesFromProps() {\n // Any extra props are attributes for the menu\n const attributes = {};\n Object.keys(this.props)\n .filter(property => menuPropTypes[property] === undefined)\n .forEach((property) => {\n attributes[property] = this.props[property];\n });\n return attributes;\n }\n\n focusNext() {\n const focusableElements = Array.from(this.getFocusableElements());\n const activeIndex = focusableElements.indexOf(document.activeElement);\n const nextIndex = (activeIndex + 1) % focusableElements.length;\n focusableElements[nextIndex].focus();\n }\n\n focusPrevious() {\n const focusableElements = Array.from(this.getFocusableElements());\n const activeIndex = focusableElements.indexOf(document.activeElement);\n const previousIndex = (activeIndex || focusableElements.length) - 1;\n focusableElements[previousIndex].focus();\n }\n\n open() {\n if (this.props.onOpen) {\n this.props.onOpen();\n }\n this.setState({ expanded: true });\n // Listen to touchend and click events to ensure the menu\n // can be closed on mobile, pointer, and mixed input devices\n document.addEventListener('touchend', this.onDocumentClick, true);\n document.addEventListener('click', this.onDocumentClick, true);\n }\n\n close() {\n if (this.props.onClose) {\n this.props.onClose();\n }\n this.setState({ expanded: false });\n document.removeEventListener('touchend', this.onDocumentClick, true);\n document.removeEventListener('click', this.onDocumentClick, true);\n }\n\n toggle() {\n if (this.state.expanded) {\n this.close();\n } else {\n this.open();\n }\n }\n\n renderTrigger(node) {\n return React.cloneElement(node, {\n onClick: this.onTriggerClick,\n 'aria-haspopup': 'menu',\n 'aria-expanded': this.state.expanded,\n });\n }\n\n renderMenuContent(node) {\n return (\n <CSSTransition\n in={this.state.expanded}\n timeout={this.props.transitionTimeout}\n classNames={this.props.transitionClassName}\n unmountOnExit\n >\n {node}\n </CSSTransition>\n );\n }\n\n render() {\n const { className } = this.props;\n\n const wrappedChildren = React.Children.map(this.props.children, (child) => {\n if (child.type === MenuTriggerType) {\n return this.renderTrigger(child);\n }\n return this.renderMenuContent(child);\n });\n\n const rootClassName = this.state.expanded ? 'menu expanded' : 'menu';\n\n return React.createElement(this.props.tag, {\n className: `${rootClassName} ${className}`,\n ref: this.menu,\n onKeyDown: this.onKeyDown,\n onMouseEnter: this.onMouseEnter,\n onMouseLeave: this.onMouseLeave,\n ...this.getAttributesFromProps(),\n }, wrappedChildren);\n }\n}\n\nMenu.propTypes = menuPropTypes;\nMenu.defaultProps = {\n tag: 'div',\n className: null,\n onClose: null,\n onOpen: null,\n respondToPointerEvents: false,\n closeOnDocumentClick: true,\n transitionTimeout: 250,\n transitionClassName: 'menu-content',\n};\n\nexport { Menu, MenuTrigger, MenuContent };\n"],"file":"Menu.js"}
1
+ {"version":3,"file":"Menu.js","names":["React","CSSTransition","PropTypes","MenuTrigger","_ref","tag","className","attributes","_objectWithoutProperties","_excluded","createElement","_objectSpread","concat","propTypes","string","defaultProps","MenuTriggerComp","MenuTriggerType","type","MenuContent","_ref2","_excluded2","join","menuPropTypes","onClose","func","onOpen","closeOnDocumentClick","bool","respondToPointerEvents","transitionTimeout","number","transitionClassName","children","arrayOf","node","isRequired","Menu","_React$Component","props","_this","_classCallCheck","_callSuper","menu","createRef","state","expanded","onTriggerClick","bind","onCloseClick","onKeyDown","onDocumentClick","onMouseEnter","onMouseLeave","_inherits","_createClass","key","value","componentWillUnmount","document","removeEventListener","e","clickIsInMenu","current","target","contains","close","getAttribute","preventDefault","toggle","getFocusableElements","focus","stopPropagation","activeElement","shiftKey","focusPrevious","focusNext","open","querySelectorAll","getAttributesFromProps","_this2","Object","keys","filter","property","undefined","forEach","focusableElements","Array","from","activeIndex","indexOf","nextIndex","length","previousIndex","setState","addEventListener","renderTrigger","cloneElement","onClick","renderMenuContent","timeout","classNames","unmountOnExit","render","_this3","wrappedChildren","Children","map","child","rootClassName","ref","Component"],"sources":["../../src/Menu/Menu.jsx"],"sourcesContent":["import React from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport PropTypes from 'prop-types';\n\nconst MenuTrigger = ({ tag, className, ...attributes }) => React.createElement(tag, {\n className: `menu-trigger ${className}`,\n ...attributes,\n});\nMenuTrigger.propTypes = {\n tag: PropTypes.string,\n className: PropTypes.string,\n};\nMenuTrigger.defaultProps = {\n tag: 'div',\n className: null,\n};\nconst MenuTriggerComp = <MenuTrigger />;\nconst MenuTriggerType = MenuTriggerComp.type;\n\nconst MenuContent = ({ tag, className, ...attributes }) => React.createElement(tag, {\n className: ['menu-content', className].join(' '),\n ...attributes,\n});\nMenuContent.propTypes = {\n tag: PropTypes.string,\n className: PropTypes.string,\n};\nMenuContent.defaultProps = {\n tag: 'div',\n className: null,\n};\n\nconst menuPropTypes = {\n tag: PropTypes.string,\n onClose: PropTypes.func,\n onOpen: PropTypes.func,\n closeOnDocumentClick: PropTypes.bool,\n respondToPointerEvents: PropTypes.bool,\n className: PropTypes.string,\n transitionTimeout: PropTypes.number,\n transitionClassName: PropTypes.string,\n children: PropTypes.arrayOf(PropTypes.node).isRequired,\n};\n\nclass Menu extends React.Component {\n constructor(props) {\n super(props);\n\n this.menu = React.createRef();\n this.state = {\n expanded: false,\n };\n\n this.onTriggerClick = this.onTriggerClick.bind(this);\n this.onCloseClick = this.onCloseClick.bind(this);\n this.onKeyDown = this.onKeyDown.bind(this);\n this.onDocumentClick = this.onDocumentClick.bind(this);\n this.onMouseEnter = this.onMouseEnter.bind(this);\n this.onMouseLeave = this.onMouseLeave.bind(this);\n }\n\n // Lifecycle Events\n componentWillUnmount() {\n document.removeEventListener('touchend', this.onDocumentClick, true);\n document.removeEventListener('click', this.onDocumentClick, true);\n\n // Call onClose callback when unmounting and open\n if (this.state.expanded && this.props.onClose) {\n this.props.onClose();\n }\n }\n\n // Event handlers\n onDocumentClick(e) {\n if (!this.props.closeOnDocumentClick) {\n return;\n }\n\n const clickIsInMenu = this.menu.current === e.target || this.menu.current.contains(e.target);\n if (clickIsInMenu) {\n return;\n }\n\n this.close();\n }\n\n onTriggerClick(e) {\n // Let the browser follow the link of the trigger if the menu\n // is already expanded and the trigger has an href attribute\n if (this.state.expanded && e.target.getAttribute('href')) {\n return;\n }\n\n e.preventDefault();\n this.toggle();\n }\n\n onCloseClick() {\n this.getFocusableElements()[0].focus();\n this.close();\n }\n\n onKeyDown(e) {\n if (!this.state.expanded) {\n return;\n }\n switch (e.key) {\n case 'Escape': {\n e.preventDefault();\n e.stopPropagation();\n this.getFocusableElements()[0].focus();\n this.close();\n break;\n }\n case 'Enter': {\n // Using focusable elements instead of a ref to the trigger\n // because Hyperlink and Button can handle refs as functional components\n if (document.activeElement === this.getFocusableElements()[0]) {\n e.preventDefault();\n this.toggle();\n }\n break;\n }\n case 'Tab': {\n e.preventDefault();\n if (e.shiftKey) {\n this.focusPrevious();\n } else {\n this.focusNext();\n }\n break;\n }\n case 'ArrowDown': {\n e.preventDefault();\n this.focusNext();\n break;\n }\n case 'ArrowUp': {\n e.preventDefault();\n this.focusPrevious();\n break;\n }\n default:\n }\n }\n\n onMouseEnter() {\n if (!this.props.respondToPointerEvents) {\n return;\n }\n this.open();\n }\n\n onMouseLeave() {\n if (!this.props.respondToPointerEvents) {\n return;\n }\n this.close();\n }\n\n // Internal functions\n\n getFocusableElements() {\n return this.menu.current.querySelectorAll('button:not([disabled]), [href]:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"]):not([disabled])');\n }\n\n getAttributesFromProps() {\n // Any extra props are attributes for the menu\n const attributes = {};\n Object.keys(this.props)\n .filter(property => menuPropTypes[property] === undefined)\n .forEach((property) => {\n attributes[property] = this.props[property];\n });\n return attributes;\n }\n\n focusNext() {\n const focusableElements = Array.from(this.getFocusableElements());\n const activeIndex = focusableElements.indexOf(document.activeElement);\n const nextIndex = (activeIndex + 1) % focusableElements.length;\n focusableElements[nextIndex].focus();\n }\n\n focusPrevious() {\n const focusableElements = Array.from(this.getFocusableElements());\n const activeIndex = focusableElements.indexOf(document.activeElement);\n const previousIndex = (activeIndex || focusableElements.length) - 1;\n focusableElements[previousIndex].focus();\n }\n\n open() {\n if (this.props.onOpen) {\n this.props.onOpen();\n }\n this.setState({ expanded: true });\n // Listen to touchend and click events to ensure the menu\n // can be closed on mobile, pointer, and mixed input devices\n document.addEventListener('touchend', this.onDocumentClick, true);\n document.addEventListener('click', this.onDocumentClick, true);\n }\n\n close() {\n if (this.props.onClose) {\n this.props.onClose();\n }\n this.setState({ expanded: false });\n document.removeEventListener('touchend', this.onDocumentClick, true);\n document.removeEventListener('click', this.onDocumentClick, true);\n }\n\n toggle() {\n if (this.state.expanded) {\n this.close();\n } else {\n this.open();\n }\n }\n\n renderTrigger(node) {\n return React.cloneElement(node, {\n onClick: this.onTriggerClick,\n 'aria-haspopup': 'menu',\n 'aria-expanded': this.state.expanded,\n });\n }\n\n renderMenuContent(node) {\n return (\n <CSSTransition\n in={this.state.expanded}\n timeout={this.props.transitionTimeout}\n classNames={this.props.transitionClassName}\n unmountOnExit\n >\n {node}\n </CSSTransition>\n );\n }\n\n render() {\n const { className } = this.props;\n\n const wrappedChildren = React.Children.map(this.props.children, (child) => {\n if (child.type === MenuTriggerType) {\n return this.renderTrigger(child);\n }\n return this.renderMenuContent(child);\n });\n\n const rootClassName = this.state.expanded ? 'menu expanded' : 'menu';\n\n return React.createElement(this.props.tag, {\n className: `${rootClassName} ${className}`,\n ref: this.menu,\n onKeyDown: this.onKeyDown,\n onMouseEnter: this.onMouseEnter,\n onMouseLeave: this.onMouseLeave,\n ...this.getAttributesFromProps(),\n }, wrappedChildren);\n }\n}\n\nMenu.propTypes = menuPropTypes;\nMenu.defaultProps = {\n tag: 'div',\n className: null,\n onClose: null,\n onOpen: null,\n respondToPointerEvents: false,\n closeOnDocumentClick: true,\n transitionTimeout: 250,\n transitionClassName: 'menu-content',\n};\n\nexport { Menu, MenuTrigger, MenuContent };\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Menu/index.jsx"],"names":["Menu","MenuTrigger","MenuContent"],"mappings":"AAAA,SAASA,IAAT,EAAeC,WAAf,EAA4BC,WAA5B,QAA+C,QAA/C;AAEA,SAASF,IAAT,EAAeC,WAAf,EAA4BC,WAA5B","sourcesContent":["import { Menu, MenuTrigger, MenuContent } from './Menu';\n\nexport { Menu, MenuTrigger, MenuContent };\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["Menu","MenuTrigger","MenuContent"],"sources":["../../src/Menu/index.jsx"],"sourcesContent":["import { Menu, MenuTrigger, MenuContent } from './Menu';\n\nexport { Menu, MenuTrigger, MenuContent };\n"],"mappings":"AAAA,SAASA,IAAI,EAAEC,WAAW,EAAEC,WAAW,QAAQ,QAAQ;AAEvD,SAASF,IAAI,EAAEC,WAAW,EAAEC,WAAW","ignoreList":[]}
@@ -1,75 +1,60 @@
1
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
-
3
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
4
-
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
5
3
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
6
-
7
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
8
-
4
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
9
5
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
10
-
11
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
12
-
13
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
14
-
15
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
16
-
6
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
7
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
8
+ function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
17
9
  function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
18
-
19
10
  function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
20
-
21
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
22
-
23
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
24
-
11
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
12
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
13
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
14
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
25
15
  import React from 'react';
26
16
  import PropTypes from 'prop-types';
27
17
  import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
28
- import { getConfig } from '@edx/frontend-platform'; // Local Components
18
+ import { getConfig } from '@edx/frontend-platform';
29
19
 
20
+ // Local Components
30
21
  import { Menu, MenuTrigger, MenuContent } from './Menu';
31
22
  import Avatar from './Avatar';
32
- import { LinkedLogo, Logo } from './Logo'; // i18n
23
+ import { LinkedLogo, Logo } from './Logo';
33
24
 
34
- import messages from './Header.messages'; // Assets
25
+ // i18n
26
+ import messages from './Header.messages';
35
27
 
28
+ // Assets
36
29
  import { MenuIcon } from './Icons';
37
-
38
30
  var MobileHeader = /*#__PURE__*/function (_React$Component) {
39
- _inherits(MobileHeader, _React$Component);
40
-
41
- var _super = _createSuper(MobileHeader);
42
-
43
31
  function MobileHeader(props) {
44
32
  _classCallCheck(this, MobileHeader);
45
-
46
33
  // eslint-disable-line no-useless-constructor
47
- return _super.call(this, props);
34
+ return _callSuper(this, MobileHeader, [props]);
48
35
  }
49
-
50
- _createClass(MobileHeader, [{
51
- key: "renderMainMenu",
52
- value: function renderMainMenu() {
53
- var mainMenu = this.props.mainMenu; // Nodes are accepted as a prop
54
-
55
- if (!Array.isArray(mainMenu)) {
56
- return mainMenu;
36
+ _inherits(MobileHeader, _React$Component);
37
+ return _createClass(MobileHeader, [{
38
+ key: "renderMenu",
39
+ value: function renderMenu(menu) {
40
+ // Nodes are accepted as a prop
41
+ if (!Array.isArray(menu)) {
42
+ return menu;
57
43
  }
58
-
59
- return mainMenu.map(function (menuItem) {
44
+ return menu.map(function (menuItem) {
60
45
  var type = menuItem.type,
61
- href = menuItem.href,
62
- content = menuItem.content,
63
- submenuContent = menuItem.submenuContent;
64
-
46
+ href = menuItem.href,
47
+ content = menuItem.content,
48
+ submenuContent = menuItem.submenuContent,
49
+ disabled = menuItem.disabled,
50
+ isActive = menuItem.isActive;
65
51
  if (type === 'item') {
66
52
  return /*#__PURE__*/React.createElement("a", {
67
53
  key: "".concat(type, "-").concat(content),
68
- className: "nav-link",
54
+ className: "nav-link".concat(disabled ? ' disabled' : '').concat(isActive ? ' active' : ''),
69
55
  href: href
70
56
  }, content);
71
57
  }
72
-
73
58
  return /*#__PURE__*/React.createElement(Menu, {
74
59
  key: "".concat(type, "-").concat(content),
75
60
  tag: "div",
@@ -84,21 +69,37 @@ var MobileHeader = /*#__PURE__*/function (_React$Component) {
84
69
  }, submenuContent));
85
70
  });
86
71
  }
72
+ }, {
73
+ key: "renderMainMenu",
74
+ value: function renderMainMenu() {
75
+ var mainMenu = this.props.mainMenu;
76
+ return this.renderMenu(mainMenu);
77
+ }
78
+ }, {
79
+ key: "renderSecondaryMenu",
80
+ value: function renderSecondaryMenu() {
81
+ var secondaryMenu = this.props.secondaryMenu;
82
+ return this.renderMenu(secondaryMenu);
83
+ }
87
84
  }, {
88
85
  key: "renderUserMenuItems",
89
86
  value: function renderUserMenuItems() {
90
87
  var userMenu = this.props.userMenu;
91
- return userMenu.map(function (_ref) {
92
- var type = _ref.type,
88
+ return userMenu.map(function (group) {
89
+ return group.items.map(function (_ref) {
90
+ var type = _ref.type,
91
+ content = _ref.content,
93
92
  href = _ref.href,
94
- content = _ref.content;
95
- return /*#__PURE__*/React.createElement("li", {
96
- className: "nav-item",
97
- key: "".concat(type, "-").concat(content)
98
- }, /*#__PURE__*/React.createElement("a", {
99
- className: "nav-link",
100
- href: href
101
- }, content));
93
+ disabled = _ref.disabled,
94
+ isActive = _ref.isActive;
95
+ return /*#__PURE__*/React.createElement("li", {
96
+ className: "nav-item",
97
+ key: "".concat(type, "-").concat(content)
98
+ }, /*#__PURE__*/React.createElement("a", {
99
+ className: "nav-link".concat(isActive ? ' active' : '').concat(disabled ? ' disabled' : ''),
100
+ href: href
101
+ }, content));
102
+ });
102
103
  });
103
104
  }
104
105
  }, {
@@ -107,8 +108,8 @@ var MobileHeader = /*#__PURE__*/function (_React$Component) {
107
108
  var loggedOutItems = this.props.loggedOutItems;
108
109
  return loggedOutItems.map(function (_ref2, i, arr) {
109
110
  var type = _ref2.type,
110
- href = _ref2.href,
111
- content = _ref2.content;
111
+ href = _ref2.href,
112
+ content = _ref2.content;
112
113
  return /*#__PURE__*/React.createElement("li", {
113
114
  className: "nav-item px-3 my-2",
114
115
  key: "".concat(type, "-").concat(content)
@@ -122,17 +123,17 @@ var MobileHeader = /*#__PURE__*/function (_React$Component) {
122
123
  key: "render",
123
124
  value: function render() {
124
125
  var _this$props = this.props,
125
- logo = _this$props.logo,
126
- logoAltText = _this$props.logoAltText,
127
- logoDestination = _this$props.logoDestination,
128
- loggedIn = _this$props.loggedIn,
129
- avatar = _this$props.avatar,
130
- username = _this$props.username,
131
- stickyOnMobile = _this$props.stickyOnMobile,
132
- intl = _this$props.intl,
133
- mainMenu = _this$props.mainMenu,
134
- userMenu = _this$props.userMenu,
135
- loggedOutItems = _this$props.loggedOutItems;
126
+ logo = _this$props.logo,
127
+ logoAltText = _this$props.logoAltText,
128
+ logoDestination = _this$props.logoDestination,
129
+ loggedIn = _this$props.loggedIn,
130
+ avatar = _this$props.avatar,
131
+ username = _this$props.username,
132
+ stickyOnMobile = _this$props.stickyOnMobile,
133
+ intl = _this$props.intl,
134
+ mainMenu = _this$props.mainMenu,
135
+ userMenu = _this$props.userMenu,
136
+ loggedOutItems = _this$props.loggedOutItems;
136
137
  var logoProps = {
137
138
  src: logo,
138
139
  alt: logoAltText,
@@ -167,7 +168,7 @@ var MobileHeader = /*#__PURE__*/function (_React$Component) {
167
168
  tag: "nav",
168
169
  "aria-label": intl.formatMessage(messages['header.label.main.nav']),
169
170
  className: "nav flex-column pin-left pin-right border-top shadow py-2"
170
- }, this.renderMainMenu()))) : null, /*#__PURE__*/React.createElement("div", {
171
+ }, this.renderMainMenu(), this.renderSecondaryMenu()))) : null, /*#__PURE__*/React.createElement("div", {
171
172
  className: "w-100 d-flex ".concat(logoClasses)
172
173
  }, logoDestination === null ? /*#__PURE__*/React.createElement(Logo, {
173
174
  className: "logo",
@@ -198,16 +199,18 @@ var MobileHeader = /*#__PURE__*/function (_React$Component) {
198
199
  }, loggedIn ? this.renderUserMenuItems() : this.renderLoggedOutItems()))) : null);
199
200
  }
200
201
  }]);
201
-
202
- return MobileHeader;
203
202
  }(React.Component);
204
-
205
203
  MobileHeader.propTypes = {
206
204
  mainMenu: PropTypes.oneOfType([PropTypes.node, PropTypes.array]),
205
+ secondaryMenu: PropTypes.oneOfType([PropTypes.node, PropTypes.array]),
207
206
  userMenu: PropTypes.arrayOf(PropTypes.shape({
208
- type: PropTypes.oneOf(['item', 'menu']),
209
- href: PropTypes.string,
210
- content: PropTypes.string
207
+ heading: PropTypes.string,
208
+ items: PropTypes.arrayOf(PropTypes.shape({
209
+ type: PropTypes.oneOf(['item', 'menu']),
210
+ href: PropTypes.string,
211
+ content: PropTypes.string,
212
+ isActive: PropTypes.bool
213
+ }))
211
214
  })),
212
215
  loggedOutItems: PropTypes.arrayOf(PropTypes.shape({
213
216
  type: PropTypes.oneOf(['item', 'menu']),
@@ -226,6 +229,7 @@ MobileHeader.propTypes = {
226
229
  };
227
230
  MobileHeader.defaultProps = {
228
231
  mainMenu: [],
232
+ secondaryMenu: [],
229
233
  userMenu: [],
230
234
  loggedOutItems: [],
231
235
  logo: null,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/MobileHeader.jsx"],"names":["React","PropTypes","injectIntl","intlShape","getConfig","Menu","MenuTrigger","MenuContent","Avatar","LinkedLogo","Logo","messages","MenuIcon","MobileHeader","props","mainMenu","Array","isArray","map","menuItem","type","href","content","submenuContent","userMenu","loggedOutItems","i","arr","length","logo","logoAltText","logoDestination","loggedIn","avatar","username","stickyOnMobile","intl","logoProps","src","alt","stickyClassName","logoClasses","AUTHN_MINIMAL_HEADER","formatMessage","width","height","renderMainMenu","renderUserMenuItems","renderLoggedOutItems","Component","propTypes","oneOfType","node","array","arrayOf","shape","oneOf","string","bool","isRequired","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { injectIntl, intlShape } from '@edx/frontend-platform/i18n';\nimport { getConfig } from '@edx/frontend-platform';\n\n// Local Components\nimport { Menu, MenuTrigger, MenuContent } from './Menu';\nimport Avatar from './Avatar';\nimport { LinkedLogo, Logo } from './Logo';\n\n// i18n\nimport messages from './Header.messages';\n\n// Assets\nimport { MenuIcon } from './Icons';\n\nclass MobileHeader extends React.Component {\n constructor(props) { // eslint-disable-line no-useless-constructor\n super(props);\n }\n\n renderMainMenu() {\n const { mainMenu } = this.props;\n\n // Nodes are accepted as a prop\n if (!Array.isArray(mainMenu)) {\n return mainMenu;\n }\n\n return mainMenu.map((menuItem) => {\n const {\n type,\n href,\n content,\n submenuContent,\n } = menuItem;\n\n if (type === 'item') {\n return (\n <a key={`${type}-${content}`} className=\"nav-link\" href={href}>\n {content}\n </a>\n );\n }\n\n return (\n <Menu key={`${type}-${content}`} tag=\"div\" className=\"nav-item\">\n <MenuTrigger tag=\"a\" role=\"button\" tabIndex=\"0\" className=\"nav-link\">\n {content}\n </MenuTrigger>\n <MenuContent className=\"position-static pin-left pin-right py-2\">\n {submenuContent}\n </MenuContent>\n </Menu>\n );\n });\n }\n\n renderUserMenuItems() {\n const { userMenu } = this.props;\n\n return userMenu.map(({ type, href, content }) => (\n <li className=\"nav-item\" key={`${type}-${content}`}>\n <a className=\"nav-link\" href={href}>{content}</a>\n </li>\n ));\n }\n\n renderLoggedOutItems() {\n const { loggedOutItems } = this.props;\n\n return loggedOutItems.map(({ type, href, content }, i, arr) => (\n <li className=\"nav-item px-3 my-2\" key={`${type}-${content}`}>\n <a\n className={i < arr.length - 1 ? 'btn btn-block btn-outline-primary' : 'btn btn-block btn-primary'}\n href={href}\n >\n {content}\n </a>\n </li>\n ));\n }\n\n render() {\n const {\n logo,\n logoAltText,\n logoDestination,\n loggedIn,\n avatar,\n username,\n stickyOnMobile,\n intl,\n mainMenu,\n userMenu,\n loggedOutItems,\n } = this.props;\n const logoProps = { src: logo, alt: logoAltText, href: logoDestination };\n const stickyClassName = stickyOnMobile ? 'sticky-top' : '';\n const logoClasses = getConfig().AUTHN_MINIMAL_HEADER ? 'justify-content-left pl-3' : 'justify-content-center';\n\n return (\n <header\n aria-label={intl.formatMessage(messages['header.label.main.header'])}\n className={`site-header-mobile d-flex justify-content-between align-items-center shadow ${stickyClassName}`}\n >\n <a className=\"nav-skip sr-only sr-only-focusable\" href=\"#main\">{intl.formatMessage(messages['header.label.skip.nav'])}</a>\n {mainMenu.length > 0 ? (\n <div className=\"w-100 d-flex justify-content-start\">\n\n <Menu className=\"position-static\">\n <MenuTrigger\n tag=\"button\"\n className=\"icon-button\"\n aria-label={intl.formatMessage(messages['header.label.main.menu'])}\n title={intl.formatMessage(messages['header.label.main.menu'])}\n >\n <MenuIcon role=\"img\" aria-hidden focusable=\"false\" style={{ width: '1.5rem', height: '1.5rem' }} />\n </MenuTrigger>\n <MenuContent\n tag=\"nav\"\n aria-label={intl.formatMessage(messages['header.label.main.nav'])}\n className=\"nav flex-column pin-left pin-right border-top shadow py-2\"\n >\n {this.renderMainMenu()}\n </MenuContent>\n </Menu>\n </div>\n ) : null}\n <div className={`w-100 d-flex ${logoClasses}`}>\n { logoDestination === null ? <Logo className=\"logo\" src={logo} alt={logoAltText} /> : <LinkedLogo className=\"logo\" {...logoProps} itemType=\"http://schema.org/Organization\" />}\n </div>\n {userMenu.length > 0 || loggedOutItems.length > 0 ? (\n <div className=\"w-100 d-flex justify-content-end align-items-center\">\n <Menu tag=\"nav\" aria-label={intl.formatMessage(messages['header.label.secondary.nav'])} className=\"position-static\">\n <MenuTrigger\n tag=\"button\"\n className=\"icon-button\"\n aria-label={intl.formatMessage(messages['header.label.account.menu'])}\n title={intl.formatMessage(messages['header.label.account.menu'])}\n >\n <Avatar size=\"1.5rem\" src={avatar} alt={username} />\n </MenuTrigger>\n <MenuContent tag=\"ul\" className=\"nav flex-column pin-left pin-right border-top shadow py-2\">\n {loggedIn ? this.renderUserMenuItems() : this.renderLoggedOutItems()}\n </MenuContent>\n </Menu>\n </div>\n ) : null}\n </header>\n );\n }\n}\n\nMobileHeader.propTypes = {\n mainMenu: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.array,\n ]),\n\n userMenu: PropTypes.arrayOf(PropTypes.shape({\n type: PropTypes.oneOf(['item', 'menu']),\n href: PropTypes.string,\n content: PropTypes.string,\n })),\n loggedOutItems: PropTypes.arrayOf(PropTypes.shape({\n type: PropTypes.oneOf(['item', 'menu']),\n href: PropTypes.string,\n content: PropTypes.string,\n })),\n logo: PropTypes.string,\n logoAltText: PropTypes.string,\n logoDestination: PropTypes.string,\n avatar: PropTypes.string,\n username: PropTypes.string,\n loggedIn: PropTypes.bool,\n stickyOnMobile: PropTypes.bool,\n\n // i18n\n intl: intlShape.isRequired,\n};\n\nMobileHeader.defaultProps = {\n mainMenu: [],\n userMenu: [],\n loggedOutItems: [],\n logo: null,\n logoAltText: null,\n logoDestination: null,\n avatar: null,\n username: null,\n loggedIn: false,\n stickyOnMobile: true,\n\n};\n\nexport default injectIntl(MobileHeader);\n"],"file":"MobileHeader.js"}
1
+ {"version":3,"file":"MobileHeader.js","names":["React","PropTypes","injectIntl","intlShape","getConfig","Menu","MenuTrigger","MenuContent","Avatar","LinkedLogo","Logo","messages","MenuIcon","MobileHeader","_React$Component","props","_classCallCheck","_callSuper","_inherits","_createClass","key","value","renderMenu","menu","Array","isArray","map","menuItem","type","href","content","submenuContent","disabled","isActive","createElement","concat","className","tag","role","tabIndex","renderMainMenu","mainMenu","renderSecondaryMenu","secondaryMenu","renderUserMenuItems","userMenu","group","items","_ref","renderLoggedOutItems","loggedOutItems","_ref2","i","arr","length","render","_this$props","logo","logoAltText","logoDestination","loggedIn","avatar","username","stickyOnMobile","intl","logoProps","src","alt","stickyClassName","logoClasses","AUTHN_MINIMAL_HEADER","formatMessage","title","focusable","style","width","height","_extends","itemType","size","Component","propTypes","oneOfType","node","array","arrayOf","shape","heading","string","oneOf","bool","isRequired","defaultProps"],"sources":["../src/MobileHeader.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { injectIntl, intlShape } from '@edx/frontend-platform/i18n';\nimport { getConfig } from '@edx/frontend-platform';\n\n// Local Components\nimport { Menu, MenuTrigger, MenuContent } from './Menu';\nimport Avatar from './Avatar';\nimport { LinkedLogo, Logo } from './Logo';\n\n// i18n\nimport messages from './Header.messages';\n\n// Assets\nimport { MenuIcon } from './Icons';\n\nclass MobileHeader extends React.Component {\n constructor(props) { // eslint-disable-line no-useless-constructor\n super(props);\n }\n\n renderMenu(menu) {\n // Nodes are accepted as a prop\n if (!Array.isArray(menu)) {\n return menu;\n }\n\n return menu.map((menuItem) => {\n const {\n type,\n href,\n content,\n submenuContent,\n disabled,\n isActive,\n } = menuItem;\n\n if (type === 'item') {\n return (\n <a\n key={`${type}-${content}`}\n className={`nav-link${disabled ? ' disabled' : ''}${isActive ? ' active' : ''}`}\n href={href}\n >\n {content}\n </a>\n );\n }\n\n return (\n <Menu key={`${type}-${content}`} tag=\"div\" className=\"nav-item\">\n <MenuTrigger tag=\"a\" role=\"button\" tabIndex=\"0\" className=\"nav-link\">\n {content}\n </MenuTrigger>\n <MenuContent className=\"position-static pin-left pin-right py-2\">\n {submenuContent}\n </MenuContent>\n </Menu>\n );\n });\n }\n\n renderMainMenu() {\n const { mainMenu } = this.props;\n return this.renderMenu(mainMenu);\n }\n\n renderSecondaryMenu() {\n const { secondaryMenu } = this.props;\n return this.renderMenu(secondaryMenu);\n }\n\n renderUserMenuItems() {\n const { userMenu } = this.props;\n\n return userMenu.map((group) => (\n group.items.map(({\n type, content, href, disabled, isActive,\n }) => (\n <li className=\"nav-item\" key={`${type}-${content}`}>\n <a\n className={`nav-link${isActive ? ' active' : ''}${disabled ? ' disabled' : ''}`}\n href={href}\n >\n {content}\n </a>\n </li>\n ))\n ));\n }\n\n renderLoggedOutItems() {\n const { loggedOutItems } = this.props;\n\n return loggedOutItems.map(({ type, href, content }, i, arr) => (\n <li className=\"nav-item px-3 my-2\" key={`${type}-${content}`}>\n <a\n className={i < arr.length - 1 ? 'btn btn-block btn-outline-primary' : 'btn btn-block btn-primary'}\n href={href}\n >\n {content}\n </a>\n </li>\n ));\n }\n\n render() {\n const {\n logo,\n logoAltText,\n logoDestination,\n loggedIn,\n avatar,\n username,\n stickyOnMobile,\n intl,\n mainMenu,\n userMenu,\n loggedOutItems,\n } = this.props;\n const logoProps = { src: logo, alt: logoAltText, href: logoDestination };\n const stickyClassName = stickyOnMobile ? 'sticky-top' : '';\n const logoClasses = getConfig().AUTHN_MINIMAL_HEADER ? 'justify-content-left pl-3' : 'justify-content-center';\n\n return (\n <header\n aria-label={intl.formatMessage(messages['header.label.main.header'])}\n className={`site-header-mobile d-flex justify-content-between align-items-center shadow ${stickyClassName}`}\n >\n <a className=\"nav-skip sr-only sr-only-focusable\" href=\"#main\">{intl.formatMessage(messages['header.label.skip.nav'])}</a>\n {mainMenu.length > 0 ? (\n <div className=\"w-100 d-flex justify-content-start\">\n\n <Menu className=\"position-static\">\n <MenuTrigger\n tag=\"button\"\n className=\"icon-button\"\n aria-label={intl.formatMessage(messages['header.label.main.menu'])}\n title={intl.formatMessage(messages['header.label.main.menu'])}\n >\n <MenuIcon role=\"img\" aria-hidden focusable=\"false\" style={{ width: '1.5rem', height: '1.5rem' }} />\n </MenuTrigger>\n <MenuContent\n tag=\"nav\"\n aria-label={intl.formatMessage(messages['header.label.main.nav'])}\n className=\"nav flex-column pin-left pin-right border-top shadow py-2\"\n >\n {this.renderMainMenu()}\n {this.renderSecondaryMenu()}\n </MenuContent>\n </Menu>\n </div>\n ) : null}\n <div className={`w-100 d-flex ${logoClasses}`}>\n { logoDestination === null ? <Logo className=\"logo\" src={logo} alt={logoAltText} /> : <LinkedLogo className=\"logo\" {...logoProps} itemType=\"http://schema.org/Organization\" />}\n </div>\n {userMenu.length > 0 || loggedOutItems.length > 0 ? (\n <div className=\"w-100 d-flex justify-content-end align-items-center\">\n <Menu tag=\"nav\" aria-label={intl.formatMessage(messages['header.label.secondary.nav'])} className=\"position-static\">\n <MenuTrigger\n tag=\"button\"\n className=\"icon-button\"\n aria-label={intl.formatMessage(messages['header.label.account.menu'])}\n title={intl.formatMessage(messages['header.label.account.menu'])}\n >\n <Avatar size=\"1.5rem\" src={avatar} alt={username} />\n </MenuTrigger>\n <MenuContent tag=\"ul\" className=\"nav flex-column pin-left pin-right border-top shadow py-2\">\n {loggedIn ? this.renderUserMenuItems() : this.renderLoggedOutItems()}\n </MenuContent>\n </Menu>\n </div>\n ) : null}\n </header>\n );\n }\n}\n\nMobileHeader.propTypes = {\n mainMenu: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.array,\n ]),\n secondaryMenu: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.array,\n ]),\n userMenu: PropTypes.arrayOf(PropTypes.shape({\n heading: PropTypes.string,\n items: PropTypes.arrayOf(PropTypes.shape({\n type: PropTypes.oneOf(['item', 'menu']),\n href: PropTypes.string,\n content: PropTypes.string,\n isActive: PropTypes.bool,\n })),\n })),\n loggedOutItems: PropTypes.arrayOf(PropTypes.shape({\n type: PropTypes.oneOf(['item', 'menu']),\n href: PropTypes.string,\n content: PropTypes.string,\n })),\n logo: PropTypes.string,\n logoAltText: PropTypes.string,\n logoDestination: PropTypes.string,\n avatar: PropTypes.string,\n username: PropTypes.string,\n loggedIn: PropTypes.bool,\n stickyOnMobile: PropTypes.bool,\n\n // i18n\n intl: intlShape.isRequired,\n};\n\nMobileHeader.defaultProps = {\n mainMenu: [],\n secondaryMenu: [],\n userMenu: [],\n loggedOutItems: [],\n logo: null,\n logoAltText: null,\n logoDestination: null,\n avatar: null,\n username: null,\n loggedIn: false,\n stickyOnMobile: true,\n\n};\n\nexport default injectIntl(MobileHeader);\n"],"mappings":";;;;;;;;;;;;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAClC,SAASC,UAAU,EAAEC,SAAS,QAAQ,6BAA6B;AACnE,SAASC,SAAS,QAAQ,wBAAwB;;AAElD;AACA,SAASC,IAAI,EAAEC,WAAW,EAAEC,WAAW,QAAQ,QAAQ;AACvD,OAAOC,MAAM,MAAM,UAAU;AAC7B,SAASC,UAAU,EAAEC,IAAI,QAAQ,QAAQ;;AAEzC;AACA,OAAOC,QAAQ,MAAM,mBAAmB;;AAExC;AACA,SAASC,QAAQ,QAAQ,SAAS;AAAC,IAE7BC,YAAY,0BAAAC,gBAAA;EAChB,SAAAD,aAAYE,KAAK,EAAE;IAAAC,eAAA,OAAAH,YAAA;IAAE;IAAA,OAAAI,UAAA,OAAAJ,YAAA,GACbE,KAAK;EACb;EAACG,SAAA,CAAAL,YAAA,EAAAC,gBAAA;EAAA,OAAAK,YAAA,CAAAN,YAAA;IAAAO,GAAA;IAAAC,KAAA,EAED,SAAAC,WAAWC,IAAI,EAAE;MACf;MACA,IAAI,CAACC,KAAK,CAACC,OAAO,CAACF,IAAI,CAAC,EAAE;QACxB,OAAOA,IAAI;MACb;MAEA,OAAOA,IAAI,CAACG,GAAG,CAAC,UAACC,QAAQ,EAAK;QAC5B,IACEC,IAAI,GAMFD,QAAQ,CANVC,IAAI;UACJC,IAAI,GAKFF,QAAQ,CALVE,IAAI;UACJC,OAAO,GAILH,QAAQ,CAJVG,OAAO;UACPC,cAAc,GAGZJ,QAAQ,CAHVI,cAAc;UACdC,QAAQ,GAENL,QAAQ,CAFVK,QAAQ;UACRC,QAAQ,GACNN,QAAQ,CADVM,QAAQ;QAGV,IAAIL,IAAI,KAAK,MAAM,EAAE;UACnB,oBACE5B,KAAA,CAAAkC,aAAA;YACEd,GAAG,KAAAe,MAAA,CAAKP,IAAI,OAAAO,MAAA,CAAIL,OAAO,CAAG;YAC1BM,SAAS,aAAAD,MAAA,CAAaH,QAAQ,GAAG,WAAW,GAAG,EAAE,EAAAG,MAAA,CAAGF,QAAQ,GAAG,SAAS,GAAG,EAAE,CAAG;YAChFJ,IAAI,EAAEA;UAAK,GAEVC,OACA,CAAC;QAER;QAEA,oBACE9B,KAAA,CAAAkC,aAAA,CAAC7B,IAAI;UAACe,GAAG,KAAAe,MAAA,CAAKP,IAAI,OAAAO,MAAA,CAAIL,OAAO,CAAG;UAACO,GAAG,EAAC,KAAK;UAACD,SAAS,EAAC;QAAU,gBAC7DpC,KAAA,CAAAkC,aAAA,CAAC5B,WAAW;UAAC+B,GAAG,EAAC,GAAG;UAACC,IAAI,EAAC,QAAQ;UAACC,QAAQ,EAAC,GAAG;UAACH,SAAS,EAAC;QAAU,GACjEN,OACU,CAAC,eACd9B,KAAA,CAAAkC,aAAA,CAAC3B,WAAW;UAAC6B,SAAS,EAAC;QAAyC,GAC7DL,cACU,CACT,CAAC;MAEX,CAAC,CAAC;IACJ;EAAC;IAAAX,GAAA;IAAAC,KAAA,EAED,SAAAmB,eAAA,EAAiB;MACf,IAAQC,QAAQ,GAAK,IAAI,CAAC1B,KAAK,CAAvB0B,QAAQ;MAChB,OAAO,IAAI,CAACnB,UAAU,CAACmB,QAAQ,CAAC;IAClC;EAAC;IAAArB,GAAA;IAAAC,KAAA,EAED,SAAAqB,oBAAA,EAAsB;MACpB,IAAQC,aAAa,GAAK,IAAI,CAAC5B,KAAK,CAA5B4B,aAAa;MACrB,OAAO,IAAI,CAACrB,UAAU,CAACqB,aAAa,CAAC;IACvC;EAAC;IAAAvB,GAAA;IAAAC,KAAA,EAED,SAAAuB,oBAAA,EAAsB;MACpB,IAAQC,QAAQ,GAAK,IAAI,CAAC9B,KAAK,CAAvB8B,QAAQ;MAEhB,OAAOA,QAAQ,CAACnB,GAAG,CAAC,UAACoB,KAAK;QAAA,OACxBA,KAAK,CAACC,KAAK,CAACrB,GAAG,CAAC,UAAAsB,IAAA;UAAA,IACdpB,IAAI,GAAAoB,IAAA,CAAJpB,IAAI;YAAEE,OAAO,GAAAkB,IAAA,CAAPlB,OAAO;YAAED,IAAI,GAAAmB,IAAA,CAAJnB,IAAI;YAAEG,QAAQ,GAAAgB,IAAA,CAARhB,QAAQ;YAAEC,QAAQ,GAAAe,IAAA,CAARf,QAAQ;UAAA,oBAEvCjC,KAAA,CAAAkC,aAAA;YAAIE,SAAS,EAAC,UAAU;YAAChB,GAAG,KAAAe,MAAA,CAAKP,IAAI,OAAAO,MAAA,CAAIL,OAAO;UAAG,gBACjD9B,KAAA,CAAAkC,aAAA;YACEE,SAAS,aAAAD,MAAA,CAAaF,QAAQ,GAAG,SAAS,GAAG,EAAE,EAAAE,MAAA,CAAGH,QAAQ,GAAG,WAAW,GAAG,EAAE,CAAG;YAChFH,IAAI,EAAEA;UAAK,GAEVC,OACA,CACD,CAAC;QAAA,CACN,CAAC;MAAA,CACH,CAAC;IACJ;EAAC;IAAAV,GAAA;IAAAC,KAAA,EAED,SAAA4B,qBAAA,EAAuB;MACrB,IAAQC,cAAc,GAAK,IAAI,CAACnC,KAAK,CAA7BmC,cAAc;MAEtB,OAAOA,cAAc,CAACxB,GAAG,CAAC,UAAAyB,KAAA,EAA0BC,CAAC,EAAEC,GAAG;QAAA,IAA7BzB,IAAI,GAAAuB,KAAA,CAAJvB,IAAI;UAAEC,IAAI,GAAAsB,KAAA,CAAJtB,IAAI;UAAEC,OAAO,GAAAqB,KAAA,CAAPrB,OAAO;QAAA,oBAC9C9B,KAAA,CAAAkC,aAAA;UAAIE,SAAS,EAAC,oBAAoB;UAAChB,GAAG,KAAAe,MAAA,CAAKP,IAAI,OAAAO,MAAA,CAAIL,OAAO;QAAG,gBAC3D9B,KAAA,CAAAkC,aAAA;UACEE,SAAS,EAAEgB,CAAC,GAAGC,GAAG,CAACC,MAAM,GAAG,CAAC,GAAG,mCAAmC,GAAG,2BAA4B;UAClGzB,IAAI,EAAEA;QAAK,GAEVC,OACA,CACD,CAAC;MAAA,CACN,CAAC;IACJ;EAAC;IAAAV,GAAA;IAAAC,KAAA,EAED,SAAAkC,OAAA,EAAS;MACP,IAAAC,WAAA,GAYI,IAAI,CAACzC,KAAK;QAXZ0C,IAAI,GAAAD,WAAA,CAAJC,IAAI;QACJC,WAAW,GAAAF,WAAA,CAAXE,WAAW;QACXC,eAAe,GAAAH,WAAA,CAAfG,eAAe;QACfC,QAAQ,GAAAJ,WAAA,CAARI,QAAQ;QACRC,MAAM,GAAAL,WAAA,CAANK,MAAM;QACNC,QAAQ,GAAAN,WAAA,CAARM,QAAQ;QACRC,cAAc,GAAAP,WAAA,CAAdO,cAAc;QACdC,IAAI,GAAAR,WAAA,CAAJQ,IAAI;QACJvB,QAAQ,GAAAe,WAAA,CAARf,QAAQ;QACRI,QAAQ,GAAAW,WAAA,CAARX,QAAQ;QACRK,cAAc,GAAAM,WAAA,CAAdN,cAAc;MAEhB,IAAMe,SAAS,GAAG;QAAEC,GAAG,EAAET,IAAI;QAAEU,GAAG,EAAET,WAAW;QAAE7B,IAAI,EAAE8B;MAAgB,CAAC;MACxE,IAAMS,eAAe,GAAGL,cAAc,GAAG,YAAY,GAAG,EAAE;MAC1D,IAAMM,WAAW,GAAGjE,SAAS,CAAC,CAAC,CAACkE,oBAAoB,GAAG,2BAA2B,GAAG,wBAAwB;MAE7G,oBACEtE,KAAA,CAAAkC,aAAA;QACE,cAAY8B,IAAI,CAACO,aAAa,CAAC5D,QAAQ,CAAC,0BAA0B,CAAC,CAAE;QACrEyB,SAAS,iFAAAD,MAAA,CAAiFiC,eAAe;MAAG,gBAE5GpE,KAAA,CAAAkC,aAAA;QAAGE,SAAS,EAAC,oCAAoC;QAACP,IAAI,EAAC;MAAO,GAAEmC,IAAI,CAACO,aAAa,CAAC5D,QAAQ,CAAC,uBAAuB,CAAC,CAAK,CAAC,EACzH8B,QAAQ,CAACa,MAAM,GAAG,CAAC,gBAClBtD,KAAA,CAAAkC,aAAA;QAAKE,SAAS,EAAC;MAAoC,gBAEjDpC,KAAA,CAAAkC,aAAA,CAAC7B,IAAI;QAAC+B,SAAS,EAAC;MAAiB,gBAC/BpC,KAAA,CAAAkC,aAAA,CAAC5B,WAAW;QACV+B,GAAG,EAAC,QAAQ;QACZD,SAAS,EAAC,aAAa;QACvB,cAAY4B,IAAI,CAACO,aAAa,CAAC5D,QAAQ,CAAC,wBAAwB,CAAC,CAAE;QACnE6D,KAAK,EAAER,IAAI,CAACO,aAAa,CAAC5D,QAAQ,CAAC,wBAAwB,CAAC;MAAE,gBAE9DX,KAAA,CAAAkC,aAAA,CAACtB,QAAQ;QAAC0B,IAAI,EAAC,KAAK;QAAC,mBAAW;QAACmC,SAAS,EAAC,OAAO;QAACC,KAAK,EAAE;UAAEC,KAAK,EAAE,QAAQ;UAAEC,MAAM,EAAE;QAAS;MAAE,CAAE,CACvF,CAAC,eACd5E,KAAA,CAAAkC,aAAA,CAAC3B,WAAW;QACV8B,GAAG,EAAC,KAAK;QACT,cAAY2B,IAAI,CAACO,aAAa,CAAC5D,QAAQ,CAAC,uBAAuB,CAAC,CAAE;QAClEyB,SAAS,EAAC;MAA2D,GAEpE,IAAI,CAACI,cAAc,CAAC,CAAC,EACrB,IAAI,CAACE,mBAAmB,CAAC,CACf,CACT,CACH,CAAC,GACJ,IAAI,eACR1C,KAAA,CAAAkC,aAAA;QAAKE,SAAS,kBAAAD,MAAA,CAAkBkC,WAAW;MAAG,GAC1CV,eAAe,KAAK,IAAI,gBAAG3D,KAAA,CAAAkC,aAAA,CAACxB,IAAI;QAAC0B,SAAS,EAAC,MAAM;QAAC8B,GAAG,EAAET,IAAK;QAACU,GAAG,EAAET;MAAY,CAAE,CAAC,gBAAG1D,KAAA,CAAAkC,aAAA,CAACzB,UAAU,EAAAoE,QAAA;QAACzC,SAAS,EAAC;MAAM,GAAK6B,SAAS;QAAEa,QAAQ,EAAC;MAAgC,EAAE,CAC1K,CAAC,EACLjC,QAAQ,CAACS,MAAM,GAAG,CAAC,IAAIJ,cAAc,CAACI,MAAM,GAAG,CAAC,gBAC/CtD,KAAA,CAAAkC,aAAA;QAAKE,SAAS,EAAC;MAAqD,gBAClEpC,KAAA,CAAAkC,aAAA,CAAC7B,IAAI;QAACgC,GAAG,EAAC,KAAK;QAAC,cAAY2B,IAAI,CAACO,aAAa,CAAC5D,QAAQ,CAAC,4BAA4B,CAAC,CAAE;QAACyB,SAAS,EAAC;MAAiB,gBACjHpC,KAAA,CAAAkC,aAAA,CAAC5B,WAAW;QACV+B,GAAG,EAAC,QAAQ;QACZD,SAAS,EAAC,aAAa;QACvB,cAAY4B,IAAI,CAACO,aAAa,CAAC5D,QAAQ,CAAC,2BAA2B,CAAC,CAAE;QACtE6D,KAAK,EAAER,IAAI,CAACO,aAAa,CAAC5D,QAAQ,CAAC,2BAA2B,CAAC;MAAE,gBAEjEX,KAAA,CAAAkC,aAAA,CAAC1B,MAAM;QAACuE,IAAI,EAAC,QAAQ;QAACb,GAAG,EAAEL,MAAO;QAACM,GAAG,EAAEL;MAAS,CAAE,CACxC,CAAC,eACd9D,KAAA,CAAAkC,aAAA,CAAC3B,WAAW;QAAC8B,GAAG,EAAC,IAAI;QAACD,SAAS,EAAC;MAA2D,GACxFwB,QAAQ,GAAG,IAAI,CAAChB,mBAAmB,CAAC,CAAC,GAAG,IAAI,CAACK,oBAAoB,CAAC,CACxD,CACT,CACH,CAAC,GACJ,IACE,CAAC;IAEb;EAAC;AAAA,EA/JwBjD,KAAK,CAACgF,SAAS;AAkK1CnE,YAAY,CAACoE,SAAS,GAAG;EACvBxC,QAAQ,EAAExC,SAAS,CAACiF,SAAS,CAAC,CAC5BjF,SAAS,CAACkF,IAAI,EACdlF,SAAS,CAACmF,KAAK,CAChB,CAAC;EACFzC,aAAa,EAAE1C,SAAS,CAACiF,SAAS,CAAC,CACjCjF,SAAS,CAACkF,IAAI,EACdlF,SAAS,CAACmF,KAAK,CAChB,CAAC;EACFvC,QAAQ,EAAE5C,SAAS,CAACoF,OAAO,CAACpF,SAAS,CAACqF,KAAK,CAAC;IAC1CC,OAAO,EAAEtF,SAAS,CAACuF,MAAM;IACzBzC,KAAK,EAAE9C,SAAS,CAACoF,OAAO,CAACpF,SAAS,CAACqF,KAAK,CAAC;MACvC1D,IAAI,EAAE3B,SAAS,CAACwF,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;MACvC5D,IAAI,EAAE5B,SAAS,CAACuF,MAAM;MACtB1D,OAAO,EAAE7B,SAAS,CAACuF,MAAM;MACzBvD,QAAQ,EAAEhC,SAAS,CAACyF;IACtB,CAAC,CAAC;EACJ,CAAC,CAAC,CAAC;EACHxC,cAAc,EAAEjD,SAAS,CAACoF,OAAO,CAACpF,SAAS,CAACqF,KAAK,CAAC;IAChD1D,IAAI,EAAE3B,SAAS,CAACwF,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC5D,IAAI,EAAE5B,SAAS,CAACuF,MAAM;IACtB1D,OAAO,EAAE7B,SAAS,CAACuF;EACrB,CAAC,CAAC,CAAC;EACH/B,IAAI,EAAExD,SAAS,CAACuF,MAAM;EACtB9B,WAAW,EAAEzD,SAAS,CAACuF,MAAM;EAC7B7B,eAAe,EAAE1D,SAAS,CAACuF,MAAM;EACjC3B,MAAM,EAAE5D,SAAS,CAACuF,MAAM;EACxB1B,QAAQ,EAAE7D,SAAS,CAACuF,MAAM;EAC1B5B,QAAQ,EAAE3D,SAAS,CAACyF,IAAI;EACxB3B,cAAc,EAAE9D,SAAS,CAACyF,IAAI;EAE9B;EACA1B,IAAI,EAAE7D,SAAS,CAACwF;AAClB,CAAC;AAED9E,YAAY,CAAC+E,YAAY,GAAG;EAC1BnD,QAAQ,EAAE,EAAE;EACZE,aAAa,EAAE,EAAE;EACjBE,QAAQ,EAAE,EAAE;EACZK,cAAc,EAAE,EAAE;EAClBO,IAAI,EAAE,IAAI;EACVC,WAAW,EAAE,IAAI;EACjBC,eAAe,EAAE,IAAI;EACrBE,MAAM,EAAE,IAAI;EACZC,QAAQ,EAAE,IAAI;EACdF,QAAQ,EAAE,KAAK;EACfG,cAAc,EAAE;AAElB,CAAC;AAED,eAAe7D,UAAU,CAACW,YAAY,CAAC","ignoreList":[]}
@@ -28,7 +28,7 @@ exports[`<Header /> renders correctly for anonymous desktop 1`] = `
28
28
  </a>
29
29
  <nav
30
30
  aria-label="Main"
31
- className="nav main-nav"
31
+ className="nav main-nav mr-auto"
32
32
  >
33
33
  <a
34
34
  className="nav-link"
@@ -39,7 +39,7 @@ exports[`<Header /> renders correctly for anonymous desktop 1`] = `
39
39
  </nav>
40
40
  <nav
41
41
  aria-label="Secondary"
42
- className="nav secondary-menu-container align-items-center ml-auto"
42
+ className="nav secondary-menu-container align-items-center"
43
43
  >
44
44
  <a
45
45
  className="btn mr-2 btn-link"
@@ -93,7 +93,7 @@ exports[`<Header /> renders correctly for anonymous mobile 1`] = `
93
93
  height="24px"
94
94
  role="img"
95
95
  style={
96
- Object {
96
+ {
97
97
  "height": "1.5rem",
98
98
  "width": "1.5rem",
99
99
  }
@@ -163,7 +163,7 @@ exports[`<Header /> renders correctly for anonymous mobile 1`] = `
163
163
  <span
164
164
  className="avatar overflow-hidden d-inline-flex rounded-circle null"
165
165
  style={
166
- Object {
166
+ {
167
167
  "height": "1.5rem",
168
168
  "width": "1.5rem",
169
169
  }
@@ -175,7 +175,7 @@ exports[`<Header /> renders correctly for anonymous mobile 1`] = `
175
175
  height="24px"
176
176
  role="img"
177
177
  style={
178
- Object {
178
+ {
179
179
  "height": "1.5rem",
180
180
  "width": "1.5rem",
181
181
  }
@@ -224,7 +224,7 @@ exports[`<Header /> renders correctly for authenticated desktop 1`] = `
224
224
  </a>
225
225
  <nav
226
226
  aria-label="Main"
227
- className="nav main-nav"
227
+ className="nav main-nav mr-auto"
228
228
  >
229
229
  <a
230
230
  className="nav-link"
@@ -235,7 +235,7 @@ exports[`<Header /> renders correctly for authenticated desktop 1`] = `
235
235
  </nav>
236
236
  <nav
237
237
  aria-label="Secondary"
238
- className="nav secondary-menu-container align-items-center ml-auto"
238
+ className="nav secondary-menu-container align-items-center"
239
239
  >
240
240
  <div
241
241
  className="menu null"
@@ -253,7 +253,7 @@ exports[`<Header /> renders correctly for authenticated desktop 1`] = `
253
253
  <span
254
254
  className="avatar overflow-hidden d-inline-flex rounded-circle mr-2"
255
255
  style={
256
- Object {
256
+ {
257
257
  "height": "1.5em",
258
258
  "width": "1.5em",
259
259
  }
@@ -265,7 +265,7 @@ exports[`<Header /> renders correctly for authenticated desktop 1`] = `
265
265
  height="24px"
266
266
  role="img"
267
267
  style={
268
- Object {
268
+ {
269
269
  "height": "1.5em",
270
270
  "width": "1.5em",
271
271
  }
@@ -339,7 +339,7 @@ exports[`<Header /> renders correctly for authenticated mobile 1`] = `
339
339
  height="24px"
340
340
  role="img"
341
341
  style={
342
- Object {
342
+ {
343
343
  "height": "1.5rem",
344
344
  "width": "1.5rem",
345
345
  }
@@ -409,7 +409,7 @@ exports[`<Header /> renders correctly for authenticated mobile 1`] = `
409
409
  <span
410
410
  className="avatar overflow-hidden d-inline-flex rounded-circle null"
411
411
  style={
412
- Object {
412
+ {
413
413
  "height": "1.5rem",
414
414
  "width": "1.5rem",
415
415
  }
@@ -421,7 +421,7 @@ exports[`<Header /> renders correctly for authenticated mobile 1`] = `
421
421
  height="24px"
422
422
  role="img"
423
423
  style={
424
- Object {
424
+ {
425
425
  "height": "1.5rem",
426
426
  "width": "1.5rem",
427
427
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/generic/messages.js"],"names":["defineMessages","messages","registerSentenceCase","id","defaultMessage","description","signInSentenceCase"],"mappings":"AAAA,SAASA,cAAT,QAA+B,6BAA/B;AAEA,IAAMC,QAAQ,GAAGD,cAAc,CAAC;AAC9BE,EAAAA,oBAAoB,EAAE;AACpBC,IAAAA,EAAE,EAAE,+BADgB;AAEpBC,IAAAA,cAAc,EAAE,UAFI;AAGpBC,IAAAA,WAAW,EAAE;AAHO,GADQ;AAM9BC,EAAAA,kBAAkB,EAAE;AAClBH,IAAAA,EAAE,EAAE,6BADc;AAElBC,IAAAA,cAAc,EAAE,SAFE;AAGlBC,IAAAA,WAAW,EAAE;AAHK;AANU,CAAD,CAA/B;AAaA,eAAeJ,QAAf","sourcesContent":["import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n registerSentenceCase: {\n id: 'general.register.sentenceCase',\n defaultMessage: 'Register',\n description: 'Text in a button, prompting the user to register.',\n },\n signInSentenceCase: {\n id: 'general.signIn.sentenceCase',\n defaultMessage: 'Sign in',\n description: 'Text in a button, prompting the user to log in.',\n },\n});\n\nexport default messages;\n"],"file":"messages.js"}
1
+ {"version":3,"file":"messages.js","names":["defineMessages","messages","registerSentenceCase","id","defaultMessage","description","signInSentenceCase"],"sources":["../../src/generic/messages.js"],"sourcesContent":["import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n registerSentenceCase: {\n id: 'general.register.sentenceCase',\n defaultMessage: 'Register',\n description: 'Text in a button, prompting the user to register.',\n },\n signInSentenceCase: {\n id: 'general.signIn.sentenceCase',\n defaultMessage: 'Sign in',\n description: 'Text in a button, prompting the user to log in.',\n },\n});\n\nexport default messages;\n"],"mappings":"AAAA,SAASA,cAAc,QAAQ,6BAA6B;AAE5D,IAAMC,QAAQ,GAAGD,cAAc,CAAC;EAC9BE,oBAAoB,EAAE;IACpBC,EAAE,EAAE,+BAA+B;IACnCC,cAAc,EAAE,UAAU;IAC1BC,WAAW,EAAE;EACf,CAAC;EACDC,kBAAkB,EAAE;IAClBH,EAAE,EAAE,6BAA6B;IACjCC,cAAc,EAAE,SAAS;IACzBC,WAAW,EAAE;EACf;AACF,CAAC,CAAC;AAEF,eAAeJ,QAAQ","ignoreList":[]}
@@ -1,31 +1,2 @@
1
- import arMessages from './messages/ar.json';
2
- import caMessages from './messages/ca.json';
3
- import heMessages from './messages/he.json';
4
- import idMessages from './messages/id.json';
5
- import plMessages from './messages/pl.json';
6
- import ruMessages from './messages/ru.json';
7
- import thMessages from './messages/th.json';
8
- import ukMessages from './messages/uk.json'; // no need to import en messages-- they are in the defaultMessage field
9
-
10
- import es419Messages from './messages/es_419.json';
11
- import frMessages from './messages/fr.json';
12
- import kokrMessages from './messages/ko_KR.json';
13
- import ptbrMessages from './messages/pt_BR.json';
14
- import zhcnMessages from './messages/zh_CN.json';
15
- var messages = {
16
- ar: arMessages,
17
- ca: caMessages,
18
- he: heMessages,
19
- id: idMessages,
20
- pl: plMessages,
21
- ru: ruMessages,
22
- th: thMessages,
23
- uk: ukMessages,
24
- 'es-419': es419Messages,
25
- fr: frMessages,
26
- 'zh-cn': zhcnMessages,
27
- 'ko-kr': kokrMessages,
28
- 'pt-br': ptbrMessages
29
- };
30
- export default messages;
1
+ export default {};
31
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/i18n/index.js"],"names":["arMessages","caMessages","heMessages","idMessages","plMessages","ruMessages","thMessages","ukMessages","es419Messages","frMessages","kokrMessages","ptbrMessages","zhcnMessages","messages","ar","ca","he","id","pl","ru","th","uk","fr"],"mappings":"AAAA,OAAOA,UAAP,MAAuB,oBAAvB;AAEA,OAAOC,UAAP,MAAuB,oBAAvB;AACA,OAAOC,UAAP,MAAuB,oBAAvB;AACA,OAAOC,UAAP,MAAuB,oBAAvB;AACA,OAAOC,UAAP,MAAuB,oBAAvB;AACA,OAAOC,UAAP,MAAuB,oBAAvB;AACA,OAAOC,UAAP,MAAuB,oBAAvB;AACA,OAAOC,UAAP,MAAuB,oBAAvB,C,CAEA;;AACA,OAAOC,aAAP,MAA0B,wBAA1B;AACA,OAAOC,UAAP,MAAuB,oBAAvB;AACA,OAAOC,YAAP,MAAyB,uBAAzB;AACA,OAAOC,YAAP,MAAyB,uBAAzB;AACA,OAAOC,YAAP,MAAyB,uBAAzB;AAEA,IAAMC,QAAQ,GAAG;AACfC,EAAAA,EAAE,EAAEd,UADW;AAEfe,EAAAA,EAAE,EAAEd,UAFW;AAGfe,EAAAA,EAAE,EAAEd,UAHW;AAIfe,EAAAA,EAAE,EAAEd,UAJW;AAKfe,EAAAA,EAAE,EAAEd,UALW;AAMfe,EAAAA,EAAE,EAAEd,UANW;AAOfe,EAAAA,EAAE,EAAEd,UAPW;AAQfe,EAAAA,EAAE,EAAEd,UARW;AASf,YAAUC,aATK;AAUfc,EAAAA,EAAE,EAAEb,UAVW;AAWf,WAASG,YAXM;AAYf,WAASF,YAZM;AAaf,WAASC;AAbM,CAAjB;AAgBA,eAAeE,QAAf","sourcesContent":["import arMessages from './messages/ar.json';\n\nimport caMessages from './messages/ca.json';\nimport heMessages from './messages/he.json';\nimport idMessages from './messages/id.json';\nimport plMessages from './messages/pl.json';\nimport ruMessages from './messages/ru.json';\nimport thMessages from './messages/th.json';\nimport ukMessages from './messages/uk.json';\n\n// no need to import en messages-- they are in the defaultMessage field\nimport es419Messages from './messages/es_419.json';\nimport frMessages from './messages/fr.json';\nimport kokrMessages from './messages/ko_KR.json';\nimport ptbrMessages from './messages/pt_BR.json';\nimport zhcnMessages from './messages/zh_CN.json';\n\nconst messages = {\n ar: arMessages,\n ca: caMessages,\n he: heMessages,\n id: idMessages,\n pl: plMessages,\n ru: ruMessages,\n th: thMessages,\n uk: ukMessages,\n 'es-419': es419Messages,\n fr: frMessages,\n 'zh-cn': zhcnMessages,\n 'ko-kr': kokrMessages,\n 'pt-br': ptbrMessages,\n};\n\nexport default messages;\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/i18n/index.js"],"sourcesContent":["export default {};\n"],"mappings":"AAAA,eAAe,CAAC,CAAC","ignoreList":[]}
package/dist/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import Header from './Header';
2
2
  import LearningHeader from './learning-header/LearningHeader';
3
3
  import messages from './i18n/index';
4
- export { LearningHeader, messages };
4
+ import StudioHeader from './studio-header';
5
+ export { LearningHeader, messages, StudioHeader };
5
6
  export default Header;
6
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.jsx"],"names":["Header","LearningHeader","messages"],"mappings":"AAAA,OAAOA,MAAP,MAAmB,UAAnB;AACA,OAAOC,cAAP,MAA2B,kCAA3B;AACA,OAAOC,QAAP,MAAqB,cAArB;AAEA,SAASD,cAAT,EAAyBC,QAAzB;AAEA,eAAeF,MAAf","sourcesContent":["import Header from './Header';\nimport LearningHeader from './learning-header/LearningHeader';\nimport messages from './i18n/index';\n\nexport { LearningHeader, messages };\n\nexport default Header;\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["Header","LearningHeader","messages","StudioHeader"],"sources":["../src/index.jsx"],"sourcesContent":["import Header from './Header';\nimport LearningHeader from './learning-header/LearningHeader';\nimport messages from './i18n/index';\nimport StudioHeader from './studio-header';\n\nexport { LearningHeader, messages, StudioHeader };\n\nexport default Header;\n"],"mappings":"AAAA,OAAOA,MAAM,MAAM,UAAU;AAC7B,OAAOC,cAAc,MAAM,kCAAkC;AAC7D,OAAOC,QAAQ,MAAM,cAAc;AACnC,OAAOC,YAAY,MAAM,iBAAiB;AAE1C,SAASF,cAAc,EAAEC,QAAQ,EAAEC,YAAY;AAE/C,eAAeH,MAAM","ignoreList":[]}
package/dist/index.scss CHANGED
@@ -3,6 +3,7 @@ $blue: #007db8;
3
3
  $white: #fff;
4
4
 
5
5
  @import './Menu/menu.scss';
6
+ @import './studio-header/StudioHeader.scss';
6
7
 
7
8
  .dropdown-item a {
8
9
  text-decoration: none;
@@ -27,7 +28,7 @@ $white: #fff;
27
28
 
28
29
  .learning-header {
29
30
  min-width: 0;
30
-
31
+
31
32
  .course-title-lockup {
32
33
  min-width: 0;
33
34
 
@@ -87,6 +88,15 @@ $white: #fff;
87
88
  height: 100%;
88
89
  }
89
90
  }
91
+ .secondary-menu-container {
92
+ .nav-link:hover,
93
+ .nav-link:focus,
94
+ .nav-link.active,
95
+ .expanded .nav-link {
96
+ background: $component-active-bg;
97
+ color: $component-active-color;
98
+ }
99
+ }
90
100
  .main-nav {
91
101
  .nav-link {
92
102
  padding: 1.125rem 1rem;