vue-instantsearch 4.12.0 → 4.13.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.
Files changed (65) hide show
  1. package/package.json +3 -3
  2. package/src/__tests__/common-connectors.test.js +86 -21
  3. package/src/__tests__/common-widgets.test.js +75 -0
  4. package/src/components/SearchBox.vue +4 -4
  5. package/src/components/SearchInput.vue +3 -10
  6. package/src/components/SortBy.vue +1 -0
  7. package/src/components/Stats.vue +40 -2
  8. package/src/components/ToggleRefinement.vue +1 -1
  9. package/src/components/__tests__/SearchBox.js +30 -101
  10. package/src/components/__tests__/SortBy.js +0 -53
  11. package/src/components/__tests__/ToggleRefinement.js +0 -132
  12. package/src/components/__tests__/__snapshots__/RefinementList.js.snap +8 -24
  13. package/src/components/__tests__/__snapshots__/SortBy.js.snap +0 -22
  14. package/src/components/__tests__/__snapshots__/ToggleRefinement.js.snap +0 -51
  15. package/src/util/vue-compat/index-vue3.js +3 -2
  16. package/vue2/cjs/index.js +1 -1
  17. package/vue2/cjs/index.js.map +1 -1
  18. package/vue2/es/package.json.js +1 -1
  19. package/vue2/es/src/components/SearchBox.vue_rollup-plugin-vue=script.js +1 -1
  20. package/vue2/es/src/components/SearchInput.vue.js +1 -1
  21. package/vue2/es/src/components/SortBy.vue.js +1 -1
  22. package/vue2/es/src/components/Stats.vue.js +1 -1
  23. package/vue2/es/src/components/Stats.vue_rollup-plugin-vue=script.js +1 -1
  24. package/vue2/es/src/components/ToggleRefinement.vue.js +1 -1
  25. package/vue2/umd/index.js +1 -1
  26. package/vue2/umd/index.js.map +1 -1
  27. package/vue3/cjs/index.js +1 -1
  28. package/vue3/cjs/index.js.map +1 -1
  29. package/vue3/es/package.json.js +1 -1
  30. package/vue3/es/src/components/SearchBox.vue.js +1 -1
  31. package/vue3/es/src/components/SearchBox.vue_vue&type=script&lang.js +1 -1
  32. package/vue3/es/src/components/SearchBox.vue_vue&type=script&lang.js.map +1 -1
  33. package/vue3/es/src/components/{SearchBox.vue_vue&type=template&id=27000fa5&lang.js → SearchBox.vue_vue&type=template&id=47fdc6ba&lang.js} +1 -1
  34. package/vue3/es/src/components/SearchBox.vue_vue&type=template&id=47fdc6ba&lang.js.map +1 -0
  35. package/vue3/es/src/components/SearchInput.vue.js +1 -1
  36. package/vue3/es/src/components/SearchInput.vue_vue&type=script&lang.js.map +1 -1
  37. package/vue3/es/src/components/SearchInput.vue_vue&type=template&id=2e14ab6e&lang.js +2 -0
  38. package/vue3/es/src/components/SearchInput.vue_vue&type=template&id=2e14ab6e&lang.js.map +1 -0
  39. package/vue3/es/src/components/SortBy.vue.js +1 -1
  40. package/vue3/es/src/components/SortBy.vue_vue&type=script&lang.js.map +1 -1
  41. package/vue3/es/src/components/SortBy.vue_vue&type=template&id=78751313&lang.js +2 -0
  42. package/vue3/es/src/components/SortBy.vue_vue&type=template&id=78751313&lang.js.map +1 -0
  43. package/vue3/es/src/components/Stats.vue.js +1 -1
  44. package/vue3/es/src/components/Stats.vue_vue&type=script&lang.js +1 -1
  45. package/vue3/es/src/components/Stats.vue_vue&type=script&lang.js.map +1 -1
  46. package/vue3/es/src/components/Stats.vue_vue&type=template&id=67854642&lang.js +2 -0
  47. package/vue3/es/src/components/Stats.vue_vue&type=template&id=67854642&lang.js.map +1 -0
  48. package/vue3/es/src/components/ToggleRefinement.vue.js +1 -1
  49. package/vue3/es/src/components/ToggleRefinement.vue_vue&type=script&lang.js.map +1 -1
  50. package/vue3/es/src/components/{ToggleRefinement.vue_vue&type=template&id=1e8d14ba&lang.js → ToggleRefinement.vue_vue&type=template&id=4074ad16&lang.js} +2 -2
  51. package/vue3/es/src/components/ToggleRefinement.vue_vue&type=template&id=4074ad16&lang.js.map +1 -0
  52. package/vue3/es/src/util/vue-compat/index-vue3.js +1 -1
  53. package/vue3/es/src/util/vue-compat/index-vue3.js.map +1 -1
  54. package/vue3/umd/index.js +1 -1
  55. package/vue3/umd/index.js.map +1 -1
  56. package/src/components/__tests__/Stats.js +0 -62
  57. package/src/components/__tests__/__snapshots__/SearchBox.js.snap +0 -59
  58. package/vue3/es/src/components/SearchBox.vue_vue&type=template&id=27000fa5&lang.js.map +0 -1
  59. package/vue3/es/src/components/SearchInput.vue_vue&type=template&id=00f0f603&lang.js +0 -2
  60. package/vue3/es/src/components/SearchInput.vue_vue&type=template&id=00f0f603&lang.js.map +0 -1
  61. package/vue3/es/src/components/SortBy.vue_vue&type=template&id=507e7d3a&lang.js +0 -2
  62. package/vue3/es/src/components/SortBy.vue_vue&type=template&id=507e7d3a&lang.js.map +0 -1
  63. package/vue3/es/src/components/Stats.vue_vue&type=template&id=6d9c672c&lang.js +0 -2
  64. package/vue3/es/src/components/Stats.vue_vue&type=template&id=6d9c672c&lang.js.map +0 -1
  65. package/vue3/es/src/components/ToggleRefinement.vue_vue&type=template&id=1e8d14ba&lang.js.map +0 -1
