/* global instantsearch, CONFIG */
$(document).ready(function() {
var algoliaSettings = CONFIG.algolia;
var isAlgoliaSettingsValid = algoliaSettings.applicationID
&& algoliaSettings.apiKey
&& algoliaSettings.indexName;
if (!isAlgoliaSettingsValid) {
window.console.error('Algolia Settings are invalid.');
return;
}
var search = instantsearch({
appId : algoliaSettings.applicationID,
apiKey : algoliaSettings.apiKey,
indexName : algoliaSettings.indexName,
searchFunction: function(helper) {
var searchInput = $('#algolia-search-input').find('input');
if (searchInput.val()) {
helper.search();
}
}
});
// Registering Widgets
[
instantsearch.widgets.searchBox({
container : '#algolia-search-input',
placeholder: algoliaSettings.labels.input_placeholder
}),
instantsearch.widgets.hits({
container : '#algolia-hits',
hitsPerPage: algoliaSettings.hits.per_page || 10,
templates : {
item: function(data) {
var link = data.permalink ? data.permalink : CONFIG.root + data.path;
return (
''
+ data._highlightResult.title.value
+ ''
);
},
empty: function(data) {
return (
'
'
+ algoliaSettings.labels.hits_empty.replace(/\$\{query}/, data.query)
+ '
'
);
}
},
cssClasses: {
item: 'algolia-hit-item'
}
}),
instantsearch.widgets.stats({
container: '#algolia-stats',
templates: {
body: function(data) {
var stats = algoliaSettings.labels.hits_stats
.replace(/\$\{hits}/, data.nbHits)
.replace(/\$\{time}/, data.processingTimeMS);
return (
stats
+ ''
+ '
'
+ ''
+ '
'
);
}
}
}),
instantsearch.widgets.pagination({
container : '#algolia-pagination',
scrollTo : false,
showFirstLast: false,
labels : {
first : '',
last : '',
previous: '',
next : ''
},
cssClasses: {
root : 'pagination',
item : 'pagination-item',
link : 'page-number',
active : 'current',
disabled: 'disabled-item'
}
})
].forEach(search.addWidget, search);
search.start();
$('.popup-trigger').on('click', function(e) {
e.stopPropagation();
$('body')
.append('')
.css('overflow', 'hidden');
$('.popup').toggle();
$('#algolia-search-input').find('input').focus();
});
$('.popup-btn-close').click(function() {
$('.popup').hide();
$('.algolia-pop-overlay').remove();
$('body').css('overflow', '');
});
});