Skip to content

Instantly share code, notes, and snippets.

@jelen07
Created January 29, 2018 09:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save jelen07/bb09b0780cb33abf24fa43fc4f90e606 to your computer and use it in GitHub Desktop.
Save jelen07/bb09b0780cb33abf24fa43fc4f90e606 to your computer and use it in GitHub Desktop.
Algolia autocomplete using custom source
$(function () {
var el = $('#search-query-input');
var cache = [];
function search(query, callback) {
/** Check if query has been already sent */
var stored = cache[query];
if (stored) {
callback(JSON.parse(stored));
return;
}
/** No => search for it */
$.nette.ajax({
'method': 'post',
'url': el.data('link'),
'data': {
q: query
},
'success': function (payload) {
var results = payload.places.concat(payload.clubs).concat(payload.girls);
cache[query] = JSON.stringify(results);
callback(results);
}
});
}
autocomplete('#' + el.attr('id'), {
autoselect: true, // Select 1st item × search on enter UX
autoselectOnBlur: false, // On mobile devices = true @todo
openOnFocus: true,
keyboardShortcuts: ['s'],
minLength: 2
}, [
{
source: search,
displayKey: function(suggestion) {
return suggestion.name
},
templates: {
suggestion: function(suggestion) {
return '<img src="' + suggestion.avatar + '" alt="Avatar" width="65" height="65">' + suggestion.name;
},
empty: function() {
return '<div class="not-found"><span>¯\\(ツ)/¯ Sorry, no results found...<span></div>';
}
}
}
]).on('autocomplete:selected', function(event, suggestion, dataset) {
location.href = suggestion.link;
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment