TopOfTableContents.jsx 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import { withTranslation } from 'react-i18next';
  4. import PageList from './PageList';
  5. import TimeLine from './TimeLine';
  6. import RecentChanges from './RecentChanges';
  7. import Attachment from './Attachment';
  8. import PageContainer from '../services/PageContainer';
  9. import { withUnstatedContainers } from './UnstatedUtils';
  10. const TopOfTableContents = (props) => {
  11. return (
  12. <>
  13. <div className="top-of-table-contents d-flex align-items-end pb-1">
  14. <button type="button" className="bg-transparent border-0">
  15. <PageList />
  16. </button>
  17. <button type="button" className="bg-transparent border-0">
  18. <TimeLine />
  19. </button>
  20. <button type="button" className="bg-transparent border-0">
  21. <RecentChanges />
  22. </button>
  23. <button type="button" className="bg-transparent border-0">
  24. <Attachment />
  25. </button>
  26. {/* [TODO: setting Footprints' icon by GW-3308] */}
  27. <div
  28. id="seen-user-list"
  29. data-user-ids-str="{{ page.seenUsers|slice(-15)|default([])|reverse|join(',') }}"
  30. data-sum-of-seen-users="{{ page.seenUsers.length|default(0) }}"
  31. >
  32. </div>
  33. </div>
  34. </>
  35. );
  36. };
  37. /**
  38. * Wrapper component for using unstated
  39. */
  40. const TopOfTableContentsWrapper = withUnstatedContainers(TopOfTableContents, [PageContainer]);
  41. TopOfTableContents.propTypes = {
  42. pageContainer: PropTypes.instanceOf(PageContainer).isRequired,
  43. };
  44. export default withTranslation()(TopOfTableContentsWrapper);