feat: make topic search a function

v1.18.x
Baris Usakli 6 years ago
parent 7a5344533e
commit d2b8396764

@ -564,52 +564,63 @@ app.cacheBuster = null;
}); });
} }
app.handleSearch = function () { app.enableTopicSearch = function (options) {
var searchButton = $('#search-button'); var quickSearchResults = options.resultEl;
var searchFields = $('#search-fields'); var inputEl = options.inputEl;
var searchInput = $('#search-fields input'); var template = options.template || 'partials/quick-search-results';
var quickSearchResults = $('#quick-search-results');
$('#search-form .advanced-search-link').on('mousedown', function () {
ajaxify.go('/search');
});
$('#search-form').on('submit', dismissSearch);
searchInput.on('blur', dismissSearch);
searchInput.on('focus', function () {
if (searchInput.val() && quickSearchResults.children().length) {
quickSearchResults.removeClass('hidden').show();
}
});
var searchTimeoutId = 0; var searchTimeoutId = 0;
searchInput.on('keyup', function () { inputEl.on('keyup', function () {
if (searchTimeoutId) { if (searchTimeoutId) {
clearTimeout(searchTimeoutId); clearTimeout(searchTimeoutId);
searchTimeoutId = 0; searchTimeoutId = 0;
} }
if (searchInput.val().length < 3) { if (inputEl.val().length < 3) {
return; return;
} }
searchTimeoutId = setTimeout(function () { searchTimeoutId = setTimeout(function () {
require(['search'], function (search) { require(['search'], function (search) {
var data = search.getSearchPreferences(); var data = search.getSearchPreferences();
data.term = searchInput.val(); data.term = inputEl.val();
data.in = 'titles'; data.in = 'titles';
data.searchOnly = 1; data.searchOnly = 1;
search.api(data, function (data) { search.api(data, function (data) {
if (!data.matchCount) { if (!data.matchCount) {
quickSearchResults.html('').addClass('hidden');
return; return;
} }
app.parseAndTranslate('partials/quick-search-results', data, function (html) { app.parseAndTranslate(template, data, function (html) {
quickSearchResults.html(html).removeClass('hidden').show(); quickSearchResults.html(html).removeClass('hidden').show();
}); });
}); });
}); });
}, 400); }, 400);
}); });
};
app.handleSearch = function () {
var searchButton = $('#search-button');
var searchFields = $('#search-fields');
var searchInput = $('#search-fields input');
var quickSearchResults = $('#quick-search-results');
$('#search-form .advanced-search-link').on('mousedown', function () {
ajaxify.go('/search');
});
$('#search-form').on('submit', dismissSearch);
searchInput.on('blur', dismissSearch);
searchInput.on('focus', function () {
if (searchInput.val() && quickSearchResults.children().length) {
quickSearchResults.removeClass('hidden').show();
}
});
app.enableTopicSearch({
inputEl: searchInput,
resultEl: quickSearchResults,
});
function dismissSearch() { function dismissSearch() {
searchFields.addClass('hidden'); searchFields.addClass('hidden');

Loading…
Cancel
Save