blob: 0384f32074eda259dbe479c66df5add0a6aee611 [file] [log] [blame]
<!--
Copyright 2021 The Go Authors. All rights reserved.
Use of this source code is governed by a BSD-style
license that can be found in the LICENSE file.
-->
{{define "title"}}
<title>{{.Query}} - Search Results - pkg.go.dev</title>
{{end}}
{{define "pre-content"}}
<link href="/static/frontend/search/search.min.css?version={{.AppVersionLabel}}" rel="stylesheet">
{{end}}
{{define "post-content"}}
<script>
loadScript('/static/frontend/search/search.js')
</script>
{{end}}
{{define "main"}}
<main class="go-Container">
{{template "search_header" .}}
{{template "search_tabs" .}}
<div class="go-Content SearchResults">
{{if eq .SearchMode .SearchModeSymbol }}
{{template "search_symbol" .}}
{{else}}
{{template "search_package" .}}
{{end}}
{{if gt (len .Results) 0}}
{{template "search_pagination" .}}
{{end}}
</div>
</main>
{{end}}
{{define "search_symbol"}}
<div class="SearchResults-summary">
<h1>
Showing <strong>{{len $.Results}}</strong> matching {{.SearchModeSymbol}}s.
<a href="/search-help">Search help</a>
</h1>
</div>
{{if eq (len .Results) 0}}
{{template "search_no_results" .}}
{{else}}
{{template "search_symbol_results" .}}
{{end}}
{{end}}
{{define "search_no_results"}}
{{template "gopher-airplane" "It looks like there are no matches for your search."}}
<p class="SearchResults-emptyContentMessage">
Need help? Check out <a href="/search-help" data-gtmc="search help"> tips for searching</a> on pkg.go.dev.
</p>
{{end}}
{{define "search_symbol_results"}}
<div>
{{$query := .Query}}
{{range $i, $r := .Results}}
{{$moreLink := eq $i (subtract $.Pagination.DefaultLimit 1)}}
{{if eq $i $.Pagination.DefaultLimit}}<hr class="SearchResults-divider">{{end}}
<div class="SearchSnippet" {{if $moreLink}}id="more-results"{{end}}>
<div class="SearchSnippet-headerContainer">
<h2>
<a href="{{.SymbolLink}}" data-gtmc="symbol search result symbol" data-gtmv="{{$i}}"
data-test-id="snippet-title">
<span class="SearchSnippet-symbolKind">{{.SymbolKind}}</span>
{{.SymbolName}}
</a>
<span class="SearchSnippet-header-dash">in</span>
<a href="/{{$r.PackagePath}}" data-gtmc="symbol search result package" data-gtmv="{{$i}}"
class="">{{$r.PackagePath}}</a>
</h2>
{{with $r.ChipText}}<span class="go-Chip go-Chip--inverted">{{.}}</span>{{end}}
</div>
{{with $r.Synopsis}}<p class="SearchSnippet-infoLabel" data-test-id="snippet-synopsis">{{.}}</p>{{end}}
<pre class="SearchSnippet-symbolCode">{{.SymbolSynopsis}}</pre>
{{template "search_metadata" $r}}
</div> <!-- SearchSnippet -->
{{end}}
</div>
{{end}}
{{define "search_package"}}
<div class="SearchResults-summary">
<h1>
Showing <strong>{{len .Results}}</strong> modules with matching packages. <a href="/search-help">Search help</a>
</h1>
</div>
{{if eq (len .Results) 0}}
{{template "search_no_results" .}}
{{else}}
{{template "search_package_results" .}}
{{end}}
{{end}}
{{define "search_package_results"}}
<div>
{{$query := .Query}}
{{$vulnsActive := (.Experiments.IsActive "vulns")}}
{{range $i, $v := .Results}}
{{$moreLink := eq $i (subtract $.Pagination.DefaultLimit 1)}}
{{if eq $i $.Pagination.DefaultLimit}}<hr class="SearchResults-divider">{{end}}
<div class="SearchSnippet" {{if $moreLink}}id="more-results"{{end}}>
<div class="SearchSnippet-headerContainer">
<h2>
<a href="/{{$v.PackagePath}}" data-gtmc="search result" data-gtmv="{{$i}}"
data-test-id="snippet-title">
<span class="SearchSnippet-header-name">{{$v.Name}}</span>
{{$v.PackagePath}}
</a>
</h2>
{{with $v.ChipText}}<span class="go-Chip go-Chip--inverted">{{.}}</span>{{end}}
{{if $vulnsActive}}
{{range $v.Vulns}}{{template "vuln" .}}{{end}}
{{end}}
</div>
{{with $v.Synopsis}}
<p class="SearchSnippet-synopsis" data-test-id="snippet-synopsis">
{{.}}
</p>
{{end}}
{{template "search_metadata" $v}}
{{with .OtherMajor}}
<div>
<span class="go-textSubtle">{{.Heading}}</span>
{{range $i, $v := .Links}}
<a href="/{{$v.Href}}" data-gtmc="search result other major"><strong>{{$v.Body}}</strong></a>
{{end}}
</div>
{{end}}
{{with .SameModule}}
{{$m := .}}
<div class="SearchSnippet-sub go-textSubtle">
<a href="{{$v.ModulePath}}#section-directories"><strong>{{.Heading}}</strong></a>
{{range $i, $v := .Links}}
{{if lt $i 5}}
<a class="go-Chip go-Chip--subtle"
href="/{{$v.Href}}"
{{if gt $i 4 }}data-hidden="true"{{end}}
data-gtmc="search result same module">
{{$v.Body}}
</a>
{{end}}
{{end}}
{{$more := subtract (len .Links) 5}}
{{if gt (len .Links) 5}}
<a href="{{$v.ModulePath}}#section-directories" class="go-Chip go-Chip--subtle"
data-gtmc="search result more packages">
+{{$more}} more
</a>
{{end}}
</div>
{{end}}
</div> <!-- SearchSnippet -->
{{end}}
</div>
{{end}}
{{define "search_metadata"}}
<div class="SearchSnippet-infoLabel">
<a href="/{{$.PackagePath}}?tab=importedby" aria-label="Go to Imported By">
<span class="go-textSubtle">Imported by </span><strong>{{.NumImportedBy}}</strong>
</a>
<span class="go-textSubtle">|</span>
<span class="go-textSubtle">
<strong>{{.DisplayVersion}}</strong> published on <span data-test-id="snippet-published"><strong>{{.CommitTime}}</strong></span>
</span>
<span class="go-textSubtle">|</span>
<span data-test-id="snippet-license">
{{if .Licenses}}
<a href="/{{$.PackagePath}}?tab=licenses" aria-label="Go to Licenses">
{{commaseparate .Licenses}}
</a>
{{else}}
<span class="go-textSubtle">No license</span>
{{end}}
</span>
</div>
{{end}}
{{define "search_pagination"}}
{{$p := .Pagination}}
<div class="SearchPagination" data-test-id="pagination">
Didn't find what you were looking for?
{{$m := or $.SearchMode .SearchModePackage}}
{{- if and (lt $p.Limit $p.MaxLimit) (eq $p.Limit (len .Results)) -}}
<a href="{{$p.URL $p.MaxLimit $m ""}}#more-results" data-gtmc="search more results">Show more results.</a>
{{- else -}}
See <a href="/search-help" data-gtmc="search help"> search help.</a>
{{- end -}}
</div>
{{end}}
{{define "search_tabs"}}
<div class="SearchResults-tabs">
<nav class="go-TabNav">
<ul>
<li {{if not (eq .SearchMode .SearchModeSymbol)}}aria-current="page"{{end}}>
<a href="{{.Pagination.URL .Pagination.Limit .SearchModePackage .PackageTabQuery}}">Packages</a>
</li>
<li {{if eq .SearchMode .SearchModeSymbol}}aria-current="page"{{end}}>
<a href="{{.Pagination.URL .Pagination.Limit .SearchModeSymbol .Query}}">Symbols</a>
</li>
</ul>
</nav>
</div>
{{end}}
{{define "search_header"}}
<header class="SearchResults-header js-searchHeader">
<div class="SearchResults-headerContent">
<a class="SearchResults-headerLogo" href="https://go.dev/" aria-hidden="true" tabindex="-1" data-gtmc="header link"
aria-label="Link to Go Homepage">
<img height="78" width="207" src="/static/shared/logo/go-blue.svg" alt="Go">
</a>
<form
class="go-InputGroup go-ShortcutKey SearchResults-search"
action="/search"
data-shortcut="/"
data-shortcut-alt="search"
data-gtmc="search form"
aria-label="Search for a package"
role="search"
>
<input name="q" class="go-Input js-searchFocus" aria-label="Search for a package" type="search"
autocapitalize="off" autocomplete="off" autocorrect="off" spellcheck="false"
placeholder="Search packages or symbols" value="{{.Query}}" />
<input name="m" value="{{.SearchMode}}" hidden>
<button class="go-Button go-Button--inverted" aria-label="Submit search">
<img
class="go-Icon"
height="24"
width="24"
src="/static/shared/icon/search_gm_grey_24dp.svg"
alt=""
/>
</button>
</form>
</div>
</header>
{{end}}