PageAccessoriesModalControl.jsx 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import { withTranslation } from 'react-i18next';
  4. import { UncontrolledTooltip } from 'reactstrap';
  5. import PageAccessoriesContainer from '../services/PageAccessoriesContainer';
  6. import PageListIcon from './Icons/PageListIcon';
  7. import TimeLineIcon from './Icons/TimeLineIcon';
  8. import HistoryIcon from './Icons/HistoryIcon';
  9. import AttachmentIcon from './Icons/AttachmentIcon';
  10. import ShareLinkIcon from './Icons/ShareLinkIcon';
  11. import SeenUserInfo from './User/SeenUserInfo';
  12. import { withUnstatedContainers } from './UnstatedUtils';
  13. const PageAccessoriesModalControl = (props) => {
  14. const { t, pageAccessoriesContainer, isGuestUserMode } = props;
  15. return (
  16. <div className="grw-page-accessories-control d-flex align-items-center pb-1">
  17. <button
  18. type="button"
  19. className="btn btn-link grw-btn-page-accessories"
  20. onClick={() => pageAccessoriesContainer.openPageAccessoriesModal('pagelist')}
  21. >
  22. <PageListIcon />
  23. </button>
  24. <button
  25. type="button"
  26. className="btn btn-link grw-btn-page-accessories"
  27. onClick={() => pageAccessoriesContainer.openPageAccessoriesModal('timeline')}
  28. >
  29. <TimeLineIcon />
  30. </button>
  31. <button
  32. type="button"
  33. className="btn btn-link grw-btn-page-accessories"
  34. onClick={() => pageAccessoriesContainer.openPageAccessoriesModal('pageHistory')}
  35. >
  36. <HistoryIcon />
  37. </button>
  38. <button
  39. type="button"
  40. className="btn btn-link grw-btn-page-accessories"
  41. onClick={() => pageAccessoriesContainer.openPageAccessoriesModal('attachment')}
  42. >
  43. <AttachmentIcon />
  44. </button>
  45. <div id="shareLink-btn-wrapper-for-tooltip">
  46. <button
  47. type="button"
  48. className={`btn btn-link grw-btn-page-accessories ${isGuestUserMode && 'disabled'}`}
  49. onClick={() => pageAccessoriesContainer.openPageAccessoriesModal('shareLink')}
  50. >
  51. <ShareLinkIcon />
  52. </button>
  53. </div>
  54. {isGuestUserMode && (
  55. <UncontrolledTooltip placement="top" target="shareLink-btn-wrapper-for-tooltip" fade={false}>
  56. {t('Not available for guest')}
  57. </UncontrolledTooltip>
  58. )}
  59. <span className="border-left grw-border-vr mx-1">&nbsp;</span>
  60. <SeenUserInfo />
  61. </div>
  62. );
  63. };
  64. /**
  65. * Wrapper component for using unstated
  66. */
  67. const PageAccessoriesModalControlWrapper = withUnstatedContainers(PageAccessoriesModalControl, [PageAccessoriesContainer]);
  68. PageAccessoriesModalControl.propTypes = {
  69. t: PropTypes.func.isRequired, // i18next
  70. pageAccessoriesContainer: PropTypes.instanceOf(PageAccessoriesContainer).isRequired,
  71. isGuestUserMode: PropTypes.bool.isRequired,
  72. };
  73. export default withTranslation()(PageAccessoriesModalControlWrapper);