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 Text from './text' class ListItem extends React.PureComponent { handleOnClick = (e) => { if (!!this.props.onClick) { this.props.onClick(e) } } render() { const { title, isLast, to, href, onClick, actionIcon, size, icon, image, hideArrow, isHidden, subtitle, isActive, } = this.props if (!title) { return (
) } if (isHidden) { return ( {title} ) } const small = size === 'small' const large = size === 'large' const textSize = small ? 'normal' : large ? 'large' : 'normal' const iconSize = large ? '14px' : '10px' const imageSize = large ? '22px' : '18px' const showActive = isActive !== undefined const containerClasses = CX({ d: 1, cursorPointer: 1, noUnderline: 1, px15: !small, py15: !small, px10: small, py10: small, flexRow: 1, aiCenter: 1, w100PC: 1, outlineNone: 1, bgTransparent: 1, bgSubtle_onHover: 1, borderColorSecondary: !isLast, borderBottom1PX: !isLast, }) const iconClasses = CX({ mr10: !large, mr15: large, cPrimary: !!icon, circle: !icon && !!image, }) const textContainerClasses = CX({ d: 1, pr5: 1, w100PC: hideArrow, maxW100PC42PX: !hideArrow || showActive, }) return ( ) } } ListItem.propTypes = { icon: PropTypes.string, image: PropTypes.string, isLast: PropTypes.bool, isHidden: PropTypes.bool, to: PropTypes.string, href: PropTypes.string, title: PropTypes.string, subtitle: PropTypes.string, isActive: PropTypes.bool, actionIcon: PropTypes.bool, onClick: PropTypes.func, size: PropTypes.oneOf([ 'small', 'large', ]), hideArrow: PropTypes.bool, } export default ListItem