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) { 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) {

Loading…
Cancel
Save