@@ -1013,7 +1013,7 @@ define([
1013
1013
case 'disjunctive' :
1014
1014
return this . getDisjunctiveFacetConfig ( facet , panelOptions ) ;
1015
1015
case 'slider' :
1016
- return this . getRangeSliderFacetConfig ( facet , panelOptions ) ;
1016
+ return this . getRangeSliderFacetConfig ( facet ) ;
1017
1017
}
1018
1018
1019
1019
throw new Error ( `[Algolia] Invalid facet widget type: ${ facet . type } ` ) ;
@@ -1050,6 +1050,39 @@ define([
1050
1050
] ;
1051
1051
} ,
1052
1052
1053
+ /**
1054
+ * Docs: https://www.algolia.com/doc/api-reference/widgets/range-slider/js/
1055
+ */
1056
+ getRangeSliderFacetConfig ( facet ) {
1057
+ const panelOptions = {
1058
+ templates : this . getDefaultFacetPanelTemplates ( facet ) ,
1059
+ hidden ( options ) {
1060
+ return options . range . min === 0 && options . range . max === 0 ;
1061
+ } ,
1062
+ } ;
1063
+ return [
1064
+ 'rangeSlider' ,
1065
+ {
1066
+ container : facet . wrapper . appendChild (
1067
+ algoliaCommon . createISWidgetContainer ( facet . attribute )
1068
+ ) ,
1069
+ attribute : facet . attribute ,
1070
+ pips : false ,
1071
+ panelOptions,
1072
+ tooltips : {
1073
+ format ( value ) {
1074
+ return facet . attribute . match ( / p r i c e / ) === null
1075
+ ? parseInt ( value )
1076
+ : priceUtils . formatPrice (
1077
+ value ,
1078
+ algoliaConfig . priceFormat
1079
+ ) ;
1080
+ } ,
1081
+ } ,
1082
+ } ,
1083
+ ] ;
1084
+ } ,
1085
+
1053
1086
getRefinementListOptions ( facet , panelOptions ) {
1054
1087
return {
1055
1088
container : facet . wrapper . appendChild (
@@ -1059,7 +1092,7 @@ define([
1059
1092
limit : algoliaConfig . maxValuesPerFacet ,
1060
1093
templates : this . getRefinementsListTemplate ( ) ,
1061
1094
sortBy : [ 'count:desc' , 'name:asc' ] ,
1062
- panelOptions : panelOptions ,
1095
+ panelOptions
1063
1096
} ;
1064
1097
} ,
1065
1098
@@ -1097,38 +1130,15 @@ define([
1097
1130
return [ 'refinementList' , this . addSearchForFacetValues ( facet , refinementListOptions ) ] ;
1098
1131
} ,
1099
1132
1100
- /**
1101
- * Docs: https://www.algolia.com/doc/api-reference/widgets/range-slider/js/
1102
- */
1103
- getRangeSliderFacetConfig ( facet , panelOptions ) {
1104
- return [
1105
- 'rangeSlider' ,
1106
- {
1107
- container : facet . wrapper . appendChild (
1108
- algoliaCommon . createISWidgetContainer ( facet . attribute )
1109
- ) ,
1110
- attribute : facet . attribute ,
1111
- pips : false ,
1112
- panelOptions,
1113
- tooltips : {
1114
- format ( value ) {
1115
- return facet . attribute . match ( / p r i c e / ) === null
1116
- ? parseInt ( value )
1117
- : priceUtils . formatPrice (
1118
- value ,
1119
- algoliaConfig . priceFormat
1120
- ) ;
1121
- } ,
1122
- } ,
1123
- } ,
1124
- ] ;
1133
+ getDefaultFacetPanelTemplates ( facet ) {
1134
+ return {
1135
+ header : `<div class="name">${ facet . label || facet . attribute } </div>` ,
1136
+ } ;
1125
1137
} ,
1126
1138
1127
1139
getFacetPanelOptions ( facet ) {
1128
1140
return {
1129
- templates : {
1130
- header : `<div class="name">${ facet . label || facet . attribute } </div>` ,
1131
- } ,
1141
+ templates : this . getDefaultFacetPanelTemplates ( facet ) ,
1132
1142
hidden : ( options ) => {
1133
1143
if ( ! options . results ) return true ;
1134
1144
@@ -1165,16 +1175,8 @@ define([
1165
1175
) ;
1166
1176
delete config . panelOptions ;
1167
1177
}
1168
- if ( type === 'rangeSlider' && config . attribute . indexOf ( 'price.' ) < 0 ) {
1169
- config . panelOptions = {
1170
- hidden ( options ) {
1171
- return options . range . min === 0 && options . range . max === 0 ;
1172
- } ,
1173
- } ;
1174
- widget = instantsearch . widgets . panel ( config . panelOptions ) ( widget ) ;
1175
- delete config . panelOptions ;
1176
- }
1177
1178
1179
+ // TODO: Assumes panel widget - problematic
1178
1180
search . addWidgets ( [ widget ( config ) ] ) ;
1179
1181
} ,
1180
1182
0 commit comments