@@ -54,7 +54,7 @@ toggle({
5454 container,
5555 attributeName,
5656 label,
57- [ userValues ={on: true, off: undefined} ],
57+ [ values ={on: true, off: undefined} ],
5858 [ cssClasses.{root,header,body,footer,list,item,active,label,checkbox,count} ],
5959 [ templates.{header,item,footer} ],
6060 [ transformData.{item} ],
@@ -83,7 +83,7 @@ function toggle({
8383 throw new Error ( usage ) ;
8484 }
8585
86- let hasAnOffValue = ( userValues . off !== undefined ) ;
86+ let hasAnOffValue = userValues . off !== undefined ;
8787
8888 let cssClasses = {
8989 root : cx ( bem ( null ) , userCssClasses . root ) ,
@@ -111,7 +111,8 @@ function toggle({
111111 } ) ;
112112 this . toggleRefinement = this . toggleRefinement . bind ( this , helper ) ;
113113
114- if ( userValues . off === undefined ) {
114+ // no need to refine anything at init if no custom off values
115+ if ( ! hasAnOffValue ) {
115116 return ;
116117 }
117118 // Add filtering on the 'off' value if set
@@ -142,12 +143,19 @@ function toggle({
142143 } ,
143144 render : function ( { helper, results, state, createURL} ) {
144145 let isRefined = helper . state . isFacetRefined ( attributeName , userValues . on ) ;
145- let values = find ( results . getFacetValues ( attributeName ) , { name : isRefined . toString ( ) } ) ;
146+ let currentRefinement = isRefined ? userValues . on : userValues . off ;
147+ let count ;
148+ if ( typeof currentRefinement === 'number' ) {
149+ count = results . getFacetStats ( attributeName ) . sum ;
150+ } else {
151+ let facetData = find ( results . getFacetValues ( attributeName ) , { name : isRefined . toString ( ) } ) ;
152+ count = facetData !== undefined ? facetData . count : null ;
153+ }
146154
147155 let facetValue = {
148156 name : label ,
149- isRefined : isRefined ,
150- count : values && values . count || null
157+ isRefined,
158+ count
151159 } ;
152160
153161 // Bind createURL to this specific attribute
0 commit comments