@@ -99,19 +99,20 @@ class HtmlRenderer(rootPackage: Member, members: Map[DRI, Member])(using ctx: Do
99
99
case None => " "
100
100
)
101
101
102
- private def buildNavigation (pageLink : Link ): AppliedTag =
102
+ private def buildNavigation (pageLink : Link ): (( Boolean , AppliedTag ), ( Boolean , AppliedTag )) =
103
103
def navigationIcon (member : Member ) = member match {
104
104
case m if m.needsOwnPage => Seq (span(cls := s " micon ${member.kind.name.take(2 )}" ))
105
105
case _ => Nil
106
106
}
107
107
108
- def renderNested (nav : Page , toplevel : Boolean = false ): (Boolean , AppliedTag ) =
108
+ def renderNested (nav : Page , apiNav : Boolean , nestLevel : Int ): (Boolean , AppliedTag ) =
109
109
val isSelected = nav.link.dri == pageLink.dri
110
110
111
111
def linkHtml (expanded : Boolean = false , withArrow : Boolean = false ) =
112
112
val attrs : Seq [String ] = Seq (
113
113
Option .when(isSelected)(" selected h100" ),
114
- Option .when(expanded)(" expanded" )
114
+ Option .when(expanded)(" expanded cs" ),
115
+ Option .when(! apiNav)(" de" )
115
116
).flatten
116
117
val icon = nav.content match {
117
118
case m : Member => navigationIcon(m)
@@ -124,19 +125,23 @@ class HtmlRenderer(rootPackage: Member, members: Map[DRI, Member])(using ctx: Do
124
125
)
125
126
)
126
127
127
- nav.children.filterNot(_.hidden) match
128
- case Nil => isSelected -> div(cls := s " ni $ {if isSelected then " expanded" else " " }" )(linkHtml())
128
+ nav.children.filter(_.content. isInstanceOf [ Member ] == apiNav). filterNot(_.hidden) match
129
+ case Nil => isSelected -> div(cls := s " ni n $nestLevel $ {if isSelected || nestLevel == 0 then " expanded" else " " }" )(linkHtml())
129
130
case children =>
130
- val nested = children.map(renderNested(_))
131
+ val nested = children.map(renderNested(_, apiNav, nestLevel + 1 ))
131
132
val expanded = nested.exists(_._1) || isSelected
132
133
val attr =
133
- if expanded || isSelected || toplevel then Seq (cls := " ni expanded" ) else Seq (cls := " ni body-small" )
134
+ if expanded || isSelected || nestLevel == 0 then Seq (cls := s " ni n $nestLevel expanded" ) else Seq (cls := s " ni n $nestLevel body-small " )
134
135
(isSelected || expanded) -> div(attr)(
135
136
linkHtml(expanded, true ),
136
137
nested.map(_._2)
137
138
)
138
139
139
- renderNested(navigablePage, toplevel = true )._2
140
+
141
+ val apiNav = renderNested(navigablePage, true , 0 )
142
+ val docsNav = renderNested(navigablePage, false , 0 )
143
+
144
+ (apiNav, docsNav)
140
145
141
146
private def hasSocialLinks = ! args.socialLinks.isEmpty
142
147
@@ -180,10 +185,6 @@ class HtmlRenderer(rootPackage: Member, members: Map[DRI, Member])(using ctx: Do
180
185
),
181
186
),
182
187
div(id := " leftColumn" )(
183
- div(cls:= " switcher-container" )(
184
- button(cls:= " switcher h100" )(raw(" Docs" )),
185
- button(cls:= " switcher h100" )(raw(" API" )),
186
- ),
187
188
// div(id := "logo")(
188
189
// projectLogo,
189
190
// span(
@@ -204,9 +205,17 @@ class HtmlRenderer(rootPackage: Member, members: Map[DRI, Member])(using ctx: Do
204
205
// )
205
206
// ),
206
207
// div(id := "paneSearch"),
207
- nav(id := " sideMenu2" )(
208
- buildNavigation(link)
209
- ),
208
+ buildNavigation(link) match {
209
+ case ((isApiActive, apiNav), (isDocsActive, docsNav)) =>
210
+ Seq (
211
+ div(cls:= " switcher-container" )(
212
+ button(id := " docs-nav-button" , cls:= s " switcher h100 ${if ! isApiActive && isDocsActive then " selected" else " " }" )(raw(" Docs" )),
213
+ button(id := " api-nav-button" , cls:= s " switcher h100 ${if isApiActive then " selected" else " " }" )(raw(" API" )),
214
+ ),
215
+ nav(id := " api-nav" , cls := s " side-menu ${if isApiActive then " selected" else " " }" )(apiNav),
216
+ nav(id := " docs-nav" , cls := s " side-menu ${if ! isApiActive && isDocsActive then " selected" else " " }" )(docsNav)
217
+ )
218
+ },
210
219
),
211
220
div(id := " main" )(
212
221
div (id := " leftToggler" )(
0 commit comments