GrowiCompactSubNavigation.jsx 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import { withTranslation } from 'react-i18next';
  4. import { isTrashPage } from '../../../../lib/util/path-utils';
  5. import { createSubscribedElement } from '../UnstatedUtils';
  6. import AppContainer from '../../services/AppContainer';
  7. import RevisionPath from '../Page/RevisionPath';
  8. import PageContainer from '../../services/PageContainer';
  9. import TagLabels from '../Page/TagLabels';
  10. import LikeButton from '../LikeButton';
  11. import BookmarkButton from '../BookmarkButton';
  12. // import PageCreator from './PageCreator';
  13. import ReducedPageCreator from './ReducedPageCreator';
  14. import ReducedRevisionAuthor from './ReducedRevisionAuthor';
  15. // import RevisionAuthor from './RevisionAuthor';
  16. const GrowiCompactSubNavigation = (props) => {
  17. // const isPageForbidden = document.querySelector('#grw-compactsubnav').getAttribute('data-is-forbidden-page');
  18. const { appContainer, pageContainer } = props;
  19. const {
  20. path, createdAt, creator, updatedAt, revisionAuthor,
  21. } = pageContainer.state;
  22. // const isVisible = (window.pageYOffset > 122);
  23. // // const positionY = document.getElementById('#grw-navbar');
  24. // const invisiblePosition = 122;
  25. // window.addEventListener('scroll', () => {
  26. // if (isVisible) {
  27. return (
  28. <div className="d-flex align-items-center fixed-top grw-compactsubnavbar-color">
  29. {/* Page Path */}
  30. <div className="title-container mr-auto">
  31. <h2>
  32. <RevisionPath behaviorType={appContainer.config.behaviorType} pageId={pageContainer.state.pageId} pagePath={pageContainer.state.path} />
  33. </h2>
  34. <TagLabels />
  35. </div>
  36. {/* Header Button */}
  37. <div className="ml-1">
  38. <LikeButton pageId={pageContainer.state.pageId} isLiked={pageContainer.state.isLiked} />
  39. </div>
  40. <div>
  41. <BookmarkButton pageId={pageContainer.state.pageId} crowi={appContainer} />
  42. </div>
  43. {/* Page Authors */}
  44. <ul className="authors text-nowrap d-none d-lg-block">
  45. {creator != null && <li><ReducedPageCreator creator={creator} createdAt={createdAt} /></li>}
  46. {revisionAuthor != null && <li className="mt-1"><ReducedRevisionAuthor revisionAuthor={revisionAuthor} updatedAt={updatedAt} /></li>}
  47. </ul>
  48. </div>
  49. );
  50. // }
  51. // }, true);
  52. // return null;
  53. };
  54. /**
  55. * Wrapper component for using unstated
  56. */
  57. const GrowiCompactSubNavigationWrapper = (props) => {
  58. return createSubscribedElement(GrowiCompactSubNavigation, props, [AppContainer, PageContainer]);
  59. };
  60. GrowiCompactSubNavigation.propTypes = {
  61. t: PropTypes.func.isRequired, // i18next
  62. appContainer: PropTypes.instanceOf(AppContainer).isRequired,
  63. pageContainer: PropTypes.instanceOf(PageContainer).isRequired,
  64. };
  65. export default withTranslation()(GrowiCompactSubNavigationWrapper);