mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-03-18 02:20:49 +01:00
closes #6928
This commit is contained in:
44
public/src/modules/categorySearch.js
Normal file
44
public/src/modules/categorySearch.js
Normal file
@@ -0,0 +1,44 @@
|
||||
'use strict';
|
||||
|
||||
define('categorySearch', function () {
|
||||
var categorySearch = {};
|
||||
|
||||
categorySearch.init = function (el) {
|
||||
if (utils.isTouchDevice()) {
|
||||
return;
|
||||
}
|
||||
var searchEl = el.find('[component="category-selector-search"]');
|
||||
var categoryEls = el.find('[component="category/list"] [data-cid]');
|
||||
el.on('show.bs.dropdown', function () {
|
||||
function updateList() {
|
||||
var val = searchEl.find('input').val().toLowerCase();
|
||||
var noMatch = true;
|
||||
categoryEls.each(function () {
|
||||
var liEl = $(this);
|
||||
var isMatch = liEl.attr('data-name').toLowerCase().indexOf(val) !== -1;
|
||||
if (noMatch && isMatch) {
|
||||
noMatch = false;
|
||||
}
|
||||
liEl.toggleClass('hidden', !isMatch);
|
||||
});
|
||||
|
||||
el.find('[component="category/list"] [component="category/no-matches"]').toggleClass('hidden', !noMatch);
|
||||
}
|
||||
el.find('.dropdown-toggle').addClass('hidden');
|
||||
searchEl.removeClass('hidden').on('click', function (ev) {
|
||||
ev.preventDefault();
|
||||
ev.stopPropagation();
|
||||
});
|
||||
searchEl.find('input').val('').focus().on('keyup', updateList);
|
||||
updateList();
|
||||
});
|
||||
|
||||
el.on('hide.bs.dropdown', function () {
|
||||
el.find('.dropdown-toggle').removeClass('hidden');
|
||||
searchEl.addClass('hidden').off('click');
|
||||
searchEl.find('input').off('keyup');
|
||||
});
|
||||
};
|
||||
|
||||
return categorySearch;
|
||||
});
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
define('categorySelector', ['benchpress', 'translator'], function (Benchpress, translator) {
|
||||
define('categorySelector', ['benchpress', 'translator', 'categorySearch'], function (Benchpress, translator, categorySearch) {
|
||||
var categorySelector = {};
|
||||
var selectedCategory;
|
||||
var el;
|
||||
@@ -14,29 +14,7 @@ define('categorySelector', ['benchpress', 'translator'], function (Benchpress, t
|
||||
callback(selectedCategory);
|
||||
});
|
||||
|
||||
var searchEl = el.find('[component="category-selector-search"]');
|
||||
var categoryEls = el.find('.category-dropdown-menu .category');
|
||||
el.on('show.bs.dropdown', function () {
|
||||
function updateList() {
|
||||
var val = searchEl.find('input').val().toLowerCase();
|
||||
categoryEls.each(function () {
|
||||
var liEl = $(this);
|
||||
liEl.toggleClass('hidden', liEl.attr('data-name').toLowerCase().indexOf(val) === -1);
|
||||
});
|
||||
}
|
||||
|
||||
searchEl.removeClass('hidden').on('click', function (ev) {
|
||||
ev.preventDefault();
|
||||
ev.stopPropagation();
|
||||
});
|
||||
searchEl.find('input').val('').on('keyup', updateList);
|
||||
updateList();
|
||||
});
|
||||
|
||||
el.on('hide.bs.dropdown', function () {
|
||||
searchEl.addClass('hidden').off('click');
|
||||
searchEl.find('input').off('keyup');
|
||||
});
|
||||
categorySearch.init(el);
|
||||
};
|
||||
|
||||
categorySelector.getSelectedCategory = function () {
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
'use strict';
|
||||
|
||||
define('topicList', ['forum/infinitescroll', 'handleBack', 'topicSelect'], function (infinitescroll, handleBack, topicSelect) {
|
||||
define('topicList', [
|
||||
'forum/infinitescroll',
|
||||
'handleBack',
|
||||
'topicSelect',
|
||||
'categorySearch',
|
||||
], function (infinitescroll, handleBack, topicSelect, categorySearch) {
|
||||
var TopicList = {};
|
||||
var templateName = '';
|
||||
|
||||
@@ -156,6 +161,8 @@ define('topicList', ['forum/infinitescroll', 'handleBack', 'topicSelect'], funct
|
||||
return cids;
|
||||
}
|
||||
|
||||
categorySearch.init($('[component="category/dropdown"]'));
|
||||
|
||||
$('[component="category/dropdown"]').on('hidden.bs.dropdown', function () {
|
||||
var cids = getSelectedCids();
|
||||
var changed = ajaxify.data.selectedCids.length !== cids.length;
|
||||
|
||||
@@ -66,6 +66,7 @@ JS.scripts = {
|
||||
'public/src/modules/topicSelect.js',
|
||||
'public/src/modules/topicList.js',
|
||||
'public/src/modules/categorySelector.js',
|
||||
'public/src/modules/categorySearch.js',
|
||||
'public/src/modules/share.js',
|
||||
'public/src/modules/alerts.js',
|
||||
'public/src/modules/taskbar.js',
|
||||
|
||||
Reference in New Issue
Block a user