import React from 'react'; import PropTypes from 'prop-types'; import { withTranslation } from 'react-i18next'; import { createSubscribedElement } from '../UnstatedUtils'; import AppContainer from '../../services/AppContainer'; class SidebarNav extends React.Component { static propTypes = { currentContentsId: PropTypes.string, onItemSelected: PropTypes.func, }; state = { }; itemSelectedHandler = (contentsId) => { const { onItemSelected } = this.props; if (onItemSelected != null) { onItemSelected(contentsId); } } PrimaryItem = ({ id, label, iconName }) => { const isSelected = this.props.currentContentsId === id; return ( ); } SecondaryItem({ label, iconName, href, isBlank, }) { return ( {iconName} ); } generateIconFactory(classNames) { return () => ; } render() { const { isAdmin, currentUsername, isSharedUser } = this.props.appContainer; const isLoggedIn = currentUsername != null; const { PrimaryItem, SecondaryItem } = this; return (
{!isSharedUser && } {!isSharedUser && } {/* */} {/* */}
{isAdmin && } {isLoggedIn && } {isLoggedIn && }
); } } SidebarNav.propTypes = { appContainer: PropTypes.instanceOf(AppContainer).isRequired, }; /** * Wrapper component for using unstated */ const SidebarNavWrapper = (props) => { return createSubscribedElement(SidebarNav, props, [AppContainer]); }; export default withTranslation()(SidebarNavWrapper);