instantsearch.js 4.56.4 → 4.56.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/cjs/connectors/breadcrumb/connectBreadcrumb.js +31 -4
  2. package/cjs/connectors/hierarchical-menu/connectHierarchicalMenu.js +9 -3
  3. package/cjs/connectors/hits-per-page/connectHitsPerPage.js +12 -3
  4. package/cjs/connectors/menu/connectMenu.js +7 -1
  5. package/cjs/connectors/numeric-menu/connectNumericMenu.js +7 -1
  6. package/cjs/connectors/pagination/connectPagination.js +7 -5
  7. package/cjs/connectors/rating-menu/connectRatingMenu.js +12 -3
  8. package/cjs/connectors/refinement-list/connectRefinementList.js +7 -1
  9. package/cjs/connectors/toggle-refinement/connectToggleRefinement.js +15 -3
  10. package/cjs/lib/version.js +1 -1
  11. package/cjs/middlewares/createRouterMiddleware.js +9 -1
  12. package/cjs/widgets/index/index.js +6 -3
  13. package/dist/instantsearch.development.d.ts +7 -3
  14. package/dist/instantsearch.development.js +124 -30
  15. package/dist/instantsearch.development.js.map +1 -1
  16. package/dist/instantsearch.production.d.ts +7 -3
  17. package/dist/instantsearch.production.min.d.ts +7 -3
  18. package/dist/instantsearch.production.min.js +2 -2
  19. package/dist/instantsearch.production.min.js.map +1 -1
  20. package/es/connectors/breadcrumb/connectBreadcrumb.js +31 -4
  21. package/es/connectors/hierarchical-menu/connectHierarchicalMenu.js +9 -3
  22. package/es/connectors/hits-per-page/connectHitsPerPage.d.ts +5 -1
  23. package/es/connectors/hits-per-page/connectHitsPerPage.js +12 -3
  24. package/es/connectors/menu/connectMenu.js +7 -1
  25. package/es/connectors/numeric-menu/connectNumericMenu.js +7 -1
  26. package/es/connectors/pagination/connectPagination.js +7 -5
  27. package/es/connectors/rating-menu/connectRatingMenu.js +12 -3
  28. package/es/connectors/refinement-list/connectRefinementList.js +7 -1
  29. package/es/connectors/toggle-refinement/connectToggleRefinement.d.ts +1 -1
  30. package/es/connectors/toggle-refinement/connectToggleRefinement.js +15 -3
  31. package/es/lib/utils/render-args.d.ts +222 -2
  32. package/es/lib/version.d.ts +1 -1
  33. package/es/lib/version.js +1 -1
  34. package/es/middlewares/createRouterMiddleware.js +9 -1
  35. package/es/types/widget.d.ts +1 -1
  36. package/es/widgets/index/index.d.ts +1 -1
  37. package/es/widgets/index/index.js +6 -3
  38. package/package.json +5 -5
@@ -1,4 +1,4 @@
1
- /*! InstantSearch.js 4.56.4 | © Algolia, Inc. and contributors; MIT License | https://github.com/algolia/instantsearch.js */
1
+ /*! InstantSearch.js 4.56.5 | © Algolia, Inc. and contributors; MIT License | https://github.com/algolia/instantsearch.js */
2
2
  (function (global, factory) {
3
3
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
4
4
  typeof define === 'function' && define.amd ? define(factory) :
@@ -2395,6 +2395,7 @@
2395
2395
  });
2396
2396
  },
