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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
import { bangs, process_query } from "./query.ts";
export function add_page_content(engine?: string) {
document.getElementById("content")?.remove()
if (engine) {
document.body.append(create_search_bar(engine), create_search_info())
} else {
document.body.append(create_start_page())
}
}
function create_search_bar(engine: string) {
const section = document.createElement("section")
section.classList.add("search")
if (document.getElementById("search-link")) {
// <link /> is already present, we need reload because browser wont notice otherwise
window.location.reload()
}
const link = document.createElement("link")
link.rel = "search"
link.id = "search-link"
link.type = "application/opensearchdescription+xml"
link.href = `/search.xml?default=${encodeURIComponent(engine)}`
link.title = `Projectname (default engine: ${engine})`
document.head.append(link)
const heading = document.createElement("h1")
heading.textContent = engine
bangs.then(bangs => heading.textContent = bangs[engine].name)
const input = document.createElement("input")
input.type = "input"
input.addEventListener("keydown", ev => {
if (ev.code == "Enter") process_query(engine, input.value ?? "")
})
const submit = document.createElement("button")
submit.textContent = "Search"
submit.addEventListener("click", () => {
process_query(engine, input.value ?? "")
})
const search = document.createElement("div")
search.classList.add("bar")
search.append(input, submit)
section.append(heading, search)
return section
}
function create_search_info() {
const section = document.createElement("section")
section.classList.add("info")
const heading = document.createElement("h1")
heading.textContent = "Heading"
const info = document.createElement("p")
info.textContent = `To install this as the default search engine, select "Add <name>" in the context-menu of the URL-bar.`
section.append(heading, info)
return section
}
function create_start_page() {
const section = document.createElement("section")
section.id = "content"
const heading = document.createElement("h1")
heading.textContent = "Projectname"
const info = document.createElement("p")
info.textContent = "This is where one would write what this application does..."
section.append(heading, info)
return section
}
let status_el: HTMLElement
export function status(level: "error" | "info" | "success", text: string) {
if (!status_el) {
status_el = document.createElement("p")
document.body.append(status_el)
}
status_el.textContent = text
status_el.classList.value = ""
status_el.classList.add("status", `level-${level}`)
}
|