|
5 | 5 | isEqual,
|
6 | 6 | noop,
|
7 | 7 | } from '../../lib/utils';
|
8 |
| -import { SearchResults } from 'algoliasearch-helper'; |
| 8 | +import { SearchParameters, SearchResults } from 'algoliasearch-helper'; |
9 | 9 | import { Connector, TransformItems, CreateURL } from '../../types';
|
10 | 10 |
|
11 | 11 | const withUsage = createDocumentationMessageGenerator({
|
@@ -107,6 +107,22 @@ const connectBreadcrumb: BreadcrumbConnector = function connectBreadcrumb(
|
107 | 107 |
|
108 | 108 | const [hierarchicalFacetName] = attributes;
|
109 | 109 |
|
| 110 | + function getRefinedState(state: SearchParameters, facetValue: string) { |
| 111 | + if (!facetValue) { |
| 112 | + const breadcrumb = state.getHierarchicalFacetBreadcrumb( |
| 113 | + hierarchicalFacetName |
| 114 | + ); |
| 115 | + if (breadcrumb.length > 0) { |
| 116 | + return state |
| 117 | + .resetPage() |
| 118 | + .toggleFacetRefinement(hierarchicalFacetName, breadcrumb[0]); |
| 119 | + } |
| 120 | + } |
| 121 | + return state |
| 122 | + .resetPage() |
| 123 | + .toggleFacetRefinement(hierarchicalFacetName, facetValue); |
| 124 | + } |
| 125 | + |
110 | 126 | return {
|
111 | 127 | $$type: 'ais.breadcrumb',
|
112 | 128 |
|
@@ -166,44 +182,13 @@ const connectBreadcrumb: BreadcrumbConnector = function connectBreadcrumb(
|
166 | 182 |
|
167 | 183 | if (!connectorState.createURL) {
|
168 | 184 | connectorState.createURL = facetValue => {
|
169 |
| - if (!facetValue) { |
170 |
| - const breadcrumb = helper.getHierarchicalFacetBreadcrumb( |
171 |
| - hierarchicalFacetName |
172 |
| - ); |
173 |
| - if (breadcrumb.length > 0) { |
174 |
| - return createURL( |
175 |
| - helper.state.toggleFacetRefinement( |
176 |
| - hierarchicalFacetName, |
177 |
| - breadcrumb[0] |
178 |
| - ) |
179 |
| - ); |
180 |
| - } |
181 |
| - } |
182 |
| - return createURL( |
183 |
| - helper.state.toggleFacetRefinement( |
184 |
| - hierarchicalFacetName, |
185 |
| - facetValue |
186 |
| - ) |
187 |
| - ); |
| 185 | + return createURL(getRefinedState(helper.state, facetValue)); |
188 | 186 | };
|
189 | 187 | }
|
190 | 188 |
|
191 | 189 | if (!connectorState.refine) {
|
192 | 190 | connectorState.refine = facetValue => {
|
193 |
| - if (!facetValue) { |
194 |
| - const breadcrumb = helper.getHierarchicalFacetBreadcrumb( |
195 |
| - hierarchicalFacetName |
196 |
| - ); |
197 |
| - if (breadcrumb.length > 0) { |
198 |
| - helper |
199 |
| - .toggleRefinement(hierarchicalFacetName, breadcrumb[0]) |
200 |
| - .search(); |
201 |
| - } |
202 |
| - } else { |
203 |
| - helper |
204 |
| - .toggleRefinement(hierarchicalFacetName, facetValue) |
205 |
| - .search(); |
206 |
| - } |
| 191 | + helper.setState(getRefinedState(helper.state, facetValue)).search(); |
207 | 192 | };
|
208 | 193 | }
|
209 | 194 |
|
|
0 commit comments