2397
2397
  getWidgetRenderState: function getWidgetRenderState(_ref4) {
2398
+ var _this = this;
2398
2399
  var results = _ref4.results,
2399
2400
  state = _ref4.state,
2400
2401
  createURL = _ref4.createURL,
@@ -2404,9 +2405,14 @@
2404
2405
  var canToggleShowMore = false;
2405
2406
 
2406
2407
  // Bind createURL to this specific attribute
2407
- function _createURL(facetValue) {
2408
- return createURL(state.resetPage().toggleFacetRefinement(hierarchicalFacetName, facetValue));
2409
- }
2408
+ var _createURL = function _createURL(facetValue) {
2409
+ return createURL(function (uiState) {
2410
+ return _this.getWidgetUiState(uiState, {
2411
+ searchParameters: state.resetPage().toggleFacetRefinement(hierarchicalFacetName, facetValue),
2412
+ helper: helper
2413
+ });
2414
+ });
2415
+ };
2410
2416
  if (!sendEvent) {
2411
2417
  sendEvent = createSendEventForFacet({
2412
2418
  instantSearchInstance: instantSearchInstance,
@@ -2843,9 +2849,16 @@
2843
2849
  },
2844
2850
  createURLFactory: function createURLFactory(_ref3) {
2845
2851
  var state = _ref3.state,
2846
- createURL = _ref3.createURL;
2852
+ createURL = _ref3.createURL,
2853
+ getWidgetUiState = _ref3.getWidgetUiState,
2854
+ helper = _ref3.helper;
2847
2855
  return function (value) {
2848
- return createURL(state.resetPage().setQueryParameter('hitsPerPage', !value && value !== 0 ? undefined : value));
2856
+ return createURL(function (uiState) {
2857
+ return getWidgetUiState(uiState, {
2858
+ searchParameters: state.resetPage().setQueryParameter('hitsPerPage', !value && value !== 0 ? undefined : value),
2859
+ helper: helper
2860
+ });
2861
+ });
2849
2862
  };
2850
2863
  }
2851
2864
  };
@@ -2900,7 +2913,9 @@
2900
2913
  refine: connectorState.getRefine(helper),
2901
2914
  createURL: connectorState.createURLFactory({
2902
2915
  state: state,
2903
- createURL: createURL
2916
+ createURL: createURL,
2917
+ getWidgetUiState: this.getWidgetUiState,
2918
+ helper: helper
2904
2919
  }),
2905
2920
  hasNoResults: !canRefine,
2906
2921
  canRefine: canRefine,
@@ -3258,6 +3273,7 @@
3258
3273
  });
3259
3274
  },
3260
3275
  getWidgetRenderState: function getWidgetRenderState(renderOptions) {
3276
+ var _this = this;
3261
3277
  var results = renderOptions.results,
3262
3278
  createURL = renderOptions.createURL,
3263
3279
  instantSearchInstance = renderOptions.instantSearchInstance,
@@ -3274,7 +3290,12 @@
3274
3290
  }
3275
3291
  if (!_createURL) {
3276
3292
  _createURL = function _createURL(facetValue) {
3277
- return createURL(helper.state.resetPage().toggleFacetRefinement(attribute, facetValue));
3293
+ return createURL(function (uiState) {
3294
+ return _this.getWidgetUiState(uiState, {
3295
+ searchParameters: helper.state.resetPage().toggleFacetRefinement(attribute, facetValue),
3296
+ helper: helper
3297
+ });
3298
+ });
3278
3299
  };
3279
3300
  }
3280
3301
  if (!_refine) {
@@ -3475,6 +3496,7 @@
3475
3496
  });
3476
3497
  },
3477
3498
  getWidgetRenderState: function getWidgetRenderState(_ref7) {
3499
+ var _this = this;
3478
3500
  var results = _ref7.results,
3479
3501
  state = _ref7.state,
3480
3502
  instantSearchInstance = _ref7.instantSearchInstance,
@@ -3490,7 +3512,12 @@
3490
3512
  if (!connectorState.createURL) {
3491
3513
  connectorState.createURL = function (newState) {
3492
3514
  return function (facetValue) {
3493
- return createURL(getRefinedState(newState, attribute, facetValue));
3515
+ return createURL(function (uiState) {
3516
+ return _this.getWidgetUiState(uiState, {
3517
+ searchParameters: getRefinedState(newState, attribute, facetValue),
3518
+ helper: helper
3519
+ });
3520
+ });
3494
3521
  };
3495
3522
  };
3496
3523
  }
@@ -3740,10 +3767,12 @@
3740
3767
  };
3741
3768
  }
