diff --git a/public/src/app.js b/public/src/app.js index 6b0dcb4cec..bcb1cfd325 100644 --- a/public/src/app.js +++ b/public/src/app.js @@ -564,52 +564,63 @@ app.cacheBuster = null; }); } - 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 = function (options) { + var quickSearchResults = options.resultEl; + var inputEl = options.inputEl; + var template = options.template || 'partials/quick-search-results'; var searchTimeoutId = 0; - searchInput.on('keyup', function () { + inputEl.on('keyup', function () { if (searchTimeoutId) { clearTimeout(searchTimeoutId); searchTimeoutId = 0; } - if (searchInput.val().length < 3) { + if (inputEl.val().length < 3) { return; } searchTimeoutId = setTimeout(function () { require(['search'], function (search) { var data = search.getSearchPreferences(); - data.term = searchInput.val(); + data.term = inputEl.val(); data.in = 'titles'; data.searchOnly = 1; search.api(data, function (data) { if (!data.matchCount) { + quickSearchResults.html('').addClass('hidden'); return; } - app.parseAndTranslate('partials/quick-search-results', data, function (html) { + app.parseAndTranslate(template, data, function (html) { quickSearchResults.html(html).removeClass('hidden').show(); }); }); }); }, 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() { searchFields.addClass('hidden');