Browse Source

Implemented mid node selection.

pull/457/head
Alper Ebicoglu 8 years ago
parent
commit
866ee9a1ed
  1. 21
      modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/ContentWithDetailsDto.cs
  2. 22
      modules/docs/src/Volo.Docs.Web/Areas/Documents/Helpers/TagHelpers/TreeTagHelper.cs

21
modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/ContentWithDetailsDto.cs

@ -43,7 +43,7 @@ namespace Volo.Docs.Documents
public bool HasChildItems => Items != null && Items.Any(); public bool HasChildItems => Items != null && Items.Any();
public bool IsEmpty => Text == null && Path == null; public bool IsEmpty => Text == null && Path == null;
public bool IsSelected(string documentName) public bool IsSelected(string documentName)
{ {
if (documentName == null) if (documentName == null)
@ -51,22 +51,25 @@ namespace Volo.Docs.Documents
return false; return false;
} }
if (!HasChildItems) if (string.Equals(documentName, Path, StringComparison.InvariantCultureIgnoreCase))
{ {
return documentName == Path; return true;
}
if (Items == null)
{
return false;
} }
var isSelected = false; foreach (var childItem in Items)
foreach (var n in Items)
{ {
if (n.IsSelected(documentName)) if (childItem.IsSelected(documentName))
{ {
isSelected = true; return true;
break;
} }
} }
return isSelected; return false;
} }
} }

22
modules/docs/src/Volo.Docs.Web/Areas/Documents/Helpers/TagHelpers/TreeTagHelper.cs

@ -54,7 +54,7 @@ namespace Volo.Docs.Areas.Documents.Helpers.TagHelpers
{ {
var content = ""; var content = "";
var isAnyNodeOpenedInThisLevel = node.Items?.Any(n => n.IsSelected(SelectedDocumentName)) ?? false; var isAnyNodeOpenedInThisLevel = IsAnyNodeOpenedInThisLevel(node);
node.Items?.ForEach(innerNode => node.Items?.ForEach(innerNode =>
{ {
@ -66,6 +66,26 @@ namespace Volo.Docs.Areas.Documents.Helpers.TagHelpers
return result; return result;
} }
private bool IsAnyNodeOpenedInThisLevel(NavigationNode node)
{
if (node.Items == null)
{
return false;
}
if (node.IsSelected(SelectedDocumentName))
{
return true;
}
if (node.Items.Any(n => n.IsSelected(SelectedDocumentName)))
{
return true;
}
return false;
}
private string GetParentNode(NavigationNode node, bool isOpened) private string GetParentNode(NavigationNode node, bool isOpened)
{ {
var output = RenderNodeAsHtml(node); var output = RenderNodeAsHtml(node);

Loading…
Cancel
Save