ContentItem.jsx 2.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import React from 'react'
  2. import PropTypes from 'prop-types'
  3. import classnames from 'classnames'
  4. import BtnExtandedAction from './BtnExtandedAction.jsx'
  5. const FileItem = props => {
  6. const iconStatus = (() => {
  7. switch (props.status) {
  8. case 'current':
  9. return 'fa fa-fw fa-cogs'
  10. case 'validated':
  11. return 'fa fa-fw fa-check'
  12. case 'canceled':
  13. return 'fa fa-fw fa-times'
  14. case 'outdated':
  15. return 'fa fa-fw fa-ban'
  16. }
  17. })()
  18. const textStatus = (() => {
  19. switch (props.status) {
  20. case 'current':
  21. return 'En cours'
  22. case 'validated':
  23. return 'Validé'
  24. case 'canceled':
  25. return 'Annulé'
  26. case 'outdated':
  27. return 'Obsolète'
  28. }
  29. })()
  30. const colorStatus = (() => {
  31. switch (props.status) {
  32. case 'current':
  33. return ' currentColor'
  34. case 'validated':
  35. return ' validateColor'
  36. case 'canceled':
  37. return ' cancelColor'
  38. case 'outdated':
  39. return ' outdateColor'
  40. }
  41. })()
  42. return (
  43. <div className={classnames('file', 'align-items-center', {'item-last': props.isLast}, props.customClass)} onClick={props.onClickItem}>
  44. <div className='file__type'>
  45. <i className={props.icon} />
  46. </div>
  47. <div className='file__name'>
  48. <div className='file__name__text'>
  49. { props.name }
  50. </div>
  51. </div>
  52. <div className='d-none d-md-flex'>
  53. <BtnExtandedAction onClickExtendedAction={props.onClickExtendedAction} />
  54. </div>
  55. <div className={classnames('file__status d-flex align-items-center justify-content-start') + colorStatus}>
  56. <div className='file__status__icon d-block '>
  57. <i className={iconStatus} />
  58. </div>
  59. <div className='file__status__text d-none d-xl-block'>
  60. {textStatus}
  61. </div>
  62. </div>
  63. </div>
  64. )
  65. }
  66. export default FileItem
  67. FileItem.propTypes = {
  68. type: PropTypes.string.isRequired,
  69. status: PropTypes.string.isRequired,
  70. customClass: PropTypes.string,
  71. name: PropTypes.string,
  72. onClickItem: PropTypes.func
  73. }
  74. FileItem.defaultProps = {
  75. name: '',
  76. customClass: '',
  77. onClickItem: () => {}
  78. }