UserContentsLinks.jsx 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import React, { useMemo } from 'react';
  2. import PropTypes from 'prop-types';
  3. import loggerFactory from '@alias/logger';
  4. import NavigationContainer from '../services/NavigationContainer';
  5. import { withUnstatedContainers } from './UnstatedUtils';
  6. import RecentlyCreatedIcon from './Icons/RecentlyCreatedIcon';
  7. // eslint-disable-next-line no-unused-vars
  8. const logger = loggerFactory('growi:cli:UserContentsLinks');
  9. const WIKI_HEADER_LINK = 120;
  10. /**
  11. * @author Yuki Takei <yuki@weseek.co.jp>
  12. *
  13. */
  14. const UserContentsLinks = (props) => {
  15. const { navigationContainer } = props;
  16. // get element for smoothScroll
  17. const getBookMarkListHeaderDom = useMemo(() => { return document.getElementById('bookmarks-list') }, []);
  18. const getRecentlyCreatedListHeaderDom = useMemo(() => { return document.getElementById('recently-created-list') }, []);
  19. return (
  20. <div className="mt-3 d-flex justify-content-around">
  21. <button
  22. type="button"
  23. className="btn btn-outline-secondary btn-sm"
  24. onClick={() => navigationContainer.smoothScrollIntoView(getBookMarkListHeaderDom, WIKI_HEADER_LINK)}
  25. >
  26. <i className="mr-2 icon-star"></i>
  27. <span>Bookmarks</span>
  28. </button>
  29. <button
  30. type="button"
  31. className="btn btn-outline-secondary btn-sm"
  32. onClick={() => navigationContainer.smoothScrollIntoView(getRecentlyCreatedListHeaderDom, WIKI_HEADER_LINK)}
  33. >
  34. <i className="grw-icon-container-recently-created mr-2"><RecentlyCreatedIcon /></i>
  35. <span>Recently Created</span>
  36. </button>
  37. </div>
  38. );
  39. };
  40. UserContentsLinks.propTypes = {
  41. navigationContainer: PropTypes.instanceOf(NavigationContainer).isRequired,
  42. };
  43. export default withUnstatedContainers(UserContentsLinks, [NavigationContainer]);