vue-instantsearch 4.3.3 → 4.4.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 +17 -0
- package/package.json +5 -5
- package/src/__tests__/index.js +133 -26
- package/src/components/Autocomplete.vue +8 -1
- package/src/components/Breadcrumb.vue +8 -1
- package/src/components/ClearRefinements.vue +8 -1
- package/src/components/Configure.js +8 -1
- package/src/components/ConfigureRelatedItems.js +8 -1
- package/src/components/CurrentRefinements.vue +8 -1
- package/src/components/DynamicWidgets.js +8 -1
- package/src/components/HierarchicalMenu.vue +8 -1
- package/src/components/Hits.vue +8 -1
- package/src/components/HitsPerPage.vue +8 -1
- package/src/components/Index.js +6 -1
- package/src/components/InfiniteHits.vue +8 -1
- package/src/components/Menu.vue +6 -1
- package/src/components/MenuSelect.vue +6 -1
- package/src/components/NumericMenu.vue +8 -1
- package/src/components/Pagination.vue +9 -1
- package/src/components/QueryRuleContext.js +8 -3
- package/src/components/QueryRuleCustomData.vue +8 -3
- package/src/components/RangeInput.vue +8 -1
- package/src/components/RatingMenu.vue +8 -1
- package/src/components/RefinementList.vue +8 -1
- package/src/components/RelevantSort.vue +8 -1
- package/src/components/SearchBox.vue +8 -1
- package/src/components/SortBy.vue +6 -1
- package/src/components/StateResults.vue +8 -1
- package/src/components/Stats.vue +6 -1
- package/src/components/ToggleRefinement.vue +8 -1
- package/src/components/VoiceSearch.vue +8 -1
- package/src/components/__tests__/__snapshots__/Pagination.js.snap +21 -21
- package/src/mixins/__tests__/widget.test.js +102 -0
- package/src/mixins/widget.js +13 -3
- package/src/util/__tests__/createServerRootMixin.test.js +3 -2
- package/src/util/createServerRootMixin.js +1 -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/Autocomplete.vue.js +1 -1
- package/vue2/es/src/components/Autocomplete.vue.js.map +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/Configure.js +1 -1
- package/vue2/es/src/components/Configure.js.map +1 -1
- package/vue2/es/src/components/ConfigureRelatedItems.js +1 -1
- package/vue2/es/src/components/ConfigureRelatedItems.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/DynamicWidgets.js +1 -1
- package/vue2/es/src/components/DynamicWidgets.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/Hits.vue.js +1 -1
- package/vue2/es/src/components/Hits.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/Index.js +1 -1
- package/vue2/es/src/components/Index.js.map +1 -1
- package/vue2/es/src/components/InfiniteHits.vue.js +1 -1
- package/vue2/es/src/components/InfiniteHits.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/QueryRuleContext.js +1 -1
- package/vue2/es/src/components/QueryRuleContext.js.map +1 -1
- package/vue2/es/src/components/QueryRuleCustomData.vue.js +1 -1
- package/vue2/es/src/components/QueryRuleCustomData.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/RelevantSort.vue.js +1 -1
- package/vue2/es/src/components/RelevantSort.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/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/Stats.vue.js +1 -1
- package/vue2/es/src/components/Stats.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/widget.js +1 -1
- package/vue2/es/src/mixins/widget.js.map +1 -1
- package/vue2/es/src/util/createInstantSearchComponent.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=script&lang.js +1 -1
- package/vue3/es/src/components/Autocomplete.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/Autocomplete.vue_vue&type=template&id=e7c95fd0&lang.js.map +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/Configure.js +1 -1
- package/vue3/es/src/components/Configure.js.map +1 -1
- package/vue3/es/src/components/ConfigureRelatedItems.js +1 -1
- package/vue3/es/src/components/ConfigureRelatedItems.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/DynamicWidgets.js +1 -1
- package/vue3/es/src/components/DynamicWidgets.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.map +1 -1
- package/vue3/es/src/components/Hits.vue_vue&type=script&lang.js +1 -1
- package/vue3/es/src/components/Hits.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/Hits.vue_vue&type=template&id=ef242920&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.map +1 -1
- package/vue3/es/src/components/Index.js +1 -1
- package/vue3/es/src/components/Index.js.map +1 -1
- package/vue3/es/src/components/InfiniteHits.vue_vue&type=script&lang.js +1 -1
- package/vue3/es/src/components/InfiniteHits.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/InfiniteHits.vue_vue&type=template&id=dcfb64b8&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.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 +1 -1
- package/vue3/es/src/components/Pagination.vue_vue&type=template&id=849a166c&lang.js.map +1 -1
- package/vue3/es/src/components/QueryRuleContext.js +1 -1
- package/vue3/es/src/components/QueryRuleContext.js.map +1 -1
- package/vue3/es/src/components/QueryRuleCustomData.vue_vue&type=script&lang.js +1 -1
- package/vue3/es/src/components/QueryRuleCustomData.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/QueryRuleCustomData.vue_vue&type=template&id=e4da0782&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.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.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/RelevantSort.vue_vue&type=script&lang.js +1 -1
- package/vue3/es/src/components/RelevantSort.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/RelevantSort.vue_vue&type=template&id=257b248b&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.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.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.map +1 -1
- package/vue3/es/src/components/Stats.vue_vue&type=script&lang.js +1 -1
- package/vue3/es/src/components/Stats.vue_vue&type=script&lang.js.map +1 -1
- package/vue3/es/src/components/Stats.vue_vue&type=template&id=7337491f&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.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/widget.js +1 -1
- package/vue3/es/src/mixins/widget.js.map +1 -1
- package/vue3/es/src/util/createInstantSearchComponent.js +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,20 @@
|
|
|
1
|
+
# [4.4.0](https://github.com/algolia/vue-instantsearch/compare/v4.3.3...v4.4.0) (2022-06-28)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **ais-hierarchical-menu:** show full hierarchical parent values ([#1126](https://github.com/algolia/vue-instantsearch/issues/1126)) ([51aadf0](https://github.com/algolia/vue-instantsearch/commit/51aadf076e7116637c2046ff903279cafc5222c7))
|
|
7
|
+
* **pagination:** add page class for "page" item ([#1129](https://github.com/algolia/vue-instantsearch/issues/1129)) ([afacf8b](https://github.com/algolia/vue-instantsearch/commit/afacf8b3a9b8f3c99a15c9a31d2524f66142c67f))
|
|
8
|
+
* **ssr:** allow component without mixins to be extended ([#1127](https://github.com/algolia/vue-instantsearch/issues/1127)) ([3b8b887](https://github.com/algolia/vue-instantsearch/commit/3b8b887e918b8f59d92c73b6c57bd6836a99b771))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* **core:** update instantsearch ([69a3aa8](https://github.com/algolia/vue-instantsearch/commit/69a3aa805a3e8f309d4a058c6c2a5c4534eed7ef))
|
|
14
|
+
* **widgets:** pass $$widgetType ([#1121](https://github.com/algolia/vue-instantsearch/issues/1121)) ([7696acc](https://github.com/algolia/vue-instantsearch/commit/7696acc8a30c40c682f3b7df2e82803c388a377f))
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
1
18
|
## [4.3.3](https://github.com/algolia/vue-instantsearch/compare/v4.3.2...v4.3.3) (2022-02-10)
|
|
2
19
|
|
|
3
20
|
|
package/package.json
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"autocomplete"
|
|
17
17
|
],
|
|
18
18
|
"license": "MIT",
|
|
19
|
-
"version": "4.
|
|
19
|
+
"version": "4.4.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.43.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.
|
|
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": "56.
|
|
136
|
+
"maxSize": "56.50 kB"
|
|
137
137
|
},
|
|
138
138
|
{
|
|
139
139
|
"path": "./vue3/umd/index.js",
|
|
140
|
-
"maxSize": "57.
|
|
140
|
+
"maxSize": "57.75 kB"
|
|
141
141
|
},
|
|
142
142
|
{
|
|
143
143
|
"path": "./vue2/cjs/index.js",
|
package/src/__tests__/index.js
CHANGED
|
@@ -1,9 +1,24 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
isVue3,
|
|
3
|
+
isVue2,
|
|
4
|
+
Vue2,
|
|
5
|
+
createApp,
|
|
6
|
+
renderCompat,
|
|
7
|
+
} from '../util/vue-compat';
|
|
2
8
|
import InstantSearch from '../instantsearch';
|
|
9
|
+
import { AisInstantSearch } from '../widgets';
|
|
3
10
|
|
|
4
11
|
const renderlessComponents = ['AisExperimentalConfigureRelatedItems'];
|
|
12
|
+
const nonWidgetComponents = [
|
|
13
|
+
'AisInstantSearch',
|
|
14
|
+
'AisInstantSearchSsr',
|
|
15
|
+
'AisHighlight',
|
|
16
|
+
'AisSnippet',
|
|
17
|
+
'AisPanel',
|
|
18
|
+
'AisPoweredBy',
|
|
19
|
+
];
|
|
5
20
|
|
|
6
|
-
|
|
21
|
+
function getAllComponents() {
|
|
7
22
|
let calls;
|
|
8
23
|
if (isVue3) {
|
|
9
24
|
const app = createApp();
|
|
@@ -16,37 +31,129 @@ it('should have `name` the same as the suit class name everywhere', () => {
|
|
|
16
31
|
calls = Vue2.component.mock.calls;
|
|
17
32
|
}
|
|
18
33
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
34
|
+
return calls.map(([installedName, call]) => {
|
|
35
|
+
const { name, mixins } = call;
|
|
36
|
+
let suitClass = `Error! ${name} is missing the suit classes`;
|
|
37
|
+
let widget = `Error! ${name} is missing the widget`;
|
|
38
|
+
|
|
39
|
+
try {
|
|
40
|
+
suitClass = mixins
|
|
41
|
+
.find(mixin => mixin.methods && mixin.methods.suit)
|
|
42
|
+
.methods.suit();
|
|
43
|
+
} catch (e) {
|
|
44
|
+
/* no suit class, so will fail the assertions */
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
try {
|
|
48
|
+
if (nonWidgetComponents.includes(name)) {
|
|
49
|
+
throw new Error('not a widget');
|
|
32
50
|
}
|
|
33
51
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
52
|
+
const props = {};
|
|
53
|
+
if (name === 'AisHierarchicalMenu' || name === 'AisBreadcrumb') {
|
|
54
|
+
props.attributes = ['attr'];
|
|
55
|
+
} else if (name === 'AisExperimentalConfigureRelatedItems') {
|
|
56
|
+
props.hit = {};
|
|
57
|
+
props.matchingPatterns = {};
|
|
58
|
+
} else if (name === 'AisToggleRefinement') {
|
|
59
|
+
props.attribute = 'attr';
|
|
60
|
+
props.label = 'label';
|
|
61
|
+
props.value = 'value';
|
|
62
|
+
} else if (name === 'AisSortBy') {
|
|
63
|
+
props.items = [];
|
|
64
|
+
} else if (name === 'AisNumericMenu') {
|
|
65
|
+
props.items = [{ label: 'start', start: 1 }];
|
|
66
|
+
props.attribute = 'attr';
|
|
67
|
+
} else if (name === 'AisHitsPerPage') {
|
|
68
|
+
props.items = [{ default: true, label: 'ten', value: 10 }];
|
|
69
|
+
} else if (name === 'AisQueryRuleContext') {
|
|
70
|
+
props.trackedFilters = {};
|
|
71
|
+
} else if (name === 'AisIndex') {
|
|
72
|
+
props.indexName = 'indexName';
|
|
73
|
+
} else {
|
|
74
|
+
props.attribute = 'attr';
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const Component = {
|
|
78
|
+
render: renderCompat(h =>
|
|
79
|
+
h(
|
|
80
|
+
AisInstantSearch,
|
|
81
|
+
{
|
|
82
|
+
props: {
|
|
83
|
+
indexName: 'instant_search',
|
|
84
|
+
searchClient: {
|
|
85
|
+
search() {
|
|
86
|
+
return new Promise({ results: [] });
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
[
|
|
92
|
+
h(call, {
|
|
93
|
+
props,
|
|
94
|
+
ref: 'widgetComponent',
|
|
95
|
+
}),
|
|
96
|
+
]
|
|
97
|
+
)
|
|
98
|
+
),
|
|
38
99
|
};
|
|
100
|
+
|
|
101
|
+
let vm;
|
|
102
|
+
if (isVue2) {
|
|
103
|
+
vm = new Vue2(Component).$mount();
|
|
104
|
+
} else if (isVue3) {
|
|
105
|
+
vm = createApp(Component).mount(document.createElement('div'));
|
|
106
|
+
}
|
|
107
|
+
widget = vm.$refs.widgetComponent.widget;
|
|
108
|
+
} catch (e) {
|
|
109
|
+
/* no widget, so will fail the assertions */
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return {
|
|
113
|
+
installedName,
|
|
114
|
+
name,
|
|
115
|
+
suitClass,
|
|
116
|
+
widget,
|
|
117
|
+
};
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
const components = getAllComponents();
|
|
122
|
+
|
|
123
|
+
describe('DOM component', () => {
|
|
124
|
+
test.each(
|
|
125
|
+
components.filter(
|
|
126
|
+
({ name }) => renderlessComponents.includes(name) === false
|
|
127
|
+
)
|
|
128
|
+
)(
|
|
129
|
+
'$name should have the same `name` as suit class',
|
|
130
|
+
({ name, installedName, suitClass }) => {
|
|
131
|
+
expect(installedName).toBe(name);
|
|
132
|
+
if (name === 'AisInstantSearchSsr') {
|
|
133
|
+
expect(suitClass).toBe(`ais-InstantSearch`);
|
|
134
|
+
} else if (name === 'AisExperimentalDynamicWidgets') {
|
|
135
|
+
expect(suitClass).toBe(`ais-DynamicWidgets`);
|
|
136
|
+
} else {
|
|
137
|
+
expect(suitClass).toBe(`ais-${name.substr(3)}`);
|
|
138
|
+
}
|
|
39
139
|
}
|
|
40
140
|
);
|
|
141
|
+
});
|
|
41
142
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
143
|
+
describe('installed widget', () => {
|
|
144
|
+
test.each(
|
|
145
|
+
components.filter(
|
|
146
|
+
({ name }) => nonWidgetComponents.includes(name) === false
|
|
147
|
+
)
|
|
148
|
+
)('sets widgetType $name', ({ name, widget }) => {
|
|
149
|
+
if (name === 'AisExperimentalDynamicWidgets') {
|
|
150
|
+
expect(widget.$$widgetType).toBe('ais.dynamicWidgets');
|
|
151
|
+
} else if (name === 'AisExperimentalConfigureRelatedItems') {
|
|
152
|
+
expect(widget.$$widgetType).toBe('ais.configureRelatedItems');
|
|
48
153
|
} else {
|
|
49
|
-
expect(
|
|
154
|
+
expect(widget.$$widgetType).toBe(
|
|
155
|
+
`ais.${name[3].toLowerCase()}${name.substr(4)}`
|
|
156
|
+
);
|
|
50
157
|
}
|
|
51
158
|
});
|
|
52
159
|
});
|
|
@@ -28,7 +28,14 @@ import { createSuitMixin } from '../mixins/suit';
|
|
|
28
28
|
export default {
|
|
29
29
|
name: 'AisAutocomplete',
|
|
30
30
|
mixins: [
|
|
31
|
-
createWidgetMixin(
|
|
31
|
+
createWidgetMixin(
|
|
32
|
+
{
|
|
33
|
+
connector: connectAutocomplete,
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
$$widgetType: 'ais.autocomplete',
|
|
37
|
+
}
|
|
38
|
+
),
|
|
32
39
|
createSuitMixin({ name: 'Autocomplete' }),
|
|
33
40
|
],
|
|
34
41
|
props: {
|
|
@@ -56,7 +56,14 @@ import { createWidgetMixin } from '../mixins/widget';
|
|
|
56
56
|
export default {
|
|
57
57
|
name: 'AisBreadcrumb',
|
|
58
58
|
mixins: [
|
|
59
|
-
createWidgetMixin(
|
|
59
|
+
createWidgetMixin(
|
|
60
|
+
{
|
|
61
|
+
connector: connectBreadcrumb,
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
$$widgetType: 'ais.breadcrumb',
|
|
65
|
+
}
|
|
66
|
+
),
|
|
60
67
|
createPanelConsumerMixin({
|
|
61
68
|
mapStateToCanRefine: state => Boolean(state.canRefine),
|
|
62
69
|
}),
|
|
@@ -29,7 +29,14 @@ import { createWidgetMixin } from '../mixins/widget';
|
|
|
29
29
|
export default {
|
|
30
30
|
name: 'AisClearRefinements',
|
|
31
31
|
mixins: [
|
|
32
|
-
createWidgetMixin(
|
|
32
|
+
createWidgetMixin(
|
|
33
|
+
{
|
|
34
|
+
connector: connectClearRefinements,
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
$$widgetType: 'ais.clearRefinements',
|
|
38
|
+
}
|
|
39
|
+
),
|
|
33
40
|
createPanelConsumerMixin({
|
|
34
41
|
mapStateToCanRefine: state => Boolean(state.hasRefinements),
|
|
35
42
|
}),
|
|
@@ -8,7 +8,14 @@ export default {
|
|
|
8
8
|
name: 'AisConfigure',
|
|
9
9
|
mixins: [
|
|
10
10
|
createSuitMixin({ name: 'Configure' }),
|
|
11
|
-
createWidgetMixin(
|
|
11
|
+
createWidgetMixin(
|
|
12
|
+
{
|
|
13
|
+
connector: connectConfigure,
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
$$widgetType: 'ais.configure',
|
|
17
|
+
}
|
|
18
|
+
),
|
|
12
19
|
],
|
|
13
20
|
computed: {
|
|
14
21
|
widgetParams() {
|
|
@@ -5,7 +5,14 @@ export default {
|
|
|
5
5
|
inheritAttrs: false,
|
|
6
6
|
name: 'AisExperimentalConfigureRelatedItems',
|
|
7
7
|
mixins: [
|
|
8
|
-
createWidgetMixin(
|
|
8
|
+
createWidgetMixin(
|
|
9
|
+
{
|
|
10
|
+
connector: EXPERIMENTAL_connectConfigureRelatedItems,
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
$$widgetType: 'ais.configureRelatedItems',
|
|
14
|
+
}
|
|
15
|
+
),
|
|
9
16
|
],
|
|
10
17
|
props: {
|
|
11
18
|
hit: {
|
|
@@ -63,7 +63,14 @@ export default {
|
|
|
63
63
|
name: 'AisCurrentRefinements',
|
|
64
64
|
mixins: [
|
|
65
65
|
createSuitMixin({ name: 'CurrentRefinements' }),
|
|
66
|
-
createWidgetMixin(
|
|
66
|
+
createWidgetMixin(
|
|
67
|
+
{
|
|
68
|
+
connector: connectCurrentRefinements,
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
$$widgetType: 'ais.currentRefinements',
|
|
72
|
+
}
|
|
73
|
+
),
|
|
67
74
|
createPanelConsumerMixin({
|
|
68
75
|
mapStateToCanRefine: state =>
|
|
69
76
|
Boolean(state.items) && state.items.length > 0,
|
|
@@ -42,7 +42,14 @@ function getWidgetAttribute(vnode) {
|
|
|
42
42
|
export default {
|
|
43
43
|
name: 'AisDynamicWidgets',
|
|
44
44
|
mixins: [
|
|
45
|
-
createWidgetMixin(
|
|
45
|
+
createWidgetMixin(
|
|
46
|
+
{
|
|
47
|
+
connector: connectDynamicWidgets,
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
$$widgetType: 'ais.dynamicWidgets',
|
|
51
|
+
}
|
|
52
|
+
),
|
|
46
53
|
createSuitMixin({ name: 'DynamicWidgets' }),
|
|
47
54
|
],
|
|
48
55
|
props: {
|
|
@@ -53,7 +53,14 @@ export default {
|
|
|
53
53
|
name: 'AisHierarchicalMenu',
|
|
54
54
|
mixins: [
|
|
55
55
|
createSuitMixin({ name: 'HierarchicalMenu' }),
|
|
56
|
-
createWidgetMixin(
|
|
56
|
+
createWidgetMixin(
|
|
57
|
+
{
|
|
58
|
+
connector: connectHierarchicalMenu,
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
$$widgetType: 'ais.hierarchicalMenu',
|
|
62
|
+
}
|
|
63
|
+
),
|
|
57
64
|
createPanelConsumerMixin({
|
|
58
65
|
mapStateToCanRefine,
|
|
59
66
|
}),
|
package/src/components/Hits.vue
CHANGED
|
@@ -34,7 +34,14 @@ import { createSuitMixin } from '../mixins/suit';
|
|
|
34
34
|
export default {
|
|
35
35
|
name: 'AisHits',
|
|
36
36
|
mixins: [
|
|
37
|
-
createWidgetMixin(
|
|
37
|
+
createWidgetMixin(
|
|
38
|
+
{
|
|
39
|
+
connector: connectHitsWithInsights,
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
$$widgetType: 'ais.hits',
|
|
43
|
+
}
|
|
44
|
+
),
|
|
38
45
|
createSuitMixin({ name: 'Hits' }),
|
|
39
46
|
],
|
|
40
47
|
props: {
|
|
@@ -34,7 +34,14 @@ export default {
|
|
|
34
34
|
name: 'AisHitsPerPage',
|
|
35
35
|
mixins: [
|
|
36
36
|
createSuitMixin({ name: 'HitsPerPage' }),
|
|
37
|
-
createWidgetMixin(
|
|
37
|
+
createWidgetMixin(
|
|
38
|
+
{
|
|
39
|
+
connector: connectHitsPerPage,
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
$$widgetType: 'ais.hitsPerPage',
|
|
43
|
+
}
|
|
44
|
+
),
|
|
38
45
|
createPanelConsumerMixin({
|
|
39
46
|
mapStateToCanRefine: state => state.hasNoResults === false,
|
|
40
47
|
}),
|
package/src/components/Index.js
CHANGED
|
@@ -10,7 +10,12 @@ export default {
|
|
|
10
10
|
name: 'AisIndex',
|
|
11
11
|
mixins: [
|
|
12
12
|
createSuitMixin({ name: 'Index' }),
|
|
13
|
-
createWidgetMixin(
|
|
13
|
+
createWidgetMixin(
|
|
14
|
+
{ connector: connectIndex },
|
|
15
|
+
{
|
|
16
|
+
$$widgetType: 'ais.index',
|
|
17
|
+
}
|
|
18
|
+
),
|
|
14
19
|
],
|
|
15
20
|
provide() {
|
|
16
21
|
return {
|
|
@@ -68,7 +68,14 @@ import { createSuitMixin } from '../mixins/suit';
|
|
|
68
68
|
export default {
|
|
69
69
|
name: 'AisInfiniteHits',
|
|
70
70
|
mixins: [
|
|
71
|
-
createWidgetMixin(
|
|
71
|
+
createWidgetMixin(
|
|
72
|
+
{
|
|
73
|
+
connector: connectInfiniteHitsWithInsights,
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
$$widgetType: 'ais.infiniteHits',
|
|
77
|
+
}
|
|
78
|
+
),
|
|
72
79
|
createSuitMixin({ name: 'InfiniteHits' }),
|
|
73
80
|
],
|
|
74
81
|
props: {
|
package/src/components/Menu.vue
CHANGED
|
@@ -55,7 +55,12 @@ export default {
|
|
|
55
55
|
name: 'AisMenu',
|
|
56
56
|
mixins: [
|
|
57
57
|
createSuitMixin({ name: 'Menu' }),
|
|
58
|
-
createWidgetMixin(
|
|
58
|
+
createWidgetMixin(
|
|
59
|
+
{ connector: connectMenu },
|
|
60
|
+
{
|
|
61
|
+
$$widgetType: 'ais.menu',
|
|
62
|
+
}
|
|
63
|
+
),
|
|
59
64
|
createPanelConsumerMixin({
|
|
60
65
|
mapStateToCanRefine: state => Boolean(state.canRefine),
|
|
61
66
|
}),
|
|
@@ -47,7 +47,12 @@ export default {
|
|
|
47
47
|
name: 'AisMenuSelect',
|
|
48
48
|
mixins: [
|
|
49
49
|
createSuitMixin({ name: 'MenuSelect' }),
|
|
50
|
-
createWidgetMixin(
|
|
50
|
+
createWidgetMixin(
|
|
51
|
+
{ connector: connectMenu },
|
|
52
|
+
{
|
|
53
|
+
$$widgetType: 'ais.menuSelect',
|
|
54
|
+
}
|
|
55
|
+
),
|
|
51
56
|
createPanelConsumerMixin({
|
|
52
57
|
mapStateToCanRefine: state => Boolean(state.canRefine),
|
|
53
58
|
}),
|
|
@@ -42,7 +42,14 @@ import { createSuitMixin } from '../mixins/suit';
|
|
|
42
42
|
export default {
|
|
43
43
|
name: 'AisNumericMenu',
|
|
44
44
|
mixins: [
|
|
45
|
-
createWidgetMixin(
|
|
45
|
+
createWidgetMixin(
|
|
46
|
+
{
|
|
47
|
+
connector: connectNumericMenu,
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
$$widgetType: 'ais.numericMenu',
|
|
51
|
+
}
|
|
52
|
+
),
|
|
46
53
|
createSuitMixin({ name: 'NumericMenu' }),
|
|
47
54
|
createPanelConsumerMixin({
|
|
48
55
|
mapStateToCanRefine: state => state.hasNoResults === false,
|
|
@@ -78,6 +78,7 @@
|
|
|
78
78
|
<li
|
|
79
79
|
:class="{
|
|
80
80
|
[suit('item')]: true,
|
|
81
|
+
[suit('item', 'page')]: true,
|
|
81
82
|
[suit('item', 'selected')]: state.currentRefinement === page
|
|
82
83
|
}"
|
|
83
84
|
v-for="page in state.pages"
|
|
@@ -174,7 +175,14 @@ export default {
|
|
|
174
175
|
name: 'AisPagination',
|
|
175
176
|
mixins: [
|
|
176
177
|
createSuitMixin({ name: 'Pagination' }),
|
|
177
|
-
createWidgetMixin(
|
|
178
|
+
createWidgetMixin(
|
|
179
|
+
{
|
|
180
|
+
connector: connectPagination,
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
$$widgetType: 'ais.pagination',
|
|
184
|
+
}
|
|
185
|
+
),
|
|
178
186
|
createPanelConsumerMixin({
|
|
179
187
|
mapStateToCanRefine: state => state.nbPages > 1,
|
|
180
188
|
}),
|
|
@@ -6,9 +6,14 @@ export default {
|
|
|
6
6
|
name: 'AisQueryRuleContext',
|
|
7
7
|
mixins: [
|
|
8
8
|
createSuitMixin({ name: 'QueryRuleContext' }),
|
|
9
|
-
createWidgetMixin(
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
createWidgetMixin(
|
|
10
|
+
{
|
|
11
|
+
connector: connectQueryRules,
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
$$widgetType: 'ais.queryRuleContext',
|
|
15
|
+
}
|
|
16
|
+
),
|
|
12
17
|
],
|
|
13
18
|
props: {
|
|
14
19
|
trackedFilters: {
|
|
@@ -28,9 +28,14 @@ export default {
|
|
|
28
28
|
name: 'AisQueryRuleCustomData',
|
|
29
29
|
mixins: [
|
|
30
30
|
createSuitMixin({ name: 'QueryRuleCustomData' }),
|
|
31
|
-
createWidgetMixin(
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
createWidgetMixin(
|
|
32
|
+
{
|
|
33
|
+
connector: connectQueryRules,
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
$$widgetType: 'ais.queryRuleCustomData',
|
|
37
|
+
}
|
|
38
|
+
),
|
|
34
39
|
],
|
|
35
40
|
props: {
|
|
36
41
|
transformItems: {
|
|
@@ -67,7 +67,14 @@ export default {
|
|
|
67
67
|
name: 'AisRangeInput',
|
|
68
68
|
mixins: [
|
|
69
69
|
createSuitMixin({ name: 'RangeInput' }),
|
|
70
|
-
createWidgetMixin(
|
|
70
|
+
createWidgetMixin(
|
|
71
|
+
{
|
|
72
|
+
connector: connectRange,
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
$$widgetType: 'ais.rangeInput',
|
|
76
|
+
}
|
|
77
|
+
),
|
|
71
78
|
createPanelConsumerMixin({
|
|
72
79
|
mapStateToCanRefine,
|
|
73
80
|
}),
|
|
@@ -87,7 +87,14 @@ export default {
|
|
|
87
87
|
name: 'AisRatingMenu',
|
|
88
88
|
mixins: [
|
|
89
89
|
createSuitMixin({ name: 'RatingMenu' }),
|
|
90
|
-
createWidgetMixin(
|
|
90
|
+
createWidgetMixin(
|
|
91
|
+
{
|
|
92
|
+
connector: connectRatingMenu,
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
$$widgetType: 'ais.ratingMenu',
|
|
96
|
+
}
|
|
97
|
+
),
|
|
91
98
|
createPanelConsumerMixin({
|
|
92
99
|
mapStateToCanRefine: state => state.hasNoResults === false,
|
|
93
100
|
}),
|
|
@@ -110,7 +110,14 @@ export default {
|
|
|
110
110
|
components: { SearchInput, AisHighlight },
|
|
111
111
|
mixins: [
|
|
112
112
|
createSuitMixin({ name: 'RefinementList' }),
|
|
113
|
-
createWidgetMixin(
|
|
113
|
+
createWidgetMixin(
|
|
114
|
+
{
|
|
115
|
+
connector: connectRefinementList,
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
$$widgetType: 'ais.refinementList',
|
|
119
|
+
}
|
|
120
|
+
),
|
|
114
121
|
createPanelConsumerMixin({
|
|
115
122
|
mapStateToCanRefine: state => Boolean(state.canRefine),
|
|
116
123
|
}),
|
|
@@ -36,7 +36,14 @@ export default {
|
|
|
36
36
|
name: 'AisRelevantSort',
|
|
37
37
|
mixins: [
|
|
38
38
|
createSuitMixin({ name: 'RelevantSort' }),
|
|
39
|
-
createWidgetMixin(
|
|
39
|
+
createWidgetMixin(
|
|
40
|
+
{
|
|
41
|
+
connector: connectRelevantSort,
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
$$widgetType: 'ais.relevantSort',
|
|
45
|
+
}
|
|
46
|
+
),
|
|
40
47
|
],
|
|
41
48
|
methods: {
|
|
42
49
|
refine() {
|
|
@@ -77,7 +77,14 @@ import SearchInput from './SearchInput.vue';
|
|
|
77
77
|
export default {
|
|
78
78
|
name: 'AisSearchBox',
|
|
79
79
|
mixins: [
|
|
80
|
-
createWidgetMixin(
|
|
80
|
+
createWidgetMixin(
|
|
81
|
+
{
|
|
82
|
+
connector: connectSearchBox,
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
$$widgetType: 'ais.searchBox',
|
|
86
|
+
}
|
|
87
|
+
),
|
|
81
88
|
createSuitMixin({ name: 'SearchBox' }),
|
|
82
89
|
],
|
|
83
90
|
components: {
|
|
@@ -35,7 +35,12 @@ export default {
|
|
|
35
35
|
name: 'AisSortBy',
|
|
36
36
|
mixins: [
|
|
37
37
|
createSuitMixin({ name: 'SortBy' }),
|
|
38
|
-
createWidgetMixin(
|
|
38
|
+
createWidgetMixin(
|
|
39
|
+
{ connector: connectSortBy },
|
|
40
|
+
{
|
|
41
|
+
$$widgetType: 'ais.sortBy',
|
|
42
|
+
}
|
|
43
|
+
),
|
|
39
44
|
|
|
40
45
|
createPanelConsumerMixin({
|
|
41
46
|
mapStateToCanRefine: state => state.hasNoResults === false,
|
|
@@ -25,7 +25,14 @@ import connectStateResults from '../connectors/connectStateResults';
|
|
|
25
25
|
export default {
|
|
26
26
|
name: 'AisStateResults',
|
|
27
27
|
mixins: [
|
|
28
|
-
createWidgetMixin(
|
|
28
|
+
createWidgetMixin(
|
|
29
|
+
{
|
|
30
|
+
connector: connectStateResults,
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
$$widgetType: 'ais.stateResults',
|
|
34
|
+
}
|
|
35
|
+
),
|
|
29
36
|
createSuitMixin({ name: 'StateResults' }),
|
|
30
37
|
],
|
|
31
38
|
computed: {
|