-
Notifications
You must be signed in to change notification settings - Fork 43
Expand file tree
/
Copy path_TocTreeNav.cshtml
More file actions
108 lines (107 loc) · 3.37 KB
/
_TocTreeNav.cshtml
File metadata and controls
108 lines (107 loc) · 3.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
@using Elastic.Documentation.Navigation
@using Elastic.Documentation.Navigation.Isolated
@using Elastic.Documentation.Navigation.Isolated.Leaf
@using Elastic.Documentation.Site.Navigation
@inherits RazorSlice<NavigationTreeItem>
@{
var isTopLevel = Model.Level == 0;
}
@if (isTopLevel && !Model.IsGlobalAssemblyBuild && !Model.IsPrimaryNavEnabled && !Model.SubTree.Index.Hidden)
{
var idx = Model.SubTree.Index;
<li class="flex group/li pr-8 mt-6">
<a
href="@idx.Url"
@Model.Htmx.GetNavHxAttributes(true)
class="sidebar-link grow group-[.current]/li:text-blue-elastic!"
>
@idx.NavigationTitle
</a>
</li>
}
@foreach (var item in Model.SubTree.NavigationItems)
{
if (item.Hidden)
{
continue;
}
if (item.Parent is not null && item.Parent.Index == item)
{
continue;
}
if (item is INodeNavigationItem<INavigationModel, INavigationItem> { NavigationItems.Count: 0 } group)
{
<li class="flex group/li pr-8 @(isTopLevel ? "font-semibold mt-6" : "mt-4")">
<a
href="@group.Url"
@Model.Htmx.GetNavHxAttributes(true)
class="sidebar-link group-[.current]/li:text-blue-elastic!"
>
@group.NavigationTitle
</a>
</li>
}
else if (item is INodeNavigationItem<INavigationModel, INavigationItem> folder)
{
var g = folder;
var allHidden = folder.NavigationItems.All(n => n.Hidden);
<li class="flex flex-wrap group-navigation @(isTopLevel ? "mt-6" : "mt-4") relative">
<div class="peer grid grid-cols-[1fr_auto] w-full">
<a
href="@(g.Url)"
@Model.Htmx.GetNavHxAttributes(true)
class="sidebar-link pr-2 content-center @(isTopLevel ? "font-semibold" : "") group-[.current]/li:text-blue-elastic!">
@(g.NavigationTitle)
</a>
@if (!allHidden)
{
<label for="@folder.Id" class="group/label flex mr-2 items-start">
<div class="hover:bg-grey-20 rounded-sm p-1 cursor-pointer">
<svg
xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 24 24"
stroke-width="1.5"
stroke="currentColor"
class="shrink-0 -rotate-90 group-has-checked/label:rotate-0 w-3.5">
<path stroke-linecap="round" stroke-linejoin="round" d="m19.5 8.25-7.5 7.5-7.5-7.5"/>
</svg>
</div>
<input
id="@folder.Id"
type="checkbox"
class="hidden"
aria-hidden="true">
</label>
}
</div>
@if (g.NavigationItems.Count > 0)
{
<ul class="w-full hidden peer-has-checked:block ml-4 relative before:content-[''] before:absolute before:-left-[calc(var(--spacing)*4-1px)] before:top-0 before:bottom-0 before:w-px before:bg-grey-20 before:peer-has-checked:block peer-has-[.current]:before:bg-grey-40 has-[.current]:before:bg-grey-40">
@await RenderPartialAsync(_TocTreeNav.Create(new NavigationTreeItem
{
IsPrimaryNavEnabled = Model.IsPrimaryNavEnabled,
IsGlobalAssemblyBuild = Model.IsGlobalAssemblyBuild,
Level = Model.Level + 1,
SubTree = g,
RootNavigationId = Model.RootNavigationId,
Htmx = Model.Htmx
}))
</ul>
}
</li>
}
else if (item is ILeafNavigationItem<INavigationModel> leaf)
{
var hasSameTopLevelGroup = true;
<li class="flex group/li pr-8 @(isTopLevel ? "font-semibold mt-6" : "mt-4")">
<a
href="@leaf.Url"
@Model.Htmx.GetNavHxAttributes(hasSameTopLevelGroup)
class="sidebar-link grow group-[.current]/li:text-blue-elastic!"
>
@leaf.NavigationTitle
</a>
</li>
}
}