vue-instantsearch 4.14.0 → 4.15.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 (30) hide show
  1. package/package.json +4 -4
  2. package/src/__tests__/common-widgets.test.js +16 -0
  3. package/src/components/RefinementList.vue +3 -2
  4. package/src/components/SearchInput.vue +0 -1
  5. package/src/components/__tests__/NumericMenu.js +0 -51
  6. package/vue2/cjs/index.js +1 -1
  7. package/vue2/cjs/index.js.map +1 -1
  8. package/vue2/es/package.json.js +1 -1
  9. package/vue2/es/src/components/RefinementList.vue.js +1 -1
  10. package/vue2/es/src/components/RefinementList.vue_rollup-plugin-vue=script.js.map +1 -1
  11. package/vue2/umd/index.js +1 -1
  12. package/vue2/umd/index.js.map +1 -1
  13. package/vue3/cjs/index.js +1 -1
  14. package/vue3/cjs/index.js.map +1 -1
  15. package/vue3/es/package.json.js +1 -1
  16. package/vue3/es/src/components/RefinementList.vue.js +1 -1
  17. package/vue3/es/src/components/RefinementList.vue_vue&type=script&lang.js.map +1 -1
  18. package/vue3/es/src/components/RefinementList.vue_vue&type=template&id=e39e9d16&lang.js +2 -0
  19. package/vue3/es/src/components/RefinementList.vue_vue&type=template&id=e39e9d16&lang.js.map +1 -0
  20. package/vue3/es/src/components/SearchInput.vue.js +1 -1
  21. package/vue3/es/src/components/SearchInput.vue_vue&type=script&lang.js.map +1 -1
  22. package/vue3/es/src/components/{SearchInput.vue_vue&type=template&id=02fb82e2&lang.js → SearchInput.vue_vue&type=template&id=79e30e4e&lang.js} +1 -1
  23. package/vue3/es/src/components/SearchInput.vue_vue&type=template&id=79e30e4e&lang.js.map +1 -0
  24. package/vue3/umd/index.js +1 -1
  25. package/vue3/umd/index.js.map +1 -1
  26. package/src/components/__tests__/RefinementList.js +0 -199
  27. package/src/components/__tests__/__snapshots__/RefinementList.js.snap +0 -405
  28. package/vue3/es/src/components/RefinementList.vue_vue&type=template&id=80c1baee&lang.js +0 -2
  29. package/vue3/es/src/components/RefinementList.vue_vue&type=template&id=80c1baee&lang.js.map +0 -1
  30. package/vue3/es/src/components/SearchInput.vue_vue&type=template&id=02fb82e2&lang.js.map +0 -1