3742
3769
  if (!connectorState.createURL) {
3743
- connectorState.createURL = function (helperState) {
3744
- return function (page) {
3745
- return createURL(helperState.setPage(page));
3746
- };
3770
+ connectorState.createURL = function (page) {
3771
+ return createURL(function (uiState) {
3772
+ return _objectSpread2(_objectSpread2({}, uiState), {}, {
3773
+ page: page
3774
+ });
3775
+ });
3747
3776
  };
3748
3777
  }
3749
3778
  var page = state.page || 0;
@@ -3753,7 +3782,7 @@
3753
3782
  pager.currentPage = page;
3754
3783
  pager.total = nbPages;
3755
3784
  return {
3756
- createURL: connectorState.createURL(state),
3785
+ createURL: connectorState.createURL,
3757
3786
  refine: connectorState.refine,
3758
3787
  canRefine: nbPages > 1,
3759
3788
  currentRefinement: page,
@@ -4196,6 +4225,7 @@
4196
4225
  });
4197
4226
  },
4198
4227
  getWidgetRenderState: function getWidgetRenderState(renderOptions) {
4228
+ var _this = this;
4199
4229
  var results = renderOptions.results,
4200
4230
  state = renderOptions.state,
4201
4231
  _createURL = renderOptions.createURL,
@@ -4249,7 +4279,12 @@
4249
4279
  var canToggleShowMore = canShowLess || canShowMore;
4250
4280
  return {
4251
4281
  createURL: function createURL(facetValue) {
4252
- return _createURL(state.resetPage().toggleFacetRefinement(attribute, facetValue));
4282
+ return _createURL(function (uiState) {
4283
+ return _this.getWidgetUiState(uiState, {
4284
+ searchParameters: state.resetPage().toggleFacetRefinement(attribute, facetValue),
4285
+ helper: helper
4286
+ });
4287
+ });
4253
4288
  },
4254
4289
  items: items,
4255
4290
  refine: triggerRefine,
@@ -4615,9 +4650,16 @@
4615
4650
  },
4616
4651
  createURLFactory: function createURLFactory(_ref4) {
4617
4652
  var state = _ref4.state,
4618
- createURL = _ref4.createURL;
4653
+ createURL = _ref4.createURL,
4654
+ getWidgetUiState = _ref4.getWidgetUiState,
4655
+ helper = _ref4.helper;
4619
4656
  return function (value) {
4620
- return createURL(getRefinedState(state, value));
4657
+ return createURL(function (uiState) {
4658
+ return getWidgetUiState(uiState, {
4659
+ searchParameters: getRefinedState(state, value),
4660
+ helper: helper
4661
+ });
4662
+ });
4621
4663
  };
4622
4664
  }
4623
4665
  };
@@ -4713,7 +4755,9 @@
4713
4755
  sendEvent: sendEvent,
4714
4756
  createURL: connectorState.createURLFactory({
4715
4757
  state: state,
4716
- createURL: createURL
4758
+ createURL: createURL,
4759
+ helper: helper,
4760
+ getWidgetUiState: this.getWidgetUiState
4717
4761
  }),
4718
4762
  widgetParams: widgetParams
4719
4763
  };
@@ -4925,7 +4969,9 @@
4925
4969
  var connectorState = {
4926
4970
  createURLFactory: function createURLFactory(isRefined, _ref4) {
4927
4971
  var state = _ref4.state,
4928
- createURL = _ref4.createURL;
4972
+ createURL = _ref4.createURL,
4973
+ getWidgetUiState = _ref4.getWidgetUiState,
4974
+ helper = _ref4.helper;
4929
4975
  return function () {
4930
4976
  state = state.resetPage();
4931
4977
  var valuesToRemove = isRefined ? on : off;
@@ -4940,7 +4986,12 @@
4940
4986
  state = state.addDisjunctiveFacetRefinement(attribute, v);
4941
4987
  });
4942
4988
  }
4943
- return createURL(state);
4989
+ return createURL(function (uiState) {
4990
+ return getWidgetUiState(uiState, {
4991
+ searchParameters: state,
4992
+ helper: helper
4993
+ });
4994
+ });
4944
4995
  };
4945
4996
  }
4946
4997
  };
@@ -5045,7 +5096,9 @@
5045
5096
  },
