diff --git a/public/src/app.js b/public/src/app.js index a0c316f93b..5a160e6759 100644 --- a/public/src/app.js +++ b/public/src/app.js @@ -477,35 +477,51 @@ app.cacheBuster = null; }); } - app.enableTopicSearch = function (options) { + app.enableTopicSearch = function (options, searchQuery) { var quickSearchResults = options.resultEl; var inputEl = options.inputEl; var searchTimeoutId = 0; - var currentVal = inputEl.val(); + var oldValue = inputEl.val(); + inputEl.on('blur', function () { + setTimeout(function () { + quickSearchResults.addClass('hidden'); + }, 200); + }); + inputEl.on('focus', function () { + if (inputEl.val() && quickSearchResults.find('#quick-search-results').children().length) { + quickSearchResults.removeClass('hidden'); + } + }); + inputEl.off('keyup').on('keyup', function () { if (searchTimeoutId) { clearTimeout(searchTimeoutId); searchTimeoutId = 0; } searchTimeoutId = setTimeout(function () { - if (inputEl.val().length < 3 || inputEl.val() === currentVal) { + if (inputEl.val().length < 3) { + quickSearchResults.addClass('hidden'); + oldValue = inputEl.val(); return; } - currentVal = inputEl.val(); + if (inputEl.val() === oldValue) { + return; + } + oldValue = inputEl.val(); if (!inputEl.is(':focus')) { return quickSearchResults.addClass('hidden'); } require(['search'], function (search) { - search.quick({ - term: inputEl.val(), - in: 'titles', - }, options); + searchQuery = searchQuery || { in: 'titles' }; + searchQuery.term = inputEl.val(); + search.quick(searchQuery, options); }); }, 250); }); }; - app.handleSearch = function () { + app.handleSearch = function (options) { + options = options || { in: 'titles' }; var searchButton = $('#search-button'); var searchFields = $('#search-fields'); var searchInput = $('#search-fields input'); @@ -519,23 +535,16 @@ app.cacheBuster = null; searchInput.blur(); }); searchInput.off('blur').on('blur', dismissSearch); - searchInput.off('focus').on('focus', function () { - if (searchInput.val() && quickSearchContainer.find('#quick-search-results').children().length) { - quickSearchContainer.removeClass('hidden'); - } - }); + searchInput.off('focus'); app.enableTopicSearch({ inputEl: searchInput, resultEl: quickSearchContainer, - }); + }, options); function dismissSearch() { searchFields.addClass('hidden'); searchButton.removeClass('hidden'); - setTimeout(function () { - quickSearchContainer.addClass('hidden'); - }, 200); } searchButton.off('click').on('click', function (e) { diff --git a/public/src/client/topic/merge.js b/public/src/client/topic/merge.js index 8b8b6846fb..3955f51648 100644 --- a/public/src/client/topic/merge.js +++ b/public/src/client/topic/merge.js @@ -29,6 +29,20 @@ define('forum/topic/merge', function () { mergeBtn.on('click', function () { mergeTopics(mergeBtn); }); + + app.enableTopicSearch({ + inputEl: modal.find('.topic-search-input'), + resultEl: modal.find('.quick-search-container'), + }, { + in: 'titles', + }); + modal.on('click', '[data-tid]', function () { + if ($(this).attr('data-tid')) { + Merge.addTopic($(this).attr('data-tid')); + } + return false; + }); + callback(); }); };