vue-instantsearch 4.7.1 → 4.8.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/package.json CHANGED
@@ -16,7 +16,7 @@
16
16
  "autocomplete"
17
17
  ],
18
18
  "license": "MIT",
19
- "version": "4.7.1",
19
+ "version": "4.8.0",
20
20
  "files": [
21
21
  "vue2",
22
22
  "vue3",
@@ -35,7 +35,7 @@
35
35
  "test:exports:vue3": "node ./test/module/vue3/is-es-module.mjs && node ./test/module/vue3/is-cjs-module.cjs"
36
36
  },
37
37
  "dependencies": {
38
- "instantsearch.js": "^4.47.0",
38
+ "instantsearch.js": "^4.50.0",
39
39
  "mitt": "^2.1.0"
40
40
  },
41
41
  "peerDependencies": {
@@ -60,7 +60,7 @@
60
60
  "@vue/test-utils": "1.3.0",
61
61
  "@vue/test-utils2": "npm:@vue/test-utils@2.0.0-rc.11",
62
62
  "algoliasearch": "4.14.3",
63
- "algoliasearch-helper": "3.11.1",
63
+ "algoliasearch-helper": "3.11.3",
64
64
  "instantsearch.css": "8.0.0",
65
65
  "rollup": "1.32.1",
66
66
  "rollup-plugin-babel": "4.4.0",
@@ -85,5 +85,5 @@
85
85
  "vuex": "3.5.1",
86
86
  "vuex4": "npm:vuex@4.0.0"
87
87
  },
88
- "gitHead": "54e18a6e7cfebc2c7c7326676c56c71ee39eb1c2"
88
+ "gitHead": "15adccb907fec9528ab169ee3d7d905ceab5a860"
89
89
  }
@@ -0,0 +1,99 @@
1
+ /**
2
+ * @jest-environment jsdom
3
+ */
4
+ import {
5
+ createRefinementListTests,
6
+ createHierarchicalMenuTests,
7
+ createMenuTests,
8
+ createPaginationTests,
9
+ } from '@instantsearch/tests';
10
+
11
+ import { nextTick, mountApp } from '../../test/utils';
12
+ import { renderCompat } from '../util/vue-compat';
13
+ import {
14
+ AisInstantSearch,
15
+ AisRefinementList,
16
+ AisHierarchicalMenu,
17
+ AisMenu,
18
+ AisPagination,
19
+ createWidgetMixin,
20
+ } from '../instantsearch';
21
+ jest.unmock('instantsearch.js/es');
22
+
23
+ /**
24
+ * prevent rethrowing InstantSearch errors, so tests can be asserted.
25
+ * IRL this isn't needed, as the error doesn't stop execution.
26
+ */
27
+ const GlobalErrorSwallower = {
28
+ mixins: [createWidgetMixin({ connector: true })],
29
+ mounted() {
30
+ this.instantSearchInstance.on('error', () => {});
31
+ },
32
+ render() {
33
+ return null;
34
+ },
35
+ };
36
+
37
+ createRefinementListTests(async ({ instantSearchOptions, widgetParams }) => {
38
+ mountApp(
39
+ {
40
+ render: renderCompat((h) =>
41
+ h(AisInstantSearch, { props: instantSearchOptions }, [
42
+ h(AisRefinementList, { props: widgetParams }),
43
+ h(GlobalErrorSwallower),
44
+ ])
45
+ ),
46
+ },
47
+ document.body.appendChild(document.createElement('div'))
48
+ );
49
+
50
+ await nextTick();
51
+ });
52
+
53
+ createHierarchicalMenuTests(async ({ instantSearchOptions, widgetParams }) => {
54
+ mountApp(
55
+ {
56
+ render: renderCompat((h) =>
57
+ h(AisInstantSearch, { props: instantSearchOptions }, [
58
+ h(AisHierarchicalMenu, { props: widgetParams }),
59
+ h(GlobalErrorSwallower),
60
+ ])
61
+ ),
62
+ },
63
+ document.body.appendChild(document.createElement('div'))
64
+ );
65
+
66
+ await nextTick();
67
+ });
68
+
69
+ createMenuTests(async ({ instantSearchOptions, widgetParams }) => {
70
+ mountApp(
71
+ {
72
+ render: renderCompat((h) =>
73
+ h(AisInstantSearch, { props: instantSearchOptions }, [
74
+ h(AisMenu, { props: widgetParams }),
75
+ h(GlobalErrorSwallower),
76
+ ])
77
+ ),
78
+ },
79
+ document.body.appendChild(document.createElement('div'))
80
+ );
81
+
82
+ await nextTick();
83
+ });
84
+
85
+ createPaginationTests(async ({ instantSearchOptions, widgetParams }) => {
86
+ mountApp(
87
+ {
88
+ render: renderCompat((h) =>
89
+ h(AisInstantSearch, { props: instantSearchOptions }, [
90
+ h(AisPagination, { props: widgetParams }),
91
+ h(GlobalErrorSwallower),
92
+ ])
93
+ ),
94
+ },
95
+ document.body.appendChild(document.createElement('div'))
96
+ );
97
+
98
+ await nextTick();
99
+ });
@@ -88,6 +88,7 @@
88
88
  <a
