Add ability to specify sub categories in sidebar.json (#891)

This commit is contained in:
Will Brock 2018-08-06 21:58:48 -04:00 committed by Yangshun Tay
parent dd9d05c84d
commit 16087b4428
14 changed files with 534 additions and 87 deletions

View file

@ -6,14 +6,30 @@
*/
const React = require('react');
const fs = require('fs');
const Container = require('./Container.js');
const SideNav = require('./nav/SideNav.js');
const Metadata = require('../core/metadata.js');
const readCategories = require('../server/readCategories.js');
let languages;
if (fs.existsSync(`../server/languages.js`)) {
languages = require(`../server/languages.js`);
} else {
languages = [
{
enabled: true,
name: 'English',
tag: 'en',
},
];
}
class DocsSidebar extends React.Component {
render() {
const sidebar = this.props.metadata.sidebar;
const docsCategories = readCategories(sidebar);
const docsCategories = readCategories(sidebar, Metadata, languages);
const categoryName = docsCategories[this.props.metadata.language][0].name;
if (!categoryName) {
return null;

View file

@ -65,7 +65,22 @@ class SideNav extends React.Component {
<h3 className="navGroupCategoryTitle">
{this.getLocalizedCategoryString(category.name)}
</h3>
<ul>{category.links.map(this.renderItemLink, this)}</ul>
<ul>
{category.links.map(this.renderItemLink, this)}
{category.sub_categories &&
category.sub_categories.map(this.renderSubCategory, this)}
</ul>
</div>
);
}
renderSubCategory(subCategory) {
return (
<div className="navGroup subNavGroup" key={subCategory.name}>
<h4 className="navGroupSubCategoryTitle">
{this.getLocalizedCategoryString(subCategory.name)}
</h4>
<ul>{subCategory.links.map(this.renderItemLink, this)}</ul>
</div>
);
}