5046
5097
  createURL: connectorState.createURLFactory(isRefined, {
5047
5098
  state: state,
5048
- createURL: createURL
5099
+ createURL: createURL,
5100
+ helper: helper,
5101
+ getWidgetUiState: this.getWidgetUiState
5049
5102
  }),
5050
5103
  sendEvent: sendEvent,
5051
5104
  canRefine: Boolean(results ? nextRefinement.count : null),
@@ -5059,6 +5112,9 @@
5059
5112
  return searchParameters.isDisjunctiveFacetRefined(attribute, v);
5060
5113
  });
5061
5114
  if (!isRefined) {
5115
+ var _uiState$toggle;
5116
+ // This needs to be done in the case `uiState` comes from `createURL`
5117
+ (_uiState$toggle = uiState.toggle) === null || _uiState$toggle === void 0 ? true : delete _uiState$toggle[attribute];
5062
5118
  return uiState;
5063
5119
  }
5064
5120
  return _objectSpread2(_objectSpread2({}, uiState), {}, {
@@ -5157,6 +5213,7 @@
5157
5213
  });
5158
5214
  },
5159
5215
  getWidgetRenderState: function getWidgetRenderState(_ref2) {
5216
+ var _this = this;
5160
5217
  var helper = _ref2.helper,
5161
5218
  createURL = _ref2.createURL,
5162
5219
  results = _ref2.results,
@@ -5180,7 +5237,12 @@
5180
5237
  var items = getItems();
5181
5238
  if (!connectorState.createURL) {
5182
5239
  connectorState.createURL = function (facetValue) {
5183
- return createURL(getRefinedState(helper.state, facetValue));
5240
+ return createURL(function (uiState) {
5241
+ return _this.getWidgetUiState(uiState, {
5242
+ searchParameters: getRefinedState(helper.state, facetValue),
5243
+ helper: helper
5244
+ });
5245
+ });
5184
5246
  };
5185
5247
  }
5186
5248
  if (!connectorState.refine) {
@@ -5196,18 +5258,39 @@
5196
5258
  widgetParams: widgetParams
5197
5259
  };
5198
5260
  },
5199
- getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters) {
5261
+ getWidgetUiState: function getWidgetUiState(uiState, _ref3) {
5262
+ var searchParameters = _ref3.searchParameters;
5263
+ var path = searchParameters.getHierarchicalFacetBreadcrumb(hierarchicalFacetName);
5264
+ if (!path.length) {
5265
+ return uiState;
5266
+ }
5267
+ return _objectSpread2(_objectSpread2({}, uiState), {}, {
5268
+ hierarchicalMenu: _objectSpread2(_objectSpread2({}, uiState.hierarchicalMenu), {}, _defineProperty({}, hierarchicalFacetName, path))
5269
+ });
5270
+ },
5271
+ getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref4) {
5272
+ var uiState = _ref4.uiState;
5273
+ var values = uiState.hierarchicalMenu && uiState.hierarchicalMenu[hierarchicalFacetName];
5274
+ if (searchParameters.isConjunctiveFacet(hierarchicalFacetName) || searchParameters.isDisjunctiveFacet(hierarchicalFacetName)) {
5275
+ _warning(false, "HierarchicalMenu: Attribute \"".concat(hierarchicalFacetName, "\" is already used by another widget applying conjunctive or disjunctive faceting.\nAs this is not supported, please make sure to remove this other widget or this HierarchicalMenu widget will not work at all.")) ;
5276
+ return searchParameters;
5277
+ }
5200
5278
  if (searchParameters.isHierarchicalFacet(hierarchicalFacetName)) {
5201
5279
  var facet = searchParameters.getHierarchicalFacetByName(hierarchicalFacetName);
5202
5280
  _warning(isEqual(facet.attributes, attributes) && facet.separator === separator && facet.rootPath === rootPath, 'Using Breadcrumb and HierarchicalMenu on the same facet with different options overrides the configuration of the HierarchicalMenu.') ;
5203
- return searchParameters;
5204
5281
  }
5205
- return searchParameters.addHierarchicalFacet({
5282
+ var withFacetConfiguration = searchParameters.removeHierarchicalFacet(hierarchicalFacetName).addHierarchicalFacet({
5206
5283
  name: hierarchicalFacetName,
5207
5284
  attributes: attributes,
5208
5285
  separator: separator,
5209
5286
  rootPath: rootPath
5210
5287
  });
5288
+ if (!values) {
5289
+ return withFacetConfiguration.setQueryParameters({
5290
+ hierarchicalFacetsRefinements: _objectSpread2(_objectSpread2({}, withFacetConfiguration.hierarchicalFacetsRefinements), {}, _defineProperty({}, hierarchicalFacetName, []))
5291
+ });
5292
+ }
5293
+ return withFacetConfiguration.addHierarchicalFacetRefinement(hierarchicalFacetName, values.join(separator));
5211
5294
  }
5212
5295
  };
5213
5296
  };
