feat(search): allow complete section customization

This allows configuring the searchable sections and which sections show the search box. In addition the javascript is only included on pages where the search box is visible.
This commit is contained in:
James Elliott 2022-06-25 11:07:03 +10:00
parent 75d250b240
commit 00e4a7886e
No known key found for this signature in database
GPG Key ID: 0F1C4A096E857E49
4 changed files with 15 additions and 5 deletions

View File

@ -94,7 +94,13 @@ Source:
// https://discourse.gohugo.io/t/range-length-or-last-element/3803/2
{{ $list := (where .Site.Pages "Section" "docs") -}}
{{ $list := slice }}
{{- if eq (len .Site.Params.options.searchSectionsIndex) 0 }}
{{- $list = (where .Site.Pages "Section" "docs") }}
{{- else }}
{{- $list = (where .Site.Pages "Type" "in" .Site.Params.options.searchSectionsIndex) }}
{{- end }}
{{ $len := (len $list) -}}
{{ range $index, $element := $list -}}

View File

@ -83,6 +83,8 @@ lastMod = false
clipBoard = true
instantPage = true
flexSearch = true
searchSectionsShow = []
searchSectionsIndex = []
darkMode = true
bootStrapJs = true
breadCrumb = false

View File

@ -39,6 +39,8 @@
{{ $slice = $slice | append $flexSearch -}}
{{ end -}}
{{ $includeFlexSearch := and .Site.Params.options.flexSearch (or (eq (len .Site.Params.options.searchSectionsShow) 0) (in .Site.Params.options.searchSectionsShow .Section)) }}
{{ if .Site.Params.options.darkMode -}}
{{ $darkMode := resources.Get "js/darkmode.js" -}}
{{ $darkMode := $darkMode | js.Build -}}
@ -77,7 +79,7 @@
{{ with .Params.mermaid -}}
<script src="{{ $mermaid.RelPermalink }}" defer></script>
{{ end -}}
{{ if .Site.Params.options.flexSearch -}}
{{ if $includeFlexSearch -}}
<script src="{{ $index.RelPermalink }}" defer></script>
{{ end -}}
{{ else -}}
@ -102,7 +104,7 @@
{{ with .Params.mermaid -}}
<script src="{{ $mermaid.RelPermalink }}" integrity="{{ $mermaid.Data.Integrity }}" crossorigin="anonymous" defer></script>
{{ end -}}
{{ if .Site.Params.options.flexSearch -}}
{{ if $includeFlexSearch -}}
<script src="{{ $index.Permalink }}" integrity="{{ $index.Data.Integrity }}" crossorigin="anonymous" defer></script>
{{ end -}}
{{ end -}}
{{ end -}}

View File

@ -77,7 +77,7 @@
{{ end -}}
</ul>
{{ if .Site.Params.options.flexSearch -}}
{{ if and .Site.Params.options.flexSearch (or (eq (len .Site.Params.options.searchSectionsShow) 0) (in .Site.Params.options.searchSectionsShow .Section)) -}}
<hr class="text-black-50 my-4 d-lg-none">
<form class="doks-search position-relative flex-grow-1 ms-lg-auto me-lg-2">
<input id="search" class="form-control is-search" type="search" placeholder="Search docs..." aria-label="Search docs..." autocomplete="off">