internal/components/search.go (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | package components
import (
g "go.alanpearce.eu/gomponents"
. "go.alanpearce.eu/gomponents/html"
)
func Search(tdata TemplateData, r ResultData) g.Node {
return Form(
ID("search"),
Role("search"),
FieldSet(
Legend(
ID("legend"),
H2(g.Textf("%s search", sourceNameAndType(tdata.Source))),
),
Input(
ID("query"),
Aria("labelledby", "legend"),
Name("query"),
Type("search"),
Value(r.Query),
AutoFocus(),
g.Attr("spellcheck", "false"),
g.Attr("autocapitalize", "none"),
),
Button(g.Text("Search")),
),
)
}
func SearchPage(tdata TemplateData, r ResultData, children ...g.Node) g.Node {
return Page(
tdata,
P(
g.Text("Search Nix packages and options from "),
A(Href("https://nixos.org"), g.Text("NixOS")),
g.Text(", "),
A(Href("https://github.com/LnL7/nix-darwin"), g.Text("nix-darwin")),
g.Text(" and "),
A(Href("https://github.com/nix-community/home-manager"), g.Text("home-manager")),
),
script(tdata.Assets.ByPath["/static/search.js"]),
Search(tdata, r),
Section(
ID("results"),
Role("list"),
Aria("label", "search results"),
g.Group(children),
),
Dialog(
ID("dialog"),
Button(AutoFocus(), g.Text("Close")),
),
NoScript(
P(
Class("notice"),
g.Text("Everything should work fine without JavaScript. If that is not the case, "),
A(Href("https://todo.sr.ht/~alanpearce/searchix"), g.Text("report an issue")),
),
),
)
}
|