mirror of
https://github.com/facebook/docusaurus.git
synced 2025-05-12 00:27:21 +02:00
misc(v2): rename components (#1434)
* misc(v2): clean up work * misc(v2): rename components
This commit is contained in:
parent
ab4f4bd802
commit
fb56f853af
16 changed files with 51 additions and 46 deletions
|
@ -24,8 +24,8 @@ const DEFAULT_OPTIONS = {
|
||||||
routeBasePath: 'blog', // URL Route.
|
routeBasePath: 'blog', // URL Route.
|
||||||
include: ['*.md', '*.mdx'], // Extensions to include.
|
include: ['*.md', '*.mdx'], // Extensions to include.
|
||||||
pageCount: 10, // How many entries per page.
|
pageCount: 10, // How many entries per page.
|
||||||
blogPageComponent: '@theme/BlogPage',
|
blogListComponent: '@theme/BlogList',
|
||||||
blogPostComponent: '@theme/BlogPost',
|
blogItemComponent: '@theme/BlogPost',
|
||||||
};
|
};
|
||||||
|
|
||||||
class DocusaurusPluginContentBlog {
|
class DocusaurusPluginContentBlog {
|
||||||
|
@ -113,7 +113,7 @@ class DocusaurusPluginContentBlog {
|
||||||
}
|
}
|
||||||
|
|
||||||
async contentLoaded({content, actions}) {
|
async contentLoaded({content, actions}) {
|
||||||
const {blogPageComponent, blogPostComponent} = this.options;
|
const {blogListComponent, blogItemComponent} = this.options;
|
||||||
const {addRoute, createData} = actions;
|
const {addRoute, createData} = actions;
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
content.map(async metadataItem => {
|
content.map(async metadataItem => {
|
||||||
|
@ -125,7 +125,7 @@ class DocusaurusPluginContentBlog {
|
||||||
if (isBlogPage) {
|
if (isBlogPage) {
|
||||||
addRoute({
|
addRoute({
|
||||||
path: permalink,
|
path: permalink,
|
||||||
component: blogPageComponent,
|
component: blogListComponent,
|
||||||
exact: true,
|
exact: true,
|
||||||
modules: {
|
modules: {
|
||||||
entries: metadataItem.posts.map(post => ({
|
entries: metadataItem.posts.map(post => ({
|
||||||
|
@ -145,7 +145,7 @@ class DocusaurusPluginContentBlog {
|
||||||
|
|
||||||
addRoute({
|
addRoute({
|
||||||
path: permalink,
|
path: permalink,
|
||||||
component: blogPostComponent,
|
component: blogItemComponent,
|
||||||
exact: true,
|
exact: true,
|
||||||
modules: {
|
modules: {
|
||||||
content: metadataItem.source,
|
content: metadataItem.source,
|
||||||
|
|
|
@ -21,8 +21,8 @@ const DEFAULT_OPTIONS = {
|
||||||
// TODO: Change format to array.
|
// TODO: Change format to array.
|
||||||
sidebarPath: '', // Path to sidebar configuration for showing a list of markdown pages.
|
sidebarPath: '', // Path to sidebar configuration for showing a list of markdown pages.
|
||||||
// TODO: Settle themeing.
|
// TODO: Settle themeing.
|
||||||
docLayoutComponent: '@theme/Doc',
|
docLayoutComponent: '@theme/DocPage',
|
||||||
docItemComponent: '@theme/DocBody',
|
docItemComponent: '@theme/DocItem',
|
||||||
};
|
};
|
||||||
|
|
||||||
class DocusaurusPluginContentDocs {
|
class DocusaurusPluginContentDocs {
|
||||||
|
|
|
@ -13,7 +13,7 @@ const DEFAULT_OPTIONS = {
|
||||||
path: 'pages', // Path to data on filesystem, relative to site dir.
|
path: 'pages', // Path to data on filesystem, relative to site dir.
|
||||||
routeBasePath: '', // URL Route.
|
routeBasePath: '', // URL Route.
|
||||||
include: ['**/*.{js,jsx}'], // Extensions to include.
|
include: ['**/*.{js,jsx}'], // Extensions to include.
|
||||||
component: '@theme/Pages',
|
component: '@theme/Page',
|
||||||
};
|
};
|
||||||
|
|
||||||
class DocusaurusPluginContentPages {
|
class DocusaurusPluginContentPages {
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
* LICENSE file in the root directory of this source tree.
|
* LICENSE file in the root directory of this source tree.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import React, {useState} from 'react';
|
import React from 'react';
|
||||||
import {renderRoutes} from 'react-router-config';
|
import {renderRoutes} from 'react-router-config';
|
||||||
|
|
||||||
import Head from '@docusaurus/Head'; // eslint-disable-line
|
import Head from '@docusaurus/Head'; // eslint-disable-line
|
||||||
|
@ -15,9 +15,8 @@ import DocusaurusContext from '@docusaurus/context'; // eslint-disable-line
|
||||||
import PendingNavigation from './PendingNavigation';
|
import PendingNavigation from './PendingNavigation';
|
||||||
|
|
||||||
function App() {
|
function App() {
|
||||||
const [context, setContext] = useState({});
|
|
||||||
return (
|
return (
|
||||||
<DocusaurusContext.Provider value={{siteConfig, ...context, setContext}}>
|
<DocusaurusContext.Provider value={{siteConfig}}>
|
||||||
{/* TODO: this link stylesheet to infima is temporary */}
|
{/* TODO: this link stylesheet to infima is temporary */}
|
||||||
<Head>
|
<Head>
|
||||||
<link
|
<link
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
import Layout from '@theme/Layout'; // eslint-disable-line
|
import Layout from '@theme/Layout'; // eslint-disable-line
|
||||||
import Post from '../Post';
|
import BlogPostItem from '../BlogPostItem';
|
||||||
|
|
||||||
function BlogPage(props) {
|
function BlogPage(props) {
|
||||||
const {
|
const {
|
||||||
|
@ -23,9 +23,9 @@ function BlogPage(props) {
|
||||||
<div className="col col--6 col--offset-3">
|
<div className="col col--6 col--offset-3">
|
||||||
{BlogPosts.map((PostContent, index) => (
|
{BlogPosts.map((PostContent, index) => (
|
||||||
<div className="margin-bottom--xl" key={index}>
|
<div className="margin-bottom--xl" key={index}>
|
||||||
<Post truncated metadata={posts[index]}>
|
<BlogPostItem truncated metadata={posts[index]}>
|
||||||
<PostContent />
|
<PostContent />
|
||||||
</Post>
|
</BlogPostItem>
|
||||||
</div>
|
</div>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
|
@ -8,20 +8,20 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
import Layout from '@theme/Layout'; // eslint-disable-line
|
import Layout from '@theme/Layout'; // eslint-disable-line
|
||||||
import Post from '../Post';
|
import BlogPostItem from '../BlogPostItem';
|
||||||
|
|
||||||
|
function BlogPostPage(props) {
|
||||||
|
const {content: BlogPostContents, metadata} = props;
|
||||||
|
|
||||||
function BlogPost(props) {
|
|
||||||
const {content, metadata} = props;
|
|
||||||
const BlogPostContents = content;
|
|
||||||
return (
|
return (
|
||||||
<Layout title={metadata.title}>
|
<Layout title={metadata.title}>
|
||||||
{BlogPostContents && (
|
{BlogPostContents && (
|
||||||
<div className="container margin-vert--xl">
|
<div className="container margin-vert--xl">
|
||||||
<div className="row">
|
<div className="row">
|
||||||
<div className="col col--6 col--offset-3">
|
<div className="col col--6 col--offset-3">
|
||||||
<Post metadata={metadata}>
|
<BlogPostItem metadata={metadata}>
|
||||||
<BlogPostContents />
|
<BlogPostContents />
|
||||||
</Post>
|
</BlogPostItem>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -30,4 +30,4 @@ function BlogPost(props) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default BlogPost;
|
export default BlogPostPage;
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import Link from '@docusaurus/Link';
|
import Link from '@docusaurus/Link';
|
||||||
|
|
||||||
function Post(props) {
|
function BlogPostItem(props) {
|
||||||
const {metadata, children, truncated} = props;
|
const {metadata, children, truncated} = props;
|
||||||
const renderPostHeader = () => {
|
const renderPostHeader = () => {
|
||||||
if (!metadata) {
|
if (!metadata) {
|
||||||
|
@ -86,7 +86,7 @@ function Post(props) {
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
{renderPostHeader()}
|
{renderPostHeader()}
|
||||||
<article>{children}</article>
|
<article className="markdown">{children}</article>
|
||||||
{truncated && (
|
{truncated && (
|
||||||
<div className="text--right">
|
<div className="text--right">
|
||||||
<Link className="button button--secondary" to={metadata.permalink}>
|
<Link className="button button--secondary" to={metadata.permalink}>
|
||||||
|
@ -98,4 +98,4 @@ function Post(props) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default Post;
|
export default BlogPostItem;
|
|
@ -7,12 +7,13 @@
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
import DocsPaginator from '@theme/DocsPaginator'; // eslint-disable-line
|
|
||||||
import Head from '@docusaurus/Head';
|
import Head from '@docusaurus/Head';
|
||||||
|
|
||||||
|
import DocPaginator from '../DocPaginator';
|
||||||
|
|
||||||
import styles from './styles.module.css';
|
import styles from './styles.module.css';
|
||||||
|
|
||||||
const Headings = ({headings, isChild}) => {
|
function Headings({headings, isChild}) {
|
||||||
if (!headings.length) return null;
|
if (!headings.length) return null;
|
||||||
return (
|
return (
|
||||||
<ul className={isChild ? 'contents' : 'contents contents__left-border'}>
|
<ul className={isChild ? 'contents' : 'contents contents__left-border'}>
|
||||||
|
@ -26,10 +27,11 @@ const Headings = ({headings, isChild}) => {
|
||||||
))}
|
))}
|
||||||
</ul>
|
</ul>
|
||||||
);
|
);
|
||||||
};
|
}
|
||||||
|
|
||||||
function DocBody(props) {
|
function DocItem(props) {
|
||||||
const {metadata, content: DocContent, docsMetadata} = props;
|
const {metadata, content: DocContent, docsMetadata} = props;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={styles.docBody}>
|
<div className={styles.docBody}>
|
||||||
<Head>
|
<Head>
|
||||||
|
@ -46,9 +48,9 @@ function DocBody(props) {
|
||||||
<DocContent />
|
<DocContent />
|
||||||
</div>
|
</div>
|
||||||
</article>
|
</article>
|
||||||
<div className="margin-vert--lg">
|
<div className="margin-vert--lg" />
|
||||||
<DocsPaginator docsMetadata={docsMetadata} metadata={metadata} />
|
|
||||||
</div>
|
<DocPaginator docsMetadata={docsMetadata} metadata={metadata} />
|
||||||
</div>
|
</div>
|
||||||
<div className="col col--3 col--offset-1">
|
<div className="col col--3 col--offset-1">
|
||||||
{DocContent.rightToc && <Headings headings={DocContent.rightToc} />}
|
{DocContent.rightToc && <Headings headings={DocContent.rightToc} />}
|
||||||
|
@ -59,4 +61,4 @@ function DocBody(props) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default DocBody;
|
export default DocItem;
|
|
@ -9,16 +9,18 @@ import React from 'react';
|
||||||
import {renderRoutes} from 'react-router-config';
|
import {renderRoutes} from 'react-router-config';
|
||||||
|
|
||||||
import Layout from '@theme/Layout'; // eslint-disable-line
|
import Layout from '@theme/Layout'; // eslint-disable-line
|
||||||
import Sidebar from '@theme/Sidebar'; // eslint-disable-line
|
|
||||||
|
|
||||||
function Doc(props) {
|
import DocSidebar from '../DocSidebar';
|
||||||
|
|
||||||
|
function DocPage(props) {
|
||||||
const {route, docsMetadata, location} = props;
|
const {route, docsMetadata, location} = props;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Layout noFooter>
|
<Layout noFooter>
|
||||||
<div className="container container--fluid">
|
<div className="container container--fluid">
|
||||||
<div className="row">
|
<div className="row">
|
||||||
<div className="col col--3">
|
<div className="col col--3">
|
||||||
<Sidebar docsMetadata={docsMetadata} location={location} />
|
<DocSidebar docsMetadata={docsMetadata} location={location} />
|
||||||
</div>
|
</div>
|
||||||
<div className="col col--9">
|
<div className="col col--9">
|
||||||
{renderRoutes(route.routes, {docsMetadata})}
|
{renderRoutes(route.routes, {docsMetadata})}
|
||||||
|
@ -29,4 +31,4 @@ function Doc(props) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default Doc;
|
export default DocPage;
|
|
@ -8,9 +8,11 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import Link from '@docusaurus/Link';
|
import Link from '@docusaurus/Link';
|
||||||
|
|
||||||
function DocsPaginator(props) {
|
function DocPaginator(props) {
|
||||||
const {docsMetadata, metadata} = props;
|
const {
|
||||||
const {docs} = docsMetadata;
|
docsMetadata: {docs},
|
||||||
|
metadata,
|
||||||
|
} = props;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="row">
|
<div className="row">
|
||||||
|
@ -39,4 +41,4 @@ function DocsPaginator(props) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default DocsPaginator;
|
export default DocPaginator;
|
|
@ -11,7 +11,7 @@ import Link from '@docusaurus/Link'; // eslint-disable-line
|
||||||
|
|
||||||
import './styles.css';
|
import './styles.css';
|
||||||
|
|
||||||
function Sidebar(props) {
|
function DocSidebar(props) {
|
||||||
const {docsMetadata, location} = props;
|
const {docsMetadata, location} = props;
|
||||||
|
|
||||||
const id =
|
const id =
|
||||||
|
@ -85,4 +85,4 @@ function Sidebar(props) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default Sidebar;
|
export default DocSidebar;
|
|
@ -11,7 +11,7 @@ import styles from './styles.module.css';
|
||||||
|
|
||||||
export default props => {
|
export default props => {
|
||||||
if (props.error) {
|
if (props.error) {
|
||||||
console.log(props.error);
|
console.warn(props.error);
|
||||||
return <div align="center">Error</div>;
|
return <div align="center">Error</div>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,8 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import Layout from '@theme/Layout'; // eslint-disable-line
|
import Layout from '@theme/Layout'; // eslint-disable-line
|
||||||
|
|
||||||
function Pages({content: PageContent}) {
|
function Page(props) {
|
||||||
|
const {content: PageContent} = props;
|
||||||
return (
|
return (
|
||||||
<Layout>
|
<Layout>
|
||||||
<PageContent />
|
<PageContent />
|
||||||
|
@ -16,4 +17,4 @@ function Pages({content: PageContent}) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default Pages;
|
export default Page;
|
|
@ -15,7 +15,6 @@ module.exports = function loadConfig(siteDir) {
|
||||||
: path.resolve(__dirname, '../../default-theme');
|
: path.resolve(__dirname, '../../default-theme');
|
||||||
|
|
||||||
const requiredComponents = ['Loading', 'NotFound'];
|
const requiredComponents = ['Loading', 'NotFound'];
|
||||||
|
|
||||||
requiredComponents.forEach(component => {
|
requiredComponents.forEach(component => {
|
||||||
try {
|
try {
|
||||||
require.resolve(path.join(themePath, component));
|
require.resolve(path.join(themePath, component));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue