vue-instantsearch 4.3.3 → 4.4.0
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 +17 -0
- package/package.json +5 -5
- package/src/__tests__/index.js +133 -26
- package/src/components/Autocomplete.vue +8 -1
- package/src/components/Breadcrumb.vue +8 -1
- package/src/components/ClearRefinements.vue +8 -1
- package/src/components/Configure.js +8 -1
- package/src/components/ConfigureRelatedItems.js +8 -1
- package/src/components/CurrentRefinements.vue +8 -1
- package/src/components/DynamicWidgets.js +8 -1
- package/src/components/HierarchicalMenu.vue +8 -1
- package/src/components/Hits.vue +8 -1
- package/src/components/HitsPerPage.vue +8 -1
- package/src/components/Index.js +6 -1
- package/src/components/InfiniteHits.vue +8 -1
- package/src/components/Menu.vue +6 -1
- package/src/components/MenuSelect.vue +6 -1
- package/src/components/NumericMenu.vue +8 -1
- package/src/components/Pagination.vue +9 -1
- package/src/components/QueryRuleContext.js +8 -3
- package/src/components/QueryRuleCustomData.vue +8 -3
- package/src/components/RangeInput.vue +8 -1
- package/src/components/RatingMenu.vue +8 -1
- package/src/components/RefinementList.vue +8 -1
- package/src/components/RelevantSort.vue +8 -1
- package/src/components/SearchBox.vue +8 -1
- package/src/components/SortBy.vue +6 -1
- package/src/components/StateResults.vue +8 -1
- package/src/components/Stats.vue +6 -1
- package/src/components/ToggleRefinement.vue +8 -1
- package/src/components/VoiceSearch.vue +8 -1
- package/src/components/__tests__/__snapshots__/Pagination.js.snap +21 -21
- package/src/mixins/__tests__/widget.test.js +102 -0
- package/src/mixins/widget.js +13 -3
- package/src/util/__tests__/createServerRootMixin.test.js +3 -2
- package/src/util/createServerRootMixin.js +1 -1
- package/vue2/cjs/index.js +1 -1
- package/vue2/cjs/index.js.map +1 -1
- 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/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/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/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/SortBy.vue.js +1 -1
- package/vue2/es/src/components/SortBy.vue.js.map +1 -1
- package/vue2/es/src/components/StateResults.vue.js +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/mixins/widget.js +1 -1
- package/vue2/es/src/mixins/widget.js.map +1 -1
- package/vue2/es/src/util/createInstantSearchComponent.js +1 -1
- package/vue2/es/src/util/createServerRootMixin.js.map +1 -1
- 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/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/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/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 +1 -1
- package/vue3/es/src/components/Pagination.vue_vue&type=template&id=849a166c&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/RelevantSort.vue_vue&type=template&id=257b248b&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/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 +1 -1
- package/vue3/es/src/components/StateResults.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/StateResults.vue_vue&type=template&id=5992f3d5&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/mixins/widget.js +1 -1
- package/vue3/es/src/mixins/widget.js.map +1 -1
- package/vue3/es/src/util/createInstantSearchComponent.js +1 -1
- package/vue3/es/src/util/createServerRootMixin.js +1 -1
- package/vue3/es/src/util/createServerRootMixin.js.map +1 -1
- package/vue3/umd/index.js +1 -1
- package/vue3/umd/index.js.map +1 -1
package/src/components/Stats.vue
CHANGED
|
@@ -20,7 +20,12 @@ import { createSuitMixin } from '../mixins/suit';
|
|
|
20
20
|
export default {
|
|
21
21
|
name: 'AisStats',
|
|
22
22
|
mixins: [
|
|
23
|
-
createWidgetMixin(
|
|
23
|
+
createWidgetMixin(
|
|
24
|
+
{ connector: connectStats },
|
|
25
|
+
{
|
|
26
|
+
$$widgetType: 'ais.stats',
|
|
27
|
+
}
|
|
28
|
+
),
|
|
24
29
|
createSuitMixin({ name: 'Stats' }),
|
|
25
30
|
],
|
|
26
31
|
computed: {
|
|
@@ -41,7 +41,14 @@ export default {
|
|
|
41
41
|
name: 'AisToggleRefinement',
|
|
42
42
|
mixins: [
|
|
43
43
|
createSuitMixin({ name: 'ToggleRefinement' }),
|
|
44
|
-
createWidgetMixin(
|
|
44
|
+
createWidgetMixin(
|
|
45
|
+
{
|
|
46
|
+
connector: connectToggleRefinement,
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
$$widgetType: 'ais.toggleRefinement',
|
|
50
|
+
}
|
|
51
|
+
),
|
|
45
52
|
createPanelConsumerMixin({
|
|
46
53
|
mapStateToCanRefine,
|
|
47
54
|
}),
|
|
@@ -84,7 +84,14 @@ import { createWidgetMixin } from '../mixins/widget';
|
|
|
84
84
|
export default {
|
|
85
85
|
name: 'AisVoiceSearch',
|
|
86
86
|
mixins: [
|
|
87
|
-
createWidgetMixin(
|
|
87
|
+
createWidgetMixin(
|
|
88
|
+
{
|
|
89
|
+
connector: connectVoiceSearch,
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
$$widgetType: 'ais.voiceSearch',
|
|
93
|
+
}
|
|
94
|
+
),
|
|
88
95
|
createSuitMixin({ name: 'VoiceSearch' }),
|
|
89
96
|
],
|
|
90
97
|
props: {
|
|
@@ -19,49 +19,49 @@ exports[`renders correctly another page 1`] = `
|
|
|
19
19
|
‹
|
|
20
20
|
</a>
|
|
21
21
|
</li>
|
|
22
|
-
<li class="ais-Pagination-item">
|
|
22
|
+
<li class="ais-Pagination-item ais-Pagination-item--page">
|
|
23
23
|
<a class="ais-Pagination-link"
|
|
24
24
|
href="#"
|
|
25
25
|
>
|
|
26
26
|
4
|
|
27
27
|
</a>
|
|
28
28
|
</li>
|
|
29
|
-
<li class="ais-Pagination-item">
|
|
29
|
+
<li class="ais-Pagination-item ais-Pagination-item--page">
|
|
30
30
|
<a class="ais-Pagination-link"
|
|
31
31
|
href="#"
|
|
32
32
|
>
|
|
33
33
|
5
|
|
34
34
|
</a>
|
|
35
35
|
</li>
|
|
36
|
-
<li class="ais-Pagination-item">
|
|
36
|
+
<li class="ais-Pagination-item ais-Pagination-item--page">
|
|
37
37
|
<a class="ais-Pagination-link"
|
|
38
38
|
href="#"
|
|
39
39
|
>
|
|
40
40
|
6
|
|
41
41
|
</a>
|
|
42
42
|
</li>
|
|
43
|
-
<li class="ais-Pagination-item ais-Pagination-item--selected">
|
|
43
|
+
<li class="ais-Pagination-item ais-Pagination-item--page ais-Pagination-item--selected">
|
|
44
44
|
<a class="ais-Pagination-link"
|
|
45
45
|
href="#"
|
|
46
46
|
>
|
|
47
47
|
7
|
|
48
48
|
</a>
|
|
49
49
|
</li>
|
|
50
|
-
<li class="ais-Pagination-item">
|
|
50
|
+
<li class="ais-Pagination-item ais-Pagination-item--page">
|
|
51
51
|
<a class="ais-Pagination-link"
|
|
52
52
|
href="#"
|
|
53
53
|
>
|
|
54
54
|
8
|
|
55
55
|
</a>
|
|
56
56
|
</li>
|
|
57
|
-
<li class="ais-Pagination-item">
|
|
57
|
+
<li class="ais-Pagination-item ais-Pagination-item--page">
|
|
58
58
|
<a class="ais-Pagination-link"
|
|
59
59
|
href="#"
|
|
60
60
|
>
|
|
61
61
|
9
|
|
62
62
|
</a>
|
|
63
63
|
</li>
|
|
64
|
-
<li class="ais-Pagination-item">
|
|
64
|
+
<li class="ais-Pagination-item ais-Pagination-item--page">
|
|
65
65
|
<a class="ais-Pagination-link"
|
|
66
66
|
href="#"
|
|
67
67
|
>
|
|
@@ -105,49 +105,49 @@ exports[`renders correctly first page 1`] = `
|
|
|
105
105
|
‹
|
|
106
106
|
</span>
|
|
107
107
|
</li>
|
|
108
|
-
<li class="ais-Pagination-item ais-Pagination-item--selected">
|
|
108
|
+
<li class="ais-Pagination-item ais-Pagination-item--page ais-Pagination-item--selected">
|
|
109
109
|
<a class="ais-Pagination-link"
|
|
110
110
|
href="#"
|
|
111
111
|
>
|
|
112
112
|
1
|
|
113
113
|
</a>
|
|
114
114
|
</li>
|
|
115
|
-
<li class="ais-Pagination-item">
|
|
115
|
+
<li class="ais-Pagination-item ais-Pagination-item--page">
|
|
116
116
|
<a class="ais-Pagination-link"
|
|
117
117
|
href="#"
|
|
118
118
|
>
|
|
119
119
|
2
|
|
120
120
|
</a>
|
|
121
121
|
</li>
|
|
122
|
-
<li class="ais-Pagination-item">
|
|
122
|
+
<li class="ais-Pagination-item ais-Pagination-item--page">
|
|
123
123
|
<a class="ais-Pagination-link"
|
|
124
124
|
href="#"
|
|
125
125
|
>
|
|
126
126
|
3
|
|
127
127
|
</a>
|
|
128
128
|
</li>
|
|
129
|
-
<li class="ais-Pagination-item">
|
|
129
|
+
<li class="ais-Pagination-item ais-Pagination-item--page">
|
|
130
130
|
<a class="ais-Pagination-link"
|
|
131
131
|
href="#"
|
|
132
132
|
>
|
|
133
133
|
4
|
|
134
134
|
</a>
|
|
135
135
|
</li>
|
|
136
|
-
<li class="ais-Pagination-item">
|
|
136
|
+
<li class="ais-Pagination-item ais-Pagination-item--page">
|
|
137
137
|
<a class="ais-Pagination-link"
|
|
138
138
|
href="#"
|
|
139
139
|
>
|
|
140
140
|
5
|
|
141
141
|
</a>
|
|
142
142
|
</li>
|
|
143
|
-
<li class="ais-Pagination-item">
|
|
143
|
+
<li class="ais-Pagination-item ais-Pagination-item--page">
|
|
144
144
|
<a class="ais-Pagination-link"
|
|
145
145
|
href="#"
|
|
146
146
|
>
|
|
147
147
|
6
|
|
148
148
|
</a>
|
|
149
149
|
</li>
|
|
150
|
-
<li class="ais-Pagination-item">
|
|
150
|
+
<li class="ais-Pagination-item ais-Pagination-item--page">
|
|
151
151
|
<a class="ais-Pagination-link"
|
|
152
152
|
href="#"
|
|
153
153
|
>
|
|
@@ -193,49 +193,49 @@ exports[`renders correctly last page 1`] = `
|
|
|
193
193
|
‹
|
|
194
194
|
</a>
|
|
195
195
|
</li>
|
|
196
|
-
<li class="ais-Pagination-item">
|
|
196
|
+
<li class="ais-Pagination-item ais-Pagination-item--page">
|
|
197
197
|
<a class="ais-Pagination-link"
|
|
198
198
|
href="#"
|
|
199
199
|
>
|
|
200
200
|
4
|
|
201
201
|
</a>
|
|
202
202
|
</li>
|
|
203
|
-
<li class="ais-Pagination-item">
|
|
203
|
+
<li class="ais-Pagination-item ais-Pagination-item--page">
|
|
204
204
|
<a class="ais-Pagination-link"
|
|
205
205
|
href="#"
|
|
206
206
|
>
|
|
207
207
|
5
|
|
208
208
|
</a>
|
|
209
209
|
</li>
|
|
210
|
-
<li class="ais-Pagination-item">
|
|
210
|
+
<li class="ais-Pagination-item ais-Pagination-item--page">
|
|
211
211
|
<a class="ais-Pagination-link"
|
|
212
212
|
href="#"
|
|
213
213
|
>
|
|
214
214
|
6
|
|
215
215
|
</a>
|
|
216
216
|
</li>
|
|
217
|
-
<li class="ais-Pagination-item">
|
|
217
|
+
<li class="ais-Pagination-item ais-Pagination-item--page">
|
|
218
218
|
<a class="ais-Pagination-link"
|
|
219
219
|
href="#"
|
|
220
220
|
>
|
|
221
221
|
7
|
|
222
222
|
</a>
|
|
223
223
|
</li>
|
|
224
|
-
<li class="ais-Pagination-item">
|
|
224
|
+
<li class="ais-Pagination-item ais-Pagination-item--page">
|
|
225
225
|
<a class="ais-Pagination-link"
|
|
226
226
|
href="#"
|
|
227
227
|
>
|
|
228
228
|
8
|
|
229
229
|
</a>
|
|
230
230
|
</li>
|
|
231
|
-
<li class="ais-Pagination-item">
|
|
231
|
+
<li class="ais-Pagination-item ais-Pagination-item--page">
|
|
232
232
|
<a class="ais-Pagination-link"
|
|
233
233
|
href="#"
|
|
234
234
|
>
|
|
235
235
|
9
|
|
236
236
|
</a>
|
|
237
237
|
</li>
|
|
238
|
-
<li class="ais-Pagination-item ais-Pagination-item--selected">
|
|
238
|
+
<li class="ais-Pagination-item ais-Pagination-item--page ais-Pagination-item--selected">
|
|
239
239
|
<a class="ais-Pagination-link"
|
|
240
240
|
href="#"
|
|
241
241
|
>
|
|
@@ -333,3 +333,105 @@ describe('on child index', () => {
|
|
|
333
333
|
expect(wrapper.vm.state).toEqual(state);
|
|
334
334
|
});
|
|
335
335
|
});
|
|
336
|
+
|
|
337
|
+
describe('general', () => {
|
|
338
|
+
it('sets additional properties to widget', () => {
|
|
339
|
+
const instance = createFakeInstance();
|
|
340
|
+
const widget = { render: () => {} };
|
|
341
|
+
const factory = jest.fn(() => widget);
|
|
342
|
+
const connector = jest.fn(() => factory);
|
|
343
|
+
const widgetParams = {
|
|
344
|
+
attribute: 'brand',
|
|
345
|
+
};
|
|
346
|
+
const additionalProperties = { $$widgetType: 'ais.fakeWidget' };
|
|
347
|
+
const Test = createFakeComponent({
|
|
348
|
+
mixins: [createWidgetMixin({ connector }, additionalProperties)],
|
|
349
|
+
computed: {
|
|
350
|
+
widgetParams() {
|
|
351
|
+
return widgetParams;
|
|
352
|
+
},
|
|
353
|
+
},
|
|
354
|
+
});
|
|
355
|
+
|
|
356
|
+
mount(Test, {
|
|
357
|
+
provide: {
|
|
358
|
+
$_ais_instantSearchInstance: instance,
|
|
359
|
+
},
|
|
360
|
+
});
|
|
361
|
+
|
|
362
|
+
expect(connector).toHaveBeenCalled();
|
|
363
|
+
expect(factory).toHaveBeenCalledWith(widgetParams);
|
|
364
|
+
expect(instance.mainIndex.addWidgets).toHaveBeenCalledTimes(1);
|
|
365
|
+
expect(instance.mainIndex.addWidgets.mock.calls[0][0]).toEqual([
|
|
366
|
+
{
|
|
367
|
+
...widget,
|
|
368
|
+
...additionalProperties,
|
|
369
|
+
},
|
|
370
|
+
]);
|
|
371
|
+
});
|
|
372
|
+
|
|
373
|
+
it('sets additional properties to widget when it recreates', async () => {
|
|
374
|
+
const instance = createFakeInstance();
|
|
375
|
+
const widget = {
|
|
376
|
+
render: () => {},
|
|
377
|
+
dispose: () => {},
|
|
378
|
+
};
|
|
379
|
+
const factory = jest.fn(() => widget);
|
|
380
|
+
const connector = jest.fn(() => factory);
|
|
381
|
+
const widgetParams = {
|
|
382
|
+
attribute: 'brand',
|
|
383
|
+
};
|
|
384
|
+
const additionalProperties = { $$widgetType: 'ais.fakeWidget' };
|
|
385
|
+
|
|
386
|
+
const Test = createFakeComponent({
|
|
387
|
+
mixins: [createWidgetMixin({ connector }, additionalProperties)],
|
|
388
|
+
data: () => ({
|
|
389
|
+
widgetParams,
|
|
390
|
+
}),
|
|
391
|
+
});
|
|
392
|
+
|
|
393
|
+
const nextWidgetParams = {
|
|
394
|
+
attribute: 'price',
|
|
395
|
+
};
|
|
396
|
+
|
|
397
|
+
const wrapper = mount(Test, {
|
|
398
|
+
provide: {
|
|
399
|
+
$_ais_instantSearchInstance: instance,
|
|
400
|
+
},
|
|
401
|
+
});
|
|
402
|
+
|
|
403
|
+
// Simulate render
|
|
404
|
+
await wrapper.setData({
|
|
405
|
+
state: { items: [] },
|
|
406
|
+
});
|
|
407
|
+
|
|
408
|
+
expect(instance.mainIndex.addWidgets).toHaveBeenCalledTimes(1);
|
|
409
|
+
expect(instance.mainIndex.addWidgets.mock.calls[0][0]).toEqual([
|
|
410
|
+
{
|
|
411
|
+
...widget,
|
|
412
|
+
...additionalProperties,
|
|
413
|
+
},
|
|
414
|
+
]);
|
|
415
|
+
|
|
416
|
+
// Simulate widget params update
|
|
417
|
+
await wrapper.setData({
|
|
418
|
+
widgetParams: nextWidgetParams,
|
|
419
|
+
});
|
|
420
|
+
|
|
421
|
+
expect(wrapper.vm.state).toBe(null);
|
|
422
|
+
|
|
423
|
+
expect(instance.mainIndex.removeWidgets).toHaveBeenCalledTimes(1);
|
|
424
|
+
expect(instance.mainIndex.removeWidgets).toHaveBeenCalledWith([widget]);
|
|
425
|
+
|
|
426
|
+
expect(factory).toHaveBeenCalledTimes(2);
|
|
427
|
+
expect(factory).toHaveBeenCalledWith(nextWidgetParams);
|
|
428
|
+
|
|
429
|
+
expect(instance.mainIndex.addWidgets).toHaveBeenCalledTimes(2);
|
|
430
|
+
expect(instance.mainIndex.addWidgets.mock.calls[1][0]).toEqual([
|
|
431
|
+
{
|
|
432
|
+
...widget,
|
|
433
|
+
...additionalProperties,
|
|
434
|
+
},
|
|
435
|
+
]);
|
|
436
|
+
});
|
|
437
|
+
});
|
package/src/mixins/widget.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
import { _objectSpread } from '../util/polyfills';
|
|
1
2
|
import { isVue3 } from '../util/vue-compat';
|
|
2
3
|
import { warn } from '../util/warn';
|
|
3
4
|
|
|
4
|
-
export const createWidgetMixin = (
|
|
5
|
+
export const createWidgetMixin = (
|
|
6
|
+
{ connector } = {},
|
|
7
|
+
additionalProperties = {}
|
|
8
|
+
) => ({
|
|
5
9
|
inject: {
|
|
6
10
|
instantSearchInstance: {
|
|
7
11
|
from: '$_ais_instantSearchInstance',
|
|
@@ -27,7 +31,10 @@ export const createWidgetMixin = ({ connector } = {}) => ({
|
|
|
27
31
|
created() {
|
|
28
32
|
if (typeof connector === 'function') {
|
|
29
33
|
this.factory = connector(this.updateState, () => {});
|
|
30
|
-
this.widget =
|
|
34
|
+
this.widget = _objectSpread(
|
|
35
|
+
this.factory(this.widgetParams),
|
|
36
|
+
additionalProperties
|
|
37
|
+
);
|
|
31
38
|
this.getParentIndex().addWidgets([this.widget]);
|
|
32
39
|
|
|
33
40
|
if (
|
|
@@ -66,7 +73,10 @@ Read more on using connectors: https://alg.li/vue-custom`
|
|
|
66
73
|
handler(nextWidgetParams) {
|
|
67
74
|
this.state = null;
|
|
68
75
|
this.getParentIndex().removeWidgets([this.widget]);
|
|
69
|
-
this.widget =
|
|
76
|
+
this.widget = _objectSpread(
|
|
77
|
+
this.factory(nextWidgetParams),
|
|
78
|
+
additionalProperties
|
|
79
|
+
);
|
|
70
80
|
this.getParentIndex().addWidgets([this.widget]);
|
|
71
81
|
},
|
|
72
82
|
deep: true,
|
|
@@ -933,8 +933,9 @@ Array [
|
|
|
933
933
|
hello: serialized,
|
|
934
934
|
});
|
|
935
935
|
|
|
936
|
-
|
|
937
|
-
|
|
936
|
+
expect(instantsearch.mainIndex.getHelper()).toEqual(
|
|
937
|
+
expect.any(AlgoliaSearchHelper)
|
|
938
|
+
);
|
|
938
939
|
expect(instantsearch.mainIndex.getHelper()).not.toBeNull();
|
|
939
940
|
});
|
|
940
941
|
|
|
@@ -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 = [...mixins, ...appOptions.mixins];
|
|
44
|
+
appOptions.mixins = [...mixins, ...(appOptions.mixins || [])];
|
|
45
45
|
app = createSSRApp(appOptions);
|
|
46
46
|
if (componentInstance.$router) {
|
|
47
47
|
app.use(componentInstance.$router);
|