Skip to content

Commit d16fb1d

Browse files
authored
chore: don't transform facets as disjunctive if they have no value selected (#6606)
* chore: don't transform facets as disjunctive if they have no value selected * fix: properly test disjunctive facets with & without value
1 parent 9798053 commit d16fb1d

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

packages/algoliasearch-helper/src/requestBuilder.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,16 @@ var requestBuilder = {
187187
var facets = state.facets
188188
.concat(
189189
state.disjunctiveFacets.map(function (value) {
190-
return 'disjunctive(' + value + ')';
190+
if (
191+
state.disjunctiveFacetsRefinements &&
192+
state.disjunctiveFacetsRefinements[value] &&
193+
state.disjunctiveFacetsRefinements[value].length > 0
194+
) {
195+
// only tag a disjunctiveFacet as disjunctive if it has a value selected
196+
// this helps avoid hitting the limit of 20 disjunctive facets in the Composition API
197+
return 'disjunctive(' + value + ')';
198+
}
199+
return value;
191200
})
192201
)
193202
.concat(requestBuilder._getHitsHierarchicalFacetsAttributes(state))

packages/instantsearch.js/src/lib/__tests__/InstantSearch-composition-test.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,8 @@ describe('Composition implementation', () => {
178178
search.addWidgets([
179179
configure({
180180
facets: ['brand'],
181-
disjunctiveFacets: ['categories'],
181+
disjunctiveFacets: ['categories', 'author'],
182+
disjunctiveFacetsRefinements: { author: ['Terry Pratchett'] },
182183
}),
183184
virtualSearchBox({}),
184185
]);
@@ -190,7 +191,11 @@ describe('Composition implementation', () => {
190191
expect(searchClient.search).toHaveBeenNthCalledWith(1, {
191192
compositionID: 'my-composition',
192193
requestBody: {
193-
params: { query: '', facets: ['brand', 'disjunctive(categories)'] },
194+
params: {
195+
query: '',
196+
facets: ['brand', 'categories', 'disjunctive(author)'],
197+
facetFilters: [['author:Terry Pratchett']],
198+
},
194199
},
195200
});
196201
});

0 commit comments

Comments
 (0)