vue-instantsearch 4.2.0 → 4.3.3

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 (220) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/package.json +7 -6
  3. package/src/components/DynamicWidgets.js +10 -0
  4. package/src/components/__tests__/DynamicWidgets.js +45 -0
  5. package/src/util/__tests__/createServerRootMixin.test.js +130 -0
  6. package/src/util/createInstantSearchComponent.js +1 -1
  7. package/src/util/createServerRootMixin.js +13 -3
  8. package/src/util/vue-compat/{index-2.js → index-vue2.js} +0 -0
  9. package/src/util/vue-compat/{index-3.js → index-vue3.js} +0 -0
  10. package/src/util/vue-compat/index.js +3 -3
  11. package/vue2/cjs/index.js +1 -1
  12. package/vue2/cjs/index.js.map +1 -1
  13. package/vue2/cjs/package.json +1 -0
  14. package/vue2/es/index.js +1 -1
  15. package/vue2/es/package.json +1 -0
  16. package/vue2/es/package.json.js +1 -1
  17. package/vue2/es/src/components/Autocomplete.vue.js +1 -1
  18. package/vue2/es/src/components/Autocomplete.vue.js.map +1 -1
  19. package/vue2/es/src/components/Breadcrumb.vue.js +1 -1
  20. package/vue2/es/src/components/Breadcrumb.vue.js.map +1 -1
  21. package/vue2/es/src/components/ClearRefinements.vue.js +1 -1
  22. package/vue2/es/src/components/ClearRefinements.vue.js.map +1 -1
  23. package/vue2/es/src/components/Configure.js +1 -1
  24. package/vue2/es/src/components/Configure.js.map +1 -1
  25. package/vue2/es/src/components/ConfigureRelatedItems.js +1 -1
  26. package/vue2/es/src/components/ConfigureRelatedItems.js.map +1 -1
  27. package/vue2/es/src/components/CurrentRefinements.vue.js +1 -1
  28. package/vue2/es/src/components/CurrentRefinements.vue.js.map +1 -1
  29. package/vue2/es/src/components/DynamicWidgets.js +1 -1
  30. package/vue2/es/src/components/DynamicWidgets.js.map +1 -1
  31. package/vue2/es/src/components/HierarchicalMenu.vue.js +1 -1
  32. package/vue2/es/src/components/HierarchicalMenu.vue.js.map +1 -1
  33. package/vue2/es/src/components/Highlighter.vue.js +1 -1
  34. package/vue2/es/src/components/Highlighter.vue.js.map +1 -1
  35. package/vue2/es/src/components/Hits.vue.js +1 -1
  36. package/vue2/es/src/components/Hits.vue.js.map +1 -1
  37. package/vue2/es/src/components/HitsPerPage.vue.js +1 -1
  38. package/vue2/es/src/components/HitsPerPage.vue.js.map +1 -1
  39. package/vue2/es/src/components/Index.js +1 -1
  40. package/vue2/es/src/components/Index.js.map +1 -1
  41. package/vue2/es/src/components/InfiniteHits.vue.js +1 -1
  42. package/vue2/es/src/components/InfiniteHits.vue.js.map +1 -1
  43. package/vue2/es/src/components/InstantSearch.js +1 -1
  44. package/vue2/es/src/components/InstantSearch.js.map +1 -1
  45. package/vue2/es/src/components/InstantSearchSsr.js +1 -1
  46. package/vue2/es/src/components/InstantSearchSsr.js.map +1 -1
  47. package/vue2/es/src/components/Menu.vue.js +1 -1
  48. package/vue2/es/src/components/Menu.vue.js.map +1 -1
  49. package/vue2/es/src/components/MenuSelect.vue.js +1 -1
  50. package/vue2/es/src/components/MenuSelect.vue.js.map +1 -1
  51. package/vue2/es/src/components/NumericMenu.vue.js +1 -1
  52. package/vue2/es/src/components/NumericMenu.vue.js.map +1 -1
  53. package/vue2/es/src/components/Pagination.vue.js +1 -1
  54. package/vue2/es/src/components/Pagination.vue.js.map +1 -1
  55. package/vue2/es/src/components/Panel.vue.js +1 -1
  56. package/vue2/es/src/components/Panel.vue.js.map +1 -1
  57. package/vue2/es/src/components/PoweredBy.vue.js.map +1 -1
  58. package/vue2/es/src/components/QueryRuleContext.js +1 -1
  59. package/vue2/es/src/components/QueryRuleContext.js.map +1 -1
  60. package/vue2/es/src/components/QueryRuleCustomData.vue.js +1 -1
  61. package/vue2/es/src/components/QueryRuleCustomData.vue.js.map +1 -1
  62. package/vue2/es/src/components/RangeInput.vue.js +1 -1
  63. package/vue2/es/src/components/RangeInput.vue.js.map +1 -1
  64. package/vue2/es/src/components/RatingMenu.vue.js +1 -1
  65. package/vue2/es/src/components/RatingMenu.vue.js.map +1 -1
  66. package/vue2/es/src/components/RefinementList.vue.js +1 -1
  67. package/vue2/es/src/components/RefinementList.vue.js.map +1 -1
  68. package/vue2/es/src/components/RelevantSort.vue.js +1 -1
  69. package/vue2/es/src/components/RelevantSort.vue.js.map +1 -1
  70. package/vue2/es/src/components/SearchBox.vue.js +1 -1
  71. package/vue2/es/src/components/SearchBox.vue.js.map +1 -1
  72. package/vue2/es/src/components/SearchInput.vue.js.map +1 -1
  73. package/vue2/es/src/components/SortBy.vue.js +1 -1
  74. package/vue2/es/src/components/SortBy.vue.js.map +1 -1
  75. package/vue2/es/src/components/StateResults.vue.js.map +1 -1
  76. package/vue2/es/src/components/Stats.vue.js +1 -1
  77. package/vue2/es/src/components/Stats.vue.js.map +1 -1
  78. package/vue2/es/src/components/ToggleRefinement.vue.js +1 -1
  79. package/vue2/es/src/components/ToggleRefinement.vue.js.map +1 -1
  80. package/vue2/es/src/components/VoiceSearch.vue.js +1 -1
  81. package/vue2/es/src/components/VoiceSearch.vue.js.map +1 -1
  82. package/vue2/es/src/connectors/connectStateResults.js.map +1 -1
  83. package/vue2/es/src/mixins/panel.js +1 -1
  84. package/vue2/es/src/mixins/panel.js.map +1 -1
  85. package/vue2/es/src/mixins/suit.js.map +1 -1
  86. package/vue2/es/src/mixins/widget.js +1 -1
  87. package/vue2/es/src/mixins/widget.js.map +1 -1
  88. package/vue2/es/src/plugin.js.map +1 -1
  89. package/vue2/es/src/util/createInstantSearchComponent.js +1 -1
  90. package/vue2/es/src/util/createInstantSearchComponent.js.map +1 -1
  91. package/vue2/es/src/util/createServerRootMixin.js +1 -1
  92. package/vue2/es/src/util/createServerRootMixin.js.map +1 -1
  93. package/vue2/es/src/util/parseAlgoliaHit.js +1 -1
  94. package/vue2/es/src/util/parseAlgoliaHit.js.map +1 -1
  95. package/vue2/es/src/util/polyfills.js.map +1 -1
  96. package/vue2/es/src/util/suit.js.map +1 -1
  97. package/vue2/es/src/util/unescape.js.map +1 -1
  98. package/vue2/es/src/util/vue-compat/{index-2.js → index-vue2.js} +1 -1
  99. package/vue2/es/src/util/vue-compat/index-vue2.js.map +1 -0
  100. package/vue2/umd/index.js +1 -1
  101. package/vue2/umd/index.js.map +1 -1
  102. package/vue3/cjs/index.js +1 -1
  103. package/vue3/cjs/index.js.map +1 -1
  104. package/vue3/cjs/package.json +1 -0
  105. package/vue3/es/index.js +1 -1
  106. package/vue3/es/package.json +1 -0
  107. package/vue3/es/package.json.js +1 -1
  108. package/vue3/es/src/components/Autocomplete.vue_vue&type=script&lang.js +1 -1
  109. package/vue3/es/src/components/Autocomplete.vue_vue&type=script&lang.js.map +1 -1
  110. package/vue3/es/src/components/Autocomplete.vue_vue&type=template&id=e7c95fd0&lang.js.map +1 -1
  111. package/vue3/es/src/components/Breadcrumb.vue_vue&type=script&lang.js +1 -1
  112. package/vue3/es/src/components/Breadcrumb.vue_vue&type=script&lang.js.map +1 -1
  113. package/vue3/es/src/components/Breadcrumb.vue_vue&type=template&id=6f46de9a&lang.js.map +1 -1
  114. package/vue3/es/src/components/ClearRefinements.vue_vue&type=script&lang.js +1 -1
  115. package/vue3/es/src/components/ClearRefinements.vue_vue&type=script&lang.js.map +1 -1
  116. package/vue3/es/src/components/ClearRefinements.vue_vue&type=template&id=410a3aaa&lang.js.map +1 -1
  117. package/vue3/es/src/components/Configure.js +1 -1
  118. package/vue3/es/src/components/Configure.js.map +1 -1
  119. package/vue3/es/src/components/ConfigureRelatedItems.js +1 -1
  120. package/vue3/es/src/components/ConfigureRelatedItems.js.map +1 -1
  121. package/vue3/es/src/components/CurrentRefinements.vue_vue&type=script&lang.js +1 -1
  122. package/vue3/es/src/components/CurrentRefinements.vue_vue&type=script&lang.js.map +1 -1
  123. package/vue3/es/src/components/CurrentRefinements.vue_vue&type=template&id=4f1917ff&lang.js.map +1 -1
  124. package/vue3/es/src/components/DynamicWidgets.js +1 -1
  125. package/vue3/es/src/components/DynamicWidgets.js.map +1 -1
  126. package/vue3/es/src/components/HierarchicalMenu.vue_vue&type=script&lang.js +1 -1
  127. package/vue3/es/src/components/HierarchicalMenu.vue_vue&type=script&lang.js.map +1 -1
  128. package/vue3/es/src/components/HierarchicalMenu.vue_vue&type=template&id=4361a0b8&lang.js.map +1 -1
  129. package/vue3/es/src/components/HierarchicalMenuList.vue_vue&type=template&id=0435b314&lang.js.map +1 -1
  130. package/vue3/es/src/components/Highlight.vue_vue&type=template&id=300b0ab4&lang.js.map +1 -1
  131. package/vue3/es/src/components/Highlighter.vue_vue&type=script&lang.js +1 -1
  132. package/vue3/es/src/components/Highlighter.vue_vue&type=script&lang.js.map +1 -1
  133. package/vue3/es/src/components/Hits.vue_vue&type=script&lang.js +1 -1
  134. package/vue3/es/src/components/Hits.vue_vue&type=script&lang.js.map +1 -1
  135. package/vue3/es/src/components/Hits.vue_vue&type=template&id=ef242920&lang.js.map +1 -1
  136. package/vue3/es/src/components/HitsPerPage.vue_vue&type=script&lang.js +1 -1
  137. package/vue3/es/src/components/HitsPerPage.vue_vue&type=script&lang.js.map +1 -1
  138. package/vue3/es/src/components/HitsPerPage.vue_vue&type=template&id=74f3ac28&lang.js.map +1 -1
  139. package/vue3/es/src/components/Index.js +1 -1
  140. package/vue3/es/src/components/Index.js.map +1 -1
  141. package/vue3/es/src/components/InfiniteHits.vue_vue&type=script&lang.js +1 -1
  142. package/vue3/es/src/components/InfiniteHits.vue_vue&type=script&lang.js.map +1 -1
  143. package/vue3/es/src/components/InfiniteHits.vue_vue&type=template&id=dcfb64b8&lang.js.map +1 -1
  144. package/vue3/es/src/components/InstantSearch.js +1 -1
  145. package/vue3/es/src/components/InstantSearch.js.map +1 -1
  146. package/vue3/es/src/components/InstantSearchSsr.js +1 -1
  147. package/vue3/es/src/components/InstantSearchSsr.js.map +1 -1
  148. package/vue3/es/src/components/Menu.vue_vue&type=script&lang.js +1 -1
  149. package/vue3/es/src/components/Menu.vue_vue&type=script&lang.js.map +1 -1
  150. package/vue3/es/src/components/Menu.vue_vue&type=template&id=9bcc0be2&lang.js.map +1 -1
  151. package/vue3/es/src/components/MenuSelect.vue_vue&type=script&lang.js +1 -1
  152. package/vue3/es/src/components/MenuSelect.vue_vue&type=script&lang.js.map +1 -1
  153. package/vue3/es/src/components/MenuSelect.vue_vue&type=template&id=694477eb&lang.js.map +1 -1
  154. package/vue3/es/src/components/NumericMenu.vue_vue&type=script&lang.js +1 -1
  155. package/vue3/es/src/components/NumericMenu.vue_vue&type=script&lang.js.map +1 -1
  156. package/vue3/es/src/components/NumericMenu.vue_vue&type=template&id=160fae0c&lang.js.map +1 -1
  157. package/vue3/es/src/components/Pagination.vue_vue&type=script&lang.js +1 -1
  158. package/vue3/es/src/components/Pagination.vue_vue&type=script&lang.js.map +1 -1
  159. package/vue3/es/src/components/Pagination.vue_vue&type=template&id=849a166c&lang.js.map +1 -1
  160. package/vue3/es/src/components/Panel.vue_vue&type=script&lang.js +1 -1
  161. package/vue3/es/src/components/Panel.vue_vue&type=script&lang.js.map +1 -1
  162. package/vue3/es/src/components/PoweredBy.vue_vue&type=script&lang.js.map +1 -1
  163. package/vue3/es/src/components/PoweredBy.vue_vue&type=template&id=3e8d7a5b&lang.js.map +1 -1
  164. package/vue3/es/src/components/QueryRuleContext.js +1 -1
  165. package/vue3/es/src/components/QueryRuleContext.js.map +1 -1
  166. package/vue3/es/src/components/QueryRuleCustomData.vue_vue&type=script&lang.js +1 -1
  167. package/vue3/es/src/components/QueryRuleCustomData.vue_vue&type=script&lang.js.map +1 -1
  168. package/vue3/es/src/components/QueryRuleCustomData.vue_vue&type=template&id=e4da0782&lang.js.map +1 -1
  169. package/vue3/es/src/components/RangeInput.vue_vue&type=script&lang.js +1 -1
  170. package/vue3/es/src/components/RangeInput.vue_vue&type=script&lang.js.map +1 -1
  171. package/vue3/es/src/components/RangeInput.vue_vue&type=template&id=1e17783d&lang.js.map +1 -1
  172. package/vue3/es/src/components/RatingMenu.vue_vue&type=script&lang.js +1 -1
  173. package/vue3/es/src/components/RatingMenu.vue_vue&type=script&lang.js.map +1 -1
  174. package/vue3/es/src/components/RatingMenu.vue_vue&type=template&id=9254de68&lang.js.map +1 -1
  175. package/vue3/es/src/components/RefinementList.vue_vue&type=script&lang.js +1 -1
  176. package/vue3/es/src/components/RefinementList.vue_vue&type=script&lang.js.map +1 -1
  177. package/vue3/es/src/components/RefinementList.vue_vue&type=template&id=28927239&lang.js.map +1 -1
  178. package/vue3/es/src/components/RelevantSort.vue_vue&type=script&lang.js +1 -1
  179. package/vue3/es/src/components/RelevantSort.vue_vue&type=script&lang.js.map +1 -1
  180. package/vue3/es/src/components/SearchBox.vue_vue&type=script&lang.js +1 -1
  181. package/vue3/es/src/components/SearchBox.vue_vue&type=script&lang.js.map +1 -1
  182. package/vue3/es/src/components/SearchBox.vue_vue&type=template&id=27029d83&lang.js.map +1 -1
  183. package/vue3/es/src/components/SearchInput.vue_vue&type=script&lang.js.map +1 -1
  184. package/vue3/es/src/components/SearchInput.vue_vue&type=template&id=2eed8ffc&lang.js.map +1 -1
  185. package/vue3/es/src/components/Snippet.vue_vue&type=template&id=eb4966c6&lang.js.map +1 -1
  186. package/vue3/es/src/components/SortBy.vue_vue&type=script&lang.js +1 -1
  187. package/vue3/es/src/components/SortBy.vue_vue&type=script&lang.js.map +1 -1
  188. package/vue3/es/src/components/SortBy.vue_vue&type=template&id=b69b3b76&lang.js.map +1 -1
  189. package/vue3/es/src/components/StateResults.vue_vue&type=script&lang.js.map +1 -1
  190. package/vue3/es/src/components/Stats.vue_vue&type=script&lang.js +1 -1
  191. package/vue3/es/src/components/Stats.vue_vue&type=script&lang.js.map +1 -1
  192. package/vue3/es/src/components/Stats.vue_vue&type=template&id=7337491f&lang.js.map +1 -1
  193. package/vue3/es/src/components/ToggleRefinement.vue_vue&type=script&lang.js +1 -1
  194. package/vue3/es/src/components/ToggleRefinement.vue_vue&type=script&lang.js.map +1 -1
  195. package/vue3/es/src/components/ToggleRefinement.vue_vue&type=template&id=14e4586f&lang.js.map +1 -1
  196. package/vue3/es/src/components/VoiceSearch.vue_vue&type=script&lang.js +1 -1
  197. package/vue3/es/src/components/VoiceSearch.vue_vue&type=script&lang.js.map +1 -1
  198. package/vue3/es/src/components/VoiceSearch.vue_vue&type=template&id=24b0f67a&lang.js.map +1 -1
  199. package/vue3/es/src/connectors/connectStateResults.js.map +1 -1
  200. package/vue3/es/src/mixins/panel.js +1 -1
  201. package/vue3/es/src/mixins/panel.js.map +1 -1
  202. package/vue3/es/src/mixins/suit.js.map +1 -1
  203. package/vue3/es/src/mixins/widget.js +1 -1
  204. package/vue3/es/src/mixins/widget.js.map +1 -1
  205. package/vue3/es/src/plugin.js.map +1 -1
  206. package/vue3/es/src/util/createInstantSearchComponent.js +1 -1
  207. package/vue3/es/src/util/createInstantSearchComponent.js.map +1 -1
  208. package/vue3/es/src/util/createServerRootMixin.js +1 -1
  209. package/vue3/es/src/util/createServerRootMixin.js.map +1 -1
  210. package/vue3/es/src/util/parseAlgoliaHit.js +1 -1
  211. package/vue3/es/src/util/parseAlgoliaHit.js.map +1 -1
  212. package/vue3/es/src/util/polyfills.js.map +1 -1
  213. package/vue3/es/src/util/suit.js.map +1 -1
  214. package/vue3/es/src/util/unescape.js.map +1 -1
  215. package/vue3/es/src/util/vue-compat/{index-3.js → index-vue3.js} +1 -1
  216. package/vue3/es/src/util/vue-compat/index-vue3.js.map +1 -0
  217. package/vue3/umd/index.js +1 -1
  218. package/vue3/umd/index.js.map +1 -1
  219. package/vue2/es/src/util/vue-compat/index-2.js.map +0 -1
  220. package/vue3/es/src/util/vue-compat/index-3.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,40 @@
