mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
feat: more search & merge fixes
This commit is contained in:
@@ -477,35 +477,51 @@ app.cacheBuster = null;
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
app.enableTopicSearch = function (options) {
|
app.enableTopicSearch = function (options, searchQuery) {
|
||||||
var quickSearchResults = options.resultEl;
|
var quickSearchResults = options.resultEl;
|
||||||
var inputEl = options.inputEl;
|
var inputEl = options.inputEl;
|
||||||
var searchTimeoutId = 0;
|
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 () {
|
inputEl.off('keyup').on('keyup', function () {
|
||||||
if (searchTimeoutId) {
|
if (searchTimeoutId) {
|
||||||
clearTimeout(searchTimeoutId);
|
clearTimeout(searchTimeoutId);
|
||||||
searchTimeoutId = 0;
|
searchTimeoutId = 0;
|
||||||
}
|
}
|
||||||
searchTimeoutId = setTimeout(function () {
|
searchTimeoutId = setTimeout(function () {
|
||||||
if (inputEl.val().length < 3 || inputEl.val() === currentVal) {
|
if (inputEl.val().length < 3) {
|
||||||
|
quickSearchResults.addClass('hidden');
|
||||||
|
oldValue = inputEl.val();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
currentVal = inputEl.val();
|
if (inputEl.val() === oldValue) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
oldValue = inputEl.val();
|
||||||
if (!inputEl.is(':focus')) {
|
if (!inputEl.is(':focus')) {
|
||||||
return quickSearchResults.addClass('hidden');
|
return quickSearchResults.addClass('hidden');
|
||||||
}
|
}
|
||||||
require(['search'], function (search) {
|
require(['search'], function (search) {
|
||||||
search.quick({
|
searchQuery = searchQuery || { in: 'titles' };
|
||||||
term: inputEl.val(),
|
searchQuery.term = inputEl.val();
|
||||||
in: 'titles',
|
search.quick(searchQuery, options);
|
||||||
}, options);
|
|
||||||
});
|
});
|
||||||
}, 250);
|
}, 250);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
app.handleSearch = function () {
|
app.handleSearch = function (options) {
|
||||||
|
options = options || { 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');
|
||||||
@@ -519,23 +535,16 @@ app.cacheBuster = null;
|
|||||||
searchInput.blur();
|
searchInput.blur();
|
||||||
});
|
});
|
||||||
searchInput.off('blur').on('blur', dismissSearch);
|
searchInput.off('blur').on('blur', dismissSearch);
|
||||||
searchInput.off('focus').on('focus', function () {
|
searchInput.off('focus');
|
||||||
if (searchInput.val() && quickSearchContainer.find('#quick-search-results').children().length) {
|
|
||||||
quickSearchContainer.removeClass('hidden');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
app.enableTopicSearch({
|
app.enableTopicSearch({
|
||||||
inputEl: searchInput,
|
inputEl: searchInput,
|
||||||
resultEl: quickSearchContainer,
|
resultEl: quickSearchContainer,
|
||||||
});
|
}, options);
|
||||||
|
|
||||||
function dismissSearch() {
|
function dismissSearch() {
|
||||||
searchFields.addClass('hidden');
|
searchFields.addClass('hidden');
|
||||||
searchButton.removeClass('hidden');
|
searchButton.removeClass('hidden');
|
||||||
setTimeout(function () {
|
|
||||||
quickSearchContainer.addClass('hidden');
|
|
||||||
}, 200);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
searchButton.off('click').on('click', function (e) {
|
searchButton.off('click').on('click', function (e) {
|
||||||
|
|||||||
@@ -29,6 +29,20 @@ define('forum/topic/merge', function () {
|
|||||||
mergeBtn.on('click', function () {
|
mergeBtn.on('click', function () {
|
||||||
mergeTopics(mergeBtn);
|
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();
|
callback();
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user