WorkspaceContent.jsx 2.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import React from 'react'
  2. import { connect } from 'react-redux'
  3. import Folder from '../component/Workspace/Folder.jsx'
  4. import FileItem from '../component/Workspace/FileItem.jsx'
  5. import FileItemHeader from '../component/Workspace/FileItemHeader.jsx'
  6. import PageWrapper from '../component/common/layout/PageWrapper.jsx'
  7. import PageTitle from '../component/common/layout/PageTitle.jsx'
  8. import PageContent from '../component/common/layout/PageContent.jsx'
  9. import DropdownCreateButton from '../component/common/Input/DropdownCreateButton.jsx'
  10. import FileContentViewer from '../component/Workspace/FileContentViewer.jsx'
  11. import { getWorkspaceContent } from '../action-creator.async.js'
  12. import { setActiveFileContent, hideActiveFileContent } from '../action-creator.sync.js'
  13. class WorkspaceContent extends React.Component {
  14. constructor (props) {
  15. super(props)
  16. this.state = {
  17. activeFileType: ''
  18. }
  19. }
  20. componentDidMount () {
  21. this.props.dispatch(getWorkspaceContent(/* this.props.workspace.id */1))
  22. }
  23. handleClickFileItem = file => {
  24. this.props.dispatch(setActiveFileContent(file))
  25. }
  26. handleClickCloseBtn = () => {
  27. this.props.dispatch(hideActiveFileContent())
  28. }
  29. render () {
  30. const { workspace, activeFileContent } = this.props
  31. return (
  32. <PageWrapper customeClass='workspace'>
  33. <PageTitle
  34. parentClass='workspace__header'
  35. customClass='justify-content-between'
  36. title={workspace.title}
  37. >
  38. <DropdownCreateButton parentClass='workspace__header__btnaddworkspace' />
  39. </PageTitle>
  40. <PageContent parentClass='workspace__content'>
  41. <div className='workspace__content__fileandfolder folder__content active'>
  42. <FileItemHeader />
  43. { workspace.content.map(c => c.type === 'folder'
  44. ? <Folder folderData={c} key={c.id} />
  45. : (
  46. <FileItem
  47. name={c.title}
  48. type={c.type}
  49. status={c.status}
  50. onClickItem={() => this.handleClickFileItem(c)}
  51. key={c.id}
  52. />
  53. )
  54. )}
  55. </div>
  56. <DropdownCreateButton customClass='workspace__content__button mb-5' />
  57. { activeFileContent.display &&
  58. <FileContentViewer
  59. file={activeFileContent}
  60. onClose={this.handleClickCloseBtn}
  61. />
  62. }
  63. </PageContent>
  64. </PageWrapper>
  65. )
  66. }
  67. }
  68. const mapStateToProps = ({ workspace, activeFileContent }) => ({ workspace, activeFileContent })
  69. export default connect(mapStateToProps)(WorkspaceContent)