vue-instantsearch 4.4.0 → 4.5.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 +33 -0
- package/package.json +4 -4
- 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/HitsPerPage.vue +2 -3
- 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/SearchBox.vue +18 -0
- package/src/components/SearchInput.vue +3 -0
- package/src/components/SortBy.vue +2 -3
- package/src/components/ToggleRefinement.vue +3 -10
- package/src/components/VoiceSearch.vue +10 -0
- 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__/SearchBox.js +15 -0
- package/src/components/__tests__/SortBy.js +1 -23
- package/src/components/__tests__/ToggleRefinement.js +4 -33
- package/src/mixins/__mocks__/panel.js +1 -5
- package/src/mixins/__tests__/panel.test.js +18 -40
- package/src/mixins/panel.js +3 -1
- 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/HitsPerPage.vue.js +1 -1
- package/vue2/es/src/components/HitsPerPage.vue.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/SearchBox.vue.js +1 -1
- package/vue2/es/src/components/SearchBox.vue.js.map +1 -1
- package/vue2/es/src/components/SearchInput.vue.js +1 -1
- package/vue2/es/src/components/SearchInput.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/ToggleRefinement.vue.js +1 -1
- package/vue2/es/src/components/ToggleRefinement.vue.js.map +1 -1
- package/vue2/es/src/components/VoiceSearch.vue.js +1 -1
- package/vue2/es/src/components/VoiceSearch.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/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/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/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/SearchBox.vue_vue&type=script&lang.js +1 -1
- package/vue3/es/src/components/SearchBox.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/SearchBox.vue_vue&type=template&id=27029d83&lang.js +1 -1
- package/vue3/es/src/components/SearchBox.vue_vue&type=template&id=27029d83&lang.js.map +1 -1
- package/vue3/es/src/components/SearchInput.vue_vue&type=script&lang.js +1 -1
- package/vue3/es/src/components/SearchInput.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/SearchInput.vue_vue&type=template&id=2eed8ffc&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/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/components/VoiceSearch.vue_vue&type=script&lang.js +1 -1
- package/vue3/es/src/components/VoiceSearch.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/VoiceSearch.vue_vue&type=template&id=24b0f67a&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/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/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,36 @@
|
|
|
1
|
+
# [4.5.0](https://github.com/algolia/vue-instantsearch/compare/v4.4.2...v4.5.0) (2022-09-07)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **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)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* **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))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
## [4.4.2](https://github.com/algolia/vue-instantsearch/compare/v4.4.1...v4.4.2) (2022-07-25)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
* **SearchBox:** forward missing prop queryHook ([#1136](https://github.com/algolia/vue-instantsearch/issues/1136)) ([7f8754d](https://github.com/algolia/vue-instantsearch/commit/7f8754dad73542c976b5218bda9a2db0c21c36a1))
|
|
21
|
+
* **VoiceSearch:** forward missing props language and additionalQueryParameters ([#1136](https://github.com/algolia/vue-instantsearch/issues/1136)) ([7f8754d](https://github.com/algolia/vue-instantsearch/commit/7f8754dad73542c976b5218bda9a2db0c21c36a1)), closes [#1135](https://github.com/algolia/vue-instantsearch/issues/1135)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
## [4.4.1](https://github.com/algolia/vue-instantsearch/compare/v4.4.0...v4.4.1) (2022-07-19)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
### Bug Fixes
|
|
29
|
+
|
|
30
|
+
* **searchbox:** prevent concurrent query updates from state while input is focused ([#1133](https://github.com/algolia/vue-instantsearch/issues/1133)) ([c468c0a](https://github.com/algolia/vue-instantsearch/commit/c468c0aee633358f3fb64e41d7aa73b14b344fd2))
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
1
34
|
# [4.4.0](https://github.com/algolia/vue-instantsearch/compare/v4.3.3...v4.4.0) (2022-06-28)
|
|
2
35
|
|
|
3
36
|
|
package/package.json
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"autocomplete"
|
|
17
17
|
],
|
|
18
18
|
"license": "MIT",
|
|
19
|
-
"version": "4.
|
|
19
|
+
"version": "4.5.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.45.0",
|
|
50
50
|
"mitt": "^2.1.0"
|
|
51
51
|
},
|
|
52
52
|
"peerDependencies": {
|
|
@@ -133,11 +133,11 @@
|
|
|
133
133
|
"bundlesize": [
|
|
134
134
|
{
|
|
135
135
|
"path": "./vue2/umd/index.js",
|
|
136
|
-
"maxSize": "56.
|
|
136
|
+
"maxSize": "56.75 kB"
|
|
137
137
|
},
|
|
138
138
|
{
|
|
139
139
|
"path": "./vue3/umd/index.js",
|
|
140
|
-
"maxSize": "
|
|
140
|
+
"maxSize": "58.00 kB"
|
|
141
141
|
},
|
|
142
142
|
{
|
|
143
143
|
"path": "./vue2/cjs/index.js",
|
|
@@ -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: {
|
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: {
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
:reset-title="resetTitle"
|
|
21
21
|
:class-names="classNames"
|
|
22
22
|
v-model="currentRefinement"
|
|
23
|
+
ref="searchInput"
|
|
23
24
|
>
|
|
24
25
|
<template
|
|
25
26
|
v-slot:loading-indicator
|
|
@@ -119,6 +120,10 @@ export default {
|
|
|
119
120
|
type: String,
|
|
120
121
|
default: undefined,
|
|
121
122
|
},
|
|
123
|
+
queryHook: {
|
|
124
|
+
type: Function,
|
|
125
|
+
default: undefined,
|
|
126
|
+
},
|
|
122
127
|
},
|
|
123
128
|
data() {
|
|
124
129
|
return {
|
|
@@ -128,6 +133,11 @@ export default {
|
|
|
128
133
|
};
|
|
129
134
|
},
|
|
130
135
|
computed: {
|
|
136
|
+
widgetParams() {
|
|
137
|
+
return {
|
|
138
|
+
queryHook: this.queryHook,
|
|
139
|
+
};
|
|
140
|
+
},
|
|
131
141
|
isControlled() {
|
|
132
142
|
return (
|
|
133
143
|
typeof this.value !== 'undefined' ||
|
|
@@ -148,6 +158,14 @@ export default {
|
|
|
148
158
|
this.$emit('update:modelValue', this.model);
|
|
149
159
|
this.state.refine(this.model);
|
|
150
160
|
}
|
|
161
|
+
|
|
162
|
+
// we return the local value if the input is focused to avoid
|
|
163
|
+
// concurrent updates when typing
|
|
164
|
+
const { searchInput } = this.$refs;
|
|
165
|
+
if (searchInput && searchInput.isFocused()) {
|
|
166
|
+
return this.localValue;
|
|
167
|
+
}
|
|
168
|
+
|
|
151
169
|
return this.model || this.state.query || '';
|
|
152
170
|
},
|
|
153
171
|
set(val) {
|
|
@@ -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: {
|
|
@@ -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>
|
|
@@ -100,6 +100,14 @@ export default {
|
|
|
100
100
|
required: false,
|
|
101
101
|
default: undefined,
|
|
102
102
|
},
|
|
103
|
+
language: {
|
|
104
|
+
type: String,
|
|
105
|
+
default: undefined,
|
|
106
|
+
},
|
|
107
|
+
additionalQueryParameters: {
|
|
108
|
+
type: Object,
|
|
109
|
+
default: undefined,
|
|
110
|
+
},
|
|
103
111
|
buttonTitle: {
|
|
104
112
|
type: String,
|
|
105
113
|
required: false,
|
|
@@ -130,6 +138,8 @@ export default {
|
|
|
130
138
|
widgetParams() {
|
|
131
139
|
return {
|
|
132
140
|
searchAsYouSpeak: this.searchAsYouSpeak,
|
|
141
|
+
language: this.language,
|
|
142
|
+
additionalQueryParameters: this.additionalQueryParameters,
|
|
133
143
|
};
|
|
134
144
|
},
|
|
135
145
|
errorNotAllowed() {
|
|
@@ -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
|
-
});
|
|
@@ -325,28 +325,6 @@ describe('default render', () => {
|
|
|
325
325
|
});
|
|
326
326
|
});
|
|
327
327
|
|
|
328
|
-
it('calls the Panel mixin with `canRefine`', async () => {
|
|
329
|
-
__setState({ ...defaultState });
|
|
330
|
-
|
|
331
|
-
const wrapper = mount(Menu, {
|
|
332
|
-
propsData: defaultProps,
|
|
333
|
-
});
|
|
334
|
-
|
|
335
|
-
const mapStateToCanRefine = () =>
|
|
336
|
-
wrapper.vm.mapStateToCanRefine(wrapper.vm.state);
|
|
337
|
-
|
|
338
|
-
expect(mapStateToCanRefine()).toBe(true);
|
|
339
|
-
|
|
340
|
-
await wrapper.setData({
|
|
341
|
-
state: {
|
|
342
|
-
canRefine: false,
|
|
343
|
-
},
|
|
344
|
-
});
|
|
345
|
-
expect(mapStateToCanRefine()).toBe(false);
|
|
346
|
-
|
|
347
|
-
expect(wrapper.vm.mapStateToCanRefine({})).toBe(false);
|
|
348
|
-
});
|
|
349
|
-
|
|
350
328
|
it('exposes send-event method for insights middleware', async () => {
|
|
351
329
|
const sendEvent = jest.fn();
|
|
352
330
|
__setState({
|