2022-07-30 16:24:28 +02:00
|
|
|
import Autocomplete from "@trevoreyre/autocomplete-js"
|
|
|
|
|
2022-07-31 00:46:21 +02:00
|
|
|
interface AutocompleteResult {
|
|
|
|
url: string
|
|
|
|
name: string
|
|
|
|
distance: number
|
|
|
|
}
|
|
|
|
|
|
|
|
const form = document.getElementById("autocomplete-form")! as HTMLFormElement
|
2022-04-12 00:07:34 +02:00
|
|
|
|
|
|
|
form.addEventListener("submit", function (e) {
|
|
|
|
e.preventDefault()
|
|
|
|
})
|
|
|
|
|
2022-04-11 23:52:19 +02:00
|
|
|
new Autocomplete('#autocomplete', {
|
|
|
|
search: input => {
|
|
|
|
const url = `/search/autocomplete/?q=${encodeURI(input)}`
|
|
|
|
|
|
|
|
return new Promise(resolve => {
|
|
|
|
if (input.length === 0) {
|
|
|
|
return resolve([])
|
|
|
|
}
|
|
|
|
|
|
|
|
fetch(url)
|
|
|
|
.then(response => response.json())
|
2022-07-31 00:46:21 +02:00
|
|
|
.then((data: AutocompleteResult[]) => {
|
2022-04-11 23:52:19 +02:00
|
|
|
resolve(data)
|
|
|
|
})
|
|
|
|
})
|
|
|
|
},
|
2022-07-31 00:46:21 +02:00
|
|
|
getResultValue: (result: AutocompleteResult) => result.name,
|
|
|
|
onSubmit: (result: AutocompleteResult) => {
|
2022-04-11 23:52:19 +02:00
|
|
|
if (!result) {
|
2022-04-12 00:07:34 +02:00
|
|
|
form.submit()
|
2022-04-11 23:52:19 +02:00
|
|
|
return
|
|
|
|
}
|
|
|
|
location.href = result.url
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|