1
+ ## [4.3.3](https://github.com/algolia/vue-instantsearch/compare/v4.3.2...v4.3.3) (2022-02-10)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **esm:** mark esm exports as type: module ([#1111](https://github.com/algolia/vue-instantsearch/issues/1111)) ([71c25d4](https://github.com/algolia/vue-instantsearch/commit/71c25d460e1b077b62ca41a59a5c4df7b713ec56))
7
+ * **nuxt3:** forward `$nuxt` on the instance by default ([#1112](https://github.com/algolia/vue-instantsearch/issues/1112)) ([acda293](https://github.com/algolia/vue-instantsearch/commit/acda29326475bd1b73f12b058a0c02df00b8b239))
8
+
9
+
10
+
11
+ ## [4.3.2](https://github.com/algolia/vue-instantsearch/compare/v4.3.1...v4.3.2) (2022-01-31)
12
+
13
+
14
+ ### Bug Fixes
15
+
16
+ * **ssr:** extend component correctly if at root (vue2) ([#1104](https://github.com/algolia/vue-instantsearch/issues/1104)) ([08b7124](https://github.com/algolia/vue-instantsearch/commit/08b71244c3bf7cf2cbd8183a671d1a589af75798)), closes [#1054](https://github.com/algolia/vue-instantsearch/issues/1054)
17
+
18
+
19
+
20
+ ## [4.3.1](https://github.com/algolia/vue-instantsearch/compare/v4.3.0...v4.3.1) (2022-01-11)
21
+
22
+
23
+ ### Bug Fixes
24
+
25
+ * **dependencies:** update instantsearch.js requirement ([a36ae2b](https://github.com/algolia/vue-instantsearch/commit/a36ae2b964110f3e4bc98c39895dd31b79527701)), closes [#1096](https://github.com/algolia/vue-instantsearch/issues/1096)
26
+
27
+
28
+
29
+ # [4.3.0](https://github.com/algolia/vue-instantsearch/compare/v4.2.0...v4.3.0) (2021-12-16)
30
+
31
+
32
+ ### Features
33
+
34
+ * **dynamicWidgets:** pass parameters to connector ([#1093](https://github.com/algolia/vue-instantsearch/issues/1093)) ([247ed0f](https://github.com/algolia/vue-instantsearch/commit/247ed0f101b5dabd5eebf35a7b8c3a2504eef2e2))
35
+
36
+
37
+
1
38
  # [4.2.0](https://github.com/algolia/vue-instantsearch/compare/v4.1.1...v4.2.0) (2021-12-13)
2
39
 
3
40
 
package/package.json CHANGED
@@ -16,7 +16,7 @@
16
16
  "autocomplete"
17
17
  ],
18
18
  "license": "MIT",
19
- "version": "4.2.0",
19
+ "version": "4.3.3",
20
20
  "files": [
21
21
  "vue2",
22
22
  "vue3",
@@ -28,9 +28,7 @@
28
28
  "repository": "https://github.com/algolia/vue-instantsearch",
29
29
  "scripts": {
30
30
  "prebuild": "rm -rf vue2 vue3",
31
- "build": "yarn build:vue2 && yarn build:vue3",
32
- "build:vue2": "./scripts/build-vue2.sh",
33
- "build:vue3": "./scripts/build-vue3.sh",
31
+ "build": "rollup -c",
34
32
  "storybook": "start-storybook -p 9001 -c .storybook",
35
33
  "storybook:build": "build-storybook -c .storybook -o website/stories",
36
34
  "examples:build": "yarn build && ./examples/build.sh",
@@ -48,7 +46,7 @@
48
46
  "release": "shipjs prepare"
49
47
  },
50
48
  "dependencies": {
51
- "instantsearch.js": "^4.35.0",
49
+ "instantsearch.js": "^4.37.2",
52
50
  "mitt": "^2.1.0"
53
51
  },
54
52
  "peerDependencies": {
@@ -66,6 +64,7 @@
66
64
  }
67
65
  },
68
66
  "devDependencies": {
67
+ "@babel/core": "^7.17.0",
69
68
  "@storybook/addon-actions": "3.4.11",
70
69
  "@storybook/addon-knobs": "3.4.11",
71
70
  "@storybook/addon-options": "3.4.11",
@@ -75,6 +74,7 @@
75
74
  "@vue/test-utils2": "npm:@vue/test-utils@2.0.0-rc.11",
76
75
  "@wdio/cli": "^5.11.13",
77
76
  "@wdio/jasmine-framework": "^5.11.0",
77
+ "@wdio/junit-reporter": "^5.11.7",
78
78
  "@wdio/local-runner": "^5.11.13",
79
79
  "@wdio/sauce-service": "^5.11.1",
80
80
  "@wdio/selenium-standalone-service": "^5.11.2",
@@ -95,7 +95,7 @@
95
95
  "eslint-plugin-jest": "22.3.0",
96
96
  "eslint-plugin-prettier": "3.0.0",
97
97
  "eslint-plugin-vue": "4.7.1",
98
- "instantsearch-e2e-tests": "algolia/instantsearch-e2e-tests#v1.3.0",
98
+ "instantsearch-e2e-tests": "algolia/instantsearch-e2e-tests#v2.0.2",
99
99
  "instantsearch.css": "7.3.1",
100
100
  "jest": "23.6.0",
101
101
  "jest-serializer-html": "7.1.0",
@@ -104,6 +104,7 @@
104
104
  "lodash": "4.17.19",
105
105
  "prettier": "1.14.3",
106
106
  "rollup": "1.32.1",
107
+ "rollup-plugin-babel": "4.4.0",
107
108
  "rollup-plugin-buble": "0.19.6",
108
109
  "rollup-plugin-commonjs": "10.0.1",
109
110
  "rollup-plugin-filesize": "9.0.0",
@@ -50,6 +50,14 @@ export default {
50
50
  type: Function,
51
51
  default: undefined,
52
52
  },
53
+ facets: {
54
+ type: Array,
55
+ default: undefined,
56
+ },
57
+ maxValuesPerFacet: {
58
+ type: Number,
59
+ default: undefined,
60
+ },
53
61
  },
54
62
  render: renderCompat(function(h) {
55
63
  const components = new Map();
@@ -91,6 +99,8 @@ export default {
91
99
  widgetParams() {
92
100
  return {
93
101
  transformItems: this.transformItems,
102
+ facets: this.facets,
103
+ maxValuesPerFacet: this.maxValuesPerFacet,
94
104
  // we do not pass "widgets" to the connector, since Vue is in charge of rendering
95
105
  widgets: [],
96
106
  };
@@ -46,6 +46,51 @@ const MockHierarchicalMenu = {
46
46
  `,
47
47
  };
48
48
 
49
+ it('passes arguments to connector', () => {
50
+ __setState(null);
51
+
52
+ const transformItems = items => items;
53
+ const facets = ['test'];
54
+ const maxValuesPerFacet = 100;
55
+ const wrapper = mount({
56
+ data() {
57
+ return { props: { transformItems, facets, maxValuesPerFacet } };
58
+ },
59
+ template: `
60
+ <DynamicWidgets v-bind="props">
61
+ <MockRefinementList attribute="test1"/>
62
+ <MockMenu attribute="test2"/>
63
+ <AisPanel>
64
+ <MockHierarchicalMenu :attributes="['test3', 'test4']" />
65
+ </AisPanel>
66
+ </DynamicWidgets>
67
+ `,
68
+ components: {
69
+ DynamicWidgets,
70
+ MockRefinementList,
71
+ MockMenu,
72
+ MockHierarchicalMenu,
73
+ AisPanel,
74
+ },
75
+ });
76
+
77
+ const dynamicWidgets = wrapper.findComponent(DynamicWidgets);
78
+
79
+ expect(dynamicWidgets.props()).toEqual({
80
+ classNames: undefined,
81
+ transformItems,
82
+ facets: ['test'],
83
+ maxValuesPerFacet: 100,
84
+ });
85
+
86
+ expect(dynamicWidgets.vm.widgetParams).toEqual({
87
+ transformItems,
88
+ facets: ['test'],
89
+ maxValuesPerFacet: 100,
90
+ widgets: [],
91
+ });
92
+ });
93
+
49
94
  it('renders all children without state', () => {
50
95
  __setState(null);
51
96
 
@@ -660,6 +660,60 @@ Array [
660
660
  await renderToString(wrapper);
661
661
  });
662
662
 
663
+ it('forwards nuxt', async () => {
664
+ const searchClient = createFakeClient();
665
+
666
+ let nuxt = 0;
667
+ // every time the function gets called, we get a different "nuxt"
668
+ // this can be used to assert both "nuxt" objects are equal
669
+ const getNuxtCounter = () => ++nuxt;
670
+
671
+ // there are two renders of App, each with an assertion
672
+ expect.assertions(2);
673
+
674
+ const App = {
675
+ mixins: [
676
+ {
677
+ beforeCreate() {
678
+ this.$nuxt = getNuxtCounter();
679
+ },
680
+ },
681
+ forceIsServerMixin,
682
+ createServerRootMixin({
683
+ searchClient,
684
+ indexName: 'hello',
685
+ }),
686
+ ],
687
+ data() {
688
+ expect(this.$nuxt).toEqual(1);
689
+ return {};
690
+ },
691
+ render: renderCompat(h =>
692
+ h(InstantSearchSsr, {}, [
693
+ h(Configure, {
694
+ attrs: {
695
+ hitsPerPage: 100,
696
+ },
697
+ }),
698
+ h(SearchBox),
699
+ ])
700
+ ),
701
+ serverPrefetch() {
702
+ return this.instantsearch.findResultsState({
703
+ component: this,
704
+ renderToString,
705
+ });
706
+ },
707
+ };
708
+
709
+ const wrapper = createSSRApp({
710
+ mixins: [forceIsServerMixin],
711
+ render: renderCompat(h => h(App)),
712
+ });
713
+
714
+ await renderToString(wrapper);
715
+ });
716
+
663
717
  it('searches only once', async () => {
664
718
  const searchClient = createFakeClient();
665
719
  const app = {
@@ -719,6 +773,82 @@ Array [
719
773
  },
720
774
  },
721
775
  ]
776
+ `);
777
+ });
778
+
779
+ it('works when component is at root (and therefore has no $vnode)', async () => {
780
+ const searchClient = createFakeClient();
781
+ let mainIndex;
782
+
783
+ const app = {
784
+ render: renderCompat(h =>
785
+ /**
786
+ * This code triggers this warning in Vue 3:
787
+ * > Non-function value encountered for default slot. Prefer function slots for better performance.
788
+ *
789
+ * To fix it, replace the third argument
790
+ * > [h(...), h(...)]
791
+ * with
792
+ * > { default: () => [h(...), h(...)] }
793
+ *
794
+ * but it's not important (and not compatible in vue2), we're leaving it as-is.
795
+ */
796
+ h(InstantSearchSsr, {}, [
797
+ h(Configure, {
798
+ attrs: {
799
+ hitsPerPage: 100,
800
+ },
801
+ }),
802
+ h(SearchBox),
803
+ ])
804
+ ),
805
+ };
806
+
807
+ const wrapper = createSSRApp({
808
+ mixins: [
809
+ forceIsServerMixin,
810
+ createServerRootMixin({
811
+ searchClient,
812
+ indexName: 'hello',
813
+ }),
814
+ ],
815
+ serverPrefetch() {
816
+ return this.instantsearch.findResultsState({
817
+ component: this,
818
+ renderToString,
819
+ });
820
+ },
821
+ created() {
822
+ mainIndex = this.instantsearch.mainIndex;
823
+ },
824
+ render: renderCompat(h => h(app)),
825
+ });
826
+
827
+ await renderToString(wrapper);
828
+
829
+ expect(mainIndex.getWidgetState()).toMatchInlineSnapshot(`
830
+ Object {
831
+ "hello": Object {
832
+ "configure": Object {
833
+ "hitsPerPage": 100,
834
+ },
835
+ },
836
+ }
837
+ `);
838
+
839
+ expect(searchClient.search).toHaveBeenCalledTimes(1);
840
+ expect(searchClient.search.mock.calls[0][0]).toMatchInlineSnapshot(`
841
+ Array [
842
+ Object {
843
+ "indexName": "hello",
844
+ "params": Object {
845
+ "facets": Array [],
846
+ "hitsPerPage": 100,
847
+ "query": "",
848
+ "tagFilters": "",
849
+ },
850
+ },
851
+ ]
722
852
  `);
723
853
  });
724
854
  }
@@ -1,7 +1,7 @@
1
1
  import { createSuitMixin } from '../mixins/suit';
2
2
  import { version } from '../../package.json'; // rollup does pick only what needed from json
3
3
  import { _objectSpread } from './polyfills';
4
- import { isVue3, version as vueVersion } from '../util/vue-compat';
4
+ import { isVue3, version as vueVersion } from './vue-compat';
5
5
 
6
6
  export const createInstantSearchComponent = component =>
7
7
  _objectSpread(
@@ -1,5 +1,5 @@
1
1
  import instantsearch from 'instantsearch.js/es';
2
- import { isVue3, isVue2, Vue2, createSSRApp } from '../util/vue-compat';
2
+ import { isVue3, isVue2, Vue2, createSSRApp } from './vue-compat';
3
3
  import { warn } from './warn';
4
4
 
5
5
  function walkIndex(indexWidget, visit) {
@@ -41,7 +41,7 @@ function defaultCloneComponent(componentInstance, { mixins = [] } = {}) {
41
41
 
42
42
  if (isVue3) {
43
43
  const appOptions = Object.assign({}, componentInstance.$options, options);
44
- appOptions.mixins = [...appOptions.mixins, ...mixins];
44
+ appOptions.mixins = [...mixins, ...appOptions.mixins];
45
45
  app = createSSRApp(appOptions);
46
46
  if (componentInstance.$router) {
47
47
  app.use(componentInstance.$router);
@@ -56,7 +56,10 @@ function defaultCloneComponent(componentInstance, { mixins = [] } = {}) {
56
56
 
57
57
  const Extended = componentInstance.$vnode
58
58
  ? componentInstance.$vnode.componentOptions.Ctor.extend(options)
59
- : Vue2.component(Object.assign({}, componentInstance.$options, options));
59
+ : Vue2.component(
60
+ options.name,
61
+ Object.assign({}, componentInstance.$options, options)
62
+ );
60
63
 
61
64
  app = new Extended({
62
65
  propsData: componentInstance.$options.propsData,
@@ -101,6 +104,13 @@ function augmentInstantSearch(instantSearchOptions, cloneComponent) {
101
104
  app = cloneComponent(component, {
102
105
  mixins: [
103
106
  {
107
+ beforeCreate() {
108
+ if (component.$nuxt) {
109
+ // In case of Nuxt (3), we ensure the context is shared between
110
+ // the real and cloned component
111
+ this.$nuxt = component.$nuxt;
112
+ }
113
+ },
104
114
  created() {
105
115
  instance = this.instantsearch;
106
116
 
@@ -1,9 +1,9 @@
1
1
  /*
2
2
  By default, we maintain this repository based on Vue 2.
3
- That's why this file is exporting from `index-2`,
3
+ That's why this file is exporting from `index-vue2`,
4
4
  which includes all the variables and methods for Vue 2.
5
5
  When `scripts/build-vue3.sh` runs, it will replace with
6
- > export * from './index-3';
6
+ > export * from './index-vue3';
7
7
  and revert it back after finished.
8
8
  */
9
- export * from './index-2';
9
+ export * from './index-vue2';