import React from 'react' import PropTypes from 'prop-types' import { CX, } from '../constants' import Button from './button' import Icon from './icon' import Image from './image' import ResponsiveClassesComponent from '../features/ui/util/responsive_classes_component' class SidebarSectionItem extends React.PureComponent { static contextTypes = { router: PropTypes.object, } state = { hovering: false, } handleOnMouseEnter = () => { this.setState({ hovering: true }) } handleOnMouseLeave = () => { this.setState({ hovering: false }) } render() { const { to, active, icon, image, title, me, count, onClick, href, buttonRef, } = this.props const { hovering } = this.state const noRouter = !this.context.router const iconSize = '16px' const currentPathname = noRouter ? '' : this.context.router.route.location.pathname const shouldShowActive = hovering || active || currentPathname === to || currentPathname === href const isHighlighted = ['/notifications', '/messages'].indexOf(to) > -1 const containerClasses = CX({ d: 1, maxW100PC: 1, w100PC: 1, flexRow: 1, py5: 1, px10: 1, aiCenter: 1, radiusSmall: 1, border1PX: 1, outlineNone: 1, borderColorTransparent: !shouldShowActive, borderColorSecondary: shouldShowActive, bgTransparent: !shouldShowActive, bgPrimary: shouldShowActive, }) const countClasses = CX({ d: 1, text: 1, textAlignCenter: 1, minW20PX: 1, mlAuto: 1, fs12PX: 1, px5: 1, mr2: 1, lineHeight15: 1, ml5: 1, cSecondary: !isHighlighted, cWhite: isHighlighted, bgRed: isHighlighted, circle: isHighlighted, }) return ( ) } } SidebarSectionItem.propTypes = { to: PropTypes.string, href: PropTypes.string, onClick: PropTypes.func, active: PropTypes.bool, icon: PropTypes.string, image: PropTypes.string, title: PropTypes.string, me: PropTypes.bool, suffix: PropTypes.node, buttonRef: PropTypes.func, } export default SidebarSectionItem