@@ -1,199 +0,0 @@
1
- /**
2
- * @jest-environment jsdom
3
- */
4
-
5
- import { mount } from '../../../test/utils';
6
- import { __setState } from '../../mixins/widget';
7
- import RefinementList from '../RefinementList.vue';
8
- import '../../../test/utils/sortedHtmlSerializer';
9
-
10
- jest.unmock('instantsearch.js/es');
11
- jest.mock('../../mixins/widget');
12
- jest.mock('../../mixins/panel');
13
-
14
- const defaultState = {
15
- items: [
16
- {
17
- value: 'yo',
18
- label: 'yo',
19
- highlighted: 'y<mark>o</mark>',
20
- isRefined: false,
21
- count: 20,
22
- },
23
- {
24
- value: 'how',
25
- label: 'how',
26
- highlighted: 'how',
27
- isRefined: false,
28
- count: 10,
29
- },
30
- {
31
- value: 'are',
32
- label: 'are',
33
- highlighted: 'are',
34
- isRefined: false,
35
- count: 8,
36
- },
37
- {
38
- value: 'you',
39
- label: 'you',
40
- highlighted: 'you',
41
- isRefined: false,
42
- count: 9,
43
- },
44
- {
45
- value: 'doing',
46
- label: 'doing',
47
- highlighted: 'doing',
48
- isRefined: false,
49
- count: 100,
50
- },
51
- { value: '?', label: '?', highlighted: '?', isRefined: false, count: 0 },
52
- ],
53
- canRefine: true,
54
- };
55
-
56
- it('renders correctly', () => {
57
- __setState({
58
- ...defaultState,
59
- });
60
- const wrapper = mount(RefinementList, {
61
- propsData: {
62
- attribute: 'something',
63
- },
64
- });
65
-
66
- expect(wrapper.html()).toMatchSnapshot();
67
- });
68
-
69
- it('renders correctly (empty)', () => {
70
- __setState({
71
- items: [],
72
- });
73
- const wrapper = mount(RefinementList, {
74
- propsData: {
75
- attribute: 'something',
76
- },
77
- });
78
- expect(wrapper.html()).toMatchSnapshot();
79
- });
80
-
81
- it("renders correctly when it's searchable", () => {
82
- __setState({
83
- ...defaultState,
84
- });
85
- const wrapper = mount(RefinementList, {
86
- propsData: {
87
- searchable: true,
88
- attribute: 'something',
89
- },
90
- });
91
- expect(wrapper.htmlCompat()).toMatchSnapshot();
92
-
93
- expect(wrapper.find('.ais-SearchBox-input').exists()).toBe(true);
94
- });
95
-
96
- it("allows override of placeholder when it's searchable", () => {
97
- __setState({
98
- ...defaultState,
99
- searchable: true,
100
- });
101
- const placeholder = 'search in dogs';
102
- const wrapper = mount(RefinementList, {
103
- propsData: {
104
- searchable: true,
105
- attribute: 'something',
106
- searchablePlaceholder: placeholder,
107
- },
108
- });
109
-
110
- expect(wrapper.find('.ais-SearchBox-input').attributes('placeholder')).toBe(
111
- placeholder
112
- );
113
- });
114
-
115
- it("allows search bar classes override when it's searchable", () => {
116
- __setState({
117
- ...defaultState,
118
- });
119
- const wrapper = mount(RefinementList, {
120
- propsData: {
121
- searchable: true,
122
- attribute: 'something',
123
- classNames: {
124
- 'ais-SearchBox-form': 'moar-classes',
125
- },
126
- },
127
- });
128
- expect(wrapper.htmlCompat()).toMatchSnapshot();
129
-
130
- expect(wrapper.find('.ais-SearchBox-form').classes('moar-classes')).toBe(
131
- true
132
- );
133
- });
134
-
135
- it("disables show more if can't refine", async () => {
136
- __setState({
137
- ...defaultState,
138
- canToggleShowMore: false,
139
- });
140
- const wrapper = mount(RefinementList, {
141
- propsData: {
142
- attribute: 'something',
143
- showMore: true,
144
- },
145
- });
146
-
147
- const showMore = wrapper.find('.ais-RefinementList-showMore');
148
-
149
- expect(showMore).vueToBeDisabled();
150
- expect(showMore.classes()).toContain('ais-RefinementList-showMore--disabled');
151
-
152
- await wrapper.setData({ state: { canToggleShowMore: true } });
153
- expect(showMore).not.vueToBeDisabled();
154
- expect(showMore.classes()).not.toContain(
155
- 'ais-RefinementList-showMore--disabled'
156
- );
157
- });
158
-
159
- it('behaves correctly', async () => {
160
- __setState({
161
- ...defaultState,
162
- refine: jest.fn(),
163
- });
164
- const wrapper = mount(RefinementList, {
165
- propsData: {
166
- attribute: 'something',
167
- },
168
- });
169
- const checkBox = wrapper.find('input[type="checkbox"]');
170
- await checkBox.setChecked();
171
- expect(wrapper.vm.state.refine).toHaveBeenLastCalledWith('yo');
172
- });
173
-
174
- it('exposes send-event method for insights middleware', async () => {
175
- const sendEvent = jest.fn();
176
- __setState({
177
- ...defaultState,
178
- sendEvent,
179
- });
180
-
181
- const wrapper = mount({
182
- components: { RefinementList },
183
- data() {
184
- return { props: { attribute: 'something' } };
185
- },
186
- template: `
187
- <RefinementList v-bind="props">
188
- <template v-slot="{ sendEvent }">
189
- <div>
190
- <button @click="sendEvent()">Send Event</button>
191
- </div>
192
- </template>
193
- </RefinementList>
194
- `,
195
- });
196
-
197
- await wrapper.find('button').trigger('click');
198
- expect(sendEvent).toHaveBeenCalledTimes(1);
199
- });
@@ -1,405 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`allows search bar classes override when it's searchable 1`] = `
4
- <div class="ais-RefinementList">
5
- <div class="ais-RefinementList-searchBox">
6
- <form action
7
- class="ais-SearchBox-form moar-classes"
8
- novalidate="novalidate"
9
- role="search"
10
- >
11
- <input aria-label="Search"
12
- autocapitalize="off"
13
- autocomplete="off"
14
- autocorrect="off"
15
- class="ais-SearchBox-input"
16
- maxlength="512"
17
- placeholder="Search here…"
18
- spellcheck="false"
19
- type="search"
20
- >
21
- <button class="ais-SearchBox-submit"
22
- title="Search"
23
- type="submit"
24
- >
25
- <svg aria-hidden="true"
26
- class="ais-SearchBox-submitIcon"
27
- height="10"
28
- viewbox="0 0 40 40"
29
- width="10"
30
- >
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">
32
- </path>
33
- </svg>
34
- </button>
35
- <button class="ais-SearchBox-reset"
36
- hidden="hidden"
37
- title="Clear"
38
- type="reset"
39
- >
40
- <svg aria-hidden="true"
41
- class="ais-SearchBox-resetIcon"
42
- height="10"
43
- viewbox="0 0 20 20"
44
- width="10"
45
- >
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">
47
- </path>
48
- </svg>
49
- </button>
50
- </form>
51
- </div>
52
- <ul class="ais-RefinementList-list">
53
- <li class="ais-RefinementList-item">
54
- <label class="ais-RefinementList-label">
55
- <input class="ais-RefinementList-checkbox"
56
- type="checkbox"
57
- value="yo"
58
- >
59
- <span class="ais-RefinementList-labelText">
60
- <span class="ais-Highlight">
61
- y
62
- <mark class="ais-Highlight-highlighted">
63
- o
64
- </mark>
65
- </span>
66
- </span>
67
- <span class="ais-RefinementList-count">
68
- 20
69
- </span>
70
- </label>
71
- </li>
72
- <li class="ais-RefinementList-item">
73
- <label class="ais-RefinementList-label">
74
- <input class="ais-RefinementList-checkbox"
75
- type="checkbox"
76
- value="how"
77
- >
78
- <span class="ais-RefinementList-labelText">
79
- <span class="ais-Highlight">
80
- how
81
- </span>
82
- </span>
83
- <span class="ais-RefinementList-count">
84
- 10
85
- </span>
86
- </label>
87
- </li>
88
- <li class="ais-RefinementList-item">
89
- <label class="ais-RefinementList-label">
90
- <input class="ais-RefinementList-checkbox"
91
- type="checkbox"
92
- value="are"
93
- >
94
- <span class="ais-RefinementList-labelText">
95
- <span class="ais-Highlight">
96
- are
97
- </span>
98
- </span>
99
- <span class="ais-RefinementList-count">
100
- 8
101
- </span>
102
- </label>
103
- </li>
104
- <li class="ais-RefinementList-item">
105
- <label class="ais-RefinementList-label">
106
- <input class="ais-RefinementList-checkbox"
107
- type="checkbox"
108
- value="you"
109
- >
110
- <span class="ais-RefinementList-labelText">
111
- <span class="ais-Highlight">
112
- you
113
- </span>
114
- </span>
115
- <span class="ais-RefinementList-count">
116
- 9
117
- </span>
118
- </label>
119
- </li>
120
- <li class="ais-RefinementList-item">
121
- <label class="ais-RefinementList-label">
122
- <input class="ais-RefinementList-checkbox"
123
- type="checkbox"
124
- value="doing"
125
- >
126
- <span class="ais-RefinementList-labelText">
127
- <span class="ais-Highlight">
128
- doing
129
- </span>
130
- </span>
131
- <span class="ais-RefinementList-count">
132
- 100
133
- </span>
134
- </label>
135
- </li>
136
- <li class="ais-RefinementList-item">
137
- <label class="ais-RefinementList-label">
138
- <input class="ais-RefinementList-checkbox"
139
- type="checkbox"
140
- value="?"
141
- >
142
- <span class="ais-RefinementList-labelText">
143
- <span class="ais-Highlight">
144
- ?
145
- </span>
146
- </span>
147
- <span class="ais-RefinementList-count">
148
- 0
149
- </span>
150
- </label>
151
- </li>
152
- </ul>
153
- </div>
154
- `;
155
-
156
- exports[`renders correctly (empty) 1`] = `
157
- <div class="ais-RefinementList ais-RefinementList--noRefinement">
158
- <ul class="ais-RefinementList-list">
159
- </ul>
160
- </div>
161
- `;
162
-
163
- exports[`renders correctly 1`] = `
164
- <div class="ais-RefinementList">
165
- <ul class="ais-RefinementList-list">
166
- <li class="ais-RefinementList-item">
167
- <label class="ais-RefinementList-label">
168
- <input class="ais-RefinementList-checkbox"
169
- type="checkbox"
170
- value="yo"
171
- >
172
- <span class="ais-RefinementList-labelText">
173
- yo
174
- </span>
175
- <span class="ais-RefinementList-count">
176
- 20
177
- </span>
178
- </label>
179
- </li>
180
- <li class="ais-RefinementList-item">
181
- <label class="ais-RefinementList-label">
182
- <input class="ais-RefinementList-checkbox"
183
- type="checkbox"
184
- value="how"
185
- >
186
- <span class="ais-RefinementList-labelText">
187
- how
188
- </span>
189
- <span class="ais-RefinementList-count">
190
- 10
191
- </span>
192
- </label>
193
- </li>
194
- <li class="ais-RefinementList-item">
195
- <label class="ais-RefinementList-label">
196
- <input class="ais-RefinementList-checkbox"
197
- type="checkbox"
198
- value="are"
199
- >
200
- <span class="ais-RefinementList-labelText">
201
- are
202
- </span>
203
- <span class="ais-RefinementList-count">
204
- 8
205
- </span>
206
- </label>
207
- </li>
208
- <li class="ais-RefinementList-item">
209
- <label class="ais-RefinementList-label">
210
- <input class="ais-RefinementList-checkbox"
211
- type="checkbox"
212
- value="you"
213
- >
214
- <span class="ais-RefinementList-labelText">
215
- you
216
- </span>
217
- <span class="ais-RefinementList-count">
218
- 9
219
- </span>
220
- </label>
221
- </li>
222
- <li class="ais-RefinementList-item">
223
- <label class="ais-RefinementList-label">
224
- <input class="ais-RefinementList-checkbox"
225
- type="checkbox"
226
- value="doing"
227
- >
228
- <span class="ais-RefinementList-labelText">
229
- doing
230
- </span>
231
- <span class="ais-RefinementList-count">
232
- 100
233
- </span>
234
- </label>
235
- </li>
236
- <li class="ais-RefinementList-item">
237
- <label class="ais-RefinementList-label">
238
- <input class="ais-RefinementList-checkbox"
239
- type="checkbox"
240
- value="?"
241
- >
242
- <span class="ais-RefinementList-labelText">
243
- ?
244
- </span>
245
- <span class="ais-RefinementList-count">
246
- 0
247
- </span>
248
- </label>
249
- </li>
250
- </ul>
251
- </div>
252
- `;
253
-
254
- exports[`renders correctly when it's searchable 1`] = `
255
- <div class="ais-RefinementList">
256
- <div class="ais-RefinementList-searchBox">
257
- <form action
258
- class="ais-SearchBox-form"
259
- novalidate="novalidate"
260
- role="search"
261
- >
262
- <input aria-label="Search"
263
- autocapitalize="off"
264
- autocomplete="off"
265
- autocorrect="off"
266
- class="ais-SearchBox-input"
267
- maxlength="512"
268
- placeholder="Search here…"
269
- spellcheck="false"
270
- type="search"
271
- >
272
- <button class="ais-SearchBox-submit"
273
- title="Search"
274
- type="submit"
275
- >
276
- <svg aria-hidden="true"
277
- class="ais-SearchBox-submitIcon"
278
- height="10"
279
- viewbox="0 0 40 40"
280
- width="10"
281
- >
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">
283
- </path>
284
- </svg>
285
- </button>
286
- <button class="ais-SearchBox-reset"
287
- hidden="hidden"
288
- title="Clear"
289
- type="reset"
290
- >
291
- <svg aria-hidden="true"
292
- class="ais-SearchBox-resetIcon"
293
- height="10"
294
- viewbox="0 0 20 20"
295
- width="10"
296
- >
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">
298
- </path>
299
- </svg>
300
- </button>
301
- </form>
302
- </div>
303
- <ul class="ais-RefinementList-list">
304
- <li class="ais-RefinementList-item">
305
- <label class="ais-RefinementList-label">
306
- <input class="ais-RefinementList-checkbox"
307
- type="checkbox"
308
- value="yo"
309
- >
310
- <span class="ais-RefinementList-labelText">
311
- <span class="ais-Highlight">
312
- y
313
- <mark class="ais-Highlight-highlighted">
314
- o
315
- </mark>
316
- </span>
317
- </span>
318
- <span class="ais-RefinementList-count">
319
- 20
320
- </span>
321
- </label>
322
- </li>
323
- <li class="ais-RefinementList-item">
324
- <label class="ais-RefinementList-label">
325
- <input class="ais-RefinementList-checkbox"
326
- type="checkbox"
327
- value="how"
328
- >
329
- <span class="ais-RefinementList-labelText">
330
- <span class="ais-Highlight">
331
- how
332
- </span>
333
- </span>
334
- <span class="ais-RefinementList-count">
335
- 10
336
- </span>
337
- </label>
338
- </li>
339
- <li class="ais-RefinementList-item">
340
- <label class="ais-RefinementList-label">
341
- <input class="ais-RefinementList-checkbox"
342
- type="checkbox"
343
- value="are"
344
- >
345
- <span class="ais-RefinementList-labelText">
346
- <span class="ais-Highlight">
347
- are
348
- </span>
349
- </span>
350
- <span class="ais-RefinementList-count">
351
- 8
352
- </span>
353
- </label>
354
- </li>
355
- <li class="ais-RefinementList-item">
356
- <label class="ais-RefinementList-label">
357
- <input class="ais-RefinementList-checkbox"
358
- type="checkbox"
359
- value="you"
360
- >
361
- <span class="ais-RefinementList-labelText">
362
- <span class="ais-Highlight">
363
- you
364
- </span>
365
- </span>
366
- <span class="ais-RefinementList-count">
367
- 9
368
- </span>
369
- </label>
370
- </li>
371
- <li class="ais-RefinementList-item">
372
- <label class="ais-RefinementList-label">
373
- <input class="ais-RefinementList-checkbox"
374
- type="checkbox"
375
- value="doing"
376
- >
377
- <span class="ais-RefinementList-labelText">
378
- <span class="ais-Highlight">
379
- doing
380
- </span>
381
- </span>
382
- <span class="ais-RefinementList-count">
383
- 100
384
- </span>
385
- </label>
386
- </li>
387
- <li class="ais-RefinementList-item">
388
- <label class="ais-RefinementList-label">
389
- <input class="ais-RefinementList-checkbox"
390
- type="checkbox"
391
- value="?"
392
- >
393
- <span class="ais-RefinementList-labelText">
394
- <span class="ais-Highlight">
395
- ?
396
- </span>
397
- </span>
398
- <span class="ais-RefinementList-count">
399
- 0
400
- </span>
401
- </label>
402
- </li>
403
- </ul>
404
- </div>
405
- `;
@@ -1,2 +0,0 @@
1
- import{resolveComponent as e,openBlock as s,createElementBlock as t,normalizeClass as a,renderSlot as o,createVNode as l,createCommentVNode as r,createElementVNode as n,Fragment as i,renderList as c,toDisplayString as u,createTextVNode as h}from"vue";var g=["value","checked","onChange"],m=["disabled"];function d(d,f,w,M,S,b){var v=e("search-input"),F=e("ais-highlight");return d.state?(s(),t("div",{key:0,class:a([d.suit(),!d.state.canRefine&&d.suit("","noRefinement")])},[o(d.$slots,"default",{items:b.items,refine:b.refine,searchForItems:d.state.searchForItems,searchForItemsQuery:S.searchForFacetValuesQuery,toggleShowMore:b.toggleShowMore,canToggleShowMore:d.state.canToggleShowMore,isShowingMore:d.state.isShowingMore,createURL:d.state.createURL,isFromSearch:d.state.isFromSearch,canRefine:d.state.canRefine,sendEvent:d.state.sendEvent},function(){var e;return[w.searchable?(s(),t("div",{key:0,class:a(d.suit("searchBox"))},[l(v,{modelValue:b.searchForFacetValues,"onUpdate:modelValue":f[0]||(f[0]=function(e){return b.searchForFacetValues=e}),placeholder:w.searchablePlaceholder,"class-names":d.classNames},null,8,["modelValue","placeholder","class-names"])],2)):r("",!0),d.state.isFromSearch&&0===b.items.length?o(d.$slots,"noResults",{key:1,query:b.searchForFacetValues},function(){return[n("div",{class:a(d.suit("noResults"))},"No results.",2)]}):r("",!0),n("ul",{class:a(d.suit("list"))},[(s(!0),t(i,null,c(b.items,function(e){return s(),t("li",{class:a([d.suit("item"),e.isRefined&&d.suit("item","selected")]),key:e.value},[o(d.$slots,"item",{item:e,refine:b.refine,createURL:d.state.createURL},function(){return[n("label",{class:a(d.suit("label"))},[n("input",{class:a(d.suit("checkbox")),type:"checkbox",value:e.value,checked:e.isRefined,onChange:function(s){return b.refine(e.value)}},null,42,g),w.searchable?(s(),t("span",{key:0,class:a(d.suit("labelText"))},[l(F,{attribute:"item",hit:e},null,8,["hit"])],2)):(s(),t("span",{key:1,class:a(d.suit("labelText"))},u(e.label),3)),n("span",{class:a(d.suit("count"))},u(e.count),3)],2)]})],2)}),128))],2),w.showMore?(s(),t("button",{key:2,class:a([d.suit("showMore"),(e={},e[d.suit("showMore","disabled")]=!d.state.canToggleShowMore,e)]),onClick:f[1]||(f[1]=function(){for(var e=[],s=arguments.length;s--;)e[s]=arguments[s];return b.toggleShowMore&&b.toggleShowMore.apply(b,e)}),disabled:!d.state.canToggleShowMore},[o(d.$slots,"showMoreLabel",{isShowingMore:d.state.isShowingMore},function(){return[h(" Show "+u(d.state.isShowingMore?"less":"more"),1)]})],10,m)):r("",!0)]})],2)):r("",!0)}export{d as render};
2
- //# sourceMappingURL=RefinementList.vue_vue&type=template&id=80c1baee&lang.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RefinementList.vue_vue&type=template&id=80c1baee&lang.js","sources":["../../../../src/components/RefinementList.vue?vue&type=template&id=80c1baee&lang.js"],"sourcesContent":["<template>\n <div\n :class=\"[suit(), !state.canRefine && suit('', 'noRefinement')]\"\n v-if=\"state\"\n >\n <slot\n :items=\"items\"\n :refine=\"refine\"\n :search-for-items=\"state.searchForItems\"\n :search-for-items-query=\"searchForFacetValuesQuery\"\n :toggle-show-more=\"toggleShowMore\"\n :can-toggle-show-more=\"state.canToggleShowMore\"\n :is-showing-more=\"state.isShowingMore\"\n :createURL=\"state.createURL\"\n :is-from-search=\"state.isFromSearch\"\n :can-refine=\"state.canRefine\"\n :send-event=\"state.sendEvent\"\n >\n <div :class=\"suit('searchBox')\" v-if=\"searchable\">\n <search-input\n v-model=\"searchForFacetValues\"\n :placeholder=\"searchablePlaceholder\"\n :class-names=\"classNames\"\n />\n </div>\n <slot\n name=\"noResults\"\n :query=\"searchForFacetValues\"\n v-if=\"state.isFromSearch && items.length === 0\"\n >\n <div :class=\"suit('noResults')\">No results.</div>\n </slot>\n <ul :class=\"suit('list')\">\n <li\n :class=\"[suit('item'), item.isRefined && suit('item', 'selected')]\"\n v-for=\"item in items\"\n :key=\"item.value\"\n >\n <slot\n name=\"item\"\n :item=\"item\"\n :refine=\"refine\"\n :createURL=\"state.createURL\"\n >\n <label :class=\"suit('label')\">\n <input\n :class=\"suit('checkbox')\"\n type=\"checkbox\"\n :value=\"item.value\"\n :checked=\"item.isRefined\"\n @change=\"refine(item.value)\"\n />\n <span v-if=\"searchable\" :class=\"suit('labelText')\">\n <ais-highlight attribute=\"item\" :hit=\"item\" />\n </span>\n <span v-else :class=\"suit('labelText')\">{{ item.label }}</span>\n <span :class=\"suit('count')\">{{ item.count }}</span>\n </label>\n </slot>\n </li>\n </ul>\n <button\n :class=\"[\n suit('showMore'),\n {\n [suit('showMore', 'disabled')]: !state.canToggleShowMore,\n },\n ]\"\n @click=\"toggleShowMore\"\n v-if=\"showMore\"\n :disabled=\"!state.canToggleShowMore\"\n >\n <slot name=\"showMoreLabel\" :is-showing-more=\"state.isShowingMore\">\n Show {{ state.isShowingMore ? 'less' : 'more' }}\n </slot>\n </button>\n </slot>\n </div>\n</template>\n\n<script>\nimport { connectRefinementList } from 'instantsearch.js/es/connectors';\n\nimport { createPanelConsumerMixin } from '../mixins/panel';\nimport { createSuitMixin } from '../mixins/suit';\nimport { createWidgetMixin } from '../mixins/widget';\n\nimport AisHighlight from './Highlight.vue';\nimport SearchInput from './SearchInput.vue';\n\nconst noop = () => {};\n\nexport default {\n name: 'AisRefinementList',\n components: { SearchInput, AisHighlight },\n mixins: [\n createSuitMixin({ name: 'RefinementList' }),\n createWidgetMixin(\n {\n connector: connectRefinementList,\n },\n {\n $$widgetType: 'ais.refinementList',\n }\n ),\n createPanelConsumerMixin(),\n ],\n props: {\n attribute: {\n type: String,\n required: true,\n },\n searchable: {\n type: Boolean,\n default: undefined,\n },\n searchablePlaceholder: {\n type: String,\n required: false,\n default: 'Search here…',\n },\n operator: {\n default: 'or',\n validator(value) {\n return value === 'and' || value === 'or';\n },\n required: false,\n },\n limit: {\n type: Number,\n required: false,\n default: undefined,\n },\n showMoreLimit: {\n type: Number,\n required: false,\n default: undefined,\n },\n showMore: {\n type: Boolean,\n required: false,\n default: false,\n },\n sortBy: {\n type: [Array, Function],\n required: false,\n default: undefined,\n },\n transformItems: {\n type: Function,\n required: false,\n default: undefined,\n },\n },\n data() {\n return {\n searchForFacetValuesQuery: '',\n };\n },\n computed: {\n searchForFacetValues: {\n get() {\n return this.searchForFacetValuesQuery;\n },\n set(value) {\n this.state.searchForItems(value);\n this.searchForFacetValuesQuery = value;\n },\n },\n toggleShowMore() {\n return this.state.toggleShowMore || noop;\n },\n items() {\n return this.state.items.map((item) =>\n Object.assign({}, item, {\n _highlightResult: {\n item: {\n value: item.highlighted,\n },\n },\n })\n );\n },\n widgetParams() {\n return {\n attribute: this.attribute,\n operator: this.operator,\n limit: this.limit,\n showMore: this.showMore,\n showMoreLimit: this.showMoreLimit,\n sortBy: this.sortBy,\n escapeFacetValues: true,\n transformItems: this.transformItems,\n };\n },\n },\n methods: {\n refine(value) {\n this.state.refine(value);\n this.searchForFacetValuesQuery = '';\n },\n },\n};\n</script>\n"],"names":["_ctx","_createElementBlock","class","canRefine","_renderSlot","items","$options","refine","searchForItems","searchForItemsQuery","$data","toggleShowMore","canToggleShowMore","isShowingMore","createURL","isFromSearch","sendEvent","$props","_createVNode","placeholder","class-names","length","query","_createElementVNode","item","isRefined","key","value","type","checked","onChange","attribute","hit","label","count","onClick","disabled"],"mappings":"2XAGUA,aAFRC,eACGC,SAAQF,UAASA,QAAMG,WAAaH,8BAGrCI,sBACGC,MAAOC,QACPC,OAAQD,SACRE,eAAkBR,QAAMQ,eACxBC,oBAAwBC,4BACxBC,eAAkBL,iBAClBM,kBAAsBZ,QAAMY,kBAC5BC,cAAiBb,QAAMa,cACvBC,UAAWd,QAAMc,UACjBC,aAAgBf,QAAMe,aACtBZ,UAAYH,QAAMG,UAClBa,UAAYhB,QAAMgB,mCAEmBC,kBAAtChB,eAAMC,QAAOF,uBACXkB,gBACWZ,4EAAAA,2BACRa,YAAaF,wBACbG,cAAapB,+EAMVA,QAAMe,kBAAgBT,QAAMe,OAHpCjB,8BAEGkB,MAAOhB,0CAGRiB,SAAMrB,QAAOF,sBAAmB,6BAElCuB,QAAKrB,QAAOF,yBACVC,WAEiBK,iBAARkB,cAFTvB,QACGC,SAAQF,eAAcwB,EAAKC,WAAazB,4BAExC0B,IAAKF,EAAKG,QAEXvB,mBAEGoB,KAAMA,EACNjB,OAAQD,SACRQ,UAAWd,QAAMc,6BAElBS,WAAQrB,QAAOF,mBACbuB,WACGrB,QAAOF,oBACR4B,KAAK,WACJD,MAAOH,EAAKG,MACZE,QAASL,EAAKC,UACdK,4BAAQxB,SAAOkB,EAAKG,oBAEXV,kBAAZhB,gBAAyBC,QAAOF,uBAC9BkB,KAAea,UAAU,OAAQC,IAAKR,6BAExCvB,gBAAcC,QAAOF,wBAAsBwB,EAAKS,WAChDV,UAAOrB,QAAOF,oBAAkBwB,EAAKU,iCAarCjB,gBARRhB,kBACGC,mGAMAiC,6FAAO7B,gDAEP8B,UAAWpC,QAAMY,oBAElBR,4BAA4BS,cAAiBb,QAAMa,8CACzCb,QAAMa"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SearchInput.vue_vue&type=template&id=02fb82e2&lang.js","sources":["../../../../src/components/SearchInput.vue?vue&type=template&id=02fb82e2&lang.js"],"sourcesContent":["<template>\n <form\n action=\"\"\n role=\"search\"\n novalidate\n :class=\"suit('form')\"\n @submit.prevent=\"onFormSubmit\"\n @reset.prevent=\"onFormReset\"\n >\n <!-- :value/@input allows us to pass v-model to the component in v2 -->\n <!-- :modelValue/@update:modelValue allows us to pass v-model to the component in v3 -->\n <input\n type=\"search\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n maxlength=\"512\"\n aria-label=\"Search\"\n :placeholder=\"placeholder\"\n :autofocus=\"autofocus\"\n :class=\"suit('input')\"\n :value=\"value || modelValue\"\n @focus=\"$emit('focus', $event)\"\n @blur=\"$emit('blur', $event)\"\n @input=\"onInput($event)\"\n @compositionend=\"onInput($event)\"\n ref=\"input\"\n />\n <button\n type=\"submit\"\n :title=\"submitTitle\"\n :class=\"suit('submit')\"\n :hidden=\"showLoadingIndicator && shouldShowLoadingIndicator\"\n >\n <slot name=\"submit-icon\">\n <svg\n aria-hidden=\"true\"\n width=\"10\"\n height=\"10\"\n viewBox=\"0 0 40 40\"\n :class=\"suit('submitIcon')\"\n >\n <path\n 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\"\n />\n </svg>\n </slot>\n </button>\n\n <button\n type=\"reset\"\n :title=\"resetTitle\"\n :class=\"suit('reset')\"\n :hidden=\"\n (!value && !modelValue) ||\n (showLoadingIndicator && shouldShowLoadingIndicator)\n \"\n >\n <slot name=\"reset-icon\">\n <svg\n aria-hidden=\"true\"\n height=\"10\"\n viewBox=\"0 0 20 20\"\n :class=\"suit('resetIcon')\"\n width=\"10\"\n >\n <path\n 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\"\n />\n </svg>\n </slot>\n </button>\n\n <span\n v-if=\"showLoadingIndicator\"\n :hidden=\"!shouldShowLoadingIndicator\"\n :class=\"suit('loadingIndicator')\"\n >\n <slot name=\"loading-indicator\">\n <svg\n :aria-hidden=\"!shouldShowLoadingIndicator\"\n aria-label=\"Results are loading\"\n width=\"16\"\n height=\"16\"\n stroke=\"#444\"\n viewBox=\"0 0 38 38\"\n :class=\"suit('loadingIcon')\"\n >\n <g fill=\"none\" fill-rule=\"evenodd\">\n <g transform=\"translate(1 1)\" stroke-width=\"2\">\n <circle stroke-opacity=\".5\" cx=\"18\" cy=\"18\" r=\"18\" />\n <path d=\"M36 18c0-9.94-8.06-18-18-18\">\n <animateTransform\n attributeName=\"transform\"\n type=\"rotate\"\n from=\"0 18 18\"\n to=\"360 18 18\"\n dur=\"1s\"\n repeatCount=\"indefinite\"\n />\n </path>\n </g>\n </g>\n </svg>\n </slot>\n </span>\n </form>\n</template>\n\n<script>\nimport { createSuitMixin } from '../mixins/suit';\n\nexport default {\n name: 'SearchInput',\n mixins: [createSuitMixin({ name: 'SearchBox' })],\n props: {\n placeholder: {\n type: String,\n default: 'Search here…',\n },\n autofocus: {\n type: Boolean,\n default: false,\n },\n showLoadingIndicator: {\n type: Boolean,\n default: false,\n },\n shouldShowLoadingIndicator: {\n type: Boolean,\n default: false,\n },\n ignoreCompositionEvents: {\n type: Boolean,\n default: false,\n },\n submitTitle: {\n type: String,\n default: 'Search',\n },\n resetTitle: {\n type: String,\n default: 'Clear',\n },\n value: {\n type: String,\n required: false,\n default: undefined,\n },\n modelValue: {\n type: String,\n required: false,\n default: undefined,\n },\n },\n emits: ['input', 'update:modelValue', 'blur', 'focus', 'reset'],\n data() {\n return {\n query: '',\n };\n },\n methods: {\n isFocused() {\n return document.activeElement === this.$refs.input;\n },\n onInput(event) {\n if (!(this.ignoreCompositionEvents && event.isComposing)) {\n this.$emit('input', event.target.value);\n this.$emit('update:modelValue', event.target.value);\n }\n },\n onFormSubmit() {\n const input = this.$refs.input;\n input.blur();\n },\n onFormReset() {\n this.$emit('input', '');\n this.$emit('update:modelValue', '');\n this.$emit('reset');\n },\n },\n};\n</script>\n"],"names":["_createElementVNode","d","_createElementBlock","action","role","novalidate","class","_ctx","onSubmit","$options","onReset","type","autocorrect","autocapitalize","autocomplete","spellcheck","maxlength","aria-label","placeholder","$props","autofocus","value","onFocus","$event","onBlur","onInput","onCompositionend","ref","title","hidden","_renderSlot","aria-hidden","width","height","viewBox","stroke"],"mappings":"wPA2CUA,UACEC,EAAE,sbAuBJD,UACEC,EAAE,knBAnEZC,UACEC,OAAO,GACPC,KAAK,SACLC,WAAA,GACCC,QAAOC,gBACPC,gGAAgBC,yDAChBC,+FAAeD,yDAIhBT,WACEW,KAAK,SACLC,YAAY,MACZC,eAAe,MACfC,aAAa,MACbC,WAAW,QACXC,UAAU,MACVC,aAAW,SACVC,YAAaC,cACbC,UAAWD,YACXb,QAAOC,iBACPc,MAAOF,SAASA,aAChBG,uCAAOf,gBAAegB,KACtBC,sCAAMjB,eAAcgB,KACpBE,uCAAOhB,UAAQc,KACfG,gDAAgBjB,UAAQc,KACzBI,IAAI,oBAEN3B,YACEW,KAAK,SACJiB,MAAOT,cACPb,QAAOC,kBACPsB,OAAQV,wBAAwBA,+BAEjCW,mDACE5B,SACE6B,cAAY,OACZC,MAAM,KACNC,OAAO,KACPC,QAAQ,YACP5B,QAAOC,uCASdP,YACEW,KAAK,QACJiB,MAAOT,aACPb,QAAOC,iBACPsB,uFAKDC,kDACE5B,SACE6B,cAAY,OACZE,OAAO,KACPC,QAAQ,YACP5B,QAAOC,qBACRyB,MAAM,sBAUJb,4BADRjB,gBAEG2B,QAASV,6BACTb,QAAOC,8BAERuB,yDACE5B,SACG6B,eAAcZ,6BACfF,aAAW,sBACXe,MAAM,KACNC,OAAO,KACPE,OAAO,OACPD,QAAQ,YACP5B,QAAOC"}