diff --git a/layouts/partials/components/sidebar/generate-section-data.html b/layouts/partials/components/sidebar/generate-section-data.html new file mode 100644 index 0000000..eb1df6d --- /dev/null +++ b/layouts/partials/components/sidebar/generate-section-data.html @@ -0,0 +1,51 @@ +{{- $context := . -}} + +{{- $pages := union .RegularPages .Sections -}} +{{- $pages = where $pages "Params.sidebar.exclude" "!=" true -}} + +{{- $data := slice -}} + +{{- range $pages.ByWeight -}} + {{ $structure := (partial "sidebar/section-walk" .) | unmarshal -}} + {{ $data = $data | append $structure -}} +{{ end -}} + +{{- define "partials/sidebar/section-walk" -}} + {{- with . -}} + { + "title": "{{ .LinkTitle | default .File.BaseFileName }}", + "link": "{{ .RelPermalink }}", + "toc": {{ partial "sidebar/section-page-toc" . }}, + "open": {{ .Params.sidebar.open | default false }} + {{- if .IsSection }}, + "items": [ + {{ $pages := union .RegularPages .Sections -}} + {{ $pages = where $pages "Params.sidebar.exclude" "!=" true -}} + {{ range $index, $page := $pages.ByWeight -}} + {{ partial "sidebar/section-walk" . }}{{ if not (ge $index (sub (len $pages) 1)) }},{{ end -}} + {{ end -}} + ] + {{ end -}} + } + {{- end }} +{{- end -}} + +{{- define "partials/sidebar/section-page-toc" -}} + {{/* Get level 2 headings list used mainly for mobile navigation */}} + [ + {{- with .Fragments.Headings -}} + {{/* Loop over level 1 headings */}} + {{- range . }} + {{- with .Headings }} + {{ $headings := . }} + {{- range $index, $heading := $headings }} + {{ $heading.Title | jsonify (dict "noHTMLEscape" true) }} + {{- if not (ge $index (sub (len $headings) 1)) }},{{ end -}} + {{ end -}} + {{- end -}} + {{ end -}} + {{- end -}} + ] +{{- end -}} + +{{ return ($data | jsonify (dict "noHTMLEscape" true)) }} diff --git a/layouts/partials/components/sidebar/render-data.html b/layouts/partials/components/sidebar/render-data.html index bbbb196..cc2bc2f 100644 --- a/layouts/partials/components/sidebar/render-data.html +++ b/layouts/partials/components/sidebar/render-data.html @@ -4,7 +4,7 @@ {{- range .data -}} {{- $active := or (eq $pageLink .link) (eq (strings.TrimSuffix "/" $pageLink) .link) -}} {{- $containsPage := hasPrefix $pageLink .link -}} - {{- $shouldOpen := or (.open) $containsPage $active | default true -}} + {{- $shouldOpen := or (.open) $containsPage $active | default false -}}
  • {{- partial "components/sidebar/item-link" (dict "active" $active "title" .title "link" .link "items" .items) -}} diff --git a/layouts/partials/components/sidebar/render-items.html b/layouts/partials/components/sidebar/render-items.html index d177185..61549aa 100644 --- a/layouts/partials/components/sidebar/render-items.html +++ b/layouts/partials/components/sidebar/render-items.html @@ -1,6 +1,5 @@ {{- $items := .items -}} {{- $pageLink := .link -}} -{{ $shouldOpen := true }}
    @@ -9,6 +8,10 @@ > {{- range $items }} {{- $active := or (eq $pageLink .link) (eq (strings.TrimSuffix "/" $pageLink) .link) -}} + {{- $containsPage := hasPrefix $pageLink .link -}} + {{- $shouldOpen := or (.open) $containsPage $active | default false -}} + +
  • {{- partial "components/sidebar/item-link" (dict "active" $active "title" .title "link" .link "items" .items) -}} {{- if .items -}} diff --git a/layouts/partials/sidebar-ng.html b/layouts/partials/sidebar-ng.html index e9d8689..0f1b226 100644 --- a/layouts/partials/sidebar-ng.html +++ b/layouts/partials/sidebar-ng.html @@ -8,8 +8,8 @@ {{- $navRoot := cond (eq site.Home.Type "docs") site.Home $context.FirstSection -}} {{- $pageURL := $context.RelPermalink -}} -{{ $data := partialCached "components/sidebar/get-section-data" $context $context.Section }} - +{{/* {{ $data := partialCached "components/sidebar/get-section-data" $context $context.Section }} */}} +{{ $data := partial "components/sidebar/generate-section-data" $navRoot | unmarshal }}