WorkspaceListItem.jsx 2.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import React from 'react'
  2. import classnames from 'classnames'
  3. import { translate } from 'react-i18next'
  4. import PropTypes from 'prop-types'
  5. import AnimateHeight from 'react-animate-height'
  6. import { Link } from 'react-router-dom'
  7. const WorkspaceListItem = props => {
  8. return (
  9. <li className='sidebar__navigation__workspace__item'>
  10. <div className='sidebar__navigation__workspace__item__wrapper' onClick={props.onClickTitle}>
  11. <div className='sidebar__navigation__workspace__item__number'>
  12. {props.label.substring(0, 2).toUpperCase()}
  13. </div>
  14. <div className='sidebar__navigation__workspace__item__name' title={props.label}>
  15. {props.label}
  16. </div>
  17. <div className='sidebar__navigation__workspace__item__icon'>
  18. <i className={classnames(props.isOpenInSidebar ? 'fa fa-chevron-up' : 'fa fa-chevron-down')} />
  19. </div>
  20. </div>
  21. <AnimateHeight duration={500} height={props.isOpenInSidebar ? 'auto' : 0}>
  22. <ul
  23. className='sidebar__navigation__workspace__item__submenu'
  24. id={`sidebarSubMenu_${props.number}`}
  25. >
  26. { props.allowedApp.map(aa =>
  27. <li
  28. // onClick={() => props.onClickContentFilter(props.idWs, aa.slug)}
  29. key={aa.slug}
  30. >
  31. <Link to={aa.route}>
  32. <div className={classnames('sidebar__navigation__workspace__item__submenu__dropdown', {'activeFilter': props.activeFilterList.includes(aa.slug)})}>
  33. <div className='dropdown__icon'>
  34. <i className={classnames(`fa fa-${aa.faIcon}`)} style={{backgroudColor: aa.hexcolor}} />
  35. </div>
  36. <div className='sidebar__navigation__workspace__item__submenu__dropdown__showdropdown'>
  37. <div className='dropdown__title' id='navbarDropdown'>
  38. <div className='dropdown__title__text'>
  39. {aa.label/* [props.lang.id] */}
  40. </div>
  41. </div>
  42. </div>
  43. </div>
  44. </Link>
  45. </li>
  46. )}
  47. </ul>
  48. </AnimateHeight>
  49. </li>
  50. )
  51. }
  52. export default translate()(WorkspaceListItem)
  53. WorkspaceListItem.propTypes = {
  54. label: PropTypes.string.isRequired,
  55. allowedApp: PropTypes.array,
  56. onClickTitle: PropTypes.func,
  57. onClickAllContent: PropTypes.func,
  58. isOpenInSidebar: PropTypes.bool
  59. }
  60. WorkspaceListItem.defaultProps = {
  61. onClickTitle: () => {},
  62. onClickAllContent: () => {},
  63. isOpenInSidebar: false
  64. }