File tree 5 files changed +87
-4
lines changed
components/RefinementList
5 files changed +87
-4
lines changed Original file line number Diff line number Diff line change @@ -1031,7 +1031,7 @@ search.addWidget(
1031
1031
<div class =" ais-hierarchical-menu" >
1032
1032
<div class =" ais-hierarchical-menu--header ais-header" >[custom header template]</div >
1033
1033
<div class =" ais-hierarchical-menu--body" >
1034
- <div class =" ais-hierarchical-menu--list" >
1034
+ <div class =" ais-hierarchical-menu--list ais-hierarchical-menu--list__lvl0 " >
1035
1035
<div class =" ais-hierarchical-menu--item" >
1036
1036
<a class =" ais-hierarchical-menu--link" href =" /url" >
1037
1037
Your value
@@ -1043,7 +1043,7 @@ search.addWidget(
1043
1043
Your active value
1044
1044
<span class =" ais-hierarchical-menu--count" >42</span >
1045
1045
</a >
1046
- <div class =" ais-hierarchical-menu--list" >
1046
+ <div class =" ais-hierarchical-menu--list ais-hierarchical-menu--list__lvl1 " >
1047
1047
<div class =" ais-hierarchical-menu--item" >
1048
1048
<a class =" ais-hierarchical-menu--link" href =" /url" >
1049
1049
Your subvalue 1
@@ -1073,6 +1073,10 @@ search.addWidget(
1073
1073
}
1074
1074
.ais-hierarchical-menu--list {
1075
1075
}
1076
+ .ais-hierarchical-menu--list__lvl0 {
1077
+ }
1078
+ .ais-hierarchical-menu--list__lvl1 {
1079
+ }
1076
1080
.ais-hierarchical-menu--item {
1077
1081
}
1078
1082
.ais-hierarchical-menu--item__active {
Original file line number Diff line number Diff line change @@ -13,8 +13,15 @@ class RefinementList extends React.Component {
13
13
}
14
14
15
15
_generateFacetItem ( facetValue ) {
16
+ var subList ;
16
17
var hasChildren = facetValue . data && facetValue . data . length > 0 ;
17
- var subList = hasChildren && < RefinementList { ...this . props } facetValues = { facetValue . data } /> ;
18
+ if ( hasChildren ) {
19
+ subList = < RefinementList
20
+ { ...this . props }
21
+ depth = { this . props . depth + 1 }
22
+ facetValues = { facetValue . data }
23
+ /> ;
24
+ }
18
25
var data = facetValue ;
19
26
20
27
if ( this . props . createURL ) {
@@ -87,8 +94,14 @@ class RefinementList extends React.Component {
87
94
}
88
95
89
96
render ( ) {
97
+ // Adding `-lvl0` classes
98
+ var cssClassList = [ this . props . cssClasses . list ] ;
99
+ if ( this . props . cssClasses . depth ) {
100
+ cssClassList . push ( `${ this . props . cssClasses . depth } ${ this . props . depth } ` ) ;
101
+ }
102
+
90
103
return (
91
- < div className = { cx ( this . props . cssClasses . list ) } >
104
+ < div className = { cx ( cssClassList ) } >
92
105
{ this . props . facetValues . map ( this . _generateFacetItem , this ) }
93
106
</ div >
94
107
) ;
@@ -116,6 +129,7 @@ RefinementList.propTypes = {
116
129
117
130
RefinementList . defaultProps = {
118
131
cssClasses : { } ,
132
+ depth : 0 ,
119
133
facetNameKey : 'name'
120
134
} ;
121
135
Original file line number Diff line number Diff line change @@ -54,6 +54,66 @@ describe('RefinementList', () => {
54
54
) ;
55
55
} ) ;
56
56
57
+ context ( 'sublist' , ( ) => {
58
+ it ( 'uses autoHide() and headerFooter()' , ( ) => {
59
+ var customProps = {
60
+ cssClasses : {
61
+ depth : 'depth' ,
62
+ item : 'item' ,
63
+ list : 'list'
64
+ } ,
65
+ facetValues : [
66
+ {
67
+ name : 'facet1' ,
68
+ data : [
69
+ { name : 'subfacet1' } ,
70
+ { name : 'subfacet2' }
71
+ ]
72
+ }
73
+ ]
74
+ } ;
75
+ parentListProps = {
76
+ className : 'list depth0'
77
+ } ;
78
+ itemProps = {
79
+ className : 'item' ,
80
+ onClick : ( ) => { }
81
+ } ;
82
+ templateProps = {
83
+ templateKey : 'item' ,
84
+ data : {
85
+ cssClasses : {
86
+ depth : 'depth' ,
87
+ list : 'list' ,
88
+ item : 'item'
89
+ }
90
+ }
91
+ } ;
92
+ var out = render ( customProps ) ;
93
+ expect ( out ) . toEqualJSX (
94
+ < div { ...parentListProps } >
95
+ < div { ...itemProps } >
96
+ < Template
97
+ { ...templateProps }
98
+ data = { {
99
+ ...templateProps . data ,
100
+ name : 'facet1' ,
101
+ data : customProps . facetValues [ 0 ] . data
102
+ } }
103
+ />
104
+ < RefinementList
105
+ { ...templateProps . data }
106
+ depth = { 1 }
107
+ facetNameKey = "name"
108
+ facetValues = { customProps . facetValues [ 0 ] . data }
109
+ templateProps = { { } }
110
+ />
111
+ </ div >
112
+ </ div >
113
+ ) ;
114
+ } ) ;
115
+ } ) ;
116
+
57
117
function render ( extraProps = { } ) {
58
118
var props = getProps ( extraProps ) ;
59
119
renderer . render ( < RefinementList { ...props } templateProps = { { } } /> ) ;
Original file line number Diff line number Diff line change 144
144
}
145
145
.ais-hierarchical-menu--list {
146
146
}
147
+ .ais-hierarchical-menu--list__lvl0 {
148
+ }
149
+ .ais-hierarchical-menu--list__lvl1 {
150
+ }
147
151
.ais-hierarchical-menu--item {
148
152
}
149
153
.ais-hierarchical-menu--item__active {
Original file line number Diff line number Diff line change @@ -82,6 +82,7 @@ function hierarchicalMenu({
82
82
body : cx ( bem ( 'body' ) , cssClasses . body ) ,
83
83
footer : cx ( bem ( 'footer' ) , cssClasses . footer ) ,
84
84
list : cx ( bem ( 'list' ) , cssClasses . list ) ,
85
+ depth : bem ( 'list' , 'lvl' ) ,
85
86
item : cx ( bem ( 'item' ) , cssClasses . item ) ,
86
87
active : cx ( bem ( 'item' , 'active' ) , cssClasses . active ) ,
87
88
link : cx ( bem ( 'link' ) , cssClasses . link ) ,
You can’t perform that action at this time.
0 commit comments