feat: more merge/search fixes

v1.18.x
Barış Soner Uşaklı 5 years ago
parent 066b442e18
commit 4b38533b15

@ -477,14 +477,16 @@ app.cacheBuster = null;
}); });
} }
app.enableTopicSearch = function (options, searchQuery) { app.enableTopicSearch = function (options) {
var quickSearchResults = options.resultEl; var quickSearchResults = options.searchElements.resultEl;
var inputEl = options.inputEl; var inputEl = options.searchElements.inputEl;
var searchTimeoutId = 0; var searchTimeoutId = 0;
var oldValue = inputEl.val(); var oldValue = inputEl.val();
inputEl.on('blur', function () { inputEl.on('blur', function () {
setTimeout(function () { setTimeout(function () {
quickSearchResults.addClass('hidden'); if (!inputEl.is(':focus')) {
quickSearchResults.addClass('hidden');
}
}, 200); }, 200);
}); });
inputEl.on('focus', function () { inputEl.on('focus', function () {
@ -512,16 +514,16 @@ app.cacheBuster = null;
return quickSearchResults.addClass('hidden'); return quickSearchResults.addClass('hidden');
} }
require(['search'], function (search) { require(['search'], function (search) {
searchQuery = searchQuery || { in: 'titles' }; options.searchOptions = options.searchOptions || { in: 'titles' };
searchQuery.term = inputEl.val(); options.searchOptions.term = inputEl.val();
search.quick(searchQuery, options); search.quick(options);
}); });
}, 250); }, 250);
}); });
}; };
app.handleSearch = function (options) { app.handleSearch = function (searchOptions) {
options = options || { in: 'titles' }; searchOptions = searchOptions || { in: 'titles' };
var searchButton = $('#search-button'); var searchButton = $('#search-button');
var searchFields = $('#search-fields'); var searchFields = $('#search-fields');
var searchInput = $('#search-fields input'); var searchInput = $('#search-fields input');
@ -537,10 +539,15 @@ app.cacheBuster = null;
searchInput.off('blur').on('blur', dismissSearch); searchInput.off('blur').on('blur', dismissSearch);
searchInput.off('focus'); searchInput.off('focus');
app.enableTopicSearch({ var searchElements = {
inputEl: searchInput, inputEl: searchInput,
resultEl: quickSearchContainer, resultEl: quickSearchContainer,
}, options); };
app.enableTopicSearch({
searchOptions: searchOptions,
searchElements: searchElements,
});
function dismissSearch() { function dismissSearch() {
searchFields.addClass('hidden'); searchFields.addClass('hidden');
@ -567,7 +574,10 @@ app.cacheBuster = null;
require(['search'], function (search) { require(['search'], function (search) {
var data = search.getSearchPreferences(); var data = search.getSearchPreferences();
data.term = input.val(); data.term = input.val();
$(window).trigger('action:search.submit', { data: data }); $(window).trigger('action:search.submit', {
data: data,
searchElements: searchElements,
});
search.query(data, function () { search.query(data, function () {
input.val(''); input.val('');
}); });

@ -31,10 +31,13 @@ define('forum/topic/merge', function () {
}); });
app.enableTopicSearch({ app.enableTopicSearch({
inputEl: modal.find('.topic-search-input'), searchElements: {
resultEl: modal.find('.quick-search-container'), inputEl: modal.find('.topic-search-input'),
}, { resultEl: modal.find('.quick-search-container'),
in: 'titles', },
searchOptions: {
in: 'titles',
},
}); });
modal.on('click', '[data-tid]', function () { modal.on('click', '[data-tid]', function () {
if ($(this).attr('data-tid')) { if ($(this).attr('data-tid')) {

@ -33,26 +33,29 @@ define('search', ['navigator', 'translator', 'storage'], function (nav, translat
}); });
}; };
Search.quick = function (query, options, callback) { Search.quick = function (options, callback) {
callback = callback || function () {}; callback = callback || function () {};
var template = options.template || 'partials/quick-search-results'; $(window).trigger('action:search.quick.start', options);
$(window).trigger('action:search.quick.start', { data: query }); options.searchOptions.searchOnly = 1;
query.searchOnly = 1; Search.api(options.searchOptions, function (data) {
Search.api(query, function (data) { var resultEl = options.searchElements.resultEl;
if (options.hideOnNoMatches && !data.posts.length) { if (options.hideOnNoMatches && !data.posts.length) {
return options.resultEl.addClass('hidden').find('#quick-search-results-container').html(''); return resultEl.addClass('hidden').find('.quick-search-results-container').html('');
} }
data.posts.forEach(function (p) { data.posts.forEach(function (p) {
p.snippet = utils.escapeHTML($('<div>' + p.content + '</div>').text().slice(0, 80) + '...'); p.snippet = utils.escapeHTML($('<div>' + p.content + '</div>').text().slice(0, 80) + '...');
}); });
app.parseAndTranslate(template, data, function (html) { app.parseAndTranslate('partials/quick-search-results', data, function (html) {
if (html.length) { if (html.length) {
html.find('.timeago').timeago(); html.find('.timeago').timeago();
options.resultEl.removeClass('hidden').find('#quick-search-results-container').html(html); resultEl.removeClass('hidden').find('.quick-search-results-container').html(html);
} else { } else {
options.resultEl.addClass('hidden').find('#quick-search-results-container').html(''); resultEl.addClass('hidden').find('.quick-search-results-container').html('');
} }
$(window).trigger('action:search.quick.complete', { data: data }); $(window).trigger('action:search.quick.complete', {
data: data,
options: options,
});
callback(); callback();
}); });
}); });

Loading…
Cancel
Save