89
89
  :class="suit('link')"
90
90
  :href="state.createURL(page)"
91
+ :aria-label="`Page ${page + 1}`"
91
92
  @click.prevent="refine(page)"
92
93
  >{{ page + 1 }}</a
93
94
  >
@@ -20,49 +20,56 @@ exports[`renders correctly another page 1`] = `
20
20
  </a>
21
21
  </li>
22
22
  <li class="ais-Pagination-item ais-Pagination-item--page">
23
- <a class="ais-Pagination-link"
23
+ <a aria-label="Page 4"
24
+ class="ais-Pagination-link"
24
25
  href="#"
25
26
  >
26
27
  4
27
28
  </a>
28
29
  </li>
29
30
  <li class="ais-Pagination-item ais-Pagination-item--page">
30
- <a class="ais-Pagination-link"
31
+ <a aria-label="Page 5"
32
+ class="ais-Pagination-link"
31
33
  href="#"
32
34
  >
33
35
  5
34
36
  </a>
35
37
  </li>
36
38
  <li class="ais-Pagination-item ais-Pagination-item--page">
37
- <a class="ais-Pagination-link"
39
+ <a aria-label="Page 6"
40
+ class="ais-Pagination-link"
38
41
  href="#"
39
42
  >
40
43
  6
41
44
  </a>
42
45
  </li>
43
46
  <li class="ais-Pagination-item ais-Pagination-item--page ais-Pagination-item--selected">
44
- <a class="ais-Pagination-link"
47
+ <a aria-label="Page 7"
48
+ class="ais-Pagination-link"
45
49
  href="#"
46
50
  >
47
51
  7
48
52
  </a>
49
53
  </li>
50
54
  <li class="ais-Pagination-item ais-Pagination-item--page">
51
- <a class="ais-Pagination-link"
55
+ <a aria-label="Page 8"
56
+ class="ais-Pagination-link"
52
57
  href="#"
53
58
  >
54
59
  8
55
60
  </a>
56
61
  </li>
57
62
  <li class="ais-Pagination-item ais-Pagination-item--page">
58
- <a class="ais-Pagination-link"
63
+ <a aria-label="Page 9"
64
+ class="ais-Pagination-link"
59
65
  href="#"
60
66
  >
61
67
  9
62
68
  </a>
63
69
  </li>
64
70
  <li class="ais-Pagination-item ais-Pagination-item--page">
65
- <a class="ais-Pagination-link"
71
+ <a aria-label="Page 10"
72
+ class="ais-Pagination-link"
66
73
  href="#"
67
74
  >
68
75
  10
@@ -106,49 +113,56 @@ exports[`renders correctly first page 1`] = `
106
113
  </span>
107
114
  </li>
108
115
  <li class="ais-Pagination-item ais-Pagination-item--page ais-Pagination-item--selected">
109
- <a class="ais-Pagination-link"
116
+ <a aria-label="Page 1"
117
+ class="ais-Pagination-link"
110
118
  href="#"
111
119
  >
112
120
  1
113
121
  </a>
114
122
  </li>
115
123
  <li class="ais-Pagination-item ais-Pagination-item--page">
116
- <a class="ais-Pagination-link"
124
+ <a aria-label="Page 2"
125
+ class="ais-Pagination-link"
117
126
  href="#"
118
127
  >
119
128
  2
120
129
  </a>
121
130
  </li>
122
131
  <li class="ais-Pagination-item ais-Pagination-item--page">
123
- <a class="ais-Pagination-link"
132
+ <a aria-label="Page 3"
133
+ class="ais-Pagination-link"
124
134
  href="#"
125
135
  >
126
136
  3
127
137
  </a>
128
138
  </li>
129
139
  <li class="ais-Pagination-item ais-Pagination-item--page">
130
- <a class="ais-Pagination-link"
140
+ <a aria-label="Page 4"
141
+ class="ais-Pagination-link"
131
142
  href="#"
132
143
  >
133
144
  4
134
145
  </a>
135
146
  </li>
