soiz1's picture
Upload 2891 files
6bcb42f verified
/*
NOTE: this file only temporarily resides in scratch-gui.
Nearly identical code appears in scratch-www, and the two should
eventually be consolidated.
*/
import classNames from 'classnames';
import {FormattedMessage} from 'react-intl';
import PropTypes from 'prop-types';
import React from 'react';
import MenuBarMenu from './menu-bar-menu.jsx';
import {MenuSection} from '../menu/menu.jsx';
import MenuItemContainer from '../../containers/menu-item.jsx';
import UserAvatar from './user-avatar.jsx';
import dropdownCaret from './dropdown-caret.svg';
import styles from './account-nav.css';
const AccountNavComponent = ({
className,
classroomId,
isEducator,
isOpen,
isRtl,
isStudent,
menuBarMenuClassName,
onClick,
onClose,
onLogOut,
profileUrl,
thumbnailUrl,
username
}) => (
<React.Fragment>
<div
className={classNames(
styles.userInfo,
className
)}
onMouseUp={onClick}
>
{thumbnailUrl ? (
<UserAvatar
className={styles.avatar}
imageUrl={thumbnailUrl}
/>
) : null}
<span className={styles.profileName}>
{username}
</span>
<div className={styles.dropdownCaretPosition}>
<img
className={styles.dropdownCaretIcon}
src={dropdownCaret}
/>
</div>
</div>
<MenuBarMenu
className={menuBarMenuClassName}
open={isOpen}
// note: the Rtl styles are switched here, because this menu is justified
// opposite all the others
place={isRtl ? 'right' : 'left'}
onRequestClose={onClose}
>
<MenuItemContainer href={profileUrl}>
<FormattedMessage
defaultMessage="Profile"
description="Text to link to my user profile, in the account navigation menu"
id="gui.accountMenu.profile"
/>
</MenuItemContainer>
<MenuItemContainer href="/mystuff/">
<FormattedMessage
defaultMessage="My Stuff"
description="Text to link to list of my projects, in the account navigation menu"
id="gui.accountMenu.myStuff"
/>
</MenuItemContainer>
{isEducator ? (
<MenuItemContainer href="/educators/classes/">
<FormattedMessage
defaultMessage="My Classes"
description="Text to link to my classes (if I am a teacher), in the account navigation menu"
id="gui.accountMenu.myClasses"
/>
</MenuItemContainer>
) : null}
{isStudent ? (
<MenuItemContainer href={`/classes/${classroomId}/`}>
<FormattedMessage
defaultMessage="My Class"
description="Text to link to my class (if I am a student), in the account navigation menu"
id="gui.accountMenu.myClass"
/>
</MenuItemContainer>
) : null}
<MenuItemContainer href="/accounts/settings/">
<FormattedMessage
defaultMessage="Account settings"
description="Text to link to my account settings, in the account navigation menu"
id="gui.accountMenu.accountSettings"
/>
</MenuItemContainer>
<MenuSection>
<MenuItemContainer onClick={onLogOut}>
<FormattedMessage
defaultMessage="Sign out"
description="Text to link to sign out, in the account navigation menu"
id="gui.accountMenu.signOut"
/>
</MenuItemContainer>
</MenuSection>
</MenuBarMenu>
</React.Fragment>
);
AccountNavComponent.propTypes = {
className: PropTypes.string,
classroomId: PropTypes.string,
isEducator: PropTypes.bool,
isOpen: PropTypes.bool,
isRtl: PropTypes.bool,
isStudent: PropTypes.bool,
menuBarMenuClassName: PropTypes.string,
onClick: PropTypes.func,
onClose: PropTypes.func,
onLogOut: PropTypes.func,
profileUrl: PropTypes.string,
thumbnailUrl: PropTypes.string,
username: PropTypes.string
};
export default AccountNavComponent;