FileItem.jsx 1.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import React from 'react'
  2. import PropTypes from 'prop-types'
  3. import classnames from 'classnames'
  4. const FileItem = props => {
  5. const iconStatus = (() => {
  6. switch (props.status) {
  7. case 'current':
  8. return 'fa fa-cogs current-color'
  9. case 'validated':
  10. return 'fa fa-check validated-color'
  11. case 'canceled':
  12. return 'fa fa-ban canceled-color'
  13. case 'outdated':
  14. return '' // @TODO
  15. }
  16. })()
  17. return (
  18. <div className={classnames('file', 'align-items-center', {'item-last': props.isLast}, props.customClass)} onClick={props.onClickItem}>
  19. <div className='col-2 col-sm-2 col-md-2 col-lg-2 col-xl-1'>
  20. <div className='file__type'>
  21. <i className={props.icon} />
  22. </div>
  23. </div>
  24. <div className='col-8 col-sm-8 col-md-8 col-lg-8 col-xl-10'>
  25. <div className='file__name'>
  26. <div className='file__name__text'>
  27. { props.name }
  28. </div>
  29. <div className='file__name__icons d-none d-md-flex'>
  30. <div className='file__name__icons__download'>
  31. <i className='fa fa-download' />
  32. </div>
  33. <div className='file__name__icons__archive'>
  34. <i className='fa fa-archive' />
  35. </div>
  36. <div className='file__name__icons__delete'>
  37. <i className='fa fa-trash-o' />
  38. </div>
  39. </div>
  40. </div>
  41. </div>
  42. <div className='col-2 col-sm-2 col-md-2 col-lg-2 col-xl-1'>
  43. <div className='file__status'>
  44. <i className={iconStatus} />
  45. </div>
  46. </div>
  47. </div>
  48. )
  49. }
  50. export default FileItem
  51. FileItem.propTypes = {
  52. type: PropTypes.string.isRequired,
  53. status: PropTypes.string.isRequired,
  54. customClass: PropTypes.string,
  55. name: PropTypes.string,
  56. onClickItem: PropTypes.func
  57. }
  58. FileItem.defaultProps = {
  59. name: '',
  60. customClass: '',
  61. onClickItem: () => {}
  62. }