import React from 'react'; import PropTypes from 'prop-types'; import { useIntl } from '@edx/frontend-platform/i18n'; import { getConfig } from '@edx/frontend-platform'; // Local Components import MobileUserMenuToggleSlot from '../plugin-slots/MobileUserMenuToggleSlot'; import { Menu, MenuTrigger, MenuContent } from '../Menu'; 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'; // Assets import { MenuIcon } from '../Icons'; const MobileHeader = ({ mainMenu, secondaryMenu, userMenu, loggedOutItems, logo, logoAltText, logoDestination, avatar, username, loggedIn, stickyOnMobile, }) => { const intl = useIntl(); const renderMainMenu = () => ; const renderUserMenuItems = () => ; const renderLoggedOutItems = () => ; const renderUserMenuToggle = () => ; const logoProps = { src: logo, alt: logoAltText, href: logoDestination }; const stickyClassName = stickyOnMobile ? 'sticky-top' : ''; const logoClasses = getConfig().AUTHN_MINIMAL_HEADER ? 'justify-content-left pl-3' : 'justify-content-center'; return (
{intl.formatMessage(messages['header.label.skip.nav'])} {mainMenu.length > 0 ? (
{renderMainMenu()}
) : null}
{userMenu.length > 0 || loggedOutItems.length > 0 ? (
{renderUserMenuToggle()} {loggedIn ? renderUserMenuItems() : renderLoggedOutItems()}
) : null}
); }; export const mobileHeaderDataShape = { mainMenu: mobileHeaderMainMenuDataShape, secondaryMenu: mobileHeaderMainMenuDataShape, userMenu: mobileHeaderUserMenuDataShape, loggedOutItems: mobileHeaderLoggedOutItemsDataShape, logo: PropTypes.string, logoAltText: PropTypes.string, logoDestination: PropTypes.string, avatar: PropTypes.string, 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, }; MobileHeader.defaultProps = { mainMenu: [], secondaryMenu: [], userMenu: [], loggedOutItems: [], logo: null, logoAltText: null, logoDestination: null, avatar: null, username: null, loggedIn: false, stickyOnMobile: true, }; export default MobileHeader;