mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-07 14:35:47 +01:00
fix: closes #11673, topic search for harmony
harmony uses dropdown for search persona and older themes used a hidden input element in the navbar
This commit is contained in:
@@ -84,7 +84,10 @@ define('forum/topic', [
|
|||||||
require(['search'], function (search) {
|
require(['search'], function (search) {
|
||||||
mousetrap.bind(['command+f', 'ctrl+f'], function (e) {
|
mousetrap.bind(['command+f', 'ctrl+f'], function (e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
const form = $('[component="navbar"] [component="search/form"]');
|
let form = $('[component="navbar"] [component="search/form"]');
|
||||||
|
if (!form.length) { // harmony
|
||||||
|
form = $('[component="sidebar/right"] [component="search/form"]');
|
||||||
|
}
|
||||||
form.find('[component="search/fields"] input[name="query"]').val('in:topic-' + ajaxify.data.tid + ' ');
|
form.find('[component="search/fields"] input[name="query"]').val('in:topic-' + ajaxify.data.tid + ' ');
|
||||||
search.showAndFocusInput(form);
|
search.showAndFocusInput(form);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
define('search', ['translator', 'storage', 'hooks', 'alerts'], function (translator, storage, hooks, alerts) {
|
define('search', [
|
||||||
|
'translator', 'storage', 'hooks', 'alerts', 'bootstrap',
|
||||||
|
], function (translator, storage, hooks, alerts, bootstrap) {
|
||||||
const Search = {
|
const Search = {
|
||||||
current: {},
|
current: {},
|
||||||
};
|
};
|
||||||
@@ -225,9 +227,18 @@ define('search', ['translator', 'storage', 'hooks', 'alerts'], function (transla
|
|||||||
};
|
};
|
||||||
|
|
||||||
Search.showAndFocusInput = function (form) {
|
Search.showAndFocusInput = function (form) {
|
||||||
|
const parentDropdown = form.parents('.dropdown-menu');
|
||||||
|
if (parentDropdown.length) { // handle if form is inside a dropdown aka harmony
|
||||||
|
const toggle = parentDropdown.siblings('[data-bs-toggle]');
|
||||||
|
const dropdownEl = bootstrap.Dropdown.getOrCreateInstance(toggle[0]);
|
||||||
|
if (dropdownEl) {
|
||||||
|
dropdownEl.show();
|
||||||
|
}
|
||||||
|
} else { // persona and others
|
||||||
form.find('[component="search/fields"]').removeClass('hidden');
|
form.find('[component="search/fields"]').removeClass('hidden');
|
||||||
form.find('[component="search/button"]').addClass('hidden');
|
form.find('[component="search/button"]').addClass('hidden');
|
||||||
form.find('[component="search/fields"] input[name="query"]').trigger('focus');
|
form.find('[component="search/fields"] input[name="query"]').trigger('focus');
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
Search.query = function (data, callback) {
|
Search.query = function (data, callback) {
|
||||||
|
|||||||
Reference in New Issue
Block a user