ContentItem.jsx 1.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import React from 'react'
  2. import PropTypes from 'prop-types'
  3. import classnames from 'classnames'
  4. import BtnExtandedAction from './BtnExtandedAction.jsx'
  5. const ContentItem = props => {
  6. if (props.contentType === null) return null // this means the endpoint system/content_type hasn't responded yet
  7. const status = props.contentType.availableStatuses.find(s => s.slug === props.statusSlug)
  8. return (
  9. <div className={classnames('content', 'align-items-center', {'item-last': props.isLast}, props.customClass)} onClick={props.onClickItem}>
  10. <div className='content__type' style={{color: props.contentType.hexcolor}}>
  11. <i className={`fa fa-fw fa-${props.faIcon}`} />
  12. </div>
  13. <div className='content__name'>
  14. <div className='content__name__text'>
  15. { props.label }
  16. </div>
  17. </div>
  18. <div className='d-none d-md-flex'>
  19. <BtnExtandedAction onClickExtendedAction={props.onClickExtendedAction} />
  20. </div>
  21. <div className={classnames('content__status')} style={{color: status.hexcolor}}>
  22. <div className='content__status__text d-none d-xl-block'>
  23. {status.label}
  24. <i className={`fa fa-fw fa-${status.faIcon}`} />
  25. </div>
  26. </div>
  27. </div>
  28. )
  29. }
  30. export default ContentItem
  31. ContentItem.propTypes = {
  32. type: PropTypes.string.isRequired,
  33. statusSlug: PropTypes.string.isRequired,
  34. customClass: PropTypes.string,
  35. label: PropTypes.string,
  36. contentType: PropTypes.object,
  37. onClickItem: PropTypes.func,
  38. faIcon: PropTypes.string
  39. }
  40. ContentItem.defaultProps = {
  41. label: '',
  42. customClass: '',
  43. onClickItem: () => {}
  44. }