From 8e7929b874fbd8fe70c869eacde24ee3259e500c Mon Sep 17 00:00:00 2001 From: Phil Hughes Date: Fri, 20 Jan 2017 21:40:50 +0000 Subject: Checks if rendered count has changed rather than relying on key char --- app/assets/javascripts/droplab/droplab.js | 1 - app/assets/javascripts/droplab/droplab_filter.js | 22 +++++++++++++++------- 2 files changed, 15 insertions(+), 8 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/droplab/droplab.js b/app/assets/javascripts/droplab/droplab.js index 2e8c2e6f1e3..8b14191395b 100644 --- a/app/assets/javascripts/droplab/droplab.js +++ b/app/assets/javascripts/droplab/droplab.js @@ -615,7 +615,6 @@ require('./window')(function(w){ if (elOffsetTop > filterDropdownBottom) { filterDropdownEl.scrollTop = elOffsetTop - filterDropdownBottom; - console.log(filterDropdownEl.scrollTop); } } } diff --git a/app/assets/javascripts/droplab/droplab_filter.js b/app/assets/javascripts/droplab/droplab_filter.js index b857fc68627..9b40a3f20a4 100644 --- a/app/assets/javascripts/droplab/droplab_filter.js +++ b/app/assets/javascripts/droplab/droplab_filter.js @@ -3,10 +3,11 @@ /* global droplab */ require('../window')(function(w){ - var charRegex = new RegExp('^.$', 'g'); w.droplabFilter = { keydownWrapper: function(e){ + var hiddenCount = 0; + var dataHiddenCount = 0; var list = e.detail.hook.list; var data = list.data; var value = e.detail.hook.trigger.value.toLowerCase(); @@ -18,10 +19,6 @@ require('../window')(function(w){ return; } - if (!charRegex.test(e.detail.key)) { - return; - } - if (config && config.filterFunction && typeof config.filterFunction === 'function') { filterFunction = config.filterFunction; } else { @@ -32,11 +29,22 @@ require('../window')(function(w){ }; } + dataHiddenCount = data.filter(function(o) { + return !o.droplab_hidden; + }).length; + matches = data.map(function(o) { return filterFunction(o, value); }); - list.render(matches); - list.currentIndex = 0; + + hiddenCount = matches.filter(function(o) { + return !o.droplab_hidden; + }).length; + + if (dataHiddenCount !== hiddenCount) { + list.render(matches); + list.currentIndex = 0; + } }, init: function init(hookInput) { -- cgit v1.2.3