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.
- package/CHANGELOG.md +37 -0
- package/package.json +7 -6
- package/src/components/DynamicWidgets.js +10 -0
- package/src/components/__tests__/DynamicWidgets.js +45 -0
- package/src/util/__tests__/createServerRootMixin.test.js +130 -0
- package/src/util/createInstantSearchComponent.js +1 -1
- package/src/util/createServerRootMixin.js +13 -3
- package/src/util/vue-compat/{index-2.js → index-vue2.js} +0 -0
- package/src/util/vue-compat/{index-3.js → index-vue3.js} +0 -0
- package/src/util/vue-compat/index.js +3 -3
- package/vue2/cjs/index.js +1 -1
- package/vue2/cjs/index.js.map +1 -1
- package/vue2/cjs/package.json +1 -0
- package/vue2/es/index.js +1 -1
- package/vue2/es/package.json +1 -0
- package/vue2/es/package.json.js +1 -1
- package/vue2/es/src/components/Autocomplete.vue.js +1 -1
- package/vue2/es/src/components/Autocomplete.vue.js.map +1 -1
- package/vue2/es/src/components/Breadcrumb.vue.js +1 -1
- package/vue2/es/src/components/Breadcrumb.vue.js.map +1 -1
- package/vue2/es/src/components/ClearRefinements.vue.js +1 -1
- package/vue2/es/src/components/ClearRefinements.vue.js.map +1 -1
- package/vue2/es/src/components/Configure.js +1 -1
- package/vue2/es/src/components/Configure.js.map +1 -1
- package/vue2/es/src/components/ConfigureRelatedItems.js +1 -1
- package/vue2/es/src/components/ConfigureRelatedItems.js.map +1 -1
- package/vue2/es/src/components/CurrentRefinements.vue.js +1 -1
- package/vue2/es/src/components/CurrentRefinements.vue.js.map +1 -1
- package/vue2/es/src/components/DynamicWidgets.js +1 -1
- package/vue2/es/src/components/DynamicWidgets.js.map +1 -1
- package/vue2/es/src/components/HierarchicalMenu.vue.js +1 -1
- package/vue2/es/src/components/HierarchicalMenu.vue.js.map +1 -1
- package/vue2/es/src/components/Highlighter.vue.js +1 -1
- package/vue2/es/src/components/Highlighter.vue.js.map +1 -1
- package/vue2/es/src/components/Hits.vue.js +1 -1
- package/vue2/es/src/components/Hits.vue.js.map +1 -1
- package/vue2/es/src/components/HitsPerPage.vue.js +1 -1
- package/vue2/es/src/components/HitsPerPage.vue.js.map +1 -1
- package/vue2/es/src/components/Index.js +1 -1
- package/vue2/es/src/components/Index.js.map +1 -1
- package/vue2/es/src/components/InfiniteHits.vue.js +1 -1
- package/vue2/es/src/components/InfiniteHits.vue.js.map +1 -1
- package/vue2/es/src/components/InstantSearch.js +1 -1
- package/vue2/es/src/components/InstantSearch.js.map +1 -1
- package/vue2/es/src/components/InstantSearchSsr.js +1 -1
- package/vue2/es/src/components/InstantSearchSsr.js.map +1 -1
- package/vue2/es/src/components/Menu.vue.js +1 -1
- package/vue2/es/src/components/Menu.vue.js.map +1 -1
- package/vue2/es/src/components/MenuSelect.vue.js +1 -1
- package/vue2/es/src/components/MenuSelect.vue.js.map +1 -1
- package/vue2/es/src/components/NumericMenu.vue.js +1 -1
- package/vue2/es/src/components/NumericMenu.vue.js.map +1 -1
- package/vue2/es/src/components/Pagination.vue.js +1 -1
- package/vue2/es/src/components/Pagination.vue.js.map +1 -1
- package/vue2/es/src/components/Panel.vue.js +1 -1
- package/vue2/es/src/components/Panel.vue.js.map +1 -1
- package/vue2/es/src/components/PoweredBy.vue.js.map +1 -1
- package/vue2/es/src/components/QueryRuleContext.js +1 -1
- package/vue2/es/src/components/QueryRuleContext.js.map +1 -1
- package/vue2/es/src/components/QueryRuleCustomData.vue.js +1 -1
- package/vue2/es/src/components/QueryRuleCustomData.vue.js.map +1 -1
- package/vue2/es/src/components/RangeInput.vue.js +1 -1
- package/vue2/es/src/components/RangeInput.vue.js.map +1 -1
- package/vue2/es/src/components/RatingMenu.vue.js +1 -1
- package/vue2/es/src/components/RatingMenu.vue.js.map +1 -1
- package/vue2/es/src/components/RefinementList.vue.js +1 -1
- package/vue2/es/src/components/RefinementList.vue.js.map +1 -1
- package/vue2/es/src/components/RelevantSort.vue.js +1 -1
- package/vue2/es/src/components/RelevantSort.vue.js.map +1 -1
- package/vue2/es/src/components/SearchBox.vue.js +1 -1
- package/vue2/es/src/components/SearchBox.vue.js.map +1 -1
- package/vue2/es/src/components/SearchInput.vue.js.map +1 -1
- package/vue2/es/src/components/SortBy.vue.js +1 -1
- package/vue2/es/src/components/SortBy.vue.js.map +1 -1
- package/vue2/es/src/components/StateResults.vue.js.map +1 -1
- package/vue2/es/src/components/Stats.vue.js +1 -1
- package/vue2/es/src/components/Stats.vue.js.map +1 -1
- package/vue2/es/src/components/ToggleRefinement.vue.js +1 -1
- package/vue2/es/src/components/ToggleRefinement.vue.js.map +1 -1
- package/vue2/es/src/components/VoiceSearch.vue.js +1 -1
- package/vue2/es/src/components/VoiceSearch.vue.js.map +1 -1
- package/vue2/es/src/connectors/connectStateResults.js.map +1 -1
- package/vue2/es/src/mixins/panel.js +1 -1
- package/vue2/es/src/mixins/panel.js.map +1 -1
- package/vue2/es/src/mixins/suit.js.map +1 -1
- package/vue2/es/src/mixins/widget.js +1 -1
- package/vue2/es/src/mixins/widget.js.map +1 -1
- package/vue2/es/src/plugin.js.map +1 -1
- package/vue2/es/src/util/createInstantSearchComponent.js +1 -1
- package/vue2/es/src/util/createInstantSearchComponent.js.map +1 -1
- package/vue2/es/src/util/createServerRootMixin.js +1 -1
- package/vue2/es/src/util/createServerRootMixin.js.map +1 -1
- package/vue2/es/src/util/parseAlgoliaHit.js +1 -1
- package/vue2/es/src/util/parseAlgoliaHit.js.map +1 -1
- package/vue2/es/src/util/polyfills.js.map +1 -1
- package/vue2/es/src/util/suit.js.map +1 -1
- package/vue2/es/src/util/unescape.js.map +1 -1
- package/vue2/es/src/util/vue-compat/{index-2.js → index-vue2.js} +1 -1
- package/vue2/es/src/util/vue-compat/index-vue2.js.map +1 -0
- package/vue2/umd/index.js +1 -1
- package/vue2/umd/index.js.map +1 -1
- package/vue3/cjs/index.js +1 -1
- package/vue3/cjs/index.js.map +1 -1
- package/vue3/cjs/package.json +1 -0
- package/vue3/es/index.js +1 -1
- package/vue3/es/package.json +1 -0
- package/vue3/es/package.json.js +1 -1
- package/vue3/es/src/components/Autocomplete.vue_vue&type=script&lang.js +1 -1
- package/vue3/es/src/components/Autocomplete.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/Autocomplete.vue_vue&type=template&id=e7c95fd0&lang.js.map +1 -1
- package/vue3/es/src/components/Breadcrumb.vue_vue&type=script&lang.js +1 -1
- package/vue3/es/src/components/Breadcrumb.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/Breadcrumb.vue_vue&type=template&id=6f46de9a&lang.js.map +1 -1
- package/vue3/es/src/components/ClearRefinements.vue_vue&type=script&lang.js +1 -1
- package/vue3/es/src/components/ClearRefinements.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/ClearRefinements.vue_vue&type=template&id=410a3aaa&lang.js.map +1 -1
- package/vue3/es/src/components/Configure.js +1 -1
- package/vue3/es/src/components/Configure.js.map +1 -1
- package/vue3/es/src/components/ConfigureRelatedItems.js +1 -1
- package/vue3/es/src/components/ConfigureRelatedItems.js.map +1 -1
- package/vue3/es/src/components/CurrentRefinements.vue_vue&type=script&lang.js +1 -1
- package/vue3/es/src/components/CurrentRefinements.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/CurrentRefinements.vue_vue&type=template&id=4f1917ff&lang.js.map +1 -1
- package/vue3/es/src/components/DynamicWidgets.js +1 -1
- package/vue3/es/src/components/DynamicWidgets.js.map +1 -1
- package/vue3/es/src/components/HierarchicalMenu.vue_vue&type=script&lang.js +1 -1
- package/vue3/es/src/components/HierarchicalMenu.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/HierarchicalMenu.vue_vue&type=template&id=4361a0b8&lang.js.map +1 -1
- package/vue3/es/src/components/HierarchicalMenuList.vue_vue&type=template&id=0435b314&lang.js.map +1 -1
- package/vue3/es/src/components/Highlight.vue_vue&type=template&id=300b0ab4&lang.js.map +1 -1
- package/vue3/es/src/components/Highlighter.vue_vue&type=script&lang.js +1 -1
- package/vue3/es/src/components/Highlighter.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/Hits.vue_vue&type=script&lang.js +1 -1
- package/vue3/es/src/components/Hits.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/Hits.vue_vue&type=template&id=ef242920&lang.js.map +1 -1
- package/vue3/es/src/components/HitsPerPage.vue_vue&type=script&lang.js +1 -1
- package/vue3/es/src/components/HitsPerPage.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/HitsPerPage.vue_vue&type=template&id=74f3ac28&lang.js.map +1 -1
- package/vue3/es/src/components/Index.js +1 -1
- package/vue3/es/src/components/Index.js.map +1 -1
- package/vue3/es/src/components/InfiniteHits.vue_vue&type=script&lang.js +1 -1
- package/vue3/es/src/components/InfiniteHits.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/InfiniteHits.vue_vue&type=template&id=dcfb64b8&lang.js.map +1 -1
- package/vue3/es/src/components/InstantSearch.js +1 -1
- package/vue3/es/src/components/InstantSearch.js.map +1 -1
- package/vue3/es/src/components/InstantSearchSsr.js +1 -1
- package/vue3/es/src/components/InstantSearchSsr.js.map +1 -1
- package/vue3/es/src/components/Menu.vue_vue&type=script&lang.js +1 -1
- package/vue3/es/src/components/Menu.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/Menu.vue_vue&type=template&id=9bcc0be2&lang.js.map +1 -1
- package/vue3/es/src/components/MenuSelect.vue_vue&type=script&lang.js +1 -1
- package/vue3/es/src/components/MenuSelect.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/MenuSelect.vue_vue&type=template&id=694477eb&lang.js.map +1 -1
- package/vue3/es/src/components/NumericMenu.vue_vue&type=script&lang.js +1 -1
- package/vue3/es/src/components/NumericMenu.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/NumericMenu.vue_vue&type=template&id=160fae0c&lang.js.map +1 -1
- package/vue3/es/src/components/Pagination.vue_vue&type=script&lang.js +1 -1
- package/vue3/es/src/components/Pagination.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/Pagination.vue_vue&type=template&id=849a166c&lang.js.map +1 -1
- package/vue3/es/src/components/Panel.vue_vue&type=script&lang.js +1 -1
- package/vue3/es/src/components/Panel.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/PoweredBy.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/PoweredBy.vue_vue&type=template&id=3e8d7a5b&lang.js.map +1 -1
- package/vue3/es/src/components/QueryRuleContext.js +1 -1
- package/vue3/es/src/components/QueryRuleContext.js.map +1 -1
- package/vue3/es/src/components/QueryRuleCustomData.vue_vue&type=script&lang.js +1 -1
- package/vue3/es/src/components/QueryRuleCustomData.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/QueryRuleCustomData.vue_vue&type=template&id=e4da0782&lang.js.map +1 -1
- package/vue3/es/src/components/RangeInput.vue_vue&type=script&lang.js +1 -1
- package/vue3/es/src/components/RangeInput.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/RangeInput.vue_vue&type=template&id=1e17783d&lang.js.map +1 -1
- package/vue3/es/src/components/RatingMenu.vue_vue&type=script&lang.js +1 -1
- package/vue3/es/src/components/RatingMenu.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/RatingMenu.vue_vue&type=template&id=9254de68&lang.js.map +1 -1
- package/vue3/es/src/components/RefinementList.vue_vue&type=script&lang.js +1 -1
- package/vue3/es/src/components/RefinementList.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/RefinementList.vue_vue&type=template&id=28927239&lang.js.map +1 -1
- package/vue3/es/src/components/RelevantSort.vue_vue&type=script&lang.js +1 -1
- package/vue3/es/src/components/RelevantSort.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/SearchBox.vue_vue&type=script&lang.js +1 -1
- package/vue3/es/src/components/SearchBox.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/SearchBox.vue_vue&type=template&id=27029d83&lang.js.map +1 -1
- package/vue3/es/src/components/SearchInput.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/SearchInput.vue_vue&type=template&id=2eed8ffc&lang.js.map +1 -1
- package/vue3/es/src/components/Snippet.vue_vue&type=template&id=eb4966c6&lang.js.map +1 -1
- package/vue3/es/src/components/SortBy.vue_vue&type=script&lang.js +1 -1
- package/vue3/es/src/components/SortBy.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/SortBy.vue_vue&type=template&id=b69b3b76&lang.js.map +1 -1
- package/vue3/es/src/components/StateResults.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/Stats.vue_vue&type=script&lang.js +1 -1
- package/vue3/es/src/components/Stats.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/Stats.vue_vue&type=template&id=7337491f&lang.js.map +1 -1
- package/vue3/es/src/components/ToggleRefinement.vue_vue&type=script&lang.js +1 -1
- package/vue3/es/src/components/ToggleRefinement.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/ToggleRefinement.vue_vue&type=template&id=14e4586f&lang.js.map +1 -1
- package/vue3/es/src/components/VoiceSearch.vue_vue&type=script&lang.js +1 -1
- package/vue3/es/src/components/VoiceSearch.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/VoiceSearch.vue_vue&type=template&id=24b0f67a&lang.js.map +1 -1
- package/vue3/es/src/connectors/connectStateResults.js.map +1 -1
- package/vue3/es/src/mixins/panel.js +1 -1
- package/vue3/es/src/mixins/panel.js.map +1 -1
- package/vue3/es/src/mixins/suit.js.map +1 -1
- package/vue3/es/src/mixins/widget.js +1 -1
- package/vue3/es/src/mixins/widget.js.map +1 -1
- package/vue3/es/src/plugin.js.map +1 -1
- package/vue3/es/src/util/createInstantSearchComponent.js +1 -1
- package/vue3/es/src/util/createInstantSearchComponent.js.map +1 -1
- package/vue3/es/src/util/createServerRootMixin.js +1 -1
- package/vue3/es/src/util/createServerRootMixin.js.map +1 -1
- package/vue3/es/src/util/parseAlgoliaHit.js +1 -1
- package/vue3/es/src/util/parseAlgoliaHit.js.map +1 -1
- package/vue3/es/src/util/polyfills.js.map +1 -1
- package/vue3/es/src/util/suit.js.map +1 -1
- package/vue3/es/src/util/unescape.js.map +1 -1
- package/vue3/es/src/util/vue-compat/{index-3.js → index-vue3.js} +1 -1
- package/vue3/es/src/util/vue-compat/index-vue3.js.map +1 -0
- package/vue3/umd/index.js +1 -1
- package/vue3/umd/index.js.map +1 -1
- package/vue2/es/src/util/vue-compat/index-2.js.map +0 -1
- 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.
|
|
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": "
|
|
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.
|
|
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#
|
|
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 '
|
|
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 '
|
|
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 = [...
|
|
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(
|
|
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
|
|
|
File without changes
|
|
File without changes
|
|
@@ -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-
|
|
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-
|
|
6
|
+
> export * from './index-vue3';
|
|
7
7
|
and revert it back after finished.
|
|
8
8
|
*/
|
|
9
|
-
export * from './index-
|
|
9
|
+
export * from './index-vue2';
|