@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.
Files changed (196) hide show
  1. package/README.rst +6 -0
  2. package/dist/Header.js +13 -9
  3. package/dist/Header.js.map +1 -1
  4. package/dist/Header.test.jsx +3 -0
  5. package/dist/Icons.js +1 -1
  6. package/dist/LanguageSelector/data/api.js +13 -5
  7. package/dist/LanguageSelector/data/api.js.map +1 -1
  8. package/dist/LanguageSelector/index.js +12 -4
  9. package/dist/LanguageSelector/index.js.map +1 -1
  10. package/dist/Logo.js +10 -23
  11. package/dist/Logo.js.map +1 -1
  12. package/dist/Menu/Menu.js +11 -11
  13. package/dist/Menu/Menu.js.map +1 -1
  14. package/dist/Menu/menu.scss +6 -6
  15. package/dist/__snapshots__/Header.test.jsx.snap +2 -0
  16. package/dist/desktop-header/DesktopHeader.js +172 -0
  17. package/dist/desktop-header/DesktopHeader.js.map +1 -0
  18. package/dist/desktop-header/DesktopHeaderMainOrSecondaryMenu.js +51 -0
  19. package/dist/desktop-header/DesktopHeaderMainOrSecondaryMenu.js.map +1 -0
  20. package/dist/desktop-header/DesktopHeaderUserMenu.js +49 -0
  21. package/dist/desktop-header/DesktopHeaderUserMenu.js.map +1 -0
  22. package/dist/desktop-header/DesktopLoggedOutItems.js +22 -0
  23. package/dist/desktop-header/DesktopLoggedOutItems.js.map +1 -0
  24. package/dist/desktop-header/DesktopUserMenuToggle.js +25 -0
  25. package/dist/desktop-header/DesktopUserMenuToggle.js.map +1 -0
  26. package/dist/frontend-platform.d.ts +41 -0
  27. package/dist/index.scss +27 -15
  28. package/dist/learning-header/AnonymousUserMenu.js +11 -8
  29. package/dist/learning-header/AnonymousUserMenu.js.map +1 -1
  30. package/dist/learning-header/AuthenticatedUserDropdown.js +32 -24
  31. package/dist/learning-header/AuthenticatedUserDropdown.js.map +1 -1
  32. package/dist/learning-header/LearningHeader.js +10 -11
  33. package/dist/learning-header/LearningHeader.js.map +1 -1
  34. package/dist/learning-header/LearningHeaderCourseInfo.js +24 -0
  35. package/dist/learning-header/LearningHeaderCourseInfo.js.map +1 -0
  36. package/dist/learning-header/LearningHeaderHelpLink.js +13 -0
  37. package/dist/learning-header/LearningHeaderHelpLink.js.map +1 -0
  38. package/dist/learning-header/LearningHeaderUserMenuItems.js +20 -0
  39. package/dist/learning-header/LearningHeaderUserMenuItems.js.map +1 -0
  40. package/dist/learning-header/LearningLoggedOutButtons.js +24 -0
  41. package/dist/learning-header/LearningLoggedOutButtons.js.map +1 -0
  42. package/dist/learning-header/LearningUserMenuToggle.js +26 -0
  43. package/dist/learning-header/LearningUserMenuToggle.js.map +1 -0
  44. package/dist/learning-header/data/api.js +12 -4
  45. package/dist/learning-header/data/api.js.map +1 -1
  46. package/dist/learning-header/data/api.test.js +92 -95
  47. package/dist/learning-header/data/api.test.js.map +1 -1
  48. package/dist/learning-header/messages.js +5 -0
  49. package/dist/learning-header/messages.js.map +1 -1
  50. package/dist/mobile-header/MobileHeader.js +197 -0
  51. package/dist/mobile-header/MobileHeader.js.map +1 -0
  52. package/dist/mobile-header/MobileHeaderMainMenu.js +46 -0
  53. package/dist/mobile-header/MobileHeaderMainMenu.js.map +1 -0
  54. package/dist/mobile-header/MobileHeaderUserMenu.js +38 -0
  55. package/dist/mobile-header/MobileHeaderUserMenu.js.map +1 -0
  56. package/dist/mobile-header/MobileLoggedOutItems.js +27 -0
  57. package/dist/mobile-header/MobileLoggedOutItems.js.map +1 -0
  58. package/dist/mobile-header/MobileUserMenuToggle.js +19 -0
  59. package/dist/mobile-header/MobileUserMenuToggle.js.map +1 -0
  60. package/dist/plugin-slots/CourseInfoSlot/README.md +128 -0
  61. package/dist/plugin-slots/CourseInfoSlot/images/add_custom_components_before_and_after_course_info.png +0 -0
  62. package/dist/plugin-slots/CourseInfoSlot/images/replace_course_info_with_custom_component.png +0 -0
  63. package/dist/plugin-slots/CourseInfoSlot/images/replace_course_title.png +0 -0
  64. package/dist/plugin-slots/CourseInfoSlot/index.js +32 -0
  65. package/dist/plugin-slots/CourseInfoSlot/index.js.map +1 -0
  66. package/dist/plugin-slots/DesktopHeaderSlot/README.md +44 -0
  67. package/dist/plugin-slots/DesktopHeaderSlot/images/desktop_header_custom_component.png +0 -0
  68. package/dist/plugin-slots/DesktopHeaderSlot/index.js +16 -0
  69. package/dist/plugin-slots/DesktopHeaderSlot/index.js.map +1 -0
  70. package/dist/plugin-slots/DesktopLoggedOutItemsSlot/README.md +137 -0
  71. package/dist/plugin-slots/DesktopLoggedOutItemsSlot/images/desktop_logged_out_items_custom_component.png +0 -0
  72. package/dist/plugin-slots/DesktopLoggedOutItemsSlot/images/desktop_logged_out_items_custom_components_before_after.png +0 -0
  73. package/dist/plugin-slots/DesktopLoggedOutItemsSlot/images/desktop_logged_out_items_modify_items.png +0 -0
  74. package/dist/plugin-slots/DesktopLoggedOutItemsSlot/index.js +20 -0
  75. package/dist/plugin-slots/DesktopLoggedOutItemsSlot/index.js.map +1 -0
  76. package/dist/plugin-slots/DesktopMainMenuSlot/README.md +137 -0
  77. package/dist/plugin-slots/DesktopMainMenuSlot/images/desktop_main_menu_custom_component.png +0 -0
  78. package/dist/plugin-slots/DesktopMainMenuSlot/images/desktop_main_menu_custom_components_before_after.png +0 -0
  79. package/dist/plugin-slots/DesktopMainMenuSlot/images/desktop_main_menu_modify_items.png +0 -0
  80. package/dist/plugin-slots/DesktopMainMenuSlot/index.js +20 -0
  81. package/dist/plugin-slots/DesktopMainMenuSlot/index.js.map +1 -0
  82. package/dist/plugin-slots/DesktopSecondaryMenuSlot/README.md +132 -0
  83. package/dist/plugin-slots/DesktopSecondaryMenuSlot/images/desktop_secondary_menu_custom_component.png +0 -0
  84. package/dist/plugin-slots/DesktopSecondaryMenuSlot/images/desktop_secondary_menu_custom_components_before_after.png +0 -0
  85. package/dist/plugin-slots/DesktopSecondaryMenuSlot/images/desktop_secondary_menu_modify_items.png +0 -0
  86. package/dist/plugin-slots/DesktopSecondaryMenuSlot/index.js +20 -0
  87. package/dist/plugin-slots/DesktopSecondaryMenuSlot/index.js.map +1 -0
  88. package/dist/plugin-slots/DesktopUserMenuSlot/README.md +144 -0
  89. package/dist/plugin-slots/DesktopUserMenuSlot/images/desktop_user_menu_custom_component.png +0 -0
  90. package/dist/plugin-slots/DesktopUserMenuSlot/images/desktop_user_menu_custom_components_before_after.png +0 -0
  91. package/dist/plugin-slots/DesktopUserMenuSlot/images/desktop_user_menu_modify_items.png +0 -0
  92. package/dist/plugin-slots/DesktopUserMenuSlot/index.js +20 -0
  93. package/dist/plugin-slots/DesktopUserMenuSlot/index.js.map +1 -0
  94. package/dist/plugin-slots/DesktopUserMenuToggleSlot/README.md +74 -0
  95. package/dist/plugin-slots/DesktopUserMenuToggleSlot/images/desktop_user_menu_custom_component.png +0 -0
  96. package/dist/plugin-slots/DesktopUserMenuToggleSlot/images/desktop_user_menu_modified_toggle.png +0 -0
  97. package/dist/plugin-slots/DesktopUserMenuToggleSlot/index.js +19 -0
  98. package/dist/plugin-slots/DesktopUserMenuToggleSlot/index.js.map +1 -0
  99. package/dist/plugin-slots/LearningHelpSlot/README.md +44 -0
  100. package/dist/plugin-slots/LearningHelpSlot/images/learning_help_custom_component.png +0 -0
  101. package/dist/plugin-slots/LearningHelpSlot/index.js +11 -0
  102. package/dist/plugin-slots/LearningHelpSlot/index.js.map +1 -0
  103. package/dist/plugin-slots/LearningLoggedOutItemsSlot/README.md +135 -0
  104. package/dist/plugin-slots/LearningLoggedOutItemsSlot/images/learning_logged_out_items_custom_component.png +0 -0
  105. package/dist/plugin-slots/LearningLoggedOutItemsSlot/images/learning_logged_out_items_custom_components_before_after.png +0 -0
  106. package/dist/plugin-slots/LearningLoggedOutItemsSlot/images/learning_logged_out_items_modified_items.png +0 -0
  107. package/dist/plugin-slots/LearningLoggedOutItemsSlot/index.js +18 -0
  108. package/dist/plugin-slots/LearningLoggedOutItemsSlot/index.js.map +1 -0
  109. package/dist/plugin-slots/LearningUserMenuSlot/README.md +133 -0
  110. package/dist/plugin-slots/LearningUserMenuSlot/images/learning_user_menu_custom_component.png +0 -0
  111. package/dist/plugin-slots/LearningUserMenuSlot/images/learning_user_menu_custom_components_before_after.png +0 -0
  112. package/dist/plugin-slots/LearningUserMenuSlot/images/learning_user_menu_modified_items.png +0 -0
  113. package/dist/plugin-slots/LearningUserMenuSlot/index.js +18 -0
  114. package/dist/plugin-slots/LearningUserMenuSlot/index.js.map +1 -0
  115. package/dist/plugin-slots/LearningUserMenuToggleSlot/README.md +74 -0
  116. package/dist/plugin-slots/LearningUserMenuToggleSlot/images/learning_user_menu_toggle_custom_component.png +0 -0
  117. package/dist/plugin-slots/LearningUserMenuToggleSlot/images/learning_user_menu_toggle_modified_items.png +0 -0
  118. package/dist/plugin-slots/LearningUserMenuToggleSlot/index.js +19 -0
  119. package/dist/plugin-slots/LearningUserMenuToggleSlot/index.js.map +1 -0
  120. package/dist/plugin-slots/LogoSlot/README.md +72 -0
  121. package/dist/plugin-slots/LogoSlot/index.js +27 -0
  122. package/dist/plugin-slots/LogoSlot/index.js.map +1 -0
  123. package/dist/plugin-slots/MobileHeaderSlot/README.md +44 -0
  124. package/dist/plugin-slots/MobileHeaderSlot/images/mobile_header_custom_component.png +0 -0
  125. package/dist/plugin-slots/MobileHeaderSlot/index.js +16 -0
  126. package/dist/plugin-slots/MobileHeaderSlot/index.js.map +1 -0
  127. package/dist/plugin-slots/MobileLoggedOutItemsSlot/README.md +136 -0
  128. package/dist/plugin-slots/MobileLoggedOutItemsSlot/images/mobile_logged_out_items_custom_component.png +0 -0
  129. package/dist/plugin-slots/MobileLoggedOutItemsSlot/images/mobile_logged_out_items_custom_components_before_after.png +0 -0
  130. package/dist/plugin-slots/MobileLoggedOutItemsSlot/images/mobile_logged_out_items_modify_items.png +0 -0
  131. package/dist/plugin-slots/MobileLoggedOutItemsSlot/index.js +20 -0
  132. package/dist/plugin-slots/MobileLoggedOutItemsSlot/index.js.map +1 -0
  133. package/dist/plugin-slots/MobileMainMenuSlot/README.md +136 -0
  134. package/dist/plugin-slots/MobileMainMenuSlot/images/mobile_main_menu_custom_component.png +0 -0
  135. package/dist/plugin-slots/MobileMainMenuSlot/images/mobile_main_menu_custom_components_before_after.png +0 -0
  136. package/dist/plugin-slots/MobileMainMenuSlot/images/mobile_main_menu_modify_items.png +0 -0
  137. package/dist/plugin-slots/MobileMainMenuSlot/index.js +20 -0
  138. package/dist/plugin-slots/MobileMainMenuSlot/index.js.map +1 -0
  139. package/dist/plugin-slots/MobileUserMenuSlot/README.md +144 -0
  140. package/dist/plugin-slots/MobileUserMenuSlot/images/mobile_user_menu_custom_component.png +0 -0
  141. package/dist/plugin-slots/MobileUserMenuSlot/images/mobile_user_menu_custom_components_before_after.png +0 -0
  142. package/dist/plugin-slots/MobileUserMenuSlot/images/mobile_user_menu_modify_items.png +0 -0
  143. package/dist/plugin-slots/MobileUserMenuSlot/index.js +20 -0
  144. package/dist/plugin-slots/MobileUserMenuSlot/index.js.map +1 -0
  145. package/dist/plugin-slots/MobileUserMenuToggleSlot/README.md +74 -0
  146. package/dist/plugin-slots/MobileUserMenuToggleSlot/images/mobile_user_menu_toggle_custom_component.png +0 -0
  147. package/dist/plugin-slots/MobileUserMenuToggleSlot/images/mobile_user_menu_toggle_modified_items.png +0 -0
  148. package/dist/plugin-slots/MobileUserMenuToggleSlot/index.js +19 -0
  149. package/dist/plugin-slots/MobileUserMenuToggleSlot/index.js.map +1 -0
  150. package/dist/plugin-slots/README.md +26 -0
  151. package/dist/setupTest.js +0 -2
  152. package/dist/studio-header/BrandNav.test.tsx +40 -0
  153. package/dist/studio-header/BrandNav.tsx +25 -0
  154. package/dist/studio-header/CourseLockUp.test.tsx +59 -0
  155. package/dist/studio-header/CourseLockUp.tsx +56 -0
  156. package/dist/studio-header/HeaderBody.test.tsx +102 -0
  157. package/dist/studio-header/HeaderBody.tsx +196 -0
  158. package/dist/studio-header/MobileHeader.tsx +74 -0
  159. package/dist/studio-header/MobileMenu.test.tsx +81 -0
  160. package/dist/studio-header/MobileMenu.tsx +50 -0
  161. package/dist/studio-header/NavDropdownMenu.test.tsx +67 -0
  162. package/dist/studio-header/NavDropdownMenu.tsx +42 -0
  163. package/dist/studio-header/StudioHeader.scss +8 -10
  164. package/dist/studio-header/StudioHeader.test.tsx +220 -0
  165. package/dist/studio-header/StudioHeader.tsx +84 -0
  166. package/dist/studio-header/UserMenu.tsx +69 -0
  167. package/dist/studio-header/{index.js → index.ts} +1 -1
  168. package/dist/studio-header/{messages.js → messages.ts} +15 -14
  169. package/dist/studio-header/utils.ts +37 -0
  170. package/dist/test-utils.js +12 -4
  171. package/dist/test-utils.js.map +1 -1
  172. package/package.json +28 -30
  173. package/dist/DesktopHeader.js +0 -242
  174. package/dist/DesktopHeader.js.map +0 -1
  175. package/dist/MobileHeader.js +0 -244
  176. package/dist/MobileHeader.js.map +0 -1
  177. package/dist/studio-header/BrandNav.js +0 -21
  178. package/dist/studio-header/BrandNav.js.map +0 -1
  179. package/dist/studio-header/CourseLockUp.js +0 -45
  180. package/dist/studio-header/CourseLockUp.js.map +0 -1
  181. package/dist/studio-header/HeaderBody.js +0 -131
  182. package/dist/studio-header/HeaderBody.js.map +0 -1
  183. package/dist/studio-header/MobileHeader.js +0 -79
  184. package/dist/studio-header/MobileHeader.js.map +0 -1
  185. package/dist/studio-header/MobileMenu.js +0 -45
  186. package/dist/studio-header/MobileMenu.js.map +0 -1
  187. package/dist/studio-header/NavDropdownMenu.js +0 -30
  188. package/dist/studio-header/NavDropdownMenu.js.map +0 -1
  189. package/dist/studio-header/StudioHeader.js +0 -72
  190. package/dist/studio-header/StudioHeader.js.map +0 -1
  191. package/dist/studio-header/UserMenu.js +0 -55
  192. package/dist/studio-header/UserMenu.js.map +0 -1
  193. package/dist/studio-header/index.js.map +0 -1
  194. package/dist/studio-header/messages.js.map +0 -1
  195. package/dist/studio-header/utils.js +0 -29
  196. 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(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
5
- 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); } }
6
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
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(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); }
9
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
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(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
12
- 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); }
13
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
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(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
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(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
20
- function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
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';
@@ -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":[]}
@@ -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":[]}