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 IsEmpty => Text == null && Path == null;
public bool IsSelected(string documentName)
{
if (documentName == null)
@ -51,22 +51,25 @@ namespace Volo.Docs.Documents
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 n in Items)
foreach (var childItem in Items)
{
if (n.IsSelected(documentName))
if (childItem.IsSelected(documentName))
{
isSelected = true;
break;
return true;
}
}
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 isAnyNodeOpenedInThisLevel = node.Items?.Any(n => n.IsSelected(SelectedDocumentName)) ?? false;
var isAnyNodeOpenedInThisLevel = IsAnyNodeOpenedInThisLevel(node);
node.Items?.ForEach(innerNode =>
{
@ -66,6 +66,26 @@ namespace Volo.Docs.Areas.Documents.Helpers.TagHelpers
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)
{
var output = RenderNodeAsHtml(node);

Loading…
Cancel
Save