@nauedu/frontend-component-header 18.2.0 → 20.0.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.
- package/README.rst +6 -0
- package/dist/Header.js +13 -9
- package/dist/Header.js.map +1 -1
- package/dist/Header.test.jsx +3 -0
- package/dist/Icons.js +1 -1
- package/dist/LanguageSelector/data/api.js +13 -5
- package/dist/LanguageSelector/data/api.js.map +1 -1
- package/dist/LanguageSelector/index.js +12 -4
- package/dist/LanguageSelector/index.js.map +1 -1
- package/dist/Logo.js +10 -23
- package/dist/Logo.js.map +1 -1
- package/dist/Menu/Menu.js +11 -11
- package/dist/Menu/Menu.js.map +1 -1
- package/dist/Menu/menu.scss +6 -6
- package/dist/__snapshots__/Header.test.jsx.snap +2 -0
- package/dist/desktop-header/DesktopHeader.js +172 -0
- package/dist/desktop-header/DesktopHeader.js.map +1 -0
- package/dist/desktop-header/DesktopHeaderMainOrSecondaryMenu.js +51 -0
- package/dist/desktop-header/DesktopHeaderMainOrSecondaryMenu.js.map +1 -0
- package/dist/desktop-header/DesktopHeaderUserMenu.js +49 -0
- package/dist/desktop-header/DesktopHeaderUserMenu.js.map +1 -0
- package/dist/desktop-header/DesktopLoggedOutItems.js +22 -0
- package/dist/desktop-header/DesktopLoggedOutItems.js.map +1 -0
- package/dist/desktop-header/DesktopUserMenuToggle.js +25 -0
- package/dist/desktop-header/DesktopUserMenuToggle.js.map +1 -0
- package/dist/frontend-platform.d.ts +41 -0
- package/dist/index.scss +27 -15
- package/dist/learning-header/AnonymousUserMenu.js +11 -8
- package/dist/learning-header/AnonymousUserMenu.js.map +1 -1
- package/dist/learning-header/AuthenticatedUserDropdown.js +32 -24
- package/dist/learning-header/AuthenticatedUserDropdown.js.map +1 -1
- package/dist/learning-header/LearningHeader.js +10 -11
- package/dist/learning-header/LearningHeader.js.map +1 -1
- package/dist/learning-header/LearningHeaderCourseInfo.js +24 -0
- package/dist/learning-header/LearningHeaderCourseInfo.js.map +1 -0
- package/dist/learning-header/LearningHeaderHelpLink.js +13 -0
- package/dist/learning-header/LearningHeaderHelpLink.js.map +1 -0
- package/dist/learning-header/LearningHeaderUserMenuItems.js +20 -0
- package/dist/learning-header/LearningHeaderUserMenuItems.js.map +1 -0
- package/dist/learning-header/LearningLoggedOutButtons.js +24 -0
- package/dist/learning-header/LearningLoggedOutButtons.js.map +1 -0
- package/dist/learning-header/LearningUserMenuToggle.js +26 -0
- package/dist/learning-header/LearningUserMenuToggle.js.map +1 -0
- package/dist/learning-header/data/api.js +12 -4
- package/dist/learning-header/data/api.js.map +1 -1
- package/dist/learning-header/data/api.test.js +92 -95
- package/dist/learning-header/data/api.test.js.map +1 -1
- package/dist/learning-header/messages.js +5 -0
- package/dist/learning-header/messages.js.map +1 -1
- package/dist/mobile-header/MobileHeader.js +197 -0
- package/dist/mobile-header/MobileHeader.js.map +1 -0
- package/dist/mobile-header/MobileHeaderMainMenu.js +46 -0
- package/dist/mobile-header/MobileHeaderMainMenu.js.map +1 -0
- package/dist/mobile-header/MobileHeaderUserMenu.js +38 -0
- package/dist/mobile-header/MobileHeaderUserMenu.js.map +1 -0
- package/dist/mobile-header/MobileLoggedOutItems.js +27 -0
- package/dist/mobile-header/MobileLoggedOutItems.js.map +1 -0
- package/dist/mobile-header/MobileUserMenuToggle.js +19 -0
- package/dist/mobile-header/MobileUserMenuToggle.js.map +1 -0
- package/dist/plugin-slots/CourseInfoSlot/README.md +128 -0
- package/dist/plugin-slots/CourseInfoSlot/images/add_custom_components_before_and_after_course_info.png +0 -0
- package/dist/plugin-slots/CourseInfoSlot/images/replace_course_info_with_custom_component.png +0 -0
- package/dist/plugin-slots/CourseInfoSlot/images/replace_course_title.png +0 -0
- package/dist/plugin-slots/CourseInfoSlot/index.js +32 -0
- package/dist/plugin-slots/CourseInfoSlot/index.js.map +1 -0
- package/dist/plugin-slots/DesktopHeaderSlot/README.md +44 -0
- package/dist/plugin-slots/DesktopHeaderSlot/images/desktop_header_custom_component.png +0 -0
- package/dist/plugin-slots/DesktopHeaderSlot/index.js +16 -0
- package/dist/plugin-slots/DesktopHeaderSlot/index.js.map +1 -0
- package/dist/plugin-slots/DesktopLoggedOutItemsSlot/README.md +137 -0
- package/dist/plugin-slots/DesktopLoggedOutItemsSlot/images/desktop_logged_out_items_custom_component.png +0 -0
- package/dist/plugin-slots/DesktopLoggedOutItemsSlot/images/desktop_logged_out_items_custom_components_before_after.png +0 -0
- package/dist/plugin-slots/DesktopLoggedOutItemsSlot/images/desktop_logged_out_items_modify_items.png +0 -0
- package/dist/plugin-slots/DesktopLoggedOutItemsSlot/index.js +20 -0
- package/dist/plugin-slots/DesktopLoggedOutItemsSlot/index.js.map +1 -0
- package/dist/plugin-slots/DesktopMainMenuSlot/README.md +137 -0
- package/dist/plugin-slots/DesktopMainMenuSlot/images/desktop_main_menu_custom_component.png +0 -0
- package/dist/plugin-slots/DesktopMainMenuSlot/images/desktop_main_menu_custom_components_before_after.png +0 -0
- package/dist/plugin-slots/DesktopMainMenuSlot/images/desktop_main_menu_modify_items.png +0 -0
- package/dist/plugin-slots/DesktopMainMenuSlot/index.js +20 -0
- package/dist/plugin-slots/DesktopMainMenuSlot/index.js.map +1 -0
- package/dist/plugin-slots/DesktopSecondaryMenuSlot/README.md +132 -0
- package/dist/plugin-slots/DesktopSecondaryMenuSlot/images/desktop_secondary_menu_custom_component.png +0 -0
- package/dist/plugin-slots/DesktopSecondaryMenuSlot/images/desktop_secondary_menu_custom_components_before_after.png +0 -0
- package/dist/plugin-slots/DesktopSecondaryMenuSlot/images/desktop_secondary_menu_modify_items.png +0 -0
- package/dist/plugin-slots/DesktopSecondaryMenuSlot/index.js +20 -0
- package/dist/plugin-slots/DesktopSecondaryMenuSlot/index.js.map +1 -0
- package/dist/plugin-slots/DesktopUserMenuSlot/README.md +144 -0
- package/dist/plugin-slots/DesktopUserMenuSlot/images/desktop_user_menu_custom_component.png +0 -0
- package/dist/plugin-slots/DesktopUserMenuSlot/images/desktop_user_menu_custom_components_before_after.png +0 -0
- package/dist/plugin-slots/DesktopUserMenuSlot/images/desktop_user_menu_modify_items.png +0 -0
- package/dist/plugin-slots/DesktopUserMenuSlot/index.js +20 -0
- package/dist/plugin-slots/DesktopUserMenuSlot/index.js.map +1 -0
- package/dist/plugin-slots/DesktopUserMenuToggleSlot/README.md +74 -0
- package/dist/plugin-slots/DesktopUserMenuToggleSlot/images/desktop_user_menu_custom_component.png +0 -0
- package/dist/plugin-slots/DesktopUserMenuToggleSlot/images/desktop_user_menu_modified_toggle.png +0 -0
- package/dist/plugin-slots/DesktopUserMenuToggleSlot/index.js +19 -0
- package/dist/plugin-slots/DesktopUserMenuToggleSlot/index.js.map +1 -0
- package/dist/plugin-slots/LearningHelpSlot/README.md +44 -0
- package/dist/plugin-slots/LearningHelpSlot/images/learning_help_custom_component.png +0 -0
- package/dist/plugin-slots/LearningHelpSlot/index.js +11 -0
- package/dist/plugin-slots/LearningHelpSlot/index.js.map +1 -0
- package/dist/plugin-slots/LearningLoggedOutItemsSlot/README.md +135 -0
- package/dist/plugin-slots/LearningLoggedOutItemsSlot/images/learning_logged_out_items_custom_component.png +0 -0
- package/dist/plugin-slots/LearningLoggedOutItemsSlot/images/learning_logged_out_items_custom_components_before_after.png +0 -0
- package/dist/plugin-slots/LearningLoggedOutItemsSlot/images/learning_logged_out_items_modified_items.png +0 -0
- package/dist/plugin-slots/LearningLoggedOutItemsSlot/index.js +18 -0
- package/dist/plugin-slots/LearningLoggedOutItemsSlot/index.js.map +1 -0
- package/dist/plugin-slots/LearningUserMenuSlot/README.md +133 -0
- package/dist/plugin-slots/LearningUserMenuSlot/images/learning_user_menu_custom_component.png +0 -0
- package/dist/plugin-slots/LearningUserMenuSlot/images/learning_user_menu_custom_components_before_after.png +0 -0
- package/dist/plugin-slots/LearningUserMenuSlot/images/learning_user_menu_modified_items.png +0 -0
- package/dist/plugin-slots/LearningUserMenuSlot/index.js +18 -0
- package/dist/plugin-slots/LearningUserMenuSlot/index.js.map +1 -0
- package/dist/plugin-slots/LearningUserMenuToggleSlot/README.md +74 -0
- package/dist/plugin-slots/LearningUserMenuToggleSlot/images/learning_user_menu_toggle_custom_component.png +0 -0
- package/dist/plugin-slots/LearningUserMenuToggleSlot/images/learning_user_menu_toggle_modified_items.png +0 -0
- package/dist/plugin-slots/LearningUserMenuToggleSlot/index.js +19 -0
- package/dist/plugin-slots/LearningUserMenuToggleSlot/index.js.map +1 -0
- package/dist/plugin-slots/LogoSlot/README.md +72 -0
- package/dist/plugin-slots/LogoSlot/index.js +27 -0
- package/dist/plugin-slots/LogoSlot/index.js.map +1 -0
- package/dist/plugin-slots/MobileHeaderSlot/README.md +44 -0
- package/dist/plugin-slots/MobileHeaderSlot/images/mobile_header_custom_component.png +0 -0
- package/dist/plugin-slots/MobileHeaderSlot/index.js +16 -0
- package/dist/plugin-slots/MobileHeaderSlot/index.js.map +1 -0
- package/dist/plugin-slots/MobileLoggedOutItemsSlot/README.md +136 -0
- package/dist/plugin-slots/MobileLoggedOutItemsSlot/images/mobile_logged_out_items_custom_component.png +0 -0
- package/dist/plugin-slots/MobileLoggedOutItemsSlot/images/mobile_logged_out_items_custom_components_before_after.png +0 -0
- package/dist/plugin-slots/MobileLoggedOutItemsSlot/images/mobile_logged_out_items_modify_items.png +0 -0
- package/dist/plugin-slots/MobileLoggedOutItemsSlot/index.js +20 -0
- package/dist/plugin-slots/MobileLoggedOutItemsSlot/index.js.map +1 -0
- package/dist/plugin-slots/MobileMainMenuSlot/README.md +136 -0
- package/dist/plugin-slots/MobileMainMenuSlot/images/mobile_main_menu_custom_component.png +0 -0
- package/dist/plugin-slots/MobileMainMenuSlot/images/mobile_main_menu_custom_components_before_after.png +0 -0
- package/dist/plugin-slots/MobileMainMenuSlot/images/mobile_main_menu_modify_items.png +0 -0
- package/dist/plugin-slots/MobileMainMenuSlot/index.js +20 -0
- package/dist/plugin-slots/MobileMainMenuSlot/index.js.map +1 -0
- package/dist/plugin-slots/MobileUserMenuSlot/README.md +144 -0
- package/dist/plugin-slots/MobileUserMenuSlot/images/mobile_user_menu_custom_component.png +0 -0
- package/dist/plugin-slots/MobileUserMenuSlot/images/mobile_user_menu_custom_components_before_after.png +0 -0
- package/dist/plugin-slots/MobileUserMenuSlot/images/mobile_user_menu_modify_items.png +0 -0
- package/dist/plugin-slots/MobileUserMenuSlot/index.js +20 -0
- package/dist/plugin-slots/MobileUserMenuSlot/index.js.map +1 -0
- package/dist/plugin-slots/MobileUserMenuToggleSlot/README.md +74 -0
- package/dist/plugin-slots/MobileUserMenuToggleSlot/images/mobile_user_menu_toggle_custom_component.png +0 -0
- package/dist/plugin-slots/MobileUserMenuToggleSlot/images/mobile_user_menu_toggle_modified_items.png +0 -0
- package/dist/plugin-slots/MobileUserMenuToggleSlot/index.js +19 -0
- package/dist/plugin-slots/MobileUserMenuToggleSlot/index.js.map +1 -0
- package/dist/plugin-slots/README.md +26 -0
- package/dist/setupTest.js +0 -2
- package/dist/studio-header/BrandNav.test.tsx +40 -0
- package/dist/studio-header/BrandNav.tsx +25 -0
- package/dist/studio-header/CourseLockUp.test.tsx +59 -0
- package/dist/studio-header/CourseLockUp.tsx +56 -0
- package/dist/studio-header/HeaderBody.test.tsx +102 -0
- package/dist/studio-header/HeaderBody.tsx +196 -0
- package/dist/studio-header/MobileHeader.tsx +74 -0
- package/dist/studio-header/MobileMenu.test.tsx +81 -0
- package/dist/studio-header/MobileMenu.tsx +50 -0
- package/dist/studio-header/NavDropdownMenu.test.tsx +67 -0
- package/dist/studio-header/NavDropdownMenu.tsx +42 -0
- package/dist/studio-header/StudioHeader.scss +8 -10
- package/dist/studio-header/StudioHeader.test.tsx +220 -0
- package/dist/studio-header/StudioHeader.tsx +84 -0
- package/dist/studio-header/UserMenu.tsx +69 -0
- package/dist/studio-header/{index.js → index.ts} +1 -1
- package/dist/studio-header/{messages.js → messages.ts} +15 -14
- package/dist/studio-header/utils.ts +37 -0
- package/dist/test-utils.js +12 -4
- package/dist/test-utils.js.map +1 -1
- package/package.json +28 -30
- package/dist/DesktopHeader.js +0 -242
- package/dist/DesktopHeader.js.map +0 -1
- package/dist/MobileHeader.js +0 -244
- package/dist/MobileHeader.js.map +0 -1
- package/dist/studio-header/BrandNav.js +0 -21
- package/dist/studio-header/BrandNav.js.map +0 -1
- package/dist/studio-header/CourseLockUp.js +0 -45
- package/dist/studio-header/CourseLockUp.js.map +0 -1
- package/dist/studio-header/HeaderBody.js +0 -131
- package/dist/studio-header/HeaderBody.js.map +0 -1
- package/dist/studio-header/MobileHeader.js +0 -79
- package/dist/studio-header/MobileHeader.js.map +0 -1
- package/dist/studio-header/MobileMenu.js +0 -45
- package/dist/studio-header/MobileMenu.js.map +0 -1
- package/dist/studio-header/NavDropdownMenu.js +0 -30
- package/dist/studio-header/NavDropdownMenu.js.map +0 -1
- package/dist/studio-header/StudioHeader.js +0 -72
- package/dist/studio-header/StudioHeader.js.map +0 -1
- package/dist/studio-header/UserMenu.js +0 -55
- package/dist/studio-header/UserMenu.js.map +0 -1
- package/dist/studio-header/index.js.map +0 -1
- package/dist/studio-header/messages.js.map +0 -1
- package/dist/studio-header/utils.js +0 -29
- package/dist/studio-header/utils.js.map +0 -1
package/dist/Menu/Menu.js
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
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
2
|
var _excluded = ["tag", "className"],
|
|
3
3
|
_excluded2 = ["tag", "className"];
|
|
4
|
-
function _classCallCheck(
|
|
5
|
-
function _defineProperties(
|
|
6
|
-
function _createClass(
|
|
4
|
+
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
5
|
+
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
|
|
6
|
+
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
|
7
7
|
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
8
|
-
function _possibleConstructorReturn(
|
|
9
|
-
function _assertThisInitialized(
|
|
8
|
+
function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); }
|
|
9
|
+
function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
|
|
10
10
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
11
|
-
function _getPrototypeOf(
|
|
12
|
-
function _inherits(
|
|
13
|
-
function _setPrototypeOf(
|
|
11
|
+
function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
|
|
12
|
+
function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
|
|
13
|
+
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
|
|
14
14
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
15
15
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
16
|
-
function _defineProperty(
|
|
16
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
17
17
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
18
18
|
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); }
|
|
19
|
-
function _objectWithoutProperties(
|
|
20
|
-
function _objectWithoutPropertiesLoose(
|
|
19
|
+
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
|
20
|
+
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
21
21
|
import React from 'react';
|
|
22
22
|
import { CSSTransition } from 'react-transition-group';
|
|
23
23
|
import PropTypes from 'prop-types';
|
package/dist/Menu/Menu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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
|
+
{"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":[]}
|
package/dist/Menu/menu.scss
CHANGED
|
@@ -1,45 +1,45 @@
|
|
|
1
1
|
.menu {
|
|
2
2
|
position: relative;
|
|
3
3
|
}
|
|
4
|
+
|
|
4
5
|
.menu-content {
|
|
5
6
|
position: absolute;
|
|
6
7
|
top: 100%;
|
|
7
8
|
z-index: 10;
|
|
8
|
-
background: #fff;
|
|
9
|
+
background: var(--pgn-color-white, #fff);
|
|
9
10
|
min-width: 10rem;
|
|
11
|
+
|
|
10
12
|
&.pin-left {
|
|
11
13
|
left: 0;
|
|
12
14
|
}
|
|
15
|
+
|
|
13
16
|
&.pin-right {
|
|
14
17
|
right: 0;
|
|
15
18
|
}
|
|
16
19
|
}
|
|
17
20
|
|
|
18
|
-
|
|
19
21
|
.menu-dropdown-enter {
|
|
20
22
|
opacity: 0;
|
|
21
23
|
transform-origin: 75% 0;
|
|
22
24
|
transform: scale3d(0.8, 0.8, 1);
|
|
23
25
|
}
|
|
26
|
+
|
|
24
27
|
.menu-dropdown-enter-active {
|
|
25
28
|
transform-origin: 75% 0;
|
|
26
29
|
transition: all 250ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
27
30
|
transform: scale3d(1, 1, 1);
|
|
28
31
|
opacity: 1;
|
|
29
32
|
}
|
|
30
|
-
.menu-dropdown-enter-done {
|
|
31
|
-
}
|
|
32
33
|
|
|
33
34
|
.menu-dropdown-exit {
|
|
34
35
|
transform-origin: 75% 0;
|
|
35
36
|
transform: scale3d(1, 1, 1);
|
|
36
37
|
opacity: 1;
|
|
37
38
|
}
|
|
39
|
+
|
|
38
40
|
.menu-dropdown-exit-active {
|
|
39
41
|
transform-origin: 75% 0;
|
|
40
42
|
transform: scale3d(0.8, 0.8, 1);
|
|
41
43
|
transition: all 250ms cubic-bezier(0.8, 0, 0.6, 1);
|
|
42
44
|
opacity: 0;
|
|
43
45
|
}
|
|
44
|
-
.menu-dropdown-exit-done {
|
|
45
|
-
}
|
|
@@ -33,6 +33,7 @@ exports[`<Header /> renders correctly for anonymous desktop 1`] = `
|
|
|
33
33
|
<a
|
|
34
34
|
className="nav-link"
|
|
35
35
|
href="http://localhost:18000/dashboard"
|
|
36
|
+
onClick={null}
|
|
36
37
|
>
|
|
37
38
|
Courses
|
|
38
39
|
</a>
|
|
@@ -229,6 +230,7 @@ exports[`<Header /> renders correctly for authenticated desktop 1`] = `
|
|
|
229
230
|
<a
|
|
230
231
|
className="nav-link"
|
|
231
232
|
href="http://localhost:18000/dashboard"
|
|
233
|
+
onClick={null}
|
|
232
234
|
>
|
|
233
235
|
Courses
|
|
234
236
|
</a>
|
|
@@ -0,0 +1,172 @@
|
|
|
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 _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
3
|
+
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
|
|
4
|
+
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
|
5
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
6
|
+
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); }
|
|
7
|
+
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
8
|
+
function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); }
|
|
9
|
+
function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
|
|
10
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
11
|
+
function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
|
|
12
|
+
function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
|
|
13
|
+
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
|
|
14
|
+
import React from 'react';
|
|
15
|
+
import PropTypes from 'prop-types';
|
|
16
|
+
import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
|
|
17
|
+
import { getConfig } from '@edx/frontend-platform';
|
|
18
|
+
import { getAuthenticatedUser } from '@edx/frontend-platform/auth';
|
|
19
|
+
|
|
20
|
+
// Local Components
|
|
21
|
+
import DesktopUserMenuToggleSlot from '../plugin-slots/DesktopUserMenuToggleSlot';
|
|
22
|
+
import { Menu, MenuTrigger, MenuContent } from '../Menu';
|
|
23
|
+
import LogoSlot from '../plugin-slots/LogoSlot';
|
|
24
|
+
import DesktopLoggedOutItemsSlot from '../plugin-slots/DesktopLoggedOutItemsSlot';
|
|
25
|
+
import { desktopLoggedOutItemsDataShape } from './DesktopLoggedOutItems';
|
|
26
|
+
import DesktopMainMenuSlot from '../plugin-slots/DesktopMainMenuSlot';
|
|
27
|
+
import { desktopHeaderMainOrSecondaryMenuDataShape } from './DesktopHeaderMainOrSecondaryMenu';
|
|
28
|
+
import DesktopSecondaryMenuSlot from '../plugin-slots/DesktopSecondaryMenuSlot';
|
|
29
|
+
import DesktopUserMenuSlot from '../plugin-slots/DesktopUserMenuSlot';
|
|
30
|
+
import { desktopUserMenuDataShape } from './DesktopHeaderUserMenu';
|
|
31
|
+
|
|
32
|
+
// i18n
|
|
33
|
+
import messages from '../Header.messages';
|
|
34
|
+
|
|
35
|
+
// Assets
|
|
36
|
+
import LanguageSelector from '../LanguageSelector';
|
|
37
|
+
var DesktopHeader = /*#__PURE__*/function (_React$Component) {
|
|
38
|
+
function DesktopHeader(props) {
|
|
39
|
+
_classCallCheck(this, DesktopHeader);
|
|
40
|
+
// eslint-disable-line @typescript-eslint/no-useless-constructor
|
|
41
|
+
return _callSuper(this, DesktopHeader, [props]);
|
|
42
|
+
}
|
|
43
|
+
_inherits(DesktopHeader, _React$Component);
|
|
44
|
+
return _createClass(DesktopHeader, [{
|
|
45
|
+
key: "renderMainMenu",
|
|
46
|
+
value: function renderMainMenu() {
|
|
47
|
+
var mainMenu = this.props.mainMenu;
|
|
48
|
+
return /*#__PURE__*/React.createElement(DesktopMainMenuSlot, {
|
|
49
|
+
menu: mainMenu
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}, {
|
|
53
|
+
key: "renderSecondaryMenu",
|
|
54
|
+
value: function renderSecondaryMenu() {
|
|
55
|
+
var secondaryMenu = this.props.secondaryMenu;
|
|
56
|
+
return /*#__PURE__*/React.createElement(DesktopSecondaryMenuSlot, {
|
|
57
|
+
menu: secondaryMenu
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}, {
|
|
61
|
+
key: "renderUserMenu",
|
|
62
|
+
value: function renderUserMenu() {
|
|
63
|
+
var _this$props = this.props,
|
|
64
|
+
userMenu = _this$props.userMenu,
|
|
65
|
+
avatar = _this$props.avatar,
|
|
66
|
+
username = _this$props.username,
|
|
67
|
+
intl = _this$props.intl;
|
|
68
|
+
return /*#__PURE__*/React.createElement(Menu, {
|
|
69
|
+
transitionClassName: "menu-dropdown",
|
|
70
|
+
transitionTimeout: 250
|
|
71
|
+
}, /*#__PURE__*/React.createElement(MenuTrigger, {
|
|
72
|
+
tag: "button",
|
|
73
|
+
"aria-label": intl.formatMessage(messages['header.label.account.menu.for'], {
|
|
74
|
+
username: username
|
|
75
|
+
}),
|
|
76
|
+
className: "btn btn-outline-primary d-inline-flex align-items-center pl-2 pr-3"
|
|
77
|
+
}, /*#__PURE__*/React.createElement(DesktopUserMenuToggleSlot, {
|
|
78
|
+
avatar: avatar,
|
|
79
|
+
label: username
|
|
80
|
+
})), /*#__PURE__*/React.createElement(MenuContent, {
|
|
81
|
+
className: "mb-0 dropdown-menu show dropdown-menu-right pin-right shadow py-2"
|
|
82
|
+
}, /*#__PURE__*/React.createElement(DesktopUserMenuSlot, {
|
|
83
|
+
menu: userMenu
|
|
84
|
+
})));
|
|
85
|
+
}
|
|
86
|
+
}, {
|
|
87
|
+
key: "renderLoggedOutItems",
|
|
88
|
+
value: function renderLoggedOutItems() {
|
|
89
|
+
var loggedOutItems = this.props.loggedOutItems;
|
|
90
|
+
return /*#__PURE__*/React.createElement(DesktopLoggedOutItemsSlot, {
|
|
91
|
+
items: loggedOutItems
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
}, {
|
|
95
|
+
key: "render",
|
|
96
|
+
value: function render() {
|
|
97
|
+
var _this$props2 = this.props,
|
|
98
|
+
logo = _this$props2.logo,
|
|
99
|
+
logoAltText = _this$props2.logoAltText,
|
|
100
|
+
logoDestination = _this$props2.logoDestination,
|
|
101
|
+
loggedIn = _this$props2.loggedIn,
|
|
102
|
+
intl = _this$props2.intl;
|
|
103
|
+
var logoProps = {
|
|
104
|
+
src: logo,
|
|
105
|
+
alt: logoAltText,
|
|
106
|
+
href: logoDestination
|
|
107
|
+
};
|
|
108
|
+
var logoClasses = getConfig().AUTHN_MINIMAL_HEADER ? 'mw-100' : null;
|
|
109
|
+
return /*#__PURE__*/React.createElement("header", {
|
|
110
|
+
className: "site-header-desktop"
|
|
111
|
+
}, /*#__PURE__*/React.createElement("a", {
|
|
112
|
+
className: "nav-skip sr-only sr-only-focusable",
|
|
113
|
+
href: "#main"
|
|
114
|
+
}, intl.formatMessage(messages['header.label.skip.nav'])), /*#__PURE__*/React.createElement("div", {
|
|
115
|
+
className: "container-fluid ".concat(logoClasses)
|
|
116
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
117
|
+
className: "nav-container position-relative d-flex align-items-center"
|
|
118
|
+
}, /*#__PURE__*/React.createElement(LogoSlot, logoProps), /*#__PURE__*/React.createElement("nav", {
|
|
119
|
+
"aria-label": intl.formatMessage(messages['header.label.main.nav']),
|
|
120
|
+
className: "nav main-nav mr-auto"
|
|
121
|
+
}, this.renderMainMenu()), getConfig().ENABLE_HEADER_LANG_SELECTOR && /*#__PURE__*/React.createElement("div", {
|
|
122
|
+
className: "mx-2"
|
|
123
|
+
}, /*#__PURE__*/React.createElement(LanguageSelector, {
|
|
124
|
+
options: JSON.parse(getConfig().SITE_SUPPORTED_LANGUAGES),
|
|
125
|
+
authenticatedUser: getAuthenticatedUser()
|
|
126
|
+
})), /*#__PURE__*/React.createElement("nav", {
|
|
127
|
+
"aria-label": intl.formatMessage(messages['header.label.secondary.nav']),
|
|
128
|
+
className: "nav secondary-menu-container align-items-center"
|
|
129
|
+
}, loggedIn ? /*#__PURE__*/React.createElement(React.Fragment, null, this.renderSecondaryMenu(), this.renderUserMenu()) : this.renderLoggedOutItems()))));
|
|
130
|
+
}
|
|
131
|
+
}]);
|
|
132
|
+
}(React.Component);
|
|
133
|
+
export var desktopHeaderDataShape = {
|
|
134
|
+
mainMenu: desktopHeaderMainOrSecondaryMenuDataShape,
|
|
135
|
+
secondaryMenu: desktopHeaderMainOrSecondaryMenuDataShape,
|
|
136
|
+
userMenu: desktopUserMenuDataShape,
|
|
137
|
+
loggedOutItems: desktopLoggedOutItemsDataShape,
|
|
138
|
+
logo: PropTypes.string,
|
|
139
|
+
logoAltText: PropTypes.string,
|
|
140
|
+
logoDestination: PropTypes.string,
|
|
141
|
+
avatar: PropTypes.string,
|
|
142
|
+
username: PropTypes.string,
|
|
143
|
+
loggedIn: PropTypes.bool
|
|
144
|
+
};
|
|
145
|
+
DesktopHeader.propTypes = {
|
|
146
|
+
mainMenu: desktopHeaderDataShape.mainMenu,
|
|
147
|
+
secondaryMenu: desktopHeaderDataShape.secondaryMenu,
|
|
148
|
+
userMenu: desktopHeaderDataShape.userMenu,
|
|
149
|
+
loggedOutItems: desktopHeaderDataShape.loggedOutItems,
|
|
150
|
+
logo: desktopHeaderDataShape.logo,
|
|
151
|
+
logoAltText: desktopHeaderDataShape.logoAltText,
|
|
152
|
+
logoDestination: desktopHeaderDataShape.logoDestination,
|
|
153
|
+
avatar: desktopHeaderDataShape.avatar,
|
|
154
|
+
username: desktopHeaderDataShape.username,
|
|
155
|
+
loggedIn: desktopHeaderDataShape.loggedIn,
|
|
156
|
+
// i18n
|
|
157
|
+
intl: intlShape.isRequired
|
|
158
|
+
};
|
|
159
|
+
DesktopHeader.defaultProps = {
|
|
160
|
+
mainMenu: [],
|
|
161
|
+
secondaryMenu: [],
|
|
162
|
+
userMenu: [],
|
|
163
|
+
loggedOutItems: [],
|
|
164
|
+
logo: null,
|
|
165
|
+
logoAltText: null,
|
|
166
|
+
logoDestination: null,
|
|
167
|
+
avatar: null,
|
|
168
|
+
username: null,
|
|
169
|
+
loggedIn: false
|
|
170
|
+
};
|
|
171
|
+
export default injectIntl(DesktopHeader);
|
|
172
|
+
//# sourceMappingURL=DesktopHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DesktopHeader.js","names":["React","PropTypes","injectIntl","intlShape","getConfig","getAuthenticatedUser","DesktopUserMenuToggleSlot","Menu","MenuTrigger","MenuContent","LogoSlot","DesktopLoggedOutItemsSlot","desktopLoggedOutItemsDataShape","DesktopMainMenuSlot","desktopHeaderMainOrSecondaryMenuDataShape","DesktopSecondaryMenuSlot","DesktopUserMenuSlot","desktopUserMenuDataShape","messages","LanguageSelector","DesktopHeader","_React$Component","props","_classCallCheck","_callSuper","_inherits","_createClass","key","value","renderMainMenu","mainMenu","createElement","menu","renderSecondaryMenu","secondaryMenu","renderUserMenu","_this$props","userMenu","avatar","username","intl","transitionClassName","transitionTimeout","tag","formatMessage","className","label","renderLoggedOutItems","loggedOutItems","items","render","_this$props2","logo","logoAltText","logoDestination","loggedIn","logoProps","src","alt","href","logoClasses","AUTHN_MINIMAL_HEADER","concat","ENABLE_HEADER_LANG_SELECTOR","options","JSON","parse","SITE_SUPPORTED_LANGUAGES","authenticatedUser","Fragment","Component","desktopHeaderDataShape","string","bool","propTypes","isRequired","defaultProps"],"sources":["../../src/desktop-header/DesktopHeader.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';\nimport { getAuthenticatedUser } from '@edx/frontend-platform/auth';\n\n// Local Components\nimport DesktopUserMenuToggleSlot\n from '../plugin-slots/DesktopUserMenuToggleSlot';\nimport { Menu, MenuTrigger, MenuContent } from '../Menu';\nimport LogoSlot from '../plugin-slots/LogoSlot';\nimport DesktopLoggedOutItemsSlot from '../plugin-slots/DesktopLoggedOutItemsSlot';\nimport { desktopLoggedOutItemsDataShape } from './DesktopLoggedOutItems';\nimport DesktopMainMenuSlot from '../plugin-slots/DesktopMainMenuSlot';\nimport { desktopHeaderMainOrSecondaryMenuDataShape } from './DesktopHeaderMainOrSecondaryMenu';\nimport DesktopSecondaryMenuSlot from '../plugin-slots/DesktopSecondaryMenuSlot';\nimport DesktopUserMenuSlot from '../plugin-slots/DesktopUserMenuSlot';\nimport { desktopUserMenuDataShape } from './DesktopHeaderUserMenu';\n\n// i18n\nimport messages from '../Header.messages';\n\n// Assets\nimport LanguageSelector from '../LanguageSelector';\n\nclass DesktopHeader extends React.Component {\n constructor(props) { // eslint-disable-line @typescript-eslint/no-useless-constructor\n super(props);\n }\n\n renderMainMenu() {\n const { mainMenu } = this.props;\n return <DesktopMainMenuSlot menu={mainMenu} />;\n }\n\n renderSecondaryMenu() {\n const { secondaryMenu } = this.props;\n return <DesktopSecondaryMenuSlot menu={secondaryMenu} />;\n }\n\n renderUserMenu() {\n const {\n userMenu,\n avatar,\n username,\n intl,\n } = this.props;\n\n return (\n <Menu transitionClassName=\"menu-dropdown\" transitionTimeout={250}>\n <MenuTrigger\n tag=\"button\"\n aria-label={intl.formatMessage(messages['header.label.account.menu.for'], { username })}\n className=\"btn btn-outline-primary d-inline-flex align-items-center pl-2 pr-3\"\n >\n <DesktopUserMenuToggleSlot avatar={avatar} label={username} />\n </MenuTrigger>\n <MenuContent className=\"mb-0 dropdown-menu show dropdown-menu-right pin-right shadow py-2\">\n <DesktopUserMenuSlot menu={userMenu} />\n </MenuContent>\n </Menu>\n );\n }\n\n renderLoggedOutItems() {\n const { loggedOutItems } = this.props;\n return <DesktopLoggedOutItemsSlot items={loggedOutItems} />;\n }\n\n render() {\n const {\n logo,\n logoAltText,\n logoDestination,\n loggedIn,\n intl,\n } = this.props;\n const logoProps = { src: logo, alt: logoAltText, href: logoDestination };\n const logoClasses = getConfig().AUTHN_MINIMAL_HEADER ? 'mw-100' : null;\n\n return (\n <header className=\"site-header-desktop\">\n <a className=\"nav-skip sr-only sr-only-focusable\" href=\"#main\">{intl.formatMessage(messages['header.label.skip.nav'])}</a>\n <div className={`container-fluid ${logoClasses}`}>\n <div className=\"nav-container position-relative d-flex align-items-center\">\n <LogoSlot {...logoProps} />\n <nav\n aria-label={intl.formatMessage(messages['header.label.main.nav'])}\n className=\"nav main-nav mr-auto\"\n >\n {this.renderMainMenu()}\n </nav>\n {getConfig().ENABLE_HEADER_LANG_SELECTOR && (\n <div className=\"mx-2\">\n <LanguageSelector\n options={JSON.parse(getConfig().SITE_SUPPORTED_LANGUAGES)}\n authenticatedUser={getAuthenticatedUser()}\n />\n </div>\n )}\n <nav\n aria-label={intl.formatMessage(messages['header.label.secondary.nav'])}\n className=\"nav secondary-menu-container align-items-center\"\n >\n {loggedIn\n ? (\n <>\n {this.renderSecondaryMenu()}\n {this.renderUserMenu()}\n </>\n ) : this.renderLoggedOutItems()}\n </nav>\n </div>\n </div>\n </header>\n );\n }\n}\n\nexport const desktopHeaderDataShape = {\n mainMenu: desktopHeaderMainOrSecondaryMenuDataShape,\n secondaryMenu: desktopHeaderMainOrSecondaryMenuDataShape,\n userMenu: desktopUserMenuDataShape,\n loggedOutItems: desktopLoggedOutItemsDataShape,\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};\n\nDesktopHeader.propTypes = {\n mainMenu: desktopHeaderDataShape.mainMenu,\n secondaryMenu: desktopHeaderDataShape.secondaryMenu,\n userMenu: desktopHeaderDataShape.userMenu,\n loggedOutItems: desktopHeaderDataShape.loggedOutItems,\n logo: desktopHeaderDataShape.logo,\n logoAltText: desktopHeaderDataShape.logoAltText,\n logoDestination: desktopHeaderDataShape.logoDestination,\n avatar: desktopHeaderDataShape.avatar,\n username: desktopHeaderDataShape.username,\n loggedIn: desktopHeaderDataShape.loggedIn,\n\n // i18n\n intl: intlShape.isRequired,\n};\n\nDesktopHeader.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};\n\nexport default injectIntl(DesktopHeader);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import { Menu, MenuTrigger, MenuContent } from '../Menu';
|
|
4
|
+
import { CaretIcon } from '../Icons';
|
|
5
|
+
var DesktopHeaderMainOrSecondaryMenu = function DesktopHeaderMainOrSecondaryMenu(_ref) {
|
|
6
|
+
var menu = _ref.menu;
|
|
7
|
+
// Nodes are accepted as a prop
|
|
8
|
+
if (!Array.isArray(menu)) {
|
|
9
|
+
return menu;
|
|
10
|
+
}
|
|
11
|
+
return menu.map(function (menuItem) {
|
|
12
|
+
var type = menuItem.type,
|
|
13
|
+
href = menuItem.href,
|
|
14
|
+
content = menuItem.content,
|
|
15
|
+
submenuContent = menuItem.submenuContent,
|
|
16
|
+
disabled = menuItem.disabled,
|
|
17
|
+
isActive = menuItem.isActive,
|
|
18
|
+
onClick = menuItem.onClick;
|
|
19
|
+
if (type === 'item') {
|
|
20
|
+
return /*#__PURE__*/React.createElement("a", {
|
|
21
|
+
key: "".concat(type, "-").concat(content),
|
|
22
|
+
className: "nav-link".concat(disabled ? ' disabled' : '').concat(isActive ? ' active' : ''),
|
|
23
|
+
href: href,
|
|
24
|
+
onClick: onClick || null
|
|
25
|
+
}, content);
|
|
26
|
+
}
|
|
27
|
+
return /*#__PURE__*/React.createElement(Menu, {
|
|
28
|
+
key: "".concat(type, "-").concat(content),
|
|
29
|
+
tag: "div",
|
|
30
|
+
className: "nav-item",
|
|
31
|
+
respondToPointerEvents: true
|
|
32
|
+
}, /*#__PURE__*/React.createElement(MenuTrigger, {
|
|
33
|
+
onClick: onClick || null,
|
|
34
|
+
tag: "a",
|
|
35
|
+
className: "nav-link d-inline-flex align-items-center",
|
|
36
|
+
href: href
|
|
37
|
+
}, content, " ", /*#__PURE__*/React.createElement(CaretIcon, {
|
|
38
|
+
role: "img",
|
|
39
|
+
"aria-hidden": true,
|
|
40
|
+
focusable: "false"
|
|
41
|
+
})), /*#__PURE__*/React.createElement(MenuContent, {
|
|
42
|
+
className: "pin-left pin-right shadow py-2"
|
|
43
|
+
}, submenuContent));
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
export var desktopHeaderMainOrSecondaryMenuDataShape = PropTypes.oneOfType([PropTypes.node, PropTypes.array]);
|
|
47
|
+
DesktopHeaderMainOrSecondaryMenu.propTypes = {
|
|
48
|
+
menu: desktopHeaderMainOrSecondaryMenuDataShape
|
|
49
|
+
};
|
|
50
|
+
export default DesktopHeaderMainOrSecondaryMenu;
|
|
51
|
+
//# sourceMappingURL=DesktopHeaderMainOrSecondaryMenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DesktopHeaderMainOrSecondaryMenu.js","names":["React","PropTypes","Menu","MenuTrigger","MenuContent","CaretIcon","DesktopHeaderMainOrSecondaryMenu","_ref","menu","Array","isArray","map","menuItem","type","href","content","submenuContent","disabled","isActive","onClick","createElement","key","concat","className","tag","respondToPointerEvents","role","focusable","desktopHeaderMainOrSecondaryMenuDataShape","oneOfType","node","array","propTypes"],"sources":["../../src/desktop-header/DesktopHeaderMainOrSecondaryMenu.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Menu, MenuTrigger, MenuContent } from '../Menu';\nimport { CaretIcon } from '../Icons';\n\nconst DesktopHeaderMainOrSecondaryMenu = ({ 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 onClick,\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 onClick={onClick || null}\n >\n {content}\n </a>\n );\n }\n\n return (\n <Menu key={`${type}-${content}`} tag=\"div\" className=\"nav-item\" respondToPointerEvents>\n <MenuTrigger onClick={onClick || null} tag=\"a\" className=\"nav-link d-inline-flex align-items-center\" href={href}>\n {content} <CaretIcon role=\"img\" aria-hidden focusable=\"false\" />\n </MenuTrigger>\n <MenuContent className=\"pin-left pin-right shadow py-2\">\n {submenuContent}\n </MenuContent>\n </Menu>\n );\n });\n};\n\nexport const desktopHeaderMainOrSecondaryMenuDataShape = PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.array,\n]);\n\nDesktopHeaderMainOrSecondaryMenu.propTypes = {\n menu: desktopHeaderMainOrSecondaryMenuDataShape,\n};\n\nexport default DesktopHeaderMainOrSecondaryMenu;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAElC,SAASC,IAAI,EAAEC,WAAW,EAAEC,WAAW,QAAQ,SAAS;AACxD,SAASC,SAAS,QAAQ,UAAU;AAEpC,IAAMC,gCAAgC,GAAG,SAAnCA,gCAAgCA,CAAAC,IAAA,EAAiB;EAAA,IAAXC,IAAI,GAAAD,IAAA,CAAJC,IAAI;EAC9C;EACA,IAAI,CAACC,KAAK,CAACC,OAAO,CAACF,IAAI,CAAC,EAAE;IACxB,OAAOA,IAAI;EACb;EAEA,OAAOA,IAAI,CAACG,GAAG,CAAC,UAACC,QAAQ,EAAK;IAC5B,IACEC,IAAI,GAOFD,QAAQ,CAPVC,IAAI;MACJC,IAAI,GAMFF,QAAQ,CANVE,IAAI;MACJC,OAAO,GAKLH,QAAQ,CALVG,OAAO;MACPC,cAAc,GAIZJ,QAAQ,CAJVI,cAAc;MACdC,QAAQ,GAGNL,QAAQ,CAHVK,QAAQ;MACRC,QAAQ,GAENN,QAAQ,CAFVM,QAAQ;MACRC,OAAO,GACLP,QAAQ,CADVO,OAAO;IAGT,IAAIN,IAAI,KAAK,MAAM,EAAE;MACnB,oBACEb,KAAA,CAAAoB,aAAA;QACEC,GAAG,KAAAC,MAAA,CAAKT,IAAI,OAAAS,MAAA,CAAIP,OAAO,CAAG;QAC1BQ,SAAS,aAAAD,MAAA,CAAaL,QAAQ,GAAG,WAAW,GAAG,EAAE,EAAAK,MAAA,CAAGJ,QAAQ,GAAG,SAAS,GAAG,EAAE,CAAG;QAChFJ,IAAI,EAAEA,IAAK;QACXK,OAAO,EAAEA,OAAO,IAAI;MAAK,GAExBJ,OACA,CAAC;IAER;IAEA,oBACEf,KAAA,CAAAoB,aAAA,CAAClB,IAAI;MAACmB,GAAG,KAAAC,MAAA,CAAKT,IAAI,OAAAS,MAAA,CAAIP,OAAO,CAAG;MAACS,GAAG,EAAC,KAAK;MAACD,SAAS,EAAC,UAAU;MAACE,sBAAsB;IAAA,gBACpFzB,KAAA,CAAAoB,aAAA,CAACjB,WAAW;MAACgB,OAAO,EAAEA,OAAO,IAAI,IAAK;MAACK,GAAG,EAAC,GAAG;MAACD,SAAS,EAAC,2CAA2C;MAACT,IAAI,EAAEA;IAAK,GAC7GC,OAAO,EAAC,GAAC,eAAAf,KAAA,CAAAoB,aAAA,CAACf,SAAS;MAACqB,IAAI,EAAC,KAAK;MAAC,mBAAW;MAACC,SAAS,EAAC;IAAO,CAAE,CACpD,CAAC,eACd3B,KAAA,CAAAoB,aAAA,CAAChB,WAAW;MAACmB,SAAS,EAAC;IAAgC,GACpDP,cACU,CACT,CAAC;EAEX,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,IAAMY,yCAAyC,GAAG3B,SAAS,CAAC4B,SAAS,CAAC,CAC3E5B,SAAS,CAAC6B,IAAI,EACd7B,SAAS,CAAC8B,KAAK,CAChB,CAAC;AAEFzB,gCAAgC,CAAC0B,SAAS,GAAG;EAC3CxB,IAAI,EAAEoB;AACR,CAAC;AAED,eAAetB,gCAAgC","ignoreList":[]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
var DesktopHeaderUserMenu = function DesktopHeaderUserMenu(_ref) {
|
|
4
|
+
var menu = _ref.menu;
|
|
5
|
+
return menu.map(function (group, index) {
|
|
6
|
+
return (
|
|
7
|
+
/*#__PURE__*/
|
|
8
|
+
// eslint-disable-next-line react/jsx-no-comment-textnodes,react/no-array-index-key
|
|
9
|
+
React.createElement(React.Fragment, {
|
|
10
|
+
key: index
|
|
11
|
+
}, group.heading && /*#__PURE__*/React.createElement("div", {
|
|
12
|
+
className: "dropdown-header",
|
|
13
|
+
role: "heading",
|
|
14
|
+
"aria-level": "1"
|
|
15
|
+
}, group.heading), group.items.map(function (_ref2) {
|
|
16
|
+
var type = _ref2.type,
|
|
17
|
+
content = _ref2.content,
|
|
18
|
+
href = _ref2.href,
|
|
19
|
+
disabled = _ref2.disabled,
|
|
20
|
+
isActive = _ref2.isActive,
|
|
21
|
+
onClick = _ref2.onClick;
|
|
22
|
+
return /*#__PURE__*/React.createElement("a", {
|
|
23
|
+
className: "dropdown-".concat(type).concat(isActive ? ' active' : '').concat(disabled ? ' disabled' : ''),
|
|
24
|
+
key: "".concat(type, "-").concat(content),
|
|
25
|
+
href: href,
|
|
26
|
+
onClick: onClick || null
|
|
27
|
+
}, content);
|
|
28
|
+
}), index < menu.length - 1 && /*#__PURE__*/React.createElement("div", {
|
|
29
|
+
className: "dropdown-divider",
|
|
30
|
+
role: "separator"
|
|
31
|
+
}))
|
|
32
|
+
);
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
export var desktopUserMenuDataShape = PropTypes.arrayOf(PropTypes.shape({
|
|
36
|
+
heading: PropTypes.string,
|
|
37
|
+
items: PropTypes.arrayOf(PropTypes.shape({
|
|
38
|
+
type: PropTypes.oneOf(['item', 'menu']),
|
|
39
|
+
href: PropTypes.string,
|
|
40
|
+
content: PropTypes.string,
|
|
41
|
+
isActive: PropTypes.bool,
|
|
42
|
+
onClick: PropTypes.func
|
|
43
|
+
}))
|
|
44
|
+
}));
|
|
45
|
+
DesktopHeaderUserMenu.propTypes = {
|
|
46
|
+
menu: desktopUserMenuDataShape
|
|
47
|
+
};
|
|
48
|
+
export default DesktopHeaderUserMenu;
|
|
49
|
+
//# sourceMappingURL=DesktopHeaderUserMenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DesktopHeaderUserMenu.js","names":["React","PropTypes","DesktopHeaderUserMenu","_ref","menu","map","group","index","createElement","Fragment","key","heading","className","role","items","_ref2","type","content","href","disabled","isActive","onClick","concat","length","desktopUserMenuDataShape","arrayOf","shape","string","oneOf","bool","func","propTypes"],"sources":["../../src/desktop-header/DesktopHeaderUserMenu.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst DesktopHeaderUserMenu = ({ menu }) => menu.map((group, index) => (\n // eslint-disable-next-line react/jsx-no-comment-textnodes,react/no-array-index-key\n <React.Fragment key={index}>\n {group.heading && <div className=\"dropdown-header\" role=\"heading\" aria-level=\"1\">{group.heading}</div>}\n {group.items.map(({\n type, content, href, disabled, isActive, onClick,\n }) => (\n <a\n className={`dropdown-${type}${isActive ? ' active' : ''}${disabled ? ' disabled' : ''}`}\n key={`${type}-${content}`}\n href={href}\n onClick={onClick || null}\n >\n {content}\n </a>\n ))}\n {index < menu.length - 1 && <div className=\"dropdown-divider\" role=\"separator\" />}\n </React.Fragment>\n));\n\nexport const desktopUserMenuDataShape = 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 onClick: PropTypes.func,\n })),\n}));\n\nDesktopHeaderUserMenu.propTypes = {\n menu: desktopUserMenuDataShape,\n};\n\nexport default DesktopHeaderUserMenu;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAElC,IAAMC,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAAC,IAAA;EAAA,IAAMC,IAAI,GAAAD,IAAA,CAAJC,IAAI;EAAA,OAAOA,IAAI,CAACC,GAAG,CAAC,UAACC,KAAK,EAAEC,KAAK;IAAA;MAAA;MAChE;MACAP,KAAA,CAAAQ,aAAA,CAACR,KAAK,CAACS,QAAQ;QAACC,GAAG,EAAEH;MAAM,GACxBD,KAAK,CAACK,OAAO,iBAAIX,KAAA,CAAAQ,aAAA;QAAKI,SAAS,EAAC,iBAAiB;QAACC,IAAI,EAAC,SAAS;QAAC,cAAW;MAAG,GAAEP,KAAK,CAACK,OAAa,CAAC,EACrGL,KAAK,CAACQ,KAAK,CAACT,GAAG,CAAC,UAAAU,KAAA;QAAA,IACfC,IAAI,GAAAD,KAAA,CAAJC,IAAI;UAAEC,OAAO,GAAAF,KAAA,CAAPE,OAAO;UAAEC,IAAI,GAAAH,KAAA,CAAJG,IAAI;UAAEC,QAAQ,GAAAJ,KAAA,CAARI,QAAQ;UAAEC,QAAQ,GAAAL,KAAA,CAARK,QAAQ;UAAEC,OAAO,GAAAN,KAAA,CAAPM,OAAO;QAAA,oBAEhDrB,KAAA,CAAAQ,aAAA;UACEI,SAAS,cAAAU,MAAA,CAAcN,IAAI,EAAAM,MAAA,CAAGF,QAAQ,GAAG,SAAS,GAAG,EAAE,EAAAE,MAAA,CAAGH,QAAQ,GAAG,WAAW,GAAG,EAAE,CAAG;UACxFT,GAAG,KAAAY,MAAA,CAAKN,IAAI,OAAAM,MAAA,CAAIL,OAAO,CAAG;UAC1BC,IAAI,EAAEA,IAAK;UACXG,OAAO,EAAEA,OAAO,IAAI;QAAK,GAExBJ,OACA,CAAC;MAAA,CACL,CAAC,EACDV,KAAK,GAAGH,IAAI,CAACmB,MAAM,GAAG,CAAC,iBAAIvB,KAAA,CAAAQ,aAAA;QAAKI,SAAS,EAAC,kBAAkB;QAACC,IAAI,EAAC;MAAW,CAAE,CAClE;IAAC;EAAA,CAClB,CAAC;AAAA;AAEF,OAAO,IAAMW,wBAAwB,GAAGvB,SAAS,CAACwB,OAAO,CAACxB,SAAS,CAACyB,KAAK,CAAC;EACxEf,OAAO,EAAEV,SAAS,CAAC0B,MAAM;EACzBb,KAAK,EAAEb,SAAS,CAACwB,OAAO,CAACxB,SAAS,CAACyB,KAAK,CAAC;IACvCV,IAAI,EAAEf,SAAS,CAAC2B,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvCV,IAAI,EAAEjB,SAAS,CAAC0B,MAAM;IACtBV,OAAO,EAAEhB,SAAS,CAAC0B,MAAM;IACzBP,QAAQ,EAAEnB,SAAS,CAAC4B,IAAI;IACxBR,OAAO,EAAEpB,SAAS,CAAC6B;EACrB,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH5B,qBAAqB,CAAC6B,SAAS,GAAG;EAChC3B,IAAI,EAAEoB;AACR,CAAC;AAED,eAAetB,qBAAqB","ignoreList":[]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
var DesktopLoggedOutItems = function DesktopLoggedOutItems(_ref) {
|
|
4
|
+
var items = _ref.items;
|
|
5
|
+
return items.map(function (item, i, arr) {
|
|
6
|
+
return /*#__PURE__*/React.createElement("a", {
|
|
7
|
+
key: "".concat(item.type, "-").concat(item.content),
|
|
8
|
+
className: i < arr.length - 1 ? 'btn mr-2 btn-link' : 'btn mr-2 btn-outline-primary',
|
|
9
|
+
href: item.href
|
|
10
|
+
}, item.content);
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
export var desktopLoggedOutItemsDataShape = PropTypes.arrayOf(PropTypes.shape({
|
|
14
|
+
type: PropTypes.oneOf(['item', 'menu']),
|
|
15
|
+
href: PropTypes.string,
|
|
16
|
+
content: PropTypes.string
|
|
17
|
+
}));
|
|
18
|
+
DesktopLoggedOutItems.propTypes = {
|
|
19
|
+
items: desktopLoggedOutItemsDataShape
|
|
20
|
+
};
|
|
21
|
+
export default DesktopLoggedOutItems;
|
|
22
|
+
//# sourceMappingURL=DesktopLoggedOutItems.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DesktopLoggedOutItems.js","names":["React","PropTypes","DesktopLoggedOutItems","_ref","items","map","item","i","arr","createElement","key","concat","type","content","className","length","href","desktopLoggedOutItemsDataShape","arrayOf","shape","oneOf","string","propTypes"],"sources":["../../src/desktop-header/DesktopLoggedOutItems.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst DesktopLoggedOutItems = ({ items }) => items.map((item, i, arr) => (\n <a\n key={`${item.type}-${item.content}`}\n className={i < arr.length - 1 ? 'btn mr-2 btn-link' : 'btn mr-2 btn-outline-primary'}\n href={item.href}\n >\n {item.content}\n </a>\n));\n\nexport const desktopLoggedOutItemsDataShape = PropTypes.arrayOf(PropTypes.shape({\n type: PropTypes.oneOf(['item', 'menu']),\n href: PropTypes.string,\n content: PropTypes.string,\n}));\n\nDesktopLoggedOutItems.propTypes = {\n items: desktopLoggedOutItemsDataShape,\n};\n\nexport default DesktopLoggedOutItems;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAElC,IAAMC,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAAC,IAAA;EAAA,IAAMC,KAAK,GAAAD,IAAA,CAALC,KAAK;EAAA,OAAOA,KAAK,CAACC,GAAG,CAAC,UAACC,IAAI,EAAEC,CAAC,EAAEC,GAAG;IAAA,oBAClER,KAAA,CAAAS,aAAA;MACEC,GAAG,KAAAC,MAAA,CAAKL,IAAI,CAACM,IAAI,OAAAD,MAAA,CAAIL,IAAI,CAACO,OAAO,CAAG;MACpCC,SAAS,EAAEP,CAAC,GAAGC,GAAG,CAACO,MAAM,GAAG,CAAC,GAAG,mBAAmB,GAAG,8BAA+B;MACrFC,IAAI,EAAEV,IAAI,CAACU;IAAK,GAEfV,IAAI,CAACO,OACL,CAAC;EAAA,CACL,CAAC;AAAA;AAEF,OAAO,IAAMI,8BAA8B,GAAGhB,SAAS,CAACiB,OAAO,CAACjB,SAAS,CAACkB,KAAK,CAAC;EAC9EP,IAAI,EAAEX,SAAS,CAACmB,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;EACvCJ,IAAI,EAAEf,SAAS,CAACoB,MAAM;EACtBR,OAAO,EAAEZ,SAAS,CAACoB;AACrB,CAAC,CAAC,CAAC;AAEHnB,qBAAqB,CAACoB,SAAS,GAAG;EAChClB,KAAK,EAAEa;AACT,CAAC;AAED,eAAef,qBAAqB","ignoreList":[]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import { CaretIcon } from '../Icons';
|
|
4
|
+
import Avatar from '../Avatar';
|
|
5
|
+
var DesktopUserMenuToggle = function DesktopUserMenuToggle(_ref) {
|
|
6
|
+
var avatar = _ref.avatar,
|
|
7
|
+
label = _ref.label;
|
|
8
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Avatar, {
|
|
9
|
+
size: "1.5em",
|
|
10
|
+
src: avatar,
|
|
11
|
+
alt: "",
|
|
12
|
+
className: "mr-2"
|
|
13
|
+
}), label, " ", /*#__PURE__*/React.createElement(CaretIcon, {
|
|
14
|
+
role: "img",
|
|
15
|
+
"aria-hidden": true,
|
|
16
|
+
focusable: "false"
|
|
17
|
+
}));
|
|
18
|
+
};
|
|
19
|
+
export var DesktopUserMenuTogglePropTypes = {
|
|
20
|
+
avatar: PropTypes.string,
|
|
21
|
+
label: PropTypes.string
|
|
22
|
+
};
|
|
23
|
+
DesktopUserMenuToggle.propTypes = DesktopUserMenuTogglePropTypes;
|
|
24
|
+
export default DesktopUserMenuToggle;
|
|
25
|
+
//# sourceMappingURL=DesktopUserMenuToggle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DesktopUserMenuToggle.js","names":["React","PropTypes","CaretIcon","Avatar","DesktopUserMenuToggle","_ref","avatar","label","createElement","Fragment","size","src","alt","className","role","focusable","DesktopUserMenuTogglePropTypes","string","propTypes"],"sources":["../../src/desktop-header/DesktopUserMenuToggle.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { CaretIcon } from '../Icons';\nimport Avatar from '../Avatar';\n\nconst DesktopUserMenuToggle = ({ avatar, label }) => (\n <>\n <Avatar size=\"1.5em\" src={avatar} alt=\"\" className=\"mr-2\" />\n {label} <CaretIcon role=\"img\" aria-hidden focusable=\"false\" />\n </>\n);\n\nexport const DesktopUserMenuTogglePropTypes = {\n avatar: PropTypes.string,\n label: PropTypes.string,\n};\n\nDesktopUserMenuToggle.propTypes = DesktopUserMenuTogglePropTypes;\n\nexport default DesktopUserMenuToggle;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAClC,SAASC,SAAS,QAAQ,UAAU;AACpC,OAAOC,MAAM,MAAM,WAAW;AAE9B,IAAMC,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAAC,IAAA;EAAA,IAAMC,MAAM,GAAAD,IAAA,CAANC,MAAM;IAAEC,KAAK,GAAAF,IAAA,CAALE,KAAK;EAAA,oBAC5CP,KAAA,CAAAQ,aAAA,CAAAR,KAAA,CAAAS,QAAA,qBACET,KAAA,CAAAQ,aAAA,CAACL,MAAM;IAACO,IAAI,EAAC,OAAO;IAACC,GAAG,EAAEL,MAAO;IAACM,GAAG,EAAC,EAAE;IAACC,SAAS,EAAC;EAAM,CAAE,CAAC,EAC3DN,KAAK,EAAC,GAAC,eAAAP,KAAA,CAAAQ,aAAA,CAACN,SAAS;IAACY,IAAI,EAAC,KAAK;IAAC,mBAAW;IAACC,SAAS,EAAC;EAAO,CAAE,CAC7D,CAAC;AAAA,CACJ;AAED,OAAO,IAAMC,8BAA8B,GAAG;EAC5CV,MAAM,EAAEL,SAAS,CAACgB,MAAM;EACxBV,KAAK,EAAEN,SAAS,CAACgB;AACnB,CAAC;AAEDb,qBAAqB,CAACc,SAAS,GAAGF,8BAA8B;AAEhE,eAAeZ,qBAAqB","ignoreList":[]}
|