mirror of
https://github.com/facebook/docusaurus.git
synced 2025-05-14 09:37:37 +02:00
feat(v2): add TOC to markdown pages #3529
This commit is contained in:
parent
0951eef2d7
commit
637fe0087d
3 changed files with 27 additions and 5 deletions
|
@ -14,6 +14,7 @@ declare module '@theme/MDXPage' {
|
||||||
readonly title: string;
|
readonly title: string;
|
||||||
readonly description: string;
|
readonly description: string;
|
||||||
readonly wrapperClassName?: string;
|
readonly wrapperClassName?: string;
|
||||||
|
readonly hide_table_of_contents?: string;
|
||||||
};
|
};
|
||||||
readonly metadata: {readonly permalink: string};
|
readonly metadata: {readonly permalink: string};
|
||||||
readonly rightToc: readonly MarkdownRightTableOfContents[];
|
readonly rightToc: readonly MarkdownRightTableOfContents[];
|
||||||
|
|
|
@ -10,11 +10,18 @@ import Layout from '@theme/Layout';
|
||||||
import {MDXProvider} from '@mdx-js/react';
|
import {MDXProvider} from '@mdx-js/react';
|
||||||
import MDXComponents from '@theme/MDXComponents';
|
import MDXComponents from '@theme/MDXComponents';
|
||||||
import type {Props} from '@theme/MDXPage';
|
import type {Props} from '@theme/MDXPage';
|
||||||
|
import TOC from '@theme/TOC';
|
||||||
|
|
||||||
function MDXPage(props: Props): JSX.Element {
|
function MDXPage(props: Props): JSX.Element {
|
||||||
const {content: MDXPageContent} = props;
|
const {content: MDXPageContent} = props;
|
||||||
const {frontMatter, metadata} = MDXPageContent;
|
const {frontMatter, metadata} = MDXPageContent;
|
||||||
const {title, description, wrapperClassName} = frontMatter;
|
|
||||||
|
const {
|
||||||
|
title,
|
||||||
|
description,
|
||||||
|
wrapperClassName,
|
||||||
|
hide_table_of_contents: hideTableOfContents,
|
||||||
|
} = frontMatter;
|
||||||
const {permalink} = metadata;
|
const {permalink} = metadata;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -24,10 +31,23 @@ function MDXPage(props: Props): JSX.Element {
|
||||||
permalink={permalink}
|
permalink={permalink}
|
||||||
wrapperClassName={wrapperClassName}>
|
wrapperClassName={wrapperClassName}>
|
||||||
<main>
|
<main>
|
||||||
<div className="container margin-vert--lg padding-vert--lg">
|
<div className="container container--fluid">
|
||||||
<MDXProvider components={MDXComponents}>
|
<div className="margin-vert--lg padding-vert--lg">
|
||||||
<MDXPageContent />
|
<div className="row">
|
||||||
</MDXProvider>
|
<div className="col col--8 col--offset-2">
|
||||||
|
<div className="container">
|
||||||
|
<MDXProvider components={MDXComponents}>
|
||||||
|
<MDXPageContent />
|
||||||
|
</MDXProvider>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{!hideTableOfContents && MDXPageContent.rightToc && (
|
||||||
|
<div className="col col--2">
|
||||||
|
<TOC headings={MDXPageContent.rightToc} />
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
</Layout>
|
</Layout>
|
||||||
|
|
|
@ -58,6 +58,7 @@ Create a file `/src/pages/helloMarkdown.md`:
|
||||||
---
|
---
|
||||||
title: my hello page title
|
title: my hello page title
|
||||||
description: my hello page description
|
description: my hello page description
|
||||||
|
hide_table_of_contents: true
|
||||||
---
|
---
|
||||||
|
|
||||||
# Hello
|
# Hello
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue