diff options
author | Alan Pearce | 2024-06-21 13:02:08 +0200 |
---|---|---|
committer | Alan Pearce | 2024-06-21 15:44:12 +0200 |
commit | a1dfc548198a1326e71f1dd70303a5d3441f7a39 (patch) | |
tree | 03e7d60dc389678ee7cadaac4d5e64596dffde91 /frontend | |
parent | cac323d9ae70f55a43fd99b73e60cf614be11797 (diff) | |
download | searchix-a1dfc548198a1326e71f1dd70303a5d3441f7a39.tar.lz searchix-a1dfc548198a1326e71f1dd70303a5d3441f7a39.tar.zst searchix-a1dfc548198a1326e71f1dd70303a5d3441f7a39.zip |
refactor: switch to templ for HTML templates
Diffstat (limited to 'frontend')
-rw-r--r-- | frontend/assets.go | 12 | ||||
-rw-r--r-- | frontend/static/search.js | 4 | ||||
-rw-r--r-- | frontend/static/style.css | 11 | ||||
-rw-r--r-- | frontend/templates/blocks/error.gotmpl | 6 | ||||
-rw-r--r-- | frontend/templates/blocks/option.gotmpl | 48 | ||||
-rw-r--r-- | frontend/templates/blocks/options.gotmpl | 25 | ||||
-rw-r--r-- | frontend/templates/blocks/package.gotmpl | 69 | ||||
-rw-r--r-- | frontend/templates/blocks/packages.gotmpl | 30 | ||||
-rw-r--r-- | frontend/templates/blocks/results.gotmpl | 21 | ||||
-rw-r--r-- | frontend/templates/blocks/search.gotmpl | 37 | ||||
-rw-r--r-- | frontend/templates/index.gotmpl | 55 |
11 files changed, 19 insertions, 299 deletions
diff --git a/frontend/assets.go b/frontend/assets.go index 46369fa..7a90d80 100644 --- a/frontend/assets.go +++ b/frontend/assets.go @@ -12,8 +12,8 @@ import ( ) var Assets = &AssetCollection{ - Scripts: make(map[string]*Asset), - Stylesheets: make(map[string]*Asset), + Scripts: []*Asset{}, + Stylesheets: []*Asset{}, ByPath: make(map[string]*Asset), } @@ -25,8 +25,8 @@ type Asset struct { } type AssetCollection struct { - Scripts map[string]*Asset - Stylesheets map[string]*Asset + Scripts []*Asset + Stylesheets []*Asset ByPath map[string]*Asset } @@ -61,7 +61,7 @@ func hashScripts() error { if err != nil { return err } - Assets.Scripts[filename] = asset + Assets.Scripts = append(Assets.Scripts, asset) Assets.ByPath[asset.URL] = asset } @@ -78,7 +78,7 @@ func hashStyles() error { if err != nil { return err } - Assets.Stylesheets[filename] = asset + Assets.Stylesheets = append(Assets.Stylesheets, asset) Assets.ByPath[asset.URL] = asset } diff --git a/frontend/static/search.js b/frontend/static/search.js index e3777d7..df11d09 100644 --- a/frontend/static/search.js +++ b/frontend/static/search.js @@ -6,8 +6,8 @@ const results = document.getElementById("results"); let pagination = document.getElementById("pagination"); const resultsRange = new Range(); -resultsRange.setStartBefore(results.firstChild); -resultsRange.setEndAfter(results.lastChild); +resultsRange.setStart(results, 0); +resultsRange.setEnd(results, 0); const detailsRange = new Range(); detailsRange.setStartAfter(dialog.firstElementChild); diff --git a/frontend/static/style.css b/frontend/static/style.css index a202b89..7cdc6c8 100644 --- a/frontend/static/style.css +++ b/frontend/static/style.css @@ -169,3 +169,14 @@ td, th { padding: 0.25rem 0.5rem; } + +ul:only-child { + padding-inline-start: unset; + margin: unset; +} + +li { + display: inline-block; + margin-right: 1ex; + list-style: none; +} diff --git a/frontend/templates/blocks/error.gotmpl b/frontend/templates/blocks/error.gotmpl deleted file mode 100644 index 1352b2e..0000000 --- a/frontend/templates/blocks/error.gotmpl +++ /dev/null @@ -1,6 +0,0 @@ -{{- define "main" }} - <p class="notice error"> - {{ .Code }} - {{ .Message }} - </p> -{{- end }} diff --git a/frontend/templates/blocks/option.gotmpl b/frontend/templates/blocks/option.gotmpl deleted file mode 100644 index 2248708..0000000 --- a/frontend/templates/blocks/option.gotmpl +++ /dev/null @@ -1,48 +0,0 @@ -{{- define "main" }} - {{- with .Document }} - <h2>{{ .Name }}</h2> - {{ markdown .Description }} - <dl> - {{- with .Type }} - <dt>Type</dt> - <dd><code>{{ . }}</code></dd> - {{- end }} - {{- with .Default }} - {{- if or .Text .Markdown }} - <dt>Default</dt> - <dd> - {{- if .Markdown }} - {{ markdown .Markdown }} - {{- else }} - <pre><code>{{ .Text }}</code></pre> - {{- end }} - </dd> - {{- end }} - {{- end }} - {{- with .Example }} - {{- if or .Text .Markdown }} - <dt>Example</dt> - <dd> - {{- if .Markdown }} - {{ markdown .Markdown }} - {{- else }} - <pre><code>{{ .Text }}</code></pre> - {{- end }} - </dd> - {{- end }} - {{- end }} - {{- with .RelatedPackages }} - <dt>Related Packages</dt> - <dd>{{ . }}</dd> - {{- end }} - {{- with .Declarations }} - <dt>Declared</dt> - {{- range . }} - <dd> - <a href="{{ .URL }}">{{ .Name }}</a> - </dd> - {{- end }} - {{- end }} - </dl> - {{- end }} -{{- end }} diff --git a/frontend/templates/blocks/options.gotmpl b/frontend/templates/blocks/options.gotmpl deleted file mode 100644 index 5a08bae..0000000 --- a/frontend/templates/blocks/options.gotmpl +++ /dev/null @@ -1,25 +0,0 @@ -{{- define "hits" }} - <table> - <thead> - <tr> - <th scope="col">Title</th> - <th scope="col">Description</th> - </tr> - </thead> - <tbody> - {{- range . }} - {{- with .Data }} - <tr> - <td> - <a href="{{ .Name }}" class="open-dialog">{{ .Name }}</a> - </td> - <td> - {{ markdown (firstSentence .Description) }} - <dialog id="{{ .Name }}"></dialog> - </td> - </tr> - {{- end }} - {{- end }} - </tbody> - </table> -{{- end }} diff --git a/frontend/templates/blocks/package.gotmpl b/frontend/templates/blocks/package.gotmpl deleted file mode 100644 index a42a8b1..0000000 --- a/frontend/templates/blocks/package.gotmpl +++ /dev/null @@ -1,69 +0,0 @@ -{{- define "main" }} - {{- with .Document }} - <h2> - {{- if .Broken }} - <del>{{ .Attribute }}</del> - {{- else }} - {{ .Attribute }} - {{- end }} - </h2> - {{- if .LongDescription }} - {{ markdown .LongDescription }} - {{- else }} - <p>{{ .Description }}</p> - {{- end }} - <dl> - {{- with .MainProgram }} - <dt>Main Program</dt> - <dd> - <code>{{ . }}</code> - </dd> - {{- end }} - {{- with .Homepages }} - <dt>Homepage</dt> - <dd> - {{- range . }} - <a href="{{ . }}">{{ . }}</a> - {{- end }} - </dd> - {{- end }} - {{- with .Version }} - <dt>Version</dt> - <dd>{{ . }}</dd> - {{- end }} - {{- with .Licenses }} - <dt>License</dt> - <dd> - {{- range . }} - {{- if .URL }} - <a href="{{ .URL }}">{{ or .FullName .Name }}</a> - {{- else }} - {{ or .FullName .Name }} - {{- end }} - {{- with .AppendixURL }} - <a href="{{ . }}">Appendix</a> - {{- end }} - {{- end }} - </dd> - {{- end }} - {{- with .Maintainers }} - <dt>Maintainer{{ if gt (len .) 1 }}s{{ end }}</dt> - <dd> - {{- range . }} - {{- if .Github }} - <a href="https://github.com/{{ .Github }}">{{ .Name }}</a> - {{- else }} - {{ .Name }} - {{- end }} - {{- end }} - </dd> - {{- end }} - {{- with .Definition }} - <dt>Defined</dt> - <dd> - <a href="{{ . }}">Source</a> - </dd> - {{- end }} - </dl> - {{- end }} -{{- end }} diff --git a/frontend/templates/blocks/packages.gotmpl b/frontend/templates/blocks/packages.gotmpl deleted file mode 100644 index cce97a0..0000000 --- a/frontend/templates/blocks/packages.gotmpl +++ /dev/null @@ -1,30 +0,0 @@ -{{- define "hits" }} - <table> - <thead> - <tr> - <th scope="col">Attribute</th> - <th scope="col">Name</th> - <th scope="col">Description</th> - </tr> - </thead> - <tbody> - {{- range . }} - {{- with .Data }} - <tr> - <td> - {{- with .Attribute }} - <a href="{{ . }}" class="open-dialog">{{ . }}</a> - {{- end }} - </td> - <td> - {{ .Name }} - </td> - <td> - {{ .Description }} - </td> - </tr> - {{- end }} - {{- end }} - </tbody> - </table> -{{- end }} diff --git a/frontend/templates/blocks/results.gotmpl b/frontend/templates/blocks/results.gotmpl deleted file mode 100644 index ef6e1f1..0000000 --- a/frontend/templates/blocks/results.gotmpl +++ /dev/null @@ -1,21 +0,0 @@ -{{- define "results" }} - {{- with .Results }} - {{- if gt .Total 0 }} - {{ block "hits" .Hits }} - {{ end }} - <footer aria-label="pagination"> - <nav id="pagination"> - {{- with $.Prev }} - <a class="button" href="{{ . }}" rel="prev">Prev</a> - {{- end }} - {{- with $.Next }} - <a class="button" href="{{ . }}" rel="next">Next</a> - {{- end }} - </nav> - <span role="status">{{ .Total }} results</span> - </footer> - {{- else }} - <span role="status">Nothing found</span> - {{- end }} - {{- end }} -{{- end }} diff --git a/frontend/templates/blocks/search.gotmpl b/frontend/templates/blocks/search.gotmpl deleted file mode 100644 index 93ae545..0000000 --- a/frontend/templates/blocks/search.gotmpl +++ /dev/null @@ -1,37 +0,0 @@ -{{- define "main" }} - <form id="search" role="search"> - <fieldset> - <legend id="legend"> - <h2>{{ sourceNameAndType .Source }} search</h2> - </legend> - <input - id="query" - aria-labelledby="legend" - name="query" - type="search" - value="{{ .Query }}" - autofocus - spellcheck="false" - /> - <button>Search</button> - </fieldset> - </form> - <section id="results" role="list" aria-label="search results"> - {{- if .Results }} - {{ block "results" . }}{{ end }} - {{- end }} - </section> - <dialog id="dialog"> - <button autofocus>Close</button> - </dialog> -{{- end }} - -{{- define "head" }} - {{- with (index .Assets.Scripts "static/search.js") }} - <script - src="{{ .URL }}" - defer - integrity="sha256-{{ .Base64SHA256 }}" - ></script> - {{- end }} -{{- end }} diff --git a/frontend/templates/index.gotmpl b/frontend/templates/index.gotmpl deleted file mode 100644 index 7732dc8..0000000 --- a/frontend/templates/index.gotmpl +++ /dev/null @@ -1,55 +0,0 @@ -<!doctype html> -<html lang="en-GB"> - <head> - <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1" /> - <title>Searchix</title> - {{- range .Assets.Stylesheets }} - <link - href="{{ .URL }}" - rel="stylesheet" - integrity="sha256-{{ .Base64SHA256 }}" - /> - {{- end }} - {{ block "head" . }} - {{ end }} - {{ .ExtraHeadHTML }} - {{- range $key, $value := .Sources }} - <link - rel="search" - type="application/opensearchdescription+xml" - title="Searchix {{ sourceNameAndType $value }}" - href="/{{ .Importer }}/{{ $key }}/opensearch.xml" - /> - {{- end }} - </head> - <body> - <header> - <nav> - <h1><a href="/">Searchix</a></h1> - {{- range $key, $value := .Sources }} - <a - {{ if eq $.Source.Name $value.Name }}class="current"{{ end }} - href="/{{ .Importer }}/{{ $key }}/search{{ if and (ne $.Source.Name $value.Name) $.Query }} - {{- printf "?query=%s" $.Query -}} - {{ end }}" - > - {{- $value.Name -}} - </a> - {{- end }} - </nav> - </header> - <main> - {{ block "main" . }} - <p> - Search Nix Packages and options from NixOS, Darwin and Home-Manager - </p> - <a href="https://git.sr.ht/~alanpearce/searchix">Source code</a> - {{ end }} - </main> - <footer> - Made by <a href="https://alanpearce.eu">Alan Pearce</a>. - <a href="https://todo.sr.ht/~alanpearce/searchix">Report issues</a> - </footer> - </body> -</html> |