import React from 'react'; import PropTypes from 'prop-types'; import { withTranslation } from 'react-i18next'; import { isTrashPage } from '@commons/util/path-utils'; import { createSubscribedElement } from '../UnstatedUtils'; import AppContainer from '../../services/AppContainer'; import RevisionPath from '../Page/RevisionPath'; import PageContainer from '../../services/PageContainer'; import TagLabels from '../Page/TagLabels'; import LikeButton from '../LikeButton'; import BookmarkButton from '../BookmarkButton'; import PageCreator from './PageCreator'; import RevisionAuthor from './RevisionAuthor'; const GrowiSubNavigation = (props) => { const isPageForbidden = document.querySelector('#grw-subnav').getAttribute('data-is-forbidden-page') === 'true'; const { appContainer, pageContainer } = props; const { pageId, path, createdAt, creator, updatedAt, revisionAuthor, isHeaderSticky, isSubnavCompact, } = pageContainer.state; const isPageNotFound = pageId == null; const isPageInTrash = isTrashPage(path); // Display only the RevisionPath if (isPageNotFound || isPageForbidden || isPageInTrash) { return (

); } const additionalClassNames = ['grw-subnavbar']; if (isHeaderSticky) { additionalClassNames.push('grw-subnavbar-sticky'); } if (isSubnavCompact) { additionalClassNames.push('grw-subnavbar-compact'); } return (
{/* Page Path */}

{ !isPageNotFound && !isPageForbidden && ( ) }
{/* Header Button */}
{/* Page Authors */}
); }; /** * Wrapper component for using unstated */ const GrowiSubNavigationWrapper = (props) => { return createSubscribedElement(GrowiSubNavigation, props, [AppContainer, PageContainer]); }; GrowiSubNavigation.propTypes = { t: PropTypes.func.isRequired, // i18next appContainer: PropTypes.instanceOf(AppContainer).isRequired, pageContainer: PropTypes.instanceOf(PageContainer).isRequired, }; export default withTranslation()(GrowiSubNavigationWrapper);