@epec-fcfm-uchile/frontend-component-header 1.0.0 → 1.0.1

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 (178) hide show
  1. package/package.json +2 -2
  2. package/dist/Avatar.js +0 -43
  3. package/dist/Avatar.js.map +0 -1
  4. package/dist/Header.js +0 -120
  5. package/dist/Header.js.map +0 -1
  6. package/dist/Header.messages.js +0 -110
  7. package/dist/Header.messages.js.map +0 -1
  8. package/dist/Header.test.jsx +0 -107
  9. package/dist/Icons.js +0 -52
  10. package/dist/Icons.js.map +0 -1
  11. package/dist/Logo.js +0 -28
  12. package/dist/Logo.js.map +0 -1
  13. package/dist/Menu/Menu.js +0 -321
  14. package/dist/Menu/Menu.js.map +0 -1
  15. package/dist/Menu/index.js +0 -3
  16. package/dist/Menu/index.js.map +0 -1
  17. package/dist/Menu/menu.scss +0 -45
  18. package/dist/__snapshots__/Header.test.jsx.snap +0 -445
  19. package/dist/desktop-header/DesktopHeader.js +0 -129
  20. package/dist/desktop-header/DesktopHeader.js.map +0 -1
  21. package/dist/desktop-header/DesktopHeaderMainOrSecondaryMenu.js +0 -51
  22. package/dist/desktop-header/DesktopHeaderMainOrSecondaryMenu.js.map +0 -1
  23. package/dist/desktop-header/DesktopHeaderUserMenu.js +0 -49
  24. package/dist/desktop-header/DesktopHeaderUserMenu.js.map +0 -1
  25. package/dist/desktop-header/DesktopLoggedOutItems.js +0 -22
  26. package/dist/desktop-header/DesktopLoggedOutItems.js.map +0 -1
  27. package/dist/desktop-header/DesktopUserMenuToggle.js +0 -25
  28. package/dist/desktop-header/DesktopUserMenuToggle.js.map +0 -1
  29. package/dist/frontend-platform.d.ts +0 -41
  30. package/dist/generic/messages.js +0 -15
  31. package/dist/generic/messages.js.map +0 -1
  32. package/dist/i18n/index.js +0 -2
  33. package/dist/i18n/index.js.map +0 -1
  34. package/dist/index.js +0 -7
  35. package/dist/index.js.map +0 -1
  36. package/dist/index.scss +0 -137
  37. package/dist/learning-header/AnonymousUserMenu.js +0 -22
  38. package/dist/learning-header/AnonymousUserMenu.js.map +0 -1
  39. package/dist/learning-header/AuthenticatedUserDropdown.js +0 -53
  40. package/dist/learning-header/AuthenticatedUserDropdown.js.map +0 -1
  41. package/dist/learning-header/LearningHeader.js +0 -59
  42. package/dist/learning-header/LearningHeader.js.map +0 -1
  43. package/dist/learning-header/LearningHeaderCourseInfo.js +0 -24
  44. package/dist/learning-header/LearningHeaderCourseInfo.js.map +0 -1
  45. package/dist/learning-header/LearningHeaderHelpLink.js +0 -13
  46. package/dist/learning-header/LearningHeaderHelpLink.js.map +0 -1
  47. package/dist/learning-header/LearningHeaderUserMenuItems.js +0 -20
  48. package/dist/learning-header/LearningHeaderUserMenuItems.js.map +0 -1
  49. package/dist/learning-header/LearningLoggedOutButtons.js +0 -24
  50. package/dist/learning-header/LearningLoggedOutButtons.js.map +0 -1
  51. package/dist/learning-header/LearningUserMenuToggle.js +0 -26
  52. package/dist/learning-header/LearningUserMenuToggle.js.map +0 -1
  53. package/dist/learning-header/messages.js +0 -45
  54. package/dist/learning-header/messages.js.map +0 -1
  55. package/dist/mobile-header/MobileHeader.js +0 -157
  56. package/dist/mobile-header/MobileHeader.js.map +0 -1
  57. package/dist/mobile-header/MobileHeaderMainMenu.js +0 -46
  58. package/dist/mobile-header/MobileHeaderMainMenu.js.map +0 -1
  59. package/dist/mobile-header/MobileHeaderUserMenu.js +0 -38
  60. package/dist/mobile-header/MobileHeaderUserMenu.js.map +0 -1
  61. package/dist/mobile-header/MobileLoggedOutItems.js +0 -27
  62. package/dist/mobile-header/MobileLoggedOutItems.js.map +0 -1
  63. package/dist/mobile-header/MobileUserMenuToggle.js +0 -19
  64. package/dist/mobile-header/MobileUserMenuToggle.js.map +0 -1
  65. package/dist/plugin-slots/CourseInfoSlot/README.md +0 -128
  66. package/dist/plugin-slots/CourseInfoSlot/images/add_custom_components_before_and_after_course_info.png +0 -0
  67. package/dist/plugin-slots/CourseInfoSlot/images/replace_course_info_with_custom_component.png +0 -0
  68. package/dist/plugin-slots/CourseInfoSlot/images/replace_course_title.png +0 -0
  69. package/dist/plugin-slots/CourseInfoSlot/index.js +0 -32
  70. package/dist/plugin-slots/CourseInfoSlot/index.js.map +0 -1
  71. package/dist/plugin-slots/DesktopHeaderSlot/README.md +0 -44
  72. package/dist/plugin-slots/DesktopHeaderSlot/images/desktop_header_custom_component.png +0 -0
  73. package/dist/plugin-slots/DesktopHeaderSlot/index.js +0 -16
  74. package/dist/plugin-slots/DesktopHeaderSlot/index.js.map +0 -1
  75. package/dist/plugin-slots/DesktopLoggedOutItemsSlot/README.md +0 -137
  76. package/dist/plugin-slots/DesktopLoggedOutItemsSlot/images/desktop_logged_out_items_custom_component.png +0 -0
  77. package/dist/plugin-slots/DesktopLoggedOutItemsSlot/images/desktop_logged_out_items_custom_components_before_after.png +0 -0
  78. package/dist/plugin-slots/DesktopLoggedOutItemsSlot/images/desktop_logged_out_items_modify_items.png +0 -0
  79. package/dist/plugin-slots/DesktopLoggedOutItemsSlot/index.js +0 -20
  80. package/dist/plugin-slots/DesktopLoggedOutItemsSlot/index.js.map +0 -1
  81. package/dist/plugin-slots/DesktopMainMenuSlot/README.md +0 -190
  82. package/dist/plugin-slots/DesktopMainMenuSlot/images/desktop_main_menu_add_items.png +0 -0
  83. package/dist/plugin-slots/DesktopMainMenuSlot/images/desktop_main_menu_custom_component.png +0 -0
  84. package/dist/plugin-slots/DesktopMainMenuSlot/images/desktop_main_menu_custom_components_before_after.png +0 -0
  85. package/dist/plugin-slots/DesktopMainMenuSlot/images/desktop_main_menu_replace_all_items.png +0 -0
  86. package/dist/plugin-slots/DesktopMainMenuSlot/index.js +0 -20
  87. package/dist/plugin-slots/DesktopMainMenuSlot/index.js.map +0 -1
  88. package/dist/plugin-slots/DesktopSecondaryMenuSlot/README.md +0 -132
  89. package/dist/plugin-slots/DesktopSecondaryMenuSlot/images/desktop_secondary_menu_custom_component.png +0 -0
  90. package/dist/plugin-slots/DesktopSecondaryMenuSlot/images/desktop_secondary_menu_custom_components_before_after.png +0 -0
  91. package/dist/plugin-slots/DesktopSecondaryMenuSlot/images/desktop_secondary_menu_modify_items.png +0 -0
  92. package/dist/plugin-slots/DesktopSecondaryMenuSlot/index.js +0 -20
  93. package/dist/plugin-slots/DesktopSecondaryMenuSlot/index.js.map +0 -1
  94. package/dist/plugin-slots/DesktopUserMenuSlot/README.md +0 -144
  95. package/dist/plugin-slots/DesktopUserMenuSlot/images/desktop_user_menu_custom_component.png +0 -0
  96. package/dist/plugin-slots/DesktopUserMenuSlot/images/desktop_user_menu_custom_components_before_after.png +0 -0
  97. package/dist/plugin-slots/DesktopUserMenuSlot/images/desktop_user_menu_modify_items.png +0 -0
  98. package/dist/plugin-slots/DesktopUserMenuSlot/index.js +0 -20
  99. package/dist/plugin-slots/DesktopUserMenuSlot/index.js.map +0 -1
  100. package/dist/plugin-slots/DesktopUserMenuToggleSlot/README.md +0 -74
  101. package/dist/plugin-slots/DesktopUserMenuToggleSlot/images/desktop_user_menu_custom_component.png +0 -0
  102. package/dist/plugin-slots/DesktopUserMenuToggleSlot/images/desktop_user_menu_modified_toggle.png +0 -0
  103. package/dist/plugin-slots/DesktopUserMenuToggleSlot/index.js +0 -19
  104. package/dist/plugin-slots/DesktopUserMenuToggleSlot/index.js.map +0 -1
  105. package/dist/plugin-slots/LearningHelpSlot/README.md +0 -44
  106. package/dist/plugin-slots/LearningHelpSlot/images/learning_help_custom_component.png +0 -0
  107. package/dist/plugin-slots/LearningHelpSlot/index.js +0 -11
  108. package/dist/plugin-slots/LearningHelpSlot/index.js.map +0 -1
  109. package/dist/plugin-slots/LearningLoggedOutItemsSlot/README.md +0 -135
  110. package/dist/plugin-slots/LearningLoggedOutItemsSlot/images/learning_logged_out_items_custom_component.png +0 -0
  111. package/dist/plugin-slots/LearningLoggedOutItemsSlot/images/learning_logged_out_items_custom_components_before_after.png +0 -0
  112. package/dist/plugin-slots/LearningLoggedOutItemsSlot/images/learning_logged_out_items_modified_items.png +0 -0
  113. package/dist/plugin-slots/LearningLoggedOutItemsSlot/index.js +0 -18
  114. package/dist/plugin-slots/LearningLoggedOutItemsSlot/index.js.map +0 -1
  115. package/dist/plugin-slots/LearningUserMenuSlot/README.md +0 -133
  116. package/dist/plugin-slots/LearningUserMenuSlot/images/learning_user_menu_custom_component.png +0 -0
  117. package/dist/plugin-slots/LearningUserMenuSlot/images/learning_user_menu_custom_components_before_after.png +0 -0
  118. package/dist/plugin-slots/LearningUserMenuSlot/images/learning_user_menu_modified_items.png +0 -0
  119. package/dist/plugin-slots/LearningUserMenuSlot/index.js +0 -18
  120. package/dist/plugin-slots/LearningUserMenuSlot/index.js.map +0 -1
  121. package/dist/plugin-slots/LearningUserMenuToggleSlot/README.md +0 -74
  122. package/dist/plugin-slots/LearningUserMenuToggleSlot/images/learning_user_menu_toggle_custom_component.png +0 -0
  123. package/dist/plugin-slots/LearningUserMenuToggleSlot/images/learning_user_menu_toggle_modified_items.png +0 -0
  124. package/dist/plugin-slots/LearningUserMenuToggleSlot/index.js +0 -19
  125. package/dist/plugin-slots/LearningUserMenuToggleSlot/index.js.map +0 -1
  126. package/dist/plugin-slots/LogoSlot/README.md +0 -72
  127. package/dist/plugin-slots/LogoSlot/index.js +0 -27
  128. package/dist/plugin-slots/LogoSlot/index.js.map +0 -1
  129. package/dist/plugin-slots/MobileHeaderSlot/README.md +0 -44
  130. package/dist/plugin-slots/MobileHeaderSlot/images/mobile_header_custom_component.png +0 -0
  131. package/dist/plugin-slots/MobileHeaderSlot/index.js +0 -16
  132. package/dist/plugin-slots/MobileHeaderSlot/index.js.map +0 -1
  133. package/dist/plugin-slots/MobileLoggedOutItemsSlot/README.md +0 -136
  134. package/dist/plugin-slots/MobileLoggedOutItemsSlot/images/mobile_logged_out_items_custom_component.png +0 -0
  135. package/dist/plugin-slots/MobileLoggedOutItemsSlot/images/mobile_logged_out_items_custom_components_before_after.png +0 -0
  136. package/dist/plugin-slots/MobileLoggedOutItemsSlot/images/mobile_logged_out_items_modify_items.png +0 -0
  137. package/dist/plugin-slots/MobileLoggedOutItemsSlot/index.js +0 -20
  138. package/dist/plugin-slots/MobileLoggedOutItemsSlot/index.js.map +0 -1
  139. package/dist/plugin-slots/MobileMainMenuSlot/README.md +0 -190
  140. package/dist/plugin-slots/MobileMainMenuSlot/images/mobile_main_menu_add_items.png +0 -0
  141. package/dist/plugin-slots/MobileMainMenuSlot/images/mobile_main_menu_custom_component.png +0 -0
  142. package/dist/plugin-slots/MobileMainMenuSlot/images/mobile_main_menu_custom_components_before_after.png +0 -0
  143. package/dist/plugin-slots/MobileMainMenuSlot/images/mobile_main_menu_replace_all_items.png +0 -0
  144. package/dist/plugin-slots/MobileMainMenuSlot/index.js +0 -20
  145. package/dist/plugin-slots/MobileMainMenuSlot/index.js.map +0 -1
  146. package/dist/plugin-slots/MobileUserMenuSlot/README.md +0 -144
  147. package/dist/plugin-slots/MobileUserMenuSlot/images/mobile_user_menu_custom_component.png +0 -0
  148. package/dist/plugin-slots/MobileUserMenuSlot/images/mobile_user_menu_custom_components_before_after.png +0 -0
  149. package/dist/plugin-slots/MobileUserMenuSlot/images/mobile_user_menu_modify_items.png +0 -0
  150. package/dist/plugin-slots/MobileUserMenuSlot/index.js +0 -20
  151. package/dist/plugin-slots/MobileUserMenuSlot/index.js.map +0 -1
  152. package/dist/plugin-slots/MobileUserMenuToggleSlot/README.md +0 -74
  153. package/dist/plugin-slots/MobileUserMenuToggleSlot/images/mobile_user_menu_toggle_custom_component.png +0 -0
  154. package/dist/plugin-slots/MobileUserMenuToggleSlot/images/mobile_user_menu_toggle_modified_items.png +0 -0
  155. package/dist/plugin-slots/MobileUserMenuToggleSlot/index.js +0 -19
  156. package/dist/plugin-slots/MobileUserMenuToggleSlot/index.js.map +0 -1
  157. package/dist/plugin-slots/README.md +0 -26
  158. package/dist/setupTest.js +0 -123
  159. package/dist/studio-header/BrandNav.test.tsx +0 -40
  160. package/dist/studio-header/BrandNav.tsx +0 -25
  161. package/dist/studio-header/CourseLockUp.test.tsx +0 -59
  162. package/dist/studio-header/CourseLockUp.tsx +0 -58
  163. package/dist/studio-header/HeaderBody.test.tsx +0 -102
  164. package/dist/studio-header/HeaderBody.tsx +0 -196
  165. package/dist/studio-header/MobileHeader.tsx +0 -74
  166. package/dist/studio-header/MobileMenu.test.tsx +0 -81
  167. package/dist/studio-header/MobileMenu.tsx +0 -50
  168. package/dist/studio-header/NavDropdownMenu.test.tsx +0 -67
  169. package/dist/studio-header/NavDropdownMenu.tsx +0 -42
  170. package/dist/studio-header/StudioHeader.scss +0 -49
  171. package/dist/studio-header/StudioHeader.test.tsx +0 -200
  172. package/dist/studio-header/StudioHeader.tsx +0 -84
  173. package/dist/studio-header/UserMenu.tsx +0 -66
  174. package/dist/studio-header/index.ts +0 -3
  175. package/dist/studio-header/messages.ts +0 -56
  176. package/dist/studio-header/utils.ts +0 -33
  177. package/dist/test-utils.js +0 -25
  178. package/dist/test-utils.js.map +0 -1
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@epec-fcfm-uchile/frontend-component-header",
3
- "version": "1.0.0",
4
- "description": "The EPEC FCFM header for Open edX",
3
+ "version": "1.0.1",
4
+ "description": "The standard header for Open edX",
5
5
  "main": "dist/index.js",
