Skip to content

Commit 3c9c69a

Browse files
feat: implement custom partial in search--input.html
1 parent fe4044c commit 3c9c69a

File tree

6 files changed

+54
-43
lines changed

6 files changed

+54
-43
lines changed
File renamed without changes.

hugo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ githubWebsiteRaw = "raw.githubusercontent.com/kubernetes/website"
151151
github_repo = "https://github.com/kubernetes/website"
152152

153153
# Searching
154-
k8s_search = true
154+
customSearch = true
155155

156156
# The following search parameters are specific to Docsy's implementation. Kubernetes implementes its own search-related partials and scripts.
157157

layouts/_default/search.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
})();
3838
</script>
3939
<gcse:searchresults-only></gcse:searchresults-only>
40-
{{ else if .Site.Params.k8s_search }}
40+
{{ else if .Site.Params.customSearch }}
4141
<script src="/pagefind/pagefind-ui.js"></script>
4242
<gcse:searchresults-only linktarget="_parent">
4343
<div id="search" style="display:none"></div>

layouts/partials/scripts.html

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,8 @@
3333
{{ $jsSearch := resources.Get "js/search.js" | resources.ExecuteAsTemplate "js/search.js" .Site.Home }}
3434
{{ if .Site.Params.offlineSearch }}
3535
{{ $jsSearch = resources.Get "js/offline-search.js" }}
36-
{{ end }}
37-
{{ if .Site.Params.k8s_search }}
38-
{{ $jsSearch = resources.Get "js/k8s-search.js" }}
36+
{{ else if .Site.Params.customSearch }}
37+
{{ $jsSearch = resources.Get "js/custom-search.js" }}
3938
{{ end }}
4039
{{ $js := (slice $jsBs $jsBase $jsAnchor $jsSearch) | resources.Concat "js/main.js" -}}
4140
{{ if hugo.IsProduction -}}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{{ $lang := .Site.Language.Lang }}
2+
{{ $searchFile := printf "content/%s/search.md" $lang }}
3+
4+
<div class="search-bar">
5+
<i class="search-icon fa-solid fa-search"></i>
6+
<input
7+
type="search"
8+
name="q"
9+
{{ if fileExists $searchFile }}
10+
data-search-page="{{ "search/" | relLangURL }}"
11+
{{ else }}
12+
data-search-page="{{ "search/" | relURL }}"
13+
{{ end }}
14+
class="search-input td-search-input"
15+
placeholder="{{ T "ui_search_placeholder" }}"
16+
aria-label="{{ T "ui_search_placeholder" }}"
17+
autocomplete="off"
18+
>
19+
</div>

layouts/partials/search-input.html

Lines changed: 31 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,38 @@
1-
{{ if or .Site.Params.gcs_engine_id .Site.Params.algolia_docsearch }}
2-
<div class="search-bar">
3-
<i class="search-icon fa-solid fa-search"></i>
4-
<input
5-
type="search"
6-
class="search-input td-search-input"
7-
placeholder="{{ T "ui_search_placeholder" }}"
8-
aria-label="{{ T "ui_search_placeholder" }}"
9-
autocomplete="off"
10-
>
11-
</div>
12-
{{ else if .Site.Params.offlineSearch }}
13-
<div class="search-bar" id="search-nav-container">
14-
<i class="search-icon fa-solid fa-search"></i>
15-
<input
16-
type="search"
17-
class="search-input td-search-input"
18-
id="search-input"
19-
placeholder="{{ T "ui_search_placeholder" }}"
20-
aria-label="{{ T "ui_search_placeholder" }}"
21-
autocomplete="off"
22-
>
1+
{{ if .Site.Params.gcs_engine_id -}}
2+
<div class="td-search">
3+
<div class="td-search__icon"></div>
4+
<input type="search" class="td-search__input form-control td-search-input" placeholder="{{ T "ui_search" }}" aria-label="{{ T "ui_search" }}" autocomplete="off">
235
</div>
24-
{{ else if .Site.Params.k8s_search }}
25-
26-
{{ $lang := .Site.Language.Lang }}
27-
{{ $searchFile := printf "content/%s/search.md" $lang }}
6+
{{ else if .Site.Params.algolia_docsearch -}}
7+
<div id="docsearch"></div>
8+
{{ else if .Site.Params.offlineSearch -}}
9+
{{ $offlineSearchIndex := resources.Get "json/offline-search-index.json" | resources.ExecuteAsTemplate "offline-search-index.json" . -}}
10+
{{ if hugo.IsProduction -}}
11+
{{/* Use `md5` as finger print hash function to shorten file name to avoid `file name too long` error. */ -}}
12+
{{ $offlineSearchIndex = $offlineSearchIndex | fingerprint "md5" -}}
13+
{{ end -}}
14+
{{ $offlineSearchLink := $offlineSearchIndex.RelPermalink -}}
2815

29-
<div class="search-bar">
30-
<i class="search-icon fa-solid fa-search"></i>
16+
<div class="td-search td-search--offline">
17+
<div class="td-search__icon"></div>
3118
<input
3219
type="search"
33-
name="q"
34-
{{ if fileExists $searchFile }}
35-
data-search-page="{{ "search/" | relLangURL }}"
36-
{{ else }}
37-
data-search-page="{{ "search/" | relURL }}"
38-
{{ end }}
39-
class="search-input td-search-input"
40-
placeholder="{{ T "ui_search_placeholder" }}"
41-
aria-label="{{ T "ui_search_placeholder" }}"
20+
class="td-search__input form-control"
21+
placeholder="{{ T "ui_search" }}"
22+
aria-label="{{ T "ui_search" }}"
4223
autocomplete="off"
24+
{{/*
25+
The data attribute name of the json file URL must end with `src` since
26+
Hugo's absurlreplacer requires `src`, `href`, `action` or `srcset` suffix for the attribute name.
27+
If the absurlreplacer is not applied, the URL will start with `/`.
28+
It causes the json file loading error when when relativeURLs is enabled.
29+
https://github.com/google/docsy/issues/181
30+
*/}}
31+
data-offline-search-index-json-src="{{ $offlineSearchLink }}"
32+
data-offline-search-base-href="/"
33+
data-offline-search-max-results="{{ .Site.Params.offlineSearchMaxResults | default 10 }}"
4334
>
4435
</div>
45-
{{ end }}
36+
{{ else if .Site.Params.customSearch -}}
37+
{{ partialCached "search-input-custom" . }}
38+
{{ end -}}

0 commit comments

Comments
 (0)