| <!-- | |
| Copyright 2020-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. | |
| --> | |
| {{/* . is internal/frontend.UnitPage */}} | |
| {{define "unit-header"}} | |
| {{template "unit-header-breadcrumbs" .}} | |
| <div class="go-Main-headerContent"> | |
| {{template "unit-header-title" .}} | |
| {{if not .GoDocMode}} | |
| {{template "unit-header-details" .}} | |
| {{end}} | |
| </div> | |
| {{end}} | |
| {{define "unit-header-breadcrumbs"}} | |
| <nav class="go-Main-headerBreadcrumb go-Breadcrumb" aria-label="Breadcrumb" data-test-id="UnitHeader-breadcrumb"> | |
| <ol> | |
| {{with .Breadcrumb}} | |
| {{range .Links}} | |
| <li data-test-id="UnitHeader-breadcrumbItem"> | |
| <a href="{{.Href}}" data-gtmc="breadcrumb link">{{.Body}}</a> | |
| </li> | |
| {{end}} | |
| <li> | |
| <a href="{{$.CanonicalURLPath}}" data-gtmc="breadcrumb link" aria-current="location" | |
| data-test-id="UnitHeader-breadcrumbCurrent"> | |
| {{.Current}} | |
| </a> | |
| {{if .CopyData}} | |
| <button | |
| class="go-Button go-Button--inline go-Clipboard js-clipboard" | |
| title="Copy path to clipboard. {{.CopyData}}" | |
| aria-label="Copy Path to Clipboard" | |
| data-to-copy="{{.CopyData}}" | |
| data-gtmc="breadcrumbs button" | |
| > | |
| <img | |
| class="go-Icon go-Icon--accented" | |
| height="24" | |
| width="24" | |
| src="/static/shared/icon/content_copy_gm_grey_24dp.svg" | |
| alt="" | |
| > | |
| </button> | |
| {{end}} | |
| {{end}} | |
| </li> | |
| </ol> | |
| </nav> | |
| {{end}} | |
| {{define "unit-header-title"}} | |
| <div class="go-Main-headerTitle js-stickyHeader"> | |
| <a class="go-Main-headerLogo" href="{{if .LocalMode}}/{{else}}https://go.dev/{{end}}" 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> | |
| <h1 class="UnitHeader-titleHeading" data-test-id="UnitHeader-title">{{.Title}}</h1> | |
| {{range .PageLabels}} | |
| <span class="go-Chip go-Chip--inverted">{{.}}</span> | |
| {{end}} | |
| {{with .Breadcrumb}} | |
| {{if .CopyData}} | |
| <button | |
| class="go-Button go-Button--inline go-Clipboard js-clipboard" | |
| title="Copy path to clipboard. {{.CopyData}}" | |
| aria-label="Copy Path to Clipboard" | |
| data-to-copy="{{.CopyData}}" | |
| data-gtmc="title button" | |
| tabindex="-1" | |
| > | |
| <img | |
| class="go-Icon go-Icon--accented" | |
| height="24" | |
| width="24" | |
| src="/static/shared/icon/content_copy_gm_grey_24dp.svg" | |
| alt="" | |
| /> | |
| </button> | |
| {{end}} | |
| {{end}} | |
| </div> | |
| {{end}} | |
| {{define "unit-header-details"}} | |
| <div class="go-Main-headerDetails"> | |
| {{if (eq .SelectedTab.Name "")}} | |
| {{template "detail-item-version" .}} | |
| {{template "detail-item-commit-time" .}} | |
| {{template "detail-item-licenses" .}} | |
| {{if .Unit.IsPackage}} | |
| {{template "detail-item-imports" .}} | |
| {{template "detail-item-importedby" .}} | |
| {{end}} | |
| {{else}} | |
| {{template "detail-page-nav" .}} | |
| {{end}} | |
| </div> | |
| {{template "detail-items-overflow" .}} | |
| {{end}} | |
| {{define "detail-item-version"}} | |
| <span class="go-Main-headerDetailItem" data-test-id="UnitHeader-version"> | |
| <a href="?tab=versions" aria-label="Version: {{.DisplayVersion}}" | |
| data-gtmc="header link" aria-describedby="version-description"> | |
| <span class="go-textSubtle" aria-hidden="true">Version: </span> | |
| {{.DisplayVersion}} | |
| </a> | |
| <div class="screen-reader-only" id="version-description" hidden> | |
| Opens a new window with list of versions in this module. | |
| </div> | |
| <!-- Do not reformat the data attributes of the following div: the server uses a regexp to extract them. --> | |
| <span class="{{.LatestMinorClass}}" data-test-id="UnitHeader-minorVersionBanner"> | |
| <span class="go-Chip DetailsHeader-span--latest">Latest</span> | |
| <span class="go-Chip DetailsHeader-span--notAtLatest"> | |
| Latest | |
| {{template "severity-toggletip" "This package is not in the latest version of its module."}} | |
| </span> | |
| <a href="{{.LatestURL}}" aria-label="Go to Latest Version" data-gtmc="header link"> | |
| <span class="go-Chip go-Chip--alert DetailsHeader-span--goToLatest">Go to latest</span> | |
| </a> | |
| </span> | |
| </span> | |
| {{end}} | |
| {{define "detail-item-commit-time"}} | |
| <span class="go-Main-headerDetailItem" data-test-id="UnitHeader-commitTime"> | |
| Published: {{.Details.CommitTime}} | |
| </span> | |
| {{end}} | |
| {{define "detail-item-licenses"}} | |
| <span class="go-Main-headerDetailItem" data-test-id="UnitHeader-licenses"> | |
| License:{{" "}} | |
| {{- if .Details.Licenses -}} | |
| {{- if .Unit.IsRedistributable -}} | |
| <a href="{{$.URLPath}}?tab=licenses" data-test-id="UnitHeader-license" | |
| data-gtmc="header link" aria-describedby="license-description"> | |
| {{- range $i, $e := .Details.Licenses -}} | |
| {{- if lt $i 3}}{{if $i}}, {{end}}{{$e.Type}}{{end -}} | |
| {{- if eq $i 3}}, + {{subtract (len $.Details.Licenses) 3}} more{{end -}} | |
| {{- end -}} | |
| </a> | |
| {{else}} | |
| <span> | |
| {{- range $i, $e := .Details.Licenses -}} | |
| {{if $i}}, {{end}} {{$e.Type}} | |
| {{- end -}} | |
| </span> | |
| <a href="/license-policy" class="Disclaimer-link" data-gtmc="info link" | |
| aria-describedby="license-description"> | |
| <em>not legal advice</em> | |
| </a> | |
| {{end}} | |
| {{else}} | |
| <span>None detected</span> | |
| <a href="/license-policy" class="Disclaimer-link" data-gtmc="info link" | |
| aria-describedby="license-description"> | |
| <em>not legal advice</em> | |
| </a> | |
| {{end}} | |
| </span> | |
| <div class="screen-reader-only" id="license-description" hidden> | |
| Opens a new window with license information. | |
| </div> | |
| {{end}} | |
| {{define "detail-item-imports"}} | |
| <span class="go-Main-headerDetailItem" data-test-id="UnitHeader-imports"> | |
| <a href="{{$.URLPath}}?tab=imports" aria-label="Imports: {{.Details.NumImports}}" | |
| data-gtmc="header link" aria-describedby="imports-description"> | |
| <span class="go-textSubtle">Imports: </span>{{.Details.NumImports}} | |
| </a> | |
| </span> | |
| <div class="screen-reader-only" id="imports-description" hidden> | |
| Opens a new window with list of imports. | |
| </div> | |
| {{end}} | |
| {{define "detail-item-importedby"}} | |
| <span class="go-Main-headerDetailItem" data-test-id="UnitHeader-importedby"> | |
| <a href="{{$.URLPath}}?tab=importedby" aria-label="Imported By: {{.Details.ImportedByCount}}" | |
| data-gtmc="header link" aria-describedby="importedby-description"> | |
| <span class="go-textSubtle">Imported by: </span>{{.Details.ImportedByCount}} | |
| </a> | |
| </span> | |
| <div class="screen-reader-only" id="importedby-description" hidden> | |
| Opens a new window with list of known importers. | |
| </div> | |
| {{end}} | |
| {{define "detail-items-overflow"}} | |
| <div class="UnitHeader-overflowContainer"> | |
| <svg class="UnitHeader-overflowImage" xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"> | |
| <path d="M0 0h24v24H0z" fill="none"/> | |
| <path d="M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/> | |
| </svg> | |
| <select class="UnitHeader-overflowSelect js-selectNav" tabindex="-1"> | |
| <option value="/">Main</option> | |
| <option value="{{$.URLPath}}?tab=versions"> | |
| Versions | |
| </option> | |
| <option value="{{$.URLPath}}?tab=licenses"> | |
| Licenses | |
| </option> | |
| {{if .Unit.IsPackage}} | |
| <option value="{{$.URLPath}}?tab=imports"> | |
| Imports | |
| </option> | |
| <option value="{{$.URLPath}}?tab=importedby"> | |
| Imported By | |
| </option> | |
| {{end}} | |
| </select> | |
| </div> | |
| {{end}} | |
| {{define "detail-page-nav"}} | |
| <span> | |
| <a class="UnitHeader-backLink" href="{{.URLPath}}" data-gtmc="header link"> | |
| <img class="go-Icon" height="24" width="24" src="/static/shared/icon/arrow_left_alt_gm_grey_24dp.svg" alt=""> | |
| Go to main page | |
| </a> | |
| </span> | |
| {{end}} | |
| {{define "unit-header-banners"}} | |
| {{- with .RedirectedFromPath -}} | |
| <div class="go-Message go-Message--notice"> | |
| <img | |
| class="go-Icon" | |
| height="24" | |
| width="24" | |
| src="/static/shared/icon/info_gm_grey_24dp.svg" | |
| alt="Notice" | |
| /> Redirected from <span data-test-id="redirected-banner-text">{{.}}</span>. | |
| </div> | |
| {{- end -}} | |
| {{- with $vs := .Vulns -}} | |
| {{if eq (len $vs) 1}} | |
| <div>{{template "vuln-message" (index $vs 0)}}</div> | |
| {{else}} | |
| <details class="js-versionDetails"> | |
| <summary class="go-Message go-Message--alert"> | |
| <img | |
| class="go-Icon" | |
| height="24" | |
| width="24" | |
| src="/static/shared/icon/alert_gm_grey_24dp.svg" | |
| alt="Alert" | |
| /> | |
| Affected by <a href="/vuln/{{(index $vs 0).ID}}">{{(index $vs 0).ID}}</a> | |
| {{with $more := subtract (len $vs) 1}} and {{$more}} other vulnerabilities{{end}} | |
| </summary> | |
| <div> | |
| {{range .}}{{template "vuln-message" .}}{{end}} | |
| </div> | |
| </details> | |
| {{end}} | |
| {{- end -}} | |
| {{- if .Unit.Deprecated -}} | |
| <div class="go-Message go-Message--warning"> | |
| <img | |
| class="go-Icon" | |
| height="24" | |
| width="24" | |
| src="/static/shared/icon/alert_gm_grey_24dp.svg" | |
| alt="Warning" | |
| /> <strong>Deprecated</strong> | |
| {{- with .Unit.DeprecationComment -}} | |
| <strong>:</strong> {{.}} | |
| {{- end -}} | |
| </div> | |
| {{- end -}} | |
| {{- if .Unit.Retracted -}} | |
| <div class="go-Message go-Message--warning"> | |
| <img | |
| class="go-Icon" | |
| height="24" | |
| width="24" | |
| src="/static/shared/icon/alert_gm_grey_24dp.svg" | |
| alt="Warning" | |
| /> <strong>Retracted</strong> | |
| {{- with .Unit.RetractionRationale -}} | |
| <strong>:</strong> {{.}} | |
| {{- end -}} | |
| </div> | |
| {{- end -}} | |
| {{- if .LatestMajorVersion -}} | |
| <div class="go-Message go-Message--notice" data-test-id="UnitHeader-majorVersionBanner"> | |
| <img | |
| class="go-Icon" | |
| height="24" | |
| width="24" | |
| src="/static/shared/icon/info_gm_grey_24dp.svg" | |
| alt="Notice" | |
| /> The highest tagged major version is | |
| <a href="/{{.LatestMajorVersionURL}}" data-gtmc="banner link" aria-label="Go to Latest Major Version"> | |
| {{- .LatestMajorVersion -}} | |
| </a>. | |
| </div> | |
| {{- end -}} | |
| {{end}} | |
| {{define "severity-toggletip"}} | |
| <details class="go-Tooltip js-tooltip" data-gtmc="tooltip"> | |
| <summary> | |
| <img class="go-Icon go-Icon--inverted" height="24" width="24" src="/static/shared/icon/alert_gm_grey_24dp.svg" alt="Warning"> | |
| </summary> | |
| <p>{{.}}</p> | |
| </details> | |
| {{end}} |