@@ -13472,9 +13555,17 @@
13472
13555
  return function (_ref) {
13473
13556
  var instantSearchInstance = _ref.instantSearchInstance;
13474
13557
  function topLevelCreateURL(nextState) {
13558
+ var previousUiState =
13559
+ // If only the mainIndex is initialized, we don't yet know what other
13560
+ // index widgets are used. Therefore we fall back to the initialUiState.
13561
+ // We can't indiscriminately use the initialUiState because then we
13562
+ // reintroduce state that was changed by the user.
13563
+ // When there are no widgets, we are sure the user can't yet have made
13564
+ // any changes.
13565
+ instantSearchInstance.mainIndex.getWidgets().length === 0 ? instantSearchInstance._initialUiState : instantSearchInstance.mainIndex.getWidgetUiState({});
13475
13566
  var uiState = Object.keys(nextState).reduce(function (acc, indexId) {
13476
13567
  return _objectSpread2(_objectSpread2({}, acc), {}, _defineProperty({}, indexId, nextState[indexId]));
13477
- }, instantSearchInstance.mainIndex.getWidgetUiState({}));
13568
+ }, previousUiState);
13478
13569
  var route = stateMapping.stateToRoute(uiState);
13479
13570
  return router.createURL(route);
13480
13571
  }
@@ -13640,6 +13731,9 @@
13640
13731
  return localParent;
13641
13732
  },
13642
13733
  createURL: function createURL(nextState) {
13734
+ if (typeof nextState === 'function') {
13735
+ return localInstantSearchInstance._createURL(_defineProperty({}, indexId, nextState(localUiState)));
13736
+ }
13643
13737
  return localInstantSearchInstance._createURL(_defineProperty({}, indexId, getLocalWidgetsUiState(localWidgets, {
13644
13738
  searchParameters: nextState,
13645
13739
  helper: helper
@@ -13704,7 +13798,7 @@
13704
13798
  return widgets.indexOf(widget) === -1;
13705
13799
  });
13706
13800
  if (localInstantSearchInstance && Boolean(widgets.length)) {
13707
- var nextState = widgets.reduce(function (state, widget) {
13801
+ var _nextState = widgets.reduce(function (state, widget) {
13708
13802
  // the `dispose` method exists at this point we already assert it
13709
13803
  var next = widget.dispose({
13710
13804
  helper: helper,
@@ -13714,12 +13808,12 @@
13714
13808
  return next || state;
13715
13809
  }, helper.state);
13716
13810
  localUiState = getLocalWidgetsUiState(localWidgets, {
13717
- searchParameters: nextState,
13811
+ searchParameters: _nextState,
13718
13812
  helper: helper
13719
13813
  });
13720
13814
  helper.setState(getLocalWidgetsSearchParameters(localWidgets, {
13721
13815
  uiState: localUiState,
13722
- initialSearchParameters: nextState
13816
+ initialSearchParameters: _nextState
13723
13817
  }));
13724
13818
  if (localWidgets.length) {
13725
13819
  localInstantSearchInstance.scheduleSearch();
@@ -14049,7 +14143,7 @@
14049
14143
  };
14050
14144
  }
14051
14145
 
14052
- var version$1 = '4.56.4';
14146
+ var version$1 = '4.56.5';
14053
14147
 
14054
14148
  var withUsage$r = createDocumentationMessageGenerator({
14055
14149
  name: 'instantsearch'