From 4f6b6c56319372572cbac19d7a3bc9e3ac3a5417 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Tue, 23 Jun 2020 12:37:12 -0400 Subject: [PATCH] feat: hide elements if search element is a direct child of dropdown this fixes themes if they put the search input inside the dropdown --- public/src/modules/categorySearch.js | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/public/src/modules/categorySearch.js b/public/src/modules/categorySearch.js index 0a8b7a3f3a..1774fd2d16 100644 --- a/public/src/modules/categorySearch.js +++ b/public/src/modules/categorySearch.js @@ -11,6 +11,7 @@ define('categorySearch', function () { if (!searchEl.length) { return; } + var toggleVisibility = searchEl.parent('[component="category/dropdown"]').length > 0; var categoryEls = el.find('[component="category/list"] [data-cid]'); el.on('show.bs.dropdown', function () { function revealParents(cid) { @@ -53,18 +54,29 @@ define('categorySearch', function () { 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) { + if (toggleVisibility) { + el.find('.dropdown-toggle').addClass('hidden'); + searchEl.removeClass('hidden'); + } + + searchEl.on('click', function (ev) { ev.preventDefault(); ev.stopPropagation(); }); - searchEl.find('input').val('').focus().on('keyup', updateList); + searchEl.find('input').val('').on('keyup', updateList); updateList(); }); + el.on('shown.bs.dropdown', function () { + searchEl.find('input').focus(); + }); el.on('hide.bs.dropdown', function () { - el.find('.dropdown-toggle').removeClass('hidden'); - searchEl.addClass('hidden').off('click'); + if (toggleVisibility) { + el.find('.dropdown-toggle').removeClass('hidden'); + searchEl.addClass('hidden'); + } + + searchEl.off('click'); searchEl.find('input').off('keyup'); }); };