diff --git a/README.md b/README.md index c84ae51..521df46 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,8 @@ In your `.jsdoc.json` file, add a template option. "cleverLinks": false, "monospaceLinks": true, "useLongnameInNav": false, - "showInheritedInNav": true + "showInheritedInNav": true, + "showTutorialChildren": true }, "opts": { "destination": "./docs/", diff --git a/publish.js b/publish.js index 0eefeda..00e5eb5 100644 --- a/publish.js +++ b/publish.js @@ -369,63 +369,78 @@ function buildNav(members) { } function buildMemberNav(items, itemHeading, itemsSeen, linktoFn) { + var nav = [] + if (items && items.length) { + var itemsNav = "" + + nav.push(buildNavHeading(itemHeading)) + nav.push(buildMemberNavList(items, itemsSeen, linktoFn, itemHeading === 'Tutorials').join('')) + } + + return nav +} + +function buildMemberNavList(items, itemsSeen, linktoFn, areTutorialLinks) { var nav = [] var conf = env.conf.templates || {} conf.default = conf.default || {} - if (items && items.length) { - var itemsNav = "" - nav.push(buildNavHeading(itemHeading)) + items.forEach(function(item) { + var methods = find({ kind: "function", memberof: item.longname }) + var members = find({ kind: "member", memberof: item.longname }) + var displayName + + if (!hasOwnProp.call(item, "longname")) { + nav.push(buildNavItem(linkfoFn('', item.name))) + return + } - items.forEach(function(item) { - var methods = find({ kind: "function", memberof: item.longname }) - var members = find({ kind: "member", memberof: item.longname }) - var displayName + if (!hasOwnProp.call(itemsSeen, item.longname)) { + if (!!conf.default.useLongnameInNav) { + displayName = item.longname - if (!hasOwnProp.call(item, "longname")) { - nav.push(buildNavItem(linkfoFn('', item.name))) - return - } - - if (!hasOwnProp.call(itemsSeen, item.longname)) { - if (!!conf.default.useLongnameInNav) { - displayName = item.longname - - if (conf.default.useLongnameInNav > 0 && conf.default.useLongnameInNav !== true) { - var num = conf.default.useLongnameInNav - var cropped = item.longname.split(".").slice(-num).join(".") - if (cropped !== displayName) { - displayName = "..." + cropped - } + if (conf.default.useLongnameInNav > 0 && conf.default.useLongnameInNav !== true) { + var num = conf.default.useLongnameInNav + var cropped = item.longname.split(".").slice(-num).join(".") + if (cropped !== displayName) { + displayName = "..." + cropped } - } else { - displayName = item.name } + } else { + displayName = item.name + } - displayName = displayName.replace(/^module:/g, "") - - if (itemHeading === 'Tutorials') { - nav.push(buildNavItem(linktoFn(item.longname, displayName))) - } else { - nav.push(buildNavHeading(buildNavType(item.kind, linktoFn(item.longname, displayName)))) - } + displayName = displayName.replace(/^module:/g, "") - if (methods.length) { - methods.forEach(function(method) { - if (method.inherited && conf.showInheritedInNav === false) { - return - } + if (areTutorialLinks) { + nav.push(buildNavItem(linktoFn(item.longname, displayName))) - nav.push(buildNavItem(buildNavType(method.kind, linkto(method.longname, method.name)))) - }) + if(conf.showTutorialChildren !== false && item.children && item.children.length) { + nav.push( + '
' + ) } + } else { + nav.push(buildNavHeading(buildNavType(item.kind, linktoFn(item.longname, displayName)))) + } - itemsSeen[item.longname] = true + if (methods.length) { + methods.forEach(function(method) { + if (method.inherited && conf.showInheritedInNav === false) { + return + } + + nav.push(buildNavItem(buildNavType(method.kind, linkto(method.longname, method.name)))) + }) } - }) - } + + itemsSeen[item.longname] = true + } + }) return nav } diff --git a/static/styles/jsdoc-default.css b/static/styles/jsdoc-default.css index c14e3b9..c1ef364 100644 --- a/static/styles/jsdoc-default.css +++ b/static/styles/jsdoc-default.css @@ -262,6 +262,11 @@ nav li { font-size: 13px; } +.nav-tut-list { + margin: 0 0.5em; + padding: 0; +} + .type-function { background: #B3E5FC; color: #0288D1;