Modified opensearch template and autocomplete route

- Changed opensearch suggestions to use POST request
- Added generic data fallback for autocomplete requests
- Moved auto form submit to only occur when clicking on specific result
This commit is contained in:
Ben Busby 2020-05-24 13:27:36 -06:00
parent 351a584fee
commit b97933d147
3 changed files with 8 additions and 4 deletions

View File

@ -93,8 +93,10 @@ def autocomplete():
request_params = request.args if request.method == 'GET' else request.form
q = request_params.get('q')
if not q:
return jsonify({'results': []})
if not q and not request.data:
return jsonify({'?': []})
elif request.data:
q = urlparse.unquote_plus(request.data.decode('utf-8').replace('q=', ''))
return jsonify([q, g.user_request.autocomplete(q)])

View File

@ -42,6 +42,7 @@ const autocomplete = (searchInput, autocompleteResults) => {
autocompleteItem.addEventListener("click", function () {
searchInput.value = this.getElementsByTagName("input")[0].value;
closeAllLists();
document.getElementById("search-form").submit();
});
autocompleteList.appendChild(autocompleteItem);
}
@ -93,6 +94,5 @@ const autocomplete = (searchInput, autocompleteResults) => {
// Close lists and search when user selects a suggestion
document.addEventListener("click", function (e) {
closeAllLists(e.target);
document.getElementById("search-form").submit();
});
};

View File

@ -7,7 +7,9 @@
<Url type="text/html" method="{{ request_type }}" template="{{ main_url }}/search">
<Param name="q" value="{searchTerms}"/>
</Url>
<Url type="application/x-suggestions+json" template="{{ main_url }}/autocomplete?q={searchTerms}"/>
<Url type="application/x-suggestions+json" method="{{ request_type }}" template="{{ main_url }}/autocomplete">
<Param name="q" value="{searchTerms}"/>
</Url>
<moz:SearchForm>{{ main_url }}/search</moz:SearchForm>
</OpenSearchDescription>