aboutsummaryrefslogtreecommitdiff
path: root/frontend/start.ts
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/start.ts')
-rw-r--r--frontend/start.ts31
1 files changed, 15 insertions, 16 deletions
diff --git a/frontend/start.ts b/frontend/start.ts
index 1c02192..89ec78e 100644
--- a/frontend/start.ts
+++ b/frontend/start.ts
@@ -35,17 +35,17 @@ export function section_engine_select() {
const submit = e("button", {}, "Select")
submit.addEventListener("click", () => select(input.value))
- const searchResults = e("ul", {class: "dropdown"})
+ const searchResults = e("ul", { class: "dropdown" })
- const input = e("input", {type: "search"})
+ const input = e("input", { type: "search" })
input.addEventListener("keydown", ev => {
if (ev.code == "Enter") select(input.value)
})
input.addEventListener("keyup", _ => {
- setSearchResults(searchResults, input, submit)
+ setSearchResults(searchResults, input, () => submit.click())
})
- const manualInput = e("div", {id: "engine-select-manual"},
+ const manualInput = e("div", { id: "engine-select-manual" },
e("label", {}, "Search engines:"),
input,
submit,
@@ -60,17 +60,18 @@ export function section_engine_select() {
}
// TODO fuse is a bit slow; this search function may hinder fast typing
-let bangsSearch: Promise<any> = undefined;
+interface FuseItem { bang: string, name: string, url: string }
+let bangsSearch: Promise<{ search: (name: string) => { item: FuseItem }[] }> | undefined = undefined;
-function setSearchResults(ul, input, submit) {
+function setSearchResults(ul: HTMLElement, input: HTMLInputElement, submit: () => void) {
if (bangsSearch === undefined) {
bangsSearch = bangs.then(bangs => {
- let searchSpace = []
- for (let k in bangs) {
+ const searchSpace = []
+ for (const k in bangs) {
searchSpace.push({
bang: k,
- name: bangs[k].name,
- url: bangs[k].url
+ name: bangs[k]!.name,
+ url: bangs[k]!.url
})
}
return new Fuse(searchSpace, {
@@ -82,9 +83,7 @@ function setSearchResults(ul, input, submit) {
bangsSearch.then(fuse => {
ul.innerHTML = ""
-
- let results = bangs[input.value] ? [bangs[input.value]] : []
- results = fuse.search(input.value).slice(0, 5)
+ const results = fuse.search(input.value).slice(0, 5)
if (results.length === 0)
ul.style.display = "none"
@@ -94,11 +93,11 @@ function setSearchResults(ul, input, submit) {
const it = r.item
const li = e("li", {},
- e("p", {class: "name"}, it.name),
- e("p", {class: "bang"}, it.bang))
+ e("p", { class: "name" }, it.name),
+ e("p", { class: "bang" }, it.bang))
li.addEventListener("click", () => {
input.value = it.bang
- submit.click()
+ submit()
})
ul.appendChild(li)
}