feat: hide elements if search element is a direct child of dropdown

this fixes themes if they put the search input inside the dropdown
v1.18.x
Barış Soner Uşaklı 5 years ago
parent d50f7c7dfa
commit 4f6b6c5631

@ -11,6 +11,7 @@ define('categorySearch', function () {
if (!searchEl.length) { if (!searchEl.length) {
return; return;
} }
var toggleVisibility = searchEl.parent('[component="category/dropdown"]').length > 0;
var categoryEls = el.find('[component="category/list"] [data-cid]'); var categoryEls = el.find('[component="category/list"] [data-cid]');
el.on('show.bs.dropdown', function () { el.on('show.bs.dropdown', function () {
function revealParents(cid) { function revealParents(cid) {
@ -53,18 +54,29 @@ define('categorySearch', function () {
el.find('[component="category/list"] [component="category/no-matches"]').toggleClass('hidden', !noMatch); el.find('[component="category/list"] [component="category/no-matches"]').toggleClass('hidden', !noMatch);
} }
el.find('.dropdown-toggle').addClass('hidden'); if (toggleVisibility) {
searchEl.removeClass('hidden').on('click', function (ev) { el.find('.dropdown-toggle').addClass('hidden');
searchEl.removeClass('hidden');
}
searchEl.on('click', function (ev) {
ev.preventDefault(); ev.preventDefault();
ev.stopPropagation(); ev.stopPropagation();
}); });
searchEl.find('input').val('').focus().on('keyup', updateList); searchEl.find('input').val('').on('keyup', updateList);
updateList(); updateList();
}); });
el.on('shown.bs.dropdown', function () {
searchEl.find('input').focus();
});
el.on('hide.bs.dropdown', function () { el.on('hide.bs.dropdown', function () {
el.find('.dropdown-toggle').removeClass('hidden'); if (toggleVisibility) {
searchEl.addClass('hidden').off('click'); el.find('.dropdown-toggle').removeClass('hidden');
searchEl.addClass('hidden');
}
searchEl.off('click');
searchEl.find('input').off('keyup'); searchEl.find('input').off('keyup');
}); });
}; };

Loading…
Cancel
Save