ContentItem.jsx 1.8KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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. {props.idRoleUserWorkspace >= 2 &&
  19. <div className='d-none d-md-flex'>
  20. <BtnExtandedAction
  21. idRoleUserWorkspace={props.idRoleUserWorkspace}
  22. onClickExtendedAction={props.onClickExtendedAction}
  23. />
  24. </div>
  25. }
  26. <div className={classnames('content__status')} style={{color: status.hexcolor}}>
  27. <div className='content__status__text d-none d-xl-flex align-items-center justify-content-between'>
  28. {status.label}
  29. <i className={`fa fa-fw fa-${status.faIcon}`} />
  30. </div>
  31. </div>
  32. </div>
  33. )
  34. }
  35. export default ContentItem
  36. ContentItem.propTypes = {
  37. type: PropTypes.string.isRequired,
  38. statusSlug: PropTypes.string.isRequired,
  39. customClass: PropTypes.string,
  40. label: PropTypes.string,
  41. contentType: PropTypes.object,
  42. onClickItem: PropTypes.func,
  43. faIcon: PropTypes.string
  44. }
  45. ContentItem.defaultProps = {
  46. label: '',
  47. customClass: '',
  48. onClickItem: () => {}
  49. }