fix: closes #11673, topic search for harmony

harmony uses dropdown for search persona and older themes used a hidden input element in the navbar
isekai-main
Barış Soner Uşaklı 2 years ago
parent 639eeb4492
commit ee8cb3782b

@ -84,7 +84,10 @@ define('forum/topic', [
require(['search'], function (search) {
mousetrap.bind(['command+f', 'ctrl+f'], function (e) {
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 + ' ');
search.showAndFocusInput(form);
});

@ -1,6 +1,8 @@
'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 = {
current: {},
};
@ -225,9 +227,18 @@ define('search', ['translator', 'storage', 'hooks', 'alerts'], function (transla
};
Search.showAndFocusInput = function (form) {
form.find('[component="search/fields"]').removeClass('hidden');
form.find('[component="search/button"]').addClass('hidden');
form.find('[component="search/fields"] input[name="query"]').trigger('focus');
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/button"]').addClass('hidden');
form.find('[component="search/fields"] input[name="query"]').trigger('focus');
}
};
Search.query = function (data, callback) {

Loading…
Cancel
Save