website/_includes/nav_docs.html (99 lines of code) (raw):
<nav class='toc' id="doc_nav" role="navigation" aria-label="Documentation navigation"></nav>
<script>
var docnavData = [
{% for group in site.data.nav_docs %}
{
group : "{{ group.title }}",
items : [
{% for item in group.items %}
{% for docitem in site.docs %}
{% if docitem.pageid == item.id %}
{% assign doc = docitem %}
{% endif %}
{% endfor %}
{
key : "{{ site.baseurl }}{{ doc.url }}",
title : "{{ doc.title }}",
url : "{{ site.baseurl }}{{ doc.url }}",
}{% unless forloop.last %},{% endunless %}
{% endfor %}
],
},
{% endfor %}
];
</script>
<script type="text/javascript">
window.addEventListener('load', function() {
var DocNav = React.createClass({displayName: "DocNav",
getInitialState: function() {
return {
toggleActive: false,
};
},
getDefaultProps: function() {
return {
currentDoc: "{{ page.title }}",
currentGroup: "{{ page.section }}",
data: docnavData,
}
},
handleSlide: function(id) {
this.setState({
toggleActive: !this.state.toggleActive,
});
},
render: function() {
var classes = React.addons.classSet({
'navToggle': true,
'navToggleActive': this.state.toggleActive,
});
var navClasses = React.addons.classSet({
'toggleNav': true,
'toggleNavActive': this.state.toggleActive,
});
return (
React.createElement("div", {className: navClasses},
React.createElement("section", null,
this.props.data.map(this.renderNavGroups)
),
React.createElement("div", {className: classes, onClick: this.handleSlide}, React.createElement("i", {className: "fa fa-chevron-circle-down"}))
)
);
},
renderNavGroups: function(child, index) {
var classes = React.addons.classSet({
'navGroup': true,
'navGroupActive': this.props.currentGroup === child.group,
});
return (
React.createElement("div", {className: classes, key: index},
React.createElement("h3", null, child.group),
React.createElement("ul", null,
child.items.map(this.renderNavItems)
)
)
);
},
renderNavItems: function(child, index) {
var itemClasses = React.addons.classSet({
'navListItem': true,
'navListItemActive': this.props.currentDoc === child.title,
});
var classes = React.addons.classSet({
'navItem': true,
'navItemActive': this.props.currentDoc === child.title,
});
return (
React.createElement("li", {className: itemClasses, key: index}, React.createElement("a", {className: classes, href: child.url}, child.title))
);
},
});
function docNavRender(docnavData) {
React.render(
React.createElement(DocNav, {data: docnavData}),
document.getElementById('doc_nav')
);
}
docNavRender(docnavData);
});
</script>