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 // 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) -}} {{ $len := (len $list) -}}
{{ range $index, $element := $list -}} {{ range $index, $element := $list -}}

View File

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

View File

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

View File

@ -77,7 +77,7 @@
{{ end -}} {{ end -}}
</ul> </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"> <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"> <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"> <input id="search" class="form-control is-search" type="search" placeholder="Search docs..." aria-label="Search docs..." autocomplete="off">