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 { LinkedLogo, Logo } from './Logo'; // 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; // Nodes are accepted as a prop if (!Array.isArray(mainMenu)) { return mainMenu; } return mainMenu.map((menuItem) => { const { type, href, content, submenuContent, } = menuItem; if (type === 'item') { return ( {content} ); } return ( {content} {submenuContent} ); }); } renderUserMenu() { const { userMenu, avatar, username, intl, } = this.props; return ( {username} {userMenu.map(({ type, href, content }) => ( {content} ))} ); } 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 (
{logoDestination === null ? : }
); } } DesktopHeader.propTypes = { mainMenu: PropTypes.oneOfType([ PropTypes.node, PropTypes.array, ]), userMenu: PropTypes.arrayOf(PropTypes.shape({ type: PropTypes.oneOf(['item', 'menu']), href: PropTypes.string, content: PropTypes.string, })), 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: [], userMenu: [], loggedOutItems: [], logo: null, logoAltText: null, logoDestination: null, avatar: null, username: null, loggedIn: false, }; export default injectIntl(DesktopHeader);