@artistanbul/frontend-component-header-sumac 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +93 -0
  3. package/README.rst +193 -0
  4. package/dist/Avatar.js +43 -0
  5. package/dist/Avatar.js.map +1 -0
  6. package/dist/Header.js +130 -0
  7. package/dist/Header.js.map +1 -0
  8. package/dist/Header.messages.js +110 -0
  9. package/dist/Header.messages.js.map +1 -0
  10. package/dist/Header.test.jsx +104 -0
  11. package/dist/Icons.js +52 -0
  12. package/dist/Icons.js.map +1 -0
  13. package/dist/Logo.js +28 -0
  14. package/dist/Logo.js.map +1 -0
  15. package/dist/Menu/Menu.js +321 -0
  16. package/dist/Menu/Menu.js.map +1 -0
  17. package/dist/Menu/index.js +3 -0
  18. package/dist/Menu/index.js.map +1 -0
  19. package/dist/Menu/menu.scss +45 -0
  20. package/dist/__snapshots__/Header.test.jsx.snap +445 -0
  21. package/dist/desktop-header/DesktopHeader.js +174 -0
  22. package/dist/desktop-header/DesktopHeader.js.map +1 -0
  23. package/dist/desktop-header/DesktopHeaderMainOrSecondaryMenu.js +51 -0
  24. package/dist/desktop-header/DesktopHeaderMainOrSecondaryMenu.js.map +1 -0
  25. package/dist/desktop-header/DesktopHeaderUserMenu.js +49 -0
  26. package/dist/desktop-header/DesktopHeaderUserMenu.js.map +1 -0
  27. package/dist/desktop-header/DesktopLoggedOutItems.js +22 -0
  28. package/dist/desktop-header/DesktopLoggedOutItems.js.map +1 -0
  29. package/dist/generic/messages.js +15 -0
  30. package/dist/generic/messages.js.map +1 -0
  31. package/dist/i18n/index.js +2 -0
  32. package/dist/i18n/index.js.map +1 -0
  33. package/dist/images/omnikampus/artistanbul-logo.png +0 -0
  34. package/dist/images/omnikampus/omnikampus-just-logo.png +0 -0
  35. package/dist/images/omnikampus/omnikampus-logo.png +0 -0
  36. package/dist/index.js +73 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/index.scss +248 -0
  39. package/dist/learning-header/AnonymousUserMenu.js +25 -0
  40. package/dist/learning-header/AnonymousUserMenu.js.map +1 -0
  41. package/dist/learning-header/AuthenticatedUserDropdown.js +57 -0
  42. package/dist/learning-header/AuthenticatedUserDropdown.js.map +1 -0
  43. package/dist/learning-header/LearningHeader.js +61 -0
  44. package/dist/learning-header/LearningHeader.js.map +1 -0
  45. package/dist/learning-header/LearningHeaderCourseInfo.js +24 -0
  46. package/dist/learning-header/LearningHeaderCourseInfo.js.map +1 -0
  47. package/dist/learning-header/LearningHeaderHelpLink.js +13 -0
  48. package/dist/learning-header/LearningHeaderHelpLink.js.map +1 -0
  49. package/dist/learning-header/LearningHeaderUserMenuItems.js +20 -0
  50. package/dist/learning-header/LearningHeaderUserMenuItems.js.map +1 -0
  51. package/dist/learning-header/LearningLoggedOutButtons.js +24 -0
  52. package/dist/learning-header/LearningLoggedOutButtons.js.map +1 -0
  53. package/dist/learning-header/messages.js +40 -0
  54. package/dist/learning-header/messages.js.map +1 -0
  55. package/dist/mobile-header/MobileHeader.js +192 -0
  56. package/dist/mobile-header/MobileHeader.js.map +1 -0
  57. package/dist/mobile-header/MobileHeaderMainMenu.js +46 -0
  58. package/dist/mobile-header/MobileHeaderMainMenu.js.map +1 -0
  59. package/dist/mobile-header/MobileHeaderUserMenu.js +38 -0
  60. package/dist/mobile-header/MobileHeaderUserMenu.js.map +1 -0
  61. package/dist/mobile-header/MobileLoggedOutItems.js +27 -0
  62. package/dist/mobile-header/MobileLoggedOutItems.js.map +1 -0
  63. package/dist/plugin-slots/CourseInfoSlot/README.md +125 -0
  64. package/dist/plugin-slots/CourseInfoSlot/images/add_custom_components_before_and_after_course_info.png +0 -0
  65. package/dist/plugin-slots/CourseInfoSlot/images/replace_course_info_with_custom_component.png +0 -0
  66. package/dist/plugin-slots/CourseInfoSlot/images/replace_course_title.png +0 -0
  67. package/dist/plugin-slots/CourseInfoSlot/index.js +31 -0
  68. package/dist/plugin-slots/CourseInfoSlot/index.js.map +1 -0
  69. package/dist/plugin-slots/DesktopHeaderSlot/README.md +41 -0
  70. package/dist/plugin-slots/DesktopHeaderSlot/images/desktop_header_custom_component.png +0 -0
  71. package/dist/plugin-slots/DesktopHeaderSlot/index.js +15 -0
  72. package/dist/plugin-slots/DesktopHeaderSlot/index.js.map +1 -0
  73. package/dist/plugin-slots/DesktopLoggedOutItemsSlot/README.md +134 -0
  74. package/dist/plugin-slots/DesktopLoggedOutItemsSlot/images/desktop_logged_out_items_custom_component.png +0 -0
  75. package/dist/plugin-slots/DesktopLoggedOutItemsSlot/images/desktop_logged_out_items_custom_components_before_after.png +0 -0
  76. package/dist/plugin-slots/DesktopLoggedOutItemsSlot/images/desktop_logged_out_items_modify_items.png +0 -0
  77. package/dist/plugin-slots/DesktopLoggedOutItemsSlot/index.js +19 -0
  78. package/dist/plugin-slots/DesktopLoggedOutItemsSlot/index.js.map +1 -0
  79. package/dist/plugin-slots/DesktopMainMenuSlot/README.md +134 -0
  80. package/dist/plugin-slots/DesktopMainMenuSlot/images/desktop_main_menu_custom_component.png +0 -0
  81. package/dist/plugin-slots/DesktopMainMenuSlot/images/desktop_main_menu_custom_components_before_after.png +0 -0
  82. package/dist/plugin-slots/DesktopMainMenuSlot/images/desktop_main_menu_modify_items.png +0 -0
  83. package/dist/plugin-slots/DesktopMainMenuSlot/index.js +19 -0
  84. package/dist/plugin-slots/DesktopMainMenuSlot/index.js.map +1 -0
  85. package/dist/plugin-slots/DesktopSecondaryMenuSlot/README.md +129 -0
  86. package/dist/plugin-slots/DesktopSecondaryMenuSlot/images/desktop_secondary_menu_custom_component.png +0 -0
  87. package/dist/plugin-slots/DesktopSecondaryMenuSlot/images/desktop_secondary_menu_custom_components_before_after.png +0 -0
  88. package/dist/plugin-slots/DesktopSecondaryMenuSlot/images/desktop_secondary_menu_modify_items.png +0 -0
  89. package/dist/plugin-slots/DesktopSecondaryMenuSlot/index.js +19 -0
  90. package/dist/plugin-slots/DesktopSecondaryMenuSlot/index.js.map +1 -0
  91. package/dist/plugin-slots/DesktopUserMenuSlot/README.md +141 -0
  92. package/dist/plugin-slots/DesktopUserMenuSlot/images/desktop_user_menu_custom_component.png +0 -0
  93. package/dist/plugin-slots/DesktopUserMenuSlot/images/desktop_user_menu_custom_components_before_after.png +0 -0
  94. package/dist/plugin-slots/DesktopUserMenuSlot/images/desktop_user_menu_modify_items.png +0 -0
  95. package/dist/plugin-slots/DesktopUserMenuSlot/index.js +19 -0
  96. package/dist/plugin-slots/DesktopUserMenuSlot/index.js.map +1 -0
  97. package/dist/plugin-slots/LearningHelpSlot/README.md +41 -0
  98. package/dist/plugin-slots/LearningHelpSlot/images/learning_help_custom_component.png +0 -0
  99. package/dist/plugin-slots/LearningHelpSlot/index.js +10 -0
  100. package/dist/plugin-slots/LearningHelpSlot/index.js.map +1 -0
  101. package/dist/plugin-slots/LearningLoggedOutItemsSlot/README.md +132 -0
  102. package/dist/plugin-slots/LearningLoggedOutItemsSlot/images/learning_logged_out_items_custom_component.png +0 -0
  103. package/dist/plugin-slots/LearningLoggedOutItemsSlot/images/learning_logged_out_items_custom_components_before_after.png +0 -0
  104. package/dist/plugin-slots/LearningLoggedOutItemsSlot/images/learning_logged_out_items_modified_items.png +0 -0
  105. package/dist/plugin-slots/LearningLoggedOutItemsSlot/index.js +17 -0
  106. package/dist/plugin-slots/LearningLoggedOutItemsSlot/index.js.map +1 -0
  107. package/dist/plugin-slots/LearningUserMenuSlot/README.md +130 -0
  108. package/dist/plugin-slots/LearningUserMenuSlot/images/learning_user_menu_custom_component.png +0 -0
  109. package/dist/plugin-slots/LearningUserMenuSlot/images/learning_user_menu_custom_components_before_after.png +0 -0
  110. package/dist/plugin-slots/LearningUserMenuSlot/images/learning_user_menu_modified_items.png +0 -0
  111. package/dist/plugin-slots/LearningUserMenuSlot/index.js +17 -0
  112. package/dist/plugin-slots/LearningUserMenuSlot/index.js.map +1 -0
  113. package/dist/plugin-slots/LogoSlot/README.md +69 -0
  114. package/dist/plugin-slots/LogoSlot/index.js +26 -0
  115. package/dist/plugin-slots/LogoSlot/index.js.map +1 -0
  116. package/dist/plugin-slots/MobileHeaderSlot/README.md +41 -0
  117. package/dist/plugin-slots/MobileHeaderSlot/images/mobile_header_custom_component.png +0 -0
  118. package/dist/plugin-slots/MobileHeaderSlot/index.js +15 -0
  119. package/dist/plugin-slots/MobileHeaderSlot/index.js.map +1 -0
  120. package/dist/plugin-slots/MobileLoggedOutItemsSlot/README.md +134 -0
  121. package/dist/plugin-slots/MobileLoggedOutItemsSlot/images/mobile_logged_out_items_custom_component.png +0 -0
  122. package/dist/plugin-slots/MobileLoggedOutItemsSlot/images/mobile_logged_out_items_custom_components_before_after.png +0 -0
  123. package/dist/plugin-slots/MobileLoggedOutItemsSlot/images/mobile_logged_out_items_modify_items.png +0 -0
  124. package/dist/plugin-slots/MobileLoggedOutItemsSlot/index.js +19 -0
  125. package/dist/plugin-slots/MobileLoggedOutItemsSlot/index.js.map +1 -0
  126. package/dist/plugin-slots/MobileMainMenuSlot/README.md +134 -0
  127. package/dist/plugin-slots/MobileMainMenuSlot/images/mobile_main_menu_custom_component.png +0 -0
  128. package/dist/plugin-slots/MobileMainMenuSlot/images/mobile_main_menu_custom_components_before_after.png +0 -0
  129. package/dist/plugin-slots/MobileMainMenuSlot/images/mobile_main_menu_modify_items.png +0 -0
  130. package/dist/plugin-slots/MobileMainMenuSlot/index.js +19 -0
  131. package/dist/plugin-slots/MobileMainMenuSlot/index.js.map +1 -0
  132. package/dist/plugin-slots/MobileUserMenuSlot/README.md +142 -0
  133. package/dist/plugin-slots/MobileUserMenuSlot/images/mobile_user_menu_custom_component.png +0 -0
  134. package/dist/plugin-slots/MobileUserMenuSlot/images/mobile_user_menu_custom_components_before_after.png +0 -0
  135. package/dist/plugin-slots/MobileUserMenuSlot/images/mobile_user_menu_modify_items.png +0 -0
  136. package/dist/plugin-slots/MobileUserMenuSlot/index.js +19 -0
  137. package/dist/plugin-slots/MobileUserMenuSlot/index.js.map +1 -0
  138. package/dist/plugin-slots/README.md +15 -0
  139. package/dist/setupTest.js +125 -0
  140. package/dist/studio-header/BrandNav.js +24 -0
  141. package/dist/studio-header/BrandNav.js.map +1 -0
  142. package/dist/studio-header/CourseLockUp.js +46 -0
  143. package/dist/studio-header/CourseLockUp.js.map +1 -0
  144. package/dist/studio-header/HeaderBody.js +143 -0
  145. package/dist/studio-header/HeaderBody.js.map +1 -0
  146. package/dist/studio-header/MobileHeader.js +79 -0
  147. package/dist/studio-header/MobileHeader.js.map +1 -0
  148. package/dist/studio-header/MobileMenu.js +46 -0
  149. package/dist/studio-header/MobileMenu.js.map +1 -0
  150. package/dist/studio-header/NavDropdownMenu.js +32 -0
  151. package/dist/studio-header/NavDropdownMenu.js.map +1 -0
  152. package/dist/studio-header/StudioHeader.js +79 -0
  153. package/dist/studio-header/StudioHeader.js.map +1 -0
  154. package/dist/studio-header/StudioHeader.scss +49 -0
  155. package/dist/studio-header/UserMenu.js +55 -0
  156. package/dist/studio-header/UserMenu.js.map +1 -0
  157. package/dist/studio-header/index.js +3 -0
  158. package/dist/studio-header/index.js.map +1 -0
  159. package/dist/studio-header/messages.js +55 -0
  160. package/dist/studio-header/messages.js.map +1 -0
  161. package/dist/studio-header/utils.js +26 -0
  162. package/dist/studio-header/utils.js.map +1 -0
  163. package/dist/test-utils.js +26 -0
  164. package/dist/test-utils.js.map +1 -0
  165. package/package.json +79 -0
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import { PluginSlot } from '@openedx/frontend-plugin-framework';
3
+ import MobileHeaderUserMenu, { mobileHeaderUserMenuDataShape } from '../../mobile-header/MobileHeaderUserMenu';
4
+ var MobileUserMenuSlot = function MobileUserMenuSlot(_ref) {
5
+ var menu = _ref.menu;
6
+ return /*#__PURE__*/React.createElement(PluginSlot, {
7
+ id: "mobile_user_menu_slot",
8
+ slotOptions: {
9
+ mergeProps: true
10
+ }
11
+ }, /*#__PURE__*/React.createElement(MobileHeaderUserMenu, {
12
+ menu: menu
13
+ }));
14
+ };
15
+ MobileUserMenuSlot.propTypes = {
16
+ menu: mobileHeaderUserMenuDataShape
17
+ };
18
+ export default MobileUserMenuSlot;
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["React","PluginSlot","MobileHeaderUserMenu","mobileHeaderUserMenuDataShape","MobileUserMenuSlot","_ref","menu","createElement","id","slotOptions","mergeProps","propTypes"],"sources":["../../../src/plugin-slots/MobileUserMenuSlot/index.jsx"],"sourcesContent":["import React from 'react';\nimport { PluginSlot } from '@openedx/frontend-plugin-framework';\nimport MobileHeaderUserMenu, { mobileHeaderUserMenuDataShape } from '../../mobile-header/MobileHeaderUserMenu';\n\nconst MobileUserMenuSlot = ({\n menu,\n}) => (\n <PluginSlot\n id=\"mobile_user_menu_slot\"\n slotOptions={{\n mergeProps: true,\n }}\n >\n <MobileHeaderUserMenu menu={menu} />\n </PluginSlot>\n);\n\nMobileUserMenuSlot.propTypes = {\n menu: mobileHeaderUserMenuDataShape,\n};\n\nexport default MobileUserMenuSlot;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,QAAQ,oCAAoC;AAC/D,OAAOC,oBAAoB,IAAIC,6BAA6B,QAAQ,0CAA0C;AAE9G,IAAMC,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAAC,IAAA;EAAA,IACtBC,IAAI,GAAAD,IAAA,CAAJC,IAAI;EAAA,oBAEJN,KAAA,CAAAO,aAAA,CAACN,UAAU;IACTO,EAAE,EAAC,uBAAuB;IAC1BC,WAAW,EAAE;MACXC,UAAU,EAAE;IACd;EAAE,gBAEFV,KAAA,CAAAO,aAAA,CAACL,oBAAoB;IAACI,IAAI,EAAEA;EAAK,CAAE,CACzB,CAAC;AAAA,CACd;AAEDF,kBAAkB,CAACO,SAAS,GAAG;EAC7BL,IAAI,EAAEH;AACR,CAAC;AAED,eAAeC,kBAAkB","ignoreList":[]}
@@ -0,0 +1,15 @@
1
+ # `frontend-component-header` Plugin Slots
2
+
3
+ * [`logo_slot`](./LogoSlot/)
4
+ * [`desktop_main_menu_slot`](./DesktopMainMenuSlot/)
5
+ * [`desktop_secondary_menu_slot`](./DesktopSecondaryMenuSlot/)
6
+ * [`mobile_main_menu_slot`](./MobileMainMenuSlot/)
7
+ * [`course_info_slot`](./CourseInfoSlot/)
8
+ * [`learning_help_slot`](./LearningHelpSlot/)
9
+ * [`desktop_logged_out_items_slot`](./DesktopLoggedOutItemsSlot/)
10
+ * [`mobile_logged_out_items_slot`](./MobileLoggedOutItemsSlot/)
11
+ * [`mobile_user_menu_slot`](./MobileUserMenuSlot/)
12
+ * [`desktop_user_menu_slot`](./DesktopUserMenuSlot/)
13
+ * [`learning_user_menu_slot`](./LearningUserMenuSlot/)
14
+ * [`learning_logged_out_items_slot`](./LearningLoggedOutItemsSlot/)
15
+ * [`desktop_header_slot`](./DesktopHeaderSlot/)
@@ -0,0 +1,125 @@
1
+ /* eslint-disable import/no-extraneous-dependencies */
2
+
3
+ import React from 'react';
4
+ import PropTypes from 'prop-types';
5
+ import '@testing-library/jest-dom';
6
+ import '@testing-library/jest-dom/extend-expect';
7
+ import 'babel-polyfill';
8
+ import 'jest-chain';
9
+ import { getConfig, mergeConfig } from '@edx/frontend-platform';
10
+ import { configure as configureLogging } from '@edx/frontend-platform/logging';
11
+ import { configure as configureI18n } from '@edx/frontend-platform/i18n';
12
+ import { configure as configureAuth, MockAuthService } from '@edx/frontend-platform/auth';
13
+ import { render as rtlRender } from '@testing-library/react';
14
+ import { IntlProvider } from 'react-intl';
15
+ import AppProvider from '@edx/frontend-platform/react/AppProvider';
16
+ import appMessages from './i18n';
17
+
18
+ // These configuration values are usually set in webpack's EnvironmentPlugin however
19
+ // Jest does not use webpack so we need to set these so for testing
20
+ process.env.ACCESS_TOKEN_COOKIE_NAME = 'edx-jwt-cookie-header-payload';
21
+ process.env.ACCOUNT_PROFILE_URL = 'http://localhost:1995';
22
+ process.env.ACCOUNT_SETTINGS_URL = 'http://localhost:1997';
23
+ process.env.BASE_URL = 'localhost:1995';
24
+ process.env.CREDENTIALS_BASE_URL = 'http://localhost:18150';
25
+ process.env.CSRF_TOKEN_API_PATH = '/csrf/api/v1/token';
26
+ process.env.ECOMMERCE_BASE_URL = 'http://localhost:18130';
27
+ process.env.LANGUAGE_PREFERENCE_COOKIE_NAME = 'openedx-language-preference';
28
+ process.env.LMS_BASE_URL = 'http://localhost:18000';
29
+ process.env.LOGIN_URL = 'http://localhost:18000/login';
30
+ process.env.LOGOUT_URL = 'http://localhost:18000/logout';
31
+ process.env.MARKETING_SITE_BASE_URL = 'http://localhost:18000';
32
+ process.env.ORDER_HISTORY_URL = 'localhost:1996/orders';
33
+ process.env.REFRESH_ACCESS_TOKEN_ENDPOINT = 'http://localhost:18000/login_refresh';
34
+ process.env.SEGMENT_KEY = 'segment_whoa';
35
+ process.env.SITE_NAME = 'edX';
36
+ process.env.USER_INFO_COOKIE_NAME = 'edx-user-info';
37
+ process.env.LOGO_URL = 'https://edx-cdn.org/v3/default/logo.svg';
38
+ process.env.LOGO_TRADEMARK_URL = 'https://edx-cdn.org/v3/default/logo-trademark.svg';
39
+ process.env.LOGO_WHITE_URL = 'https://edx-cdn.org/v3/default/logo-white.svg';
40
+ process.env.FAVICON_URL = 'https://edx-cdn.org/v3/default/favicon.ico';
41
+
42
+ class MockLoggingService {
43
+ logInfo = jest.fn();
44
+
45
+ logError = jest.fn();
46
+ }
47
+
48
+ export const authenticatedUser = {
49
+ userId: 'abc123',
50
+ username: 'Mock User',
51
+ roles: [],
52
+ administrator: false,
53
+ };
54
+
55
+ export function initializeMockApp() {
56
+ mergeConfig({
57
+ INSIGHTS_BASE_URL: process.env.INSIGHTS_BASE_URL || null,
58
+ STUDIO_BASE_URL: process.env.STUDIO_BASE_URL || null,
59
+ TWITTER_URL: process.env.TWITTER_URL || null,
60
+ BASE_URL: process.env.BASE_URL || null,
61
+ LMS_BASE_URL: process.env.LMS_BASE_URL || null,
62
+ LOGIN_URL: process.env.LOGIN_URL || null,
63
+ LOGOUT_URL: process.env.LOGOUT_URL || null,
64
+ REFRESH_ACCESS_TOKEN_ENDPOINT: process.env.REFRESH_ACCESS_TOKEN_ENDPOINT || null,
65
+ ACCESS_TOKEN_COOKIE_NAME: process.env.ACCESS_TOKEN_COOKIE_NAME || null,
66
+ CSRF_TOKEN_API_PATH: process.env.CSRF_TOKEN_API_PATH || null,
67
+ LOGO_URL: process.env.LOGO_URL || null,
68
+ SITE_NAME: process.env.SITE_NAME || null,
69
+
70
+ authenticatedUser: {
71
+ userId: 'abc123',
72
+ username: 'Mock User',
73
+ roles: [],
74
+ administrator: false,
75
+ },
76
+ });
77
+
78
+ const loggingService = configureLogging(MockLoggingService, {
79
+ config: getConfig(),
80
+ });
81
+ const authService = configureAuth(MockAuthService, {
82
+ config: getConfig(),
83
+ loggingService,
84
+ });
85
+
86
+ // i18n doesn't have a service class to return.
87
+ configureI18n({
88
+ config: getConfig(),
89
+ loggingService,
90
+ messages: [appMessages],
91
+ });
92
+
93
+ return { loggingService, authService };
94
+ }
95
+
96
+ function render(
97
+ ui,
98
+ {
99
+ store = null,
100
+ ...renderOptions
101
+ } = {},
102
+ ) {
103
+ const Wrapper = ({ children }) => (
104
+ // eslint-disable-next-line react/jsx-filename-extension
105
+ <IntlProvider locale="en">
106
+ <AppProvider store={store}>
107
+ {children}
108
+ </AppProvider>
109
+ </IntlProvider>
110
+ );
111
+
112
+ Wrapper.propTypes = {
113
+ children: PropTypes.node.isRequired,
114
+ };
115
+
116
+ return rtlRender(ui, { wrapper: Wrapper, ...renderOptions });
117
+ }
118
+
119
+ // Re-export everything.
120
+ export * from '@testing-library/react';
121
+
122
+ // Override `render` method.
123
+ export {
124
+ render,
125
+ };
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { Link } from 'react-router-dom';
4
+ import omnikampusLogo from "../images/omnikampus/omnikampus-just-logo.png";
5
+ var BrandNav = function BrandNav(_ref) {
6
+ var studioBaseUrl = _ref.studioBaseUrl,
7
+ logo = _ref.logo,
8
+ logoAltText = _ref.logoAltText;
9
+ return /*#__PURE__*/React.createElement(Link, {
10
+ to: studioBaseUrl,
11
+ className: "studio-logo"
12
+ }, /*#__PURE__*/React.createElement("img", {
13
+ src: omnikampusLogo,
14
+ alt: logoAltText,
15
+ className: "d-block logo"
16
+ }));
17
+ };
18
+ BrandNav.propTypes = {
19
+ studioBaseUrl: PropTypes.string.isRequired,
20
+ logo: PropTypes.string.isRequired,
21
+ logoAltText: PropTypes.string.isRequired
22
+ };
23
+ export default BrandNav;
24
+ //# sourceMappingURL=BrandNav.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrandNav.js","names":["React","PropTypes","Link","omnikampusLogo","BrandNav","_ref","studioBaseUrl","logo","logoAltText","createElement","to","className","src","alt","propTypes","string","isRequired"],"sources":["../../src/studio-header/BrandNav.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router-dom';\n\nimport omnikampusLogo from \"../images/omnikampus/omnikampus-just-logo.png\"\n\nconst BrandNav = ({\n studioBaseUrl,\n logo,\n logoAltText,\n}) => (\n <Link to={studioBaseUrl} className='studio-logo'>\n <img\n src={omnikampusLogo}\n alt={logoAltText}\n className=\"d-block logo\"\n />\n </Link>\n);\n\nBrandNav.propTypes = {\n studioBaseUrl: PropTypes.string.isRequired,\n logo: PropTypes.string.isRequired,\n logoAltText: PropTypes.string.isRequired,\n};\n\nexport default BrandNav;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAClC,SAASC,IAAI,QAAQ,kBAAkB;AAEvC,OAAOC,cAAc,MAAM,+CAA+C;AAE1E,IAAMC,QAAQ,GAAG,SAAXA,QAAQA,CAAAC,IAAA;EAAA,IACZC,aAAa,GAAAD,IAAA,CAAbC,aAAa;IACbC,IAAI,GAAAF,IAAA,CAAJE,IAAI;IACJC,WAAW,GAAAH,IAAA,CAAXG,WAAW;EAAA,oBAEXR,KAAA,CAAAS,aAAA,CAACP,IAAI;IAACQ,EAAE,EAAEJ,aAAc;IAACK,SAAS,EAAC;EAAa,gBAC9CX,KAAA,CAAAS,aAAA;IACEG,GAAG,EAAET,cAAe;IACpBU,GAAG,EAAEL,WAAY;IACjBG,SAAS,EAAC;EAAc,CACzB,CACG,CAAC;AAAA,CACR;AAEDP,QAAQ,CAACU,SAAS,GAAG;EACnBR,aAAa,EAAEL,SAAS,CAACc,MAAM,CAACC,UAAU;EAC1CT,IAAI,EAAEN,SAAS,CAACc,MAAM,CAACC,UAAU;EACjCR,WAAW,EAAEP,SAAS,CAACc,MAAM,CAACC;AAChC,CAAC;AAED,eAAeZ,QAAQ","ignoreList":[]}
@@ -0,0 +1,46 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
4
+ import { OverlayTrigger, Tooltip } from '@openedx/paragon';
5
+ import { Link } from 'react-router-dom';
6
+ import messages from './messages';
7
+ var CourseLockUp = function CourseLockUp(_ref) {
8
+ var outlineLink = _ref.outlineLink,
9
+ org = _ref.org,
10
+ number = _ref.number,
11
+ title = _ref.title,
12
+ intl = _ref.intl;
13
+ return /*#__PURE__*/React.createElement(OverlayTrigger, {
14
+ placement: "bottom",
15
+ overlay: /*#__PURE__*/React.createElement(Tooltip, {
16
+ id: "course-lock-up"
17
+ }, title)
18
+ }, /*#__PURE__*/React.createElement(Link, {
19
+ className: "course-title-lockup mr-2",
20
+ to: outlineLink,
21
+ "aria-label": intl.formatMessage(messages['header.label.courseOutline']),
22
+ "data-testid": "course-lock-up-block"
23
+ }, /*#__PURE__*/React.createElement("span", {
24
+ className: "d-block small m-0 text-gray-800",
25
+ "data-testid": "course-org-number"
26
+ }, org, " ", number), /*#__PURE__*/React.createElement("span", {
27
+ className: "d-block m-0 font-weight-bold text-gray-800",
28
+ "data-testid": "course-title"
29
+ }, title)));
30
+ };
31
+ CourseLockUp.propTypes = {
32
+ number: PropTypes.string,
33
+ org: PropTypes.string,
34
+ title: PropTypes.string,
35
+ outlineLink: PropTypes.string,
36
+ // injected
37
+ intl: intlShape.isRequired
38
+ };
39
+ CourseLockUp.defaultProps = {
40
+ number: null,
41
+ org: null,
42
+ title: null,
43
+ outlineLink: null
44
+ };
45
+ export default injectIntl(CourseLockUp);
46
+ //# sourceMappingURL=CourseLockUp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CourseLockUp.js","names":["React","PropTypes","injectIntl","intlShape","OverlayTrigger","Tooltip","Link","messages","CourseLockUp","_ref","outlineLink","org","number","title","intl","createElement","placement","overlay","id","className","to","formatMessage","propTypes","string","isRequired","defaultProps"],"sources":["../../src/studio-header/CourseLockUp.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { injectIntl, intlShape } from '@edx/frontend-platform/i18n';\nimport {\n OverlayTrigger,\n Tooltip,\n} from '@openedx/paragon';\nimport { Link } from 'react-router-dom';\n\nimport messages from './messages';\n\nconst CourseLockUp = ({\n outlineLink,\n org,\n number,\n title,\n // injected\n intl,\n}) => (\n <OverlayTrigger\n placement=\"bottom\"\n overlay={(\n <Tooltip id=\"course-lock-up\">\n {title}\n </Tooltip>\n )}\n >\n <Link\n className=\"course-title-lockup mr-2\"\n to={outlineLink}\n aria-label={intl.formatMessage(messages['header.label.courseOutline'])}\n data-testid=\"course-lock-up-block\"\n >\n <span className=\"d-block small m-0 text-gray-800\" data-testid=\"course-org-number\">{org} {number}</span>\n <span className=\"d-block m-0 font-weight-bold text-gray-800\" data-testid=\"course-title\">{title}</span>\n </Link>\n </OverlayTrigger>\n);\n\nCourseLockUp.propTypes = {\n number: PropTypes.string,\n org: PropTypes.string,\n title: PropTypes.string,\n outlineLink: PropTypes.string,\n // injected\n intl: intlShape.isRequired,\n};\n\nCourseLockUp.defaultProps = {\n number: null,\n org: null,\n title: null,\n outlineLink: null,\n};\n\nexport default injectIntl(CourseLockUp);\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAClC,SAASC,UAAU,EAAEC,SAAS,QAAQ,6BAA6B;AACnE,SACEC,cAAc,EACdC,OAAO,QACF,kBAAkB;AACzB,SAASC,IAAI,QAAQ,kBAAkB;AAEvC,OAAOC,QAAQ,MAAM,YAAY;AAEjC,IAAMC,YAAY,GAAG,SAAfA,YAAYA,CAAAC,IAAA;EAAA,IAChBC,WAAW,GAAAD,IAAA,CAAXC,WAAW;IACXC,GAAG,GAAAF,IAAA,CAAHE,GAAG;IACHC,MAAM,GAAAH,IAAA,CAANG,MAAM;IACNC,KAAK,GAAAJ,IAAA,CAALI,KAAK;IAELC,IAAI,GAAAL,IAAA,CAAJK,IAAI;EAAA,oBAEJd,KAAA,CAAAe,aAAA,CAACX,cAAc;IACbY,SAAS,EAAC,QAAQ;IAClBC,OAAO,eACLjB,KAAA,CAAAe,aAAA,CAACV,OAAO;MAACa,EAAE,EAAC;IAAgB,GACzBL,KACM;EACT,gBAEFb,KAAA,CAAAe,aAAA,CAACT,IAAI;IACHa,SAAS,EAAC,0BAA0B;IACpCC,EAAE,EAAEV,WAAY;IAChB,cAAYI,IAAI,CAACO,aAAa,CAACd,QAAQ,CAAC,4BAA4B,CAAC,CAAE;IACvE,eAAY;EAAsB,gBAElCP,KAAA,CAAAe,aAAA;IAAMI,SAAS,EAAC,iCAAiC;IAAC,eAAY;EAAmB,GAAER,GAAG,EAAC,GAAC,EAACC,MAAa,CAAC,eACvGZ,KAAA,CAAAe,aAAA;IAAMI,SAAS,EAAC,4CAA4C;IAAC,eAAY;EAAc,GAAEN,KAAY,CACjG,CACQ,CAAC;AAAA,CAClB;AAEDL,YAAY,CAACc,SAAS,GAAG;EACvBV,MAAM,EAAEX,SAAS,CAACsB,MAAM;EACxBZ,GAAG,EAAEV,SAAS,CAACsB,MAAM;EACrBV,KAAK,EAAEZ,SAAS,CAACsB,MAAM;EACvBb,WAAW,EAAET,SAAS,CAACsB,MAAM;EAC7B;EACAT,IAAI,EAAEX,SAAS,CAACqB;AAClB,CAAC;AAEDhB,YAAY,CAACiB,YAAY,GAAG;EAC1Bb,MAAM,EAAE,IAAI;EACZD,GAAG,EAAE,IAAI;EACTE,KAAK,EAAE,IAAI;EACXH,WAAW,EAAE;AACf,CAAC;AAED,eAAeR,UAAU,CAACM,YAAY,CAAC","ignoreList":[]}
@@ -0,0 +1,143 @@
1
+ var _excluded = ["className"];
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 s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(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 (e.includes(n)) continue; t[n] = r[n]; } return t; }
5
+ import React from 'react';
6
+ import PropTypes from 'prop-types';
7
+ import { useIntl } from '@edx/frontend-platform/i18n';
8
+ import classNames from 'classnames';
9
+ import { ActionRow, Button, Container, Icon, IconButton, Nav, Row } from '@openedx/paragon';
10
+ import { Close, MenuIcon, Search } from '@openedx/paragon/icons';
11
+ import CourseLockUp from './CourseLockUp';
12
+ import UserMenu from './UserMenu';
13
+ import BrandNav from './BrandNav';
14
+ import NavDropdownMenu from './NavDropdownMenu';
15
+ import messages from './messages';
16
+ var HeaderBody = function HeaderBody(_ref) {
17
+ var logo = _ref.logo,
18
+ logoAltText = _ref.logoAltText,
19
+ number = _ref.number,
20
+ org = _ref.org,
21
+ title = _ref.title,
22
+ username = _ref.username,
23
+ isAdmin = _ref.isAdmin,
24
+ studioBaseUrl = _ref.studioBaseUrl,
25
+ logoutUrl = _ref.logoutUrl,
26
+ authenticatedUserAvatar = _ref.authenticatedUserAvatar,
27
+ isMobile = _ref.isMobile,
28
+ setModalPopupTarget = _ref.setModalPopupTarget,
29
+ toggleModalPopup = _ref.toggleModalPopup,
30
+ isModalPopupOpen = _ref.isModalPopupOpen,
31
+ isHiddenMainMenu = _ref.isHiddenMainMenu,
32
+ mainMenuDropdowns = _ref.mainMenuDropdowns,
33
+ outlineLink = _ref.outlineLink,
34
+ searchButtonAction = _ref.searchButtonAction,
35
+ containerProps = _ref.containerProps;
36
+ var intl = useIntl();
37
+ var renderBrandNav = /*#__PURE__*/React.createElement(BrandNav, {
38
+ studioBaseUrl: studioBaseUrl,
39
+ logo: logo,
40
+ logoAltText: logoAltText
41
+ });
42
+ var _ref2 = containerProps || {},
43
+ containerClassName = _ref2.className,
44
+ restContainerProps = _objectWithoutProperties(_ref2, _excluded);
45
+ return /*#__PURE__*/React.createElement(Container, _extends({
46
+ size: "xl",
47
+ className: classNames('px-2.5', containerClassName)
48
+ }, restContainerProps), /*#__PURE__*/React.createElement(ActionRow, {
49
+ as: "header"
50
+ }, isHiddenMainMenu ? /*#__PURE__*/React.createElement(Row, {
51
+ className: "flex-nowrap ml-4"
52
+ }, renderBrandNav) : /*#__PURE__*/React.createElement(React.Fragment, null, isMobile ? /*#__PURE__*/React.createElement(Button, {
53
+ ref: setModalPopupTarget,
54
+ className: "d-inline-flex align-items-center",
55
+ variant: "tertiary",
56
+ onClick: toggleModalPopup,
57
+ iconBefore: isModalPopupOpen ? Close : MenuIcon,
58
+ "data-testid": "mobile-menu-button"
59
+ }, "Menu") : /*#__PURE__*/React.createElement("div", {
60
+ className: "w-25"
61
+ }, /*#__PURE__*/React.createElement(Row, {
62
+ className: "m-0 flex-nowrap"
63
+ }, renderBrandNav, /*#__PURE__*/React.createElement(CourseLockUp, {
64
+ outlineLink: outlineLink,
65
+ number: number,
66
+ org: org,
67
+ title: title
68
+ }))), isMobile ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ActionRow.Spacer, null), renderBrandNav) : /*#__PURE__*/React.createElement(Nav, {
69
+ "data-testid": "desktop-menu",
70
+ className: "ml-2"
71
+ }, mainMenuDropdowns.map(function (dropdown) {
72
+ var id = dropdown.id,
73
+ buttonTitle = dropdown.buttonTitle,
74
+ items = dropdown.items;
75
+ return /*#__PURE__*/React.createElement(NavDropdownMenu, {
76
+ key: id,
77
+ id: id,
78
+ buttonTitle: buttonTitle,
79
+ items: items
80
+ });
81
+ }))), /*#__PURE__*/React.createElement(ActionRow.Spacer, null), searchButtonAction && /*#__PURE__*/React.createElement(Nav, null, /*#__PURE__*/React.createElement(IconButton, {
82
+ src: Search,
83
+ iconAs: Icon,
84
+ onClick: searchButtonAction,
85
+ "aria-label": intl.formatMessage(messages['header.label.search.nav']),
86
+ alt: intl.formatMessage(messages['header.label.search.nav'])
87
+ })), /*#__PURE__*/React.createElement(Nav, null, /*#__PURE__*/React.createElement(UserMenu, {
88
+ username: username,
89
+ studioBaseUrl: studioBaseUrl,
90
+ logoutUrl: logoutUrl,
91
+ authenticatedUserAvatar: authenticatedUserAvatar,
92
+ isAdmin: isAdmin
93
+ }))));
94
+ };
95
+ HeaderBody.propTypes = {
96
+ studioBaseUrl: PropTypes.string.isRequired,
97
+ logoutUrl: PropTypes.string.isRequired,
98
+ setModalPopupTarget: PropTypes.func,
99
+ toggleModalPopup: PropTypes.func,
100
+ isModalPopupOpen: PropTypes.bool,
101
+ number: PropTypes.string,
102
+ org: PropTypes.string,
103
+ title: PropTypes.string,
104
+ logo: PropTypes.string,
105
+ logoAltText: PropTypes.string,
106
+ authenticatedUserAvatar: PropTypes.string,
107
+ username: PropTypes.string,
108
+ isAdmin: PropTypes.bool,
109
+ isMobile: PropTypes.bool,
110
+ isHiddenMainMenu: PropTypes.bool,
111
+ mainMenuDropdowns: PropTypes.arrayOf(PropTypes.shape({
112
+ id: PropTypes.string,
113
+ buttonTitle: PropTypes.node,
114
+ items: PropTypes.arrayOf(PropTypes.shape({
115
+ href: PropTypes.string,
116
+ title: PropTypes.node
117
+ }))
118
+ })),
119
+ outlineLink: PropTypes.string,
120
+ searchButtonAction: PropTypes.func,
121
+ containerProps: PropTypes.shape(Container.propTypes)
122
+ };
123
+ HeaderBody.defaultProps = {
124
+ setModalPopupTarget: null,
125
+ toggleModalPopup: null,
126
+ isModalPopupOpen: false,
127
+ logo: null,
128
+ logoAltText: null,
129
+ number: '',
130
+ org: '',
131
+ title: '',
132
+ authenticatedUserAvatar: null,
133
+ username: null,
134
+ isAdmin: false,
135
+ isMobile: false,
136
+ isHiddenMainMenu: false,
137
+ mainMenuDropdowns: [],
138
+ outlineLink: null,
139
+ searchButtonAction: null,
140
+ containerProps: {}
141
+ };
142
+ export default HeaderBody;
143
+ //# sourceMappingURL=HeaderBody.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeaderBody.js","names":["React","PropTypes","useIntl","classNames","ActionRow","Button","Container","Icon","IconButton","Nav","Row","Close","MenuIcon","Search","CourseLockUp","UserMenu","BrandNav","NavDropdownMenu","messages","HeaderBody","_ref","logo","logoAltText","number","org","title","username","isAdmin","studioBaseUrl","logoutUrl","authenticatedUserAvatar","isMobile","setModalPopupTarget","toggleModalPopup","isModalPopupOpen","isHiddenMainMenu","mainMenuDropdowns","outlineLink","searchButtonAction","containerProps","intl","renderBrandNav","createElement","_ref2","containerClassName","className","restContainerProps","_objectWithoutProperties","_excluded","_extends","size","as","Fragment","ref","variant","onClick","iconBefore","Spacer","map","dropdown","id","buttonTitle","items","key","src","iconAs","formatMessage","alt","propTypes","string","isRequired","func","bool","arrayOf","shape","node","href","defaultProps"],"sources":["../../src/studio-header/HeaderBody.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport classNames from 'classnames';\nimport {\n ActionRow,\n Button,\n Container,\n Icon,\n IconButton,\n Nav,\n Row,\n} from '@openedx/paragon';\nimport { Close, MenuIcon, Search } from '@openedx/paragon/icons';\n\nimport CourseLockUp from './CourseLockUp';\nimport UserMenu from './UserMenu';\nimport BrandNav from './BrandNav';\nimport NavDropdownMenu from './NavDropdownMenu';\nimport messages from './messages';\n\nconst HeaderBody = ({\n logo,\n logoAltText,\n number,\n org,\n title,\n username,\n isAdmin,\n studioBaseUrl,\n logoutUrl,\n authenticatedUserAvatar,\n isMobile,\n setModalPopupTarget,\n toggleModalPopup,\n isModalPopupOpen,\n isHiddenMainMenu,\n mainMenuDropdowns,\n outlineLink,\n searchButtonAction,\n containerProps,\n}) => {\n const intl = useIntl();\n\n const renderBrandNav = (\n <BrandNav\n {...{\n studioBaseUrl,\n logo,\n logoAltText,\n }}\n />\n );\n\n const { className: containerClassName, ...restContainerProps } = containerProps || {};\n\n return (\n <Container\n size=\"xl\"\n className={classNames('px-2.5', containerClassName)}\n {...restContainerProps}\n >\n <ActionRow as=\"header\">\n {isHiddenMainMenu ? (\n <Row className=\"flex-nowrap ml-4\">\n {renderBrandNav}\n </Row>\n ) : (\n <>\n {isMobile ? (\n <Button\n ref={setModalPopupTarget}\n className=\"d-inline-flex align-items-center\"\n variant=\"tertiary\"\n onClick={toggleModalPopup}\n iconBefore={isModalPopupOpen ? Close : MenuIcon}\n data-testid=\"mobile-menu-button\"\n >\n Menu\n </Button>\n ) : (\n <div className=\"w-25\">\n <Row className=\"m-0 flex-nowrap\">\n {renderBrandNav}\n <CourseLockUp\n {...{\n outlineLink,\n number,\n org,\n title,\n }}\n />\n </Row>\n </div>\n )}\n {isMobile ? (\n <>\n <ActionRow.Spacer />\n {renderBrandNav}\n </>\n ) : (\n <Nav data-testid=\"desktop-menu\" className=\"ml-2\">\n {mainMenuDropdowns.map(dropdown => {\n const { id, buttonTitle, items } = dropdown;\n return (\n <NavDropdownMenu\n key={id}\n {...{\n id, buttonTitle, items,\n }}\n />\n );\n })}\n </Nav>\n )}\n </>\n )}\n <ActionRow.Spacer />\n {searchButtonAction && (\n <Nav>\n <IconButton\n src={Search}\n iconAs={Icon}\n onClick={searchButtonAction}\n aria-label={intl.formatMessage(messages['header.label.search.nav'])}\n alt={intl.formatMessage(messages['header.label.search.nav'])}\n />\n </Nav>\n )}\n <Nav>\n <UserMenu\n {...{\n username,\n studioBaseUrl,\n logoutUrl,\n authenticatedUserAvatar,\n isAdmin,\n }}\n />\n </Nav>\n </ActionRow>\n </Container>\n );\n};\n\nHeaderBody.propTypes = {\n studioBaseUrl: PropTypes.string.isRequired,\n logoutUrl: PropTypes.string.isRequired,\n setModalPopupTarget: PropTypes.func,\n toggleModalPopup: PropTypes.func,\n isModalPopupOpen: PropTypes.bool,\n number: PropTypes.string,\n org: PropTypes.string,\n title: PropTypes.string,\n logo: PropTypes.string,\n logoAltText: PropTypes.string,\n authenticatedUserAvatar: PropTypes.string,\n username: PropTypes.string,\n isAdmin: PropTypes.bool,\n isMobile: PropTypes.bool,\n isHiddenMainMenu: PropTypes.bool,\n mainMenuDropdowns: PropTypes.arrayOf(PropTypes.shape({\n id: PropTypes.string,\n buttonTitle: PropTypes.node,\n items: PropTypes.arrayOf(PropTypes.shape({\n href: PropTypes.string,\n title: PropTypes.node,\n })),\n })),\n outlineLink: PropTypes.string,\n searchButtonAction: PropTypes.func,\n containerProps: PropTypes.shape(Container.propTypes),\n};\n\nHeaderBody.defaultProps = {\n setModalPopupTarget: null,\n toggleModalPopup: null,\n isModalPopupOpen: false,\n logo: null,\n logoAltText: null,\n number: '',\n org: '',\n title: '',\n authenticatedUserAvatar: null,\n username: null,\n isAdmin: false,\n isMobile: false,\n isHiddenMainMenu: false,\n mainMenuDropdowns: [],\n outlineLink: null,\n searchButtonAction: null,\n containerProps: {},\n};\n\nexport default HeaderBody;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,79 @@
1
+ var _excluded = ["mainMenuDropdowns"];
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 _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
4
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
5
+ 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; } }
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
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
8
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
9
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
10
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }
11
+ import React, { useState } from 'react';
12
+ import PropTypes from 'prop-types';
13
+ import { useToggle, ModalPopup } from '@openedx/paragon';
14
+ import HeaderBody from './HeaderBody';
15
+ import MobileMenu from './MobileMenu';
16
+ var MobileHeader = function MobileHeader(_ref) {
17
+ var mainMenuDropdowns = _ref.mainMenuDropdowns,
18
+ props = _objectWithoutProperties(_ref, _excluded);
19
+ var _useToggle = useToggle(false),
20
+ _useToggle2 = _slicedToArray(_useToggle, 4),
21
+ isOpen = _useToggle2[0],
22
+ close = _useToggle2[2],
23
+ toggle = _useToggle2[3];
24
+ var _useState = useState(null),
25
+ _useState2 = _slicedToArray(_useState, 2),
26
+ target = _useState2[0],
27
+ setTarget = _useState2[1];
28
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(HeaderBody, _extends({}, props, {
29
+ isMobile: true,
30
+ setModalPopupTarget: setTarget,
31
+ toggleModalPopup: toggle,
32
+ isModalPopupOpen: isOpen
33
+ })), /*#__PURE__*/React.createElement(ModalPopup, {
34
+ hasArrow: true,
35
+ placement: "bottom",
36
+ positionRef: target,
37
+ isOpen: isOpen,
38
+ onClose: close,
39
+ onEscapeKey: close,
40
+ className: "mobile-menu-container"
41
+ }, /*#__PURE__*/React.createElement(MobileMenu, {
42
+ mainMenuDropdowns: mainMenuDropdowns
43
+ })));
44
+ };
45
+ MobileHeader.propTypes = {
46
+ studioBaseUrl: PropTypes.string.isRequired,
47
+ logoutUrl: PropTypes.string.isRequired,
48
+ number: PropTypes.string,
49
+ org: PropTypes.string,
50
+ title: PropTypes.string,
51
+ logo: PropTypes.string,
52
+ logoAltText: PropTypes.string,
53
+ authenticatedUserAvatar: PropTypes.string,
54
+ username: PropTypes.string,
55
+ isAdmin: PropTypes.bool,
56
+ mainMenuDropdowns: PropTypes.arrayOf(PropTypes.shape({
57
+ id: PropTypes.string,
58
+ buttonTitle: PropTypes.node,
59
+ items: PropTypes.arrayOf(PropTypes.shape({
60
+ href: PropTypes.string,
61
+ title: PropTypes.node
62
+ }))
63
+ })),
64
+ outlineLink: PropTypes.string
65
+ };
66
+ MobileHeader.defaultProps = {
67
+ logo: null,
68
+ logoAltText: null,
69
+ number: null,
70
+ org: null,
71
+ title: null,
72
+ authenticatedUserAvatar: null,
73
+ username: null,
74
+ isAdmin: false,
75
+ mainMenuDropdowns: [],
76
+ outlineLink: null
77
+ };
78
+ export default MobileHeader;
79
+ //# sourceMappingURL=MobileHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MobileHeader.js","names":["React","useState","PropTypes","useToggle","ModalPopup","HeaderBody","MobileMenu","MobileHeader","_ref","mainMenuDropdowns","props","_objectWithoutProperties","_excluded","_useToggle","_useToggle2","_slicedToArray","isOpen","close","toggle","_useState","_useState2","target","setTarget","createElement","Fragment","_extends","isMobile","setModalPopupTarget","toggleModalPopup","isModalPopupOpen","hasArrow","placement","positionRef","onClose","onEscapeKey","className","propTypes","studioBaseUrl","string","isRequired","logoutUrl","number","org","title","logo","logoAltText","authenticatedUserAvatar","username","isAdmin","bool","arrayOf","shape","id","buttonTitle","node","items","href","outlineLink","defaultProps"],"sources":["../../src/studio-header/MobileHeader.jsx"],"sourcesContent":["import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useToggle, ModalPopup } from '@openedx/paragon';\nimport HeaderBody from './HeaderBody';\nimport MobileMenu from './MobileMenu';\n\nconst MobileHeader = ({\n mainMenuDropdowns,\n ...props\n}) => {\n const [isOpen, , close, toggle] = useToggle(false);\n const [target, setTarget] = useState(null);\n\n return (\n <>\n <HeaderBody\n {...props}\n isMobile\n setModalPopupTarget={setTarget}\n toggleModalPopup={toggle}\n isModalPopupOpen={isOpen}\n />\n <ModalPopup\n hasArrow\n placement=\"bottom\"\n positionRef={target}\n isOpen={isOpen}\n onClose={close}\n onEscapeKey={close}\n className=\"mobile-menu-container\"\n >\n <MobileMenu {...{ mainMenuDropdowns }} />\n </ModalPopup>\n </>\n );\n};\n\nMobileHeader.propTypes = {\n studioBaseUrl: PropTypes.string.isRequired,\n logoutUrl: PropTypes.string.isRequired,\n number: PropTypes.string,\n org: PropTypes.string,\n title: PropTypes.string,\n logo: PropTypes.string,\n logoAltText: PropTypes.string,\n authenticatedUserAvatar: PropTypes.string,\n username: PropTypes.string,\n isAdmin: PropTypes.bool,\n mainMenuDropdowns: PropTypes.arrayOf(PropTypes.shape({\n id: PropTypes.string,\n buttonTitle: PropTypes.node,\n items: PropTypes.arrayOf(PropTypes.shape({\n href: PropTypes.string,\n title: PropTypes.node,\n })),\n })),\n outlineLink: PropTypes.string,\n};\n\nMobileHeader.defaultProps = {\n logo: null,\n logoAltText: null,\n number: null,\n org: null,\n title: null,\n authenticatedUserAvatar: null,\n username: null,\n isAdmin: false,\n mainMenuDropdowns: [],\n outlineLink: null,\n};\n\nexport default MobileHeader;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,46 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { Collapsible } from '@openedx/paragon';
4
+ import { Link } from 'react-router-dom';
5
+ var MobileMenu = function MobileMenu(_ref) {
6
+ var mainMenuDropdowns = _ref.mainMenuDropdowns;
7
+ return /*#__PURE__*/React.createElement("div", {
8
+ className: "ml-4 p-2 bg-light-100 border border-gray-200 small rounded",
9
+ "data-testid": "mobile-menu"
10
+ }, /*#__PURE__*/React.createElement("div", null, mainMenuDropdowns.map(function (dropdown) {
11
+ var id = dropdown.id,
12
+ buttonTitle = dropdown.buttonTitle,
13
+ items = dropdown.items;
14
+ return /*#__PURE__*/React.createElement(Collapsible, {
15
+ className: "border-light-100",
16
+ title: buttonTitle,
17
+ key: id
18
+ }, /*#__PURE__*/React.createElement("ul", {
19
+ className: "p-0",
20
+ style: {
21
+ listStyleType: 'none'
22
+ }
23
+ }, items.map(function (item) {
24
+ return /*#__PURE__*/React.createElement("li", {
25
+ className: "mobile-menu-item"
26
+ }, /*#__PURE__*/React.createElement(Link, {
27
+ to: item.href
28
+ }, item.title));
29
+ })));
30
+ })));
31
+ };
32
+ MobileMenu.propTypes = {
33
+ mainMenuDropdowns: PropTypes.arrayOf(PropTypes.shape({
34
+ id: PropTypes.string,
35
+ buttonTitle: PropTypes.node,
36
+ items: PropTypes.arrayOf(PropTypes.shape({
37
+ href: PropTypes.string,
38
+ title: PropTypes.node
39
+ }))
40
+ }))
41
+ };
42
+ MobileMenu.defaultProps = {
43
+ mainMenuDropdowns: []
44
+ };
45
+ export default MobileMenu;
46
+ //# sourceMappingURL=MobileMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MobileMenu.js","names":["React","PropTypes","Collapsible","Link","MobileMenu","_ref","mainMenuDropdowns","createElement","className","map","dropdown","id","buttonTitle","items","title","key","style","listStyleType","item","to","href","propTypes","arrayOf","shape","string","node","defaultProps"],"sources":["../../src/studio-header/MobileMenu.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Collapsible } from '@openedx/paragon';\nimport { Link } from 'react-router-dom';\n\nconst MobileMenu = ({ mainMenuDropdowns }) => (\n <div\n className=\"ml-4 p-2 bg-light-100 border border-gray-200 small rounded\"\n data-testid=\"mobile-menu\"\n >\n <div>\n {mainMenuDropdowns.map(dropdown => {\n const { id, buttonTitle, items } = dropdown;\n return (\n <Collapsible\n className=\"border-light-100\"\n title={buttonTitle}\n key={id}\n >\n <ul className=\"p-0\" style={{ listStyleType: 'none' }}>\n {items.map(item => (\n <li className=\"mobile-menu-item\">\n <Link to={item.href}>\n {item.title}\n </Link>\n </li>\n ))}\n </ul>\n </Collapsible>\n );\n })}\n </div>\n </div>\n);\n\nMobileMenu.propTypes = {\n mainMenuDropdowns: PropTypes.arrayOf(PropTypes.shape({\n id: PropTypes.string,\n buttonTitle: PropTypes.node,\n items: PropTypes.arrayOf(PropTypes.shape({\n href: PropTypes.string,\n title: PropTypes.node,\n })),\n })),\n};\nMobileMenu.defaultProps = {\n mainMenuDropdowns: [],\n};\n\nexport default MobileMenu;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAClC,SAASC,WAAW,QAAQ,kBAAkB;AAC9C,SAASC,IAAI,QAAQ,kBAAkB;AAEvC,IAAMC,UAAU,GAAG,SAAbA,UAAUA,CAAAC,IAAA;EAAA,IAAMC,iBAAiB,GAAAD,IAAA,CAAjBC,iBAAiB;EAAA,oBACrCN,KAAA,CAAAO,aAAA;IACEC,SAAS,EAAC,4DAA4D;IACtE,eAAY;EAAa,gBAEzBR,KAAA,CAAAO,aAAA,cACGD,iBAAiB,CAACG,GAAG,CAAC,UAAAC,QAAQ,EAAI;IACjC,IAAQC,EAAE,GAAyBD,QAAQ,CAAnCC,EAAE;MAAEC,WAAW,GAAYF,QAAQ,CAA/BE,WAAW;MAAEC,KAAK,GAAKH,QAAQ,CAAlBG,KAAK;IAC9B,oBACEb,KAAA,CAAAO,aAAA,CAACL,WAAW;MACVM,SAAS,EAAC,kBAAkB;MAC5BM,KAAK,EAAEF,WAAY;MACnBG,GAAG,EAAEJ;IAAG,gBAERX,KAAA,CAAAO,aAAA;MAAIC,SAAS,EAAC,KAAK;MAACQ,KAAK,EAAE;QAAEC,aAAa,EAAE;MAAO;IAAE,GAClDJ,KAAK,CAACJ,GAAG,CAAC,UAAAS,IAAI;MAAA,oBACblB,KAAA,CAAAO,aAAA;QAAIC,SAAS,EAAC;MAAkB,gBAC9BR,KAAA,CAAAO,aAAA,CAACJ,IAAI;QAACgB,EAAE,EAAED,IAAI,CAACE;MAAK,GACjBF,IAAI,CAACJ,KACF,CACJ,CAAC;IAAA,CACN,CACC,CACO,CAAC;EAElB,CAAC,CACE,CACF,CAAC;AAAA,CACP;AAEDV,UAAU,CAACiB,SAAS,GAAG;EACrBf,iBAAiB,EAAEL,SAAS,CAACqB,OAAO,CAACrB,SAAS,CAACsB,KAAK,CAAC;IACnDZ,EAAE,EAAEV,SAAS,CAACuB,MAAM;IACpBZ,WAAW,EAAEX,SAAS,CAACwB,IAAI;IAC3BZ,KAAK,EAAEZ,SAAS,CAACqB,OAAO,CAACrB,SAAS,CAACsB,KAAK,CAAC;MACvCH,IAAI,EAAEnB,SAAS,CAACuB,MAAM;MACtBV,KAAK,EAAEb,SAAS,CAACwB;IACnB,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC;AACDrB,UAAU,CAACsB,YAAY,GAAG;EACxBpB,iBAAiB,EAAE;AACrB,CAAC;AAED,eAAeF,UAAU","ignoreList":[]}
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { Dropdown, DropdownButton } from '@openedx/paragon';
4
+ import { Link } from 'react-router-dom';
5
+ var NavDropdownMenu = function NavDropdownMenu(_ref) {
6
+ var id = _ref.id,
7
+ buttonTitle = _ref.buttonTitle,
8
+ items = _ref.items;
9
+ return /*#__PURE__*/React.createElement(DropdownButton, {
10
+ id: id,
11
+ title: buttonTitle,
12
+ variant: "outline-primary",
13
+ className: "mr-2"
14
+ }, items.map(function (item) {
15
+ return /*#__PURE__*/React.createElement(Dropdown.Item, {
16
+ as: Link,
17
+ key: "".concat(item.title, "-dropdown-item"),
18
+ to: item.href,
19
+ className: "small"
20
+ }, item.title);
21
+ }));
22
+ };
23
+ NavDropdownMenu.propTypes = {
24
+ id: PropTypes.string.isRequired,
25
+ buttonTitle: PropTypes.node.isRequired,
26
+ items: PropTypes.arrayOf(PropTypes.shape({
27
+ href: PropTypes.string.isRequired,
28
+ title: PropTypes.node.isRequired
29
+ })).isRequired
30
+ };
31
+ export default NavDropdownMenu;
32
+ //# sourceMappingURL=NavDropdownMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NavDropdownMenu.js","names":["React","PropTypes","Dropdown","DropdownButton","Link","NavDropdownMenu","_ref","id","buttonTitle","items","createElement","title","variant","className","map","item","Item","as","key","concat","to","href","propTypes","string","isRequired","node","arrayOf","shape"],"sources":["../../src/studio-header/NavDropdownMenu.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Dropdown,\n DropdownButton,\n} from '@openedx/paragon';\nimport { Link } from 'react-router-dom';\n\nconst NavDropdownMenu = ({\n id,\n buttonTitle,\n items,\n}) => (\n <DropdownButton\n id={id}\n title={buttonTitle}\n variant=\"outline-primary\"\n className=\"mr-2\"\n >\n {items.map(item => (\n <Dropdown.Item\n as={Link}\n key={`${item.title}-dropdown-item`}\n to={item.href}\n className=\"small\"\n >\n {item.title}\n </Dropdown.Item>\n ))}\n </DropdownButton>\n);\n\nNavDropdownMenu.propTypes = {\n id: PropTypes.string.isRequired,\n buttonTitle: PropTypes.node.isRequired,\n items: PropTypes.arrayOf(PropTypes.shape({\n href: PropTypes.string.isRequired,\n title: PropTypes.node.isRequired,\n })).isRequired,\n};\n\nexport default NavDropdownMenu;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAClC,SACEC,QAAQ,EACRC,cAAc,QACT,kBAAkB;AACzB,SAASC,IAAI,QAAQ,kBAAkB;AAEvC,IAAMC,eAAe,GAAG,SAAlBA,eAAeA,CAAAC,IAAA;EAAA,IACnBC,EAAE,GAAAD,IAAA,CAAFC,EAAE;IACFC,WAAW,GAAAF,IAAA,CAAXE,WAAW;IACXC,KAAK,GAAAH,IAAA,CAALG,KAAK;EAAA,oBAELT,KAAA,CAAAU,aAAA,CAACP,cAAc;IACbI,EAAE,EAAEA,EAAG;IACPI,KAAK,EAAEH,WAAY;IACnBI,OAAO,EAAC,iBAAiB;IACzBC,SAAS,EAAC;EAAM,GAEfJ,KAAK,CAACK,GAAG,CAAC,UAAAC,IAAI;IAAA,oBACbf,KAAA,CAAAU,aAAA,CAACR,QAAQ,CAACc,IAAI;MACZC,EAAE,EAAEb,IAAK;MACTc,GAAG,KAAAC,MAAA,CAAKJ,IAAI,CAACJ,KAAK,mBAAiB;MACnCS,EAAE,EAAEL,IAAI,CAACM,IAAK;MACdR,SAAS,EAAC;IAAO,GAEhBE,IAAI,CAACJ,KACO,CAAC;EAAA,CACjB,CACa,CAAC;AAAA,CAClB;AAEDN,eAAe,CAACiB,SAAS,GAAG;EAC1Bf,EAAE,EAAEN,SAAS,CAACsB,MAAM,CAACC,UAAU;EAC/BhB,WAAW,EAAEP,SAAS,CAACwB,IAAI,CAACD,UAAU;EACtCf,KAAK,EAAER,SAAS,CAACyB,OAAO,CAACzB,SAAS,CAAC0B,KAAK,CAAC;IACvCN,IAAI,EAAEpB,SAAS,CAACsB,MAAM,CAACC,UAAU;IACjCb,KAAK,EAAEV,SAAS,CAACwB,IAAI,CAACD;EACxB,CAAC,CAAC,CAAC,CAACA;AACN,CAAC;AAED,eAAenB,eAAe","ignoreList":[]}