import React from 'react'; import dynamic from 'next/dynamic'; import { IPageHasId } from '~/interfaces/page'; import { IUser } from '~/interfaces/user'; import { EditorMode, useEditorMode, } from '~/stores/ui'; import { TagLabelsSkelton } from '../Page/TagLabels'; import PagePathNav from '../PagePathNav'; import { Skelton } from '../Skelton'; import DrawerToggler from './DrawerToggler'; import AuthorInfoStyles from './AuthorInfo.module.scss'; import styles from './GrowiSubNavigation.module.scss'; const TagLabels = dynamic(() => import('../Page/TagLabels').then(mod => mod.TagLabels), { ssr: false, loading: () => , }); const AuthorInfo = dynamic(() => import('./AuthorInfo'), { ssr: false, loading: () => , }); export type GrowiSubNavigationProps = { page: Partial, showDrawerToggler?: boolean, showTagLabel?: boolean, showPageAuthors?: boolean, isGuestUser?: boolean, isDrawerMode?: boolean, isCompactMode?: boolean, tags?: string[], tagsUpdatedHandler?: (newTags: string[]) => Promise | void, controls: React.FunctionComponent, additionalClasses?: string[], } export const GrowiSubNavigation = (props: GrowiSubNavigationProps): JSX.Element => { const { data: editorMode } = useEditorMode(); const { page, showDrawerToggler, showTagLabel, showPageAuthors, isGuestUser, isDrawerMode, isCompactMode, tags, tagsUpdatedHandler, controls: Controls, additionalClasses = [], } = props; const isViewMode = editorMode === EditorMode.View; const isEditorMode = !isViewMode; const compactModeClasses = isCompactMode ? 'grw-subnav-compact d-print-none' : ''; const { _id: pageId, path, creator, lastUpdateUser, createdAt, updatedAt, } = page; if (path == null) { return <>; } return (
{/* Left side */}
{ (showDrawerToggler && isDrawerMode) && (
) }
{ (showTagLabel && !isCompactMode) && (
) }
{/* Right side. */}
{/* Page Authors */} { (showPageAuthors && !isCompactMode) && (
) }
); };