vue-instantsearch 4.10.1 → 4.10.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/package.json +8 -6
- package/src/__tests__/common.test.js +29 -0
- package/src/components/Breadcrumb.vue +10 -6
- package/src/components/__tests__/Breadcrumb.js +0 -104
- package/src/components/__tests__/__snapshots__/Breadcrumb.js.snap +5 -87
- package/src/util/__tests__/createServerRootMixin.test.js +57 -0
- package/src/util/createServerRootMixin.js +4 -0
- 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/Breadcrumb.vue.js +1 -1
- package/vue2/es/src/util/createServerRootMixin.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=template&id=7ca53d64&lang.js +1 -1
- package/vue3/es/src/components/Autocomplete.vue_vue&type=template&id=7ca53d64&lang.js.map +1 -1
- package/vue3/es/src/components/Breadcrumb.vue.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=136e0623&lang.js +2 -0
- package/vue3/es/src/components/Breadcrumb.vue_vue&type=template&id=136e0623&lang.js.map +1 -0
- package/vue3/es/src/components/ClearRefinements.vue_vue&type=template&id=1b5799b9&lang.js +1 -1
- package/vue3/es/src/components/ClearRefinements.vue_vue&type=template&id=1b5799b9&lang.js.map +1 -1
- package/vue3/es/src/components/CurrentRefinements.vue_vue&type=template&id=6256a290&lang.js +1 -1
- package/vue3/es/src/components/CurrentRefinements.vue_vue&type=template&id=6256a290&lang.js.map +1 -1
- package/vue3/es/src/components/HierarchicalMenu.vue_vue&type=template&id=3548a9a1&lang.js +1 -1
- package/vue3/es/src/components/HierarchicalMenu.vue_vue&type=template&id=3548a9a1&lang.js.map +1 -1
- package/vue3/es/src/components/HierarchicalMenuList.vue_vue&type=template&id=eb2af574&lang.js +1 -1
- package/vue3/es/src/components/HierarchicalMenuList.vue_vue&type=template&id=eb2af574&lang.js.map +1 -1
- package/vue3/es/src/components/Highlighter.vue_vue&type=template&id=11ec06d9&lang.js +1 -1
- package/vue3/es/src/components/Highlighter.vue_vue&type=template&id=11ec06d9&lang.js.map +1 -1
- package/vue3/es/src/components/Hits.vue_vue&type=template&id=d5fcff04&lang.js +1 -1
- package/vue3/es/src/components/Hits.vue_vue&type=template&id=d5fcff04&lang.js.map +1 -1
- package/vue3/es/src/components/HitsPerPage.vue_vue&type=template&id=654e3b4a&lang.js +1 -1
- package/vue3/es/src/components/HitsPerPage.vue_vue&type=template&id=654e3b4a&lang.js.map +1 -1
- package/vue3/es/src/components/InfiniteHits.vue_vue&type=template&id=0abcf352&lang.js +1 -1
- package/vue3/es/src/components/InfiniteHits.vue_vue&type=template&id=0abcf352&lang.js.map +1 -1
- package/vue3/es/src/components/Menu.vue_vue&type=template&id=577979d0&lang.js +1 -1
- package/vue3/es/src/components/Menu.vue_vue&type=template&id=577979d0&lang.js.map +1 -1
- package/vue3/es/src/components/MenuSelect.vue_vue&type=template&id=12bad393&lang.js +1 -1
- package/vue3/es/src/components/MenuSelect.vue_vue&type=template&id=12bad393&lang.js.map +1 -1
- package/vue3/es/src/components/NumericMenu.vue_vue&type=template&id=ada9761c&lang.js +1 -1
- package/vue3/es/src/components/NumericMenu.vue_vue&type=template&id=ada9761c&lang.js.map +1 -1
- package/vue3/es/src/components/Pagination.vue_vue&type=template&id=455c122a&lang.js +1 -1
- package/vue3/es/src/components/Pagination.vue_vue&type=template&id=455c122a&lang.js.map +1 -1
- package/vue3/es/src/components/Panel.vue_vue&type=template&id=766abb5d&lang.js +1 -1
- package/vue3/es/src/components/Panel.vue_vue&type=template&id=766abb5d&lang.js.map +1 -1
- package/vue3/es/src/components/PoweredBy.vue_vue&type=template&id=85db7eac&lang.js +1 -1
- package/vue3/es/src/components/PoweredBy.vue_vue&type=template&id=85db7eac&lang.js.map +1 -1
- package/vue3/es/src/components/QueryRuleCustomData.vue_vue&type=template&id=31c98630&lang.js +1 -1
- package/vue3/es/src/components/QueryRuleCustomData.vue_vue&type=template&id=31c98630&lang.js.map +1 -1
- package/vue3/es/src/components/RangeInput.vue_vue&type=template&id=2c7c21d8&lang.js +1 -1
- package/vue3/es/src/components/RangeInput.vue_vue&type=template&id=2c7c21d8&lang.js.map +1 -1
- package/vue3/es/src/components/RatingMenu.vue_vue&type=template&id=0fb40347&lang.js +1 -1
- package/vue3/es/src/components/RatingMenu.vue_vue&type=template&id=0fb40347&lang.js.map +1 -1
- package/vue3/es/src/components/RefinementList.vue_vue&type=template&id=00083417&lang.js +1 -1
- package/vue3/es/src/components/RefinementList.vue_vue&type=template&id=00083417&lang.js.map +1 -1
- package/vue3/es/src/components/RelevantSort.vue_vue&type=template&id=0d400606&lang.js +1 -1
- package/vue3/es/src/components/RelevantSort.vue_vue&type=template&id=0d400606&lang.js.map +1 -1
- package/vue3/es/src/components/SearchBox.vue_vue&type=template&id=30bd05ae&lang.js +1 -1
- package/vue3/es/src/components/SearchBox.vue_vue&type=template&id=30bd05ae&lang.js.map +1 -1
- package/vue3/es/src/components/SearchInput.vue_vue&type=template&id=00f0f603&lang.js +1 -1
- package/vue3/es/src/components/SearchInput.vue_vue&type=template&id=00f0f603&lang.js.map +1 -1
- package/vue3/es/src/components/SortBy.vue_vue&type=template&id=6a94a4c1&lang.js +1 -1
- package/vue3/es/src/components/SortBy.vue_vue&type=template&id=6a94a4c1&lang.js.map +1 -1
- package/vue3/es/src/components/StateResults.vue_vue&type=template&id=2ea5b184&lang.js +1 -1
- package/vue3/es/src/components/StateResults.vue_vue&type=template&id=2ea5b184&lang.js.map +1 -1
- package/vue3/es/src/components/Stats.vue_vue&type=template&id=05ff9d6a&lang.js +1 -1
- package/vue3/es/src/components/Stats.vue_vue&type=template&id=05ff9d6a&lang.js.map +1 -1
- package/vue3/es/src/components/ToggleRefinement.vue_vue&type=template&id=461db228&lang.js +1 -1
- package/vue3/es/src/components/ToggleRefinement.vue_vue&type=template&id=461db228&lang.js.map +1 -1
- package/vue3/es/src/components/VoiceSearch.vue_vue&type=template&id=1cf17560&lang.js +1 -1
- package/vue3/es/src/components/VoiceSearch.vue_vue&type=template&id=1cf17560&lang.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/umd/index.js +1 -1
- package/vue3/umd/index.js.map +1 -1
- package/vue3/es/src/components/Breadcrumb.vue_vue&type=template&id=5374ac81&lang.js +0 -2
- package/vue3/es/src/components/Breadcrumb.vue_vue&type=template&id=5374ac81&lang.js.map +0 -1
package/package.json
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"autocomplete"
|
|
17
17
|
],
|
|
18
18
|
"license": "MIT",
|
|
19
|
-
"version": "4.10.
|
|
19
|
+
"version": "4.10.3",
|
|
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.56.
|
|
38
|
+
"instantsearch.js": "4.56.3",
|
|
39
39
|
"mitt": "^2.1.0"
|
|
40
40
|
},
|
|
41
41
|
"peerDependencies": {
|
|
@@ -55,12 +55,12 @@
|
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"@babel/core": "7.15.5",
|
|
57
57
|
"@storybook/vue": "5.3.9",
|
|
58
|
-
"@vue/compiler-sfc": "3.
|
|
59
|
-
"@vue/server-renderer": "3.
|
|
58
|
+
"@vue/compiler-sfc": "3.2.47",
|
|
59
|
+
"@vue/server-renderer": "3.2.47",
|
|
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.13.
|
|
63
|
+
"algoliasearch-helper": "3.13.2",
|
|
64
64
|
"instantsearch.css": "8.0.0",
|
|
65
65
|
"rollup": "1.32.1",
|
|
66
66
|
"rollup-plugin-babel": "4.4.0",
|
|
@@ -75,6 +75,8 @@
|
|
|
75
75
|
"rollup-plugin-vue3": "npm:rollup-plugin-vue@6.0.0",
|
|
76
76
|
"vue": "2.7.14",
|
|
77
77
|
"vue-autosuggest": "1.8.1",
|
|
78
|
+
"vue-i18n": "8.24.4",
|
|
79
|
+
"vue-i18n-vue3": "npm:vue-i18n@^9.2.2",
|
|
78
80
|
"vue-loader": "14.2.2",
|
|
79
81
|
"vue-router": "3.4.3",
|
|
80
82
|
"vue-router4": "npm:vue-router@4.0.0",
|
|
@@ -85,5 +87,5 @@
|
|
|
85
87
|
"vuex": "3.5.1",
|
|
86
88
|
"vuex4": "npm:vuex@4.0.0"
|
|
87
89
|
},
|
|
88
|
-
"gitHead": "
|
|
90
|
+
"gitHead": "f550379829306217e021fd9c538ec4ebd0153b19"
|
|
89
91
|
}
|
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
createInfiniteHitsTests,
|
|
11
11
|
createHitsTests,
|
|
12
12
|
createRangeInputTests,
|
|
13
|
+
createInstantSearchTests,
|
|
13
14
|
} from '@instantsearch/tests';
|
|
14
15
|
|
|
15
16
|
import { nextTick, mountApp } from '../../test/utils';
|
|
@@ -77,8 +78,11 @@ createHierarchicalMenuTests(async ({ instantSearchOptions, widgetParams }) => {
|
|
|
77
78
|
});
|
|
78
79
|
|
|
79
80
|
createBreadcrumbTests(async ({ instantSearchOptions, widgetParams }) => {
|
|
81
|
+
// The passed `transformItems` prop is meant to apply only to the breadcrumb,
|
|
82
|
+
// not the hierarchical menu
|
|
80
83
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
81
84
|
const { transformItems, ...hierarchicalWidgetParams } = widgetParams;
|
|
85
|
+
|
|
82
86
|
mountApp(
|
|
83
87
|
{
|
|
84
88
|
render: renderCompat((h) =>
|
|
@@ -298,3 +302,28 @@ createRangeInputTests(async ({ instantSearchOptions, widgetParams }) => {
|
|
|
298
302
|
|
|
299
303
|
await nextTick();
|
|
300
304
|
});
|
|
305
|
+
|
|
306
|
+
createInstantSearchTests(({ instantSearchOptions }) => {
|
|
307
|
+
mountApp(
|
|
308
|
+
{
|
|
309
|
+
render: renderCompat((h) =>
|
|
310
|
+
h(AisInstantSearch, { props: instantSearchOptions }, [
|
|
311
|
+
h(GlobalErrorSwallower),
|
|
312
|
+
])
|
|
313
|
+
),
|
|
314
|
+
},
|
|
315
|
+
document.body.appendChild(document.createElement('div'))
|
|
316
|
+
);
|
|
317
|
+
|
|
318
|
+
return {
|
|
319
|
+
algoliaAgents: [
|
|
320
|
+
`instantsearch.js (${
|
|
321
|
+
require('../../../instantsearch.js/package.json').version
|
|
322
|
+
})`,
|
|
323
|
+
`Vue InstantSearch (${
|
|
324
|
+
require('../../../vue-instantsearch/package.json').version
|
|
325
|
+
})`,
|
|
326
|
+
`Vue (${require('../util/vue-compat').version})`,
|
|
327
|
+
],
|
|
328
|
+
};
|
|
329
|
+
});
|
|
@@ -24,9 +24,14 @@
|
|
|
24
24
|
>
|
|
25
25
|
<slot name="rootLabel">Home</slot>
|
|
26
26
|
</a>
|
|
27
|
-
<
|
|
27
|
+
<a
|
|
28
|
+
v-else
|
|
29
|
+
:href="state.createURL(null)"
|
|
30
|
+
:class="suit('link')"
|
|
31
|
+
@click.prevent="state.refine(null)"
|
|
32
|
+
>
|
|
28
33
|
<slot name="rootLabel">Home</slot>
|
|
29
|
-
</
|
|
34
|
+
</a>
|
|
30
35
|
</li>
|
|
31
36
|
<li
|
|
32
37
|
v-for="(item, index) in state.items"
|
|
@@ -34,16 +39,15 @@
|
|
|
34
39
|
:class="[suit('item'), isLastItem(index) && suit('item', 'selected')]"
|
|
35
40
|
>
|
|
36
41
|
<span :class="suit('separator')" aria-hidden="true">
|
|
37
|
-
<slot name="separator">></slot>
|
|
38
|
-
|
|
39
|
-
<a
|
|
42
|
+
<slot name="separator">></slot> </span
|
|
43
|
+
><a
|
|
40
44
|
v-if="!isLastItem(index)"
|
|
41
45
|
:href="state.createURL(item.value)"
|
|
42
46
|
:class="suit('link')"
|
|
43
47
|
@click.prevent="state.refine(item.value)"
|
|
44
48
|
>{{ item.label }}</a
|
|
45
49
|
>
|
|
46
|
-
<
|
|
50
|
+
<template v-else>{{ item.label }}</template>
|
|
47
51
|
</li>
|
|
48
52
|
</ul>
|
|
49
53
|
</slot>
|
|
@@ -32,111 +32,7 @@ const defaultProps = {
|
|
|
32
32
|
attributes: ['categories.lvl0', 'categories.lvl1'],
|
|
33
33
|
};
|
|
34
34
|
|
|
35
|
-
it('accepts an attribute prop', () => {
|
|
36
|
-
__setState({
|
|
37
|
-
...defaultState,
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
const wrapper = mount(Breadcrumb, {
|
|
41
|
-
propsData: defaultProps,
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
expect(wrapper.vm.widgetParams.attributes).toEqual([
|
|
45
|
-
'categories.lvl0',
|
|
46
|
-
'categories.lvl1',
|
|
47
|
-
]);
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
it('accepts a separator prop', () => {
|
|
51
|
-
__setState({
|
|
52
|
-
...defaultState,
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
const wrapper = mount(Breadcrumb, {
|
|
56
|
-
propsData: {
|
|
57
|
-
...defaultProps,
|
|
58
|
-
separator: ' ~ ',
|
|
59
|
-
},
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
expect(wrapper.vm.widgetParams.separator).toBe(' ~ ');
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
it('accepts a rootPath prop', () => {
|
|
66
|
-
__setState({
|
|
67
|
-
...defaultState,
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
const wrapper = mount(Breadcrumb, {
|
|
71
|
-
propsData: {
|
|
72
|
-
...defaultProps,
|
|
73
|
-
rootPath: 'TV & Home Theater',
|
|
74
|
-
},
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
expect(wrapper.vm.widgetParams.rootPath).toBe('TV & Home Theater');
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
it('accepts a transformItems prop', () => {
|
|
81
|
-
__setState({
|
|
82
|
-
...defaultState,
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
const transformItems = () => {};
|
|
86
|
-
|
|
87
|
-
const wrapper = mount(Breadcrumb, {
|
|
88
|
-
propsData: {
|
|
89
|
-
...defaultProps,
|
|
90
|
-
transformItems,
|
|
91
|
-
},
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
expect(wrapper.vm.widgetParams.transformItems).toBe(transformItems);
|
|
95
|
-
});
|
|
96
|
-
|
|
97
35
|
describe('default render', () => {
|
|
98
|
-
it('renders correctly', () => {
|
|
99
|
-
__setState({ ...defaultState });
|
|
100
|
-
|
|
101
|
-
const wrapper = mount(Breadcrumb, {
|
|
102
|
-
propsData: defaultProps,
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
expect(wrapper.html()).toMatchSnapshot();
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
it('renders correctly without refinement', () => {
|
|
109
|
-
__setState({
|
|
110
|
-
...defaultState,
|
|
111
|
-
items: [],
|
|
112
|
-
canRefine: false,
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
const wrapper = mount(Breadcrumb, {
|
|
116
|
-
propsData: defaultProps,
|
|
117
|
-
});
|
|
118
|
-
|
|
119
|
-
const selected = wrapper.find('.ais-Breadcrumb-item--selected');
|
|
120
|
-
|
|
121
|
-
expect(selected.text()).toContain('Home');
|
|
122
|
-
expect(wrapper.html()).toMatchSnapshot();
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
it('renders correctly with a selected item', () => {
|
|
126
|
-
__setState({
|
|
127
|
-
...defaultState,
|
|
128
|
-
});
|
|
129
|
-
|
|
130
|
-
const wrapper = mount(Breadcrumb, {
|
|
131
|
-
propsData: defaultProps,
|
|
132
|
-
});
|
|
133
|
-
|
|
134
|
-
const selected = wrapper.find('.ais-Breadcrumb-item--selected');
|
|
135
|
-
|
|
136
|
-
expect(selected.text()).toContain('Streaming Media Players');
|
|
137
|
-
expect(wrapper.html()).toMatchSnapshot();
|
|
138
|
-
});
|
|
139
|
-
|
|
140
36
|
it('renders correctly with an URL for the href', () => {
|
|
141
37
|
__setState({
|
|
142
38
|
...defaultState,
|
|
@@ -65,9 +65,7 @@ exports[`custom rootLabel render renders correctly 1`] = `
|
|
|
65
65
|
>
|
|
66
66
|
>
|
|
67
67
|
</span>
|
|
68
|
-
|
|
69
|
-
Streaming Media Players
|
|
70
|
-
</span>
|
|
68
|
+
Streaming Media Players
|
|
71
69
|
</li>
|
|
72
70
|
</ul>
|
|
73
71
|
</div>
|
|
@@ -77,9 +75,9 @@ exports[`custom rootLabel render renders correctly without refinement 1`] = `
|
|
|
77
75
|
<div class="ais-Breadcrumb ais-Breadcrumb--noRefinement">
|
|
78
76
|
<ul class="ais-Breadcrumb-list">
|
|
79
77
|
<li class="ais-Breadcrumb-item ais-Breadcrumb-item--selected">
|
|
80
|
-
<
|
|
78
|
+
<a class="ais-Breadcrumb-link">
|
|
81
79
|
Home page
|
|
82
|
-
</
|
|
80
|
+
</a>
|
|
83
81
|
</li>
|
|
84
82
|
</ul>
|
|
85
83
|
</div>
|
|
@@ -109,73 +107,7 @@ exports[`custom separator render renders correctly 1`] = `
|
|
|
109
107
|
>
|
|
110
108
|
~~
|
|
111
109
|
</span>
|
|
112
|
-
|
|
113
|
-
Streaming Media Players
|
|
114
|
-
</span>
|
|
115
|
-
</li>
|
|
116
|
-
</ul>
|
|
117
|
-
</div>
|
|
118
|
-
`;
|
|
119
|
-
|
|
120
|
-
exports[`default render renders correctly 1`] = `
|
|
121
|
-
<div class="ais-Breadcrumb">
|
|
122
|
-
<ul class="ais-Breadcrumb-list">
|
|
123
|
-
<li class="ais-Breadcrumb-item">
|
|
124
|
-
<a class="ais-Breadcrumb-link">
|
|
125
|
-
Home
|
|
126
|
-
</a>
|
|
127
|
-
</li>
|
|
128
|
-
<li class="ais-Breadcrumb-item">
|
|
129
|
-
<span aria-hidden="true"
|
|
130
|
-
class="ais-Breadcrumb-separator"
|
|
131
|
-
>
|
|
132
|
-
>
|
|
133
|
-
</span>
|
|
134
|
-
<a class="ais-Breadcrumb-link">
|
|
135
|
-
TV & Home Theater
|
|
136
|
-
</a>
|
|
137
|
-
</li>
|
|
138
|
-
<li class="ais-Breadcrumb-item ais-Breadcrumb-item--selected">
|
|
139
|
-
<span aria-hidden="true"
|
|
140
|
-
class="ais-Breadcrumb-separator"
|
|
141
|
-
>
|
|
142
|
-
>
|
|
143
|
-
</span>
|
|
144
|
-
<span>
|
|
145
|
-
Streaming Media Players
|
|
146
|
-
</span>
|
|
147
|
-
</li>
|
|
148
|
-
</ul>
|
|
149
|
-
</div>
|
|
150
|
-
`;
|
|
151
|
-
|
|
152
|
-
exports[`default render renders correctly with a selected item 1`] = `
|
|
153
|
-
<div class="ais-Breadcrumb">
|
|
154
|
-
<ul class="ais-Breadcrumb-list">
|
|
155
|
-
<li class="ais-Breadcrumb-item">
|
|
156
|
-
<a class="ais-Breadcrumb-link">
|
|
157
|
-
Home
|
|
158
|
-
</a>
|
|
159
|
-
</li>
|
|
160
|
-
<li class="ais-Breadcrumb-item">
|
|
161
|
-
<span aria-hidden="true"
|
|
162
|
-
class="ais-Breadcrumb-separator"
|
|
163
|
-
>
|
|
164
|
-
>
|
|
165
|
-
</span>
|
|
166
|
-
<a class="ais-Breadcrumb-link">
|
|
167
|
-
TV & Home Theater
|
|
168
|
-
</a>
|
|
169
|
-
</li>
|
|
170
|
-
<li class="ais-Breadcrumb-item ais-Breadcrumb-item--selected">
|
|
171
|
-
<span aria-hidden="true"
|
|
172
|
-
class="ais-Breadcrumb-separator"
|
|
173
|
-
>
|
|
174
|
-
>
|
|
175
|
-
</span>
|
|
176
|
-
<span>
|
|
177
|
-
Streaming Media Players
|
|
178
|
-
</span>
|
|
110
|
+
Streaming Media Players
|
|
179
111
|
</li>
|
|
180
112
|
</ul>
|
|
181
113
|
</div>
|
|
@@ -209,21 +141,7 @@ exports[`default render renders correctly with an URL for the href 1`] = `
|
|
|
209
141
|
>
|
|
210
142
|
>
|
|
211
143
|
</span>
|
|
212
|
-
|
|
213
|
-
Streaming Media Players
|
|
214
|
-
</span>
|
|
215
|
-
</li>
|
|
216
|
-
</ul>
|
|
217
|
-
</div>
|
|
218
|
-
`;
|
|
219
|
-
|
|
220
|
-
exports[`default render renders correctly without refinement 1`] = `
|
|
221
|
-
<div class="ais-Breadcrumb ais-Breadcrumb--noRefinement">
|
|
222
|
-
<ul class="ais-Breadcrumb-list">
|
|
223
|
-
<li class="ais-Breadcrumb-item ais-Breadcrumb-item--selected">
|
|
224
|
-
<span>
|
|
225
|
-
Home
|
|
226
|
-
</span>
|
|
144
|
+
Streaming Media Players
|
|
227
145
|
</li>
|
|
228
146
|
</ul>
|
|
229
147
|
</div>
|
|
@@ -21,6 +21,8 @@ import {
|
|
|
21
21
|
SearchParameters,
|
|
22
22
|
SearchResults,
|
|
23
23
|
} from 'algoliasearch-helper';
|
|
24
|
+
import { createI18n } from 'vue-i18n-vue3';
|
|
25
|
+
import VueI18n from 'vue-i18n';
|
|
24
26
|
|
|
25
27
|
jest.unmock('instantsearch.js/es');
|
|
26
28
|
|
|
@@ -489,6 +491,61 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/instantsear
|
|
|
489
491
|
await renderToString(wrapper);
|
|
490
492
|
});
|
|
491
493
|
|
|
494
|
+
it('forwards i18n', async () => {
|
|
495
|
+
const searchClient = createFakeClient();
|
|
496
|
+
|
|
497
|
+
if (isVue2) {
|
|
498
|
+
Vue2.use(VueI18n);
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
const i18n = isVue3 ? createI18n() : new VueI18n();
|
|
502
|
+
|
|
503
|
+
// there are two renders of App, each with an assertion
|
|
504
|
+
expect.assertions(2);
|
|
505
|
+
|
|
506
|
+
const App = {
|
|
507
|
+
mixins: [
|
|
508
|
+
forceIsServerMixin,
|
|
509
|
+
createServerRootMixin({
|
|
510
|
+
searchClient,
|
|
511
|
+
indexName: 'hello',
|
|
512
|
+
}),
|
|
513
|
+
],
|
|
514
|
+
data() {
|
|
515
|
+
expect(this.$i18n).toBe(isVue3 ? i18n.global : i18n);
|
|
516
|
+
return {};
|
|
517
|
+
},
|
|
518
|
+
render: renderCompat((h) =>
|
|
519
|
+
h(InstantSearchSsr, {}, [
|
|
520
|
+
h(Configure, {
|
|
521
|
+
attrs: {
|
|
522
|
+
hitsPerPage: 100,
|
|
523
|
+
},
|
|
524
|
+
}),
|
|
525
|
+
h(SearchBox),
|
|
526
|
+
])
|
|
527
|
+
),
|
|
528
|
+
serverPrefetch() {
|
|
529
|
+
return this.instantsearch.findResultsState({
|
|
530
|
+
component: this,
|
|
531
|
+
renderToString,
|
|
532
|
+
});
|
|
533
|
+
},
|
|
534
|
+
};
|
|
535
|
+
|
|
536
|
+
const wrapper = createSSRApp({
|
|
537
|
+
mixins: [forceIsServerMixin],
|
|
538
|
+
...(isVue2 ? { i18n } : {}),
|
|
539
|
+
render: renderCompat((h) => h(App)),
|
|
540
|
+
});
|
|
541
|
+
|
|
542
|
+
if (isVue3) {
|
|
543
|
+
wrapper.use(i18n);
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
await renderToString(wrapper);
|
|
547
|
+
});
|
|
548
|
+
|
|
492
549
|
if (isVue2) {
|
|
493
550
|
it('forwards props', async () => {
|
|
494
551
|
const searchClient = createFakeClient();
|
|
@@ -26,10 +26,14 @@ function defaultCloneComponent(componentInstance, { mixins = [] } = {}) {
|
|
|
26
26
|
if (componentInstance.$store) {
|
|
27
27
|
app.use(componentInstance.$store);
|
|
28
28
|
}
|
|
29
|
+
if (componentInstance.$i18n) {
|
|
30
|
+
app.use(componentInstance.$i18n);
|
|
31
|
+
}
|
|
29
32
|
} else {
|
|
30
33
|
// copy over global Vue APIs
|
|
31
34
|
options.router = componentInstance.$router;
|
|
32
35
|
options.store = componentInstance.$store;
|
|
36
|
+
options.i18n = componentInstance.$i18n;
|
|
33
37
|
|
|
34
38
|
const Extended = componentInstance.$vnode
|
|
35
39
|
? componentInstance.$vnode.componentOptions.Ctor.extend(options)
|