toolbar-header.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. import React from 'react'
  2. import PropTypes from 'prop-types'
  3. import MenuButton from './menu-button'
  4. import CobrandingLogo from './cobranding-logo'
  5. import BackToProjectsButton from './back-to-projects-button'
  6. import ChatToggleButton from './chat-toggle-button'
  7. import OnlineUsersWidget from './online-users-widget'
  8. import ProjectNameEditableLabel from './project-name-editable-label'
  9. import TrackChangesToggleButton from './track-changes-toggle-button'
  10. import HistoryToggleButton from './history-toggle-button'
  11. import ShareProjectButton from './share-project-button'
  12. import PdfToggleButton from './pdf-toggle-button'
  13. function ToolbarHeader({
  14. cobranding,
  15. onShowLeftMenuClick,
  16. chatIsOpen,
  17. toggleChatOpen,
  18. reviewPanelOpen,
  19. toggleReviewPanelOpen,
  20. historyIsOpen,
  21. toggleHistoryOpen,
  22. unreadMessageCount,
  23. onlineUsers,
  24. goToUser,
  25. isRestrictedTokenMember,
  26. projectName,
  27. renameProject,
  28. openShareModal,
  29. pdfViewIsOpen,
  30. pdfButtonIsVisible,
  31. togglePdfView
  32. }) {
  33. return (
  34. <header className="toolbar toolbar-header toolbar-with-labels">
  35. <div className="toolbar-left">
  36. <MenuButton onClick={onShowLeftMenuClick} />
  37. {cobranding ? <CobrandingLogo {...cobranding} /> : null}
  38. <BackToProjectsButton />
  39. </div>
  40. {pdfButtonIsVisible && (
  41. <PdfToggleButton
  42. onClick={togglePdfView}
  43. pdfViewIsOpen={pdfViewIsOpen}
  44. />
  45. )}
  46. <ProjectNameEditableLabel
  47. className="toolbar-center"
  48. projectName={projectName}
  49. userIsAdmin
  50. onChange={renameProject}
  51. />
  52. <div className="toolbar-right">
  53. <OnlineUsersWidget onlineUsers={onlineUsers} goToUser={goToUser} />
  54. <ShareProjectButton onClick={openShareModal} />
  55. {!isRestrictedTokenMember && (
  56. <>
  57. <TrackChangesToggleButton
  58. onClick={toggleReviewPanelOpen}
  59. disabled={historyIsOpen}
  60. trackChangesIsOpen={reviewPanelOpen}
  61. />
  62. <HistoryToggleButton
  63. historyIsOpen={historyIsOpen}
  64. onClick={toggleHistoryOpen}
  65. />
  66. <ChatToggleButton
  67. chatIsOpen={chatIsOpen}
  68. onClick={toggleChatOpen}
  69. unreadMessageCount={unreadMessageCount}
  70. />
  71. </>
  72. )}
  73. </div>
  74. </header>
  75. )
  76. }
  77. ToolbarHeader.propTypes = {
  78. onShowLeftMenuClick: PropTypes.func.isRequired,
  79. cobranding: PropTypes.object,
  80. chatIsOpen: PropTypes.bool,
  81. toggleChatOpen: PropTypes.func.isRequired,
  82. reviewPanelOpen: PropTypes.bool,
  83. toggleReviewPanelOpen: PropTypes.func.isRequired,
  84. historyIsOpen: PropTypes.bool,
  85. toggleHistoryOpen: PropTypes.func.isRequired,
  86. unreadMessageCount: PropTypes.number.isRequired,
  87. onlineUsers: PropTypes.array.isRequired,
  88. goToUser: PropTypes.func.isRequired,
  89. isRestrictedTokenMember: PropTypes.bool,
  90. projectName: PropTypes.string.isRequired,
  91. renameProject: PropTypes.func.isRequired,
  92. openShareModal: PropTypes.func.isRequired,
  93. pdfViewIsOpen: PropTypes.bool,
  94. pdfButtonIsVisible: PropTypes.bool,
  95. togglePdfView: PropTypes.func.isRequired
  96. }
  97. export default ToolbarHeader