6
6
  "publishConfig": {
7
7
  "access": "public"
package/dist/Avatar.js DELETED
@@ -1,43 +0,0 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
- import { AvatarIcon } from './Icons';
4
- var Avatar = function Avatar(_ref) {
5
- var size = _ref.size,
6
- src = _ref.src,
7
- alt = _ref.alt,
8
- className = _ref.className;
9
- var avatar = src ? /*#__PURE__*/React.createElement("img", {
10
- className: "d-block w-100 h-100",
11
- src: src,
12
- alt: alt
13
- }) : /*#__PURE__*/React.createElement(AvatarIcon, {
14
- style: {
15
- width: size,
16
- height: size
17
- },
18
- role: "img",
19
- "aria-hidden": true,
20
- focusable: "false"
21
- });
22
- return /*#__PURE__*/React.createElement("span", {
23
- style: {
24
- height: size,
25
- width: size
26
- },
27
- className: "avatar overflow-hidden d-inline-flex rounded-circle ".concat(className)
28
- }, avatar);
29
- };
30
- Avatar.propTypes = {
31
- src: PropTypes.string,
32
- size: PropTypes.string,
33
- alt: PropTypes.string,
34
- className: PropTypes.string
35
- };
36
- Avatar.defaultProps = {
37
- src: null,
38
- size: '2rem',
39
- alt: null,
40
- className: null
41
- };
42
- export default Avatar;
43
- //# sourceMappingURL=Avatar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Avatar.js","names":["React","PropTypes","AvatarIcon","Avatar","_ref","size","src","alt","className","avatar","createElement","style","width","height","role","focusable","concat","propTypes","string","defaultProps"],"sources":["../src/Avatar.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { AvatarIcon } from './Icons';\n\nconst Avatar = ({\n size,\n src,\n alt,\n className,\n}) => {\n const avatar = src ? (\n <img className=\"d-block w-100 h-100\" src={src} alt={alt} />\n ) : (\n <AvatarIcon style={{ width: size, height: size }} role=\"img\" aria-hidden focusable=\"false\" />\n );\n\n return (\n <span\n style={{ height: size, width: size }}\n className={`avatar overflow-hidden d-inline-flex rounded-circle ${className}`}\n >\n {avatar}\n </span>\n );\n};\n\nAvatar.propTypes = {\n src: PropTypes.string,\n size: PropTypes.string,\n alt: PropTypes.string,\n className: PropTypes.string,\n};\n\nAvatar.defaultProps = {\n src: null,\n size: '2rem',\n alt: null,\n className: null,\n};\n\nexport default Avatar;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAElC,SAASC,UAAU,QAAQ,SAAS;AAEpC,IAAMC,MAAM,GAAG,SAATA,MAAMA,CAAAC,IAAA,EAKN;EAAA,IAJJC,IAAI,GAAAD,IAAA,CAAJC,IAAI;IACJC,GAAG,GAAAF,IAAA,CAAHE,GAAG;IACHC,GAAG,GAAAH,IAAA,CAAHG,GAAG;IACHC,SAAS,GAAAJ,IAAA,CAATI,SAAS;EAET,IAAMC,MAAM,GAAGH,GAAG,gBAChBN,KAAA,CAAAU,aAAA;IAAKF,SAAS,EAAC,qBAAqB;IAACF,GAAG,EAAEA,GAAI;IAACC,GAAG,EAAEA;EAAI,CAAE,CAAC,gBAE3DP,KAAA,CAAAU,aAAA,CAACR,UAAU;IAACS,KAAK,EAAE;MAAEC,KAAK,EAAEP,IAAI;MAAEQ,MAAM,EAAER;IAAK,CAAE;IAACS,IAAI,EAAC,KAAK;IAAC,mBAAW;IAACC,SAAS,EAAC;EAAO,CAAE,CAC7F;EAED,oBACEf,KAAA,CAAAU,aAAA;IACEC,KAAK,EAAE;MAAEE,MAAM,EAAER,IAAI;MAAEO,KAAK,EAAEP;IAAK,CAAE;IACrCG,SAAS,yDAAAQ,MAAA,CAAyDR,SAAS;EAAG,GAE7EC,MACG,CAAC;AAEX,CAAC;AAEDN,MAAM,CAACc,SAAS,GAAG;EACjBX,GAAG,EAAEL,SAAS,CAACiB,MAAM;EACrBb,IAAI,EAAEJ,SAAS,CAACiB,MAAM;EACtBX,GAAG,EAAEN,SAAS,CAACiB,MAAM;EACrBV,SAAS,EAAEP,SAAS,CAACiB;AACvB,CAAC;AAEDf,MAAM,CAACgB,YAAY,GAAG;EACpBb,GAAG,EAAE,IAAI;EACTD,IAAI,EAAE,MAAM;EACZE,GAAG,EAAE,IAAI;EACTC,SAAS,EAAE;AACb,CAAC;AAED,eAAeL,MAAM","ignoreList":[]}
package/dist/Header.js DELETED
@@ -1,120 +0,0 @@
1
- function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
2
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
- function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
- function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
5
- function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
6
- function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
7
- import React, { useContext } from 'react';
8
- import Responsive from 'react-responsive';
9
- import { useIntl } from '@edx/frontend-platform/i18n';
10
- import { AppContext } from '@edx/frontend-platform/react';
11
- import { APP_CONFIG_INITIALIZED, ensureConfig, mergeConfig, getConfig, subscribe } from '@edx/frontend-platform';
12
- import PropTypes from 'prop-types';
13
- import DesktopHeaderSlot from './plugin-slots/DesktopHeaderSlot';
14
- import MobileHeaderSlot from './plugin-slots/MobileHeaderSlot';
15
- import messages from './Header.messages';
16
- ensureConfig(['LMS_BASE_URL', 'LOGOUT_URL', 'LOGIN_URL', 'SITE_NAME', 'LOGO_URL', 'ORDER_HISTORY_URL'], 'Header component');
17
- subscribe(APP_CONFIG_INITIALIZED, function () {
18
- mergeConfig({
19
- AUTHN_MINIMAL_HEADER: !!process.env.AUTHN_MINIMAL_HEADER
20
- }, 'Header additional config');
21
- });
22
-
23
- /**
24
- * Header component for the application.
25
- * Displays a header with the provided main menu, secondary menu, and user menu when the user is authenticated.
26
- * If any of the props (mainMenuItems, secondaryMenuItems, userMenuItems) are not provided, default
27
- * items are displayed.
28
- * For more details on how to use this component, please refer to this document:
29
- * https://github.com/openedx/frontend-component-header/blob/master/docs/using_custom_header.rst
30
- *
31
- * @param {list} mainMenuItems - The list of main menu items to display.
32
- * See the documentation for the structure of main menu item.
33
- * @param {list} secondaryMenuItems - The list of secondary menu items to display.
34
- * See the documentation for the structure of secondary menu item.
35
- * @param {list} userMenuItems - The list of user menu items to display.
36
- * See the documentation for the structure of user menu item.
37
- */
38
- var Header = function Header(_ref) {
39
- var mainMenuItems = _ref.mainMenuItems,
40
- secondaryMenuItems = _ref.secondaryMenuItems,
41
- userMenuItems = _ref.userMenuItems;
42
- var _useContext = useContext(AppContext),
43
- authenticatedUser = _useContext.authenticatedUser,
44
- config = _useContext.config;
45
- var intl = useIntl();
46
- var defaultMainMenu = [{
47
- type: 'item',
48
- href: "".concat(config.LMS_BASE_URL, "/dashboard"),
49
- content: intl.formatMessage(messages['header.links.courses'])
50
- }];
51
- var defaultUserMenu = authenticatedUser === null ? [] : [{
52
- heading: '',
53
- items: [{
54
- type: 'item',
55
- href: "".concat(config.LMS_BASE_URL, "/dashboard"),
56
- content: intl.formatMessage(messages['header.user.menu.dashboard'])
57
- }].concat(_toConsumableArray(config.ORDER_HISTORY_URL ? [{
58
- type: 'item',
59
- href: config.ORDER_HISTORY_URL,
60
- content: intl.formatMessage(messages['header.user.menu.order.history'])
61
- }] : []), [{
62
- type: 'item',
63
- href: config.LOGOUT_URL,
64
- content: intl.formatMessage(messages['header.user.menu.logout'])
65
- }])
66
- }];
67
- var mainMenu = mainMenuItems || defaultMainMenu;
68
- var secondaryMenu = secondaryMenuItems || [];
69
- var userMenu = authenticatedUser === null ? [] : userMenuItems || defaultUserMenu;
70
- var loggedOutItems = [{
71
- type: 'item',
72
- href: config.LOGIN_URL,
73
- content: intl.formatMessage(messages['header.user.menu.login'])
74
- }, {
75
- type: 'item',
76
- href: "".concat(config.LMS_BASE_URL, "/register"),
77
- content: intl.formatMessage(messages['header.user.menu.register'])
78
- }];
79
- var props = {
80
- logo: config.LOGO_URL,
81
- logoAltText: config.SITE_NAME,
82
- logoDestination: "".concat(config.LMS_BASE_URL, "/"),
83
- loggedIn: authenticatedUser !== null,
84
- username: authenticatedUser !== null ? authenticatedUser.username : null,
85
- avatar: authenticatedUser !== null ? authenticatedUser.avatar : null,
86
- mainMenu: getConfig().AUTHN_MINIMAL_HEADER ? [] : mainMenu,
87
- secondaryMenu: getConfig().AUTHN_MINIMAL_HEADER ? [] : secondaryMenu,
88
- userMenu: getConfig().AUTHN_MINIMAL_HEADER ? [] : userMenu,
89
- loggedOutItems: getConfig().AUTHN_MINIMAL_HEADER ? [] : loggedOutItems
90
- };
91
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Responsive, {
92
- maxWidth: 769
93
- }, /*#__PURE__*/React.createElement(MobileHeaderSlot, {
94
- props: props
95
- })), /*#__PURE__*/React.createElement(Responsive, {
96
- minWidth: 769
97
- }, /*#__PURE__*/React.createElement(DesktopHeaderSlot, {
98
- props: props
99
- })));
100
- };
101
- Header.defaultProps = {
102
- mainMenuItems: null,
103
- secondaryMenuItems: null,
104
- userMenuItems: null
105
- };
106
- Header.propTypes = {
107
- mainMenuItems: PropTypes.oneOfType([PropTypes.node, PropTypes.array]),
108
- secondaryMenuItems: PropTypes.oneOfType([PropTypes.node, PropTypes.array]),
109
- userMenuItems: PropTypes.arrayOf(PropTypes.shape({
110
- heading: PropTypes.string,
111
- items: PropTypes.arrayOf(PropTypes.shape({
112
- type: PropTypes.oneOf(['item', 'menu']),
113
- href: PropTypes.string,
114
- content: PropTypes.string,
115
- isActive: PropTypes.bool
116
- }))
117
- }))
118
- };
119
- export default Header;
120
- //# sourceMappingURL=Header.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Header.js","names":["React","useContext","Responsive","useIntl","AppContext","APP_CONFIG_INITIALIZED","ensureConfig","mergeConfig","getConfig","subscribe","PropTypes","DesktopHeaderSlot","MobileHeaderSlot","messages","AUTHN_MINIMAL_HEADER","process","env","Header","_ref","mainMenuItems","secondaryMenuItems","userMenuItems","_useContext","authenticatedUser","config","intl","defaultMainMenu","type","href","concat","LMS_BASE_URL","content","formatMessage","defaultUserMenu","heading","items","_toConsumableArray","ORDER_HISTORY_URL","LOGOUT_URL","mainMenu","secondaryMenu","userMenu","loggedOutItems","LOGIN_URL","props","logo","LOGO_URL","logoAltText","SITE_NAME","logoDestination","loggedIn","username","avatar","createElement","Fragment","maxWidth","minWidth","defaultProps","propTypes","oneOfType","node","array","arrayOf","shape","string","oneOf","isActive","bool"],"sources":["../src/Header.jsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport Responsive from 'react-responsive';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { AppContext } from '@edx/frontend-platform/react';\nimport {\n APP_CONFIG_INITIALIZED,\n ensureConfig,\n mergeConfig,\n getConfig,\n subscribe,\n} from '@edx/frontend-platform';\n\nimport PropTypes from 'prop-types';\nimport DesktopHeaderSlot from './plugin-slots/DesktopHeaderSlot';\nimport MobileHeaderSlot from './plugin-slots/MobileHeaderSlot';\n\nimport messages from './Header.messages';\n\nensureConfig([\n 'LMS_BASE_URL',\n 'LOGOUT_URL',\n 'LOGIN_URL',\n 'SITE_NAME',\n 'LOGO_URL',\n 'ORDER_HISTORY_URL',\n], 'Header component');\n\nsubscribe(APP_CONFIG_INITIALIZED, () => {\n mergeConfig({\n AUTHN_MINIMAL_HEADER: !!process.env.AUTHN_MINIMAL_HEADER,\n }, 'Header additional config');\n});\n\n/**\n * Header component for the application.\n * Displays a header with the provided main menu, secondary menu, and user menu when the user is authenticated.\n * If any of the props (mainMenuItems, secondaryMenuItems, userMenuItems) are not provided, default\n * items are displayed.\n * For more details on how to use this component, please refer to this document:\n * https://github.com/openedx/frontend-component-header/blob/master/docs/using_custom_header.rst\n *\n * @param {list} mainMenuItems - The list of main menu items to display.\n * See the documentation for the structure of main menu item.\n * @param {list} secondaryMenuItems - The list of secondary menu items to display.\n * See the documentation for the structure of secondary menu item.\n * @param {list} userMenuItems - The list of user menu items to display.\n * See the documentation for the structure of user menu item.\n */\nconst Header = ({\n mainMenuItems, secondaryMenuItems, userMenuItems,\n}) => {\n const { authenticatedUser, config } = useContext(AppContext);\n const intl = useIntl();\n\n const defaultMainMenu = [\n {\n type: 'item',\n href: `${config.LMS_BASE_URL}/dashboard`,\n content: intl.formatMessage(messages['header.links.courses']),\n },\n ];\n const defaultUserMenu = authenticatedUser === null ? [] : [{\n heading: '',\n items: [\n {\n type: 'item',\n href: `${config.LMS_BASE_URL}/dashboard`,\n content: intl.formatMessage(messages['header.user.menu.dashboard']),\n },\n // {\n // type: 'item',\n // href: `${config.ACCOUNT_PROFILE_URL}/u/${authenticatedUser.username}`,\n // content: intl.formatMessage(messages['header.user.menu.profile']),\n // },\n // {\n // type: 'item',\n // href: config.ACCOUNT_SETTINGS_URL,\n // content: intl.formatMessage(messages['header.user.menu.account.settings']),\n // },\n // Users should only see Order History if have a ORDER_HISTORY_URL define in the environment.\n ...(config.ORDER_HISTORY_URL ? [{\n type: 'item',\n href: config.ORDER_HISTORY_URL,\n content: intl.formatMessage(messages['header.user.menu.order.history']),\n }] : []),\n {\n type: 'item',\n href: config.LOGOUT_URL,\n content: intl.formatMessage(messages['header.user.menu.logout']),\n },\n ],\n }];\n\n const mainMenu = mainMenuItems || defaultMainMenu;\n const secondaryMenu = secondaryMenuItems || [];\n const userMenu = authenticatedUser === null ? [] : userMenuItems || defaultUserMenu;\n\n const loggedOutItems = [\n {\n type: 'item',\n href: config.LOGIN_URL,\n content: intl.formatMessage(messages['header.user.menu.login']),\n },\n {\n type: 'item',\n href: `${config.LMS_BASE_URL}/register`,\n content: intl.formatMessage(messages['header.user.menu.register']),\n },\n ];\n\n const props = {\n logo: config.LOGO_URL,\n logoAltText: config.SITE_NAME,\n logoDestination: `${config.LMS_BASE_URL}/`,\n loggedIn: authenticatedUser !== null,\n username: authenticatedUser !== null ? authenticatedUser.username : null,\n avatar: authenticatedUser !== null ? authenticatedUser.avatar : null,\n mainMenu: getConfig().AUTHN_MINIMAL_HEADER ? [] : mainMenu,\n secondaryMenu: getConfig().AUTHN_MINIMAL_HEADER ? [] : secondaryMenu,\n userMenu: getConfig().AUTHN_MINIMAL_HEADER ? [] : userMenu,\n loggedOutItems: getConfig().AUTHN_MINIMAL_HEADER ? [] : loggedOutItems,\n };\n\n return (\n <>\n <Responsive maxWidth={769}>\n <MobileHeaderSlot props={props} />\n </Responsive>\n <Responsive minWidth={769}>\n <DesktopHeaderSlot props={props} />\n </Responsive>\n </>\n );\n};\n\nHeader.defaultProps = {\n mainMenuItems: null,\n secondaryMenuItems: null,\n userMenuItems: null,\n};\n\nHeader.propTypes = {\n mainMenuItems: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.array,\n ]),\n secondaryMenuItems: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.array,\n ]),\n userMenuItems: PropTypes.arrayOf(PropTypes.shape({\n heading: PropTypes.string,\n items: PropTypes.arrayOf(PropTypes.shape({\n type: PropTypes.oneOf(['item', 'menu']),\n href: PropTypes.string,\n content: PropTypes.string,\n isActive: PropTypes.bool,\n })),\n })),\n};\n\nexport default Header;\n"],"mappings":"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","ignoreList":[]}
@@ -1,110 +0,0 @@
1
- import { defineMessages } from '@edx/frontend-platform/i18n';
2
- var messages = defineMessages({
3
- 'header.links.courses': {
4
- id: 'header.links.courses',
5
- defaultMessage: 'Courses',
6
- description: 'Link to the learner course dashboard'
7
- },
8
- 'header.links.programs': {
9
- id: 'header.links.programs',
10
- defaultMessage: 'Programs',
11
- description: 'Link to the learner program dashboard'
12
- },
13
- 'header.links.content.search': {
14
- id: 'header.links.content.search',
15
- defaultMessage: 'Discover New',
16
- description: 'Link to the content search page'
17
- },
18
- 'header.links.schools': {
19
- id: 'header.links.schools',
20
- defaultMessage: 'Schools & Partners',
21
- description: 'Link to the schools and partners landing page'
22
- },
23
- 'header.user.menu.dashboard': {
24
- id: 'header.user.menu.dashboard',
25
- defaultMessage: 'Dashboard',
26
- description: 'Link to the user dashboard'
27
- },
28
- 'header.user.menu.profile': {
29
- id: 'header.user.menu.profile',
30
- defaultMessage: 'Profile',
31
- description: 'Link to the user profile'
32
- },
33
- 'header.user.menu.account.settings': {
34
- id: 'header.user.menu.account.settings',
35
- defaultMessage: 'Account',
36
- description: 'Link to account settings'
37
- },
38
- 'header.user.menu.order.history': {
39
- id: 'header.user.menu.order.history',
40
- defaultMessage: 'Order History',
41
- description: 'Link to order history'
42
- },
43
- 'header.user.menu.logout': {
44
- id: 'header.user.menu.logout',
45
- defaultMessage: 'Logout',
46
- description: 'Logout link'
47
- },
48
- 'header.user.menu.login': {
49
- id: 'header.user.menu.login',
50
- defaultMessage: 'Login',
51
- description: 'Login link'
52
- },
53
- 'header.user.menu.register': {
54
- id: 'header.user.menu.register',
55
- defaultMessage: 'Sign Up',
56
- description: 'Link to registration'
57
- },
58
- 'header.user.menu.studio.home': {
59
- id: 'header.user.menu.studio.home',
60
- defaultMessage: 'Studio Home',
61
- description: 'Link to the Studio Home'
62
- },
63
- 'header.label.account.nav': {
64
- id: 'header.label.account.nav',
65
- defaultMessage: 'Account',
66
- description: 'The aria label for the account menu nav'
67
- },
68
- 'header.label.account.menu': {
69
- id: 'header.label.account.menu',
70
- defaultMessage: 'Account Menu',
71
- description: 'The aria label for the account menu trigger'
72
- },
73
- 'header.label.account.menu.for': {
74
- id: 'header.label.account.menu.for',
75
- defaultMessage: 'Account menu for {username}',
76
- description: 'The aria label for the account menu trigger when the username is displayed in it'
77
- },
78
- 'header.label.main.nav': {
79
- id: 'header.label.main.nav',
80
- defaultMessage: 'Main',
81
- description: 'The aria label for the main menu nav'
82
- },
83
- 'header.label.main.menu': {
84
- id: 'header.label.main.menu',
85
- defaultMessage: 'Main Menu',
86
- description: 'The aria label for the main menu trigger'
87
- },
88
- 'header.label.main.header': {
89
- id: 'header.label.main.header',
90
- defaultMessage: 'Main',
91
- description: 'The aria label for the main header'
92
- },
93
- 'header.label.secondary.nav': {
94
- id: 'header.label.secondary.nav',
95
- defaultMessage: 'Secondary',
96
- description: 'The aria label for the seconary nav'
97
- },
98
- 'header.label.skip.nav': {
99
- id: 'header.label.skip.nav',
100
- defaultMessage: 'Skip to main content',
101
- description: 'A link used by screen readers to allow users to skip to the main content of the page.'
102
- },
103
- 'header.label.app.nav': {
104
- id: 'header.label.app.nav',
105
- defaultMessage: 'App',
106
- description: 'The aria label for the app Nav'
107
- }
108
- });
109
- export default messages;
110
- //# sourceMappingURL=Header.messages.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Header.messages.js","names":["defineMessages","messages","id","defaultMessage","description"],"sources":["../src/Header.messages.jsx"],"sourcesContent":["import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n 'header.links.courses': {\n id: 'header.links.courses',\n defaultMessage: 'Courses',\n description: 'Link to the learner course dashboard',\n },\n 'header.links.programs': {\n id: 'header.links.programs',\n defaultMessage: 'Programs',\n description: 'Link to the learner program dashboard',\n },\n 'header.links.content.search': {\n id: 'header.links.content.search',\n defaultMessage: 'Discover New',\n description: 'Link to the content search page',\n },\n 'header.links.schools': {\n id: 'header.links.schools',\n defaultMessage: 'Schools & Partners',\n description: 'Link to the schools and partners landing page',\n },\n 'header.user.menu.dashboard': {\n id: 'header.user.menu.dashboard',\n defaultMessage: 'Dashboard',\n description: 'Link to the user dashboard',\n },\n 'header.user.menu.profile': {\n id: 'header.user.menu.profile',\n defaultMessage: 'Profile',\n description: 'Link to the user profile',\n },\n 'header.user.menu.account.settings': {\n id: 'header.user.menu.account.settings',\n defaultMessage: 'Account',\n description: 'Link to account settings',\n },\n 'header.user.menu.order.history': {\n id: 'header.user.menu.order.history',\n defaultMessage: 'Order History',\n description: 'Link to order history',\n },\n 'header.user.menu.logout': {\n id: 'header.user.menu.logout',\n defaultMessage: 'Logout',\n description: 'Logout link',\n },\n 'header.user.menu.login': {\n id: 'header.user.menu.login',\n defaultMessage: 'Login',\n description: 'Login link',\n },\n 'header.user.menu.register': {\n id: 'header.user.menu.register',\n defaultMessage: 'Sign Up',\n description: 'Link to registration',\n },\n 'header.user.menu.studio.home': {\n id: 'header.user.menu.studio.home',\n defaultMessage: 'Studio Home',\n description: 'Link to the Studio Home',\n },\n 'header.label.account.nav': {\n id: 'header.label.account.nav',\n defaultMessage: 'Account',\n description: 'The aria label for the account menu nav',\n },\n 'header.label.account.menu': {\n id: 'header.label.account.menu',\n defaultMessage: 'Account Menu',\n description: 'The aria label for the account menu trigger',\n },\n 'header.label.account.menu.for': {\n id: 'header.label.account.menu.for',\n defaultMessage: 'Account menu for {username}',\n description: 'The aria label for the account menu trigger when the username is displayed in it',\n },\n 'header.label.main.nav': {\n id: 'header.label.main.nav',\n defaultMessage: 'Main',\n description: 'The aria label for the main menu nav',\n },\n 'header.label.main.menu': {\n id: 'header.label.main.menu',\n defaultMessage: 'Main Menu',\n description: 'The aria label for the main menu trigger',\n },\n 'header.label.main.header': {\n id: 'header.label.main.header',\n defaultMessage: 'Main',\n description: 'The aria label for the main header',\n },\n 'header.label.secondary.nav': {\n id: 'header.label.secondary.nav',\n defaultMessage: 'Secondary',\n description: 'The aria label for the seconary nav',\n },\n 'header.label.skip.nav': {\n id: 'header.label.skip.nav',\n defaultMessage: 'Skip to main content',\n description: 'A link used by screen readers to allow users to skip to the main content of the page.',\n },\n 'header.label.app.nav': {\n id: 'header.label.app.nav',\n defaultMessage: 'App',\n description: 'The aria label for the app Nav',\n },\n});\n\nexport default messages;\n"],"mappings":"AAAA,SAASA,cAAc,QAAQ,6BAA6B;AAE5D,IAAMC,QAAQ,GAAGD,cAAc,CAAC;EAC9B,sBAAsB,EAAE;IACtBE,EAAE,EAAE,sBAAsB;IAC1BC,cAAc,EAAE,SAAS;IACzBC,WAAW,EAAE;EACf,CAAC;EACD,uBAAuB,EAAE;IACvBF,EAAE,EAAE,uBAAuB;IAC3BC,cAAc,EAAE,UAAU;IAC1BC,WAAW,EAAE;EACf,CAAC;EACD,6BAA6B,EAAE;IAC7BF,EAAE,EAAE,6BAA6B;IACjCC,cAAc,EAAE,cAAc;IAC9BC,WAAW,EAAE;EACf,CAAC;EACD,sBAAsB,EAAE;IACtBF,EAAE,EAAE,sBAAsB;IAC1BC,cAAc,EAAE,oBAAoB;IACpCC,WAAW,EAAE;EACf,CAAC;EACD,4BAA4B,EAAE;IAC5BF,EAAE,EAAE,4BAA4B;IAChCC,cAAc,EAAE,WAAW;IAC3BC,WAAW,EAAE;EACf,CAAC;EACD,0BAA0B,EAAE;IAC1BF,EAAE,EAAE,0BAA0B;IAC9BC,cAAc,EAAE,SAAS;IACzBC,WAAW,EAAE;EACf,CAAC;EACD,mCAAmC,EAAE;IACnCF,EAAE,EAAE,mCAAmC;IACvCC,cAAc,EAAE,SAAS;IACzBC,WAAW,EAAE;EACf,CAAC;EACD,gCAAgC,EAAE;IAChCF,EAAE,EAAE,gCAAgC;IACpCC,cAAc,EAAE,eAAe;IAC/BC,WAAW,EAAE;EACf,CAAC;EACD,yBAAyB,EAAE;IACzBF,EAAE,EAAE,yBAAyB;IAC7BC,cAAc,EAAE,QAAQ;IACxBC,WAAW,EAAE;EACf,CAAC;EACD,wBAAwB,EAAE;IACxBF,EAAE,EAAE,wBAAwB;IAC5BC,cAAc,EAAE,OAAO;IACvBC,WAAW,EAAE;EACf,CAAC;EACD,2BAA2B,EAAE;IAC3BF,EAAE,EAAE,2BAA2B;IAC/BC,cAAc,EAAE,SAAS;IACzBC,WAAW,EAAE;EACf,CAAC;EACD,8BAA8B,EAAE;IAC9BF,EAAE,EAAE,8BAA8B;IAClCC,cAAc,EAAE,aAAa;IAC7BC,WAAW,EAAE;EACf,CAAC;EACD,0BAA0B,EAAE;IAC1BF,EAAE,EAAE,0BAA0B;IAC9BC,cAAc,EAAE,SAAS;IACzBC,WAAW,EAAE;EACf,CAAC;EACD,2BAA2B,EAAE;IAC3BF,EAAE,EAAE,2BAA2B;IAC/BC,cAAc,EAAE,cAAc;IAC9BC,WAAW,EAAE;EACf,CAAC;EACD,+BAA+B,EAAE;IAC/BF,EAAE,EAAE,+BAA+B;IACnCC,cAAc,EAAE,6BAA6B;IAC7CC,WAAW,EAAE;EACf,CAAC;EACD,uBAAuB,EAAE;IACvBF,EAAE,EAAE,uBAAuB;IAC3BC,cAAc,EAAE,MAAM;IACtBC,WAAW,EAAE;EACf,CAAC;EACD,wBAAwB,EAAE;IACxBF,EAAE,EAAE,wBAAwB;IAC5BC,cAAc,EAAE,WAAW;IAC3BC,WAAW,EAAE;EACf,CAAC;EACD,0BAA0B,EAAE;IAC1BF,EAAE,EAAE,0BAA0B;IAC9BC,cAAc,EAAE,MAAM;IACtBC,WAAW,EAAE;EACf,CAAC;EACD,4BAA4B,EAAE;IAC5BF,EAAE,EAAE,4BAA4B;IAChCC,cAAc,EAAE,WAAW;IAC3BC,WAAW,EAAE;EACf,CAAC;EACD,uBAAuB,EAAE;IACvBF,EAAE,EAAE,uBAAuB;IAC3BC,cAAc,EAAE,sBAAsB;IACtCC,WAAW,EAAE;EACf,CAAC;EACD,sBAAsB,EAAE;IACtBF,EAAE,EAAE,sBAAsB;IAC1BC,cAAc,EAAE,KAAK;IACrBC,WAAW,EAAE;EACf;AACF,CAAC,CAAC;AAEF,eAAeH,QAAQ","ignoreList":[]}
@@ -1,107 +0,0 @@
1
- /* eslint-disable react/prop-types */
2
- import React from 'react';
3
- import { IntlProvider } from '@edx/frontend-platform/i18n';
4
- import TestRenderer from 'react-test-renderer';
5
- import { AppContext } from '@edx/frontend-platform/react';
6
- import { Context as ResponsiveContext } from 'react-responsive';
7
-
8
- import Header from './index';
9
-
10
- const HeaderComponent = ({ width, contextValue }) => (
11
- <ResponsiveContext.Provider value={width}>
12
- <IntlProvider locale="en" messages={{}}>
13
- <AppContext.Provider
14
- value={contextValue}
15
- >
16
- <Header />
17
- </AppContext.Provider>
18
- </IntlProvider>
19
- </ResponsiveContext.Provider>
20
- );
21
-
22
- describe('<Header />', () => {
23
- it('renders correctly for anonymous desktop', () => {
24
- const contextValue = {
25
- authenticatedUser: null,
26
- config: {
27
- LMS_BASE_URL: process.env.LMS_BASE_URL,
28
- SITE_NAME: process.env.SITE_NAME,
29
- LOGIN_URL: process.env.LOGIN_URL,
30
- LOGOUT_URL: process.env.LOGOUT_URL,
31
- LOGO_URL: process.env.LOGO_URL,
32
- },
33
- };
34
- const component = <HeaderComponent width={{ width: 1280 }} contextValue={contextValue} />;
35
-
36
- // FIXME: react-test-renderer is deprecated. Convert to @testing-library/react.
37
- const wrapper = TestRenderer.create(component);
38
-
39
- expect(wrapper.toJSON()).toMatchSnapshot();
40
- });
41
-
42
- it('renders correctly for authenticated desktop', () => {
43
- const contextValue = {
44
- authenticatedUser: {
45
- userId: 'abc123',
46
- username: 'edX',
47
- roles: [],
48
- administrator: false,
49
- },
50
- config: {
51
- LMS_BASE_URL: process.env.LMS_BASE_URL,
52
- SITE_NAME: process.env.SITE_NAME,
53
- LOGIN_URL: process.env.LOGIN_URL,
54
- LOGOUT_URL: process.env.LOGOUT_URL,
55
- LOGO_URL: process.env.LOGO_URL,
56
- },
57
- };
58
- const component = <HeaderComponent width={{ width: 1280 }} contextValue={contextValue} />;
59
-
60
- // FIXME: react-test-renderer is deprecated. Convert to @testing-library/react.
61
- const wrapper = TestRenderer.create(component);
62
-
63
- expect(wrapper.toJSON()).toMatchSnapshot();
64
- });
65
-
66
- it('renders correctly for anonymous mobile', () => {
67
- const contextValue = {
68
- authenticatedUser: null,
69
- config: {
70
- LMS_BASE_URL: process.env.LMS_BASE_URL,
71
- SITE_NAME: process.env.SITE_NAME,
72
- LOGIN_URL: process.env.LOGIN_URL,
73
- LOGOUT_URL: process.env.LOGOUT_URL,
74
- LOGO_URL: process.env.LOGO_URL,
75
- },
76
- };
77
- const component = <HeaderComponent width={{ width: 500 }} contextValue={contextValue} />;
78
-
79
- // FIXME: react-test-renderer is deprecated. Convert to @testing-library/react.
80
- const wrapper = TestRenderer.create(component);
81
-
82
- expect(wrapper.toJSON()).toMatchSnapshot();
83
- });
84
-
85
- it('renders correctly for authenticated mobile', () => {
86
- const contextValue = {
87
- authenticatedUser: {
88
- userId: 'abc123',
89
- username: 'edX',
90
- roles: [],
91
- administrator: false,
92
- },
93
- config: {
94
- LMS_BASE_URL: process.env.LMS_BASE_URL,
95
- SITE_NAME: process.env.SITE_NAME,
96
- LOGIN_URL: process.env.LOGIN_URL,
97
- LOGOUT_URL: process.env.LOGOUT_URL,
98
- LOGO_URL: process.env.LOGO_URL,
99
- },
100
- };
101
- const component = <HeaderComponent width={{ width: 500 }} contextValue={contextValue} />;
102
-
103
- const wrapper = TestRenderer.create(component);
104
-
105
- expect(wrapper.toJSON()).toMatchSnapshot();
106
- });
107
- });
package/dist/Icons.js DELETED
@@ -1,52 +0,0 @@
1
- function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
- import React from 'react';
3
- export var MenuIcon = function MenuIcon(props) {
4
- return /*#__PURE__*/React.createElement("svg", _extends({
5
- width: "24px",
6
- height: "24px",
7
- viewBox: "0 0 24 24",
8
- version: "1.1"
9
- }, props), /*#__PURE__*/React.createElement("rect", {
10
- fill: "currentColor",
11
- x: "2",
12
- y: "5",
13
- width: "20",
14
- height: "2"
15
- }), /*#__PURE__*/React.createElement("rect", {
16
- fill: "currentColor",
17
- x: "2",
18
- y: "11",
19
- width: "20",
20
- height: "2"
21
- }), /*#__PURE__*/React.createElement("rect", {
22
- fill: "currentColor",
23
- x: "2",
24
- y: "17",
25
- width: "20",
26
- height: "2"
27
- }));
28
- };
29
- export var AvatarIcon = function AvatarIcon(props) {
30
- return /*#__PURE__*/React.createElement("svg", _extends({
31
- width: "24px",
32
- height: "24px",
33
- viewBox: "0 0 24 24",
34
- version: "1.1"
35
- }, props), /*#__PURE__*/React.createElement("path", {
36
- d: "M4.10255106,18.1351061 C4.7170266,16.0581859 8.01891846,14.4720277 12,14.4720277 C15.9810815,14.4720277 19.2829734,16.0581859 19.8974489,18.1351061 C21.215206,16.4412566 22,14.3122775 22,12 C22,6.4771525 17.5228475,2 12,2 C6.4771525,2 2,6.4771525 2,12 C2,14.3122775 2.78479405,16.4412566 4.10255106,18.1351061 Z M12,24 C5.372583,24 0,18.627417 0,12 C0,5.372583 5.372583,0 12,0 C18.627417,0 24,5.372583 24,12 C24,18.627417 18.627417,24 12,24 Z M12,13 C9.790861,13 8,11.209139 8,9 C8,6.790861 9.790861,5 12,5 C14.209139,5 16,6.790861 16,9 C16,11.209139 14.209139,13 12,13 Z",
37
- fill: "currentColor"
38
- }));
39
- };
40
- export var CaretIcon = function CaretIcon(props) {
41
- return /*#__PURE__*/React.createElement("svg", _extends({
42
- width: "16px",
43
- height: "16px",
44
- viewBox: "0 0 16 16",
45
- version: "1.1"
46
- }, props), /*#__PURE__*/React.createElement("path", {
47
- d: "M7,4 L7,8 L11,8 L11,10 L5,10 L5,4 L7,4 Z",
48
- fill: "currentColor",
49
- transform: "translate(8.000000, 7.000000) rotate(-45.000000) translate(-8.000000, -7.000000) "
50
- }));
51
- };
52
- //# sourceMappingURL=Icons.js.map
package/dist/Icons.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"Icons.js","names":["React","MenuIcon","props","createElement","_extends","width","height","viewBox","version","fill","x","y","AvatarIcon","d","CaretIcon","transform"],"sources":["../src/Icons.jsx"],"sourcesContent":["import React from 'react';\n\nexport const MenuIcon = (props) => (\n <svg\n width=\"24px\"\n height=\"24px\"\n viewBox=\"0 0 24 24\"\n version=\"1.1\"\n {...props}\n >\n <rect fill=\"currentColor\" x=\"2\" y=\"5\" width=\"20\" height=\"2\" />\n <rect fill=\"currentColor\" x=\"2\" y=\"11\" width=\"20\" height=\"2\" />\n <rect fill=\"currentColor\" x=\"2\" y=\"17\" width=\"20\" height=\"2\" />\n </svg>\n);\n\nexport const AvatarIcon = (props) => (\n <svg\n width=\"24px\"\n height=\"24px\"\n viewBox=\"0 0 24 24\"\n version=\"1.1\"\n {...props}\n >\n <path\n d=\"M4.10255106,18.1351061 C4.7170266,16.0581859 8.01891846,14.4720277 12,14.4720277 C15.9810815,14.4720277 19.2829734,16.0581859 19.8974489,18.1351061 C21.215206,16.4412566 22,14.3122775 22,12 C22,6.4771525 17.5228475,2 12,2 C6.4771525,2 2,6.4771525 2,12 C2,14.3122775 2.78479405,16.4412566 4.10255106,18.1351061 Z M12,24 C5.372583,24 0,18.627417 0,12 C0,5.372583 5.372583,0 12,0 C18.627417,0 24,5.372583 24,12 C24,18.627417 18.627417,24 12,24 Z M12,13 C9.790861,13 8,11.209139 8,9 C8,6.790861 9.790861,5 12,5 C14.209139,5 16,6.790861 16,9 C16,11.209139 14.209139,13 12,13 Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport const CaretIcon = (props) => (\n <svg\n width=\"16px\"\n height=\"16px\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n {...props}\n >\n <path\n d=\"M7,4 L7,8 L11,8 L11,10 L5,10 L5,4 L7,4 Z\"\n fill=\"currentColor\"\n transform=\"translate(8.000000, 7.000000) rotate(-45.000000) translate(-8.000000, -7.000000) \"\n />\n </svg>\n);\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,OAAO,IAAMC,QAAQ,GAAG,SAAXA,QAAQA,CAAIC,KAAK;EAAA,oBAC5BF,KAAA,CAAAG,aAAA,QAAAC,QAAA;IACEC,KAAK,EAAC,MAAM;IACZC,MAAM,EAAC,MAAM;IACbC,OAAO,EAAC,WAAW;IACnBC,OAAO,EAAC;EAAK,GACTN,KAAK,gBAETF,KAAA,CAAAG,aAAA;IAAMM,IAAI,EAAC,cAAc;IAACC,CAAC,EAAC,GAAG;IAACC,CAAC,EAAC,GAAG;IAACN,KAAK,EAAC,IAAI;IAACC,MAAM,EAAC;EAAG,CAAE,CAAC,eAC9DN,KAAA,CAAAG,aAAA;IAAMM,IAAI,EAAC,cAAc;IAACC,CAAC,EAAC,GAAG;IAACC,CAAC,EAAC,IAAI;IAACN,KAAK,EAAC,IAAI;IAACC,MAAM,EAAC;EAAG,CAAE,CAAC,eAC/DN,KAAA,CAAAG,aAAA;IAAMM,IAAI,EAAC,cAAc;IAACC,CAAC,EAAC,GAAG;IAACC,CAAC,EAAC,IAAI;IAACN,KAAK,EAAC,IAAI;IAACC,MAAM,EAAC;EAAG,CAAE,CAC3D,CAAC;AAAA,CACP;AAED,OAAO,IAAMM,UAAU,GAAG,SAAbA,UAAUA,CAAIV,KAAK;EAAA,oBAC9BF,KAAA,CAAAG,aAAA,QAAAC,QAAA;IACEC,KAAK,EAAC,MAAM;IACZC,MAAM,EAAC,MAAM;IACbC,OAAO,EAAC,WAAW;IACnBC,OAAO,EAAC;EAAK,GACTN,KAAK,gBAETF,KAAA,CAAAG,aAAA;IACEU,CAAC,EAAC,6jBAA6jB;IAC/jBJ,IAAI,EAAC;EAAc,CACpB,CACE,CAAC;AAAA,CACP;AAED,OAAO,IAAMK,SAAS,GAAG,SAAZA,SAASA,CAAIZ,KAAK;EAAA,oBAC7BF,KAAA,CAAAG,aAAA,QAAAC,QAAA;IACEC,KAAK,EAAC,MAAM;IACZC,MAAM,EAAC,MAAM;IACbC,OAAO,EAAC,WAAW;IACnBC,OAAO,EAAC;EAAK,GACTN,KAAK,gBAETF,KAAA,CAAAG,aAAA;IACEU,CAAC,EAAC,0CAA0C;IAC5CJ,IAAI,EAAC,cAAc;IACnBM,SAAS,EAAC;EAAmF,CAC9F,CACE,CAAC;AAAA,CACP","ignoreList":[]}
package/dist/Logo.js DELETED
@@ -1,28 +0,0 @@
1
- var _excluded = ["href", "src", "alt"];
2
- function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
3
- 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; }
4
- 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; }
5
- import React from 'react';
6
- import PropTypes from 'prop-types';
7
- var Logo = function Logo(_ref) {
8
- var href = _ref.href,
9
- src = _ref.src,
10
- alt = _ref.alt,
11
- attributes = _objectWithoutProperties(_ref, _excluded);
12
- return /*#__PURE__*/React.createElement("a", _extends({
13
- href: href,
14
- className: "logo"
15
- }, attributes), /*#__PURE__*/React.createElement("img", {
16
- className: "d-block",
17
- src: src,
18
- alt: alt
19
- }));
20
- };
21
- export var logoDataShape = {
22
- href: PropTypes.string.isRequired,
23
- src: PropTypes.string.isRequired,
24
- alt: PropTypes.string.isRequired
25
- };
26
- Logo.propTypes = logoDataShape;
27
- export default Logo;
28
- //# sourceMappingURL=Logo.js.map
package/dist/Logo.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"Logo.js","names":["React","PropTypes","Logo","_ref","href","src","alt","attributes","_objectWithoutProperties","_excluded","createElement","_extends","className","logoDataShape","string","isRequired","propTypes"],"sources":["../src/Logo.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst Logo = ({\n href,\n src,\n alt,\n ...attributes\n}) => (\n <a href={href} className=\"logo\" {...attributes}>\n <img className=\"d-block\" src={src} alt={alt} />\n </a>\n);\n\nexport const logoDataShape = {\n href: PropTypes.string.isRequired,\n src: PropTypes.string.isRequired,\n alt: PropTypes.string.isRequired,\n};\n\nLogo.propTypes = logoDataShape;\n\nexport default Logo;\n"],"mappings":";;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAElC,IAAMC,IAAI,GAAG,SAAPA,IAAIA,CAAAC,IAAA;EAAA,IACRC,IAAI,GAAAD,IAAA,CAAJC,IAAI;IACJC,GAAG,GAAAF,IAAA,CAAHE,GAAG;IACHC,GAAG,GAAAH,IAAA,CAAHG,GAAG;IACAC,UAAU,GAAAC,wBAAA,CAAAL,IAAA,EAAAM,SAAA;EAAA,oBAEbT,KAAA,CAAAU,aAAA,MAAAC,QAAA;IAAGP,IAAI,EAAEA,IAAK;IAACQ,SAAS,EAAC;EAAM,GAAKL,UAAU,gBAC5CP,KAAA,CAAAU,aAAA;IAAKE,SAAS,EAAC,SAAS;IAACP,GAAG,EAAEA,GAAI;IAACC,GAAG,EAAEA;EAAI,CAAE,CAC7C,CAAC;AAAA,CACL;AAED,OAAO,IAAMO,aAAa,GAAG;EAC3BT,IAAI,EAAEH,SAAS,CAACa,MAAM,CAACC,UAAU;EACjCV,GAAG,EAAEJ,SAAS,CAACa,MAAM,CAACC,UAAU;EAChCT,GAAG,EAAEL,SAAS,CAACa,MAAM,CAACC;AACxB,CAAC;AAEDb,IAAI,CAACc,SAAS,GAAGH,aAAa;AAE9B,eAAeX,IAAI","ignoreList":[]}