@@ -28,16 +28,6 @@ const defaultProps = {
28
28
  label: 'Free Shipping',
29
29
  };
30
30
 
31
- it('accepts an attribute prop', () => {
32
- __setState({ ...defaultState });
33
-
34
- const wrapper = mount(Toggle, {
35
- propsData: defaultProps,
36
- });
37
-
38
- expect(wrapper.vm.widgetParams.attribute).toBe('free_shipping');
39
- });
40
-
41
31
  it('accepts a label prop', () => {
42
32
  __setState({ ...defaultState });
43
33
 
@@ -48,128 +38,6 @@ it('accepts a label prop', () => {
48
38
  expect(wrapper.vm.widgetParams.label).toBe('Free Shipping');
49
39
  });
50
40
 
51
- it('accepts an on prop', () => {
52
- __setState({ ...defaultState });
53
-
54
- const wrapper = mount(Toggle, {
55
- propsData: {
56
- ...defaultProps,
57
- on: 'somevalue',
58
- },
59
- });
60
-
61
- expect(wrapper.vm.widgetParams.on).toBe('somevalue');
62
- });
63
-
64
- it('accepts an off prop', () => {
65
- __setState({ ...defaultState });
66
-
67
- const wrapper = mount(Toggle, {
68
- propsData: {
69
- ...defaultProps,
70
- off: false,
71
- },
72
- });
73
-
74
- expect(wrapper.vm.widgetParams.off).toBe(false);
75
- });
76
-
77
- describe('default render', () => {
78
- it('renders correctly', () => {
79
- __setState({ ...defaultState });
80
-
81
- const wrapper = mount(Toggle, {
82
- propsData: defaultProps,
83
- });
84
-
85
- expect(wrapper.html()).toMatchSnapshot();
86
- });
87
-
88
- it('renders correctly without refinement (with 0)', () => {
89
- __setState({
90
- ...defaultState,
91
- canRefine: false,
92
- value: {
93
- ...defaultValue,
94
- count: 0,
95
- },
96
- });
97
-
98
- const wrapper = mount(Toggle, {
99
- propsData: defaultProps,
100
- });
101
-
102
- expect(wrapper.html()).toMatchSnapshot();
103
- });
104
-
105
- it('renders correctly without refinement (with null)', () => {
106
- __setState({
107
- ...defaultState,
108
- canRefine: false,
109
- value: {
110
- ...defaultValue,
111
- count: null,
112
- },
113
- });
114
-
115
- const wrapper = mount(Toggle, {
116
- propsData: defaultProps,
117
- });
118
-
119
- expect(wrapper.html()).toMatchSnapshot();
120
- });
121
-
122
- it('renders correctly with the value not selected', () => {
123
- __setState({
124
- ...defaultState,
125
- value: {
126
- ...defaultValue,
127
- isRefined: false,
128
- },
129
- });
130
-
131
- const wrapper = mount(Toggle, {
132
- propsData: defaultProps,
133
- });
134
-
135
- expect(wrapper.find('input').element.checked).toBe(false);
136
- });
137
-
138
- it('renders correctly with the value selected', () => {
139
- __setState({
140
- ...defaultState,
141
- value: {
142
- ...defaultValue,
143
- isRefined: true,
144
- },
145
- });
146
-
147
- const wrapper = mount(Toggle, {
148
- propsData: defaultProps,
149
- });
150
-
151
- expect(wrapper.find('input').element.checked).toBe(true);
152
- });
153
-
154
- it('calls refine on input change', () => {
155
- const refine = jest.fn();
156
-
157
- __setState({
158
- ...defaultState,
159
- refine,
160
- });
161
-
162
- const wrapper = mount(Toggle, {
163
- propsData: defaultProps,
164
- });
165
-
166
- wrapper.find('input').setChecked(true);
167
-
168
- expect(refine).toHaveBeenCalled();
169
- expect(refine).toHaveBeenCalledWith(defaultValue);
170
- });
171
- });
172
-
173
41
  it('exposes send-event method for insights middleware', async () => {
174
42
  const sendEvent = jest.fn();
175
43
  __setState({
@@ -15,7 +15,6 @@ exports[`allows search bar classes override when it's searchable 1`] = `
15
15
  class="ais-SearchBox-input"
16
16
  maxlength="512"
17
17
  placeholder="Search here…"
18
- required="required"
19
18
  spellcheck="false"
20
19
  type="search"
21
20
  >
@@ -26,14 +25,10 @@ exports[`allows search bar classes override when it's searchable 1`] = `
26
25
  <svg aria-hidden="true"
27
26
  class="ais-SearchBox-submitIcon"
28
27
  height="10"
29
- role="img"
30
28
  viewbox="0 0 40 40"
31
29
  width="10"
32
- xmlns="http://www.w3.org/2000/svg"
33
30
  >
34
- <path d="M26.804 29.01c-2.832 2.34-6.465 3.746-10.426 3.746C7.333 32.756 0 25.424 0 16.378 0 7.333 7.333 0 16.378 0c9.046 0 16.378 7.333 16.378 16.378 0 3.96-1.406 7.594-3.746 10.426l10.534 10.534c.607.607.61 1.59-.004 2.202-.61.61-1.597.61-2.202.004L26.804 29.01zm-10.426.627c7.323 0 13.26-5.936 13.26-13.26 0-7.32-5.937-13.257-13.26-13.257C9.056 3.12 3.12 9.056 3.12 16.378c0 7.323 5.936 13.26 13.258 13.26z"
35
- fillrule="evenodd"
36
- >
31
+ <path d="M26.804 29.01c-2.832 2.34-6.465 3.746-10.426 3.746C7.333 32.756 0 25.424 0 16.378 0 7.333 7.333 0 16.378 0c9.046 0 16.378 7.333 16.378 16.378 0 3.96-1.406 7.594-3.746 10.426l10.534 10.534c.607.607.61 1.59-.004 2.202-.61.61-1.597.61-2.202.004L26.804 29.01zm-10.426.627c7.323 0 13.26-5.936 13.26-13.26 0-7.32-5.937-13.257-13.26-13.257C9.056 3.12 3.12 9.056 3.12 16.378c0 7.323 5.936 13.26 13.258 13.26z">
37
32
  </path>
38
33
  </svg>
39
34
  </button>
@@ -44,14 +39,11 @@ exports[`allows search bar classes override when it's searchable 1`] = `
44
39
  >
45
40
  <svg aria-hidden="true"
46
41
  class="ais-SearchBox-resetIcon"
47
- role="img"
48
- style="width: 1em; height: 1em;"
42
+ height="10"
49
43
  viewbox="0 0 20 20"
50
- xmlns="http://www.w3.org/2000/svg"
44
+ width="10"
51
45
  >
52
- <path d="M8.114 10L.944 2.83 0 1.885 1.886 0l.943.943L10 8.113l7.17-7.17.944-.943L20 1.886l-.943.943-7.17 7.17 7.17 7.17.943.944L18.114 20l-.943-.943-7.17-7.17-7.17 7.17-.944.943L0 18.114l.943-.943L8.113 10z"
53
- fillrule="evenodd"
54
- >
46
+ <path d="M8.114 10L.944 2.83 0 1.885 1.886 0l.943.943L10 8.113l7.17-7.17.944-.943L20 1.886l-.943.943-7.17 7.17 7.17 7.17.943.944L18.114 20l-.943-.943-7.17-7.17-7.17 7.17-.944.943L0 18.114l.943-.943L8.113 10z">
55
47
  </path>
56
48
  </svg>
57
49
  </button>
@@ -274,7 +266,6 @@ exports[`renders correctly when it's searchable 1`] = `
274
266
  class="ais-SearchBox-input"
275
267
  maxlength="512"
276
268
  placeholder="Search here…"
277
- required="required"
278
269
  spellcheck="false"
279
270
  type="search"
280
271
  >
@@ -285,14 +276,10 @@ exports[`renders correctly when it's searchable 1`] = `
285
276
  <svg aria-hidden="true"
286
277
  class="ais-SearchBox-submitIcon"
287
278
  height="10"
288
- role="img"
289
279
  viewbox="0 0 40 40"
290
280
  width="10"
291
- xmlns="http://www.w3.org/2000/svg"
292
281
  >
293
- <path d="M26.804 29.01c-2.832 2.34-6.465 3.746-10.426 3.746C7.333 32.756 0 25.424 0 16.378 0 7.333 7.333 0 16.378 0c9.046 0 16.378 7.333 16.378 16.378 0 3.96-1.406 7.594-3.746 10.426l10.534 10.534c.607.607.61 1.59-.004 2.202-.61.61-1.597.61-2.202.004L26.804 29.01zm-10.426.627c7.323 0 13.26-5.936 13.26-13.26 0-7.32-5.937-13.257-13.26-13.257C9.056 3.12 3.12 9.056 3.12 16.378c0 7.323 5.936 13.26 13.258 13.26z"
294
- fillrule="evenodd"
295
- >
282
+ <path d="M26.804 29.01c-2.832 2.34-6.465 3.746-10.426 3.746C7.333 32.756 0 25.424 0 16.378 0 7.333 7.333 0 16.378 0c9.046 0 16.378 7.333 16.378 16.378 0 3.96-1.406 7.594-3.746 10.426l10.534 10.534c.607.607.61 1.59-.004 2.202-.61.61-1.597.61-2.202.004L26.804 29.01zm-10.426.627c7.323 0 13.26-5.936 13.26-13.26 0-7.32-5.937-13.257-13.26-13.257C9.056 3.12 3.12 9.056 3.12 16.378c0 7.323 5.936 13.26 13.258 13.26z">
296
283
  </path>
297
284
  </svg>
298
285
  </button>
@@ -303,14 +290,11 @@ exports[`renders correctly when it's searchable 1`] = `
303
290
  >
304
291
  <svg aria-hidden="true"
305
292
  class="ais-SearchBox-resetIcon"
306
- role="img"
307
- style="width: 1em; height: 1em;"
293
+ height="10"
308
294
  viewbox="0 0 20 20"
309
- xmlns="http://www.w3.org/2000/svg"
295
+ width="10"
310
296
  >
311
- <path d="M8.114 10L.944 2.83 0 1.885 1.886 0l.943.943L10 8.113l7.17-7.17.944-.943L20 1.886l-.943.943-7.17 7.17 7.17 7.17.943.944L18.114 20l-.943-.943-7.17-7.17-7.17 7.17-.944.943L0 18.114l.943-.943L8.113 10z"
312
- fillrule="evenodd"
313
- >
297
+ <path d="M8.114 10L.944 2.83 0 1.885 1.886 0l.943.943L10 8.113l7.17-7.17.944-.943L20 1.886l-.943.943-7.17 7.17 7.17 7.17.943.944L18.114 20l-.943-.943-7.17-7.17-7.17 7.17-.944.943L0 18.114l.943-.943L8.113 10z">
314
298
  </path>
315
299
  </svg>
316
300
  </button>
@@ -1,27 +1,5 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
- exports[`renders correctly 1`] = `
4
- <div class="ais-SortBy">
5
- <select class="ais-SortBy-select">
6
- <option class="ais-SortBy-option"
7
- value="some_index"
8
- >
9
- Relevance
10
- </option>
11
- <option class="ais-SortBy-option"
12
- value="some_index_cool"
13
- >
14
- Coolness ascending
15
- </option>
16
- <option class="ais-SortBy-option"
17
- value="some_index_quality"
18
- >
19
- Quality ascending
20
- </option>
21
- </select>
22
- </div>
23
- `;
24
-
25
3
  exports[`renders with scoped slots 1`] = `
26
4
  <div class="ais-SortBy">
27
5
  <select>
@@ -53,54 +53,3 @@ exports[`custom default render renders correctly without refinement 1`] = `
53
53
  </a>
54
54
  </div>
55
55
  `;
56
-
57
- exports[`default render renders correctly 1`] = `
58
- <div class="ais-ToggleRefinement">
59
- <label class="ais-ToggleRefinement-label">
60
- <input class="ais-ToggleRefinement-checkbox"
61
- name="free_shipping"
62
- type="checkbox"
63
- value="true"
64
- >
65
- <span class="ais-ToggleRefinement-labelText">
66
- Free Shipping
67
- </span>
68
- <span class="ais-ToggleRefinement-count">
69
- 100
70
- </span>
71
- </label>
72
- </div>
73
- `;
74
-
75
- exports[`default render renders correctly without refinement (with 0) 1`] = `
76
- <div class="ais-ToggleRefinement ais-ToggleRefinement--noRefinement">
77
- <label class="ais-ToggleRefinement-label">
78
- <input class="ais-ToggleRefinement-checkbox"
79
- name="free_shipping"
80
- type="checkbox"
81
- value="true"
82
- >
83
- <span class="ais-ToggleRefinement-labelText">
84
- Free Shipping
85
- </span>
86
- <span class="ais-ToggleRefinement-count">
87
- 0
88
- </span>
89
- </label>
90
- </div>
91
- `;
92
-
93
- exports[`default render renders correctly without refinement (with null) 1`] = `
94
- <div class="ais-ToggleRefinement ais-ToggleRefinement--noRefinement">
95
- <label class="ais-ToggleRefinement-label">
96
- <input class="ais-ToggleRefinement-checkbox"
97
- name="free_shipping"
98
- type="checkbox"
99
- value="true"
100
- >
101
- <span class="ais-ToggleRefinement-labelText">
102
- Free Shipping
103
- </span>
104
- </label>
105
- </div>
106
- `;
@@ -14,12 +14,13 @@ export function renderCompat(fn) {
14
14
  (props.attrs || props.props || props.scopedSlots || props.on)
15
15
  ) {
16
16
  // In vue 3, we no longer wrap with `attrs` or `props` key.
17
+ const onPropKeys = Object.keys(props.on || {});
17
18
  const flatProps = Object.assign(
18
19
  {},
19
20
  props,
20
21
  props.attrs,
21
22
  props.props,
22
- Object.keys(props.on || {}).reduce((acc, key) => {
23
+ onPropKeys.reduce((acc, key) => {
23
24
  // eslint-disable-next-line no-param-reassign
24
25
  acc[`on${key[0].toUpperCase()}${key.slice(1)}`] = props.on[key];
25
26
  return acc;
@@ -28,7 +29,7 @@ export function renderCompat(fn) {
28
29
  delete flatProps.attrs;
29
30
  delete flatProps.props;
30
31
  delete flatProps.scopedSlots;
31
- delete flatProps.on;
32
+ onPropKeys.forEach((key) => delete flatProps.on[key]);
32
33
 
33
34
  return Vue.h(
34
35
  tag,