diff --git a/client/components/sidebar/sidebarFilters.js b/client/components/sidebar/sidebarFilters.js index 7f527b9f5..dce993d44 100644 --- a/client/components/sidebar/sidebarFilters.js +++ b/client/components/sidebar/sidebarFilters.js @@ -6,7 +6,7 @@ BlazeComponent.extendComponent({ { 'submit .js-list-filter'(evt) { evt.preventDefault(); - Filter.lists.set(this.find('.js-list-filter input').value.trim()); + Filter.title.set(this.find('.js-list-filter input').value.trim()); }, 'click .js-toggle-label-filter'(evt) { evt.preventDefault(); diff --git a/client/lib/filter.js b/client/lib/filter.js index 94d931cee..c41fce32a 100644 --- a/client/lib/filter.js +++ b/client/lib/filter.js @@ -155,6 +155,39 @@ class DateFilter { } } +class StringFilter { + constructor() { + this._dep = new Tracker.Dependency(); + this.subField = ''; // Prevent name mangling in Filter + this._filter = ''; + } + + set(str) { + this._filter = str; + this._dep.changed(); + } + + reset() { + this._filter = ''; + this._dep.changed(); + } + + _isActive() { + this._dep.depend(); + return this._filter !== ''; + } + + _getMongoSelector() { + this._dep.depend(); + return {$regex : this._filter, $options: 'i'}; + } + + _getEmptySelector() { + this._dep.depend(); + return {$regex : this._filter, $options: 'i'}; + } +} + // Use a "set" filter for a field that is a set of documents uniquely // identified. For instance `{ labels: ['labelA', 'labelC', 'labelD'] }`. // use "subField" for searching inside object Fields. @@ -611,9 +644,9 @@ Filter = { archive: new SetFilter(), hideEmpty: new SetFilter(), dueAt: new DateFilter(), + title: new StringFilter(), customFields: new SetFilter('_id'), advanced: new AdvancedFilter(), - lists: new AdvancedFilter(), // we need the ability to filter list by name as well _fields: [ 'labelIds', @@ -622,6 +655,7 @@ Filter = { 'archive', 'hideEmpty', 'dueAt', + 'title', 'customFields', ], @@ -636,8 +670,7 @@ Filter = { _.any(this._fields, fieldName => { return this[fieldName]._isActive(); }) || - this.advanced._isActive() || - this.lists._isActive() + this.advanced._isActive() ); }, @@ -682,7 +715,7 @@ Filter = { if (includeEmptySelectors) selectors.push(emptySelector); if (this.advanced._isActive()) selectors.push(this.advanced._getMongoSelector()); - + return { $or: selectors, }; @@ -702,7 +735,6 @@ Filter = { const filter = this[fieldName]; filter.reset(); }); - this.lists.reset(); this.advanced.reset(); this.resetExceptions(); },