Skip to content

Commit e4a6e75

Browse files
author
Yannick Croissant
authored
fix(numericMenu): prevent refinement reset on checked radio click (#3749)
1 parent 6a0b51e commit e4a6e75

File tree

2 files changed

+42
-0
lines changed

2 files changed

+42
-0
lines changed

src/components/RefinementList/RefinementList.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,16 @@ class RefinementList extends Component {
9999
return;
100100
}
101101

102+
if (
103+
isRefined &&
104+
originalEvent.target.parentNode.querySelector(
105+
'input[type="radio"]:checked'
106+
)
107+
) {
108+
// Prevent refinement for being reset if the user clicks on an already checked radio button
109+
return;
110+
}
111+
102112
if (originalEvent.target.tagName === 'INPUT') {
103113
this.refine(facetValueToRefine, isRefined);
104114
return;

src/components/RefinementList/__tests__/RefinementList-test.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -426,5 +426,37 @@ describe('RefinementList', () => {
426426

427427
expect(wrapper).toMatchSnapshot();
428428
});
429+
430+
it('should not refine on click on already refined items', () => {
431+
const toggleRefinement = jest.fn();
432+
const props = {
433+
container: document.createElement('div'),
434+
facetValues: [
435+
{ value: 'foo', isRefined: false },
436+
{ value: 'bar', isRefined: true },
437+
{ value: 'baz', isRefined: false },
438+
],
439+
templateProps: {
440+
templates: {
441+
item: item => `
442+
<label>
443+
<input type="radio" checked=${item.isRefined} />
444+
${item.value}
445+
</span>
446+
`,
447+
},
448+
},
449+
toggleRefinement,
450+
createURL: () => {},
451+
};
452+
const wrapper = mount(<RefinementList {...props} />);
453+
454+
const items = wrapper.find(RefinementListItem);
455+
const secondItem = items.at(1);
456+
457+
secondItem.simulate('click');
458+
459+
expect(toggleRefinement).not.toHaveBeenCalled();
460+
});
429461
});
430462
});

0 commit comments

Comments
 (0)