parent
0275e40696
commit
252f4e48d5
@ -0,0 +1,106 @@
|
||||
import React from 'react';
|
||||
import clsx from 'clsx';
|
||||
import DocPaginator from '@theme/DocPaginator';
|
||||
import DocVersionBanner from '@theme/DocVersionBanner';
|
||||
import DocVersionBadge from '@theme/DocVersionBadge';
|
||||
import Seo from '@theme/Seo';
|
||||
import DocItemFooter from '@theme/DocItemFooter';
|
||||
import TOC from '@theme/TOC';
|
||||
import TOCCollapsible from '@theme/TOCCollapsible';
|
||||
import Heading from '@theme/Heading';
|
||||
import styles from './styles.module.css';
|
||||
import {ThemeClassNames, useWindowSize} from '@docusaurus/theme-common';
|
||||
import SidebarAd from '../../components/SidebarAd';
|
||||
|
||||
export default function DocItem(props) {
|
||||
const {content: DocContent} = props;
|
||||
const {metadata, frontMatter} = DocContent;
|
||||
const {
|
||||
image,
|
||||
keywords,
|
||||
hide_title: hideTitle,
|
||||
hide_table_of_contents: hideTableOfContents,
|
||||
toc_min_heading_level: tocMinHeadingLevel,
|
||||
toc_max_heading_level: tocMaxHeadingLevel,
|
||||
} = frontMatter;
|
||||
const {description, title} = metadata; // We only add a title if:
|
||||
// - user asks to hide it with front matter
|
||||
// - the markdown content does not already contain a top-level h1 heading
|
||||
|
||||
const shouldAddTitle =
|
||||
!hideTitle && typeof DocContent.contentTitle === 'undefined';
|
||||
const windowSize = useWindowSize();
|
||||
const canRenderTOC =
|
||||
!hideTableOfContents && DocContent.toc && DocContent.toc.length > 0;
|
||||
// const renderTocDesktop =
|
||||
// canRenderTOC && (windowSize === 'desktop' || windowSize === 'ssr');
|
||||
return (
|
||||
<>
|
||||
<Seo
|
||||
{...{
|
||||
title,
|
||||
description,
|
||||
keywords,
|
||||
image,
|
||||
}}
|
||||
/>
|
||||
|
||||
<div className="row">
|
||||
<div
|
||||
className={clsx('col', {
|
||||
[styles.docItemCol]: !hideTableOfContents,
|
||||
})}>
|
||||
<DocVersionBanner />
|
||||
<div className={styles.docItemContainer}>
|
||||
<article>
|
||||
<DocVersionBadge />
|
||||
|
||||
{canRenderTOC && (
|
||||
<TOCCollapsible
|
||||
toc={DocContent.toc}
|
||||
minHeadingLevel={tocMinHeadingLevel}
|
||||
maxHeadingLevel={tocMaxHeadingLevel}
|
||||
className={clsx(
|
||||
ThemeClassNames.docs.docTocMobile,
|
||||
styles.tocMobile,
|
||||
)}
|
||||
/>
|
||||
)}
|
||||
|
||||
<div
|
||||
className={clsx(ThemeClassNames.docs.docMarkdown, 'markdown')}>
|
||||
{/*
|
||||
Title can be declared inside md content or declared through front matter and added manually
|
||||
To make both cases consistent, the added title is added under the same div.markdown block
|
||||
See https://github.com/facebook/docusaurus/pull/4882#issuecomment-853021120
|
||||
*/}
|
||||
{shouldAddTitle && (
|
||||
<header>
|
||||
<Heading as="h1">{title}</Heading>
|
||||
</header>
|
||||
)}
|
||||
|
||||
<DocContent />
|
||||
</div>
|
||||
|
||||
<DocItemFooter {...props} />
|
||||
</article>
|
||||
<DocPaginator previous={metadata.previous} next={metadata.next} />
|
||||
<div className="margin-top--md">
|
||||
<SidebarAd />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="col col--3">
|
||||
{/* Change it such that sidebar ad is shown regardless whether there's a TOC */}
|
||||
<TOC
|
||||
toc={DocContent.toc}
|
||||
minHeadingLevel={tocMinHeadingLevel}
|
||||
maxHeadingLevel={tocMaxHeadingLevel}
|
||||
className={ThemeClassNames.docs.docTocDesktop}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
/**
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
.docItemContainer header + *,
|
||||
.docItemContainer article > *:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
@media (min-width: 997px) {
|
||||
.docItemCol {
|
||||
max-width: 75% !important;
|
||||
}
|
||||
|
||||
/* Prevent hydration FOUC, as the mobile TOC needs to be server-rendered */
|
||||
.tocMobile {
|
||||
display: none;
|
||||
}
|
||||
}
|
Loading…
Reference in new issue