From b771e26867967ff3745546df5711d0767aca2d04 Mon Sep 17 00:00:00 2001 From: iam4x Date: Fri, 1 Dec 2017 10:06:29 +0100 Subject: [PATCH 1/3] fix(hierarchicalMenu): check is facet refined first --- .../hierarchical-menu/connectHierarchicalMenu.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/connectors/hierarchical-menu/connectHierarchicalMenu.js b/src/connectors/hierarchical-menu/connectHierarchicalMenu.js index 1405e4dd74..aaa06c320e 100644 --- a/src/connectors/hierarchical-menu/connectHierarchicalMenu.js +++ b/src/connectors/hierarchical-menu/connectHierarchicalMenu.js @@ -197,9 +197,17 @@ export default function connectHierarchicalMenu(renderFn, unmountFn) { unmountFn(); // compute nextState for the search - const nextState = state - .removeHierarchicalFacetRefinement(hierarchicalFacetName) - .removeHierarchicalFacet(hierarchicalFacetName); + let nextState; + + if (state.isHierarchicalFacetRefined(hierarchicalFacetName)) { + nextState = state.removeHierarchicalFacetRefinement( + hierarchicalFacetName + ); + } + + nextState = (nextState || state).removeHierarchicalFacet( + hierarchicalFacetName + ); if (nextState.maxValuesPerFacet === limit) { nextState.setQueryParameters('maxValuesPerFacet', undefined); From 02f2bcd13eff4917b88cc3fd8c97205fa0a4e3c2 Mon Sep 17 00:00:00 2001 From: iam4x Date: Fri, 1 Dec 2017 10:17:07 +0100 Subject: [PATCH 2/3] fix(connectMenu): check facet refined is applied before removing it --- src/connectors/menu/connectMenu.js | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/connectors/menu/connectMenu.js b/src/connectors/menu/connectMenu.js index 24133c8adc..9f40e73c3d 100644 --- a/src/connectors/menu/connectMenu.js +++ b/src/connectors/menu/connectMenu.js @@ -233,9 +233,20 @@ export default function connectMenu(renderFn, unmountFn) { dispose({ state }) { unmountFn(); - const nextState = state - .removeHierarchicalFacetRefinement(attributeName) - .removeHierarchicalFacet(attributeName); + let nextState; + + if (state.isHierarchicalFacetRefined(attributeName)) { + nextState = state.removeHierarchicalFacetRefinement(attributeName); + } + + nextState = (nextState || state).removeHierarchicalFacet(attributeName); + + if ( + nextState.maxValuesPerFacet === limit || + (showMoreLimit && nextState.maxValuesPerFacet === showMoreLimit) + ) { + nextState.setQueryParameters('maxValuesPerFacet', undefined); + } return nextState; }, From 55316677c3deb3d361419bf42e7137a1a534d9bb Mon Sep 17 00:00:00 2001 From: iam4x Date: Mon, 4 Dec 2017 13:20:47 +0100 Subject: [PATCH 3/3] refactor(dispose): initialize with `state = nextState` --- src/connectors/hierarchical-menu/connectHierarchicalMenu.js | 6 ++---- src/connectors/menu/connectMenu.js | 4 ++-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/connectors/hierarchical-menu/connectHierarchicalMenu.js b/src/connectors/hierarchical-menu/connectHierarchicalMenu.js index aaa06c320e..8909d0813e 100644 --- a/src/connectors/hierarchical-menu/connectHierarchicalMenu.js +++ b/src/connectors/hierarchical-menu/connectHierarchicalMenu.js @@ -197,7 +197,7 @@ export default function connectHierarchicalMenu(renderFn, unmountFn) { unmountFn(); // compute nextState for the search - let nextState; + let nextState = state; if (state.isHierarchicalFacetRefined(hierarchicalFacetName)) { nextState = state.removeHierarchicalFacetRefinement( @@ -205,9 +205,7 @@ export default function connectHierarchicalMenu(renderFn, unmountFn) { ); } - nextState = (nextState || state).removeHierarchicalFacet( - hierarchicalFacetName - ); + nextState = nextState.removeHierarchicalFacet(hierarchicalFacetName); if (nextState.maxValuesPerFacet === limit) { nextState.setQueryParameters('maxValuesPerFacet', undefined); diff --git a/src/connectors/menu/connectMenu.js b/src/connectors/menu/connectMenu.js index 9f40e73c3d..f88937598a 100644 --- a/src/connectors/menu/connectMenu.js +++ b/src/connectors/menu/connectMenu.js @@ -233,13 +233,13 @@ export default function connectMenu(renderFn, unmountFn) { dispose({ state }) { unmountFn(); - let nextState; + let nextState = state; if (state.isHierarchicalFacetRefined(attributeName)) { nextState = state.removeHierarchicalFacetRefinement(attributeName); } - nextState = (nextState || state).removeHierarchicalFacet(attributeName); + nextState = nextState.removeHierarchicalFacet(attributeName); if ( nextState.maxValuesPerFacet === limit ||