diff --git a/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/ContentWithDetailsDto.cs b/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/ContentWithDetailsDto.cs
index 9d9dcc63ba..067ad5e759 100644
--- a/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/ContentWithDetailsDto.cs
+++ b/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/ContentWithDetailsDto.cs
@@ -42,6 +42,31 @@ namespace Volo.Docs.Documents
public bool HasChildItems => Items != null && Items.Any();
public bool IsEmpty => Text == null && Path == null;
+
+ public bool IsOpened(string documentName)
+ {
+ if (documentName == null)
+ {
+ return false;
+ }
+
+ if (!HasChildItems)
+ {
+ return documentName == Path;
+ }
+
+ var isOpened = false;
+ foreach (var n in Items)
+ {
+ if (n.IsOpened(documentName))
+ {
+ isOpened = true;
+ break;
+ }
+ }
+
+ return isOpened;
+ }
}
public class NavigationWithDetailsDto : DocumentWithDetailsDto
diff --git a/modules/docs/src/Volo.Docs.Web/Areas/Documents/Helpers/TagHelpers/TreeTagHelper.cs b/modules/docs/src/Volo.Docs.Web/Areas/Documents/Helpers/TagHelpers/TreeTagHelper.cs
index d1febd8b5b..1f38c22a78 100644
--- a/modules/docs/src/Volo.Docs.Web/Areas/Documents/Helpers/TagHelpers/TreeTagHelper.cs
+++ b/modules/docs/src/Volo.Docs.Web/Areas/Documents/Helpers/TagHelpers/TreeTagHelper.cs
@@ -1,4 +1,5 @@
using System;
+using System.Linq;
using System.Text;
using Microsoft.AspNetCore.Razor.TagHelpers;
using Volo.Docs.Documents;
@@ -15,9 +16,10 @@ namespace Volo.Docs.Areas.Documents.Helpers.TagHelpers
{1}
- {2}";
+ {2}
+ ";
- private const string UlItemTemplate = @"
+ private const string UlItemTemplate = @"";
@@ -30,45 +32,60 @@ namespace Volo.Docs.Areas.Documents.Helpers.TagHelpers
[HtmlAttributeName("project-name")]
public string ProjectName { get; set; }
+ [HtmlAttributeName("selected-document-name")]
+ public string SelectedDocumentName { get; set; }
+
public override void Process(TagHelperContext context, TagHelperOutput output)
{
var content = new StringBuilder();
+
RootNode.Items?.ForEach(childNode =>
- {
- content.Append(RenderTreeNodeAsHtml(childNode));
- });
+ {
+ content.Append(RenderNodeAsHtml(childNode));
+ });
output.Content.AppendHtml(content.ToString());
}
- private string RenderTreeNodeAsHtml(NavigationNode node)
+ private string RenderNodeAsHtml(NavigationNode node)
{
var content = "";
+ var isAnyNodeOpenedInThisLevel = node.Items?.Any(n => n.IsOpened(SelectedDocumentName)) ?? false;
+
node.Items?.ForEach(innerNode =>
{
- content += GetParentNode(innerNode);
+ content += GetParentNode(innerNode, isAnyNodeOpenedInThisLevel);
});
- return node.IsEmpty ?
- content :
- GetLeafNode(node, content);
+ var result = node.IsEmpty ? content : GetLeafNode(node, content);
+
+ return result;
}
- private string GetParentNode(NavigationNode node)
+ private string GetParentNode(NavigationNode node, bool isOpened)
{
- return string.Format(UlItemTemplate, RenderTreeNodeAsHtml(node));
+ var output = RenderNodeAsHtml(node);
+
+ return string.Format(UlItemTemplate, output, isOpened ? "" : "display: none;");
}
private string GetLeafNode(NavigationNode node, string content)
{
+ var cssClass = node.Path.IsNullOrEmpty() ? "tree-toggle" : "";
+
+ if (node.IsOpened(SelectedDocumentName))
+ {
+ cssClass += " opened";
+ }
+
return string.Format(LiItemTemplate,
node.Path.IsNullOrEmpty() ? "#" : "/documents/" + ProjectName + "/" + Version + "/" + node.Path,
node.Text.IsNullOrEmpty() ? "?" : node.Text,
content,
node.HasChildItems ? "nav-header" : "last-link",
node.HasChildItems ? "chevron-down" : "long-arrow-right",
- node.Path.IsNullOrEmpty() ? "tree-toggle" : "");
+ cssClass);
}
}
diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml
index 1602c00ec2..0251b1c323 100644
--- a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml
+++ b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml
@@ -79,6 +79,7 @@
diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/vs.js b/modules/docs/src/Volo.Docs.Web/Pages/Documents/vs.js
index 70ac87204f..01553608d8 100644
--- a/modules/docs/src/Volo.Docs.Web/Pages/Documents/vs.js
+++ b/modules/docs/src/Volo.Docs.Web/Pages/Documents/vs.js
@@ -2,10 +2,6 @@ $('.tree-toggle').click(function () {
$(this).parent().children('ul.tree').toggle(100);
$(this).toggleClass("opened");
});
-$(function () {
- $('.tree-toggle').parent().children('ul.tree').toggle(100);
-})
-
$(document).ready(function () {
var scrollTopBtn = $(".scroll-top-btn");
@@ -35,6 +31,7 @@ function handleSidebar() {
var sideBar = $(".docs-sidebar-wrapper");
sideBar.css("margin-left", sideBarPosition);
}
+
$(window).resize(function () {
handleSidebar();
});
@@ -75,15 +72,18 @@ $('.open-dmenu').on("click", function () {
(function ($) {
+
$(window).on("load", function () {
$("#sidebar-scroll").mCustomScrollbar({
theme: "minimal"
});
});
+
$(window).on("load", function () {
$("#index-scroll").mCustomScrollbar({
theme: "minimal-dark"
});
});
+
})(jQuery);