vue-instantsearch 4.4.2 → 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 +25 -0
- package/package.json +5 -5
- package/src/__tests__/index.js +1 -0
- package/src/components/Breadcrumb.vue +1 -3
- package/src/components/ClearRefinements.vue +1 -3
- package/src/components/CurrentRefinements.vue +1 -4
- package/src/components/HierarchicalMenu.vue +3 -11
- package/src/components/HierarchicalMenuList.vue +4 -1
- package/src/components/HitsPerPage.vue +2 -3
- package/src/components/InstantSearch.js +5 -0
- package/src/components/Menu.vue +1 -3
- package/src/components/MenuSelect.vue +1 -3
- package/src/components/NumericMenu.vue +3 -8
- package/src/components/Pagination.vue +1 -3
- package/src/components/RangeInput.vue +3 -11
- package/src/components/RatingMenu.vue +2 -3
- package/src/components/RefinementList.vue +1 -3
- package/src/components/SortBy.vue +2 -3
- package/src/components/StateResults.vue +55 -12
- package/src/components/ToggleRefinement.vue +3 -10
- package/src/components/__tests__/Breadcrumb.js +0 -25
- package/src/components/__tests__/ClearRefinements.js +0 -23
- package/src/components/__tests__/CurrentRefinements.js +0 -17
- package/src/components/__tests__/HierarchicalMenu.js +3 -19
- package/src/components/__tests__/HitsPerPage.js +0 -26
- package/src/components/__tests__/Menu.js +0 -22
- package/src/components/__tests__/MenuSelect.js +0 -23
- package/src/components/__tests__/NumericMenu.js +3 -25
- package/src/components/__tests__/Pagination.js +0 -21
- package/src/components/__tests__/RangeInput.js +1 -34
- package/src/components/__tests__/RatingMenu.js +0 -23
- package/src/components/__tests__/RefinementList.js +0 -23
- package/src/components/__tests__/SortBy.js +1 -23
- package/src/components/__tests__/StateResults.js +6 -0
- package/src/components/__tests__/ToggleRefinement.js +4 -33
- package/src/components/__tests__/__snapshots__/HierarchicalMenu.js.snap +2 -2
- package/src/components/__tests__/__snapshots__/StateResults.js.snap +6 -0
- package/src/mixins/__mocks__/panel.js +1 -5
- package/src/mixins/__mocks__/widget.js +10 -0
- package/src/mixins/__tests__/panel.test.js +18 -40
- package/src/mixins/panel.js +3 -1
- package/src/util/createInstantSearchComponent.js +7 -0
- package/src/util/createServerRootMixin.js +10 -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/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/CurrentRefinements.vue.js +1 -1
- package/vue2/es/src/components/CurrentRefinements.vue.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/HierarchicalMenuList.vue.js +1 -1
- package/vue2/es/src/components/HierarchicalMenuList.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/InstantSearch.js +1 -1
- package/vue2/es/src/components/InstantSearch.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/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/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/ToggleRefinement.vue.js +1 -1
- package/vue2/es/src/components/ToggleRefinement.vue.js.map +1 -1
- package/vue2/es/src/mixins/panel.js +1 -1
- package/vue2/es/src/mixins/panel.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/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/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/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/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 +1 -1
- package/vue3/es/src/components/HierarchicalMenu.vue_vue&type=template&id=4361a0b8&lang.js.map +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/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 +1 -1
- package/vue3/es/src/components/HitsPerPage.vue_vue&type=template&id=74f3ac28&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/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 +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.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 +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 +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/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 +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 +1 -1
- package/vue3/es/src/components/StateResults.vue_vue&type=template&id=5992f3d5&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 +1 -1
- package/vue3/es/src/components/ToggleRefinement.vue_vue&type=template&id=14e4586f&lang.js.map +1 -1
- package/vue3/es/src/mixins/panel.js +1 -1
- package/vue3/es/src/mixins/panel.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/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/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,28 @@
|
|
|
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
|
+
|
|
12
|
+
# [4.5.0](https://github.com/algolia/vue-instantsearch/compare/v4.4.2...v4.5.0) (2022-09-07)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Bug Fixes
|
|
16
|
+
|
|
17
|
+
* **nuxt:** only write $nuxt if it's writable ([#1117](https://github.com/algolia/vue-instantsearch/issues/1117)) ([bdecca9](https://github.com/algolia/vue-instantsearch/commit/bdecca9334322e9405ca21e6c6d51735d3ec042f)), closes [/github.com/algolia/vue-instantsearch/commit/acda29326475bd1b73f12b058a0c02df00b8b239#commitcomment-67430759](https://github.com//github.com/algolia/vue-instantsearch/commit/acda29326475bd1b73f12b058a0c02df00b8b239/issues/commitcomment-67430759)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Features
|
|
21
|
+
|
|
22
|
+
* **can-refine:** provide `canRefine` for multiple widget slots ([#1141](https://github.com/algolia/vue-instantsearch/issues/1141)) ([424316d](https://github.com/algolia/vue-instantsearch/commit/424316d8c6e23d4573c0d6a63c56ef919da864e1))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
1
26
|
## [4.4.2](https://github.com/algolia/vue-instantsearch/compare/v4.4.1...v4.4.2) (2022-07-25)
|
|
2
27
|
|
|
3
28
|
|
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": "
|
|
140
|
+
"maxSize": "58.25 kB"
|
|
141
141
|
},
|
|
142
142
|
{
|
|
143
143
|
"path": "./vue2/cjs/index.js",
|
package/src/__tests__/index.js
CHANGED
|
@@ -37,9 +37,7 @@ export default {
|
|
|
37
37
|
$$widgetType: 'ais.clearRefinements',
|
|
38
38
|
}
|
|
39
39
|
),
|
|
40
|
-
createPanelConsumerMixin(
|
|
41
|
-
mapStateToCanRefine: state => Boolean(state.hasRefinements),
|
|
42
|
-
}),
|
|
40
|
+
createPanelConsumerMixin(),
|
|
43
41
|
createSuitMixin({ name: 'ClearRefinements' }),
|
|
44
42
|
],
|
|
45
43
|
props: {
|
|
@@ -71,10 +71,7 @@ export default {
|
|
|
71
71
|
$$widgetType: 'ais.currentRefinements',
|
|
72
72
|
}
|
|
73
73
|
),
|
|
74
|
-
createPanelConsumerMixin(
|
|
75
|
-
mapStateToCanRefine: state =>
|
|
76
|
-
Boolean(state.items) && state.items.length > 0,
|
|
77
|
-
}),
|
|
74
|
+
createPanelConsumerMixin(),
|
|
78
75
|
],
|
|
79
76
|
props: {
|
|
80
77
|
includedAttributes: {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div
|
|
3
3
|
v-if="state"
|
|
4
|
-
:class="[suit(), !canRefine && suit('', 'noRefinement')]"
|
|
4
|
+
:class="[suit(), !state.canRefine && suit('', 'noRefinement')]"
|
|
5
5
|
>
|
|
6
6
|
<slot
|
|
7
7
|
:items="state.items"
|
|
8
|
-
:can-refine="canRefine"
|
|
8
|
+
:can-refine="state.canRefine"
|
|
9
9
|
:can-toggle-show-more="state.canToggleShowMore"
|
|
10
10
|
:is-showing-more="state.isShowingMore"
|
|
11
11
|
:refine="state.refine"
|
|
@@ -46,9 +46,6 @@ import { createPanelConsumerMixin } from '../mixins/panel';
|
|
|
46
46
|
import HierarchicalMenuList from './HierarchicalMenuList.vue';
|
|
47
47
|
import { createSuitMixin } from '../mixins/suit';
|
|
48
48
|
|
|
49
|
-
const mapStateToCanRefine = state =>
|
|
50
|
-
Boolean(state.items) && state.items.length > 0;
|
|
51
|
-
|
|
52
49
|
export default {
|
|
53
50
|
name: 'AisHierarchicalMenu',
|
|
54
51
|
mixins: [
|
|
@@ -61,9 +58,7 @@ export default {
|
|
|
61
58
|
$$widgetType: 'ais.hierarchicalMenu',
|
|
62
59
|
}
|
|
63
60
|
),
|
|
64
|
-
createPanelConsumerMixin(
|
|
65
|
-
mapStateToCanRefine,
|
|
66
|
-
}),
|
|
61
|
+
createPanelConsumerMixin(),
|
|
67
62
|
],
|
|
68
63
|
components: {
|
|
69
64
|
HierarchicalMenuList,
|
|
@@ -120,9 +115,6 @@ export default {
|
|
|
120
115
|
transformItems: this.transformItems,
|
|
121
116
|
};
|
|
122
117
|
},
|
|
123
|
-
canRefine() {
|
|
124
|
-
return mapStateToCanRefine(this.state);
|
|
125
|
-
},
|
|
126
118
|
},
|
|
127
119
|
};
|
|
128
120
|
</script>
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
:items="state.items"
|
|
8
8
|
:refine="state.refine"
|
|
9
9
|
:hasNoResults="state.hasNoResults"
|
|
10
|
+
:canRefine="state.canRefine"
|
|
10
11
|
>
|
|
11
12
|
<select
|
|
12
13
|
:class="suit('select')"
|
|
@@ -42,9 +43,7 @@ export default {
|
|
|
42
43
|
$$widgetType: 'ais.hitsPerPage',
|
|
43
44
|
}
|
|
44
45
|
),
|
|
45
|
-
createPanelConsumerMixin(
|
|
46
|
-
mapStateToCanRefine: state => state.hasNoResults === false,
|
|
47
|
-
}),
|
|
46
|
+
createPanelConsumerMixin(),
|
|
48
47
|
],
|
|
49
48
|
props: {
|
|
50
49
|
items: {
|
|
@@ -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
|
};
|
package/src/components/Menu.vue
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div
|
|
3
3
|
v-if="state"
|
|
4
|
-
:class="[suit(), !canRefine && suit('', 'noRefinement')]"
|
|
4
|
+
:class="[suit(), !state.canRefine && suit('', 'noRefinement')]"
|
|
5
5
|
>
|
|
6
6
|
<slot
|
|
7
7
|
:items="state.items"
|
|
8
|
-
:can-refine="canRefine"
|
|
8
|
+
:can-refine="state.canRefine"
|
|
9
9
|
:refine="state.refine"
|
|
10
10
|
:createURL="state.createURL"
|
|
11
11
|
:send-event="state.sendEvent"
|
|
@@ -51,9 +51,7 @@ export default {
|
|
|
51
51
|
}
|
|
52
52
|
),
|
|
53
53
|
createSuitMixin({ name: 'NumericMenu' }),
|
|
54
|
-
createPanelConsumerMixin(
|
|
55
|
-
mapStateToCanRefine: state => state.hasNoResults === false,
|
|
56
|
-
}),
|
|
54
|
+
createPanelConsumerMixin(),
|
|
57
55
|
],
|
|
58
56
|
props: {
|
|
59
57
|
attribute: {
|
|
@@ -77,9 +75,6 @@ export default {
|
|
|
77
75
|
items: this.items,
|
|
78
76
|
};
|
|
79
77
|
},
|
|
80
|
-
canRefine() {
|
|
81
|
-
return !this.state.hasNoResults;
|
|
82
|
-
},
|
|
83
78
|
},
|
|
84
79
|
};
|
|
85
80
|
</script>
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div
|
|
3
3
|
v-if="state"
|
|
4
|
-
:class="[suit(), !canRefine && suit('', 'noRefinement')]"
|
|
4
|
+
:class="[suit(), !state.canRefine && suit('', 'noRefinement')]"
|
|
5
5
|
>
|
|
6
6
|
<slot
|
|
7
7
|
:current-refinement="values"
|
|
8
8
|
:refine="refine"
|
|
9
|
-
:can-refine="canRefine"
|
|
9
|
+
:can-refine="state.canRefine"
|
|
10
10
|
:range="state.range"
|
|
11
11
|
:send-event="state.sendEvent"
|
|
12
12
|
>
|
|
@@ -60,9 +60,6 @@ import { createWidgetMixin } from '../mixins/widget';
|
|
|
60
60
|
import { createPanelConsumerMixin } from '../mixins/panel';
|
|
61
61
|
import { createSuitMixin } from '../mixins/suit';
|
|
62
62
|
|
|
63
|
-
const mapStateToCanRefine = state =>
|
|
64
|
-
state && Boolean(state.range) && state.range.min !== state.range.max;
|
|
65
|
-
|
|
66
63
|
export default {
|
|
67
64
|
name: 'AisRangeInput',
|
|
68
65
|
mixins: [
|
|
@@ -75,9 +72,7 @@ export default {
|
|
|
75
72
|
$$widgetType: 'ais.rangeInput',
|
|
76
73
|
}
|
|
77
74
|
),
|
|
78
|
-
createPanelConsumerMixin(
|
|
79
|
-
mapStateToCanRefine,
|
|
80
|
-
}),
|
|
75
|
+
createPanelConsumerMixin(),
|
|
81
76
|
],
|
|
82
77
|
props: {
|
|
83
78
|
attribute: {
|
|
@@ -119,9 +114,6 @@ export default {
|
|
|
119
114
|
precision: this.precision,
|
|
120
115
|
};
|
|
121
116
|
},
|
|
122
|
-
canRefine() {
|
|
123
|
-
return mapStateToCanRefine(this.state);
|
|
124
|
-
},
|
|
125
117
|
step() {
|
|
126
118
|
return 1 / Math.pow(10, this.precision);
|
|
127
119
|
},
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
:refine="state.refine"
|
|
9
9
|
:createURL="state.createURL"
|
|
10
10
|
:send-event="state.sendEvent"
|
|
11
|
+
:can-refine="state.canRefine"
|
|
11
12
|
>
|
|
12
13
|
<svg
|
|
13
14
|
xmlns="http://www.w3.org/2000/svg"
|
|
@@ -95,9 +96,7 @@ export default {
|
|
|
95
96
|
$$widgetType: 'ais.ratingMenu',
|
|
96
97
|
}
|
|
97
98
|
),
|
|
98
|
-
createPanelConsumerMixin(
|
|
99
|
-
mapStateToCanRefine: state => state.hasNoResults === false,
|
|
100
|
-
}),
|
|
99
|
+
createPanelConsumerMixin(),
|
|
101
100
|
],
|
|
102
101
|
props: {
|
|
103
102
|
attribute: {
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
:has-no-results="state.hasNoResults"
|
|
9
9
|
:refine="state.refine"
|
|
10
10
|
:current-refinement="state.currentRefinement"
|
|
11
|
+
:can-refine="state.canRefine"
|
|
11
12
|
>
|
|
12
13
|
<select
|
|
13
14
|
:class="suit('select')"
|
|
@@ -42,9 +43,7 @@ export default {
|
|
|
42
43
|
}
|
|
43
44
|
),
|
|
44
45
|
|
|
45
|
-
createPanelConsumerMixin(
|
|
46
|
-
mapStateToCanRefine: state => state.hasNoResults === false,
|
|
47
|
-
}),
|
|
46
|
+
createPanelConsumerMixin(),
|
|
48
47
|
],
|
|
49
48
|
props: {
|
|
50
49
|
items: {
|
|
@@ -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
|
};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div
|
|
3
3
|
v-if="state"
|
|
4
|
-
:class="[suit(), !canRefine && suit('', 'noRefinement')]"
|
|
4
|
+
:class="[suit(), !state.canRefine && suit('', 'noRefinement')]"
|
|
5
5
|
>
|
|
6
6
|
<slot
|
|
7
7
|
:value="state.value"
|
|
8
|
-
:can-refine="canRefine"
|
|
8
|
+
:can-refine="state.canRefine"
|
|
9
9
|
:refine="state.refine"
|
|
10
10
|
:createURL="state.createURL"
|
|
11
11
|
:send-event="state.sendEvent"
|
|
@@ -35,8 +35,6 @@ import { createWidgetMixin } from '../mixins/widget';
|
|
|
35
35
|
import { createPanelConsumerMixin } from '../mixins/panel';
|
|
36
36
|
import { createSuitMixin } from '../mixins/suit';
|
|
37
37
|
|
|
38
|
-
const mapStateToCanRefine = state => Boolean(state.value && state.value.count);
|
|
39
|
-
|
|
40
38
|
export default {
|
|
41
39
|
name: 'AisToggleRefinement',
|
|
42
40
|
mixins: [
|
|
@@ -49,9 +47,7 @@ export default {
|
|
|
49
47
|
$$widgetType: 'ais.toggleRefinement',
|
|
50
48
|
}
|
|
51
49
|
),
|
|
52
|
-
createPanelConsumerMixin(
|
|
53
|
-
mapStateToCanRefine,
|
|
54
|
-
}),
|
|
50
|
+
createPanelConsumerMixin(),
|
|
55
51
|
],
|
|
56
52
|
props: {
|
|
57
53
|
attribute: {
|
|
@@ -82,9 +78,6 @@ export default {
|
|
|
82
78
|
off: this.off,
|
|
83
79
|
};
|
|
84
80
|
},
|
|
85
|
-
canRefine() {
|
|
86
|
-
return mapStateToCanRefine(this.state);
|
|
87
|
-
},
|
|
88
81
|
},
|
|
89
82
|
};
|
|
90
83
|
</script>
|
|
@@ -182,31 +182,6 @@ describe('default render', () => {
|
|
|
182
182
|
});
|
|
183
183
|
});
|
|
184
184
|
|
|
185
|
-
describe('panel', () => {
|
|
186
|
-
it('calls the Panel mixin with `canRefine`', async () => {
|
|
187
|
-
__setState({ ...defaultState });
|
|
188
|
-
|
|
189
|
-
const wrapper = mount(Breadcrumb, {
|
|
190
|
-
propsData: defaultProps,
|
|
191
|
-
});
|
|
192
|
-
|
|
193
|
-
const mapStateToCanRefine = () =>
|
|
194
|
-
wrapper.vm.mapStateToCanRefine(wrapper.vm.state);
|
|
195
|
-
|
|
196
|
-
expect(mapStateToCanRefine()).toBe(true);
|
|
197
|
-
|
|
198
|
-
await wrapper.setData({
|
|
199
|
-
state: {
|
|
200
|
-
canRefine: false,
|
|
201
|
-
},
|
|
202
|
-
});
|
|
203
|
-
|
|
204
|
-
expect(mapStateToCanRefine()).toBe(false);
|
|
205
|
-
|
|
206
|
-
expect(wrapper.vm.mapStateToCanRefine({})).toBe(false);
|
|
207
|
-
});
|
|
208
|
-
});
|
|
209
|
-
|
|
210
185
|
describe('custom default render', () => {
|
|
211
186
|
const defaultSlot = `
|
|
212
187
|
<template v-slot="{ items, canRefine, refine, createURL }">
|
|
@@ -187,26 +187,3 @@ describe('custom resetLabel render', () => {
|
|
|
187
187
|
expect(wrapper.html()).toMatchSnapshot();
|
|
188
188
|
});
|
|
189
189
|
});
|
|
190
|
-
|
|
191
|
-
it('calls the Panel mixin with `hasRefinement`', async () => {
|
|
192
|
-
__setState({
|
|
193
|
-
hasRefinements: true,
|
|
194
|
-
});
|
|
195
|
-
|
|
196
|
-
const wrapper = mount(ClearRefinements);
|
|
197
|
-
|
|
198
|
-
const mapStateToCanRefine = () =>
|
|
199
|
-
wrapper.vm.mapStateToCanRefine(wrapper.vm.state);
|
|
200
|
-
|
|
201
|
-
expect(mapStateToCanRefine()).toBe(true);
|
|
202
|
-
|
|
203
|
-
await wrapper.setData({
|
|
204
|
-
state: {
|
|
205
|
-
hasRefinements: false,
|
|
206
|
-
},
|
|
207
|
-
});
|
|
208
|
-
|
|
209
|
-
expect(mapStateToCanRefine()).toBe(false);
|
|
210
|
-
|
|
211
|
-
expect(wrapper.vm.mapStateToCanRefine({})).toBe(false);
|
|
212
|
-
});
|
|
@@ -167,23 +167,6 @@ describe.each([
|
|
|
167
167
|
});
|
|
168
168
|
});
|
|
169
169
|
|
|
170
|
-
it('calls the Panel mixin with `canRefine`', async () => {
|
|
171
|
-
__setState({ items: [{}] });
|
|
172
|
-
|
|
173
|
-
const wrapper = mount(CurrentRefinements);
|
|
174
|
-
|
|
175
|
-
const mapStateToCanRefine = () =>
|
|
176
|
-
wrapper.vm.mapStateToCanRefine(wrapper.vm.state);
|
|
177
|
-
|
|
178
|
-
expect(mapStateToCanRefine()).toBe(true);
|
|
179
|
-
|
|
180
|
-
await wrapper.setData({ state: { items: [] } });
|
|
181
|
-
|
|
182
|
-
expect(mapStateToCanRefine()).toBe(false);
|
|
183
|
-
|
|
184
|
-
expect(wrapper.vm.mapStateToCanRefine({})).toBe(false);
|
|
185
|
-
});
|
|
186
|
-
|
|
187
170
|
it('calls `refine` with a refinement', async () => {
|
|
188
171
|
const spies = [jest.fn(), jest.fn()];
|
|
189
172
|
|
|
@@ -116,6 +116,7 @@ const defaultState = {
|
|
|
116
116
|
createURL: () => {},
|
|
117
117
|
isShowingMore: false,
|
|
118
118
|
canToggleShowMore: true,
|
|
119
|
+
canRefine: true,
|
|
119
120
|
toggleShowMore: () => {},
|
|
120
121
|
sendEvent: () => {},
|
|
121
122
|
};
|
|
@@ -266,6 +267,7 @@ describe('default render', () => {
|
|
|
266
267
|
__setState({
|
|
267
268
|
...defaultState,
|
|
268
269
|
items: [],
|
|
270
|
+
canRefine: false,
|
|
269
271
|
});
|
|
270
272
|
|
|
271
273
|
const wrapper = mount(HierarchicalMenu, {
|
|
@@ -466,25 +468,6 @@ describe('default render', () => {
|
|
|
466
468
|
});
|
|
467
469
|
});
|
|
468
470
|
|
|
469
|
-
it('calls the Panel mixin with `items.length`', async () => {
|
|
470
|
-
__setState({ ...defaultState });
|
|
471
|
-
|
|
472
|
-
const wrapper = mount(HierarchicalMenu, {
|
|
473
|
-
propsData: defaultProps,
|
|
474
|
-
});
|
|
475
|
-
|
|
476
|
-
const mapStateToCanRefine = () =>
|
|
477
|
-
wrapper.vm.mapStateToCanRefine(wrapper.vm.state);
|
|
478
|
-
|
|
479
|
-
expect(mapStateToCanRefine()).toBe(true);
|
|
480
|
-
|
|
481
|
-
await wrapper.setData({ state: { items: [] } });
|
|
482
|
-
|
|
483
|
-
expect(mapStateToCanRefine()).toBe(false);
|
|
484
|
-
|
|
485
|
-
expect(wrapper.vm.mapStateToCanRefine({})).toBe(false);
|
|
486
|
-
});
|
|
487
|
-
|
|
488
471
|
it('exposes send-event method for insights middleware', async () => {
|
|
489
472
|
const sendEvent = jest.fn();
|
|
490
473
|
__setState({
|
|
@@ -574,6 +557,7 @@ describe('custom default render', () => {
|
|
|
574
557
|
__setState({
|
|
575
558
|
...defaultState,
|
|
576
559
|
items: [],
|
|
560
|
+
canRefine: false,
|
|
577
561
|
});
|
|
578
562
|
|
|
579
563
|
const wrapper = mount({
|
|
@@ -76,29 +76,3 @@ it('calls `refine` with the `value` on `change`', async () => {
|
|
|
76
76
|
|
|
77
77
|
expect(wrapper.vm.state.refine).toHaveBeenLastCalledWith(20);
|
|
78
78
|
});
|
|
79
|
-
|
|
80
|
-
it('calls the Panel mixin with `hasNoResults`', async () => {
|
|
81
|
-
__setState({
|
|
82
|
-
...defaultState,
|
|
83
|
-
hasNoResults: false,
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
const wrapper = mount(HitsPerPage, {
|
|
87
|
-
propsData: defaultProps,
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
const mapStateToCanRefine = () =>
|
|
91
|
-
wrapper.vm.mapStateToCanRefine(wrapper.vm.state);
|
|
92
|
-
|
|
93
|
-
expect(mapStateToCanRefine()).toBe(true);
|
|
94
|
-
|
|
95
|
-
await wrapper.setData({
|
|
96
|
-
state: {
|
|
97
|
-
hasNoResults: true,
|
|
98
|
-
},
|
|
99
|
-
});
|
|
100
|
-
|
|
101
|
-
expect(mapStateToCanRefine()).toBe(false);
|
|
102
|
-
|
|
103
|
-
expect(wrapper.vm.mapStateToCanRefine({})).toBe(false);
|
|
104
|
-
});
|