FileItem.jsx 2.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import React from 'react'
  2. import PropTypes from 'prop-types'
  3. import classnames from 'classnames'
  4. import { FILE_TYPE } from '../../helper.js'
  5. const FileItem = props => {
  6. const iconType = (() => {
  7. switch (props.type) {
  8. case FILE_TYPE.PAGE_HTML:
  9. return 'fa fa-file-word-o'
  10. case FILE_TYPE.PAGE_MARKDOWN:
  11. return 'fa fa-file-code-o'
  12. case FILE_TYPE.FILE:
  13. return 'fa fa-file-text-o docandfile-color'
  14. case FILE_TYPE.THREAD:
  15. return 'fa fa-comments-o talk-color'
  16. case FILE_TYPE.TASK:
  17. return 'fa fa-list-ul task-color'
  18. case FILE_TYPE.ISSUE:
  19. return 'fa fa-ticket'
  20. }
  21. })()
  22. const iconStatus = (() => {
  23. switch (props.status) {
  24. case 'current':
  25. return 'fa fa-cogs current-color'
  26. case 'validated':
  27. return 'fa fa-check validated-color'
  28. case 'canceled':
  29. return 'fa fa-ban canceled-color'
  30. case 'outdated':
  31. return '' // @TODO
  32. }
  33. })()
  34. return (
  35. <div className={classnames('file', 'align-items-center', props.customClass)} onClick={props.onClickItem}>
  36. <div className='col-2 col-sm-2 col-md-2 col-lg-2 col-xl-1'>
  37. <div className='file__type'>
  38. <i className={iconType} />
  39. </div>
  40. </div>
  41. <div className='col-8 col-sm-8 col-md-8 col-lg-8 col-xl-10'>
  42. <div className='file__name'>
  43. <div className='file__name__text'>
  44. { props.name }
  45. </div>
  46. <div className='file__name__icons d-none d-md-flex'>
  47. <div className='file__name__icons__download'>
  48. <i className='fa fa-download' />
  49. </div>
  50. <div className='file__name__icons__archive'>
  51. <i className='fa fa-archive' />
  52. </div>
  53. <div className='file__name__icons__delete'>
  54. <i className='fa fa-trash-o' />
  55. </div>
  56. </div>
  57. </div>
  58. </div>
  59. <div className='col-2 col-sm-2 col-md-2 col-lg-2 col-xl-1'>
  60. <div className='file__status'>
  61. <i className={iconStatus} />
  62. </div>
  63. </div>
  64. </div>
  65. )
  66. }
  67. export default FileItem
  68. FileItem.propTypes = {
  69. type: PropTypes.string.isRequired,
  70. status: PropTypes.string.isRequired,
  71. customClass: PropTypes.string,
  72. name: PropTypes.string,
  73. onClickItem: PropTypes.func
  74. }
  75. FileItem.defaultProps = {
  76. name: '',
  77. customClass: '',
  78. onClickItem: () => {}
  79. }