You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by dk...@apache.org on 2019/12/23 18:02:31 UTC

[sling-org-apache-sling-app-cms] 04/04: SLING-8919 - Updating to support filtering by title and data-value

This is an automated email from the ASF dual-hosted git repository.

dklco pushed a commit to branch SLING-8947-grid-missing-fields
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-app-cms.git

commit 1294061a0d3e70f807c8cc96fecbbceb50962777
Author: Dan Klco <dk...@apache.org>
AuthorDate: Mon Dec 23 13:02:17 2019 -0500

    SLING-8919 - Updating to support filtering by title and data-value
---
 ui/src/main/frontend/js/cms.nav.js | 22 ++++++++++++++++++----
 1 file changed, 18 insertions(+), 4 deletions(-)

diff --git a/ui/src/main/frontend/js/cms.nav.js b/ui/src/main/frontend/js/cms.nav.js
index cac2a49..eb5a946 100644
--- a/ui/src/main/frontend/js/cms.nav.js
+++ b/ui/src/main/frontend/js/cms.nav.js
@@ -44,12 +44,26 @@ rava.bind('.contentnav', {
       const searchParam = urlParams.get('search');
       const cnav = this;
       const search = document.querySelector('.contentnav-search input[name=search]');
+      function attrContains(ctx, attr) {
+        let matches = false;
+        const value = search.value.toLowerCase();
+        ctx.querySelectorAll(`*[${attr}]`).forEach((it) => {
+          if (it.getAttribute(attr).indexOf(value) !== -1) {
+            matches = true;
+          }
+        });
+        return matches;
+      }
       function filter(event) {
-        event.stopPropagation();
-        event.preventDefault();
+        if (event) {
+          event.stopPropagation();
+          event.preventDefault();
+        }
         const value = search.value.toLowerCase();
         cnav.querySelectorAll('.contentnav__item').forEach((item) => {
-          if (item.innerText.toLowerCase().indexOf(value) === -1 && !item.querySelector(`*[data-value="${resourceParam}"]`)) {
+          if (item.innerText.toLowerCase().indexOf(value) === -1
+            && !attrContains(item, 'title')
+            && !attrContains(item, 'data-value')) {
             item.classList.add('is-hidden');
           } else {
             item.classList.remove('is-hidden');
@@ -72,7 +86,7 @@ rava.bind('.contentnav', {
         document.querySelector('.contentnav-search input[name=search]').value = resourceParam;
       } else if (searchParam) {
         document.querySelector('.contentnav-search input[name=search]').value = searchParam;
-        filter(new Event('fake'));
+        filter();
       }
     },
   },