vue-instantsearch 4.5.0 → 4.6.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 +11 -0
- package/package.json +5 -5
- package/src/__tests__/index.js +1 -0
- package/src/components/HierarchicalMenuList.vue +4 -1
- package/src/components/InstantSearch.js +5 -0
- package/src/components/StateResults.vue +55 -12
- package/src/components/__tests__/StateResults.js +6 -0
- package/src/components/__tests__/__snapshots__/HierarchicalMenu.js.snap +2 -2
- package/src/components/__tests__/__snapshots__/StateResults.js.snap +6 -0
- package/src/mixins/__mocks__/widget.js +10 -0
- package/src/util/createInstantSearchComponent.js +7 -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/HierarchicalMenuList.vue.js +1 -1
- package/vue2/es/src/components/HierarchicalMenuList.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/StateResults.vue.js +1 -1
- package/vue2/es/src/components/StateResults.vue.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/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/HierarchicalMenuList.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/HierarchicalMenuList.vue_vue&type=template&id=0435b314&lang.js +1 -1
- package/vue3/es/src/components/HierarchicalMenuList.vue_vue&type=template&id=0435b314&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/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 +1 -1
- package/vue3/es/src/components/StateResults.vue_vue&type=template&id=5992f3d5&lang.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/umd/index.js +1 -1
- package/vue3/umd/index.js.map +1 -1
- package/vue2/es/src/connectors/connectStateResults.js +0 -2
- package/vue2/es/src/connectors/connectStateResults.js.map +0 -1
- package/vue3/es/src/connectors/connectStateResults.js +0 -2
- package/vue3/es/src/connectors/connectStateResults.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
# [4.6.0](https://github.com/algolia/vue-instantsearch/compare/v4.5.0...v4.6.0) (2022-10-04)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* **ais-hierarchical-menu:** add css class for link of selected menu item ([#1150](https://github.com/algolia/vue-instantsearch/issues/1150)) ([93dfdc1](https://github.com/algolia/vue-instantsearch/commit/93dfdc159d54fe8f3a5e31721e8533c7c0b6ca81))
|
|
7
|
+
* **InstantSearch:** support onStateChange ([#1149](https://github.com/algolia/vue-instantsearch/issues/1149)) ([badf815](https://github.com/algolia/vue-instantsearch/commit/badf8154f0869ea6449091ac97738e1eb491412b)), closes [#1148](https://github.com/algolia/vue-instantsearch/issues/1148)
|
|
8
|
+
* **StateResults:** give access to status and error ([#1151](https://github.com/algolia/vue-instantsearch/issues/1151)) ([03dea3a](https://github.com/algolia/vue-instantsearch/commit/03dea3a2c540ae05202e269dfa1b92cb7583af9b))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
1
12
|
# [4.5.0](https://github.com/algolia/vue-instantsearch/compare/v4.4.2...v4.5.0) (2022-09-07)
|
|
2
13
|
|
|
3
14
|
|
package/package.json
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"autocomplete"
|
|
17
17
|
],
|
|
18
18
|
"license": "MIT",
|
|
19
|
-
"version": "4.
|
|
19
|
+
"version": "4.6.0",
|
|
20
20
|
"files": [
|
|
21
21
|
"vue2",
|
|
22
22
|
"vue3",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"release": "shipjs prepare"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"instantsearch.js": "^4.
|
|
49
|
+
"instantsearch.js": "^4.47.0",
|
|
50
50
|
"mitt": "^2.1.0"
|
|
51
51
|
},
|
|
52
52
|
"peerDependencies": {
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"@wdio/spec-reporter": "^5.11.7",
|
|
82
82
|
"@wdio/static-server-service": "^5.11.0",
|
|
83
83
|
"algoliasearch": "4.0.1",
|
|
84
|
-
"algoliasearch-helper": "3.10.0",
|
|
84
|
+
"algoliasearch-helper": "^3.10.0",
|
|
85
85
|
"babel-eslint": "10.0.1",
|
|
86
86
|
"babel-jest": "23.6.0",
|
|
87
87
|
"babel-preset-es2015": "6.24.1",
|
|
@@ -133,11 +133,11 @@
|
|
|
133
133
|
"bundlesize": [
|
|
134
134
|
{
|
|
135
135
|
"path": "./vue2/umd/index.js",
|
|
136
|
-
"maxSize": "
|
|
136
|
+
"maxSize": "57.25 kB"
|
|
137
137
|
},
|
|
138
138
|
{
|
|
139
139
|
"path": "./vue3/umd/index.js",
|
|
140
|
-
"maxSize": "58.
|
|
140
|
+
"maxSize": "58.25 kB"
|
|
141
141
|
},
|
|
142
142
|
{
|
|
143
143
|
"path": "./vue2/cjs/index.js",
|
package/src/__tests__/index.js
CHANGED
|
@@ -46,6 +46,10 @@ export default createInstantSearchComponent({
|
|
|
46
46
|
type: Function,
|
|
47
47
|
default: undefined,
|
|
48
48
|
},
|
|
49
|
+
onStateChange: {
|
|
50
|
+
type: Function,
|
|
51
|
+
default: undefined,
|
|
52
|
+
},
|
|
49
53
|
initialUiState: {
|
|
50
54
|
type: Object,
|
|
51
55
|
default: undefined,
|
|
@@ -84,6 +88,7 @@ export default createInstantSearchComponent({
|
|
|
84
88
|
routing: this.routing,
|
|
85
89
|
stalledSearchDelay: this.stalledSearchDelay,
|
|
86
90
|
searchFunction: this.searchFunction,
|
|
91
|
+
onStateChange: this.onStateChange,
|
|
87
92
|
initialUiState: this.initialUiState,
|
|
88
93
|
}),
|
|
89
94
|
};
|
|
@@ -12,34 +12,77 @@
|
|
|
12
12
|
</p>
|
|
13
13
|
<pre>results: {{ Object.keys(state.results) }}</pre>
|
|
14
14
|
<pre>state: {{ Object.keys(state.state) }}</pre>
|
|
15
|
+
<pre>status: {{ state.status }}</pre>
|
|
16
|
+
<pre>error: {{ state.error }}</pre>
|
|
15
17
|
</slot>
|
|
16
18
|
</div>
|
|
17
19
|
</template>
|
|
18
20
|
|
|
19
21
|
<script>
|
|
22
|
+
import { isVue3 } from '../util/vue-compat';
|
|
20
23
|
import { createSuitMixin } from '../mixins/suit';
|
|
21
24
|
import { createWidgetMixin } from '../mixins/widget';
|
|
22
25
|
import { _objectSpread } from '../util/polyfills';
|
|
23
|
-
import connectStateResults from '../connectors/connectStateResults';
|
|
24
26
|
|
|
25
27
|
export default {
|
|
26
28
|
name: 'AisStateResults',
|
|
27
29
|
mixins: [
|
|
28
|
-
createWidgetMixin(
|
|
29
|
-
{
|
|
30
|
-
connector: connectStateResults,
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
$$widgetType: 'ais.stateResults',
|
|
34
|
-
}
|
|
35
|
-
),
|
|
30
|
+
createWidgetMixin({ connector: true }),
|
|
36
31
|
createSuitMixin({ name: 'StateResults' }),
|
|
37
32
|
],
|
|
33
|
+
props: {
|
|
34
|
+
catchError: {
|
|
35
|
+
type: Boolean,
|
|
36
|
+
default: false,
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
data() {
|
|
40
|
+
return {
|
|
41
|
+
renderFn: () => {
|
|
42
|
+
const { status, error } = this.instantSearchInstance;
|
|
43
|
+
const results = this.getParentIndex().getResults();
|
|
44
|
+
const helper = this.getParentIndex().getHelper();
|
|
45
|
+
const state = helper ? helper.state : null;
|
|
46
|
+
|
|
47
|
+
// @MAJOR no longer spread this inside `results`
|
|
48
|
+
this.state = {
|
|
49
|
+
results,
|
|
50
|
+
state,
|
|
51
|
+
status,
|
|
52
|
+
error,
|
|
53
|
+
};
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
},
|
|
57
|
+
created() {
|
|
58
|
+
this.instantSearchInstance.addListener('render', this.renderFn);
|
|
59
|
+
},
|
|
60
|
+
[isVue3 ? 'beforeUnmount' : 'beforeDestroy']() {
|
|
61
|
+
if (this.widget) {
|
|
62
|
+
this.instantSearchInstance.removeListener('render', this.renderFn);
|
|
63
|
+
if (this.errorFn) {
|
|
64
|
+
this.instantSearchInstance.removeListener('error', this.errorFn);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
watch: {
|
|
69
|
+
catchError: {
|
|
70
|
+
immediate: true,
|
|
71
|
+
handler(catchError) {
|
|
72
|
+
if (catchError) {
|
|
73
|
+
this.errorFn = () => {};
|
|
74
|
+
this.instantSearchInstance.addListener('error', this.errorFn);
|
|
75
|
+
} else if (this.errorFn) {
|
|
76
|
+
this.instantSearchInstance.removeListener('error', this.errorFn);
|
|
77
|
+
this.errorFn = undefined;
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
},
|
|
38
82
|
computed: {
|
|
39
83
|
stateResults() {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
return _objectSpread({}, results, { results, state });
|
|
84
|
+
const { results, state, status, error } = this.state;
|
|
85
|
+
return _objectSpread({}, results, { results, state, status, error });
|
|
43
86
|
},
|
|
44
87
|
},
|
|
45
88
|
};
|
|
@@ -13,6 +13,8 @@ it('renders explanation if no slot is used', () => {
|
|
|
13
13
|
state: {
|
|
14
14
|
query: 'this is the query',
|
|
15
15
|
},
|
|
16
|
+
status: 'idle',
|
|
17
|
+
error: undefined,
|
|
16
18
|
});
|
|
17
19
|
const wrapper = mount(StateResults);
|
|
18
20
|
expect(wrapper.html()).toMatchSnapshot();
|
|
@@ -39,6 +41,8 @@ it('gives state & results to default slot', () => {
|
|
|
39
41
|
__setState({
|
|
40
42
|
state,
|
|
41
43
|
results,
|
|
44
|
+
status: 'idle',
|
|
45
|
+
error: undefined,
|
|
42
46
|
});
|
|
43
47
|
|
|
44
48
|
mount(StateResults, {
|
|
@@ -47,6 +51,8 @@ it('gives state & results to default slot', () => {
|
|
|
47
51
|
expect(props).toEqual(expect.objectContaining(results));
|
|
48
52
|
expect(props.results).toEqual(results);
|
|
49
53
|
expect(props.state).toEqual(state);
|
|
54
|
+
expect(props.status).toEqual('idle');
|
|
55
|
+
expect(props.error).toEqual(undefined);
|
|
50
56
|
},
|
|
51
57
|
},
|
|
52
58
|
});
|
|
@@ -731,7 +731,7 @@ exports[`default render renders correctly a sub categories selected 1`] = `
|
|
|
731
731
|
<div class="ais-HierarchicalMenu">
|
|
732
732
|
<ul class="ais-HierarchicalMenu-list ais-HierarchicalMenu-list--lvl0">
|
|
733
733
|
<li class="ais-HierarchicalMenu-item ais-HierarchicalMenu-item--parent ais-HierarchicalMenu-item--selected">
|
|
734
|
-
<a class="ais-HierarchicalMenu-link">
|
|
734
|
+
<a class="ais-HierarchicalMenu-link ais-HierarchicalMenu-link--selected">
|
|
735
735
|
<span class="ais-HierarchicalMenu-label">
|
|
736
736
|
Apple
|
|
737
737
|
</span>
|
|
@@ -761,7 +761,7 @@ exports[`default render renders correctly a sub categories selected 1`] = `
|
|
|
761
761
|
</a>
|
|
762
762
|
</li>
|
|
763
763
|
<li class="ais-HierarchicalMenu-item ais-HierarchicalMenu-item--parent ais-HierarchicalMenu-item--selected">
|
|
764
|
-
<a class="ais-HierarchicalMenu-link">
|
|
764
|
+
<a class="ais-HierarchicalMenu-link ais-HierarchicalMenu-link--selected">
|
|
765
765
|
<span class="ais-HierarchicalMenu-label">
|
|
766
766
|
MacBook
|
|
767
767
|
</span>
|
|
@@ -22,6 +22,16 @@ export const createWidgetMixin = jest.fn(() => ({
|
|
|
22
22
|
return {
|
|
23
23
|
state,
|
|
24
24
|
widget,
|
|
25
|
+
instantSearchInstance: {
|
|
26
|
+
status: 'idle',
|
|
27
|
+
error: undefined,
|
|
28
|
+
addListener: () => {},
|
|
29
|
+
removeListener: () => {},
|
|
30
|
+
},
|
|
31
|
+
getParentIndex: () => ({
|
|
32
|
+
getResults: () => null,
|
|
33
|
+
getHelper: () => null,
|
|
34
|
+
}),
|
|
25
35
|
};
|
|
26
36
|
},
|
|
27
37
|
}));
|
|
@@ -30,6 +30,13 @@ export const createInstantSearchComponent = component =>
|
|
|
30
30
|
'Please open a new issue: https://github.com/algolia/vue-instantsearch/issues/new?template=feature.md'
|
|
31
31
|
);
|
|
32
32
|
},
|
|
33
|
+
onStateChange() {
|
|
34
|
+
throw new Error(
|
|
35
|
+
'onStateChange configuration can not be changed dynamically at this point.' +
|
|
36
|
+
'\n\n' +
|
|
37
|
+
'Please open a new issue: https://github.com/algolia/vue-instantsearch/issues/new?template=feature.md'
|
|
38
|
+
);
|
|
39
|
+
},
|
|
33
40
|
searchFunction(searchFunction) {
|
|
34
41
|
// private InstantSearch.js API:
|
|
35
42
|
this.instantSearchInstance._searchFunction = searchFunction;
|