FileItem.jsx 2.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  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='col-2 col-sm-2 col-md-2 col-lg-2 col-xl-1'>
  45. <div className='file__type'>
  46. <i className={props.icon} />
  47. </div>
  48. </div>
  49. <div className='col-8 col-sm-8 col-md-8 col-lg-8 col-xl-9'>
  50. <div className='file__name'>
  51. <div className='file__name__text'>
  52. { props.name }
  53. </div>
  54. <div className='d-none d-md-flex'>
  55. <BtnExtandedAction onClickExtendedAction={props.onClickExtendedAction} />
  56. </div>
  57. {/*
  58. <div className='file__name__icons d-none d-md-flex'>
  59. <div className='file__name__icons__download'>
  60. <i className='fa fa-download' />
  61. </div>
  62. <div className='file__name__icons__archive'>
  63. <i className='fa fa-archive' />
  64. </div>
  65. <div className='file__name__icons__delete'>
  66. <i className='fa fa-trash-o' />
  67. </div>
  68. </div>
  69. */ }
  70. </div>
  71. </div>
  72. <div className='col-2 col-sm-2 col-md-2 col-lg-2 col-xl-2'>
  73. <div className={classnames('file__status d-flex align-items-center justify-content-start') + colorStatus}>
  74. <div className='file__status__icon d-block '>
  75. <i className={iconStatus} />
  76. </div>
  77. <div className='file__status__text d-none d-xl-block'>
  78. {textStatus}
  79. </div>
  80. </div>
  81. </div>
  82. </div>
  83. )
  84. }
  85. export default FileItem
  86. FileItem.propTypes = {
  87. type: PropTypes.string.isRequired,
  88. status: PropTypes.string.isRequired,
  89. customClass: PropTypes.string,
  90. name: PropTypes.string,
  91. onClickItem: PropTypes.func
  92. }
  93. FileItem.defaultProps = {
  94. name: '',
  95. customClass: '',
  96. onClickItem: () => {}
  97. }