From 0721bee1468ce24bea75b2268e626aa1e1bf9b6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Thu, 30 May 2019 18:27:22 -0400 Subject: [PATCH] feat: on category search reveal children and parents --- public/src/modules/categorySearch.js | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/public/src/modules/categorySearch.js b/public/src/modules/categorySearch.js index 543b605ef4..d5a61b3dc7 100644 --- a/public/src/modules/categorySearch.js +++ b/public/src/modules/categorySearch.js @@ -13,16 +13,42 @@ define('categorySearch', function () { } var categoryEls = el.find('[component="category/list"] [data-cid]'); el.on('show.bs.dropdown', function () { + function revealParents(cid) { + var parentCid = el.find('[component="category/list"] [data-cid="' + cid + '"]').attr('data-parentCid'); + if (parentCid) { + el.find('[component="category/list"] [data-cid="' + parentCid + '"]').removeClass('hidden'); + revealParents(parentCid); + } + } + + function revealChildren(cid) { + var els = el.find('[component="category/list"] [data-parentCid="' + cid + '"]'); + els.each(function (index, el) { + var $el = $(el); + $el.removeClass('hidden'); + revealChildren($el.attr('data-cid')); + }); + } + function updateList() { var val = searchEl.find('input').val().toLowerCase(); var noMatch = true; + var cids = []; categoryEls.each(function () { var liEl = $(this); var isMatch = liEl.attr('data-name').toLowerCase().indexOf(val) !== -1; if (noMatch && isMatch) { noMatch = false; } - liEl.toggleClass('hidden', !isMatch); + if (isMatch && val) { + cids.push(liEl.attr('data-cid')); + } + liEl.toggleClass('hidden', !isMatch).find('[component="category-markup"]').css({ 'font-weight': val && isMatch ? 'bold' : 'normal' }); + }); + + cids.forEach(function (cid) { + revealParents(cid); + revealChildren(cid); }); el.find('[component="category/list"] [component="category/no-matches"]').toggleClass('hidden', !noMatch);