42 lines
1.3 KiB
JavaScript
42 lines
1.3 KiB
JavaScript
/**
|
|
* 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.
|
|
*/
|
|
import React, {memo} from 'react';
|
|
import {useThemeConfig} from '@docusaurus/theme-common';
|
|
import {groupBlogSidebarItemsByYear} from '@docusaurus/plugin-content-blog/client';
|
|
import Heading from '@theme/Heading';
|
|
function BlogSidebarYearGroup({year, yearGroupHeadingClassName, children}) {
|
|
return (
|
|
<div role="group">
|
|
<Heading as="h3" className={yearGroupHeadingClassName}>
|
|
{year}
|
|
</Heading>
|
|
{children}
|
|
</div>
|
|
);
|
|
}
|
|
function BlogSidebarContent({items, yearGroupHeadingClassName, ListComponent}) {
|
|
const themeConfig = useThemeConfig();
|
|
if (themeConfig.blog.sidebar.groupByYear) {
|
|
const itemsByYear = groupBlogSidebarItemsByYear(items);
|
|
return (
|
|
<>
|
|
{itemsByYear.map(([year, yearItems]) => (
|
|
<BlogSidebarYearGroup
|
|
key={year}
|
|
year={year}
|
|
yearGroupHeadingClassName={yearGroupHeadingClassName}>
|
|
<ListComponent items={yearItems} />
|
|
</BlogSidebarYearGroup>
|
|
))}
|
|
</>
|
|
);
|
|
} else {
|
|
return <ListComponent items={items} />;
|
|
}
|
|
}
|
|
export default memo(BlogSidebarContent);
|