From a346dccd4ce5273c8f9e977dfc0fa6199d71ef3f Mon Sep 17 00:00:00 2001 From: Brian Smith <112954497+brian-smith-tcril@users.noreply.github.com> Date: Tue, 22 Oct 2024 12:18:11 -0400 Subject: [PATCH] feat: add `frontend-plugin-framework` slots (#545) Add the following `frontend-plugin-framework` slots: * `logo_slot` * `desktop_main_menu_slot` * `desktop_secondary_menu_slot` * `mobile_main_menu_slot` * `course_info_slot` * `learning_help_slot` * `desktop_logged_out_items_slot` * `mobile_logged_out_items_slot` * `mobile_user_menu_slot` * `desktop_user_menu_slot` * `learning_user_menu_slot` * `learning_logged_out_items_slot` * `desktop_header_slot` --- src/DesktopHeader.jsx | 222 ------------------ src/Header.jsx | 8 +- src/Logo.jsx | 4 +- src/desktop-header/DesktopHeader.jsx | 153 ++++++++++++ .../DesktopHeaderMainOrSecondaryMenu.jsx | 59 +++++ src/desktop-header/DesktopHeaderUserMenu.jsx | 39 +++ src/desktop-header/DesktopLoggedOutItems.jsx | 24 ++ src/learning-header/AnonymousUserMenu.jsx | 34 ++- .../AuthenticatedUserDropdown.jsx | 68 +++--- src/learning-header/LearningHeader.jsx | 23 +- .../LearningHeaderCourseInfo.jsx | 23 ++ .../LearningHeaderHelpLink.jsx | 14 ++ .../LearningHeaderUserMenuItems.jsx | 21 ++ .../LearningLoggedOutButtons.jsx | 26 ++ src/{ => mobile-header}/MobileHeader.jsx | 141 +++-------- src/mobile-header/MobileHeaderMainMenu.jsx | 58 +++++ src/mobile-header/MobileHeaderUserMenu.jsx | 35 +++ src/mobile-header/MobileLoggedOutItems.jsx | 25 ++ src/plugin-slots/CourseInfoSlot/README.md | 125 ++++++++++ ...omponents_before_and_after_course_info.png | Bin 0 -> 17506 bytes ...lace_course_info_with_custom_component.png | Bin 0 -> 13292 bytes .../images/replace_course_title.png | Bin 0 -> 14889 bytes src/plugin-slots/CourseInfoSlot/index.jsx | 28 +++ src/plugin-slots/DesktopHeaderSlot/README.md | 41 ++++ .../desktop_header_custom_component.png | Bin 0 -> 27763 bytes src/plugin-slots/DesktopHeaderSlot/index.jsx | 20 ++ .../DesktopLoggedOutItemsSlot/README.md | 134 +++++++++++ ...ktop_logged_out_items_custom_component.png | Bin 0 -> 10817 bytes ...t_items_custom_components_before_after.png | Bin 0 -> 14297 bytes .../desktop_logged_out_items_modify_items.png | Bin 0 -> 12915 bytes .../DesktopLoggedOutItemsSlot/index.jsx | 22 ++ .../DesktopMainMenuSlot/README.md | 134 +++++++++++ .../desktop_main_menu_custom_component.png | Bin 0 -> 9023 bytes ...in_menu_custom_components_before_after.png | Bin 0 -> 15401 bytes .../images/desktop_main_menu_modify_items.png | Bin 0 -> 10583 bytes .../DesktopMainMenuSlot/index.jsx | 22 ++ .../DesktopSecondaryMenuSlot/README.md | 129 ++++++++++ ...esktop_secondary_menu_custom_component.png | Bin 0 -> 14173 bytes ...ry_menu_custom_components_before_after.png | Bin 0 -> 15494 bytes .../desktop_secondary_menu_modify_items.png | Bin 0 -> 16145 bytes .../DesktopSecondaryMenuSlot/index.jsx | 22 ++ .../DesktopUserMenuSlot/README.md | 141 +++++++++++ .../desktop_user_menu_custom_component.png | Bin 0 -> 9245 bytes ...er_menu_custom_components_before_after.png | Bin 0 -> 17714 bytes .../images/desktop_user_menu_modify_items.png | Bin 0 -> 11521 bytes .../DesktopUserMenuSlot/index.jsx | 22 ++ src/plugin-slots/LearningHelpSlot/README.md | 41 ++++ .../images/learning_help_custom_component.png | Bin 0 -> 18483 bytes src/plugin-slots/LearningHelpSlot/index.jsx | 11 + .../LearningLoggedOutItemsSlot/README.md | 132 +++++++++++ ...ning_logged_out_items_custom_component.png | Bin 0 -> 16286 bytes ...t_items_custom_components_before_after.png | Bin 0 -> 20319 bytes ...arning_logged_out_items_modified_items.png | Bin 0 -> 18555 bytes .../LearningLoggedOutItemsSlot/index.jsx | 20 ++ .../LearningUserMenuSlot/README.md | 130 ++++++++++ .../learning_user_menu_custom_component.png | Bin 0 -> 7642 bytes ...er_menu_custom_components_before_after.png | Bin 0 -> 20360 bytes .../learning_user_menu_modified_items.png | Bin 0 -> 9626 bytes .../LearningUserMenuSlot/index.jsx | 20 ++ src/plugin-slots/LogoSlot/index.jsx | 9 +- src/plugin-slots/MobileHeaderSlot/README.md | 41 ++++ .../images/mobile_header_custom_component.png | Bin 0 -> 15830 bytes src/plugin-slots/MobileHeaderSlot/index.jsx | 20 ++ .../MobileLoggedOutItemsSlot/README.md | 134 +++++++++++ ...bile_logged_out_items_custom_component.png | Bin 0 -> 5701 bytes ...t_items_custom_components_before_after.png | Bin 0 -> 12654 bytes .../mobile_logged_out_items_modify_items.png | Bin 0 -> 10042 bytes .../MobileLoggedOutItemsSlot/index.jsx | 22 ++ src/plugin-slots/MobileMainMenuSlot/README.md | 134 +++++++++++ .../mobile_main_menu_custom_component.png | Bin 0 -> 8549 bytes ...in_menu_custom_components_before_after.png | Bin 0 -> 17362 bytes .../images/mobile_main_menu_modify_items.png | Bin 0 -> 9200 bytes src/plugin-slots/MobileMainMenuSlot/index.jsx | 22 ++ src/plugin-slots/MobileUserMenuSlot/README.md | 142 +++++++++++ .../mobile_user_menu_custom_component.png | Bin 0 -> 7939 bytes ...er_menu_custom_components_before_after.png | Bin 0 -> 13713 bytes .../images/mobile_user_menu_modify_items.png | Bin 0 -> 9173 bytes src/plugin-slots/MobileUserMenuSlot/index.jsx | 22 ++ src/plugin-slots/README.md | 12 + 79 files changed, 2328 insertions(+), 401 deletions(-) delete mode 100644 src/DesktopHeader.jsx create mode 100644 src/desktop-header/DesktopHeader.jsx create mode 100644 src/desktop-header/DesktopHeaderMainOrSecondaryMenu.jsx create mode 100644 src/desktop-header/DesktopHeaderUserMenu.jsx create mode 100644 src/desktop-header/DesktopLoggedOutItems.jsx create mode 100644 src/learning-header/LearningHeaderCourseInfo.jsx create mode 100644 src/learning-header/LearningHeaderHelpLink.jsx create mode 100644 src/learning-header/LearningHeaderUserMenuItems.jsx create mode 100644 src/learning-header/LearningLoggedOutButtons.jsx rename src/{ => mobile-header}/MobileHeader.jsx (57%) create mode 100644 src/mobile-header/MobileHeaderMainMenu.jsx create mode 100644 src/mobile-header/MobileHeaderUserMenu.jsx create mode 100644 src/mobile-header/MobileLoggedOutItems.jsx create mode 100644 src/plugin-slots/CourseInfoSlot/README.md create mode 100644 src/plugin-slots/CourseInfoSlot/images/add_custom_components_before_and_after_course_info.png create mode 100644 src/plugin-slots/CourseInfoSlot/images/replace_course_info_with_custom_component.png create mode 100644 src/plugin-slots/CourseInfoSlot/images/replace_course_title.png create mode 100644 src/plugin-slots/CourseInfoSlot/index.jsx create mode 100644 src/plugin-slots/DesktopHeaderSlot/README.md create mode 100644 src/plugin-slots/DesktopHeaderSlot/images/desktop_header_custom_component.png create mode 100644 src/plugin-slots/DesktopHeaderSlot/index.jsx create mode 100644 src/plugin-slots/DesktopLoggedOutItemsSlot/README.md create mode 100644 src/plugin-slots/DesktopLoggedOutItemsSlot/images/desktop_logged_out_items_custom_component.png create mode 100644 src/plugin-slots/DesktopLoggedOutItemsSlot/images/desktop_logged_out_items_custom_components_before_after.png create mode 100644 src/plugin-slots/DesktopLoggedOutItemsSlot/images/desktop_logged_out_items_modify_items.png create mode 100644 src/plugin-slots/DesktopLoggedOutItemsSlot/index.jsx create mode 100644 src/plugin-slots/DesktopMainMenuSlot/README.md create mode 100644 src/plugin-slots/DesktopMainMenuSlot/images/desktop_main_menu_custom_component.png create mode 100644 src/plugin-slots/DesktopMainMenuSlot/images/desktop_main_menu_custom_components_before_after.png create mode 100644 src/plugin-slots/DesktopMainMenuSlot/images/desktop_main_menu_modify_items.png create mode 100644 src/plugin-slots/DesktopMainMenuSlot/index.jsx create mode 100644 src/plugin-slots/DesktopSecondaryMenuSlot/README.md create mode 100644 src/plugin-slots/DesktopSecondaryMenuSlot/images/desktop_secondary_menu_custom_component.png create mode 100644 src/plugin-slots/DesktopSecondaryMenuSlot/images/desktop_secondary_menu_custom_components_before_after.png create mode 100644 src/plugin-slots/DesktopSecondaryMenuSlot/images/desktop_secondary_menu_modify_items.png create mode 100644 src/plugin-slots/DesktopSecondaryMenuSlot/index.jsx create mode 100644 src/plugin-slots/DesktopUserMenuSlot/README.md create mode 100644 src/plugin-slots/DesktopUserMenuSlot/images/desktop_user_menu_custom_component.png create mode 100644 src/plugin-slots/DesktopUserMenuSlot/images/desktop_user_menu_custom_components_before_after.png create mode 100644 src/plugin-slots/DesktopUserMenuSlot/images/desktop_user_menu_modify_items.png create mode 100644 src/plugin-slots/DesktopUserMenuSlot/index.jsx create mode 100644 src/plugin-slots/LearningHelpSlot/README.md create mode 100644 src/plugin-slots/LearningHelpSlot/images/learning_help_custom_component.png create mode 100644 src/plugin-slots/LearningHelpSlot/index.jsx create mode 100644 src/plugin-slots/LearningLoggedOutItemsSlot/README.md create mode 100644 src/plugin-slots/LearningLoggedOutItemsSlot/images/learning_logged_out_items_custom_component.png create mode 100644 src/plugin-slots/LearningLoggedOutItemsSlot/images/learning_logged_out_items_custom_components_before_after.png create mode 100644 src/plugin-slots/LearningLoggedOutItemsSlot/images/learning_logged_out_items_modified_items.png create mode 100644 src/plugin-slots/LearningLoggedOutItemsSlot/index.jsx create mode 100644 src/plugin-slots/LearningUserMenuSlot/README.md create mode 100644 src/plugin-slots/LearningUserMenuSlot/images/learning_user_menu_custom_component.png create mode 100644 src/plugin-slots/LearningUserMenuSlot/images/learning_user_menu_custom_components_before_after.png create mode 100644 src/plugin-slots/LearningUserMenuSlot/images/learning_user_menu_modified_items.png create mode 100644 src/plugin-slots/LearningUserMenuSlot/index.jsx create mode 100644 src/plugin-slots/MobileHeaderSlot/README.md create mode 100644 src/plugin-slots/MobileHeaderSlot/images/mobile_header_custom_component.png create mode 100644 src/plugin-slots/MobileHeaderSlot/index.jsx create mode 100644 src/plugin-slots/MobileLoggedOutItemsSlot/README.md create mode 100644 src/plugin-slots/MobileLoggedOutItemsSlot/images/mobile_logged_out_items_custom_component.png create mode 100644 src/plugin-slots/MobileLoggedOutItemsSlot/images/mobile_logged_out_items_custom_components_before_after.png create mode 100644 src/plugin-slots/MobileLoggedOutItemsSlot/images/mobile_logged_out_items_modify_items.png create mode 100644 src/plugin-slots/MobileLoggedOutItemsSlot/index.jsx create mode 100644 src/plugin-slots/MobileMainMenuSlot/README.md create mode 100644 src/plugin-slots/MobileMainMenuSlot/images/mobile_main_menu_custom_component.png create mode 100644 src/plugin-slots/MobileMainMenuSlot/images/mobile_main_menu_custom_components_before_after.png create mode 100644 src/plugin-slots/MobileMainMenuSlot/images/mobile_main_menu_modify_items.png create mode 100644 src/plugin-slots/MobileMainMenuSlot/index.jsx create mode 100644 src/plugin-slots/MobileUserMenuSlot/README.md create mode 100644 src/plugin-slots/MobileUserMenuSlot/images/mobile_user_menu_custom_component.png create mode 100644 src/plugin-slots/MobileUserMenuSlot/images/mobile_user_menu_custom_components_before_after.png create mode 100644 src/plugin-slots/MobileUserMenuSlot/images/mobile_user_menu_modify_items.png create mode 100644 src/plugin-slots/MobileUserMenuSlot/index.jsx diff --git a/src/DesktopHeader.jsx b/src/DesktopHeader.jsx deleted file mode 100644 index 10c2a71..0000000 --- a/src/DesktopHeader.jsx +++ /dev/null @@ -1,222 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { injectIntl, intlShape } from '@edx/frontend-platform/i18n'; -import { getConfig } from '@edx/frontend-platform'; - -// Local Components -import { Menu, MenuTrigger, MenuContent } from './Menu'; -import Avatar from './Avatar'; -import LogoSlot from './plugin-slots/LogoSlot'; - -// i18n -import messages from './Header.messages'; - -// Assets -import { CaretIcon } from './Icons'; - -class DesktopHeader extends React.Component { - constructor(props) { // eslint-disable-line no-useless-constructor - super(props); - } - - renderMenu(menu) { - // Nodes are accepted as a prop - if (!Array.isArray(menu)) { - return menu; - } - - return menu.map((menuItem) => { - const { - type, - href, - content, - submenuContent, - disabled, - isActive, - onClick, - } = menuItem; - - if (type === 'item') { - return ( - - {content} - - ); - } - - return ( - - - {content} - - - {submenuContent} - - - ); - }); - } - - renderMainMenu() { - const { mainMenu } = this.props; - return this.renderMenu(mainMenu); - } - - renderSecondaryMenu() { - const { secondaryMenu } = this.props; - return this.renderMenu(secondaryMenu); - } - - renderUserMenu() { - const { - userMenu, - avatar, - username, - intl, - } = this.props; - - return ( - - - - {username} - - - {userMenu.map((group, index) => ( - // eslint-disable-next-line react/jsx-no-comment-textnodes,react/no-array-index-key - - {group.heading &&
{group.heading}
} - {group.items.map(({ - type, content, href, disabled, isActive, onClick, - }) => ( - - {content} - - ))} - {index < userMenu.length - 1 &&
} - - ))} - -
- ); - } - - renderLoggedOutItems() { - const { loggedOutItems } = this.props; - - return loggedOutItems.map((item, i, arr) => ( - - {item.content} - - )); - } - - render() { - const { - logo, - logoAltText, - logoDestination, - loggedIn, - intl, - } = this.props; - const logoProps = { src: logo, alt: logoAltText, href: logoDestination }; - const logoClasses = getConfig().AUTHN_MINIMAL_HEADER ? 'mw-100' : null; - - return ( -
- {intl.formatMessage(messages['header.label.skip.nav'])} -
-
- - - -
-
-
- ); - } -} - -DesktopHeader.propTypes = { - mainMenu: PropTypes.oneOfType([ - PropTypes.node, - PropTypes.array, - ]), - secondaryMenu: PropTypes.oneOfType([ - PropTypes.node, - PropTypes.array, - ]), - userMenu: PropTypes.arrayOf(PropTypes.shape({ - heading: PropTypes.string, - items: PropTypes.arrayOf(PropTypes.shape({ - type: PropTypes.oneOf(['item', 'menu']), - href: PropTypes.string, - content: PropTypes.string, - isActive: PropTypes.bool, - onClick: PropTypes.func, - })), - })), - loggedOutItems: PropTypes.arrayOf(PropTypes.shape({ - type: PropTypes.oneOf(['item', 'menu']), - href: PropTypes.string, - content: PropTypes.string, - })), - logo: PropTypes.string, - logoAltText: PropTypes.string, - logoDestination: PropTypes.string, - avatar: PropTypes.string, - username: PropTypes.string, - loggedIn: PropTypes.bool, - - // i18n - intl: intlShape.isRequired, -}; - -DesktopHeader.defaultProps = { - mainMenu: [], - secondaryMenu: [], - userMenu: [], - loggedOutItems: [], - logo: null, - logoAltText: null, - logoDestination: null, - avatar: null, - username: null, - loggedIn: false, -}; - -export default injectIntl(DesktopHeader); diff --git a/src/Header.jsx b/src/Header.jsx index bff801f..2f190f2 100644 --- a/src/Header.jsx +++ b/src/Header.jsx @@ -11,8 +11,8 @@ import { } from '@edx/frontend-platform'; import PropTypes from 'prop-types'; -import DesktopHeader from './DesktopHeader'; -import MobileHeader from './MobileHeader'; +import DesktopHeaderSlot from './plugin-slots/DesktopHeaderSlot'; +import MobileHeaderSlot from './plugin-slots/MobileHeaderSlot'; import messages from './Header.messages'; @@ -123,10 +123,10 @@ const Header = ({ return ( <> - + - + ); diff --git a/src/Logo.jsx b/src/Logo.jsx index 2353eb3..08f832f 100644 --- a/src/Logo.jsx +++ b/src/Logo.jsx @@ -12,10 +12,12 @@ const Logo = ({ ); -Logo.propTypes = { +export const logoDataShape = { href: PropTypes.string.isRequired, src: PropTypes.string.isRequired, alt: PropTypes.string.isRequired, }; +Logo.propTypes = logoDataShape; + export default Logo; diff --git a/src/desktop-header/DesktopHeader.jsx b/src/desktop-header/DesktopHeader.jsx new file mode 100644 index 0000000..4b5e493 --- /dev/null +++ b/src/desktop-header/DesktopHeader.jsx @@ -0,0 +1,153 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { injectIntl, intlShape } from '@edx/frontend-platform/i18n'; +import { getConfig } from '@edx/frontend-platform'; + +// Local Components +import { Menu, MenuTrigger, MenuContent } from '../Menu'; +import Avatar from '../Avatar'; +import LogoSlot from '../plugin-slots/LogoSlot'; +import DesktopLoggedOutItemsSlot from '../plugin-slots/DesktopLoggedOutItemsSlot'; +import { desktopLoggedOutItemsDataShape } from './DesktopLoggedOutItems'; +import DesktopMainMenuSlot from '../plugin-slots/DesktopMainMenuSlot'; +import { desktopHeaderMainOrSecondaryMenuDataShape } from './DesktopHeaderMainOrSecondaryMenu'; +import DesktopSecondaryMenuSlot from '../plugin-slots/DesktopSecondaryMenuSlot'; +import DesktopUserMenuSlot from '../plugin-slots/DesktopUserMenuSlot'; +import { desktopUserMenuDataShape } from './DesktopHeaderUserMenu'; + +// i18n +import messages from '../Header.messages'; + +// Assets +import { CaretIcon } from '../Icons'; + +class DesktopHeader extends React.Component { + constructor(props) { // eslint-disable-line no-useless-constructor + super(props); + } + + renderMainMenu() { + const { mainMenu } = this.props; + return ; + } + + renderSecondaryMenu() { + const { secondaryMenu } = this.props; + return ; + } + + renderUserMenu() { + const { + userMenu, + avatar, + username, + intl, + } = this.props; + + return ( + + + + {username} + + + + + + ); + } + + renderLoggedOutItems() { + const { loggedOutItems } = this.props; + return ; + } + + render() { + const { + logo, + logoAltText, + logoDestination, + loggedIn, + intl, + } = this.props; + const logoProps = { src: logo, alt: logoAltText, href: logoDestination }; + const logoClasses = getConfig().AUTHN_MINIMAL_HEADER ? 'mw-100' : null; + + return ( +
+ {intl.formatMessage(messages['header.label.skip.nav'])} +
+
+ + + +
+
+
+ ); + } +} + +export const desktopHeaderDataShape = { + mainMenu: desktopHeaderMainOrSecondaryMenuDataShape, + secondaryMenu: desktopHeaderMainOrSecondaryMenuDataShape, + userMenu: desktopUserMenuDataShape, + loggedOutItems: desktopLoggedOutItemsDataShape, + logo: PropTypes.string, + logoAltText: PropTypes.string, + logoDestination: PropTypes.string, + avatar: PropTypes.string, + username: PropTypes.string, + loggedIn: PropTypes.bool, +}; + +DesktopHeader.propTypes = { + mainMenu: desktopHeaderDataShape.mainMenu, + secondaryMenu: desktopHeaderDataShape.secondaryMenumainMenu, + userMenu: desktopHeaderDataShape.userMenumainMenu, + loggedOutItems: desktopHeaderDataShape.loggedOutItemsmainMenu, + logo: desktopHeaderDataShape.logomainMenu, + logoAltText: desktopHeaderDataShape.logoAltTextmainMenu, + logoDestination: desktopHeaderDataShape.logoDestinationmainMenu, + avatar: desktopHeaderDataShape.avatarmainMenu, + username: desktopHeaderDataShape.usernamemainMenu, + loggedIn: desktopHeaderDataShape.loggedInmainMenu, + + // i18n + intl: intlShape.isRequired, +}; + +DesktopHeader.defaultProps = { + mainMenu: [], + secondaryMenu: [], + userMenu: [], + loggedOutItems: [], + logo: null, + logoAltText: null, + logoDestination: null, + avatar: null, + username: null, + loggedIn: false, +}; + +export default injectIntl(DesktopHeader); diff --git a/src/desktop-header/DesktopHeaderMainOrSecondaryMenu.jsx b/src/desktop-header/DesktopHeaderMainOrSecondaryMenu.jsx new file mode 100644 index 0000000..d3d4d51 --- /dev/null +++ b/src/desktop-header/DesktopHeaderMainOrSecondaryMenu.jsx @@ -0,0 +1,59 @@ +import React from 'react'; +import PropTypes from 'prop-types'; + +import { Menu, MenuTrigger, MenuContent } from '../Menu'; +import { CaretIcon } from '../Icons'; + +const DesktopHeaderMainOrSecondaryMenu = ({ menu }) => { + // Nodes are accepted as a prop + if (!Array.isArray(menu)) { + return menu; + } + + return menu.map((menuItem) => { + const { + type, + href, + content, + submenuContent, + disabled, + isActive, + onClick, + } = menuItem; + + if (type === 'item') { + return ( + + {content} + + ); + } + + return ( + + + {content} + + + {submenuContent} + + + ); + }); +}; + +export const desktopHeaderMainOrSecondaryMenuDataShape = PropTypes.oneOfType([ + PropTypes.node, + PropTypes.array, +]); + +DesktopHeaderMainOrSecondaryMenu.propTypes = { + menu: desktopHeaderMainOrSecondaryMenuDataShape, +}; + +export default DesktopHeaderMainOrSecondaryMenu; diff --git a/src/desktop-header/DesktopHeaderUserMenu.jsx b/src/desktop-header/DesktopHeaderUserMenu.jsx new file mode 100644 index 0000000..b273696 --- /dev/null +++ b/src/desktop-header/DesktopHeaderUserMenu.jsx @@ -0,0 +1,39 @@ +import React from 'react'; +import PropTypes from 'prop-types'; + +const DesktopHeaderUserMenu = ({ menu }) => menu.map((group, index) => ( + // eslint-disable-next-line react/jsx-no-comment-textnodes,react/no-array-index-key + + {group.heading &&
{group.heading}
} + {group.items.map(({ + type, content, href, disabled, isActive, onClick, + }) => ( + + {content} + + ))} + {index < menu.length - 1 &&
} + +)); + +export const desktopUserMenuDataShape = PropTypes.arrayOf(PropTypes.shape({ + heading: PropTypes.string, + items: PropTypes.arrayOf(PropTypes.shape({ + type: PropTypes.oneOf(['item', 'menu']), + href: PropTypes.string, + content: PropTypes.string, + isActive: PropTypes.bool, + onClick: PropTypes.func, + })), +})); + +DesktopHeaderUserMenu.propTypes = { + menu: desktopUserMenuDataShape, +}; + +export default DesktopHeaderUserMenu; diff --git a/src/desktop-header/DesktopLoggedOutItems.jsx b/src/desktop-header/DesktopLoggedOutItems.jsx new file mode 100644 index 0000000..a4cd062 --- /dev/null +++ b/src/desktop-header/DesktopLoggedOutItems.jsx @@ -0,0 +1,24 @@ +import React from 'react'; +import PropTypes from 'prop-types'; + +const DesktopLoggedOutItems = ({ items }) => items.map((item, i, arr) => ( + + {item.content} + +)); + +export const desktopLoggedOutItemsDataShape = PropTypes.arrayOf(PropTypes.shape({ + type: PropTypes.oneOf(['item', 'menu']), + href: PropTypes.string, + content: PropTypes.string, +})); + +DesktopLoggedOutItems.propTypes = { + items: desktopLoggedOutItemsDataShape, +}; + +export default DesktopLoggedOutItems; diff --git a/src/learning-header/AnonymousUserMenu.jsx b/src/learning-header/AnonymousUserMenu.jsx index 74c3f3e..d98593c 100644 --- a/src/learning-header/AnonymousUserMenu.jsx +++ b/src/learning-header/AnonymousUserMenu.jsx @@ -3,27 +3,25 @@ import React from 'react'; import { getConfig } from '@edx/frontend-platform'; import { getLoginRedirectUrl } from '@edx/frontend-platform/auth'; import { injectIntl, intlShape } from '@edx/frontend-platform/i18n'; -import { Button } from '@openedx/paragon'; +import LearningLoggedOutItemsSlot from '../plugin-slots/LearningLoggedOutItemsSlot'; import genericMessages from '../generic/messages'; -const AnonymousUserMenu = ({ intl }) => ( -
- - -
-); +const AnonymousUserMenu = ({ intl }) => { + const buttonsInfo = [ + { + message: intl.formatMessage(genericMessages.registerSentenceCase), + href: `${getConfig().LMS_BASE_URL}/register?next=${encodeURIComponent(global.location.href)}`, + }, + { + message: intl.formatMessage(genericMessages.signInSentenceCase), + href: getLoginRedirectUrl(global.location.href), + variant: 'primary', + }, + ]; + + return ; +}; AnonymousUserMenu.propTypes = { intl: intlShape.isRequired, diff --git a/src/learning-header/AuthenticatedUserDropdown.jsx b/src/learning-header/AuthenticatedUserDropdown.jsx index 9caadb4..4a91228 100644 --- a/src/learning-header/AuthenticatedUserDropdown.jsx +++ b/src/learning-header/AuthenticatedUserDropdown.jsx @@ -7,44 +7,46 @@ import { getConfig } from '@edx/frontend-platform'; import { injectIntl, intlShape } from '@edx/frontend-platform/i18n'; import { Dropdown } from '@openedx/paragon'; +import LearningUserMenuSlot from '../plugin-slots/LearningUserMenuSlot'; + import messages from './messages'; const AuthenticatedUserDropdown = ({ intl, username }) => { - const dashboardMenuItem = ( - - {intl.formatMessage(messages.dashboard)} - - ); + const dropdownItems = [ + { + message: intl.formatMessage(messages.dashboard), + href: `${getConfig().LMS_BASE_URL}/dashboard`, + }, + { + message: intl.formatMessage(messages.profile), + href: `${getConfig().ACCOUNT_PROFILE_URL}/u/${username}`, + }, + { + message: intl.formatMessage(messages.account), + href: getConfig().ACCOUNT_SETTINGS_URL, + }, + ...(getConfig().ORDER_HISTORY_URL ? [{ + message: intl.formatMessage(messages.orderHistory), + href: getConfig().ORDER_HISTORY_URL, + }] : []), + { + message: intl.formatMessage(messages.signOut), + href: getConfig().LOGOUT_URL, + }, + ]; return ( - <> - {intl.formatMessage(messages.help)} - - - - - {username} - - - - {dashboardMenuItem} - - {intl.formatMessage(messages.profile)} - - - {intl.formatMessage(messages.account)} - - { getConfig().ORDER_HISTORY_URL && ( - - {intl.formatMessage(messages.orderHistory)} - - )} - - {intl.formatMessage(messages.signOut)} - - - - + + + + + {username} + + + + + + ); }; diff --git a/src/learning-header/LearningHeader.jsx b/src/learning-header/LearningHeader.jsx index 4341d63..723b592 100644 --- a/src/learning-header/LearningHeader.jsx +++ b/src/learning-header/LearningHeader.jsx @@ -7,7 +7,10 @@ import { AppContext } from '@edx/frontend-platform/react'; import AnonymousUserMenu from './AnonymousUserMenu'; import AuthenticatedUserDropdown from './AuthenticatedUserDropdown'; import LogoSlot from '../plugin-slots/LogoSlot'; +import CourseInfoSlot from '../plugin-slots/CourseInfoSlot'; +import { courseInfoDataShape } from './LearningHeaderCourseInfo'; import messages from './messages'; +import LearningHelpSlot from '../plugin-slots/LearningHelpSlot'; const LearningHeader = ({ courseOrg, courseNumber, courseTitle, intl, showUserDropdown, @@ -27,14 +30,16 @@ const LearningHeader = ({ {intl.formatMessage(messages.skipNavLink)}
{headerLogo} -
- {courseOrg} {courseNumber} - {courseTitle} +
+
{showUserDropdown && authenticatedUser && ( - + <> + + + )} {showUserDropdown && !authenticatedUser && ( @@ -45,9 +50,9 @@ const LearningHeader = ({ }; LearningHeader.propTypes = { - courseOrg: PropTypes.string, - courseNumber: PropTypes.string, - courseTitle: PropTypes.string, + courseOrg: courseInfoDataShape.courseOrg, + courseNumber: courseInfoDataShape.courseNumber, + courseTitle: courseInfoDataShape.courseTitle, intl: intlShape.isRequired, showUserDropdown: PropTypes.bool, }; diff --git a/src/learning-header/LearningHeaderCourseInfo.jsx b/src/learning-header/LearningHeaderCourseInfo.jsx new file mode 100644 index 0000000..f42992d --- /dev/null +++ b/src/learning-header/LearningHeaderCourseInfo.jsx @@ -0,0 +1,23 @@ +import React from 'react'; +import PropTypes from 'prop-types'; + +const LearningHeaderCourseInfo = ({ + courseOrg, + courseNumber, + courseTitle, +}) => ( +
+ {courseOrg} {courseNumber} + {courseTitle} +
+); + +export const courseInfoDataShape = { + courseOrg: PropTypes.string, + courseNumber: PropTypes.string, + courseTitle: PropTypes.string, +}; + +LearningHeaderCourseInfo.propTypes = courseInfoDataShape; + +export default LearningHeaderCourseInfo; diff --git a/src/learning-header/LearningHeaderHelpLink.jsx b/src/learning-header/LearningHeaderHelpLink.jsx new file mode 100644 index 0000000..b9b23a1 --- /dev/null +++ b/src/learning-header/LearningHeaderHelpLink.jsx @@ -0,0 +1,14 @@ +import React from 'react'; + +import { getConfig } from '@edx/frontend-platform'; +import { useIntl } from '@edx/frontend-platform/i18n'; +import messages from './messages'; + +const LearningHeaderHelpLink = () => { + const intl = useIntl(); + return ( + {intl.formatMessage(messages.help)} + ); +}; + +export default LearningHeaderHelpLink; diff --git a/src/learning-header/LearningHeaderUserMenuItems.jsx b/src/learning-header/LearningHeaderUserMenuItems.jsx new file mode 100644 index 0000000..40c66e5 --- /dev/null +++ b/src/learning-header/LearningHeaderUserMenuItems.jsx @@ -0,0 +1,21 @@ +import React from 'react'; +import PropTypes from 'prop-types'; + +import { Dropdown } from '@openedx/paragon'; + +const LearningHeaderUserMenuItems = ({ items }) => items.map((item) => ( + + {item.message} + +)); + +export const learningHeaderUserMenuDataShape = { + items: PropTypes.arrayOf(PropTypes.shape({ + message: PropTypes.string, + href: PropTypes.string, + })), +}; + +LearningHeaderUserMenuItems.propTypes = learningHeaderUserMenuDataShape; + +export default LearningHeaderUserMenuItems; diff --git a/src/learning-header/LearningLoggedOutButtons.jsx b/src/learning-header/LearningLoggedOutButtons.jsx new file mode 100644 index 0000000..7bd8e1f --- /dev/null +++ b/src/learning-header/LearningLoggedOutButtons.jsx @@ -0,0 +1,26 @@ +import React from 'react'; +import PropTypes from 'prop-types'; + +import { Button } from '@openedx/paragon'; + +const LearningLoggedOutButtons = ({ buttonsInfo }) => buttonsInfo.map(buttonInfo => ( + +)); + +export const learningHeaderLoggedOutItemsDataShape = { + buttonsInfo: PropTypes.arrayOf(PropTypes.shape({ + message: PropTypes.string, + href: PropTypes.string, + variant: PropTypes.string, + })), +}; + +LearningLoggedOutButtons.propTypes = learningHeaderLoggedOutItemsDataShape; + +export default LearningLoggedOutButtons; diff --git a/src/MobileHeader.jsx b/src/mobile-header/MobileHeader.jsx similarity index 57% rename from src/MobileHeader.jsx rename to src/mobile-header/MobileHeader.jsx index 750e50b..7a04ec7 100644 --- a/src/MobileHeader.jsx +++ b/src/mobile-header/MobileHeader.jsx @@ -4,107 +4,40 @@ import { injectIntl, intlShape } from '@edx/frontend-platform/i18n'; import { getConfig } from '@edx/frontend-platform'; // Local Components -import { Menu, MenuTrigger, MenuContent } from './Menu'; -import Avatar from './Avatar'; -import LogoSlot from './plugin-slots/LogoSlot'; +import { Menu, MenuTrigger, MenuContent } from '../Menu'; +import Avatar from '../Avatar'; +import LogoSlot from '../plugin-slots/LogoSlot'; +import MobileLoggedOutItemsSlot from '../plugin-slots/MobileLoggedOutItemsSlot'; +import { mobileHeaderLoggedOutItemsDataShape } from './MobileLoggedOutItems'; +import MobileMainMenuSlot from '../plugin-slots/MobileMainMenuSlot'; +import { mobileHeaderMainMenuDataShape } from './MobileHeaderMainMenu'; +import MobileUserMenuSlot from '../plugin-slots/MobileUserMenuSlot'; +import { mobileHeaderUserMenuDataShape } from './MobileHeaderUserMenu'; // i18n -import messages from './Header.messages'; +import messages from '../Header.messages'; // Assets -import { MenuIcon } from './Icons'; +import { MenuIcon } from '../Icons'; class MobileHeader extends React.Component { constructor(props) { // eslint-disable-line no-useless-constructor super(props); } - renderMenu(menu) { - // Nodes are accepted as a prop - if (!Array.isArray(menu)) { - return menu; - } - - return menu.map((menuItem) => { - const { - type, - href, - content, - submenuContent, - disabled, - isActive, - onClick, - } = menuItem; - - if (type === 'item') { - return ( - - {content} - - ); - } - - return ( - - - {content} - - - {submenuContent} - - - ); - }); - } - renderMainMenu() { - const { mainMenu } = this.props; - return this.renderMenu(mainMenu); - } - - renderSecondaryMenu() { - const { secondaryMenu } = this.props; - return this.renderMenu(secondaryMenu); + const { mainMenu, secondaryMenu } = this.props; + return ; } renderUserMenuItems() { const { userMenu } = this.props; - - return userMenu.map((group) => ( - group.items.map(({ - type, content, href, disabled, isActive, onClick, - }) => ( -
  • - - {content} - -
  • - )) - )); + return ; } renderLoggedOutItems() { const { loggedOutItems } = this.props; - - return loggedOutItems.map(({ type, href, content }, i, arr) => ( -
  • - - {content} - -
  • - )); + return ; } render() { @@ -149,7 +82,6 @@ class MobileHeader extends React.Component { className="nav flex-column pin-left pin-right border-top shadow py-2" > {this.renderMainMenu()} - {this.renderSecondaryMenu()}
    @@ -179,30 +111,11 @@ class MobileHeader extends React.Component { } } -MobileHeader.propTypes = { - mainMenu: PropTypes.oneOfType([ - PropTypes.node, - PropTypes.array, - ]), - secondaryMenu: PropTypes.oneOfType([ - PropTypes.node, - PropTypes.array, - ]), - userMenu: PropTypes.arrayOf(PropTypes.shape({ - heading: PropTypes.string, - items: PropTypes.arrayOf(PropTypes.shape({ - type: PropTypes.oneOf(['item', 'menu']), - href: PropTypes.string, - content: PropTypes.string, - isActive: PropTypes.bool, - onClick: PropTypes.func, - })), - })), - loggedOutItems: PropTypes.arrayOf(PropTypes.shape({ - type: PropTypes.oneOf(['item', 'menu']), - href: PropTypes.string, - content: PropTypes.string, - })), +export const mobileHeaderDataShape = { + mainMenu: mobileHeaderMainMenuDataShape, + secondaryMenu: mobileHeaderMainMenuDataShape, + userMenu: mobileHeaderUserMenuDataShape, + loggedOutItems: mobileHeaderLoggedOutItemsDataShape, logo: PropTypes.string, logoAltText: PropTypes.string, logoDestination: PropTypes.string, @@ -210,6 +123,20 @@ MobileHeader.propTypes = { username: PropTypes.string, loggedIn: PropTypes.bool, stickyOnMobile: PropTypes.bool, +}; + +MobileHeader.propTypes = { + mainMenu: mobileHeaderDataShape.mainMenu, + secondaryMenu: mobileHeaderDataShape.secondaryMenu, + userMenu: mobileHeaderDataShape.userMenu, + loggedOutItems: mobileHeaderDataShape.loggedOutItems, + logo: mobileHeaderDataShape.logo, + logoAltText: mobileHeaderDataShape.logoAltText, + logoDestination: mobileHeaderDataShape.logoDestination, + avatar: mobileHeaderDataShape.avatar, + username: mobileHeaderDataShape.username, + loggedIn: mobileHeaderDataShape.loggedIn, + stickyOnMobile: mobileHeaderDataShape.stickyOnMobile, // i18n intl: intlShape.isRequired, diff --git a/src/mobile-header/MobileHeaderMainMenu.jsx b/src/mobile-header/MobileHeaderMainMenu.jsx new file mode 100644 index 0000000..095128f --- /dev/null +++ b/src/mobile-header/MobileHeaderMainMenu.jsx @@ -0,0 +1,58 @@ +import React from 'react'; +import PropTypes from 'prop-types'; + +import { Menu, MenuTrigger, MenuContent } from '../Menu'; + +const MobileHeaderMainMenu = ({ menu }) => { + // Nodes are accepted as a prop + if (!Array.isArray(menu)) { + return menu; + } + + return menu.map((menuItem) => { + const { + type, + href, + content, + submenuContent, + disabled, + isActive, + onClick, + } = menuItem; + + if (type === 'item') { + return ( + + {content} + + ); + } + + return ( + + + {content} + + + {submenuContent} + + + ); + }); +}; + +export const mobileHeaderMainMenuDataShape = PropTypes.oneOfType([ + PropTypes.node, + PropTypes.array, +]); + +MobileHeaderMainMenu.propTypes = { + menu: mobileHeaderMainMenuDataShape, +}; + +export default MobileHeaderMainMenu; diff --git a/src/mobile-header/MobileHeaderUserMenu.jsx b/src/mobile-header/MobileHeaderUserMenu.jsx new file mode 100644 index 0000000..17ad2d8 --- /dev/null +++ b/src/mobile-header/MobileHeaderUserMenu.jsx @@ -0,0 +1,35 @@ +import React from 'react'; +import PropTypes from 'prop-types'; + +const MobileHeaderUserMenu = ({ menu }) => menu.map((group) => ( + group.items.map(({ + type, content, href, disabled, isActive, onClick, + }) => ( +
  • + + {content} + +
  • + )) +)); + +export const mobileHeaderUserMenuDataShape = PropTypes.arrayOf(PropTypes.shape({ + heading: PropTypes.string, + items: PropTypes.arrayOf(PropTypes.shape({ + type: PropTypes.oneOf(['item', 'menu']), + href: PropTypes.string, + content: PropTypes.string, + isActive: PropTypes.bool, + onClick: PropTypes.func, + })), +})); + +MobileHeaderUserMenu.propTypes = { + menu: mobileHeaderUserMenuDataShape, +}; + +export default MobileHeaderUserMenu; diff --git a/src/mobile-header/MobileLoggedOutItems.jsx b/src/mobile-header/MobileLoggedOutItems.jsx new file mode 100644 index 0000000..40f2579 --- /dev/null +++ b/src/mobile-header/MobileLoggedOutItems.jsx @@ -0,0 +1,25 @@ +import React from 'react'; +import PropTypes from 'prop-types'; + +const MobileLoggedOutItems = ({ items }) => items.map(({ type, href, content }, i, arr) => ( +
  • + + {content} + +
  • +)); + +export const mobileHeaderLoggedOutItemsDataShape = PropTypes.arrayOf(PropTypes.shape({ + type: PropTypes.oneOf(['item', 'menu']), + href: PropTypes.string, + content: PropTypes.string, +})); + +MobileLoggedOutItems.propTypes = { + menu: mobileHeaderLoggedOutItemsDataShape, +}; + +export default MobileLoggedOutItems; diff --git a/src/plugin-slots/CourseInfoSlot/README.md b/src/plugin-slots/CourseInfoSlot/README.md new file mode 100644 index 0000000..574de55 --- /dev/null +++ b/src/plugin-slots/CourseInfoSlot/README.md @@ -0,0 +1,125 @@ +# Course Info Slot + +### Slot ID: `course_info_slot` + +## Description + +This slot is used to replace/modify/hide the course info. + +## Examples + +### Replace Course Title + +The following `env.config.jsx` will replace the course title. + +![Screenshot of replaced course title](./images/replace_course_title.png) + +```jsx +import { PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const replaceCourseTitle = ( widget ) => { + widget.content.courseTitle = "Custom Course Title"; + return widget; +}; + +const config = { + pluginSlots: { + course_info_slot: { + keepDefault: true, + plugins: [ + { + op: PLUGIN_OPERATIONS.Modify, + widgetId: 'default_contents', + fn: replaceCourseTitle, + }, + ] + }, + }, +} + +export default config; +``` + +### Replace Course Info with Custom Component + +The following `env.config.jsx` will replace the course info entirely (in this case with a centered πŸ—ΊοΈ `h1`) + +![Screenshot of replaced course info with custom component](./images/replace_course_info_with_custom_component.png) + +```jsx +import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const config = { + pluginSlots: { + course_info_slot: { + keepDefault: false, + plugins: [ + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_course_info_component', + type: DIRECT_PLUGIN, + RenderWidget: () => ( +

    πŸ—ΊοΈ

    + ), + }, + }, + ] + } + }, +} + +export default config; +``` + +### Add Custom Components before and after Course Info + +The following `env.config.jsx` will place custom components before and after the course info (in this case centered `h1`s with 🌜 and πŸŒ›). + +![Screenshot of added custom components before and after course info](./images/add_custom_components_before_and_after_course_info.png) + +```jsx +import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const config = { + pluginSlots: { + course_info_slot: { + keepDefault: true, + plugins: [ + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_before_course_info_component', + type: DIRECT_PLUGIN, + priority: 10, + RenderWidget: () => ( +

    🌜

    + ), + }, + }, + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_after_course_info_component', + type: DIRECT_PLUGIN, + priority: 90, + RenderWidget: () => ( +

    πŸŒ›

    + ), + }, + }, + ] + }, + }, +} + +export default config; +``` diff --git a/src/plugin-slots/CourseInfoSlot/images/add_custom_components_before_and_after_course_info.png b/src/plugin-slots/CourseInfoSlot/images/add_custom_components_before_and_after_course_info.png new file mode 100644 index 0000000000000000000000000000000000000000..ed0ec695de0cdfd1b5e84bbb11a4a6947bdaab85 GIT binary patch literal 17506 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 literal 0 HcmV?d00001 diff --git a/src/plugin-slots/CourseInfoSlot/images/replace_course_title.png b/src/plugin-slots/CourseInfoSlot/images/replace_course_title.png new file mode 100644 index 0000000000000000000000000000000000000000..5358afde51b5afe585609d0ed3812186bfb5cd41 GIT binary patch literal 14889 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 PCqm-6%(HBf*WUjJA-VJ{ literal 0 HcmV?d00001 diff --git a/src/plugin-slots/CourseInfoSlot/index.jsx b/src/plugin-slots/CourseInfoSlot/index.jsx new file mode 100644 index 0000000..db7c3f2 --- /dev/null +++ b/src/plugin-slots/CourseInfoSlot/index.jsx @@ -0,0 +1,28 @@ +import React from 'react'; +import { PluginSlot } from '@openedx/frontend-plugin-framework'; +import LearningHeaderCourseInfo, { courseInfoDataShape } from '../../learning-header/LearningHeaderCourseInfo'; + +const CourseInfoSlot = ({ + courseOrg, + courseNumber, + courseTitle, + ...attributes +}) => ( + + + +); + +CourseInfoSlot.propTypes = courseInfoDataShape; + +export default CourseInfoSlot; diff --git a/src/plugin-slots/DesktopHeaderSlot/README.md b/src/plugin-slots/DesktopHeaderSlot/README.md new file mode 100644 index 0000000..eb40189 --- /dev/null +++ b/src/plugin-slots/DesktopHeaderSlot/README.md @@ -0,0 +1,41 @@ +# Desktop Header Slot + +### Slot ID: `desktop_header_slot` + +## Description + +This slot is used to replace/modify/hide the entire desktop header. + +## Examples + +### Custom Component + +The following `env.config.jsx` will replace the desktop header entirely (in this case with a centered πŸ—ΊοΈ `h1`) + +![Screenshot of custom component](./images/desktop_header_custom_component.png) + +```jsx +import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const config = { + pluginSlots: { + desktop_header_slot: { + keepDefault: false, + plugins: [ + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_desktop_header_component', + type: DIRECT_PLUGIN, + RenderWidget: () => ( +

    πŸ—ΊοΈ

    + ), + }, + }, + ] + } + }, +} + +export default config; +``` \ No newline at end of file diff --git a/src/plugin-slots/DesktopHeaderSlot/images/desktop_header_custom_component.png b/src/plugin-slots/DesktopHeaderSlot/images/desktop_header_custom_component.png new file mode 100644 index 0000000000000000000000000000000000000000..3d663f719c506d00bd211773280579d1671ff2b0 GIT binary patch literal 27763 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 literal 0 HcmV?d00001 diff --git a/src/plugin-slots/DesktopHeaderSlot/index.jsx b/src/plugin-slots/DesktopHeaderSlot/index.jsx new file mode 100644 index 0000000..aeaac54 --- /dev/null +++ b/src/plugin-slots/DesktopHeaderSlot/index.jsx @@ -0,0 +1,20 @@ +import React from 'react'; +import { PluginSlot } from '@openedx/frontend-plugin-framework'; +import DesktopHeader, { desktopHeaderDataShape } from '../../desktop-header/DesktopHeader'; + +const DesktopHeaderSlot = ({ + props, +}) => ( + + + +); + +DesktopHeaderSlot.propTypes = desktopHeaderDataShape; + +export default DesktopHeaderSlot; diff --git a/src/plugin-slots/DesktopLoggedOutItemsSlot/README.md b/src/plugin-slots/DesktopLoggedOutItemsSlot/README.md new file mode 100644 index 0000000..8d8249e --- /dev/null +++ b/src/plugin-slots/DesktopLoggedOutItemsSlot/README.md @@ -0,0 +1,134 @@ +# Desktop Logged Out Items Slot + +### Slot ID: `desktop_logged_out_items_slot` + +## Description + +This slot is used to replace/modify/hide the items shown on desktop when the user is logged out. + +## Examples + +### Modify Items + +The following `env.config.jsx` will modify the items shown on desktop when the user is logged out. + +![Screenshot of modified items](./images/desktop_logged_out_items_modify_items.png) + +```jsx +import { PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const modifyLoggedOutItems = ( widget ) => { + widget.content.items = [ + { + type: 'item', + href: 'https://openedx.org/', + content: 'openedx.org', + }, + { + type: 'item', + href: 'https://docs.openedx.org/en/latest/', + content: 'Documentation', + }, + { + type: 'item', + href: 'https://discuss.openedx.org/', + content: 'Forums', + } + ]; + return widget; +}; + +const config = { + pluginSlots: { + desktop_logged_out_items_slot: { + keepDefault: true, + plugins: [ + { + op: PLUGIN_OPERATIONS.Modify, + widgetId: 'default_contents', + fn: modifyLoggedOutItems, + }, + ] + }, + }, +} + +export default config; +``` + +### Replace with Custom Component + +The following `env.config.jsx` will replace the items shown on desktop when the user is logged out entirely (in this case with a centered πŸ—ΊοΈ `h1`) + +![Screenshot of custom component](./images/desktop_logged_out_items_custom_component.png) + +```jsx +import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const config = { + pluginSlots: { + desktop_logged_out_items_slot: { + keepDefault: false, + plugins: [ + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_logged_out_items_component', + type: DIRECT_PLUGIN, + RenderWidget: () => ( +

    πŸ—ΊοΈ

    + ), + }, + }, + ] + }, + }, +} + +export default config; +``` + +### Add Custom Components before and after + +The following `env.config.jsx` will place custom components before and after the items shown on desktop when the user is logged out (in this case centered `h1`s with 🌜 and πŸŒ›). + +![Screenshot of custom components before and after](./images/desktop_logged_out_items_custom_components_before_after.png) + +```jsx +import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const config = { + pluginSlots: { + desktop_logged_out_items_slot: { + keepDefault: true, + plugins: [ + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_before_logged_out_items_component', + type: DIRECT_PLUGIN, + priority: 10, + RenderWidget: () => ( +

    🌜

    + ), + }, + }, + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_after_logged_out_items_component', + type: DIRECT_PLUGIN, + priority: 90, + RenderWidget: () => ( +

    πŸŒ›

    + ), + }, + }, + ] + }, + }, +} + +export default config; +``` + diff --git a/src/plugin-slots/DesktopLoggedOutItemsSlot/images/desktop_logged_out_items_custom_component.png b/src/plugin-slots/DesktopLoggedOutItemsSlot/images/desktop_logged_out_items_custom_component.png new file mode 100644 index 0000000000000000000000000000000000000000..62282e08ccfe19ae7310aa30a3d56604ed3baf0e GIT binary patch literal 10817 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 Ngox~?G9f*`{{`L&7-9eb literal 0 HcmV?d00001 diff --git a/src/plugin-slots/DesktopLoggedOutItemsSlot/images/desktop_logged_out_items_custom_components_before_after.png b/src/plugin-slots/DesktopLoggedOutItemsSlot/images/desktop_logged_out_items_custom_components_before_after.png new file mode 100644 index 0000000000000000000000000000000000000000..36b431aca1e0e810377ecb71e5e2dd527d204d1b GIT binary patch literal 14297 zcmb8WWmr{F*Dg#Wtw>0VNJxitDH2L|cXxNENGsjl2uOEHH%JTYO^3v$JI>^J-uL_Y zUFUFZcCNMNoNJD_$34aflb4miLMKLtgM-8R@>x_74h~Tny#MkH1w8Y0nT3ECBqxzC z%Fn=`_cP;f;4_i4n7Xr)ovE{%fujkWnXR3T36qnNqlt;FlewKU46#E997OYU&?iR| z17{06+tkd)4#vkZ#hqrJkQeM>K>t0X41O*G zp6EEm=3LN<$JPm_T5=;^pA0TlWrNrM{3!ZkI-J@6KZiXR(Jp_Rjr(-QbCGZCvHp_( zbAh4H2=xDZDJrz$|D5+$BI$W<B@f3$(H(GyYchH1SVp5(rl0;^~!+(Dv(ncK8&Mikx_kD zEY~kZ5ju!mK`+o|p@mO)nqGyECqZL$kP%_y%a3mGd^@}=JeZcxf(2A33-CnZL%+ZH z&W=wS+Nnv1hp&zH{knY8$i%|dTV;RKkvHYjf5x>+a}qYL3{0^AZdxfvxKnKfV!Z{sJ|AzDQqxWsPG(|zfw`{EY3t~L;b z+KZI@VYKYVoY|g~drRSZ8C%GPp|&{JyN%z9Ey8!c=kQ*_fky{lC*3M`#*n62SH{zI zw^J$TuykiFT>=?O(pg1VJ?nppG*29qI+v8cCoboriZGuVRHvfbsltUTj|T4Q+TXl_ z4`bp~tHFj`U+?r0#Nf${9^&_cCmHbP8*-%>h6cNgXo+|{anG$(*2~RMCYvn;t!Jy% z;>C^~$z*+_pyRb-47>Aom{~D?seC^Y7@F0Qk+G1r4b~0N5v-Wj$^E~w$;%=4+u9ce zj-O|v#P70)S4d?}oL={yRqVX^=FRTLSiJKF2ti}2`IqnKROW;J_{uN)ScTU5@fegIcjrz9*&(E_&V`^@q;xs|;^gG;XYX{SicDY$`q73ze~DfhF>Fjzds6J($Se{g=jm6t#{@SD*6kLSVt<4i zq5(~d_l@zfNXkzV-N>~gJD`bmsPsyOlp2w89$1$9>+cu0h21;Utd90jB)}xUyouUtJ8yNW~Rk|asL+~agV&>iCU=5#6n=rrl;=J~Pe|i* zC?WUNo?HN%n&fbPr{G6k7E;GMi;)gSLQI4CL+f z-`ieLIVI7$pLl1f8T{ewL_Wk@zpUR%w<;hI(VoJ?_cjD;926Hp*Xi~epQvj^N%oFO zAI;uQ+&TLnVJt1&CWr6ua!Pn>CpP#}dDG}9NIXqQW?Xi?&SO^F((pi|JKR7iA#W4=}2k??ZLW!vHvWGblOtBQ6& z$n&JE)CTcHS%^Vw^2zoVShTQbmVCdpC@S_qQ&pqxHE_#(~DO)1;iI2 zZ06|YI0=HEzHM_0u?HY(IANhyqYcFmfACEAPxOk`y9MmZ0b#yDj2SBVTW z1vieQqxGrHm@Z+w4?R|KOK-7T>3cD&na< zEme(b8Ew}pCl=a-{=@BuZ13l!pW7-fc%$=$H}FN2ZnRg+ngJn%BHCQd*iDO3uo*b2 zZ*TlQMHap2Q*htW>!WclrwG^dMj3R(D1I+v^!RXZy;vWWpP&Ec(t$4nvSI6zUO3S?F3t`9xqbO)a96)6N9$KP-ZYoVIC#3m9i{MQ4$`8lwNX$ zdb4}=sYg@?4_eiOH)>@)`No+ZUMO?R_iuA-ZePwG!lycubbVs+>8udOCY*0D>R@vw zzgjb4f*MuI_OcXmm+Yp9JqU3MzU)Yb2weP|9@ea2h(pn^g5xfJ*h#i;A>BD_UG>$h zIHqH*975xPCrn=Y?y?f7MwdihN-dT6{rh+MwfmZy8gQ5W+3YMA>uuiB(oQwI?BSAS zrKW~=uO49&wZ_i;Bp!Q-*y3b$yZ7xUZur#h+D_OMqi$P>9Kp|(vjyOi*Mxsx94r!X zm`djyfGyFivvio#adTL-X;AqvDEdX<{%mR=(zbY8Gidzg^=p5yj}s+Iv=8T%eg;)| z`{5L9hDbDVVV4jum?L4s@1|wjX4ix8TsrC0_hB?Lsd#_Q4wsrn(s|>ElG#Rqv zMeck&$Iw_eWmwhXTgmC=VDVqs;6;p}kg5GJIZ6(yq@fuEiz()KxU5$Hp(1>BOO+Kp zhx6UJQks990*X7+Daw2oB%f5HgD5YTB~MWllBH=b$OZb$B2<4Fj}j#MU7)i?MNQwf zwYZ9^R4#9?mu}DFETny`icMYZW)XfI+>PT!LP`#^B^O!teCWlzAIA78&F6Vof>EJ) z*?>SVGo@Z-C{_~qPR=p>luW?=yT3miF{h<+?y0evnbXO}mp5H6@Gu4a0C$ zMbO~S?>{sn$S=hL_we$^0wu?T=&>-U&tYlA%FZvCOEjQAw|aJs6TQ!Hxf`r>SKNGB zTyi(t&&XQ6$-;XzF#wHT;>Z$fU>ZiP8>DY zTI+-b!Y33ZNur9O&V}%Qcu@V|a&=^I0fXwT-E+!NaW`Dyhpw-$muS|}fBg87norNu zlkef-;p+N2p%F7lDvI8~n{5@EZ(=-YGjDb0(WpPM&?Lh_&~{160dWt+_Q~q@A*v=y zJ&E;hWd3e(tVu{lCNo!|gJHclS4j~g{J^8)mvMUW zO(dk}RIlY@5K5K9x;Vsr9qZvV>yZ`QKA4p=)aOz~l#L}VwpEVLb$utW|_xsFr;$e;jeHVBU zh!XS;AzsQatMVCiUvlMu;!%I@7|)q3RT*t#H;s6rLq!HAWGl1130q64+k7^tfvq`% zX>j7hc4wv`ATe%QcRQZELsE*Qmb=PsF=?X)%{? z-Rph7ZBujRl#-buocUz2YYud#Tp?sxN;q56{hOOszpoK%n#|98Z&Em08KeF9Yws#! zrgs)8J>qjFziV(#{z_n6?TO-cFebxwGU2pGc4XnO2>%V;rWrHbhI~Roy_sB3tZ#jo zMx3|VB-vGp&>FhkCv*4aHXg;#HgA&quKwEGB_#L!-V{E*D0=K(eSfmu!C^|*edA17Jadm6 zn0GubH1N&W&Aq{G_f@wVOn98EyN}&-M^Kw$F*psit>;1z)qF0Ok_B_`ON4mc@nwzE z-LwV)(_UjP7 zWSAu^B4T~n4O#%i)I7B>5E%p5Amp&Huz71PVs6`!?2kd_^S^Q~Ti?BV=Y6#rdUvx| zxzjA0#%1Gvcid0Jst>2r?7UjlPmZX+G4KNk71e15|Kwjx)@+f^&o;-QjmI+E1O9M3=qURo50U?rMrzCM7d-G;j;{ zcUKOjs^vpeF#?ME?gv8&4A)y}cAr0g{xIkAhKj0bJJYN2e7210R;53hjEKkn^;D6Z z*=Q;!#4$^FgXP`3FmR1uM*Y}|N=j(Yo@JX1Ct{NE#Y-m8dyKmQ8&N2eCa$eb8lF4x z%it3V4!QP9os5)}(bh-vOun>@{ z`R&iMeZ?da0Vsp$z4>#v2tpRq!B}ciVPDd;QSsBQQ6d3%Rs{tG$U5_x&^y_wLKy{> z1dSTg$tEYWz@Q+OMn6|qt}MR?USLRQd3jS-R`mZi*p07r1sz{rUMAj`6lJbO^B*3O zU;f5m`Q@^w3h}vIM(D;s#eDT4Pdo};5LG0e!R_HZ|9xI!Fm@xa`|BW6CWJ6sf=)9E zir!t;f3H>3EJsp4aBnH`UUn~h(YL~!_0+FG+ZwQ2I(rfDmA>)EJY>3r|1t+ zlR2v0(n93d7x3O~3<0zR2d}5chZuD7Smv@cnGN&y5Li9eq#<6%FYfm15jrY$dCvm- zJJ?((Ul#evKy5R2yd-F`$@mBF^Jvy!X8o2zYUf;O%Gjhb#?y;a9xfaA(=nxeYn)o{ zTL(nS=;$lGt8GK)uxibb{RO{xpc(`GMqd><1%i>GcE0gXKXU%vX`dHV!!}M)LS**`@JhMm1p=`gN%^xDHY}6)wEr{%7VfaZ&8lD^6cNT3K2rsg^B)%Zaw>Qi86DBnXQNkpTR>(v6njQem-~qv!1zCkXt$!UF?y!jw!@X|tpM*tULTUR~d?dj6J%dvNi=jDUDW&!oAr znUAzIE)#z`Y)L?l6Q6>mJXX7(6TofBc_vP*!0BeN#~9I$%a>^)jpOVMax3X(>tvZp zsceNC)(~+^$(ep}f?(MJJR~YAdNjf@F5gsL_4^|JosxRBF&gkX+y{T_s00Nwc%8Ob zEvM;(u2v9%q9S+BR~aqTnBgFzU}ih4_dVfjHC>O8^mJ0#wcwnjtnAh>ONa4FXMm`< zID&ZZEl^1+diwBw3O`Z`3X0hZonbFnTj+xI*2SV7>e0o3H?SGbyMIF3eQv9LZe0ON z>mjjg4VcGzQc{?oJD@*$uSmM>uDkc$ou$=IHyjd30!)dVvF-!Z^o2OuEBKzZXnOaPD zC=Q3!EaSt~Iu4CornIr~+ZQih^z`?8A<{Q2jvg+zprNB10`LLx{|ABj18m+?DC>=oTDN%hqSLLL&u}PhZ>r8grNYY#*(eESV1E18ym>5?VgL|r4{If%mgu=>7iuA*!JZeRm?fa$3)*SM_249 zu0UJO4lQ5QEM3nea>Q|MiL!0$b3E&@fSa`m>z}h-pKRA5;&y>YjnVP0GsQ_-tjSFJ z{p;~|qNS~$$p-lK(|_?EcXx{v{*y)*{W(Yo_dad6QC|PxFUW*s$7vxK7s2H>9<*uO zax0q>x4(dXiv->Qryr_TG_oE+E$-ilePsiqw6$Es6mE$c*^fnq;P+0ED74f&1RW#2 z1Na=Mw)-W&%RfA+B<2FExe5q5jlbz=>TxF`&M*Bg1o0U1(XJrWu$Y)4J81hE3`*fY zKd=5IYd{$StkR@uTw##Wp0Jl~r!8;~H+w7~{OB3@K~oyj1ymo&fp9(_|et@`S17Fp9q1+F*Z zAb!uwwHgXl%Qe+DU3V z`g%8jB?F_QCU;lI!NIQ*LJ62OS@k>Nz-4;BQ+`r!ab-fqAvYdLW`krGi$xFw2M4pd z?yCdy1MY&(&QcQx3754#2vcjV=El56&-dn(I(&UBr;EFQZPRG9r_^b2-JF!5I6s_f zbT9%)U?f*8;uVN4+`i1FEjXD-q6r|&ER+QjJXBK2ZYMbd$UoEjXXCO2N<0dIxTSK z3)LoJL-e94>LQfG3g$Hxdn=BA8Y@W7l#e($tkqxfyP3QsHZAy4tEY>j0y+8sL!8jr zNk#1Mg8lj`0DqAhGUmt0o0{GmkdG<8ywph|9qI0V@>!t$JKxlsC@5=E6Srz;z2eL_0&jD+}`niDHAIsT+&=(&q z0fP+jCeAfv?t3LL7o+p>#T;<@DJ`uZnX zS=k>QHH!y8m1-O}CD+#1+b)wl&;L!9sj=9_T!C>)^g7zPlM&WE?hadEuh@;B`Ew_m zL)(1>;xn`{t?#a}e8}u4p2kvA8Sv=j(Kf*YkE$9GF|STxYh8r9Bi)(dj&whQc2;W) zmSxX3){q+gF6YCDN)_K zZ{8N$I|gBt5GaIQ`ADGK2s`{u4ppZ9d3AV!!RtppRlkhtZn#v`dJPNM*SsUYjZW9^ zmE%voKOkOvcweE{R{bJOm~)3Ylh|3UYEwp1c0IEnsy`O&SL1l2E}JD|GBe(yUTgRg zS_xI%aKPVAZ;Y#?)-@-%qFIQ&UqH46H{; zom1fAD(>8uSrA7MFc|^_`Id%e&7Nn%g$&TFGo>L~-^XADoGH>`wn0u=gFtYTf`gHO zo$Lqj&SL%-C6Jg+01R1_FBo(zElb_pm#zVgyxteJUN@(^4xkw~5V~6Hh1jtSe!^#| zaj~)JBU<#5ii)_tzP|GZ7YK_sTqJnhl~SL+&3_99p%RZ=0f%lc+I4JZdL6zyf&FpG05fbDaB_#-0rVWW*-r`OxNh{w*ScVfr&wlAsKj=wBPP%gsjapetep9X z9G;u5hQ_p`Df>eg7sR5)vTvjQiJr)hFE%<|SxGz{=ExVTxkN?gtWRNb(`MPTmrU=nz!k)YB@Gj1m(tEmn2PXMvM)v z=3V#8e8=X{3ITot6s2vZOUQGf%tyr2b}hXP51faDXPt?SKJRxgc)05=hHS_x^7gQ* z&JJe79?P#%0>)+Nl~Py|ybha+K2VRF)+p4N${-*hgfDe8GFpliJd9IJ6JBPr9GWKh z$tLut^ExF1qzzEW3Lqe;UcZJ@Q6Uoc71-U~tofD)hz}4#=jwI%K85o@){c7#^?sR8 zzR~r&KYugF(u_+c?3-R=HvR_?0fv_rOO0&c!&U>-cO66*n?Pg?W=d6-+}ER!V`+Fu z3CS~a=_G$t3dNIBSZ7MO0;yj90%Z7mrO% zba=2QWApc{FPEkJ>iFQyz!ZlIW5H2zO0cq#*7<9Gq9$>jRcG<8AJl*goJf)W7n)S@ z;?m|}-&9YO~V7FTA`Y3P0vXH+*@ zQL$Q$_t)u}F%kp34%oB0@SW?w$G0Eh{z>37LXVZqFb=%f2hFAObgJRt2$`O00g$5U zavSz74J-cOXSq(<@4pI3%n13XbtPEVvfL-w38*F=IB6QZ2;>n0))Y!;xRRzPU-%$) zy9;^-Lk9x`Cxp}Z_#aa+3hKmmbad|_$4@yz)lu)Lp&W5;!`~$}$}x25yoH*<3fCvz z&)(lJEfwFr5s|w5_<4N9bQMRKZU0dy|6`Jb#-)`&rQiZZT&d%J{-k5Y9-r3Q1^)HG z0N7wrUtN(*%}oLQRDo)qIF_N2QCrN;&W>SFNp5f` zNw;t~v13wv{Ki4k$r)w_^a`+5$GCb{n?nhr5)w~=U@Di5Bml{rmea2}YIam6AEUp0 zdv@5o$E@pfu3|ct9yViX0_^IhZ-&(7US$W$(ZwBJzcKq{wTaYM9E!0>B90wEG4IWm zuU|s_P$TCWis!g^c^7UqzlMaY+Vh}e{y;L~u`o3?4KT<977Galuddu(5B`QMSTi4MvrrC69+w2JY2j3}PYOmQg&UqpYS_>bkc5w-_L_40 z*5ABhn(WOS$AOya{8H^`nx8!=lQI64A)bJEWvYfCd)cH*Co`u(>=%gg0$vnlv4mtx z!hdw6`5qY-@VMv^S(~0q@}okGDodY#9-h6^-clZ0##j5U~%?}3X zuWlC>e!0j696;}`Fm?;l(H$u-A+y+NGrt>4Ffe4;czw7M=7iE?Ix2B4A*%N7H!1PX z^*sj+zidWXTAo$ni7MCq4p>kT<1{LPAbZtlDeQ-YHWHs~eOd69_XdxBIxhZsYdTei z@S-C02_5FMpO{Bwp@uC-PD+I>VqfOMPUxfv4K3zY-^tj`ZnByjvd6|wCG&W)&h>LK zpWQN(8Mz+}J^-Gk=%jD40@4}*pyoujYL{*AVTM+YMe}8MO021J@hPf2S6N7O74@FX z&SLq?M<3hI0X7Rw*j%tXL_G=;5Lg0+eW49T2Nu^p!S_rKyERVYmUs`o&Qdc*!%k48 zxW!|Xz=-^d`9MM(W4=JG`6PmhN?Xcbf!NsC`3}DhH;BS=v-pt8c#n4sh3{2P&m2Ad z!q9BF7O(4mGB?R8loJFqiHsVG`daSpJWoR4BIhio(eBL)Xv{(YNPGGSY-Ny)WEVj| z)9TbOU}$Iv*V?5ZEsZG=O}aXf^9ka^&d&Y{@V^{pV@PA85&VyWzdTM&opmlVUq+G_ zfSB$C2z9l^6wOan1~UFkD`N|gh64Gz1O_z%o}@yH*2jli>t)U69xlR{FJ5%rUqZ)A zRm#xIDR(>$$5^C*mw&v6`C+`h`xX_o2?l(!;=nH2sbr_ zM%}w4^xPLRSXzWM))1kUEI8k~Q$hR4w)b?drgvM3hwwPB3udQZv7_w2z;_8VZk(?3*y!-x*wp_VC;6$c1`-{6UXJ*vpmj;Kh?q28g z!1zV>eIB>2-GsK=7Nm&IFPsezeNsDc&cA+eaQ`-H* zmY5@Gx1Q$#jkEt_{!XKTI&+(1cW^l7Vl^s;5O-yJIHKF@M{>OM%o`e#Oco}p2m_zy z=LEO|Y7Blf9Q>i;byObv4;6Qf7DWvO>%y>clhu~-G{jB7aimv zK=#B4#5Rz9hYmoOK*?jbo%ybJ@?t(qO1|OaBi5N)XmX-GK0d}I7r3&^XldQt+ByM} zjwn8E;poV&Rd2ltY$E-AsLhi$B!Q$0SEF$QqmC8>H*Rs9Dq!PwF8XYZOv6< zy})kUxQYV1*x50Ujf=b9Ey@bdh@b{YS;Q{j6D+5wz+X^rQ$YbZ{jV4J-%|19@w8<# zU`Yiph%9nsbtnP@@$kebsl|+7Fn;xp3o~+03;G0lJ@?}Agq3rO@CUtH1(ha$Q={IPb0@k{Fav*e*bM|X16E(Q6oH{ea>NJq~ze!jOhre&1}m5Yjs@3Bb- zHbn#D_`Q&b0umR{3x8h*pYHCK=wnNuwOt)S*>MKIe((XdnC|$2E3LdI=Z!e#g`{?uP`V8Xokmu;=Zic}{Xmu)X7WHwS7%vewNRE)PX(<&V{t}JYQk4&C; zQdlHWV9e;yYH(aDs|6QqT;t!eU3a};q^B1j)s34`{~XM5e}f2;a?I2f;M?=QBB)pU zu9eB(WUqemal!4?^#?bhyK#GKE(|o<@uP*@1nKmLD7Ow^6{d`Ocrv}NgoLif?cuOV z1-pPh=KwSCePtOze2fQGN(2M{gYXxfQw`b=8QkS6k$QXcj@B8z);!?>v%b8caj&FhT-fC?# z+i7TMNT)j6%Ibdj00#s-l9V?V#D@2QQLF|A2GZ#~KLAyDx?q;|BQsOh-kz07vo_oB z@d5I>$Z>P1^>mD1I*ls|=tfQ{J zR=PsAcscDL=@S$3vgtfsPZ`c)YmjK91XLr?&}!d%Pr%5UPh`V`Nw`+M8+*hCal^M4 zROn3gWu^3>B7>&Jbkq=l&5Ucc@PUarV)>RR=WS0?Q0 zGQF!sULl1`#E|=3NmuD+H?+4b<(k!4W5Ic7t$7f5JI_Q@cwsR(Erh%+oH;g7pjzP6 z^>5Y;qvEpRB5X`7v$F9(EvV1MiuJlTRH_!%*JOu(wP0Iw0*Sx@KBS+Px=4Wo%G$M= z)uy;{9lod=kIfdfBOlH<(OfZAV)Al!+@q$aU;8*+;&^V`;m)0AN=Sx^Za#7by%b?# zfp2%$HrH~Yu|@(iP+@q8cD>8HutQ`~tZ*+c-HSybATc={%ZBhRCgv$0ObyYSde6?m z!IGLSqM~vLwo4HUKkVB#x;dBPJ44T;#ikx;Qj^g~F~XdsbUv4GRC0I!07TTGz#@@n z3bJQs%Z+ZrXqxDS#4h2|JPPqsMLLX{-$%0iHom8oFSNeW$c}f z2{O^w`xCAbPThtVbF^}My<2pn(C*pZdZbmnlnv4|#fT646dL!b9n zP8Gj()T?|R_(_s$>Wf>8J%u3L*0YgOp;mJd^eYlUh>f}{hazRQz ziC!yf(3pP0k-jGZq~4#>1@7*RZU%b(Wc;ph+gs|OlK1Ksufwz0fIEkJL_$hdq#Q5P z&S88lBs7ia!u(ZO7_(yRa^v#KUXfy3GcpB*97g@i>e-JMeuh zb4%uCazVo(n&*1@l@7;2S0wNWAhS8EWoH7Id}`T$oPAJYMv)dbjLQVdVzn^magr!Zn{+Kx|hyb*^+ z62~kH1NbT`#j2wsb)_CExoiJkHzSgwMup}YZk!M4Jq~C+O1iCU(5Vm4$|Fb$k(T9R zSt?=31P$(8Oqy+tC*y^<)_qFh_%$j_W8>+uSKja;LY1y9B5j^xE+g@b^%ER_CY9p4 zHewWwSm~&TcjdPz{q!-{wE#r8y*OyO8uMVTrLzZAAb?LB+?k+w4b-a*2~vh&Ubj?h zqb*;WtUB|h2zqe=27DDD8&HBZStvvD6`Ra+hAEW+)Po`lns6L0j|V0OXj0?O%)xS< zsF}a;I+InC?X(Ljl%2Qi&pj43D}KGZk4re`oQNJ39n`>dwF-HgI^{wp$bopU!G`C= zY8mII5Lm%*d~BjejcfD@de8us1x260_)_!rS=Oz&wqP(tYJfT)MPwz{mJCoMe0SRKIsBO$jf5fLOixJYRwf+!opo! zmigr*74S6ct#@@63*H6>1{SLx{7$ia>Nq&Y$xD{E#1un=Au!Ya9W>fmNa9}nnV1-O z_%l?|hb~;RnUgc*s$Y?j?nn1Tby-e<4#b7^91!Ml{aptlB}<5$)n{M2A5?J?LVFE! z0F$p=q8I|;?T`3)=Sd@LE)oE03uQC-AYznKj?$k$KLb3f+ETO9Q{i#3d${Gt@<)Nx z!D!zTt=i!39ZG}ZkCgiL+SNBfiE$yBiP(t*$^SZ#Xi}Wsik2h?v2uE2*+8utG)wE>y93o=9&QWedt(*NUFG)e3AoT&+ea^}PxU;8h_y2$Ca9=a_ z!oos+VPR}qT124*Bw|>DV*OOQF;$U4KKwS{>n4XVq9qNHlxTA zHggaP(vnnjL{&Cp*V8{C3*`f3AwOZ3ZfdOmHqg+g8peo}+#^ZW>F&_Bi%8v3c&ZW` zo8*?!7t`czE-HOIjf|XhvFDr2Xv($#$m0MdjzzL3gHFXO?`8)6{Ljeg^8%x~;&ZSXd4@|kEquD79=8AOJSozQ>MR|bqWcjv5vQ6&AOu} z!c~LO#1ojrTtS*t6SBUczNUiB>v)aqlVnZV1xof^dU3}o+{oElck%}c#V;Ci)tZre zag`6n;{V$>@JJV4hbvhpBwt6%Bb#UT7;?xHv?htT98l3Dugt+m!-|@t{;8{oKD^wr zsm?s&WUfXEwU9~k9lQ#1O1(L?V2g8OEn$@kCvJx*w&=JZJa5>FK+vHy@-lMs;?+LA zDmee|?+KsMJoWA<6MSZcD!k=5coFyiZG$nMar%!Ki-Ho)otbmbOj3I@F~Us>laqaF z#=8evt}&mo+z3U={Lue4OliLqqIi6dC?U7j0L5Vgtt7R!nsQspI&YeQ3+scK{mo6- z=l4z@?-vH{t(5i8Cl#dKoaXA!IREK$l3ZWbh)I1RRs+mVdyq zp0ZV9ghe7>KByp}6<09+cfUlwF(mv<243PnT@og5|JyP3q8K0cf|>Az!&XdlPdPAe~$27O5w`~RB7ux4_1 zaiyPnnZU$EiHc3*N^*z)+jj;$8uf1K|7EjTFlaSQQv)X+5w0y1YXJju%{Avb*E##MKYQ=-la&_3!6d~*Lqo$6|M)>34eg#Hcr5<# z0r<(=0QUyJ&=Er7iVwk;+e3qI;BOK;5mh?{D7c5-792~qXY%kbY*x37~K0(pY zUZ9D8c(3RbzcuCTBsoI%dvB-HV8&6;pZewN4|=o?uuXMXp2&r8pS)R4UP`HmhD4cq zS>*7Kl*}?YKAfW0MNM_DLqkMfhPp4GwEkuJ!SX0Vai-_saBZO*wURiAf*@vGyPbny z&Nj|)Jf!;iSP1-}WA_$K4fR}SjjSsma>Q?XB`=fDuub#N)1l0UHeB!id+2rE>z_|= zU-DS!+shxGu>b!1`^UTV|DNmRqs)KK`Z(p=|Ixt#->dKZ_tdm;)q0T6e0YfEejK)v zV*hF$W*mI|S2dFiy{TIIqIjF~zj*&WcgokQrz9Pok7i`c^hoN6xk6l~x1(c;i5yF` zNl9YV$g%31e*B&~J&9>*SJThb%vVfamo;W5?Sc;0A>T^OjQCeSntzf-J3{D)|DSPx z_eLg(A7UH-alPUra#YZEIq;bNbH3%vecD0fJub5>`{+McDtEU_t0*R$u;U}k(U+Q$ zdWaH3r0(|jE^x@da{>GLJHeNvKh?s9YXNHbF}NIkn_n~2{eK3I&Wl)ka8xtpUrloJ z2K?qhtcfNchyHg~zdfacFlaoLti^EXh{2(Za$-V4plIs*JmpkbI$1gbx(Jvey;9v0VuZN+s$MAhU25M?Mc5?m zKQEzkz6J|mf2kv$2jTPeD|&Hp@!#%l(PUX21B0)Aevi7ly9cwC{EH1c?uJB0iptAB zB_Scn95Nj=tiCKD65#< zTt=;3yS0Am_V72tOYIRw<>lQKZqm}YKeyJZkT-(q>FJ{r6Z$45enQDk+EPUSb1J4g zO3KR5#Dd7@4%Y@A?1Y7eHk=)-_v?j$r(r?pT)5de#d=U?$SsJr6HH9^QCtT}K!?Kttf9n(ZNH~B5;sb$quU_ZL zXBC#0r`s;Ivs;XZt7tpl*Vn)D#uE!5{tQdgyS_YQu0l04(bD>QdZH0v-k)(hz~L|* z{Hw4W^~po`Y=6mos)`UFKTOX!?ePu80H2G(cnfx!sIZVJjaWf5M1O>*ZVKslb}9F7SC6>o}Ax;{q{OAv1+Zw{)kbdr?=w#-_C6q-;H+qkeX{hClJmPx+jo z&GE7v*#<=;qjaWdm%#`I6)@D6fq{XaF8%%e-vR@ho14>`jup!+7aN%oEqdm^^cJ>L z8Luq3Xj)p>GnX2ERk*SgYA{p<#Ou_ zNS`q~qiUh2Hx?1hmQpUo&>)AE!^OFv?|E6roEi-2(io%BW_LM**nvla+_cn<@2akjy$GoB|*M)2$_xajri)DdmhJnq=D zKg6~PrxzE9-P!k?R@0IdmQ&iY9oo`7rZ^>DFIBHkIPzOE^ej_SbVbC{?RQh^;_jh| zo2ZRSO*REcPiKZ>)8ffit@SsaMBaWN%Hn?$Jo8^@T|K%L+QPAb(fGYy{py6 z?6Rq)IQr@?y%m=CwPMZ@U#yEbmjZbSosbJ})~k66myp+snH+AHV%!X03c{SAVO4~i zF(|*VnZni{xL9YtPMB)c#me z>%%QO84}Y@YYg*DjUI0BXC;%iVcTaqenwNXt`MoFWu|MHo6=Qr@vzF846V6(!$hT)ozI8s zzK-Fp{j<&bzupsXz+I}*vWOmU@Q+j~!|TT!=c=bd`ow<{9=~9l*dJl7(=PYh_2=p} zW_MC%YR&YZSQ|>t%9kwhpq$;*>DbtcW7*4z7(8;IwVwX4eoXA2P<9{56qm08Z`58W zDrOn5u)11qRaJ{+HPRuX=~Qb-+o+&hnEy??bNKS78bwQ&dP`(|P_iQZLt}McD?#Ef z5#A(daz%TRT9rPv4RcM@H2PNhA~`-~(bw9PFut++O8ldDq4%;kH_fjv4`j5yBZMdG zkvD!z2wU5SxVY(3ahwmJYIW`xoR*fB)Z1$tnb!%0zy+ zL=V?~PE2>tMB!iw{%q_uktFUw)i)fgv=vMC2;gjinT$ZipdO_T8xWMyFa;sKtelond>VtwH;@>C()dz_3~zzqU7< zJf!Wd2Od;3Ona0(^*v#*v=rxqWk#*4aDO7^`Hc+;Yikxt_roV8MqTqGpODmyi~%Ub z%KY5iXZ1XzsVaK_t^NS^B&DRXv}<|6_Wq?_W?JO}fThE6#=W&jzZKlf!Gcdop|8aH z>ygOuGP72`otk^UGv!hXOG;7=J0cm?OTU>8WwW|h9d|5mj+NwU*T!NIF@+>12Ib^1 zXjR!ID`ZGlEiB@~;{{wfT~D?RXX@M+7Z+zYHaaS879L_@>5ml~eh?E|SYL0yxjuo` z&XrX=?idZEOMMU#N$xYIQ^_X>u#^FA7xOBG6X*5yH8wGeXPQLRKDeZ{@vGC2`pQb~ z$hR6TZDF+HFxa2*@mOB_bryrakIBi&?T)mn9RjH(A|F3{<|CB+6I>uRDf`ErS}AF1 zBT%}?1zf_x`|0WH3xf$E;df%e#l`)VmbQ1kQ7}-bD@-Gkm^(84_wUCCc+Vxl&`G$h zU!cWtSs8Uiz6GP!2URssy^NUM_%T>TRac322?R|O6J%-fZQltQjQdjVJ2;%-9sG@m zjBII-U>K`MLjC;wM#skbGUZ-9z#;t_5fPEUl`0mTF6@h2btQPYD;z`#?Vdy-j(muY zcV;MMWP12lW@n5QXT@)^P_AooZBxtV>qU&@jC17j!HKQ8rWx3ktj@iS#fyKH))fok z6D(VSt>G4Mr;U+?%JJB~WFH1JO3OzJ{?MKS%Y*DrWLFeG$Mh|3i7=Eax4<4D09_WB z-Rkn~MXB})jopnnoFWd$^1v3Hxab<412)l{l3mhpbmvgrA^a+8nqlo_n9_k z3`H}fnL9>I+Fbpa)~1wwZUBwhV^zx+0PF$$1EcSZm3LswadO}K0vB;5eKgm)q7KZJ zxxWMveFR6pGebGs^tF7D&O%|fE*NrnN!mXhr8L{!h#k)!#Tn?XdVE$*Oh!^<-k5}) zSmSxv$@sv*?7pX8(UXdWu;?;_SClx&gls}hEPL`-5kDkGtXSb|G#>H1cOeS;KGJ7F zx=9`~B~{vX=5kSZzQ+b9a|$(F`mC0Q@n^=T8)%25khs(8lUrC@g7MhCJ?BiidHk{B z352K0;TQp>mATURUbO)DaMI|+VdW(4r3~U^TMO_I76=5AIUOHQE-x=%SXAWfGDk!Q zAo`{L{Fw8u!DmB{u_~FJ8Kw3pqn_fmNoh%=&D^xfs<4k60Gv;Ua}*gD{)7ZSBgn=< z-5G77DzJsn1l_n7hivp!*w~k^oOn~(?oSemx*xx4dt)+~v)29V=ID3-pMXatQTKLX z_@C~s$QbnW$v%*dm5>gKZ73+yo#Mh@g={l$?mT*+v&FSwQ(9uQ{)gj3ON&BL02U?o zRztcsWq;wwsZbfJGCJ0j_Wp`dBs*Kb2fN4F5|O5+CNY;Kc^b^b>g6*g&A$LjR)_P* zaL70p0mI5wFZ&LFaDS^}M!rZ-1P#=Uma!7}+DtukC`X0%_3N)P(5vvnLp!Z2R4YtU zauJ}C;cw47;S4Icz0*!I@!U_ixVS`v$o*nsNN({D&}m{4lD;~3S2V5QPCV%4yK0B6 z)v0POz%ys#tm<@^J7WwC4Ow;npa%p7#sJhD$dG|=jh98o#T}f?AR(^D=Dc>Rzrmr8 zet*7)5zS%tYJVQD`wcMNp^fYf+9>=p8Vz#xl0myp@hr{*s^i<1C z2`N2Jsr;Y4z59ZbGm=%mWp;6~sW(}e6#`kPnDNm6^Yu|@5|k1Qy11kyhDG;oUteF% z*>ap>mb^C^mt~>dntXSnKnEB}Fbc(Uv@t@<&CM+%(|>(+ac3*!!!0rwJ8Y>}*>ALb zd-Ccd45l}ftrYNFAXdcx*;;<}m;5l=w)S?t(L!D9=ls#l{zMQDw}vFKGWD*-wlI|2 z85^iWO;b||fcqBdHDkVf`7)Zz>N#lY8k?KFcXzF|-bI9kHO4^Tg=J;b?Cgp}vdt|m zPszw6>OHO!$Gd-Qi_W`0qp0fC2&8AN_bsq=ML5FgCC|LnkfMdfNOxPxd($0%mshTF z?1V>^j|+Ob5v*>=T{a5S%BNxR-J3rjPFpI*pb7-z(WVPiUOgYEfWT$Yv0P4nTxjko z+w%Ihmj2mnz}XLw=1?PXOMt%8Gm#q_n>`0iu4v_t1x;yI%U8~E4D`1-RXV1>77Z4) zYU`cf<9#~Ttn8|k%1|4t7fj`f|I^U_TE=R4fyN3aBi5e-iG3uNHh6vK&X88t)e;lH z=8L~w*6fnI?TkbTfD+lBqQu zgwKU9F4@u4@TX}O!R;);EoitodRbn-t!`7!X81c>=eo*CgQ$i~DB08OQP!qQ2FZ5! zxE$%LI22@dMF%z!z2-vid#0kREQ^l81SMDJnmdurMyZwh&2I!Z~tv08l`$ayvH{y=P#JCc3SN5GF z`-5cD@bU(;WoZvSLh-<34$R3D8=u5m@>m>uzEz-@r|JW^(z~PChHeHa(}BVfbio@c zSt41IEJbo2vWB1}!8DVE8iaik&=0Hy&T-@FZ@$qlN!(+}b#$FRU)6x|jO{tdSOgzx z2#oJ{?a%Po$;Zu7v%c{TTghiJ{9twNV2S$<@v|IGeSOXsFj$Js*!9W0IO-*aBA4YP zo#Gjg5WMcvgH^cH5w*9^b}3Ygyz%hE%nVSZr;lQ2ro0FuGOf4qs@Au(gtaCPRDxC; z?cz&g5et{0(+-*uqk3z^UsbP-j_x+C9*KtDH#2MHjuumB3=)WRCe6lBg(sfnt&H=g z1f0sxs%#;mCkyjs#x6A%Y5BB_tA9;`@)NpR8(oW>Wmt~Ol~0umItRVYRBJ`ZUToi! zPN;`uc^ zBO@akNGjruIj;K1_pHnGu4j4 zfTr#*$62jYQ`$H>u7J1tm64%uWYhu%{`c=+o#9-y(FrrFX*V~wRe-ne-@m_wj9S+d zpi~gjNX7ob`VO8dtf+vGmzr!&RYy5&jrXO9VBwN;zx(*{Awcj!3Iu5H74y_1fD9ED z67m~N%cF-6bxwEZs@MR2!+U?eM}P2uO|R+U&)JPdaWJ3K($YW+@&(-X$>YbK6%~$k zhIkabADo=HDcyGOywx!Ey#oLZ3+O>cozV?*jlL%1rElu$>Rd>)m^CZk0m+7f&*3$o z+F-u#Jtif^e3!s$k8NruUVbu9!A`oWu7I3=Z$buH53d-hMxk5$JX&>ofzT(krys?) z6`s()8EKv{$lQnIelGDT?r5b0+heGzg zx{554v0nxTWOlfLN|@cvG?1)3+F;z(wKa{P#5x(|=#M1%VWTP?%-=(zt_f!<4*d)& zEyMBECgWy105|6?3DYSYxa{2UP$sLKkG_R8b=4;Bjwx#Zzhfp(NOT5aF5={aNvT4q! zR%=LkZExC}>A(R*EzpbY?hR6^U!@S7k!7>^(Rm6T8Hs%OAe$++C-{`33VPIuCR=VvLxAm8~+Iz-}8)})J^dse0w1?LeB&k<>lzf?F_$#@y z`(4DK)Z-g7uaa&r#Q+srl%85N7`trLe)V-KhC@T!w9jJr#iW#Un$^lOIW|uRKntK+ zNGH{|uN|mhO${T}U0is@#ql5vG&D3%2?&}RyfAO-I}28DBvbTVJLD%A3=<7#v<7f^iQAd2w(Azhl$W2%CwC5+E9wNm zX4cl$&gzUTErTK=2tf~ZE2%j-J15K1SvxwmPEBd4Y&ZGggT1E&ZqhNo;CbTG1N`86 zE`Tb+$+Dmy69wZk?)`ZOuorTECxG=LqN2Au+Xsg%J%<6vjR1&3W6pLl#=EyZTl6CP-3@)-dE!*QeE#0wKf=QuC9^t&_gtP-{gY(z z@xh)`?Dpk2)_5|q_Ocy<7~y%qk$c*d?13hSH!j!R{j$dlg>bQ?&RDZlmQagZzkjbn zfo zGZHDJoho8sB|dzeCxhko*5!sR#mbDbCj9ME$cnuR(Uz6I3!ewx#Fl$O8^#(UhXYOf79v{E*%=ajokTD*fi{g* zW78(1yR7!PoD1N6$E;!<4-Zcj<=&53ZBx=1wXxBOWhu+u*M^$p59^%-dX6<5OFtEg zBp95W@~4MDqMRLD^aPPewB)!I#NPQ^2MXS{p86Y+(feC_2dfR6Duf>AybaepFiIg6QGQMs{slx*Z>Rbv5s`D z3$>;65%e<_yStFH^_+sIgoMptH>p-Tyag2@^}W}FQmYw3nF)z1Akt6mR<;5=1Mq9? zbeW{?i=F!5gaiuv^}%GogI(SuG&SR=Ytk;8nwxcjErCK^ca>#jy-`+He*M}Q86YVs z3HCB8An{bRv=|YvX27oH=m<)U`-D`8ez#I0<9CXl?@)K{@Ungl4Sn)TG+@>XPjD8H z@(kCLnze5W^YcKux&L4QHBy(9M2YGB1ql7UHO>ejVc{&b5*lr7Z6Jmvbwn{QY;Q}e zs;VYpJiSpy!TDeDS?#~rsv){M`HNY-IT>v&Go$Gd|T~o<-U?(ofdPdT3v)J#4k2*;Ny>y3FC$wa9k= zDC^!5Bs8QjdT_xO%XMbaUbT30VQHe9esKYTlpNF~UOaI>#3msllG(AjidEvdXsy`9 z!i9rY*L()~g#$@GTc$!D ztsm3qS#lDEl6(2MNCRnR?7~o=RAcWVag!Js7)}fZ*ZKm87o(`;18s) zJkXGl3CvA=7jDk`?+Ji(WkcZrXG90xvAWSw3=LKGn{ZjgK2h7z4eR-2)rJ!!qo z0;E!LZ|c?Eq)j4E4I>l6gnL5=B+pIn3u?{i56h4_ZAFMOUw-k31*~~tWhLXHr=uh1 zw+=nDyL+5z`_gA}3HS3C-&&DisN1)oAkI@&Q2tvwI{X0;&2DW4#>J6=E{c|eV`!Ea zaIkryC?>6FUVC}~H?2)gUx9fhaI$czz-c-8@aM+an{Pn3mQLWsCgThMth+BmhVpo8 zq7{W0_sa+Lpjqnel?@08z)svy>MuLAexIgTcpZLCUJI1X_{x}%8?Da_ zuQui_O(4*0i+`PGp zUF)LZ`x$3h^9FupSx+vQ){qa7d=%ogF4uUh*Ii!?-hP*1 zJat`9lKZHB5DPKR;HFloNf+`&_eXrq~96JVSCbKw`gCY-1hR+=H;tb z_G1r|hCqyAwAj#pniH(A_FD}xado~}zZLh^4h7c2-oZgfh2)11=n$jM-Y$xcrH!1f z(MU4#v-5M?t8@E&ZFlY)W@>70Q0Q;j_Uv3uWoyA_fa)oI#&-5!%Ej7dW|H(rKDX8n0IGtNrX$8G6kINz5t!d%=6m>@lGz)+eJb;_MU27kYg%ro|naNBV0N24G z(O(yMfa*-6{%KiH@F&(~5}7RYMdPea@SW&?%rvH~Rj$4u8RH2sO;0FLX&(J(;xFlfqRrCz@xynj)n21a)6P%0Rce#DPEM+{Hx<~Vn9`5LwliWvE={bVWcwZX zK6>!lMkEDk8al|L-}(l?UHz#@H+t%TPtN%Kx*JphxZN=gFHc}O)=3fDDeug7ebekv z>#l8Ca);MZlDZ2wf?6=b8-wXdM0m@zzaw!K%_8df*nJvB<0#K&ENI1C?=z{>iXy(X zpiiZee;Gczu4o@>2{_CpuNy~v?$YgZs#IMt)o=N8FKWz&$)}cRhsE6DVW{Ik=Db03 zXwDva9cj`|-I;Tw*9Y~4Q4QZXJ~G&ndu2jlaHumEwJ%xt6_D(HLH8x)14$}*!meC-B+vWV_Hgb zFh(BPnf3al(gVr(9J1%fN5xV#({+!?o=NJpq#R9(OQs~$QwqD3E?sa;_OHsuc zKr-qLngMcNn{7(o#^y#)HS)Epi)|J}H#awLyG>9`fJsRTEDV>U_4}R~8MG1fN_wCv zjgF3%O@k5M`fng0f-M*s9E^v&x#9v{YKkVx7BH3~K<~AVE5R-lI0&f$iecT&wJT^W zclY=EX$W}SV}U#kOua)%d#DxQ{^m1v6urmsw>>*Kc_(mQcMlKU^kCLvVq&*%f}ufPbsy}j?(-(2&7n^M7&UtbS>{`~pn zZX+Jh&}6gZsq?jK+kw*vI_?b6>$M_r9~z4zH~h5O6uv0S1EG zUNaHsAie-cyxejMW^A0vG%+-jtB%Tn78*^;VOnU=_7r$KyPy^_F$Doh z59G62fJb0&Xf~Yd2O19W7O83_Mpat?G+xut*n+eS(oipq_N=NJ&(NYv&32IiEwdBLhZ5Sb~1dRpmg3-J?J+FFkHu9d9i*@hx*T@nGyf3)}Ju#rE zfAAac($*QmpoCv-2wT_Koow2)^Y0Pu*?9pLo#!(pts3S+e62hCJV^UGlq@-%9$PdgxeP=Mb6Av{^`_Oan?VRBfzv!-|e!x z7-+j#<5DQ89(t*fXSC%Pmy2B|9o8OX?o!Qqg~Yv9p}l*08tgl!^;Rk%bJe(^i8C?4 zd|7&}^@lYmvehH>9X?cnF-05X!XrMbZ#T{MULa<_4ku2Ex9PNWBLXG}V0moiZU?3o zMw|R%n(GH`zbE=SA}AW;_Q$#rHCH(f+jdHDhG+G1Q5DZMI>#U1n90ZF!7caN%B@M2 z?0!jfv0ZZhV%@oN_^yKF4XE{gWHtDv=kj?SBadx_U%hX?)zXaSCHIRNcgmC8kyYgT zDCHxylP+{4=CR*#Vaq^;$yCaFxv?V6Lbui!%~kz4D!MZ_iF0>ugkkU4dZEMSUd++J zgZUl7i*Ro?Cfv=-H3g&V!o)U&iVYVJAsj;^b~x`gJGE+<>mf%Fn<8m_x7=c)1@Jl? zrlinNUF&qHmDP?=npBTe%w>)0dENEox~+XVTy^Kz&RjccKffEe{MKut*!7lEJ^O+0 ze;Ka!jAUx3@hgbcz8~P_V1aPVsVg#eaBb^0Waqgo$oU>w_I#_OcysZhd1<7>qqV!` z2TAJ1++ZQ42}ull-bQm!v%)IZwHfENv*Hf7mIjxOV!gCtfhMkkf_{qL!kNIT)iUGM z2ix|>y~8}xVZHf@f;o*^Hnb?K$@$yntd8}gO1g5{cM!aw#W8i(f$O&=e0>ezvV+L~ z9?EHI7cJ!lh-?ZVC{X@0br;*!F8=e+7C{FTKnYC@hF){`;1r9dQn9dvY)w?)0KOLnUOK!d@o;l23|MJoo;C|Dq2b|8^UeN8LHLxEJ(p(( zk8p5Al4Wn>54&@XpeF0D4`u;@;b07&6q=ZrXr<8_NG1k@eYXru6T8X3^%h$K$$+$X zt17=yZ9A%xVDFUFn?s7WN-+yZxVBkG}O+|GFaCgvIcKv+s zwg38(80x{FA(LdZzu4x2C_X>l>PX;oJl(F|Ib@@|Ci(?m(h+pHr?276k}(lBV)oQq z!Fin%81}_*#pyGoP)#SJ`zIvR$@>&*OxJ0Da#?R*-veOAl4xq@DT8j|d=Q-wmi7Zo z1CeRwH-G;QgqH8R^8>~Cv0BMbuPdx((m&OEfN05Vn(D6N!@Ur6#h&erdM4{lm%H`Y z=9y$ZPJ7ariAh_twa=8!&fj2RVeJ)%dS*Kj9M=%>7>0v7;)_SgSvew}rMTQ?8b!&+ zS1n|?p^&BMocIt+ZW1^P2g_ZJV`FL+h0MP}ROPcTA{XRj`4^2%{>0*Qwe=Yj%ND$R zbOO1>6r&cH&qc>c`r{M>dfRt~1_mF%JsmB#h-)zEd&|g}I4Y4QpOpy)oa{q_s;peB z{+RZ-Sv*-bBq5;-tN>uJ{sHaStzB!o1e=_k%v34Rw&9X{NCk`ke8iBVYzC=3QujcQ z5PIJT3(6&xy-AadWBTgE!#`lENywml>%RhThE!2IOHt3%R9%M+>vppnJ}w2>%RlqY zGW_^|9`DqiJO^PJ^!xXVET?!G-@e@gQo!F3s-Dus5HM~wh;nkwOi5+jUIAC8t_V;; zRVTYZ+Sp5AKr2B$>zDh*@vQ`vnMvn$%*x6NbS~PSKhYrH3BsKvp0)dITwFa6arJLM znnp*Xf#3~s+MUfHdiI~_?hUNRFjsS>J7I5+)h#6xg+f^-hJ$nu=pw7iw6Jx}%p_vi zoE3C2{|S&c`5$VwP>_(3E$r;bfCTKLM~|qOn6|SnqGMy_K@p`_$qz7XxmJio-%b~+Zt)%$`(OF62?86bdH8ZS%$m!+){%dBWZ#DE*T* ze<()`(=QYK^5)+Ox| ( + + + +); + +DesktopLoggedOutItemsSlot.propTypes = { + items: desktopLoggedOutItemsDataShape, +}; + +export default DesktopLoggedOutItemsSlot; diff --git a/src/plugin-slots/DesktopMainMenuSlot/README.md b/src/plugin-slots/DesktopMainMenuSlot/README.md new file mode 100644 index 0000000..9691791 --- /dev/null +++ b/src/plugin-slots/DesktopMainMenuSlot/README.md @@ -0,0 +1,134 @@ +# Desktop Main Menu Slot + +### Slot ID: `desktop_main_menu_slot` + +## Description + +This slot is used to replace/modify/hide the desktop main menu. + +## Examples + +### Modify Items + +The following `env.config.jsx` will modify the items in the desktop main menu. + +![Screenshot of modified items](./images/desktop_main_menu_modify_items.png) + +```jsx +import { PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const modifyMainMenu = ( widget ) => { + widget.content.menu = [ + { + type: 'item', + href: 'https://openedx.org/', + content: 'openedx.org', + }, + { + type: 'item', + href: 'https://docs.openedx.org/en/latest/', + content: 'Documentation', + }, + { + type: 'item', + href: 'https://discuss.openedx.org/', + content: 'Forums', + } + ]; + return widget; +}; + +const config = { + pluginSlots: { + desktop_main_menu_slot: { + keepDefault: true, + plugins: [ + { + op: PLUGIN_OPERATIONS.Modify, + widgetId: 'default_contents', + fn: modifyMainMenu, + }, + ] + }, + }, +} + +export default config; +``` + +### Replace Menu with Custom Component + +The following `env.config.jsx` will replace the desktop main menu entirely (in this case with a centered πŸ—ΊοΈ `h1`) + +![Screenshot of custom component](./images/desktop_main_menu_custom_component.png) + +```jsx +import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const config = { + pluginSlots: { + desktop_main_menu_slot: { + keepDefault: false, + plugins: [ + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_main_menu_component', + type: DIRECT_PLUGIN, + RenderWidget: () => ( +

    πŸ—ΊοΈ

    + ), + }, + }, + ] + }, + }, +} + +export default config; +``` + +### Add Custom Components before and after Menu + +The following `env.config.jsx` will place custom components before and after the desktop main menu (in this case centered `h1`s with 🌜 and πŸŒ›). + +![Screenshot of custom components before and after](./images/desktop_main_menu_custom_components_before_after.png) + +```jsx +import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const config = { + pluginSlots: { + desktop_main_menu_slot: { + keepDefault: true, + plugins: [ + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_before_main_menu_component', + type: DIRECT_PLUGIN, + priority: 10, + RenderWidget: () => ( +

    🌜

    + ), + }, + }, + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_after_main_menu_component', + type: DIRECT_PLUGIN, + priority: 90, + RenderWidget: () => ( +

    πŸŒ›

    + ), + }, + }, + ] + }, + }, +} + +export default config; +``` + diff --git a/src/plugin-slots/DesktopMainMenuSlot/images/desktop_main_menu_custom_component.png b/src/plugin-slots/DesktopMainMenuSlot/images/desktop_main_menu_custom_component.png new file mode 100644 index 0000000000000000000000000000000000000000..ec29483f04b5c477135c8bfb4f7f197f98c88901 GIT binary patch literal 9023 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 literal 0 HcmV?d00001 diff --git a/src/plugin-slots/DesktopMainMenuSlot/images/desktop_main_menu_custom_components_before_after.png b/src/plugin-slots/DesktopMainMenuSlot/images/desktop_main_menu_custom_components_before_after.png new file mode 100644 index 0000000000000000000000000000000000000000..52c0cc7f522ddf8536c74b4a316e92dfe361a667 GIT binary patch literal 15401 zcmb`u1zT0o8ZC^Zgdi=A(%mVIbazU3cb9}n!=|J|O1itH8!74Tl9v7^=bZ08_Xk{` zt$S@(%{A8>V~qEmVT$q+Z;||G! z-i}n&($*A84s0kGyO6T7kTP@gvas>8@sP4Iv$6*!U#vkvkwQs*5?1v{KVEkC!0ILF zJUc!4eDWLF5*9iqSnop{@;9V!fuyfLhzY^@2jo(VVPRuos|xjeRTZ|(g+>Z=d7FoX zNR2@XjflAa{%YvtG-i|tk%s&WdBQE9LT2#j%1&GCVw3w$2Hwy6L&1{Q;8Oqn^iuvT zro||3Nsx)B8vY3TKD5@j1bhp>efg~8#1DUj`tP>z+u)Chl0`$Q@7`klcXx2h*Y;MJ zMk?x`22s$%rj?(9wqBRF4Sl42In&PhN}?0?4(eDG7pmIYQ-b1kpo0b`qS{ZTE-%FD z=)hZOYOU-7;aQ$o-A^K5C+U)xrH;@jl<^yeILMpq64>anx-F!itz_V4jfdZY57bqr zx-j4hFb$&MXP}F+%>rqlO_=`P>3d4hyqq1?DlYmv*?<@AYbxoWL0E8YRvkKBXy1bQ zAh-rLxQ6vN9@Pd24VpA8ldu z+8?AdYg{ln(xE70H$f^0iprfnc+6WC@h;j|pYA9J7AorWUv49ZPT|ibBNaH(wh)L3 z(W9#nLV&>1E@Vx2I-@_BE~CGH`e?)3_2(dxau(rQ-8)bA=V`G+Ls%)i8#R~OOW1L z58UAr(gto7*Qpe%>7cSVJ9g01I>l0s?OQOq8tzIlTf(ULMRZvvw21aHqe835GK)`1; z9cUi_MP&g&pi9^vS%Q8-g68cQBBI^1ZJ40R!Z4qF8^2E zBR_ei?hH^C<+75LZjbOkzurqsCb*A=U6 zI+5J^>p_CE64_^q;d18zqavhkbBZuXPvok%UH{(l1tLJ&sp-?I#eDME_%m z{0jPF1V2Sa%Tos?^|tY&lwXx_N}CGk&nh8x%W2&&l0@#^D|&{$Um_E~^!--X@fdgb z9b8m&G$69gqJ(@NLbW(I9~EB=g;Pmsxyr>Uek98TOez6c3cjBbOwK1;VI;M#mFS<+ zZiNQXF(WY9W{Eljfr`3RznCU+bN+0qP!llV!#lI`-RSv!$f1SjI22^gXqhFQC!o+# zHk}kug)6mO2twf)V$geu51pDa_oaCj$GEdc=zHNHZvRp;eAgA%T# zldA4EO>7axIM)ac3-(UuQNE`qsJoV8vCLANs;ft#(;jTT)^dX4uyf{tX8^vp`a5$b0){wt!QdO39G)@*W$k3W@bHzAm7P+I;$6!@3e z!|xqld@<9k4MnT4mLJ`;pAa$8mbjAQV@mbbze+X3JP|W;ZVkF!s`sz+C6rWWZB~Yz z?Z^6yx0e6hb#H4j>PBxTe-2H#JX5~pC0cF$_?3#-E`mOyM|vW`O2o8EQ&A0DOevNe zQ3?`kikBgue0pnj?I&M94k6Dermfa(PYkm9C~kJ3rjnPXmx#Zp{}YXt|pvx zMfx$wNlnLUxeP70TN%s`^+%+ao>@9bRBs_(HB*iy>n6pBsa#UlZDl>uW&`{rUI z6ianupFT}m?qNZce;@TPaFq3n+MbeC=5qOA^EEW@D5k@P=x8P%PSY&Er> zcYSbU$P$hcdUo=G?>^2|#VD>ZA9p(6lET2iU``v=q{ktb5~-LoW`6hg>MGxHvrn~L z7cU?(5(N?;KR7fbqJ))jL=3H!6i1F2)D_Uu^0B_k&RSh zpt?=D!%mi_dAq9_bF}v&YEJG?#4@AI1w&z7~qD2eA!Z!cv^a9 zs$xlLY}&V+_!E)ZRSuW%WJ;yZi_LKu{zpowkVGJUntu!RJg z>7x}sMDM}iQr{ASG>``%wlu3?Khvo6eM7 zUd?^ADodhb@F7uU21;Kbl{=Cp$cx$LTo?6gX3nDXX{GI;i+1QV&2eSO;va^e!fa`y zN6RhAtA6)oohAofT3T8U7vq993$gvXgb(qo*&R^|h+xl3H zRTXE2(M=BeG_XTw$amu;&Ez_58PvM9k717NlAe)O>W-bDzW|$H9oagIwDZ1ks0;t> z3#gf)GcrfbvifSTi9^FHcl4hA&ok0_c(Q9HjE zdjB0xR=FToDK5sq!yNCLVEfe9v+FsoRaQ-+gR5YyI4%#x$L>R$Y>YWf?zevJA|qbJ zY4bBNRMN@U4$Vj#-Cy*Xe$ukA02I9>w%G2cAi$a*X@LF85ETa>%vY_#be{pFov_$0{UO48T${wCb&heV8c;ndlFVOElB!bPU3Vp$Go>ku)BAFz5!_B^^cPKX&Z~<2EGUS?!LbG_xk8fsS%a#Wj z_u1Z+UuEG(V*JW1>5dB;)cq#eyEx3#pQ*~T!mUkjv|rpZ4WW?vchYjI+34_Ityp#N z;<2cRI@5Cp@9ySw{2Mx1xa%>lz7KlI%+SN_g}qv1Lu77|3;sDTRE7@6M$nn)xhh|V z0LkE5SPhToPT-@a3RsC6|+}Z2TK{j?fi$rM^Vr z7nk20B3Z?`_goq=4*Bh<(jYCS^rzZXrV2t6KWL&*;Kb{GLTG1aH(jRFAUQWUFhEL4 z2`?zv!AkS2BB!+msbN>@tv3&CDG_=8BJf>~mcyF&Yc8G|)T_+Nd>LGPE;|&942-k0v!j)^G_4vlbRweBwXUFH9+4czeVHw+sWVYsiL@eB#kTP_F^~r{)1Qp(G2ut{1@(W z2G4RBsjRl#ELh1}t4;ZyTlP}*B8~A7?Yc-+ZT2)hwEmIGqtaF~&S?I5ZXZK1Ce8Ecs#?}8^6TOazlEP&|9ATXbv$%*VGj?FxN!}v zkkZmp=nfJb9C0BbC}Lt_vF4ST5)DUJ*WTXV?LMki6a;%ou5F&uVp`3S=@Lsg4!rcM zNW%SJXP9^%_wR~UJ1M+_rG>3aZAb#Fgwz|7LHc&AZ$f1_9M% z`j zW&bSbwGl=&L^i^zlF$)UG7@LS_Yv{u!sKPA&TrPswEo6??V4w zX%zNo-t|5GH)c);!WE}u7)|TVHojT=wQTuj;sY(SsjA@0_m;r-@jGwpywBbk@3T1Z zenk5Uz4m)cir9vrd;FqsqV?2+Z#n(e_v})4x8dX&zkDqEq20slOAOqf%FVY~^iN@x zY`EZ#%^c8pABzwkN%jpoW*>tnH+8y#s9NfbH~NPyR+zunIa9p^%a0ct)fWcuz(_or zTF!+I`(*tsNwIxfp~A69gwkGN{w-VUdd@r;Tg>tu??6{-Y~f{Fi@OE~y+ysVJ{5K& zM%jL>m~}cjbuOZ1FDB|K`Q?2f*>A=bdF!UU5jXnV3|Q(2AKG{-FOM`{fz8;qLLUv}Q#O&MH} zAFpip=O2ECV_$4LYpO6v!mlbvJeoxjJy6>*%A;hkQz@{*Eg-M=y5mA+&mC5#)&>^~ zmld~ictIVfPXC%89O&KS257546xpxSWOj&3FoiuZ?y+TK^5LiM;N-|$rr~9$#8H1s zy?uAHXS}D$7CU9+o?J`8m8ZcT0U^I@((HRz4_^~~kpuPqnclD>I>gfD))+kfvM!q@ zw^4Zp0v1mb{nY7_FXX~|9nWWzxg@u)bLjUx06%zIUqbQL*?fyh{uoB{(?-xCkZadZ z!e!}LpP+1NfA3EfSp*Kl#z+bqyXEiTAOy7YJ_37Y=N;Mh=O=FwQPC7ObJRNPIdLT{ z^$NYwBnF*t(b0Vt?8+5-{9jRtq%(NuDCa0CD9&zovz+%P-m9wRn+_*M;<0`03PPBw zv(|XJ>3Dv{>~^Hd$IrjN)WoLmcT3@VFl~6}a=hbpFioRgs@c`?{3K&$M)~U1tCu7s zLE=08~uPU(rb9Ly)is1_ss!sj~814`*dlSSd7GlNmo7{rkJl_joylLd1&| zaCJCWWB3a`H#e6VKZ@OM>AT^tujp7FwVe72PFg=Wu!`|rYINi~A0WH#Z+p5sBoy%Z&f~nZMax9U z=fMnyFnaN^k!T?LNmE5u)9Ay*y~c2y>OAk?TJP$vSE-z?pGGAmq@sK9Gk#`RJHSd% zkyGJ10KsAtYhVaEwA+8KyKVbVl`*}3dpeu>SavbUT(c&f0k3N9mYX~KTmN<=dw6-B z|J#hI@i;SL)NB0~5rGU63Dmg2J-wIjJW9~lXLr1s-td+ZHW-pN!ByvLLV=W1$F$WO zlJT2=7mqDxv#qC6?Wty~D2>b)D?XWFBn*cAUli+^d~vyO3v>CyM2K5}An}gZ5*4lf zjp5ln(?<4OjmPpSN)~I3YR*@CFEPH>S*#@%J$}t5AEIy2r(yliBe;HKznS<^mQH8rO49HP0@uXwJ|LL}HVzS_H-mA}^ zoQ5W>w3MEZh$zD4Gq6u9E83Hj6S3(0M)G9RGNbW?5R=;8#AVGvR>|twmcs9y31Jxi zaPy03gH-{z-*RJb$A#(7SQ=fPuwBIb-zV0c+;D9wyYO`!^Q*7%tlBOm9BuMOD)21!`F-bHMAmM{ zSXIY3%k^@Fl+iX_(e@R7qct=OQc^^Pw^Oc4$F@jIr02u8Y%#^$s(%EMJ#k_fzQkgafRDoPt-%pjo zcfeM!4rVq7;>cPbuNO_s%yz6^UwQF|g@wJOPZT`X;Lc7VA@5Co$Bj>cfr0PX%uu4E zqmP!F;uQoRvD)+$8tj&#j>uT`eXp=Tx44-C6D8#LN|>)PXEW|Y88KtSq?GOK>iPme z5sUAgi+Y)MNPIjdcz;wNs%*qb5U;10XTCBR&*UFT=fR|+qFMm4s=4Ez&eo&^$xDDa zTJ7lQ{Pef1VdVn_MaYZq9UjWKxUdf=Gwoi@>F*9Rb-)79_cdAH508X|L_C@>?8gr> z!H2&v;LdAP3W5~W)UP9YyMqxikDMv2W=jV{ka0C@Ezk?)Gd3ca+B*ja!$353`n%S} zM<&(cehOa;`4j-qf0fk?EwTTDqj(Il9H0T+jIF3Z_cJe2}j;UrVP z+ilzxuS13c`3&tfU-gQ)moc4h4+GSLva+%QqHz#~Oj7pLzQ;+^?hyHtzPmM1(ekOi zxx$4}Z<=$f19~#7f*-XWKSKjL^-q9WVl>$+=V}a!F=|jLf&Sv*s z@jYrvK=DG~%#@8q3yMk&4|MkqYHq!wklJvv`Cz>(ztQeB^XmJ*CCnoMpYYzp`m?b= zg%gJ^vMDv`+B39Oz>D^3R$*K$F+~oaDp(#P)UJbRJHA&WXQuR~e4_@rdffG)qGMd8 z#fu`HD1z8uDuFwv*Z1 z{8z8n62L&4TPArD9hSO{gvg!cL5AEP@jMNM+*j_MICdF(v2ML^N^JF6!{Y3H?F3g! zWaxB1r+b(`Nqh63jRobT3y_4hl+--7-t@iM0PM(D|6xJ^qu%z}5w$e6H;w7i90Umu z&&J<*dT&-zIw05twXlx3f9C{u_m_&%8Rf-)vxcvHQPi{ffj(1W&4r}{0Xey%{jT`2 z6(Fuk$4&8O_ftC(LuiZXB6MJOMj#HzerNsy>=Ydbr!U|YjK|%6;VX-UTACNrrKhK# z8=u{GN$2x~#0cCC2y`H?ZS+O};+0%w+^<|$tiG_2D~23R^sx`X=3~S}IYq^{ZC+Q< z+1@uNrMgWJGKuI)kXvchOJ56B=(T<4u*O+mUuUxPAXvqEX?rGlB00nW@!4uu!kf3x$9)5`ZvPuS<*UwT}4i zqT=wF7_=9@0V0*l=}N}eHv~K0C+)uXuaS|B&$k9$PDnXtPttp>B@fA*~(l0vl|hL@or8f0i|lg0zlMbpTpOC zyJF_!X(s$`J}+{uZ}tj0t~=4I!PJIRbKz1gaFv-0j`z-^E4bsT+x!u`H@mWQ)+ZvD z`jBULC6eWA*vh|rG?)Nzw(GnnbHYV(`P$CLz|X%Ckpv5v5o%Q(b1-FOK4ZVHdMFCk zHn%hFM|ezAM=pu^gD{_;`o~O9l?t0@(OvF*$d|MHLt~p~w4QIVP*C%^@U=I1n>Oe_ zy~46)KfK(Z>ZPR^85p2er|+fUQUBzG`t_1sRmU=w-13JqJQ*YieQ@uaiOcUNTZd_{ zN2JzF?vE^j#KS*fdT>CjC!sL zyj^DNS$c24kqVXp%J1px)AJAGvrnK?EedF8Xy8wQJ{o7@;J}8`*Vm`VK?cIndx~vs zG~+A*-^SDS`}3$Px9z<>Ni#FE_El#mr|y}VM1U_aaB$2z6yOmMrhw#hKkzj9L*l1e zNfNl)@y$PwpP7CBIY4={P6EuKEBFJXR!NA-GXZ!4YIO`p@1OK`mGeAKgvZU{l znIjMiiHJa>qodc_%wv?ySowd}qQ}v$wGalpWpEI#;`(rX-B6*x2A|VL5qCVj@l zUAMOQ^#!2-`;frheZd=(C)>2qh#+Eyzuq&n))k3lRO3mc&1smf6t4n?o;-K?;Qv`3 z3%M-SO>+3#kL&($fk)sM^t6r-x|JsYZdtyGR()f!Jw=> zGk#9vA|FaWlXuZp9LpGcMmd{v;sm&-qm`X_|-sJ{&L|F|@TaCUV z2bH8CSasi%$9$7xK?Su6xwh&MszFu=3lYXHB*z=$heX?=({^!*CEoWDoL0W`Yd4$% zh(28R*hBJeqiqcQ;#S{AvmfzPT)esGSsPsI^Uz!Q(&q%W=g(%t?Z!U$7pNl7Gk)#I zJFIpV3Vm;mwG3K;L~%*X7PMWXXLy)v*+WTQWBZIaYj?X@U`L(5eOS@41OAS=$|jjM zyB!aGXE8oc&vLeVBjn@5C)93_(bm>>95G5xL9u=RFR-5e@A>)A1+OYrNZmstv<(y# zf$vK%fc0Fp^R9gEj~^^4vLM9w8oehawI{l~`Z3Cz!MJMdaJ=%nP=VwF8JSj-6Ge%7 zS+0BrZ>`l#IN)a6VUKRf>FG91F)f*T6}xRWE5>)1`>p3gbbzn@F4bZK+%kdAGCCq+ zn8Th%5K!R8#>Ta+gqE#87VH}b2ht*ev$1$6@C)^}!%vU*RoZ2HF1&z$Mv+Uo983@T zF$8d}`mn8Lxjs@G`uS6d<;)%8@q4kyQz`81X89MmpRU{rFsZ5SPZcV(&s9DibJ;Ec z{><%pPEPdEZL22?^CjWJzrl~q%p3zC9T63klAWDhA++cClMJ=gcj_I*bzmhxpt1{V zkY7r*YA9E&fdGizSfuH9W4P$cZ%(CY*^E&^;ge|xr@_E?=0H$S!rcWSY1qD90jm8( zndlTW2|;XzknXpkMJ3Gzn;Vt*LCCImeZv}${vhgY+`RmX^S(?fAeoo|Fe$FREHN&>Iw={#4t-Vr3LNezz7ZTDzTgz}` z{^6+*Sa}}3NC>P~oBBfXg{PUhB2LXvfxgOX6qjsqISD>Ka*)bsq}H=KVye7%{W5(w zWoZAcW}0H}GKx=?3Nw3Uly|CK)%Kh%IBTeJtZvg&=-B!R3}4`c%%|UoS2-N3tJ^Qg zG+fJhR@%N+xZ3MPhH1W7DDCxWa;kak*eX%$s5(zxzSX-~>a~D+DbD!Cu(;UF$A&Jf zNZj0~v1Usk`2DHQdXH(IOuh5_Hy|;(_UC{ds+Fksj*c>{ULb3WF?2AXIJwDVT`n-} zjXLLs}!0-UE1=O<) zd&99yKer^guljPWK1SF{C@CockTg+kIt)GjQ=@_y6owf5AFpsjQHeIj1)ohoT5@ZUt8A@A5-K5x`)n*x3`nQO=;WNbGy5 zr2F|ZA`;REpc?@s52PNuL#K|O?=?R6ldub}%!-BOm?tN!#l?_>Jcnx=oMf_5zS&_I zDTuH=)aMnq122FiC+c|N|7*xH!D0q=96`T#q3(PP zL7R&)-UO*9$ybbW|8wl4cebu>;K6=|u_MwV;w_hKc&^ii2XC4m$NEmeuR$r1s=z^5 zsX-h*{;Njnk}ke?gmxW+9fu7hCfzl@d(V>I_e;5lQAewZe#;9i4iEi+6{3R-+?;vb zYvUb9b5Pf$v^6mE&>B&1(>^*=i!%FAAH&gc{Am;r*x$||6SRxu9_OK z;imOEdUd+RYZCLtr%l;A4;uR@;?7|6`@i$&QK0aq^%HvZHZL!43;)%~$Ot(D1B1rA1%T3y?(XIQi2S?1cRpF->5Cz;e{Q#3r8hS> zKbRTr=zCPh2f_fEc%%Uk2BwSRTG)o>=3Zd__E4fdcSAj}c_5NZx8LQJp;Q4$BRC`k zP@yk+6-?*46|Cm%0VU0lq9S%2M#-*UDluKzZv;$DigeqoD2h_!`n^n7Rgf(Tos`+w z6jfAWgWx~xBhivzop981ibC=*+WKtCe(}tUcR43fCKrg;1#$b+d@cIZYJXWV2PmeO zE6vJ4ZCP-c(s6eQj19R|x7Fz9=A-Q$kuBFS$v-L2-@+7f#j&5ENp$8{(-vlEYYh9} z3%nDY&J>~!A1YXuD8j~4+#3oC{nee);6s)r@5wkPpp&7)X|%(2_-$OT^heRzs}}{( zU@t{?@OQMJ!Wt+zWJ~)ERDTN6R?}*56+De52#!BnARSsVC18Gc*~(0MgG0u(Vc}q~ z+&XxPcQ3%JWd^oPA+o}VyNcMZS=4Ee1UD@A=hTfzv&4k03+8t|ReJ3nwv01x-bJyJ z>Hp1lG&UchO#DNqzOhkiVnRJ#ygkq}`0Cxv=G%{WkapOqj%;$}KafK=D;&+uE*G2x zovA7Rw%gT5X4*uFYeM%0Vgz#UCVs$>C=g~IYKkX?!SpL^9$EAZ4h|&#Gm+11 z63Pl)*z&4^Ze`zMxsRyx{AG~j$ILhv1#2L2t%tUvm*2Q2#q$~w5y&+6(zcuc4FrdV zF76V|lxkr%aihHYIE^9zGZGc!k#{ytFtwy=-5&G46 zwdaKyC{!t2?2IDICINdM^*(Jg&-!RKl_!O{roArhft z0oE5A<R-|U!=#mKoYq$&TSw@5^_5PWM`A! zzph}&L3;BhUpNR}OwYCcPwAim(%i|W)jC;tfLk==wU%M*KfIo{FL5f7S#O1|@Wp>m zVQ&~Q^z>;n>!_x3xtmTSi)F#&Ycpsv=|dSqRokySO9gvJBq!s7JYarvvh2CjQ=wJ! zHOuer=R`jh71hPfs{byp8^}VS?BP5b!ytFVHHY(Y(f=q5dYlK#>#O@tMc!&7+Wz&? z;&qJQroa{mxX2kKb*DwwD+MYgxua-hdz)efgCm8jc9l#|uKp2U(>t(!X_WYp9Y{la zqh^^LT~;8r+ok+{Aif8()VF4cP*&AxjpOe7S$jcAu;~nFseP1Z@q{Mrt(w7bdxytS zi2JSGCgTeT3V+k$vHeR76l*Ixp6RT7pwwV|Jl%%)lAdZaR-d`YE>w1%x3;vz-|Q8* z=D|$$p^`JQgn$~k(bbOc3lh@1HF#e!{**K_@?i<{V%@@FEmVOj(UKL8f-r~m9ZHCN zdb^$@CM^O&s1b!K@8^95PMBETz&KytAD_xaq#{Mj*V2r~V*+pQ4)AUR(IzKxAQ)wu zWot(tRGO+`qND2@M`PQOS+9dcN%vrcHPA2HNt?ddjI0!~ASYl|_5^Ui(Q8s~e4>}WPrR`4^1}IKiRYq{YKR^<30!1bxxeus_i0d!7XE=!g z79Ji0AAhL)bIValKj_%lE08${Vz|D~860qOc8dupH8mc;2W~?{L!c=g6_opyn3|ea zSx!+35%9>#%5H(~frrPN)tA1835qVjT6lc^F$0ue0JLQfZ*NQzl5wEwpIu(oGVPsh z#Vb_%-n*@MY`y^v88J0AY=X}ZY}NFOTz$5n?gkXA9Z(whKt~q=&T)Qv@JwR-EbZXH z3~k&2F|A%ONQUsMH8B|Sa8%j3ml03Xk~5J)C|s!#zjfPl;Hg+E-+T-)XQ zJ>FHB4&%6;ETtTJ0MGxa-y!f)tmEKF1PT}iE^hx&A|2?)FxVQ1yLKkvunGoT=!L{T z-B--~<+7Lv=;`?c0*l6)ZmEv2oMx!WN`V>`FtJlKUjNu-VOERbRJ!>a9}1k2NrN`n z9m!)4x0c=0ip^ffr%&Rk1CkmO`(48_3ccZ|l4A5#>ezJBBJ`T{1Fz76R90A-*H<`! zGmm#yeD_B+Ap*0jt66A*53#Rc;MX=ce*x8!8%Xq`p{NY; zHvkBJWZ#}iiI{g=gVmy}@wF1M@}i9J`!kg5y2y>G)yGhCbl@NNlE= z#dvLE$9Plr zQlg&F3e*|#Fi1Jh-JeXfT9d0I#1ZYrXmiR@F-WcH%-l$d(9JzElTP`T#+TK0&ooeH zHXKUdCeP1X2T2um^pI`8sr@=JJ_4U40F;&4^zcR!=2xB0N8py0)A4`|MH$)Xrf@u) zLnAnz)eUOi1|#gYi!rHcFy94T$;U6pI%;dF%TI-vkSQ2%OMt3kK91u{f%#)nb1U)b zVEU&@Dej-E_+ptTn@>pia4a3!loZ*#yziTEY_~*`C}`E3vXzCdD_XO63sXB?JG>SRytrc0Z$QvMK=^9x6g!iH93hhHhua@^Ft9U?9Wv5jghTr>C4ME)z zzyssrT+67|JBl=kJ$B?)@b0m)WbvbaObUH6L3s&op2J)V@W^0Tpzr_A;%e88KmNK(FYJAMH6MfdyA<#KOQ zvrN7H-v%jjec0QSTzht z>AyiwS6cIRSrTCANAq(#TTM+(=7bD*vY~+sP{SS2M=*}L2((}zn7wq50g^@_At7NkS3Vj_;-|TW zvCH)f)b)VYw>xj6kz~5!|LhAUVh9XTtIi4=lwg+tQM``wwFN{J6yA6LoozM^-90=$ z9-GFGrg3#_S1sb<=aAbAx!s}3K3m@SNQH9x^6gs747!dZoY%gWm&fSpx*a8B)Yd63 z&=ZrBhs~fXGY-wqg_6((Q!08Q$fEH9z7&iv+Xx`8VDE zxzRMAU;WU0zpLh?Vf5@t!MzXZDM-5M$Gy1v zJyvzB{!b6e_jrtQne@s8Er0~Tx3WgiV*CE7I^thI`7UH5GC16A4F^~0yWhg@Z^XxP zCiU=lKaYS>&yi`5-2@3IBC&1NS8*jLA@%TiN4izreYx2+qOLfTept+k9-y%Z*UzAH zxum~}UXqw07A6axP_g_|PF{Y}trZ89l{Wr6-VbU=8askIja)^=L+L!unpH+(<(vJ{ zL@?!}RT!{2CR;-aLG2tS36Io`#l=NGX{a@Fg`7Si`G}LNbbl_B=-*L2FX;s32_TkU z6+mbLfUH<>5zF<$aI{SYo9mgho3b2kXdFfILG|fx7ed6$kDa3<-Mw4hjA&32#yLy{ zOwzO?G(JzXm=$`kflhOTnk89rxRFIw8KOAaC7CEeI+)8YN=*bIH>}dsthd1fiuw9P zj_AYRUuZtS24UggfHEC%j;i$b#0CPRye63tDNRjd+7b|+>V{20iByV1{;W6f#i&-R zv1PEj=QN^_ObTO{sdout{Z+p)Qa%rgBa@S>s6eTF*07aYvdjl(rDG#h~NiX>DDwv9g}qP;31Vk21P)`^dwi)O2oJX&(;> z!LP$Vy!FgB3GDi&+l4ScvzatjqC9GrkmoVLOm=%CR(^N%CZ2{R^x)cwYcvN~0oM2U z%BLIbo-zb;vTAcU@<)bJAw{)>5-IAiGlL=MHoE2mruT4s?;$kn(dyGYsyw!f{^^;| zElpfc5b~=1!=Ek#dXUeJ?n~8RAOH0qmQP{*IKnOz8i)KjR_N#Ci_Cy!ZE_?gi`RMalt?7mk! zU;^XKoX(ef?f=M)px~ZNkd=-GitXK;Bbb8;P)oV!v=i!Q$Y^N0pmU=Kh^_l9K$yxE zkHWtm#j@`KQu6k82+){qwF-;P9zyZ!;J1e=48mcgM4X)9sc^}EkU_d$d+|e59f(U( zM~iSUzgH`={Z^Wq5^@qb_k7Fa@D?Id22JA4&m!XLjZUT-NQ$L(u&T-A7lGdalSdDl zmCE>8-o+83ghcE9EQU5iF6KezV1r@(T{~Wk)E7SR#2*WN_nv2kk|;jVAzqqQ#MD>~ zYu09=-&sXaRLSlk>5p)Q@wzwD@B6OV>o-;*-s4yP&JFZAL;Ii>`%+>K4u%DI87Bfx z3Nmqc^$rEz$JZCsQLEZan8?V2wzf>FtE&~U;KY;ytm$CzQQ()Bmxp~gIxv)Ei?ouJ zm?}iWo?ea6EI4YxYa#Fw{lOPqG{P@NGGhbd#Dc@3(=5w&7C%1>$NEcNE%PQeLPLcK zqj)hwvIwk)z_Esx_Tsjhrk(z?+Lc;f_kP|sY-
    sQ^mQ*XFceL!zs-TQDgYZWNM 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 ( + + + +); + +DesktopMainMenuSlot.propTypes = { + menu: desktopHeaderMainOrSecondaryMenuDataShape, +}; + +export default DesktopMainMenuSlot; diff --git a/src/plugin-slots/DesktopSecondaryMenuSlot/README.md b/src/plugin-slots/DesktopSecondaryMenuSlot/README.md new file mode 100644 index 0000000..3351b07 --- /dev/null +++ b/src/plugin-slots/DesktopSecondaryMenuSlot/README.md @@ -0,0 +1,129 @@ +# Desktop Secondary Menu Slot + +### Slot ID: `desktop_secondary_menu_slot` + +## Description + +This slot is used to replace/modify/hide the desktop secondary menu. + +## Examples + +### Modify Items + +The following `env.config.jsx` will modify the items in the desktop secondary menu. + +![Screenshot of modified items](./images/desktop_secondary_menu_modify_items.png) + +```jsx +import { PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const modifySecondaryMenu = ( widget ) => { + widget.content.menu = [ + { + type: 'item', + href: 'https://www.youtube.com/c/openedx', + content: 'Open edX on YouTube', + }, + { + type: 'item', + href: 'https://github.com/openedx/', + content: 'Open edX on GitHub', + } + ]; + return widget; +}; + +const config = { + pluginSlots: { + desktop_secondary_menu_slot: { + keepDefault: true, + plugins: [ + { + op: PLUGIN_OPERATIONS.Modify, + widgetId: 'default_contents', + fn: modifySecondaryMenu, + }, + ] + }, + }, +} + +export default config; +``` + +### Replace Menu with Custom Component + +The following `env.config.jsx` will replace the desktop secondary menu entirely (in this case with a centered πŸ—ΊοΈ `h1`) + +![Screenshot of custom component](./images/desktop_secondary_menu_custom_component.png) + +```jsx +import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const config = { + pluginSlots: { + desktop_secondary_menu_slot: { + keepDefault: false, + plugins: [ + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_secondary_menu_component', + type: DIRECT_PLUGIN, + RenderWidget: () => ( +

    πŸ—ΊοΈ

    + ), + }, + }, + ] + }, + }, +} + +export default config; +``` + +### Add Custom Components before and after Menu + +The following `env.config.jsx` will place custom components before and after the desktop secondary menu (in this case centered `h1`s with 🌜 and πŸŒ›). + +![Screenshot of custom components before and after](./images/desktop_secondary_menu_custom_components_before_after.png) + +```jsx +import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const config = { + pluginSlots: { + desktop_secondary_menu_slot: { + keepDefault: true, + plugins: [ + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_before_secondary_menu_component', + type: DIRECT_PLUGIN, + priority: 10, + RenderWidget: () => ( +

    🌜

    + ), + }, + }, + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_after_secondary_menu_component', + type: DIRECT_PLUGIN, + priority: 90, + RenderWidget: () => ( +

    πŸŒ›

    + ), + }, + }, + ] + }, + }, +} + +export default config; +``` + diff --git a/src/plugin-slots/DesktopSecondaryMenuSlot/images/desktop_secondary_menu_custom_component.png b/src/plugin-slots/DesktopSecondaryMenuSlot/images/desktop_secondary_menu_custom_component.png new file mode 100644 index 0000000000000000000000000000000000000000..cbfb69ebaf7bd730fc2a11b6b429ce0a580ae913 GIT binary patch literal 14173 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 literal 0 HcmV?d00001 diff --git a/src/plugin-slots/DesktopSecondaryMenuSlot/images/desktop_secondary_menu_custom_components_before_after.png b/src/plugin-slots/DesktopSecondaryMenuSlot/images/desktop_secondary_menu_custom_components_before_after.png new file mode 100644 index 0000000000000000000000000000000000000000..baaa9e2c8d2cdf44edbc68c146dff8d457a42411 GIT binary patch literal 15494 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 literal 0 HcmV?d00001 diff --git a/src/plugin-slots/DesktopSecondaryMenuSlot/images/desktop_secondary_menu_modify_items.png b/src/plugin-slots/DesktopSecondaryMenuSlot/images/desktop_secondary_menu_modify_items.png new file mode 100644 index 0000000000000000000000000000000000000000..18d858d2ccdb501d50d5300e6400ed7e77f4aadb GIT binary patch literal 16145 zcmb`uWmHvb`!9?ggaOha1})vGAV|jo>5%U3RwF$z}Zjf$}?rxBh?sKgt_W!(N zyywdqXMflWS(CNqyyLolb^A(7zC*u{e;)+}1zkk=EdmAQCJp>7a`!g;|4^sQ2wrYl z^NYych5uac>U@EJ7wYHnVagqvevfJ)itv=Ft^#hQO64xks&V< zu+r7EF*G-ODrab_iy{F(NNL+VWn_3t&(6uf&dI|3l#!m1dB$IC3_f_Hut}aDGy^gf~q)9 zQ!<4g(Fjk?km#_{(v;&qdAz+s7}z>CHda+sRAjzYZJ&_5dmLxv`H=rE>A(J0_{d8+ zH{4T@3OkRekn`rQcf_>`c>VXAo)1Z)7_)EubFrte#AEFL{-tM|-3!hCUdR8%136^Ze#2mR!_{p>%Sgxp0Bf}Q*oRvule^@cM&JnE=j4uf|<)v!t!9a z(rvzXMvDI#!X|PfxKk|Z)o1PZck9tNr(?BlsVSDbMb!5OdwTt6@LZBhudKYMH*4G0 z>6^%t?W^cUFFWx(Mk4;VEApl)rQoiMIMH@}GZCc}@Zf9?t|I^QJyg7;GWSis2DJ<} zvCA_37H;@wE*_2rzM%PMR)aVHzi-LN-+B690^UeB@{pIklr{`0@nA8gp(ZshVHHo4cnQ&?0|a_{)! zom9ouDy4IfhSr~>4F*J(B9G}q)4CjA1f?(Pt{n-pW^iQW7v)?s4h}po{!jc#ue0Qm z5n20r`SRJem+vXCGKY*pMe!=0{paS!1lww)*AHWV6-7pj>y}K4?h1B)UF=@^SX6_q z8QjP1Kv-Wta4q&;`5P_7ONT1`16gfq+@4UX1&b6gLvZj-#wv^+aB%~Puq($RTw z@7}!^WMs+G6!eUY4NXlq$;rt(BIu;zxgAly1O&X~*-Zf2P;-6Gl8n;z42*N+d2pU!Cmp+qR~n@v#_ABUkD6##?+&9rNhU zic8Ml+E!OWjd>$)WRuBMSw#imRUSvkWU@@*T_!Cq>X=PcdeznO&CSi-=4owi_G<7# z)z;P3{e7CAo<2G@rm3m9`=*swsod`P!vuEJ5#t9Hd7ppJS(E#BFJm9^lCq%q2gyqA zbSS*p2=5_vkA4ZcRqJg{T;c_6OHzuP9~(ESGu4ycE`P?pGK%6@p6*oi^Ypwa8OPa7 zS9h*uQTU9OHjseL?5F#c8}epI9Yf&hiTT{b9URKvY@q&U+d1%E-gW&UA&<5`9$G_9 zmM$U>b41MRJIgP9_d&wj)Cx1|$kr%v(5Q zwaQN7%souhD=h4Z7b;G=-R8K<$x;L^0l@~h{_L+$nQ~Ovbn52?jonrvA|lLYlek{| z_3$|qYLzz8wxuRx4VAVVqec1;$jHc)9;O{DYH4eaRalc}NF^-Sd)#^P;>GOj?CT1v zC4=c|j+dh6_S;5k)egb;Fv(_@mIOMzbIdzFzLaTr z#=#Ngap!>^mC_>;l6(pI>b0IYE=46JnL-^Ak5Wtmg3b_fDGNKho>JKb=1iGSul9tr zOj5O4ldN+tW=O^T1G406*|pD#Q}nY>i}9H~Hp(u$)}{II(D9iQT~7YK7A>TC_Utnz zxg@>)mMU`bA8kz)vGWHLTU%S79&Fr6#o7<>_h0DyE;cT%1cp?D zZz7(67rR8c`}<2V#Zr?fEV|3LUf$k}Zs!jC0s>j86^uljHc#IL5^_83e_3b^vR?g7 z%FWGO*aM$W}+<=;-dJs+$rk4 z=Du#12z|%dfGXzI10n@`+J=@6{;EmgG_8TjN1^5no)hl8%R6J)F6u>}-xS2wSnb6j z*M*sp^(kF#mOrBAeAyRylOWqD@IF8%QaqNLPGJa$qMw2@f+Ok zmxN+sVl*@~)3tx!h0{emk68(Py4*}1eYiJ&=ZD5(<5uM~fxq#@edf}a<0kDVNhXe?}R_s%!_om`%6+Y+l(+E7A2ak)4c**;*A zkdQDO&WY+_=w^^m^Mxbo2|*HBK_X^rKRTmwE?Aa zi@A4(Y&s>6UyA-t6T@LOn-tz0FUgWgx&5s_Z>GkX&2+rDZC*xZ@k!0QALHx z`OrjFRn>-g8-@!$UvIkFF_cyfpNos@sj2gPH*rG3;}Ye7)^b4C#-sSGj)*vxLWU) z9c|3(CA;SZC5$Ty=5%of+4kqR#r6o#*EhqqtgqRT)U>&5Cjg!aQqE1+nX5+I8V(JV zFfuMXP%5)zADj4{B=f4prS4OQu3w>RA1?H?4;_WM@cH5na%gtL;e+|=#Q8~TZA+0> zGly46<8&jDYNrFL#)FXW-(h^OLpiUg5Agc=lm0#y z#kb8ZVvMb6G-^~Pr$DtxGNo&jcSgP$W~0zEB7(6JzW=0KwOxe{fezIrD zUVBH9$$9ANi;q&zdx|9U2FbDD^c7@P+2u!rb8%kDxqt$Jv?Yd zEpZV)V|8+B`a^-D{@86ZQ@ZeBIJTarw_xGLFGIcaRWbhgnTZ^g62gVklExA_O|1KO zPcI%U=T6nvE?kb={#~^B(Em$vFjpD-9hY&kmb%5_=}fQOuMJ9}ll+%*S#=NSdX7iiCjY6nZeT4SZA1a}?~FYYe1Mn*>?e#lWe z9sbE0C^;P~(nppeKODMb`Rpv^5-Qkw$<9Yx%qFAK6QhLO4)mp^rGwcDK~JdVrIX*@ ztFA^!Dne1#-&^iJht*&0b`d>UVLbpKA+9Awue=lf!D06Yw>5}_oRadMf`Woj0KTBK z^uy`tX-{wO?@;DW4>z-|=d7SgyIr2>6Z5(tp{n_Gb+Or0bT8l4`E%FnSN>I1Ts%(u zA7C30@;J#6*ss&Z0*G^PcE)`8@U@K%v%I{#+z&Zl=#ARu=J`|bdZbvShyLcx8w#xZ zqM;O@e0+R*^a(IA8=0crZZ@hHf$0gVU~AO9;9bBS8THx{coGvFw(gGczenOihuymzbDXQCZnYn}pQ_S0b9ZkJtSCcvrR3#up}L z9gS~ox`ykeSh#r6gQix?{Z*Mu=sDaxJO>yR%uGz$4W9S*|BQt|2{gpSrk2n7Fp{U1 zqg?V8{$gjsyzbiU@^VY!8xISMW9J+z0|N?Z0{}RvVbOm@PDrNA^YIenj0>Wp!$Uo2 zLnf2u!SEDNxPthT62+q!k#H%NgDJj$%d|DEC0C^kdMh3&DQRR(jBJ^i8kKxbq@FWO zJ{lB5kr1-Eg#~#0I1Yk?7S`4S zwLMWx`jOm@R?$o5m_$SpaN}!G;A)%>`f1&F=WjtF6e&_olKyGGt?uILdJh$~acnFK z_CX&!Z`>xn6>XQOQAzZ{#)!7Ic4N8a!al}XCd@<}m%SeJ&R7m>Zy1%mze{4uWo7|B zK6gaZzC#;%_~_AY&lxELLok^{G~BMQhsOFgmaN`xnTtxS!RZQRku=4LlQS4X%(0CdR!Or0iH0q)KL-9Q4GLfuX+Bcl#LAMFuz zB(N%OZ_Y63_slLVG{TLcv?cKInNF0Zxm}!&+j^rDcvn<#AbXn+iQDYq<^(LE`K_%U z0J2_LS%#GpM+XNl0q1AQW&lkHxsa8uJ z&>b5Sk0O*4cwK)M7wZ5L=j=Q?+760}it4dSLx@;d(DPj$KeykWZl0Ws1u(WZq@bax zv;T(7ReWKXBuH3TykWdQmbROBpsJ@`43FH}jfWu9-f<={AhLLoJUO9maW3Rb8TO9q zUp0-EE|u0k>oORBYHdzUfpd z%7G!_A8^<2i(XGOkqcMijpj@I<$lX!)o1ZM`cV89yVriz{HE8tERU1Fp>NTnpI5(Y zsJ?KTd)9T_7jdHP95T@!XnH2aU|aEkD(vf8W92nUrjlX;#+cKg&LX#AdO50>##cww zMBcrcoz=m`nHnsOkyo##Pwv)PE(m$oyhIF4Cb`AHhJS>EqrWp+mzw%Qz1rbZNl8h4 zfeTsyUv`s6>!Wiks;5)7rGGf`_O70tSXnkr`2Ebp73xvyOv#X8&QyikylI(P_ z4tq3KB8HX0YEd|xR!tO^!nH_FTPmpL8Bp;(_tb zuy;Yki`_9e!WBP>nDo$Y-N*XyJMqn8Td)TZ#R7+2Ex5E8ov?cgfX`Yn+&f0hE*;V-Uq`_?Ur#!NI{{c5$%@F#cGvAtt=&1C4qu8nH9i=(Di8DqQDw z0TAuZ)!EDyE{_v4G_~~CpRR)#!RWMau<0=POz^A4)uk(-y-uhQCv!d|^h``CMngYT z%PmMHq`m+_K`|isfFuX4tv&!687yXBC#R$!zYU7JHhkOo0&UI0i|6n}``a@lQc_ZI zRWsX6>Xoawq@*6y?8#c!n0Ov%M6rR))>Kt1Y^VyyJu*M+SI?luv2$@@5)$S}D86|4 z(sFa01^8#V)4>l`&E3UzOb|%;%gm;x@iUI;fqwb$C;b+oP1DoW6$HLIT4hi7fSCI! zdJn{%EIhyqC`5L6BPNQ?HO`r=1>@Y-QzJ9)A3Na z6|29CB1R*5xfk7h(4}Cqv;ix>?)d#3{uEGx)X)z~9Bl7Dce)E~=bP@u#>V3Exp4!r zL$*ffs^9qB-KgY*>r^h9{cujUsCV6HU{CaYe(W|ClBgF~7Rn2H0G&*dX|g?e{YC z)Ci;MdUnWQJWK=HjO{r00}@^x=yeWGPT%P?c##4U(BXp8(jE(gZFm46T3bkx_0dvjcPf4naUEg=`vSx zgqb|+We%c}Ej&S}S*JXJ{88^dZ5cgNbB&c@pvK+hwu)>Ub0xaQO;Bkuxs1g^MQ<&M zVYxW(+~&6L=ue=K|9z|O<%0Bu?ep_aC15e1ftk$7&j@)TIyPWa7-g4$V%RB7oQk-VlH zmTR2TZaz_rw6`OYTmhB#Jra(eQ&UB-OKIRpXKgXmlFz30{r}+-`w*bray{%_}^i0Bj z(j&4cV%f++Jnb0V6LKtV>FNqi-^{SO>XSu*QD~X$3cVJG&*a+7y2b6FwR8A51mR># z5qAGnLOD-uy6_DP&8se`!`XIdBL%2$CacdL8h6%7RS)>sK3`O)*!1oiK3rsXVf|*! zYkgw&`kft7#mBgSmw9RTnRLhGS+^xcei7cun=BWrFfCDV2u(Y~Uqx}*(?S(W2Fc?1>`YrnrwLYC2_NtKA96__>OYTJWxjW! zdG)G2j2Z{((eJb4y_H@lCP^SxapJrX^uvDn^yx=vDIk+!02dchRV4&Q(r0%oS32oB z0O}Pe*09E{{){q!bkI0jpj{&3bN>m|2YvlkVCzWkfKI@g3R-C_x8q}INO4^9sr#?rBBpDJZ>N00}b{=+cs;Yh4_n`bP4)RvtH0+8FppPPgWA3g4Z1!6~Nt~aJw9Tt9INo>b-@Ox$HJW&3^Xu z^l&@ud<4w?=<#Fz0NQ#bqhW(S0;;}w2+b$$;*x`l zOSa0+)D3i0G#@rRCsklYAd2J0CDDaZz1Ny=@;%>eC2=a_`S1(n`i&b=^qSX)hlkM! zSi2H0j8-{b0|-{iD0?$eY8u7k%*tjq+4fVxgFop52u)~&?B7_7hd-E@h>MG(L4D}o z8t7{I{vM>Wv2x24JNz>s4FjM$fQT#sU&d$))it`*yf0ahNws%+n%LRd8LqunoG_BD zkdMox=YQxx0?jpoR!s|3Jh@!uq1lVXF?EntQE_Mo$!@}Qu-mLYgu;ZU9-0q?1q46_ zkn>EPGZ1N_&@~gF_sV9=zZx`R0k+2kl~#S8s0A!O~GR|J?Fh32Oj&-j4yyj;X1*-@l~+bo*pv zth`$@bUW7)Ju3+}K0UZi9Zu6Ea<#F>8-J>GEWtt@zIg2QAy5s?&A4IS^$ZjOdtz=) z;iKhoom;7d=IB#uC(~#8;8TcRPEzvhS5>3mJDY$vx z>oW+qy2tTM^B;`UB;*Z1IcP_g7T1T~VS*TWGp8Y%JSyKJLvw1jJVIl7P)D|(aZ}v} zNuY+IZq3%^dhVT`+4XIA3zJ40Q7qA@(fQ>mALcDCFQgo7d~#FVpHI>}esKC^wMRTj z;;C#6gV}U-R8|rh5a6hU{ z+SuOi$6`iBLwlPmpMkew3QZd}(cSx^c$oHkdZN!L4w{vn(BD~G?=ja_z z3m|bodH0~X4#o&ulNyb=mW^%y2-+Tw(nW z4OBzWFO;{n_4M?BWg#UAD6Azb5y^sn{k5*nra^g~5p=SEa7+uYBMuipW!T-{zxi7| z$GBzHNG=O;%ZopW=Qiki-ceC_09E?)_GasEKwT368Krna6l7c|=S{7x##bN-AQz@W zo@$>Xx@)U1De%yD0QnR_JZxVZ?Ci4{$Va4om83B|BLN!UgMjdNrTii0n9F$?(aQJkkm8)oLabe-R->kZTq~3(> z8>gMFTw(-})36Q|KZ~x1h>#E%Y_&_4dv(z=3mOM4Y`3U>c5&O_L%l+J7A7VpApb~F z2Aqi7BfX6Kgo(kY_OGppC2Q&qC;@E%3)h^fbwx@fpi&z;@79RXD5YsNe}%RGv803r zpw|GgSQHPA-ji-~|D>7h!34{bze~2?twAQm0&^(tNB|5QTiQT$j?!n(pI6v#69Z~_ zNl7VkhVSd^3nS|VjN}m!Q8$2mSR|4I*c8ge2GOPcF+b#Uzlx^u!}^GMD)kE5B<$B8 z3i)}~bGgzKnIK?+r^oI1_XwSffFOps{kpUB8QM(QGUwYFeH={8l+7oZCw_r$WlHBQ z{&)gVzy{819QQWVkR*G3{YO!LF$EV23b8IS3y=f#s@h@qGq9hF6jOrr@!U|)xDeOV zl@4AaM#*m&YvFD@v7a3g_cP8ksxC14E|`)ugMpA6CM*|B_E4HOw9dI7VYIJ($R6ly zY8w4QB-V;afYXZ;k4d@jsNv*Z<#|DVK48)-T@m}IpQflxgd<3Z+iz|zBs3ByZ^lcY zB#+Y_c6-00#;KND2qNhhjSnRQo%*isw#cM2ZcB}irpuV~WB84xNoq&`xa4*ynQu^# z)KSChgsvAPPt(|h00q^{ZoYi^GD$wWs9HF@WiO(jiTs6@en_cA~1B`^4jzbUq%f5(x0kFc5n0`+)i?b1_I8t*+BjexyT`lQP_|{VhhXc1 zY&c$^e_E-(u5#PmoqVF$uo3*uu}WKNV3MH}GM}N1f&!GnT%d2?*VngZhsVmus09+g zgQFvZR?}Ui9tU6^`tp#7sF#mVoo$Ydg9AHYe?xp8Sd%dOkMW}ZE_~3^;s+wb;e1E~ z)*d*SlCkXIpCHQ#^-t(3Yu-I$~T4sqUJ#sIc6NPwU>R&6ZDJa@a0XDliU(jq$#M` zP@}A8e_b;g&S?kr46N0lH`-U|Ja-II-DaYw#DIBnhlX9}vWrG>>W&{c1tV(%;j@zt`_r#Q}>j>|`neD(Jq+>&x-pbYDP z4Vaepk}6Ep9D(HYpw+I^WXopsa1CkTGaG!HK6-?QcM_DYWN&39x_6deQSq3FD9-Hc zuj_q3VUD8-<+LkTlQUiPz}TveN+O>DZq`g=S^Oc%It8VzI@;gcKIt`-M@fcug801@ZB>-*-M)IGs)-tb5p%#H29lKF_Ff6rZ{o!7@tk?2xXFSU22$dG*8} z@)3I$b%E$>gL3W?!42kb@%@LhT-9GsQ-8v z-;rdwwL6CG-h&6dKQsK6x6IbHr8OQObT7ds1o7E8gFsSZM$kwPz;!w~W!%gR4xKu^ z`80P&C}ks9f=HPvTRt}#$h8w@LzXr)y&Yb#O0;x!y+qSQ2YOCM3#zGIalW6rk)uOn z3jIzBCdEowa zdmH7Il}14!Y=+)ti;cCb1BY1KFy76ziMxk#v(QJ=FyuU1{XT7vd0nu6Dxxn@ z=obE9<}U~rM1j_5Eq}(4slxOloH{(~c=``f((WR-bv=iyijiqK`N(#gH>#rT979Of za!iXa5L3^@;YO-^EOoKIRK%@x?aD$~HnV zzUXtGZ-~W3FQX=NScD9@kEG8AltvbLXih1y#Mk*ZA4LotUs~Za$zr~ zwRwD#D(g98Y6!Aw3A+xN>ORBuj4&~< zTlRax^7%@Mxa?32oM}_vr6FXp5HB|sr(nYs=yqa*#3Yb~NVBlA>gSpyqoTT>hVTst zKnH*Zun!Xu$AHHY5T0t66T}KeG&BVuZn3-W+s`1IBk7W zD+LN&2FUS9uLt~t4esT|#kc(Y*B$>ZIvRK1U}IwgWi=L?fI*6C#(2PlXL@xOMy8+qbJPZYC!qoHh)%);Tyhc0m() z;PeOINp*a5bZ32t8YxAY*+EEUO%3dpW~5>a(j62rWUB*8*A>GiRYk)S#c{{Qz`NzU zI-}ZNl%Bj(jW%-)s_ekXzzX<@i!)QzPP zWMr;q%ceMf*lnMEAz3 zIs6X`Ayu_tz$z%}Pw91H#c6M>-KqO-ZVjje55b6j(1_uEl%&$)RzGT<7Ow zUj(V0JH?_lc8!-!O7hNEoUX>L6r3oQ!i>Y~JdozQ#Jt3!{>If9B}RK|MyoxYhbI2_ zoftN!#KCOkK#uH-FUQ%qSxLLs-f}zlcqKlJ(`oA4Qvh!}>7yT$XxeAS=D!Q}t26`N zwvAoDifaW4?6kGCnm$Udk;@;nYijw=e77vdvQo$tp)5d&`cBt?PTIE2OK7b$6qH0-nolE9+sM_)9_5zDTk25KCEAGPo_H2tSnE@ zmO3OhXL&I#^cicf7J^oBMqC;q9t&G~qf+R`QPGbI3Bg1z?v>pb zl8H|@?u?cgQnDYIK!d9JVp{{p0gJ)c^X3(88x=t}qDDyqP#Kfo2 zIJ9?6q~;ru{-SP2X#L0tTlemL%7X;GuE=`8WC!w5e9nhCJy&!Zl36~fQS)WMCm=*4 zH6b9d04p{JgkV{LcLUn1mP$Y|Arve5MiB~IdkFb}$sQOPgj{z1Ksk*wSc^+amNxS1 z$S5d;V^Acd^m?w5L?;y()TU%%VqIQtv)T-Fb)lspqV$~C;)lRmH=(t)^$r_b8FNh+=t;JYKMi3spFaBj(_kPSSsrQBs};EjDNBC+dL7T_9NXM)X=MA+$zy_-!6nBhM!SDv3ck$tPhj6m|K3oaJX z3PW^pqDe2>M2lr3sD5=VDtPVfr+#m4q2# zQg1(p>!!ryl@@dO@X6lymW21o8m-IJ7FZt0@FSPqpI-prfV)A+vKg{??O@(Py}y~L)BYWcO708bIVg$z!OsNCZPpO! z_n*H99RwDVHE@}~%iUst3Zc7<^zd3juX5+sc}`0DiNx*r6W}q}ohha}ckbLF;5I*P zeT;+CdU9q9SC>^!WIg9()zjnS(w&uJmX+1BfB= z;R1=c(u=AA>O!O|8r0hzsC6J?i$P%p9{}8c`HV-(d8!KM8zuNQpvr zrH@&l8Y-p|h*`Rw;X^$?Qf2DgTmy-DzLu4-fwUuGzdqX)e}nghfHtLiH9P2SkhYXb z6@DZxA;IBtY*EQ0J>3G17<`M>`XJ@{NPhlB0H^C|@${i$o@xbhav&jrbRyvenNht! zE1Xw7&I9hie|33*)EXcok_;uTyu5tp^uQRZ+V0U&##`UV;5;jvcYk8gZuy<3#wADf z1SA6p8N2LXAag087vr%QVS%Dm-{1co))vGmX-)qkvgGRQmbNx{JLgq zAd#UrH!^ZnWxve`GZ+_tO-M+{AD=~(>&a?NQNXI7;rd{f%h_fbV94uG%OOPwjubDf zo=s=R84#Y49xW7jCYx1hqruEKfE>Zzgt%%fltIvCMSLH>?B5K#ZGehy4%7>TtW-)T zFir`G7Mcxo2|zu1QaUOC`IoM#MhQ~ z{y2K~n#$BsOXA`2Fi+rDl?g9Nvqqi;wJ zdI@!eo=Jk;xDqaUz=L0XJ<)j2E15Lwh4Q>6TgN+MgNbu-r_Qzy-=~b5{ZVE8G?snY znwUk6Lh+rC4LDDVg7JkwEn4uYo~^v|3Mnaoh`B@4#_aOw=xBUySz#DU#)BoMRAp;< zc1#NoBO)Q>IfCfnEb+|_U5MDu4_~zUM{jn6rr;ZJR>g4eZdG>u=roYhgNw;Mhnz!P zqWoy*-U5z^4uHGy1Ibej{lz~eXn)2-KN6uj?!5SXGR;*`Qu+&`d;S6a`7zfh$^G+Y zy7Vo|^k@=BNn~ZUk!i<+LxC=pvm(2i8{~8YR_LJGbPP)bkV$$2HC(c~kOb!Be~g_iU(MkZ@>&moZ2Ja9AxObJdWC zFlgna#=4&_9@T(MM}v!Z*mDY8)?lW#=1uF-uTM8b;5i{k^g2m;c744A95!Ic9Pd{RW^BM#mULZ2m~6^s%=od9D!*7sYNQ)z&(sY?!p)703d*1mp4?fL^&$t#s}|m z2zx;;ORg)L1=ZZ#9K1Y`cUyXT0_kdxuRnMY#B56jhebfXzY#>tlMH*nP-}00zp1Y; z7*@3f*!EV7ZEv93gU?l3|74h{adb2iFk?C;8OV%L9M)tYldphd2_+Velt_RQy}PsX z8xQ}3k&!64>mWr8;vEJv=}T_@j2>hX|B^EY`v&BGuC-i;760P_-p2Cw0yfdPor z(Q|L`kx3J%1}Qsfn|Zq>ryUhiqWkPg-8>E3W7=eUbtL# zG*DQ_=R!Vx`UJIo4egerENnpJH%*k8w@yv*OexF4m})_1KHndZ>WbyS6kf{(#b@wH z`Bw$B(HzBs&mavVQyfseef|6zVOaoV?yIoYhgun|$(0LI6!LzN1|sNG_L7Ro1Sd2h zBoRl3P>?r5{{aO88hvX^Kk%?eN{kica}?{rcP=O{PL<7&goMdbocfs>R>y*WmM=rE zmUDn+GW3Oh%XUiHT`n<9pD~Lx-pQ?T&v!&`wm27GEg-FDPntJWqH>EvN zSIbIz^WfiEmr#c-H>F46nH9Mm{2k1X-+ef_uXR}_ojFsWB?f6ca2r@0E`Xmvgyv-U zIs=$n$YToYJ^rM7UHaZ|DCwy5)oyPM+GzL?X*Cf8e8^Ay_q7$6c!hshf{b;L>+guR~hbXD>hz7R95Tj z$z!A;41cTX0z?-#RY*hBl!%r;B#BYZ)q@12$#k`neuW;5!TL$#zmMg$^*{~whvd0C zFUAULukRIw(zS0=p zH`5>8Bt#Z?Jx1x?9_(CP`Y~&Hp1-Amzk|uA*?9Z$lM?bWN?yuxbBnZUTOx2j{)9q2ao{y}i@X)`d(f`@au% z?ebz-SZW0YiZKBpMycF;<$p3ZT=Td27yX?JD-GrAp2EQ zstm-{#iwjpnV1Gt1dm+5;bV_=x@UR+=Sbt2h~D}=143Q`VZZ#VF|QJE`L8;B2QQ5~ zespK+0?3@D38s~fh0w^-U5S7jOoRyVzykg*=!;#$RMsl+qfnKA^ zD%GyKJcOG$_oi#!et$BbJ1tgc1G3WO)D$x4ad~;^38u*b2hzR+Tn^;*U#I9ckOHZ` zz7HIb^0$2a?^BUqXb?Gxs7FD0_4ZeWr{b!jR(~hBwg?Ea6q#J_=JMqSA}B|!=QpP( zUOPeh6e>BgEtHwhEW`4AD z`~-ZWaZ@U+`*6k2($es;*Z(=n_$)@6GR($EIR+zOssbA9nbfKE-+tTA0$Y1KA~zka zIHmI(uC2?x5?knngNH#ylMdKXf8S7DJ%KncqyxYG|DBt(8D?W*YV7I~=W_nCtN{lq z;pDE;|9l~W>Iob|3(-D#0`|n}F@(ezUU>U7XxeVW?>pC;um;~?Ihgr%=v#i#p{&%-{lXZS4i~F*<8OV literal 0 HcmV?d00001 diff --git a/src/plugin-slots/DesktopSecondaryMenuSlot/index.jsx b/src/plugin-slots/DesktopSecondaryMenuSlot/index.jsx new file mode 100644 index 0000000..79c1f5f --- /dev/null +++ b/src/plugin-slots/DesktopSecondaryMenuSlot/index.jsx @@ -0,0 +1,22 @@ +import React from 'react'; +import { PluginSlot } from '@openedx/frontend-plugin-framework'; +import DesktopHeaderMainOrSecondaryMenu, { desktopHeaderMainOrSecondaryMenuDataShape } from '../../desktop-header/DesktopHeaderMainOrSecondaryMenu'; + +const DesktopSecondaryMenuSlot = ({ + menu, +}) => ( + + + +); + +DesktopSecondaryMenuSlot.propTypes = { + menu: desktopHeaderMainOrSecondaryMenuDataShape, +}; + +export default DesktopSecondaryMenuSlot; diff --git a/src/plugin-slots/DesktopUserMenuSlot/README.md b/src/plugin-slots/DesktopUserMenuSlot/README.md new file mode 100644 index 0000000..e98b33d --- /dev/null +++ b/src/plugin-slots/DesktopUserMenuSlot/README.md @@ -0,0 +1,141 @@ +# Desktop User Menu Slot + +### Slot ID: `desktop_user_menu_slot` + +## Description + +This slot is used to replace/modify/hide the desktop user menu. + +## Examples + +### Modify Items + +The following `env.config.jsx` will modify the items in the desktop user menu. + +![Screenshot of modified items](./images/desktop_user_menu_modify_items.png) + +```jsx +import { PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const modifyUserMenu = ( widget ) => { + widget.content.menu = [ + { + items: [ + { + type: 'item', + href: 'https://openedx.org/', + content: 'openedx.org', + }, + { + type: 'item', + href: 'https://docs.openedx.org/en/latest/', + content: 'Documentation', + }, + ] + }, + { + items: [ + { + type: 'item', + href: 'https://discuss.openedx.org/', + content: 'Forums', + } + ] + } + ]; + return widget; +}; + +const config = { + pluginSlots: { + desktop_user_menu_slot: { + keepDefault: true, + plugins: [ + { + op: PLUGIN_OPERATIONS.Modify, + widgetId: 'default_contents', + fn: modifyUserMenu, + }, + ] + }, + }, +} + +export default config; +``` + +### Replace Menu with Custom Component + +The following `env.config.jsx` will replace the desktop user menu entirely (in this case with a centered πŸ—ΊοΈ `h1`) + +![Screenshot of custom component](./images/desktop_user_menu_custom_component.png) + +```jsx +import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const config = { + pluginSlots: { + desktop_user_menu_slot: { + keepDefault: false, + plugins: [ + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_user_menu_component', + type: DIRECT_PLUGIN, + RenderWidget: () => ( +

    πŸ—ΊοΈ

    + ), + }, + }, + ] + }, + }, +} + +export default config; +``` + +### Add Custom Components before and after Menu + +The following `env.config.jsx` will place custom components before and after the desktop user menu (in this case centered `h1`s with 🌞 and 🌚). + +![Screenshot of custom components before and after](./images/desktop_user_menu_custom_components_before_after.png) + +```jsx +import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const config = { + pluginSlots: { + desktop_user_menu_slot: { + keepDefault: true, + plugins: [ + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_before_user_menu_component', + type: DIRECT_PLUGIN, + priority: 10, + RenderWidget: () => ( +

    🌞

    + ), + }, + }, + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_after_user_menu_component', + type: DIRECT_PLUGIN, + priority: 90, + RenderWidget: () => ( +

    🌚

    + ), + }, + }, + ] + }, + }, +} + +export default config; +``` diff --git a/src/plugin-slots/DesktopUserMenuSlot/images/desktop_user_menu_custom_component.png b/src/plugin-slots/DesktopUserMenuSlot/images/desktop_user_menu_custom_component.png new file mode 100644 index 0000000000000000000000000000000000000000..05034c484bed8ebbe929c73c08eaab1842946941 GIT binary patch literal 9245 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 CCbDt> literal 0 HcmV?d00001 diff --git a/src/plugin-slots/DesktopUserMenuSlot/index.jsx b/src/plugin-slots/DesktopUserMenuSlot/index.jsx new file mode 100644 index 0000000..1df367c --- /dev/null +++ b/src/plugin-slots/DesktopUserMenuSlot/index.jsx @@ -0,0 +1,22 @@ +import React from 'react'; +import { PluginSlot } from '@openedx/frontend-plugin-framework'; +import DesktopHeaderUserMenu, { desktopUserMenuDataShape } from '../../desktop-header/DesktopHeaderUserMenu'; + +const DesktopUserMenuSlot = ({ + menu, +}) => ( + + + +); + +DesktopUserMenuSlot.propTypes = { + menu: desktopUserMenuDataShape, +}; + +export default DesktopUserMenuSlot; diff --git a/src/plugin-slots/LearningHelpSlot/README.md b/src/plugin-slots/LearningHelpSlot/README.md new file mode 100644 index 0000000..0f28edf --- /dev/null +++ b/src/plugin-slots/LearningHelpSlot/README.md @@ -0,0 +1,41 @@ +# Learning Help Slot + +### Slot ID: `learning_help_slot` + +## Description + +This slot is used to replace/modify/hide the learning help link. + +## Examples + +### Custom Component + +The following `env.config.jsx` will replace the help link entirely (in this case with a centered πŸ—ΊοΈ `h1`) + +![Screenshot of replaced learning help with custom component](./images/learning_help_custom_component.png) + +```jsx +import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const config = { + pluginSlots: { + learning_help_slot: { + keepDefault: false, + plugins: [ + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_learning_help_component', + type: DIRECT_PLUGIN, + RenderWidget: () => ( +

    πŸ—ΊοΈ

    + ), + }, + }, + ] + } + }, +} + +export default config; +``` diff --git a/src/plugin-slots/LearningHelpSlot/images/learning_help_custom_component.png b/src/plugin-slots/LearningHelpSlot/images/learning_help_custom_component.png new file mode 100644 index 0000000000000000000000000000000000000000..52eb9b30503a046fbe1444f947a388d80cffae34 GIT binary patch literal 18483 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 JzNDVd{{^$2*!Tbd literal 0 HcmV?d00001 diff --git a/src/plugin-slots/LearningHelpSlot/index.jsx b/src/plugin-slots/LearningHelpSlot/index.jsx new file mode 100644 index 0000000..5764302 --- /dev/null +++ b/src/plugin-slots/LearningHelpSlot/index.jsx @@ -0,0 +1,11 @@ +import React from 'react'; +import { PluginSlot } from '@openedx/frontend-plugin-framework'; +import LearningHeaderHelpLink from '../../learning-header/LearningHeaderHelpLink'; + +const LearningHelpSlot = () => ( + + + +); + +export default LearningHelpSlot; diff --git a/src/plugin-slots/LearningLoggedOutItemsSlot/README.md b/src/plugin-slots/LearningLoggedOutItemsSlot/README.md new file mode 100644 index 0000000..a803d01 --- /dev/null +++ b/src/plugin-slots/LearningLoggedOutItemsSlot/README.md @@ -0,0 +1,132 @@ +# Learning Logged Out Items Slot + +### Slot ID: `learning_logged_out_items_slot` + +## Description + +This slot is used to replace/modify/hide the items shown on the learning header when the user is logged out. + +## Examples + +### Modify Items + +The following `env.config.jsx` will modify the items shown on the learning header when the user is logged out. + +![Screenshot of modified items](./images/learning_logged_out_items_modified_items.png) + +```jsx +import { PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const modifyLoggedOutItems = ( widget ) => { + widget.content.buttonsInfo = [ + { + href: 'https://docs.openedx.org/en/latest/', + message: 'Documentation', + }, + { + href: 'https://discuss.openedx.org/', + message: 'Forums', + }, + { + href: 'https://openedx.org/', + message: 'openedx.org', + variant: 'primary', + }, + ]; + return widget; +}; + +const config = { + pluginSlots: { + learning_logged_out_items_slot: { + keepDefault: true, + plugins: [ + { + op: PLUGIN_OPERATIONS.Modify, + widgetId: 'default_contents', + fn: modifyLoggedOutItems, + }, + ] + }, + }, +} + +export default config; +``` + +### Replace with Custom Component + +The following `env.config.jsx` will replace the items shown in the learning header when the user is logged out entirely (in this case with a centered πŸ—ΊοΈ `h1`) + +![Screenshot of replaced with custom component](./images/learning_logged_out_items_custom_component.png) + +```jsx +import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const config = { + pluginSlots: { + learning_logged_out_items_slot: { + keepDefault: false, + plugins: [ + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_logged_out_items_component', + type: DIRECT_PLUGIN, + RenderWidget: () => ( +

    πŸ—ΊοΈ

    + ), + }, + }, + ] + }, + }, +} + +export default config; +``` + +### Add Custom Components before and after + +The following `env.config.jsx` will place custom components before and after the items shown in the learning header when the user is logged out (in this case centered `h1`s with 🌜 and πŸŒ›). + +![Screenshot of added custom components before and after](./images/learning_logged_out_items_custom_components_before_after.png) + +```jsx +import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const config = { + pluginSlots: { + learning_logged_out_items_slot: { + keepDefault: true, + plugins: [ + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_before_logged_out_items_component', + type: DIRECT_PLUGIN, + priority: 10, + RenderWidget: () => ( +

    🌜

    + ), + }, + }, + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_after_logged_out_items_component', + type: DIRECT_PLUGIN, + priority: 90, + RenderWidget: () => ( +

    πŸŒ›

    + ), + }, + }, + ] + }, + }, +} + +export default config; +``` + diff --git a/src/plugin-slots/LearningLoggedOutItemsSlot/images/learning_logged_out_items_custom_component.png b/src/plugin-slots/LearningLoggedOutItemsSlot/images/learning_logged_out_items_custom_component.png new file mode 100644 index 0000000000000000000000000000000000000000..bce54d3e3744b64a199eb24d942fac238e1c60be GIT binary patch literal 16286 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 literal 0 HcmV?d00001 diff --git a/src/plugin-slots/LearningLoggedOutItemsSlot/images/learning_logged_out_items_custom_components_before_after.png b/src/plugin-slots/LearningLoggedOutItemsSlot/images/learning_logged_out_items_custom_components_before_after.png new file mode 100644 index 0000000000000000000000000000000000000000..b4cc6110c13a27e32f99d0539ad9ccf597197785 GIT binary patch literal 20319 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%0AK->4(qwPsDrusYP+R2 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 z PX=HmgolH&*b5@x~Y!3V0>#un3*Zsrw`druR{rcRW>%On+bAPV)=aVTwRVH|1 zb%Eg7>({>k`Ehl1b*p&-_i;76D6s>0_1?AOf2Zf^c6XXcAlh*`DA6oNHLoohY~VS& zarlOS6ZeM0i4tB!dO8SN{cE{x&;8uDHhN!@3GoU`PgW<_Z*lg751AU}XgEE-+4p0{ zX4l9GnuMX}3x<65#6>_1l+B7sL56WLPaYYqM7r?P4vyZ?J|KdZ0CA+RTVE+~5}Ygyl2lZwLt3)hj! z)0J`jFy5EGD-9xqhe!39l1n?nKHvJq3AM}Lqu4$Zv26f7zdC?!N)DzH-@k`)iSWMG zwWw=LZ_DpwJ0V@lb)2gt^XFrIb4%4MavGnpO)b8P7gZjsFW<8tqV4PLp*w`HF_F?&;7_5RX1Sace{U<|xWAl-&IRkG#+Qgy{P}k}p7`+NrrlIra?xjNc`(VGJNFM`L(_&!KbDZtg`#vjVKOBOrbpKQRmYSY zY*$xB}ZRM{`pTIy91YA5o4qW?%IS}2L*U1`XHN#=}kOWf3T z63HLO=A@TeY|G0P6rMDXnEFK%M$>A8r|oP@gf){6xV9^1{DrX=y}VQ35$)|LRYk>G zU|Mk^4~0_O%cyh#z%&)~E5`V()zZj;wBqUM|7adhN-Hhp$^Ds!$0(_O>AO8-4gK1k zDdv!nK~{|+Jf)n&mIWuIFNi?onkrmK*czC{JOa29z7+4ySk1!jUhU*E5%1hh>WmG# zuzSL@!S8<%p?pHkjn|@&^NsF)aanHklFUqqWvg>w_vg9!1+=%FB@R}@q(BsY`0yX)gKoIvC0 zWW&937niKLOa~?8U_!-=?w8Pm2I?P>pV`81FaAL+C(@2t-KZXm16-Lv0O(8{c4bCG zzBy^%gy2*FzHx(Z~6;G7KRKG6DFQTYrj7@UIy1jH$11J9J_#c*#(vzvJTU znokhj%J;abwz*18q8*#XqTqi2sW)B}Lt$O;aWGo!9ivR(9`q% ziU-lu7C*qb+EpmuV-9?-fLm&6V~n#cQvdn5BEj|6<_YraNE!-SM!0PMcB(-Bp{+KM z!n(iWn&B~Z03{#IT)2KNnw2_^rFbe4^w_k$5051cKM2(Vu&!Di0#?Y1b};y>Cd%I# zMIQ~n?OGy(P8vw)n7Cei&O0epnd=6yk)97gJAP`_NPn&|spT61Bsz{dU;| zZ8?51DOg43*m|4k?^RZ=A(3{`M^yvefBR`W0$~}<2SO(_|N2{|L9ns0ee&U{mI|jz zxa#p8pBIM#ucY45PBxSg!+;*;o1`wUGlmE?n&m28%#4SPNT;8D#wWt$2%?-6M7FU; zt2ZYV!&Lx^0)fHRk0F8OFXu0H)k0L7Wa_%ah@`mjjF$BIgjk^Xot&$ar(>giNZS7a DfZg8( literal 0 HcmV?d00001 diff --git a/src/plugin-slots/LearningLoggedOutItemsSlot/images/learning_logged_out_items_modified_items.png b/src/plugin-slots/LearningLoggedOutItemsSlot/images/learning_logged_out_items_modified_items.png new file mode 100644 index 0000000000000000000000000000000000000000..7eb0f59cce98cf3d8fdd488966b5b09d3d13a396 GIT binary patch literal 18555 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 ( + + + +); + +LearningLoggedOutItemsSlot.propTypes = learningHeaderLoggedOutItemsDataShape; + +export default LearningLoggedOutItemsSlot; diff --git a/src/plugin-slots/LearningUserMenuSlot/README.md b/src/plugin-slots/LearningUserMenuSlot/README.md new file mode 100644 index 0000000..97fa467 --- /dev/null +++ b/src/plugin-slots/LearningUserMenuSlot/README.md @@ -0,0 +1,130 @@ +# Learning User Menu Slot + +### Slot ID: `learning_user_menu_slot` + +## Description + +This slot is used to replace/modify/hide the learning user menu. + +## Examples + +### Modify Items + +The following `env.config.jsx` will modify the items in the learning user menu. + +![Screenshot of modified items](./images/learning_user_menu_modified_items.png) + +```jsx +import { PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const modifyUserMenu = ( widget ) => { + widget.content.items = [ + { + href: 'https://openedx.org/', + message: 'openedx.org', + }, + { + href: 'https://docs.openedx.org/en/latest/', + message: 'Documentation', + }, + { + href: 'https://discuss.openedx.org/', + message: 'Forums', + } + ]; + return widget; +}; + +const config = { + pluginSlots: { + learning_user_menu_slot: { + keepDefault: true, + plugins: [ + { + op: PLUGIN_OPERATIONS.Modify, + widgetId: 'default_contents', + fn: modifyUserMenu, + }, + ] + }, + }, +} + +export default config; +``` + +### Replace Menu with Custom Component + +The following `env.config.jsx` will replace the items in the learning user menu entirely (in this case with a centered πŸ—ΊοΈ `h1`) + +![Screenshot of replaced with custom component](./images/learning_user_menu_custom_component.png) + +```jsx +import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const config = { + pluginSlots: { + learning_user_menu_slot: { + keepDefault: false, + plugins: [ + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_user_menu_component', + type: DIRECT_PLUGIN, + RenderWidget: () => ( +

    πŸ—ΊοΈ

    + ), + }, + }, + ] + }, + }, +} + +export default config; +``` + +### Add Custom Components before and after Menu + +The following `env.config.jsx` will place custom components before and after the learning user menu (in this case centered `h1`s with 🌞 and 🌚). + +![Screenshot of custom components before and after](./images/learning_user_menu_custom_components_before_after.png) + +```jsx +import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const config = { + pluginSlots: { + learning_user_menu_slot: { + keepDefault: true, + plugins: [ + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_before_user_menu_component', + type: DIRECT_PLUGIN, + priority: 10, + RenderWidget: () => ( +

    🌞

    + ), + }, + }, + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_after_user_menu_component', + type: DIRECT_PLUGIN, + priority: 90, + RenderWidget: () => ( +

    🌚

    + ), + }, + }, + ] + }, + }, +} + +export default config; +``` diff --git a/src/plugin-slots/LearningUserMenuSlot/images/learning_user_menu_custom_component.png b/src/plugin-slots/LearningUserMenuSlot/images/learning_user_menu_custom_component.png new file mode 100644 index 0000000000000000000000000000000000000000..09bfd24e2b1451438d8981ec8239b36d6059ff0c GIT binary patch literal 7642 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 KKUaw8eg7Y2*%EaC literal 0 HcmV?d00001 diff --git a/src/plugin-slots/LearningUserMenuSlot/index.jsx b/src/plugin-slots/LearningUserMenuSlot/index.jsx new file mode 100644 index 0000000..b78e3ae --- /dev/null +++ b/src/plugin-slots/LearningUserMenuSlot/index.jsx @@ -0,0 +1,20 @@ +import React from 'react'; +import { PluginSlot } from '@openedx/frontend-plugin-framework'; +import LearningHeaderUserMenuItems, { learningHeaderUserMenuDataShape } from '../../learning-header/LearningHeaderUserMenuItems'; + +const LearningUserMenuSlot = ({ + items, +}) => ( + + + +); + +LearningUserMenuSlot.propTypes = learningHeaderUserMenuDataShape; + +export default LearningUserMenuSlot; diff --git a/src/plugin-slots/LogoSlot/index.jsx b/src/plugin-slots/LogoSlot/index.jsx index 0f61e84..42f9262 100644 --- a/src/plugin-slots/LogoSlot/index.jsx +++ b/src/plugin-slots/LogoSlot/index.jsx @@ -1,7 +1,6 @@ import React from 'react'; -import PropTypes from 'prop-types'; import { PluginSlot } from '@openedx/frontend-plugin-framework'; -import Logo from '../../Logo'; +import Logo, { logoDataShape } from '../../Logo'; const LogoSlot = ({ href, src, alt, ...attributes @@ -16,10 +15,6 @@ const LogoSlot = ({ ); -LogoSlot.propTypes = { - href: PropTypes.string.isRequired, - src: PropTypes.string.isRequired, - alt: PropTypes.string.isRequired, -}; +LogoSlot.propTypes = logoDataShape; export default LogoSlot; diff --git a/src/plugin-slots/MobileHeaderSlot/README.md b/src/plugin-slots/MobileHeaderSlot/README.md new file mode 100644 index 0000000..566f470 --- /dev/null +++ b/src/plugin-slots/MobileHeaderSlot/README.md @@ -0,0 +1,41 @@ +# Mobile Header Slot + +### Slot ID: `mobile_header_slot` + +## Description + +This slot is used to replace/modify/hide the entire mobile header. + +## Examples + +### Custom Component + +The following `env.config.jsx` will replace the mobile header entirely (in this case with a centered πŸ—ΊοΈ `h1`) + +![Screenshot of custom component](./images/mobile_header_custom_component.png) + +```jsx +import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const config = { + pluginSlots: { + mobile_header_slot: { + keepDefault: false, + plugins: [ + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_mobile_header_component', + type: DIRECT_PLUGIN, + RenderWidget: () => ( +

    πŸ—ΊοΈ

    + ), + }, + }, + ] + } + }, +} + +export default config; +``` \ No newline at end of file diff --git a/src/plugin-slots/MobileHeaderSlot/images/mobile_header_custom_component.png b/src/plugin-slots/MobileHeaderSlot/images/mobile_header_custom_component.png new file mode 100644 index 0000000000000000000000000000000000000000..df026339c70a1463407ef9940214be506077a405 GIT binary patch literal 15830 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 Aq5uE@ literal 0 HcmV?d00001 diff --git a/src/plugin-slots/MobileHeaderSlot/index.jsx b/src/plugin-slots/MobileHeaderSlot/index.jsx new file mode 100644 index 0000000..b0b6c38 --- /dev/null +++ b/src/plugin-slots/MobileHeaderSlot/index.jsx @@ -0,0 +1,20 @@ +import React from 'react'; +import { PluginSlot } from '@openedx/frontend-plugin-framework'; +import MobileHeader, { mobileHeaderDataShape } from '../../mobile-header/MobileHeader'; + +const MobileHeaderSlot = ({ + props, +}) => ( + + + +); + +MobileHeaderSlot.propTypes = mobileHeaderDataShape; + +export default MobileHeaderSlot; diff --git a/src/plugin-slots/MobileLoggedOutItemsSlot/README.md b/src/plugin-slots/MobileLoggedOutItemsSlot/README.md new file mode 100644 index 0000000..ffa8dd6 --- /dev/null +++ b/src/plugin-slots/MobileLoggedOutItemsSlot/README.md @@ -0,0 +1,134 @@ +# Mobile Logged Out Items Slot + +### Slot ID: `mobile_logged_out_items_slot` + +## Description + +This slot is used to replace/modify/hide the mobile user menu when logged out. + +## Examples + +### Modify Items + +The following `env.config.jsx` will modify the items in mobile user menu when logged out. + +![Screenshot of modified items](./images/mobile_logged_out_items_modify_items.png) + +```jsx +import { PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const modifyLoggedOutItems = ( widget ) => { + widget.content.items = [ + { + type: 'item', + href: 'https://openedx.org/', + content: 'openedx.org', + }, + { + type: 'item', + href: 'https://docs.openedx.org/en/latest/', + content: 'Documentation', + }, + { + type: 'item', + href: 'https://discuss.openedx.org/', + content: 'Forums', + } + ]; + return widget; +}; + +const config = { + pluginSlots: { + mobile_logged_out_items_slot: { + keepDefault: true, + plugins: [ + { + op: PLUGIN_OPERATIONS.Modify, + widgetId: 'default_contents', + fn: modifyLoggedOutItems, + }, + ] + }, + }, +} + +export default config; +``` + +### Replace Items with Custom Component + +The following `env.config.jsx` will replace the items in mobile user menu when logged out entirely (in this case with a centered πŸ—ΊοΈ `h1`) + +![Screenshot of custom component](./images/mobile_logged_out_items_custom_component.png) + +```jsx +import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const config = { + pluginSlots: { + mobile_logged_out_items_slot: { + keepDefault: false, + plugins: [ + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_logged_out_items_component', + type: DIRECT_PLUGIN, + RenderWidget: () => ( +

    πŸ—ΊοΈ

    + ), + }, + }, + ] + }, + }, +} + +export default config; +``` + +### Add Custom Components before and after Items + +The following `env.config.jsx` will place custom components before and after the items in mobile user menu when logged out (in this case centered `h1`s with 🌞 and 🌚). + +![Screenshot of custom components before and after](./images/mobile_logged_out_items_custom_components_before_after.png) + +```jsx +import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const config = { + pluginSlots: { + mobile_logged_out_items_slot: { + keepDefault: true, + plugins: [ + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_before_logged_out_items_component', + type: DIRECT_PLUGIN, + priority: 10, + RenderWidget: () => ( +

    🌞

    + ), + }, + }, + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_after_logged_out_items_component', + type: DIRECT_PLUGIN, + priority: 90, + RenderWidget: () => ( +

    🌚

    + ), + }, + }, + ] + }, + }, +} + +export default config; +``` + diff --git a/src/plugin-slots/MobileLoggedOutItemsSlot/images/mobile_logged_out_items_custom_component.png b/src/plugin-slots/MobileLoggedOutItemsSlot/images/mobile_logged_out_items_custom_component.png new file mode 100644 index 0000000000000000000000000000000000000000..a6f3ba1bc7e8cf23b3b6cfde3f630f30a51fb9c0 GIT binary patch literal 5701 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 LP=Lvqe*C`xQdUfe literal 0 HcmV?d00001 diff --git a/src/plugin-slots/MobileLoggedOutItemsSlot/images/mobile_logged_out_items_modify_items.png b/src/plugin-slots/MobileLoggedOutItemsSlot/images/mobile_logged_out_items_modify_items.png new file mode 100644 index 0000000000000000000000000000000000000000..36b0527f878daa562be6609abbdc8c97df069f72 GIT binary patch literal 10042 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 Vn@&E?lwe;QBqON+FA>-G`#)e%DZBsx literal 0 HcmV?d00001 diff --git a/src/plugin-slots/MobileLoggedOutItemsSlot/index.jsx b/src/plugin-slots/MobileLoggedOutItemsSlot/index.jsx new file mode 100644 index 0000000..490dda0 --- /dev/null +++ b/src/plugin-slots/MobileLoggedOutItemsSlot/index.jsx @@ -0,0 +1,22 @@ +import React from 'react'; +import { PluginSlot } from '@openedx/frontend-plugin-framework'; +import MobileLoggedOutItems, { mobileHeaderLoggedOutItemsDataShape } from '../../mobile-header/MobileLoggedOutItems'; + +const MobileLoggedOutItemsSlot = ({ + items, +}) => ( + + + +); + +MobileLoggedOutItemsSlot.propTypes = { + items: mobileHeaderLoggedOutItemsDataShape, +}; + +export default MobileLoggedOutItemsSlot; diff --git a/src/plugin-slots/MobileMainMenuSlot/README.md b/src/plugin-slots/MobileMainMenuSlot/README.md new file mode 100644 index 0000000..5eebd7b --- /dev/null +++ b/src/plugin-slots/MobileMainMenuSlot/README.md @@ -0,0 +1,134 @@ +# Mobile Main Menu Slot + +### Slot ID: `mobile_main_menu_slot` + +## Description + +This slot is used to replace/modify/hide the mobile main menu. + +## Examples + +### Modify Items + +The following `env.config.jsx` will modify the items in the mobile main menu. + +![Screenshot of modified items](./images/mobile_main_menu_modify_items.png) + +```jsx +import { PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const modifyMainMenu = ( widget ) => { + widget.content.menu = [ + { + type: 'item', + href: 'https://openedx.org/', + content: 'openedx.org', + }, + { + type: 'item', + href: 'https://docs.openedx.org/en/latest/', + content: 'Documentation', + }, + { + type: 'item', + href: 'https://discuss.openedx.org/', + content: 'Forums', + } + ]; + return widget; +}; + +const config = { + pluginSlots: { + mobile_main_menu_slot: { + keepDefault: true, + plugins: [ + { + op: PLUGIN_OPERATIONS.Modify, + widgetId: 'default_contents', + fn: modifyMainMenu, + }, + ] + }, + }, +} + +export default config; +``` + +### Replace Menu with Custom Component + +The following `env.config.jsx` will replace the mobile main menu entirely (in this case with a centered πŸ—ΊοΈ `h1`) + +![Screenshot of custom component](./images/mobile_main_menu_custom_component.png) + +```jsx +import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const config = { + pluginSlots: { + mobile_main_menu_slot: { + keepDefault: false, + plugins: [ + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_main_menu_component', + type: DIRECT_PLUGIN, + RenderWidget: () => ( +

    πŸ—ΊοΈ

    + ), + }, + }, + ] + }, + }, +} + +export default config; +``` + +### Add Custom Components before and after Menu + +The following `env.config.jsx` will place custom components before and after the mobile main menu (in this case centered `h1`s with 🌞 and 🌚). + +![Screenshot of custom components before and after](./images/mobile_main_menu_custom_components_before_after.png) + +```jsx +import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const config = { + pluginSlots: { + mobile_main_menu_slot: { + keepDefault: true, + plugins: [ + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_before_main_menu_component', + type: DIRECT_PLUGIN, + priority: 10, + RenderWidget: () => ( +

    🌞

    + ), + }, + }, + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_after_main_menu_component', + type: DIRECT_PLUGIN, + priority: 90, + RenderWidget: () => ( +

    🌚

    + ), + }, + }, + ] + }, + }, +} + +export default config; +``` + diff --git a/src/plugin-slots/MobileMainMenuSlot/images/mobile_main_menu_custom_component.png b/src/plugin-slots/MobileMainMenuSlot/images/mobile_main_menu_custom_component.png new file mode 100644 index 0000000000000000000000000000000000000000..00c82a7871c5deb32111eca891ee1af46633d2dc GIT binary patch literal 8549 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 ND9WkI7Rs2s{9nrjhqwR$ literal 0 HcmV?d00001 diff --git a/src/plugin-slots/MobileMainMenuSlot/images/mobile_main_menu_modify_items.png b/src/plugin-slots/MobileMainMenuSlot/images/mobile_main_menu_modify_items.png new file mode 100644 index 0000000000000000000000000000000000000000..0f2e75bad71812831aa3c644aa6b9dadeb8786b9 GIT binary patch literal 9200 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 S z$84ms12eE|FqkC|1#9210-=i+Ew+{?#>dAOfgBQEyr6>eIoL`$VAoUbM>hiN#A>Qz;UUtEmuP>wjsl+`D%#w0LCtIgg^3%C*cQ_e{F{T;-w0D8VJK3hr!f zU@inTBTowumfWDJ9bmLUF^V1dbL!akPT#X?6iHV8vsVSh^E5J7$ zl9wYB6I%pRe7aKi{>fVW0s;ZRm9ZekOH1{<(sp{fy4BrTdRxt=`xKH|9};DpQVsqS z%R9BVdvb?HvFr|8_f#{w3ne0RAS zQnPpEtR01Cz7`g~-QD$hZ*#8!Bvt6b z1zWLH$9&oofG|`ZYrpgbX4i%sq|?-1n?W!vwt;TGg!^LE%3;->tOblgPJ|ehHc#s) zuAL<93~wMxAY&y*abz+6@%(TYr*t?u04`gYPF1YrH!}|GXR#JZJNbXH7Ez&;m4@om zr%$Jqlq&nbHR!#J(aHGuQB|AEU5X$HNQQ{NKkPd01Xu|M<_yS#_!|Z)3b0=MXMv-z^>+589u;pN)t`oeR+eZ-$W7FzIOE^t&XNyyu>bD~%Krx6$o>mx6wMPJ z*92nY;|Dr}jx%G=yU7faFbBTmK7%SQCQgcS^j@&9L!hDg~1aT#{Z;b^?6U zpTegR_x}x2xE5gdAZ-B+frvZu3#YxS&^nbII;R!=W3Q#vw#Bugv=XGgLY_eeU^6p* z0|Ntc^uQMA#1I|{$8kvnat1y2A&95i0q3%});so8=0Szm<@~CBIY^f2*+dckMRvWA z$9cjHKjr7wJK!j_J|sm(cJL4C=Ni83oqdf0o2}Tf%HN4cJN~oLTS5@787~Oxq&%AJCseILqIPiKcv?fO(t?KX#M0<8*&vM;qmy*#Vy2)4VTRvF}Z!) z-zFZM8t5y7P?8VqnBTXiA|$E^hgJHY$As0+OMXaBA8SxPVMeU_cajbOgC*nX!4l zY(`9sj5M8{opUx`LpBA!gP@`sjz$E2F#Kn?1ZYZwZke8b26Sj)gS?g9d&kzi;0z&T zu&t$q>UZ=*hac0f6u`C9L>v-MiYQOB(No+uG`t1&Mxyf%`W#XG?A`+i5=wJ$qBqbCu zq-b!3aK>lblW*D%bFv8n4<{d^!`=&)qd!Bqvu~=58_8O`%qx1YQ@scFtM&c$>lXsf zY{tTT;q=lb{!(#@g6FsEX}bhVIAn~AYb1{ZvO~}9>C8A-HYh&wVIP6#hDv%)VnH(_ zkXjJ%0URzyo!YSP|Mn7&UG8V1w1LUUfmMM$u-`bOT}irQa7^@|(#Nv^%~avNVKvj8 z6`Ror5wiS*lZr~&fb3Cpjc7x2a~jCx*2SwyW$XCokb!SKF>BBp=Y}S z_zDeZ49JJvB0x~VMaqAy1J;3(+#Fi)s|Tge%FoX%FHfuuWgT;s6VSMvm?6q}`&sSC^L=cm+B*kuL29!jo=trK?xa#iJnt@b!& zj1qVS+u}Vin1r(@RmPt`j?L9FLw|iFs;;VfIPh^~aeSaYE8LbZLvo^v=Dit5{yq*KN}sqBn6@E9=vvyu$iUJU6|} z7MpZ0M{;G@4)b^Zc;&ZnZh190_tefjkoLhYHrCg>9uGPZ9D7Zx1Pw#4I2)UJ0?Xf$5TgrF2d{j>io~CXEuQ}Y*IWqMI!}5zwi*o>7rv6-%YG+!E=62 zyPDyM=5!lRiHm=RCY%qMhQlG~?Sk78QonVMp$U>dIvOf+%GpIr2rSjZhqu9uo_OUs&SS-~bYUzZF1=8Q@>B}IJy+AaNgi(|p?~PCkEJXZ zL!!1dKEqPmZN@KLFG}hD2y<1dRgG1_2hw*Di|V%bjrDvDGtc!n$BfUt^b43_(@#Ca zG)kL)lQH2Yc*Wk$V+rH>$Sc1fe0!GcfPv>WW?L=~GZlT& S4gMMjaZ^=WCGXm!=l=nbrcQ?d literal 0 HcmV?d00001 diff --git a/src/plugin-slots/MobileMainMenuSlot/index.jsx b/src/plugin-slots/MobileMainMenuSlot/index.jsx new file mode 100644 index 0000000..b26cfc2 --- /dev/null +++ b/src/plugin-slots/MobileMainMenuSlot/index.jsx @@ -0,0 +1,22 @@ +import React from 'react'; +import { PluginSlot } from '@openedx/frontend-plugin-framework'; +import MobileHeaderMainMenu, { mobileHeaderMainMenuDataShape } from '../../mobile-header/MobileHeaderMainMenu'; + +const MobileMainMenuSlot = ({ + menu, +}) => ( + + + +); + +MobileMainMenuSlot.propTypes = { + menu: mobileHeaderMainMenuDataShape, +}; + +export default MobileMainMenuSlot; diff --git a/src/plugin-slots/MobileUserMenuSlot/README.md b/src/plugin-slots/MobileUserMenuSlot/README.md new file mode 100644 index 0000000..d75e08e --- /dev/null +++ b/src/plugin-slots/MobileUserMenuSlot/README.md @@ -0,0 +1,142 @@ +# Mobile User Menu Slot + +### Slot ID: `mobile_user_menu_slot` + +## Description + +This slot is used to replace/modify/hide the mobile user menu. + +## Examples + +### Modify Items + +The following `env.config.jsx` will modify the items in the mobile user menu. + +![Screenshot of modified items](./images/mobile_user_menu_modify_items.png) + +```jsx +import { PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const modifyUserMenu = ( widget ) => { + widget.content.menu = [ + { + items: [ + { + type: 'item', + href: 'https://openedx.org/', + content: 'openedx.org', + }, + { + type: 'item', + href: 'https://docs.openedx.org/en/latest/', + content: 'Documentation', + }, + ] + }, + { + items: [ + { + type: 'item', + href: 'https://discuss.openedx.org/', + content: 'Forums', + } + ] + } + ]; + return widget; +}; + +const config = { + pluginSlots: { + mobile_user_menu_slot: { + keepDefault: true, + plugins: [ + { + op: PLUGIN_OPERATIONS.Modify, + widgetId: 'default_contents', + fn: modifyUserMenu, + }, + ] + }, + }, +} + +export default config; +``` + +### Replace Menu with Custom Component + +The following `env.config.jsx` will replace the mobile main user entirely (in this case with a centered πŸ—ΊοΈ `h1`) + +![Screenshot of custom component](./images/mobile_user_menu_custom_component.png) + +```jsx +import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const config = { + pluginSlots: { + mobile_user_menu_slot: { + keepDefault: false, + plugins: [ + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_user_menu_component', + type: DIRECT_PLUGIN, + RenderWidget: () => ( +

    πŸ—ΊοΈ

    + ), + }, + }, + ] + }, + }, +} + +export default config; +``` + +### Add Custom Components before and after Menu + +The following `env.config.jsx` will place custom components before and after the mobile user menu (in this case centered `h1`s with 🌞 and 🌚). + +![Screenshot of custom components before and after](./images/mobile_user_menu_custom_components_before_after.png) + +```jsx +import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const config = { + pluginSlots: { + mobile_user_menu_slot: { + keepDefault: true, + plugins: [ + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_before_user_menu_component', + type: DIRECT_PLUGIN, + priority: 10, + RenderWidget: () => ( +

    🌞

    + ), + }, + }, + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_after_user_menu_component', + type: DIRECT_PLUGIN, + priority: 90, + RenderWidget: () => ( +

    🌚

    + ), + }, + }, + ] + }, + }, +} + +export default config; +``` + diff --git a/src/plugin-slots/MobileUserMenuSlot/images/mobile_user_menu_custom_component.png b/src/plugin-slots/MobileUserMenuSlot/images/mobile_user_menu_custom_component.png new file mode 100644 index 0000000000000000000000000000000000000000..c6c302ab1231e79c9fc4787f7935a342ca33cc5c GIT binary patch literal 7939 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 L8VY4{uS5R}6(++y literal 0 HcmV?d00001 diff --git a/src/plugin-slots/MobileUserMenuSlot/images/mobile_user_menu_custom_components_before_after.png b/src/plugin-slots/MobileUserMenuSlot/images/mobile_user_menu_custom_components_before_after.png new file mode 100644 index 0000000000000000000000000000000000000000..d635fb75bb1da1943c53a196b57b225e7885b9f5 GIT binary patch literal 13713 zcmd6OXH-*B7iH*3N0cHxB1Jlgbb^9np(!f8i%5siODGBg(gYMlx>S)GA#{*lA|Snn zDk3d(0)#R*-^{F;HGgJi&7Wbdzysd9@4kD^J!hZ2&x_R6)}W=jMg@UDXdgaMe+q#R zd4rEEB{}%Zlg~s6;0LMu-G|R8!B+s~%Lwp0o5wu^4?UMx9^RI48;Gs5i<6D0yEWX# z#@YR~i^mp8vkEwgpKy{I+{V(w&c&JMnVpjjL<=0~SbOkDN%Ba@Dac4GNXYU?Nl4ua z&JYCmMtwMv`Mr{jAKiS z_D%VG<F>a zM;#IIK!+{y!6-_-O5s$3|JY$IXtlw)3;9!(XAI6)oBq&wP;z~`Ox`(6CAal`AY=Tj z&GL@>#G^8;{Jk7RP=D9|z2XA1Ahny(YLW+o>TTz=! z=WidJ85R`iR*6JQPN15Kd&AeGBHK*HZ5CR?PSMS$)H^<>p*CvS40HHdT+PBec1lve zxxX3m{u!;NuX4L#etQRp$gZWD(kL54QevXJ*$is$XclJN2l5&kID(UsnAg_V zBk$)NHN|b=Arq(=8^h4Myt{jQJ$-$f18oUJrPT{f?kn2)I+@zHuH9gzfgge zCj97Eh?2DKocHDOKise!&ev+#A9^feT6bmK6I^Sv-1{k-LmsJLR_2;a)PqByT;}?} z$T$>!`?flC`}+N8i;anjKg-LW-vZ<~@(T+i($Y9Ej`w2+Q(et}yrLa9^B09An|iU$ z9rt^y+$#3ooa$)A&7y_N8i;=)ZP1^UeBp8HSzu@ZuDJg!Y~b06mNgZ>i zeRC4dGc{rqUU%*g<>lp3`K)FYEHwG!oK?El1%i(>W^o-j5tinyPny2#xH9>r(9q`IyF zfk2#PHA}vwp($OLLY#O&u(c~0)^8f?>b|79G^O+;3P}6zzI3i#W~Sp*_-N*0$c&o{ zf|(z+vTP$V(PH&91ABfZ-07wXL@hYP&6_tTs$I;Jt0OzC(lZMEF3xbn*Du$7&C3fT zp`gnWuNY$2QQ9FD6%{pc>$n=QENs47UJC96mL=hnu>MnheGOAnPIR*PO40Yy#qEVQ z&feLei!;r1g-<6Zei?x$t6ZabT}v}Dl86(A$y#@T>1vlPxbGZpSoE;pai%8z122DaL61T9bFxifns(J zr(H<4S9OBEfSqSOR%TSSRx{lMe5gx=UDlaH`qi(Wo~9^g%v6qo&`jQ((`>_WXvucY zanoGhZ5H`ZBV5@>s0)PtCNM-)dgE7;LLy z4`R^h=NY$_J18}@Rp);B>c1Bb0q7)A%-R<_JG<2vrs}~S*S{7P77iZ}3<_MVON3h` zKyL1+Q&s`#lVx zAt514FjdV=mGn1nh~K||U$fgQY*^>9>IP$Y)54=#eI7WyKFCLYvXtC3l+Gyn`$u!5 zkCL|Fl{NUWfyjM14(#E2w|UtmCjQ*ALY3LkLbY(ZW!dIqtz=xvHBYp3@D*EOj3ass=-d&_Lre@hvB8a*B>fxQh*m9!h;yC2Q!_Urbyz*B0mnyl%A z!H>;DTU1n3bP*yyXZF!-R0(yU|zQgA`;nU zHR$)Eq6pxi0egKjp5vybbw++moiQ_RU7UnpS*?%e-_jeP9NARk1Q^zzpc~6Bjz+^T z#!DI+8jRJL+ZJ4tHGZY}{!PK0_{XS2O~r&0E>n{F%!g1MjR&3SH=S*|NWbi6INvXT zdHTb2U}v{%GZD8P#)^sN{pavzaVy?igT)`HyjLFs7u*rsm6EnzrHJjcOO5duC1;8kM$R3mkfDj zs-ySwBAEod96TPab+U8kmzS3t<2^YvWOqJrQIirEo77&;>T02jbPyFmFXknit&N(d zjI4;Ai7`-0Sa(J{Bd-7I?^m((?Q%Ps=u#OgK_q?pw0b*WNVp)~>l)Z{CS|xE9;-w9 zm=3>3K|NAD(QMN1c9y!lYa5)V1sp%=WGK}dUw7Nx-R7Fd!_P6ee-Gt-bJO2{ zb$6eWbAh#&uq0;U*R%i|7c6V!)RfWUj$G-wl_7J8YOtxD^M8BJjaS}NodAKl@MBhN40sHMoS(wWoF!*LOF4Ct?H^=j%0{b zA5wGFgNdSBS#t&@cJbY@tmC+Fo$e-3kMZDx8AdUZ%!^ig}wOp*$GB%7Rr!L+xYc=zx zJX{b<$@8Rsb%DzY+_^->rnz}xQ4|;vxvBJAhDko}3O3=1CfX~a%E}ADWHh(lpu1#T zj;m*IXt~8%5Z%pF;F=t5CF9)wzDo76%&Ruf-$!0u#I!C}v+4ArG6ogQ8#&`qFDb+7 zUnX5==jGB;GNQLe&0Gq6Y-M`N@M&VLtkG>^9kh+a}%e=*^zToW_zZ_pHO zGihPWIvp}~^@HL!Czu(@h*G3EjwWf8GOt?o(6`|9!#zKObv0&XbPs}fU&P4oUbOXZ zsh;03xF^lC(0*S0z2s-C0)4 z0infoH*v6n(6ZLEJ@;v>f3roeLbFlDC)$XAJ!r~T1kNA60r!L!y7BC<&nPydKj~H3-Bf z`4>IrpA=1Wu42F3=anFOsE)=UH^Db=iC79R2-2Mif%Ozu`{O|wr&+mukNi?hQhbPT zAj6k)7JGdQd-ISnHG>NN?VKaEF8RM;ajuCW19r z9FETBuN>g&Zwv{A)zc`2SQRhetiQm*uTIZe8st=n6kAX>7iDU5riGg$RQXqm}%|?#5PVP z4Fc<$ImKfmJ9gL?e-oS62T*_aPQKi8aMb=sjngYpwm34s$T4=K&*s4$&g4wtFNVY-oVLZ0 zMUm1h$BvzB^$oXlO^H`{3S~6?EaO{FXoV^BhijeK#DC+s8TDjMj4%TRVIQZTn+#ku zM7)k-wu$+Rmw@;kIMYH@3!U*1U#a3F)0~%N)3=?9`}1G9yD5z9-M>W~`3r>QrP3N^;ZELn8?K>|3Hn+50+iPo|HL|3 zJ|(f4GEF7@pjaGfA*Wp_6wSHcBld6xK7efLdE}f-6Nu&=^wSBef0(DjfC-=6w=0%D zXWA80x*9GvB)kT8Y>$s_GYtwsXGQT7DVda>_7Zg__f}QHXZkXi2-oBN6Ja^^(Re?@nOx|LPgp zYW}lTE!NK2iIS+h2lxal29PhYilmBojM1EN8a)kw28K8FQfY{~{OO z23#{HKHY0@;x_x_<^G#5VQzj4PoCs0@M7n*N!}zrQFTF#M8{FK(y^8F5f5cjkes}W zCj3pAmng13S}+EVFHS#o>|tdt;d-}H(3EwJI5t~CpnuMMkErc^4!0SL@bMRIi16pA zOUu?|)Y&%5?J%O2_(qr+7#OeuKW(fSrZdxM;Vk)q$}id!3XMrBPUt6@uNiZqHhOHl zwQiS4hHrd87xIdx$rr_^iEOo*!%RrS^dyeCLmJ#GkX@>;)vYqT6~F7yJ^Axe&ZYMj zh#PmSgy&AJ>06*tS2)_8?|HTVT0E`=t{(F7C*ebZSJg%^Qwwk1?X z#I;EMcql^{_!&Zrt>n(=D3cEzo8#kMr&xGQ(k9H|bEI#MJO^&@7c#QFywz_?9+y8Z z87TTfLfEZs?YBX3fy0_} zEsJXxZ$5eVd{cN7uL5B2owkwY;O8E+FIqGy6;P-j{xpOo!cmP&y{#_W3d|es+@(RpWiu6a; zQKD<-1(`s#b%?4;+K%8Av*=5&?)1x_={<>0)Lal_>v*3Q`$?M1;g9Uker&@ByGZ1$j>^@b%R>?jd2rq+GI07 zAyBfcmo=-LO+leU6bl)I68e73wNHV8N86TwqOm*Q4u@G7GJDSAkUsX+n#bLBPxGA2&JN?u3gPf zH9)?+gmQ8R^&xk)ik6lZIHlZa`Zk162tL<0y%!jG-s4BDu71+@5SFa~s2C$-V?bCz ziVZ5>Torz?{gZ^g+!<5n@i<_-)O5yc+DQq&@dGeOdb+wlhw>iRZlb0q>O6%ZfDz%4 zhm!^ay5h<6=V6lX-oK|x5;gXkQF!+J`A&y;V7x$PK*G$737{iEO>cX&$kP14#%B3p zAceZRc4OigoWj*K8CX)!$mo$AhjxPn&rd*Qbj{Sd6CPv8hCA@c5*Tu~`})U^A0gY5 z1A$4?F3ss=)Xdwz)#!Ip1_Iulo(7;CCtFuw7rvd*Y{PkegtKqS$m~R!pF+<>EzVDm z1J3s{S8QQ;wu|$vi`i-lG3e01iO7tesOy6?U1gtbo&goS2p+e!(yzFsS@uID%10>! z`=02vqvOl7lY?JhWP~|4AY^1@nyI&ARx*P!024ywEpn3=lXbAK~`4Quvls-tAd9h@WqCMG2^b{=^8g{zt_2d zI%i{8a5iM#``ZVY1kTgl_|>ZvkbynGes&^7dV71z zH=FQq%joR7x@!-jCmyC3UuEp!ThU6n?P`P-id~WjINDA`x}cHZ@%}xWtd8hbmEt)8 znnAA1|Bws*C*|P(i$k&#xNRqElDK*77XH^~$+s2~6Up@~jPYV?!>;Dl&YZB*1^Nn+ zC|9{(`>VrvIF975mKJUE`9WDN9$SyEzX^qQjTT^}qL@Xk0KuQ;Ic6wg)=(qvt!&{q zQ67?P9$4G_ofitfix`8$JpM6!*Dw3)o{8s}oSalT-EP~MZA=}^(csoQ1l+ZVAu=>w z(K{hE75!02ujXhms@^oesVM_Q36-OHl4!|jF6I9)-$O$~9w{ps{;_}wDmMI~;D|rn z8(^X&9YV8+n`ypy!3@NSr7#vVi)ob8pFe+GL4bs}kg-6@1CHTa4UIt^pkWi-T7&0X^V}j zZZ;Oz)~0~u-e}kqshbJbwPY%{oZaWz%Ob~&U`h45z8hCoK zgM$N%N-S`&jmaOw13!>RLbjry=h`@I0*2Ac48?!F7bPer_G)e9+o}x+s49R-TX(gp zLLx6)(-4l!5nf)m6Zy3O@7Mg;=5TYGLe zUjMHnm(|gd3`g+ zKdpJYdXz^+(7b4*!vSkrM=t|orz>;xO;wEAj)aF^YnP{crWu}CQk~8Ygs^0t8y6U(knPv z9|vjo0~UEHybUDVT(y+m-beQK_I?2~=?H^}2pYadD%|t$FP@m25By4zjx+uXl%uZ| z74ZNckfD*ErETf9nlDrUt1sw}!`c7=2}*FP1~T6*!U)z#u}x!s~;QE6dA_G4~BYSo!qn z(|^)L&)9e86ri=mCnmPtNH&4bNU@lDFoNU>qR3~k6(zi}CID^tu6--;Ih?d5Vpa4K znL9tM77`O9|MxUS-u*8_T$f>uE3b~qF&_l5@H23alfE zKxeTw+BXFfCJn*6$D7YRd(mj$)19vRMta8h#6GFBkuIRf0=)_Z4G-4c35-<6$`eyl zAdvzQfD@Pd8epovzCIc@DL%wdRRKsW!11qKz3S=rR9`(8mM&{!bOA`*h%^q66!MP= zYH|Gkq89&u5%be`UE}WOsOJpoogtynpy$MhsvHFVu)=H8h>lB%Qq|Iu7wo3RU(y2` zx>#)e;ae6t2;|B#p%-AQ(~TqWbcq```q&%YguojBTY|mXj&cI|u?DCNf}*0E$tPe9 zXd3Cft!b#4MdpuJG6i6;%qKbb7v$*hhnq_Uurnd|R) zw?4?_^ve4TWevMj|4FE>ki)IHxD{VQYEs;4kTxB_0!4WN7*B?Pm(BH!)pIonz#Lo< z1m=~Z=q*+~>n9wdYL(o{dVbUeBf#xIpjNsA^_JN6csUt&c%#10(-hl?GXrX4?}`de z-nnLh9K?3WYdgDzZv`2P)y-$3z(Y>~FmFfIj~iE6wvn3!9@_xp(y)S^AHyz7OaLPu z0+4ivLs?^I{B@0* z^OJQV1CSg*!9YNXEM`6-PSYsDCID%xn~cT8wN*g{)FY0Q$S?we1%B>fz!Irm17I#C zDY4S|(UOQ!WyE@Ey;!5E;1#Q}Vna?8L29`~N(=yK)G|6*@5z&p^*W`UcBYTX$v8B{ z=ZFXXjVjq+*1nrH2OUeM6D`tq~YivNFk^uS#7^L%E zAsz$M_5bNfBm|D3L)gXf061D&2qH}F!5;a;>_G+T-kE+(79pfKFCvT zMbE$2fWD3T%9x1mp0RaT@tZdn1z^XQnveTj465v}27#i0NKjbV8e}1YfCa*cN1c(PEJ#I1`CvqHxott>hwXqiY@oN7ko;B|71HJ5e<(XyLBR#vH+UZv zCE4i;s=t^F#`rrWI-Rxjpj9B~q#$S!$ZUVJ!?_m6j9qL1z$ZjOMQlyZa49VhXYaRo zVIcsVfIYeO0=qx(cBO65kiTuWs#qEmRa9gT_E9>|?ux&es4#gGDrIo6dQTISo<9au zQrTS^;wiWTKA4{_vVh8HyZd_Fd>vMDS zHQ2g!0?3G6(ls^Jx_6JvVZ3zt9lP^`>Y-`s@V0R372fJtkjXUa~^C3?8 za6*>3E54v!f;iW$@^{9tcY)r6zNVsC z$pcbBA)ywxG^V7ova$jI1_A8i@ILid;wk`u=j+$6fhmd_>U_&ULOBVn)HF0?118&m zmtSDLo0kB-?7*FQl)HeK2by0bEL%gHiouv7!ov997UAkq2+*e^&`>VKO7qmjq}YNb zo+x`D|8(;kXhTROV1m;n*!gu3N_hc=LBPlW;Hw;b(>d@yP**3^j4$ zaNi(neGwh<`x?X6#zbFiuYHmIx}9ANG2njUT_YB5ghh*sTklRhNxNP7aroV*%a_7W zY7e1^$9uKttQGt_TQlFp_p-AKx`^wd6+TvBHlBXdYSuJ-+~8u~u-ac~Cyb@3x5=i* zoG#mJ5BDj&)OCpL^f^cuJ@qW#vT&@@7DZiy?=(zPbiU;!V5$fuNdb**>97(+ zGPhFg=bCj(3Szm~w@!*ZFY3db1dOmKn;R!H4^K58hbfRR;UfuCLJYLw8a=vg$w+4K z)#LC%d8U)C;Cp_mINeWo+F09!U7EY-GXk=$%N2z0)2z*SDwhJaS`=b}^Dazv}uhzLWI-P3ZLDvG-jS)7H_C~m;c8EXk&y2FaG4>lvSE7gfS{O z8!gy0+L-tz0Shdbl^OZrJo?CgY3Y+R{h;TIr>ReHGTXQ6((! zv$>I9=U?h_l2Gd~9TWdY!!3_y5$BQZSBNvHRWbddm0YEkLmR2V?PR)IvmuENK@{=OXeidS#1#$_sv&px9uav_j#T+>{(iJ*994krfxbZ$b^0jLQi zslZ~n2ET4Fdsn0{T||;|q;5R;;3}bh{<)&k%!@>3TK4jzQ?}NDN-@I+MoZvcn!z=`4!J;E_*GG$-7Yn_A0(9 z*EKn$=h3WWHWGs~hq-VyoGT#DGsU>@EF$ z?D7V+aq&z28^1TDtai!Lf_85Fv9)E4>#}=o*MVx;Gr4A3T|!scN4AAO|K=~Q?x%{t zN@eBUmD#D!%t#+(6ZFV9zB6 zxCls^B|CC%107nZDLp+>0kg#YEmTR6f>b$St&?mFSDoYc`(zT_%jz?DnQ^XZa!F1L zzACX!3+!sz-CvtzD&j_B5KAuE?-?#zU%LWpBYlET*g zfJtdfqr&L~3bH=5QP4B=^xtT%;o}_2VDIwguo5%q?7%6RjCXi4!OosVVQ@PL`XvDs z1FAiEcRv+wss8%z!ibw7$x};by0BV#$f_9QlCP5~UsI-1MM}*LGo_4wK`upQOPCwY z1%B&_t74yAUxa4obbc^@`kp9YZs})I^(69C$cTMyXGX4~Mq}o{wXr>113xagx)RAK zl}G0LXN{PjZJr<&3n>c!I(pJJiLAdocQnxy=W=Y2G42%~pUe^a+INEQ)g{-vjOC)J zXG%S>uoYc}Kq=oG0R|e4i0a#JFUMcldpWj7p>*M$@)Iq^>Ywpk87q0sY`I$nYxtvl z(RrfIIF9>rh5vo&iiHa@x)#UBa>Kcdk}^L7{8J$!u3WA8K89#|A$rxlP#GajG3TFH zq~(GPIy0Z@C4KXU78Zm20eduP#{_x16QBfR+%VhyI}y0+yZCA{a#?5?rf~eMi59B- z71)3Mx^1-OZq17D8WviG8|nZjqL=K7=3s2wGdF5ZIN=+k)X$SX;%V+zxeB)1iZ$23=IB6HLYtCTx_8CB(ma+xZBC{ByG=ATAe&fc(!Z4b`1U2n+G_; z9y1Em4iz`^XIpr1TNPvK||Sp%9kGYY;jl`d>>v`)(R?D8w$1pVY#yh^Ti{uh)Ocj89#Ku_O-OW7%@UcXXf z^DJ?^Ge{R%5-SPR6BW(xWap-}D{JK?$wEN;f83H>6N!+ z7CM(88kmtO?b!$Qo8;Wz6b1A6iQl49ZSXx$q?=X>3gmwxDaqfyT>0yE9y)xy;;a9G zy=Sd@iFvhjFJBYPaQ-Rci1On2SCr#yZQS3#%!?%@K0VWaJZs!g7_9RngUx&fZHcCb z^x>LSBSgd@JlVw}&`HLAMeAGMrm(kPXEyYLK(`!d-@hYt&HMOX$IWx39R)3|mO4R5 z{JI(lf9+7hjYw5`oeGKevPmcOcxuXB&gKyhj}nMmNfH(tBDItf1Puef-`8`odv7ku z3hV0`>gj+t6qsW!$JN*D_!!U0=c;i$n3Em=4W0t3JPdrSk4XJryolIETAh2HJnQFD zPRm;I*zJXqWP-%hc#_YYROX*tHSP7pw=m@M{~ zk?JhbPSbKk;l;WUmzHfzq24X_J{s&MDqW&*);1XC@a-& zUF-0~pz1rk<0Z-GaNq?Jpouu4j;hO7J=jG5!=V&0D|_V`Ic3Wk;F^!VP9kwAq5z41z1I=BPydeHbiC?hnUGF!KB zS`>E$jU1v61}^dMNx2$y29W2hYGC%PG>5NYfdA}!dOQj0k;5q$+y$ikQtJ~OKl>VZ QT?+E>p0;}FU5hvW1^TH?#sB~S literal 0 HcmV?d00001 diff --git a/src/plugin-slots/MobileUserMenuSlot/images/mobile_user_menu_modify_items.png b/src/plugin-slots/MobileUserMenuSlot/images/mobile_user_menu_modify_items.png new file mode 100644 index 0000000000000000000000000000000000000000..33d068fafad375711b1e0af0472c448bf07f464d GIT binary patch literal 9173 zcmb`NcTg1EmhBr60|J7AfFx}ML?ma4Dp3gnl5+;3$vLY?7DQCCC|M9ta&8q#lEfxA zL2_(zj&fa_d);b;jNJXBM_$o01fgn{>kWoh<2t48E zu5)ML|72XT@C(Fg*L#YO&%u9w=PbhD-?VPBI&K<{R&JiAE|v&u2S=18r>nV(rKN+b zjicKNAzBh1#EO5=eHTkpH(N)CYmaSFmI!6|LDk&t8Xxa99+5kOymth6uJQ5k3CJTU z^$>__2t}E@kG)cGBffr*r&F8Px)Kk9rO%!JNG?NaC_}RUgqcbp>vZhmDfI!$1w9T; zud*l3YW?LCmWJ*e+fN8T=c}V?7SdZ7PM!LbF3Vi$f|ffUa*n{|sX;>f^b(V^)#Xbj ztcm0z0b|@0GwrVL_nZ^_W)o+{U7K2}ZA%sJXP*xtNEkm^a8yTs8fW?;{8E9Cg2I*^ z^I5g`MD=k-w`2C+G*iP#nx|aG5LNfU@g-4@6JKjVBfUM+EPi^ z`p8NEb!f(x`Lde1E7h`#Gso@Q7PFnHZ{EHg-#Ivc`V>vb(}wYH(=Od*cG`t?+j@U6 z7=qk_f~?}=OKDy5Hz|>n!~`ZKgYfS0ZL&EksR~L;_Fd?A22*-;%V#e#TFm|axa%jG zqQYk06m^}AEi}KVK8d5S@|g)w%WPU;XJ@LIE;>LWU#kE~e(qI5LQA##;@n_~bv~o< zI2U!+qnkgU5}q9>w!F|B!xZx*jZwnqRc!3t=4ghDCo3K`iYhAE_e06{i)n4s1;^_x z+paXdq&xeqLwKy6zf0V8^b6OmTNBn&2eg3)*fE4oosVE*Vj^eZU3h5*^jKH6a`Hg6 zyIs!#tk6%ADa3TO!!aOkw9Z$aVL(w)F*7^+*59nycOeHK?}yR|*pMUmtvjclo@EU4 zF~$gZFMP_`?K(MBwHKlzA|i5I8Lg9bkGh(SE$-zT7wz&ox^!N@++J7dyOF+rWY;X= zLZC>w{os$8j^vC{baCl3pxRU)TP5rmL25P!RWQKIL@z{7_R_r6~YkhZd7g@q1# z&!(n`I3r!qrZnRFa~Z?_J0rpOt~=E4Sv~u161mtt$WnC^ezCr>A?mm5)N|0&+bigs zzJO7cdihx)Ob&(Ol#gMQbu`NoH1eLNdSYisE9ob)GZq+_aq!^bLt0+5(~Ert8MU=3 z>+3FkpLH8rVwpeX=GydZcgr(PhtN5EC@y~e;sSMf?z<~RuENUvg=iTvM)4Lnk#q+p z;ulEf?U|*4ug`z|`jvYi=Dt8FC@82_L2cWzva_)}858&F)whx^N$k{d&U>GTKY#wP zVjn(uup4u-8zYBZ@(}Bi*r6v2eICl_liQf#`EodGgy`pGTZ*s-DQ`>FLEC2s;dW_4)S~8IM`$!|u}x+0#6g4)Q

    }S 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 J;XRXQ{|0T4L`eVu literal 0 HcmV?d00001 diff --git a/src/plugin-slots/MobileUserMenuSlot/index.jsx b/src/plugin-slots/MobileUserMenuSlot/index.jsx new file mode 100644 index 0000000..51f48bf --- /dev/null +++ b/src/plugin-slots/MobileUserMenuSlot/index.jsx @@ -0,0 +1,22 @@ +import React from 'react'; +import { PluginSlot } from '@openedx/frontend-plugin-framework'; +import MobileHeaderUserMenu, { mobileHeaderUserMenuDataShape } from '../../mobile-header/MobileHeaderUserMenu'; + +const MobileUserMenuSlot = ({ + menu, +}) => ( + + + +); + +MobileUserMenuSlot.propTypes = { + menu: mobileHeaderUserMenuDataShape, +}; + +export default MobileUserMenuSlot; diff --git a/src/plugin-slots/README.md b/src/plugin-slots/README.md index a7cc56b..12071fb 100644 --- a/src/plugin-slots/README.md +++ b/src/plugin-slots/README.md @@ -1,3 +1,15 @@ # `frontend-component-header` Plugin Slots * [`logo_slot`](./LogoSlot/) +* [`desktop_main_menu_slot`](./DesktopMainMenuSlot/) +* [`desktop_secondary_menu_slot`](./DesktopSecondaryMenuSlot/) +* [`mobile_main_menu_slot`](./MobileMainMenuSlot/) +* [`course_info_slot`](./CourseInfoSlot/) +* [`learning_help_slot`](./LearningHelpSlot/) +* [`desktop_logged_out_items_slot`](./DesktopLoggedOutItemsSlot/) +* [`mobile_logged_out_items_slot`](./MobileLoggedOutItemsSlot/) +* [`mobile_user_menu_slot`](./MobileUserMenuSlot/) +* [`desktop_user_menu_slot`](./DesktopUserMenuSlot/) +* [`learning_user_menu_slot`](./LearningUserMenuSlot/) +* [`learning_logged_out_items_slot`](./LearningLoggedOutItemsSlot/) +* [`desktop_header_slot`](./DesktopHeaderSlot/)