// This file was copied from edx/frontend-component-header-edx. import React from 'react'; import PropTypes from 'prop-types'; import { injectIntl, intlShape } from '@edx/frontend-platform/i18n'; // 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} ))} ); } render() { const { logo, logoAltText, logoDestination, intl, } = this.props; const logoProps = { src: logo, alt: logoAltText, href: logoDestination }; return (
{logoDestination === null ? : } {/* This lockup HTML was copied from edx/frontend-app-learning/src/course-header/Header.jsx. */} { this.props.courseLockUp }
); } } 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, })), logo: PropTypes.string, logoAltText: PropTypes.string, logoDestination: PropTypes.string, courseId: PropTypes.string, avatar: PropTypes.string, username: PropTypes.string, loggedIn: PropTypes.bool, courseLockUp: PropTypes.node.isRequired, // i18n intl: intlShape.isRequired, }; DesktopHeader.defaultProps = { mainMenu: [], userMenu: [], logo: null, logoAltText: null, logoDestination: null, courseId: null, avatar: null, username: null, loggedIn: false, }; export default injectIntl(DesktopHeader);