feat: sub-categories in sidebar.json (#892)

* Add ability to specify sub categories in sidebar.json

* move v1 files to correct place

* refactor implementation

* refactor naming for implementation clarity
This commit is contained in:
Will Brock 2018-10-08 04:09:29 -04:00 committed by Endilie Yacop Sucipto
parent d052feec40
commit 954456088c
14 changed files with 535 additions and 88 deletions

View file

@ -6,15 +6,31 @@
*/
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 categoryName = docsCategories[this.props.metadata.language][0].name;
const docsCategories = readCategories(sidebar, Metadata, languages);
const categoryName = this.props.metadata.category;
if (!categoryName) {
return null;
}

View file

@ -67,7 +67,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>
);
}