From 8eee07509b3ea2615ef5c90b656c85e63c738bb7 Mon Sep 17 00:00:00 2001 From: Robby Date: Thu, 16 Jan 2025 14:51:31 -0500 Subject: [PATCH] Merge to last code --- themes/bootstrap3/js/facets.js | 14 ++++++++++++++ themes/bootstrap5/js/facets.js | 14 ++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/themes/bootstrap3/js/facets.js b/themes/bootstrap3/js/facets.js index f734dd37efc..30e9bdb1905 100644 --- a/themes/bootstrap3/js/facets.js +++ b/themes/bootstrap3/js/facets.js @@ -140,6 +140,7 @@ VuFind.register('multiFacetsSelection', function multiFacetsSelection() { const activation_event = 'facet-selection-begin'; const deactivation_event = 'facet-selection-cancel'; const apply_event = 'facet-selection-done'; + const local_storage_variable_name = 'multi-facets-selection'; /** * Normalize a filter value @@ -303,9 +304,21 @@ VuFind.register('multiFacetsSelection', function multiFacetsSelection() { toggleSelectedFacetStyle(elem); } + function saveUserSelectionLastState(state) { + localStorage.setItem(local_storage_variable_name, state ? 'true' : 'false'); + } + + function getUserSelectionLastState() { + return localStorage.getItem(local_storage_variable_name) === 'true'; + } + function toggleMultiFacetsSelection(enable) { if (typeof enable !== 'undefined') { + if (isMultiFacetsSelectionActivated === enable) { + return; + } isMultiFacetsSelectionActivated = enable; + saveUserSelectionLastState(isMultiFacetsSelectionActivated); } document.querySelectorAll('.multi-facet-selection').forEach( el => el.classList.toggle('multi-facet-selection-active', isMultiFacetsSelectionActivated) ); const checkboxes = document.getElementsByClassName('js-user-selection-multi-filters'); @@ -344,6 +357,7 @@ VuFind.register('multiFacetsSelection', function multiFacetsSelection() { const activationElem = context.querySelector('.js-user-selection-multi-filters'); if (activationElem) { activationElem.addEventListener('change', function multiFacetSelectionChange() { toggleMultiFacetsSelection(this.checked); } ); + toggleMultiFacetsSelection(getUserSelectionLastState()); } // Listener on apply filters button const applyElem = context.querySelector('.js-apply-multi-facets-selection'); diff --git a/themes/bootstrap5/js/facets.js b/themes/bootstrap5/js/facets.js index f734dd37efc..30e9bdb1905 100644 --- a/themes/bootstrap5/js/facets.js +++ b/themes/bootstrap5/js/facets.js @@ -140,6 +140,7 @@ VuFind.register('multiFacetsSelection', function multiFacetsSelection() { const activation_event = 'facet-selection-begin'; const deactivation_event = 'facet-selection-cancel'; const apply_event = 'facet-selection-done'; + const local_storage_variable_name = 'multi-facets-selection'; /** * Normalize a filter value @@ -303,9 +304,21 @@ VuFind.register('multiFacetsSelection', function multiFacetsSelection() { toggleSelectedFacetStyle(elem); } + function saveUserSelectionLastState(state) { + localStorage.setItem(local_storage_variable_name, state ? 'true' : 'false'); + } + + function getUserSelectionLastState() { + return localStorage.getItem(local_storage_variable_name) === 'true'; + } + function toggleMultiFacetsSelection(enable) { if (typeof enable !== 'undefined') { + if (isMultiFacetsSelectionActivated === enable) { + return; + } isMultiFacetsSelectionActivated = enable; + saveUserSelectionLastState(isMultiFacetsSelectionActivated); } document.querySelectorAll('.multi-facet-selection').forEach( el => el.classList.toggle('multi-facet-selection-active', isMultiFacetsSelectionActivated) ); const checkboxes = document.getElementsByClassName('js-user-selection-multi-filters'); @@ -344,6 +357,7 @@ VuFind.register('multiFacetsSelection', function multiFacetsSelection() { const activationElem = context.querySelector('.js-user-selection-multi-filters'); if (activationElem) { activationElem.addEventListener('change', function multiFacetSelectionChange() { toggleMultiFacetsSelection(this.checked); } ); + toggleMultiFacetsSelection(getUserSelectionLastState()); } // Listener on apply filters button const applyElem = context.querySelector('.js-apply-multi-facets-selection');