diff --git a/src/connectors/menu/__tests__/connectMenu-test.js b/src/connectors/menu/__tests__/connectMenu-test.js index f87b15eb9b..3864180e4b 100644 --- a/src/connectors/menu/__tests__/connectMenu-test.js +++ b/src/connectors/menu/__tests__/connectMenu-test.js @@ -230,4 +230,51 @@ describe('connectMenu', () => { }, ]); }); + + it('provides the correct `currentRefinement` value', () => { + const widget = makeWidget({attributeName: 'category'}); + + const helper = algoliasearchHelper(fakeClient, '', widget.getConfiguration({})); + helper.search = jest.fn(); + + helper.toggleRefinement('category', 'Decoration'); + + widget.init({ + helper, + state: helper.state, + createURL: () => '#', + onHistoryChange: () => {}, + }); + + expect(rendering.lastCall.args[0].currentRefinement).toBe(null); + + widget.render({ + results: new SearchResults(helper.state, [{ + hits: [], + facets: { + category: { + Decoration: 880, + }, + }, + }, { + facets: { + category: { + Decoration: 880, + Outdoor: 47, + }, + }, + }]), + state: helper.state, + helper, + createURL: () => '#', + }); + + expect(rendering.lastCall.args[0].currentRefinement).toEqual({ + name: 'Decoration', + path: 'Decoration', + count: 880, + isRefined: true, + data: null, + }); + }); }); diff --git a/src/connectors/menu/connectMenu.js b/src/connectors/menu/connectMenu.js index 0ff02ec93b..85a3885063 100644 --- a/src/connectors/menu/connectMenu.js +++ b/src/connectors/menu/connectMenu.js @@ -11,6 +11,7 @@ var customMenu = connectMenu(function render(params, isFirstRendering) { // instantSearchInstance, // canRefine, // widgetParams, + // currentRefinement, // } }); search.addWidget( @@ -39,6 +40,7 @@ Full documentation available at https://community.algolia.com/instantsearch.js/c * @property {boolean} canRefine true if refinement can be applied * @property {Object} widgetParams all original options forwarded to rendering * @property {InstantSearch} instantSearchInstance the instance of instantsearch on which the widget is attached + * @property {Object} currentRefinement the refinement currently applied */ /** @@ -92,6 +94,7 @@ export default function connectMenu(renderFn) { instantSearchInstance, canRefine: false, widgetParams, + currentRefinement: null, }, true); }, @@ -105,6 +108,7 @@ export default function connectMenu(renderFn) { instantSearchInstance, canRefine: items.length > 0, widgetParams, + currentRefinement: items.find(({isRefined}) => isRefined), }, false); }, };