PageAccessoriesModalControl.jsx 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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 justify-content-between 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. <div className="d-flex align-items-center">
  60. <span className="border-left grw-border-vr">&nbsp;</span>
  61. <SeenUserInfo />
  62. </div>
  63. </div>
  64. );
  65. };
  66. /**
  67. * Wrapper component for using unstated
  68. */
  69. const PageAccessoriesModalControlWrapper = withUnstatedContainers(PageAccessoriesModalControl, [PageAccessoriesContainer]);
  70. PageAccessoriesModalControl.propTypes = {
  71. t: PropTypes.func.isRequired, // i18next
  72. pageAccessoriesContainer: PropTypes.instanceOf(PageAccessoriesContainer).isRequired,
  73. isGuestUserMode: PropTypes.bool.isRequired,
  74. };
  75. export default withTranslation()(PageAccessoriesModalControlWrapper);