From 38b52971d824673e863a110456bf733ed3444ae4 Mon Sep 17 00:00:00 2001
From: Chris Lawton <chris.lawton@torchbox.com>
Date: Mon, 7 Jan 2019 17:03:05 +0000
Subject: [PATCH] tidy js

---
 .../javascript/apply/submission-filters.js    | 35 ++++++++++++-------
 1 file changed, 23 insertions(+), 12 deletions(-)

diff --git a/opentech/static_src/src/javascript/apply/submission-filters.js b/opentech/static_src/src/javascript/apply/submission-filters.js
index 42bf045ce..13cc7b1ad 100644
--- a/opentech/static_src/src/javascript/apply/submission-filters.js
+++ b/opentech/static_src/src/javascript/apply/submission-filters.js
@@ -2,10 +2,14 @@
 
     'use strict';
 
+    const $body = $('body');
     const $toggleButton = $('.js-toggle-filters');
     const $closeButton = $('.js-close-filters');
     const $clearButton = $('.js-clear-filters');
-    const activeClass = 'filters-open';
+    const filterOpenClass = 'filters-open';
+    const submissionsUrl = '/apply/submissions/';
+    const filterActiveClass = 'is-active';
+
     // check if the page has a query string and keep filters open if so on desktop
     if (window.location.href.indexOf('?') > -1 && $(window).width() > 1024) {
         $body.addClass(filterOpenClass);
@@ -14,7 +18,7 @@
 
     // Add active class to filters - dropdowns are dynamically appended to the dom,
     // so we have to listen for the event higher up
-    $('body').on('click', '.select2-dropdown', (e) => {
+    $body.on('click', '.select2-dropdown', (e) => {
         // get the id of the dropdown
         let selectId = e.target.parentElement.parentElement.id;
 
@@ -23,29 +27,35 @@
 
         // if the dropdown contains a clear class, the filters are active
         if ($(match[0]).find('span.select2-selection__clear').length !== 0) {
-            match[0].classList.add('is-active');
+            match[0].classList.add(filterActiveClass);
         }
         else {
-            match[0].classList.remove('is-active');
+            match[0].classList.remove(filterActiveClass);
         }
     });
 
     // remove active class on clearing select2
     $('.select2').on('select2:unselecting', (e) => {
         const dropdown = e.target.nextElementSibling.firstChild.firstChild;
-        if (dropdown.classList.contains('is-active')) {
-            dropdown.classList.remove('is-active');
+        if (dropdown.classList.contains(filterActiveClass)) {
+            dropdown.classList.remove(filterActiveClass);
         }
     });
 
     // toggle filters
-    $toggleButton.on('click', (e) => {
-        $('body').toggleClass(activeClass);
+    $toggleButton.on('click', () => {
+        if ($body.hasClass(filterOpenClass)) {
+            handleClearFilters();
+        }
+
+        $body.toggleClass(filterOpenClass);
+        updateButtonText();
     });
 
     // close filters on mobile
     $closeButton.on('click', (e) => {
-        $('body').removeClass(activeClass);
+        $body.removeClass(filterOpenClass);
+        updateButtonText();
     });
 
     // redirect to submissions home to clear filters
@@ -62,12 +72,13 @@
             $toggleButton.text('Filters');
         }
     }
+
     // clear all filters
     $clearButton.on('click', () => {
-        const dropdowns = document.querySelectorAll('.form__filters--mobile select');
+        const dropdowns = document.querySelectorAll('.form__filters select');
         dropdowns.forEach(dropdown => {
             $(dropdown).val(null).trigger('change');
-            $('.select2-selection.is-active').removeClass('is-active');
+            $('.select2-selection.is-active').removeClass(filterActiveClass);
             mobileFilterPadding(dropdown); // eslint-disable-line no-undef
         });
     });
@@ -76,7 +87,7 @@
         // Add active class to select2 checkboxes after page has been filtered
         const clearButtons = document.querySelectorAll('.select2-selection__clear');
         clearButtons.forEach(clearButton => {
-            clearButton.parentElement.parentElement.classList.add('is-active');
+            clearButton.parentElement.parentElement.classList.add(filterActiveClass);
         });
     });
 
-- 
GitLab