diff --git a/public/src/client/topic.js b/public/src/client/topic.js index 3206bb4466..71a3bb5d4b 100644 --- a/public/src/client/topic.js +++ b/public/src/client/topic.js @@ -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); }); diff --git a/public/src/modules/search.js b/public/src/modules/search.js index 879fe274ae..ebcc12dab0 100644 --- a/public/src/modules/search.js +++ b/public/src/modules/search.js @@ -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) {