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 { withUnstatedContainers } from './UnstatedUtils';
  12. const PageAccessoriesModalControl = (props) => {
  13. const { t, pageAccessoriesContainer, isGuestUserMode } = props;
  14. return (
  15. <div className="grw-page-accessories-control d-flex align-items-end pb-1">
  16. <button
  17. type="button"
  18. className="btn btn-link grw-btn-page-accessories"
  19. onClick={() => pageAccessoriesContainer.openPageAccessoriesModal('pagelist')}
  20. >
  21. <PageListIcon />
  22. </button>
  23. <button
  24. type="button"
  25. className="btn btn-link grw-btn-page-accessories"
  26. onClick={() => pageAccessoriesContainer.openPageAccessoriesModal('timeline')}
  27. >
  28. <TimeLineIcon />
  29. </button>
  30. <button
  31. type="button"
  32. className="btn btn-link grw-btn-page-accessories"
  33. onClick={() => pageAccessoriesContainer.openPageAccessoriesModal('pageHistory')}
  34. >
  35. <HistoryIcon />
  36. </button>
  37. <button
  38. type="button"
  39. className="btn btn-link grw-btn-page-accessories"
  40. onClick={() => pageAccessoriesContainer.openPageAccessoriesModal('attachment')}
  41. >
  42. <AttachmentIcon />
  43. </button>
  44. <div id="shareLink-btn-wrapper-for-tooltip">
  45. <button
  46. type="button"
  47. className={`btn btn-link grw-btn-page-accessories ${isGuestUserMode && 'disabled'}`}
  48. onClick={() => pageAccessoriesContainer.openPageAccessoriesModal('shareLink')}
  49. >
  50. <ShareLinkIcon />
  51. </button>
  52. </div>
  53. {isGuestUserMode && (
  54. <UncontrolledTooltip placement="top" target="shareLink-btn-wrapper-for-tooltip" fade={false}>
  55. {t('Not available for guest')}
  56. </UncontrolledTooltip>
  57. )}
  58. <div
  59. id="seen-user-list"
  60. data-user-ids-str="{{ page.seenUsers|slice(-15)|default([])|reverse|join(',') }}"
  61. data-sum-of-seen-users="{{ page.seenUsers.length|default(0) }}"
  62. className="grw-seen-user-list"
  63. >
  64. </div>
  65. </div>
  66. );
  67. };
  68. /**
  69. * Wrapper component for using unstated
  70. */
  71. const PageAccessoriesModalControlWrapper = withUnstatedContainers(PageAccessoriesModalControl, [PageAccessoriesContainer]);
  72. PageAccessoriesModalControl.propTypes = {
  73. t: PropTypes.func.isRequired, // i18next
  74. pageAccessoriesContainer: PropTypes.instanceOf(PageAccessoriesContainer).isRequired,
  75. isGuestUserMode: PropTypes.bool.isRequired,
  76. };
  77. export default withTranslation()(PageAccessoriesModalControlWrapper);