vue-instantsearch 4.10.1 → 4.10.2
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 +7 -5
- package/src/__tests__/common.test.js +26 -0
- package/src/components/Breadcrumb.vue +10 -6
- package/src/components/__tests__/Breadcrumb.js +0 -27
- package/src/components/__tests__/__snapshots__/Breadcrumb.js.snap +6 -58
- 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.2",
|
|
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.2",
|
|
39
39
|
"mitt": "^2.1.0"
|
|
40
40
|
},
|
|
41
41
|
"peerDependencies": {
|
|
@@ -55,8 +55,8 @@
|
|
|
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",
|
|
@@ -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": "aa19955aae2c79b93d5f952832d366e8abff9886"
|
|
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';
|
|
@@ -298,3 +299,28 @@ createRangeInputTests(async ({ instantSearchOptions, widgetParams }) => {
|
|
|
298
299
|
|
|
299
300
|
await nextTick();
|
|
300
301
|
});
|
|
302
|
+
|
|
303
|
+
createInstantSearchTests(({ instantSearchOptions }) => {
|
|
304
|
+
mountApp(
|
|
305
|
+
{
|
|
306
|
+
render: renderCompat((h) =>
|
|
307
|
+
h(AisInstantSearch, { props: instantSearchOptions }, [
|
|
308
|
+
h(GlobalErrorSwallower),
|
|
309
|
+
])
|
|
310
|
+
),
|
|
311
|
+
},
|
|
312
|
+
document.body.appendChild(document.createElement('div'))
|
|
313
|
+
);
|
|
314
|
+
|
|
315
|
+
return {
|
|
316
|
+
algoliaAgents: [
|
|
317
|
+
`instantsearch.js (${
|
|
318
|
+
require('../../../instantsearch.js/package.json').version
|
|
319
|
+
})`,
|
|
320
|
+
`Vue InstantSearch (${
|
|
321
|
+
require('../../../vue-instantsearch/package.json').version
|
|
322
|
+
})`,
|
|
323
|
+
`Vue (${require('../util/vue-compat').version})`,
|
|
324
|
+
],
|
|
325
|
+
};
|
|
326
|
+
});
|
|
@@ -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>
|
|
@@ -95,33 +95,6 @@ it('accepts a transformItems prop', () => {
|
|
|
95
95
|
});
|
|
96
96
|
|
|
97
97
|
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
98
|
it('renders correctly with a selected item', () => {
|
|
126
99
|
__setState({
|
|
127
100
|
...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,41 +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>
|
|
110
|
+
Streaming Media Players
|
|
147
111
|
</li>
|
|
148
112
|
</ul>
|
|
149
113
|
</div>
|
|
@@ -173,9 +137,7 @@ exports[`default render renders correctly with a selected item 1`] = `
|
|
|
173
137
|
>
|
|
174
138
|
>
|
|
175
139
|
</span>
|
|
176
|
-
|
|
177
|
-
Streaming Media Players
|
|
178
|
-
</span>
|
|
140
|
+
Streaming Media Players
|
|
179
141
|
</li>
|
|
180
142
|
</ul>
|
|
181
143
|
</div>
|
|
@@ -209,21 +171,7 @@ exports[`default render renders correctly with an URL for the href 1`] = `
|
|
|
209
171
|
>
|
|
210
172
|
>
|
|
211
173
|
</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>
|
|
174
|
+
Streaming Media Players
|
|
227
175
|
</li>
|
|
228
176
|
</ul>
|
|
229
177
|
</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)
|