@@ -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
@@ -196,10 +201,6 @@ class HtmlRenderer(rootPackage: Member, members: Map[DRI, Member])(using ctx: Do
196
201
),
197
202
),
198
203
div(id := " leftColumn" )(
199
- div(cls:= " switcher-container" )(
200
- button(cls:= " switcher h100" )(raw(" Docs" )),
201
- button(cls:= " switcher h100" )(raw(" API" )),
202
- ),
203
204
// div(id := "logo")(
204
205
// projectLogo,
205
206
// span(
@@ -220,9 +221,17 @@ class HtmlRenderer(rootPackage: Member, members: Map[DRI, Member])(using ctx: Do
220
221
// )
221
222
// ),
222
223
// div(id := "paneSearch"),
223
- nav(id := " sideMenu2" )(
224
- buildNavigation(link)
225
- ),
224
+ buildNavigation(link) match {
225
+ case ((isApiActive, apiNav), (isDocsActive, docsNav)) =>
226
+ Seq (
227
+ div(cls:= " switcher-container" )(
228
+ button(id := " docs-nav-button" , cls:= s " switcher h100 ${if ! isApiActive && isDocsActive then " selected" else " " }" )(raw(" Docs" )),
229
+ button(id := " api-nav-button" , cls:= s " switcher h100 ${if isApiActive then " selected" else " " }" )(raw(" API" )),
230
+ ),
231
+ nav(id := " api-nav" , cls := s " side-menu ${if isApiActive then " selected" else " " }" )(apiNav),
232
+ nav(id := " docs-nav" , cls := s " side-menu ${if ! isApiActive && isDocsActive then " selected" else " " }" )(docsNav)
233
+ )
234
+ },
226
235
),
227
236
div(id := " main" )(
228
237
div (id := " leftToggler" )(
0 commit comments