136
147
  <li class="ais-Pagination-item ais-Pagination-item--page">
137
- <a class="ais-Pagination-link"
148
+ <a aria-label="Page 5"
149
+ class="ais-Pagination-link"
138
150
  href="#"
139
151
  >
140
152
  5
141
153
  </a>
142
154
  </li>
143
155
  <li class="ais-Pagination-item ais-Pagination-item--page">
144
- <a class="ais-Pagination-link"
156
+ <a aria-label="Page 6"
157
+ class="ais-Pagination-link"
145
158
  href="#"
146
159
  >
147
160
  6
148
161
  </a>
149
162
  </li>
150
163
  <li class="ais-Pagination-item ais-Pagination-item--page">
151
- <a class="ais-Pagination-link"
164
+ <a aria-label="Page 7"
165
+ class="ais-Pagination-link"
152
166
  href="#"
153
167
  >
154
168
  7
@@ -194,49 +208,56 @@ exports[`renders correctly last page 1`] = `
194
208
  </a>
195
209
  </li>
196
210
  <li class="ais-Pagination-item ais-Pagination-item--page">
197
- <a class="ais-Pagination-link"
211
+ <a aria-label="Page 4"
212
+ class="ais-Pagination-link"
198
213
  href="#"
199
214
  >
200
215
  4
201
216
  </a>
202
217
  </li>
203
218
  <li class="ais-Pagination-item ais-Pagination-item--page">
204
- <a class="ais-Pagination-link"
219
+ <a aria-label="Page 5"
220
+ class="ais-Pagination-link"
205
221
  href="#"
206
222
  >
207
223
  5
208
224
  </a>
209
225
  </li>
210
226
  <li class="ais-Pagination-item ais-Pagination-item--page">
211
- <a class="ais-Pagination-link"
227
+ <a aria-label="Page 6"
228
+ class="ais-Pagination-link"
212
229
  href="#"
213
230
  >
214
231
  6
215
232
  </a>
216
233
  </li>
217
234
  <li class="ais-Pagination-item ais-Pagination-item--page">
218
- <a class="ais-Pagination-link"
235
+ <a aria-label="Page 7"
236
+ class="ais-Pagination-link"
219
237
  href="#"
220
238
  >
221
239
  7
222
240
  </a>
223
241
  </li>
224
242
  <li class="ais-Pagination-item ais-Pagination-item--page">
225
- <a class="ais-Pagination-link"
243
+ <a aria-label="Page 8"
244
+ class="ais-Pagination-link"
226
245
  href="#"
227
246
  >
228
247
  8
229
248
  </a>
230
249
  </li>
231
250
  <li class="ais-Pagination-item ais-Pagination-item--page">
232
- <a class="ais-Pagination-link"
251
+ <a aria-label="Page 9"
252
+ class="ais-Pagination-link"
233
253
  href="#"
234
254
  >
235
255
  9
236
256
  </a>
237
257
  </li>
238
258
  <li class="ais-Pagination-item ais-Pagination-item--page ais-Pagination-item--selected">
239
- <a class="ais-Pagination-link"
259
+ <a aria-label="Page 10"
260
+ class="ais-Pagination-link"
240
261
  href="#"
241
262
  >
242
263
  10
@@ -1133,6 +1133,7 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/instantsear
1133
1133
 
1134
1134
  const resultsState = createSerializedState();
1135
1135
  const state = new SearchParameters(resultsState.state);
1136
+ const localState = new SearchParameters({ index: 'lol' });
1136
1137
  const results = new SearchResults(state, resultsState.results);
1137
1138
 
1138
1139
  instantSearchInstance.hydrate({
@@ -1149,18 +1150,13 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/instantsear
1149
1150
 
1150
1151
  const renderArgs = widget.render.mock.calls[0][0];
1151
1152
 
1152
- expect(renderArgs).toEqual(
1153
- expect.objectContaining({
1154
- state,
1155
- results,
1156
- scopedResults: [
1157
- expect.objectContaining({
1158
- indexId: 'lol',
1159
- results,
1160
- }),
1161
- ],
1162
- })
1163
- );
1153
+ // renders with local state, not the one from results
1154
+ expect(renderArgs.state).toEqual(localState);
1155
+ results._state = localState;
1156
+ expect(renderArgs.results).toEqual(results);
1157
+ expect(renderArgs.scopedResults).toHaveLength(1);
1158
+ expect(renderArgs.scopedResults[0].indexId).toEqual('lol');
1159
+ expect(renderArgs.scopedResults[0].results).toEqual(results);
1164
1160
  });
1165
1161
 
1166
1162
  describe('createURL', () => {