feat: add support for Algolia Docsearch

In params.yaml:

```
  search:
    provider: docsearch
    docsearch:
      app_id: ''
      api_key: ''
      index_name: ''
```
This commit is contained in:
George Cushen committed 2022-09-07 21:51:28 +01:00
1 parent 171a4dd85f
commit 769ac0e624
4 files changed
+11 -2

No files matched your search

@@ -21,6 +21,8 @@
<span class="sidebar-search-text">{{ i18n "search_placeholder" }}</span>
<span class="sidebar-search-shortcut">/</span>
</button>
{{ else if eq (lower site.Params.features.search.provider) "docsearch" }}
<div id="docsearch"></div>
{{ end }}
</form>
@@ -13,7 +13,7 @@
{{ $logo = (partial "functions/get_logo" (dict "constraint" "max_height" "size" 70)) }}
{{ end }}
<header class="header--fixed">
<header>
<nav class="navbar navbar-expand-lg navbar-light compensate-for-scrollbar" id="navbar-main">
<div class="container-xl">
@@ -157,8 +157,9 @@
{{ end }}
{{ end }}
{{/* Override: hide search icon if provider is Docsearch so we only show Docsearch once in the docs sidebar. */}}
{{ $show_search := site.Params.header.navbar.show_search | default true }}
{{ if and site.Params.features.search.provider $show_search }}
{{ if and site.Params.features.search.provider $show_search | and (ne (lower site.Params.features.search.provider) "docsearch") }}
<li class="nav-item">
<a class="nav-link js-search" href="#" aria-label="{{ i18n "search" }}"><i class="fas fa-search" aria-hidden="true"></i></a>
</li>
@@ -108,6 +108,8 @@
{{ if eq (lower site.Params.features.search.provider) "algolia" }}
{{ printf "<link rel=\"stylesheet\" href=\"%s\" integrity=\"%s\" crossorigin=\"anonymous\">" (printf $css.instantsearch.url $css.instantsearch.version) $css.instantsearch.sri | safeHTML }}
{{ else if eq (lower site.Params.features.search.provider) "docsearch" }}
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@docsearch/css@3" />
{{ end }}
{{/* Load async scripts. */}}
@@ -89,6 +89,10 @@
{{ printf "<script src=\"%s\" crossorigin=\"anonymous\"></script>" (printf $js.instantsearch.url $js.instantsearch.version) | safeHTML }}
{{ end }}
{{ $algoliaConfig = dict "appId" (site.Params.features.search.algolia.app_id | default "") "apiKey" (site.Params.features.search.algolia.api_key | default "") "indexName" (site.Params.features.search.algolia.index_name | default "") "analytics" (site.Params.features.search.algolia.analytics | default false) "personalization" (site.Params.features.search.algolia.personalization | default false) }}
{{ else if eq $search_provider "docsearch" }}
{{ $docsearch_config := dict "appId" (site.Params.features.search.docsearch.app_id | default "") "apiKey" (site.Params.features.search.docsearch.api_key | default "") "indexName" (site.Params.features.search.docsearch.index_name | default "") "container" (site.Params.features.search.docsearch.container | default "#docsearch") }}
<script src="https://cdn.jsdelivr.net/npm/@docsearch/js@3"></script>
{{ printf "<script>docsearch(%s);</script>" ($docsearch_config | jsonify) | safeHTML }}
{{ end }}
{{/* Charts */}}