/* global instantsearch, algoliasearch */
// eslint-disable-next-line no-unused-vars
function loadAlgolia(config, translation) {
const search = instantsearch({
indexName: config.indexName,
searchClient: algoliasearch(config.applicationId, config.apiKey),
});
search.addWidgets([
instantsearch.widgets.configure({
attributesToSnippet: ['excerpt'],
}),
]);
search.addWidget(
instantsearch.widgets.searchBox({
container: '#algolia-input',
placeholder: translation.hint,
showReset: false,
showSubmit: false,
showLoadingIndicator: false,
cssClasses: {
root: 'searchbox-input-container',
form: 'searchbox-input-container',
input: 'searchbox-input',
},
}),
);
search.addWidget(
instantsearch.widgets.poweredBy({
container: '#algolia-poweredby',
}),
);
search.addWidget(
instantsearch.widgets.hits({
container: '.searchbox-body',
escapeHTML: false,
cssClasses: {
root: 'searchbox-result-container',
emptyRoot: ['searchbox-result-item', 'disabled'],
},
templates: {
empty: function (results) {
return translation.no_result + ': ' + results.query;
},
item: function (hit) {
let title = instantsearch.highlight({ attribute: 'title', hit });
let excerpt = instantsearch.highlight({ attribute: 'excerpt', hit });
title = title ? title : translation.untitled;
excerpt = excerpt
.replace(new RegExp('', 'ig'), '[algolia-highlight]')
.replace(new RegExp('', 'ig'), '[/algolia-highlight]')
.replace(/(<([^>]+)>)/gi, '')
.replace(/(\[algolia-highlight\])/gi, '')
.replace(/(\[\/algolia-highlight\])/gi, '');
excerpt = excerpt ? excerpt : translation.empty_preview;
return ``;
},
},
}),
);
search.addWidget(
instantsearch.widgets.pagination({
container: '.searchbox-footer',
cssClasses: {
list: 'searchbox-pagination',
item: 'searchbox-pagination-item',
link: 'searchbox-pagination-link',
selectedItem: 'active',
disabledItem: 'disabled',
},
}),
);
search.start();
if (location.hash.trim() === '#algolia-search') {
$('.searchbox').addClass('show');
}
$(document)
.on('click', '.navbar-main .search', () => {
$('.searchbox').toggleClass('show');
$('.searchbox-input').focus();
})
.on('click', '.searchbox .searchbox-mask', () => {
$('.searchbox').removeClass('show');
})
.on('click', '.searchbox-close', () => {
$('.searchbox').removeClass('show');
});
}