diff --git a/js/jquery.winnow.js b/js/jquery.winnow.js
index 25ffab82e7275f2f9223c464bcffeea2e28910bc..e8de3f193af06f2c7be0fbceedb038f23eab9fb9 100644
--- a/js/jquery.winnow.js
+++ b/js/jquery.winnow.js
@@ -3,21 +3,19 @@
  * JQuery plugin to filter out elements based on user input.
  */
 
-(function ($) {
+($ => {
 
-  var now = Date.now || function () {
-      return new Date().getTime();
-    };
+  const now = () => new Date().getTime() || Date.now;
 
   function debounce(func, wait, immediate) {
-    var timeout;
-    var args;
-    var context;
-    var timestamp;
-    var result;
+    let timeout;
+    let args;
+    let context;
+    let timestamp;
+    let result;
 
-    var later = function () {
-      var last = now() - timestamp;
+    const later = () => {
+      const last = now() - timestamp;
 
       if (last < wait && last >= 0) {
         timeout = setTimeout(later, wait - last);
@@ -26,23 +24,25 @@
         timeout = null;
         if (!immediate) {
           result = func.apply(context, args);
-          if (!timeout) {
-            args = context = null;
-          }
+          // eslint-disable-next-line no-multi-assign
+          args = context = null;
         }
       }
     };
 
+    // eslint-disable-next-line func-names
     return function () {
       context = this;
+      // eslint-disable-next-line prefer-rest-params
       args = arguments;
       timestamp = now();
-      var callNow = immediate && !timeout;
+      const callNow = immediate && !timeout;
       if (!timeout) {
         timeout = setTimeout(later, wait);
       }
       if (callNow) {
         result = func.apply(context, args);
+        // eslint-disable-next-line no-multi-assign
         args = context = null;
       }
 
@@ -51,7 +51,7 @@
   }
 
   function explode(string) {
-    return string.match(/(\w*\:(\w+|"[^"]+")*)|\w+|"[^"]+"/g);
+    return string.match(/(\w*:(\w+|"[^"]+")*)|\w+|"[^"]+"/g);
   }
 
   function preventEnterKey(e) {
@@ -59,10 +59,11 @@
       e.preventDefault();
       e.stopPropagation();
     }
-  };
+  }
 
-  var Winnow = function (element, selector, options) {
-    var self = this;
+  // eslint-disable-next-line func-names
+  const Winnow = function (element, selector, options) {
+    const self = this;
 
     self.element = element;
     self.selector = selector;
@@ -89,24 +90,23 @@
     self.element.wrap('<div class="winnow-input"></div>');
 
     // Add clear button.
-    self.clearButton = $('<a href="#" class="winnow-clear">' + self.options.clearLabel + '</a>');
+    self.clearButton = $(`<a href="#" class="winnow-clear">${  self.options.clearLabel  }</a>`);
     self.clearButton.css({
       'display': 'inline-block',
       'margin-left': '0.75em'
     });
-    if (self.element.val() == '') {
+    if (self.element.val() === '') {
       self.clearButton.hide();
     }
-    self.clearButton.click(function (e) {
+    self.clearButton.click((e) => {
       e.preventDefault();
-
       self.clearFilter();
     });
     self.element.after(self.clearButton);
 
     self.element.on({
-      keyup: debounce(function () {
-        var value = self.element.val();
+      keyup: debounce(() => {
+        const value = self.element.val();
         if (!value || explode(value).pop().slice(-1) !== ':') {
           // Only filter if we aren't using the operator autocomplete.
           self.filter();
@@ -115,9 +115,9 @@
       keydown: preventEnterKey
     });
     self.element.on({
-      keyup: function () {
+      keyup () {
         // Show/hide the clear button.
-        if (self.element.val() != '') {
+        if (self.element.val() !== '') {
           self.clearButton.show();
         }
         else {
@@ -127,39 +127,41 @@
     });
 
     // Autocomplete operators. When last query is ":", return list of available
-    // operators with the exception of "text".
+    // operators except "text".
     if (typeof self.element.autocomplete === 'function') {
-      var operators = Object.keys(self.getOperators());
-      var source = [];
-      for (var i in operators) {
-        if (operators[i] != 'text') {
+      const operators = Object.keys(self.getOperators());
+      const source = [];
+      for (let i = 0; i < operators.length; i++){
+        const operator = operators[i];
+        if (operator !== 'text') {
           source.push({
-            label: operators[i],
-            value: operators[i] + ':'
+            label: operator,
+            value: `${operator}:`
           });
         }
       }
 
       self.element.autocomplete({
-        'search': function (event) {
-          if (explode(event.target.value).pop() != ':') {
+        search(event) {
+          if (explode(event.target.value).pop() !== ':') {
             return false;
           }
         },
-        'source': function (request, response) {
+        source(request, response) {
           return response(source);
         },
-        'select': function (event, ui) {
-          var terms = explode(event.target.value);
+        select(event, ui) {
+          const terms = explode(event.target.value);
           // Remove the current input.
           terms.pop();
           // Add the selected item.
           terms.push(ui.item.value);
           event.target.value = terms.join(' ');
-          // Return false to tell jQuery UI that we've filled in the value already.
+          // Return false to tell jQuery UI that we've filled in the value
+          // already.
           return false;
         },
-        'focus': function () {
+        focus() {
           return false;
         }
       });
@@ -168,28 +170,30 @@
     self.element.data('winnow', self);
   };
 
+  // eslint-disable-next-line func-names
   Winnow.prototype.setQueries = function (string) {
-    var self = this;
-    var strings = explode(string);
+    const self = this;
+    const strings = explode(string);
 
     self.text = string;
     self.queries = [];
 
-    for (var i in strings) {
+    // eslint-disable-next-line no-restricted-syntax
+    for (const i in strings) {
       if (strings.hasOwnProperty(i)) {
-        var query = { operator: 'text', string: strings[i] };
-        var operators = self.getOperators();
+        const query = { operator: 'text', string: strings[i] };
+        const operators = self.getOperators();
 
         if (query.string.indexOf(':') > 0) {
-          var parts = query.string.split(':', 2);
-          var operator = parts.shift();
+          const parts = query.string.split(':', 2);
+          const operator = parts.shift();
           if (operators[operator] !== undefined) {
             query.operator = operator;
             query.string = parts.shift();
           }
         }
 
-        if (query.string.charAt(0) == '"') {
+        if (query.string.charAt(0) === '"') {
           // Remove wrapping double quotes.
           query.string = query.string.replace(/^"|"$/g, '');
         }
@@ -201,19 +205,22 @@
     }
   };
 
+  // eslint-disable-next-line func-names
   Winnow.prototype.buildIndex = function () {
-    var self = this;
+    const self = this;
     this.index = [];
 
+    // eslint-disable-next-line func-names
     $(self.selector, self.wrapper).each(function (i) {
-      var text = (self.options.textSelector) ? $(self.options.textSelector, this).text() : $(this).text();
-      var item = {
+      const text = (self.options.textSelector) ? $(self.options.textSelector, this).text() : $(this).text();
+      let item = {
         key: i,
         element: $(this),
         text: text.toLowerCase()
       };
 
-      for (var j in self.options.buildIndex) {
+      // eslint-disable-next-line guard-for-in,no-restricted-syntax
+      for (const j in self.options.buildIndex) {
         item = $.extend(self.options.buildIndex[j].apply(this, [item]), item);
       }
 
@@ -224,22 +231,28 @@
     return self.trigger('finishIndexing', [ self ]);
   };
 
+  // eslint-disable-next-line func-names
   Winnow.prototype.bind = function () {
-    var args = arguments;
-    args[0] = 'winnow:' + args[0];
+    // eslint-disable-next-line prefer-rest-params
+    const args = arguments;
+    args[0] = `winnow:${args[0]}`;
 
+    // eslint-disable-next-line prefer-spread
     return this.element.bind.apply(this.element, args);
   };
 
-  Winnow.prototype.trigger = function (event) {
-    var args = arguments;
-    args[0] = 'winnow:' + args[0];
-
+  // eslint-disable-next-line func-names
+  Winnow.prototype.trigger = function () {
+    // eslint-disable-next-line prefer-rest-params
+    const args = arguments;
+    args[0] = `winnow:${args[0]}`;
+    // eslint-disable-next-line prefer-spread
     return this.element.trigger.apply(this.element, args);
   };
 
+  // eslint-disable-next-line func-names
   Winnow.prototype.filter = function () {
-    var self = this;
+    const self = this;
 
     self.results = [];
     self.setQueries(self.element.val());
@@ -248,28 +261,27 @@
       self.buildIndex();
     }
 
-    var start = self.trigger('start');
+    self.trigger('start');
 
+    // eslint-disable-next-line func-names
     $.each(self.index, function (key, item) {
-      var $item = item.element;
-      var operatorMatch = true;
+      const $item = item.element;
+      let operatorMatch = true;
 
-      if (self.text != '') {
+      let result;
+      if (self.text !== '') {
         operatorMatch = false;
-        for (var i in self.queries) {
-          var query = self.queries[i];
-          var operators = self.getOperators();
+        for (let i = 0; i < self.queries.length; i++){
+          const query = self.queries[i];
+          const operators = self.getOperators();
 
           if (operators[query.operator] !== undefined) {
             result = operators[query.operator].apply($item, [query.string, item]);
-            if (!result) {
-              // Is not a text match so continue to next query string.
-              continue;
+            if (result) {
+              operatorMatch = true;
+              break;
             }
           }
-
-          operatorMatch = true;
-          break;
         }
       }
 
@@ -284,10 +296,10 @@
       $item.hide();
     });
 
-    var finish = self.trigger('finish', [ self.results ]);
+    self.trigger('finish', [ self.results ]);
 
     if (self.options.striping) {
-      stripe();
+      self.stripe();
     }
 
     if (self.options.emptyMessage) {
@@ -300,9 +312,10 @@
     }
   };
 
+  // eslint-disable-next-line func-names
   Winnow.prototype.getOperators = function () {
     return $.extend({}, {
-      text: function (string, item) {
+      text (string, item) {
         if (item.text.indexOf(string) >= 0) {
           return true;
         }
@@ -310,13 +323,15 @@
     }, this.options.additionalOperators);
   };
 
+  // eslint-disable-next-line func-names
   Winnow.prototype.processRules = function (item) {
-    var self = this;
-    var $item = item.element;
-    var result = true;
+    const self = this;
+    const $item = item.element;
+    let result = true;
 
     if (self.options.rules.length > 0) {
-      for (var i in self.options.rules) {
+      // eslint-disable-next-line guard-for-in,no-restricted-syntax
+      for (const i in self.options.rules) {
         result = self.options.rules[i].apply($item, [item]);
         if (result === false) {
           break;
@@ -327,10 +342,12 @@
     return result;
   };
 
+  // eslint-disable-next-line func-names
   Winnow.prototype.stripe = function () {
-    var flip = { even: 'odd', odd: 'even' };
-    var stripe = 'odd';
+    const flip = { even: 'odd', odd: 'even' };
+    let stripe = 'odd';
 
+    // eslint-disable-next-line func-names
     $.each(this.index, function (key, item) {
       if (!item.element.is(':visible')) {
         item.element.removeClass('odd even').addClass(stripe);
@@ -339,6 +356,7 @@
     });
   };
 
+  // eslint-disable-next-line func-names
   Winnow.prototype.clearFilter = function () {
     this.element.val('');
     this.filter();
@@ -346,11 +364,14 @@
     this.element.focus();
   };
 
+  // eslint-disable-next-line func-names
   $.fn.winnow = function (selector, options) {
-    var $input = this.not('.winnow-processed').addClass('winnow-processed');
+    const $input = this.not('.winnow-processed').addClass('winnow-processed');
 
+    // eslint-disable-next-line func-names
     $input.each(function () {
-      var winnow = new Winnow($input, selector, options);
+      // eslint-disable-next-line no-new
+      new Winnow($input, selector, options);
     });
 
     return this;
diff --git a/js/module_filter.js b/js/module_filter.js
index 7d969aba8a894aba061fc33471320d3b923331a0..0f830709e9829134023f28cd8332b9c6baa46fb7 100644
--- a/js/module_filter.js
+++ b/js/module_filter.js
@@ -2,37 +2,35 @@
  * @file
  */
 
-(function ($, Drupal) {
-
-  'use strict';
+(($, Drupal) => {
 
   Drupal.ModuleFilter = Drupal.ModuleFilter || {};
 
   Drupal.ModuleFilter.localStorage = {
-    getItem: function (key) {
+    getItem (key) {
       if (typeof Storage !== 'undefined') {
-        return localStorage.getItem('moduleFilter.' + key);
+        return localStorage.getItem(`moduleFilter.${key}`);
       }
 
       return null;
     },
-    getBoolean: function (key) {
-      var item = Drupal.ModuleFilter.localStorage.getItem(key);
+    getBoolean (key) {
+      const item = Drupal.ModuleFilter.localStorage.getItem(key);
 
       if (item != null) {
-        return (item == 'true');
+        return (item === 'true');
       }
 
       return null;
     },
-    setItem: function (key, data) {
+    setItem (key, data) {
       if (typeof Storage !== 'undefined') {
-        localStorage.setItem('moduleFilter.' + key, data)
+        localStorage.setItem(`moduleFilter.${key}`, data)
       }
     },
-    removeItem: function (key) {
+    removeItem (key) {
       if (typeof Storage !== 'undefined') {
-        localStorage.removeItem('moduleFilter.' + key);
+        localStorage.removeItem(`moduleFilter.${key}`);
       }
     }
   };
@@ -41,7 +39,7 @@
    * Filter enhancements.
    */
   Drupal.behaviors.moduleFilter = {
-    attach: function (context) {
+    attach () {
 
     }
   };