|
|
@ -5,15 +5,29 @@ import 'accessible-autocomplete/dist/accessible-autocomplete.min.css' |
|
|
|
const options = [] |
|
|
|
const options = [] |
|
|
|
|
|
|
|
|
|
|
|
const fetchOptions = async (query, searchUrl) => { |
|
|
|
const fetchOptions = async (query, searchUrl) => { |
|
|
|
const response = await fetch(`${searchUrl}?query=${encodeURIComponent(query)}`) |
|
|
|
try { |
|
|
|
return await response.json() |
|
|
|
const response = await fetch(`${searchUrl}?query=${encodeURIComponent(query.trim())}`) |
|
|
|
|
|
|
|
return await response.json() |
|
|
|
|
|
|
|
} catch (error) { |
|
|
|
|
|
|
|
return error |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
const fetchAndPopulateSearchResults = async (query, populateResults, searchUrl, populateOptions, selectEl) => { |
|
|
|
const fetchAndPopulateSearchResults = async (query, populateResults, searchUrl, populateOptions, selectEl) => { |
|
|
|
if (/\S/.test(query)) { |
|
|
|
if (/\S/.test(query)) { |
|
|
|
const results = await fetchOptions(query, searchUrl) |
|
|
|
try { |
|
|
|
populateOptions(results, selectEl) |
|
|
|
const results = await fetchOptions(query, searchUrl) |
|
|
|
populateResults(Object.values(results).map((o) => o.text)) |
|
|
|
if (results.length === 0) { |
|
|
|
|
|
|
|
populateOptions([], selectEl) |
|
|
|
|
|
|
|
populateResults([]) |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
populateOptions(results, selectEl) |
|
|
|
|
|
|
|
populateResults(Object.values(results).map((o) => o.text)) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} catch (error) { |
|
|
|
|
|
|
|
populateOptions([], selectEl) |
|
|
|
|
|
|
|
populateResults([]) |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|