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