File tree Expand file tree Collapse file tree 2 files changed +42
-0
lines changed
src/components/RefinementList Expand file tree Collapse file tree 2 files changed +42
-0
lines changed Original file line number Diff line number Diff 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 ;
Original file line number Diff line number Diff 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} ) ;
You can’t perform that action at this time.
0 commit comments