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,
})
const arrowClasses = CX({
mlAuto: !showActive,
ml10: showActive,
cSecondary: 1,
flexShrink1: 1,
})
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