From aaf958eb3a749af2201bc904530a8b10304825da Mon Sep 17 00:00:00 2001 From: Robby Date: Mon, 25 Nov 2024 14:55:03 -0500 Subject: [PATCH] Multi facet selection - Record last user state --- themes/bootstrap3/js/facets.js | 7 +++++++ themes/bootstrap5/js/facets.js | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/themes/bootstrap3/js/facets.js b/themes/bootstrap3/js/facets.js index efbd1815da9..05d30c383b4 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 localStorageVariableName = 'multiFacetsSelection'; /** * Normalize a filter value @@ -297,6 +298,10 @@ VuFind.register('multiFacetsSelection', function multiFacetsSelection() { toggleSelectedFacetStyle(elem); } + function saveUserSelectionLastState(state) { + localStorage.setItem(localStorageVariableName, state); + } + function toggleMultiFacetsSelection(enable) { if (typeof enable !== 'undefined') { isMultiFacetsSelectionActivated = enable; @@ -313,6 +318,7 @@ VuFind.register('multiFacetsSelection', function multiFacetsSelection() { toggleSelectedFacetStyle(elem); } } + saveUserSelectionLastState(isMultiFacetsSelectionActivated); const event = isMultiFacetsSelectionActivated ? activation_event : deactivation_event; VuFind.emit(event); } @@ -338,6 +344,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(localStorage.getItem(localStorageVariableName) === 'true'); } // 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 efbd1815da9..05d30c383b4 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 localStorageVariableName = 'multiFacetsSelection'; /** * Normalize a filter value @@ -297,6 +298,10 @@ VuFind.register('multiFacetsSelection', function multiFacetsSelection() { toggleSelectedFacetStyle(elem); } + function saveUserSelectionLastState(state) { + localStorage.setItem(localStorageVariableName, state); + } + function toggleMultiFacetsSelection(enable) { if (typeof enable !== 'undefined') { isMultiFacetsSelectionActivated = enable; @@ -313,6 +318,7 @@ VuFind.register('multiFacetsSelection', function multiFacetsSelection() { toggleSelectedFacetStyle(elem); } } + saveUserSelectionLastState(isMultiFacetsSelectionActivated); const event = isMultiFacetsSelectionActivated ? activation_event : deactivation_event; VuFind.emit(event); } @@ -338,6 +344,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(localStorage.getItem(localStorageVariableName) === 'true'); } // Listener on apply filters button const applyElem = context.querySelector('.js-apply-multi-facets-selection');