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
@@ -1,62 +0,0 @@
1
- /**
2
- * @jest-environment jsdom
3
- */
4
-
5
- import { mount } from '../../../test/utils';
6
- import '../../../test/utils/sortedHtmlSerializer';
7
- import { __setState } from '../../mixins/widget';
8
- import Stats from '../Stats.vue';
9
-
10
- jest.mock('../../mixins/widget');
11
-
12
- it('renders correctly', () => {
13
- __setState({
14
- hitsPerPage: 50,
15
- nbPages: 20,
16
- nbHits: 1000,
17
- page: 2,
18
- processingTimeMS: 12,
19
- query: 'ipho',
20
- instantSearchInstance: {
21
- helper: {
22
- lastResults: [],
23
- },
24
- },
25
- });
26
-
27
- const wrapper = mount(Stats);
28
- expect(wrapper.html()).toMatchInlineSnapshot(`
29
- <div class="ais-Stats">
30
- <span class="ais-Stats-text">
31
- 1,000 results found in 12ms
32
- </span>
33
- </div>
34
- `);
35
- });
36
-
37
- it('renders correctly (relevant sort)', () => {
38
- __setState({
39
- areHitsSorted: true,
40
- hitsPerPage: 50,
41
- nbPages: 20,
42
- nbHits: 1000,
43
- nbSortedHits: 12,
44
- page: 2,
45
- processingTimeMS: 12,
46
- query: 'ipho',
47
- instantSearchInstance: {
48
- helper: {
49
- lastResults: [],
50
- },
51
- },
52
- });
53
-
54
- const wrapper = mount(Stats);
55
- expect(wrapper.html()).toMatchInlineSnapshot(`
56
- <div class="ais-Stats">
57
- <span class="ais-Stats-text">
58
- 12 relevant results sorted out of 1,000 found in 12ms
59
- </span>
60
- </div>
61
- `);
62
- });
@@ -1,59 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`renders HTML correctly 1`] = `
4
- <div class="ais-SearchBox">
5
- <form action
6
- class="ais-SearchBox-form"
7
- novalidate="novalidate"
8
- role="search"
9
- >
10
- <input aria-label="Search"
11
- autocapitalize="off"
12
- autocomplete="off"
13
- autocorrect="off"
14
- class="ais-SearchBox-input"
15
- maxlength="512"
16
- placeholder="Search here…"
17
- required="required"
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
- role="img"
29
- viewbox="0 0 40 40"
30
- width="10"
31
- xmlns="http://www.w3.org/2000/svg"
32
- >
33
- <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"
34
- fillrule="evenodd"
35
- >
36
- </path>
37
- </svg>
38
- </button>
39
- <button class="ais-SearchBox-reset"
40
- hidden="hidden"
41
- title="Clear"
42
- type="reset"
43
- >
44
- <svg aria-hidden="true"
45
- class="ais-SearchBox-resetIcon"
46
- role="img"
47
- style="width: 1em; height: 1em;"
48
- viewbox="0 0 20 20"
49
- xmlns="http://www.w3.org/2000/svg"
50
- >
51
- <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"
52
- fillrule="evenodd"
53
- >
54
- </path>
55
- </svg>
56
- </button>
57
- </form>
58
- </div>
59
- `;
@@ -1 +0,0 @@
1
- {"version":3,"file":"SearchBox.vue_vue&type=template&id=27000fa5&lang.js","sources":["../../../../src/components/SearchBox.vue?vue&type=template&id=27000fa5&lang.js"],"sourcesContent":["<template>\n <div v-if=\"state\" :class=\"suit()\">\n <slot\n :current-refinement=\"currentRefinement\"\n :is-search-stalled=\"state.isSearchStalled\"\n :refine=\"state.refine\"\n >\n <search-input\n @focus=\"$emit('focus', $event)\"\n @blur=\"$emit('blur', $event)\"\n @reset=\"$emit('reset')\"\n :placeholder=\"placeholder\"\n :autofocus=\"autofocus\"\n :show-loading-indicator=\"showLoadingIndicator\"\n :should-show-loading-indicator=\"state.isSearchStalled\"\n :submit-title=\"submitTitle\"\n :reset-title=\"resetTitle\"\n :class-names=\"classNames\"\n v-model=\"currentRefinement\"\n ref=\"searchInput\"\n >\n <template #loading-indicator v-if=\"isVue3\">\n <slot name=\"loading-indicator\" />\n </template>\n <slot v-if=\"isVue2\" name=\"loading-indicator\" slot=\"loading-indicator\" />\n\n <template #submit-icon v-if=\"isVue3\">\n <slot name=\"submit-icon\" />\n </template>\n <slot v-if=\"isVue2\" name=\"submit-icon\" slot=\"submit-icon\" />\n\n <template #reset-icon v-if=\"isVue3\">\n <slot name=\"reset-icon\" />\n </template>\n <slot v-if=\"isVue2\" name=\"reset-icon\" slot=\"reset-icon\" />\n </search-input>\n </slot>\n </div>\n</template>\n\n<script>\nimport { connectSearchBox } from 'instantsearch.js/es/connectors';\n\nimport { createSuitMixin } from '../mixins/suit';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { isVue3, isVue2 } from '../util/vue-compat';\n\nimport SearchInput from './SearchInput.vue';\n\nexport default {\n name: 'AisSearchBox',\n mixins: [\n createWidgetMixin(\n {\n connector: connectSearchBox,\n },\n {\n $$widgetType: 'ais.searchBox',\n }\n ),\n createSuitMixin({ name: 'SearchBox' }),\n ],\n components: {\n SearchInput,\n },\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 submitTitle: {\n type: String,\n default: 'Search',\n },\n resetTitle: {\n type: String,\n default: 'Clear',\n },\n value: {\n type: String,\n default: undefined,\n },\n modelValue: {\n type: String,\n default: undefined,\n },\n queryHook: {\n type: Function,\n default: undefined,\n },\n },\n data() {\n return {\n localValue: '',\n isVue2,\n isVue3,\n };\n },\n computed: {\n widgetParams() {\n return {\n queryHook: this.queryHook,\n };\n },\n isControlled() {\n return (\n typeof this.value !== 'undefined' ||\n typeof this.modelValue !== 'undefined'\n );\n },\n model() {\n return this.value || this.modelValue;\n },\n currentRefinement: {\n get() {\n // if the input is controlled, but not up to date\n // this means it didn't search, and we should pretend it was `set`\n if (this.isControlled && this.model !== this.localValue) {\n // eslint-disable-next-line vue/no-side-effects-in-computed-properties\n this.localValue = this.model;\n this.$emit('input', this.model);\n this.$emit('update:modelValue', this.model);\n this.state.refine(this.model);\n }\n\n // we return the local value if the input is focused to avoid\n // concurrent updates when typing\n const { searchInput } = this.$refs;\n if (searchInput && searchInput.isFocused()) {\n return this.localValue;\n }\n\n return this.model || this.state.query || '';\n },\n set(val) {\n this.localValue = val;\n this.state.refine(val);\n if (this.isControlled) {\n this.$emit('input', val);\n this.$emit('update:modelValue', val);\n }\n },\n },\n },\n};\n</script>\n"],"names":["_ctx","_createElementBlock","class","_renderSlot","currentRefinement","$options","isSearchStalled","refine","_createVNode","onFocus","$event","onBlur","onReset","placeholder","$props","autofocus","show-loading-indicator","should-show-loading-indicator","submit-title","reset-title","class-names","ref","$data","slot"],"mappings":"gPACaA,aAAXC,eAAmBC,QAAOF,YACxBG,sBACGC,kBAAoBC,oBACpBC,gBAAmBN,QAAMM,gBACzBC,OAAQP,QAAMO,0BAEfC,KACGC,uCAAOT,gBAAeU,KACtBC,sCAAMX,eAAcU,KACpBE,uCAAOZ,mBACPa,YAAaC,cACbC,UAAWD,YACXE,yBAAwBF,uBACxBG,gCAA+BjB,QAAMM,gBACrCY,eAAcJ,cACdK,cAAaL,aACbM,cAAapB,wBACLK,yEAAAA,wBACTgB,IAAI,8CAKQC,SAAZnB,sCAA6CoB,KAAK,+BAKtCD,SAAZnB,gCAAuCoB,KAAK,yBAKhCD,SAAZnB,+BAAsCoB,KAAK,iCAbRD,eAAxB,2CACTnB,mDAI2BmB,eAAlB,qCACTnB,6CAI0BmB,eAAjB,oCACTnB"}
@@ -1,2 +0,0 @@
1
- import{openBlock as t,createElementBlock as e,normalizeClass as o,withModifiers as i,createElementVNode as n,renderSlot as r,createCommentVNode as l,createStaticVNode as a}from"vue";var s=["placeholder","autofocus","value"],u=["title","hidden"],c=[n("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",fillRule:"evenodd"},null,-1)],d=["title","hidden"],h=[n("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",fillRule:"evenodd"},null,-1)],m=["hidden"],f=[a('<g fill="none" fill-rule="evenodd"><g transform="translate(1 1)" stroke-width="2"><circle stroke-opacity=".5" cx="18" cy="18" r="18"></circle><path d="M36 18c0-9.94-8.06-18-18-18"><animateTransform attributeName="transform" type="rotate" from="0 18 18" to="360 18 18" dur="1s" repeatCount="indefinite"></animateTransform></path></g></g>',1)];function g(a,g,p,v,w,b){return t(),e("form",{action:"",role:"search",novalidate:"",class:o(a.suit("form")),onSubmit:g[3]||(g[3]=i(function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return b.onFormSubmit&&b.onFormSubmit.apply(b,t)},["prevent"])),onReset:g[4]||(g[4]=i(function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return b.onFormReset&&b.onFormReset.apply(b,t)},["prevent"]))},[n("input",{type:"search",autocorrect:"off",autocapitalize:"off",autocomplete:"off",spellcheck:"false",required:"",maxlength:"512","aria-label":"Search",placeholder:p.placeholder,autofocus:p.autofocus,class:o(a.suit("input")),value:p.value||p.modelValue,onFocus:g[0]||(g[0]=function(t){return a.$emit("focus",t)}),onBlur:g[1]||(g[1]=function(t){return a.$emit("blur",t)}),onInput:g[2]||(g[2]=function(t){a.$emit("input",t.target.value),a.$emit("update:modelValue",t.target.value)}),ref:"input"},null,42,s),n("button",{type:"submit",title:p.submitTitle,class:o(a.suit("submit")),hidden:p.showLoadingIndicator&&p.shouldShowLoadingIndicator},[r(a.$slots,"submit-icon",{},function(){return[(t(),e("svg",{"aria-hidden":"true",role:"img",xmlns:"http://www.w3.org/2000/svg",width:"10",height:"10",viewBox:"0 0 40 40",class:o(a.suit("submitIcon"))},c,2))]})],10,u),n("button",{type:"reset",title:p.resetTitle,class:o(a.suit("reset")),hidden:!p.value&&!p.modelValue||p.showLoadingIndicator&&p.shouldShowLoadingIndicator},[r(a.$slots,"reset-icon",{},function(){return[(t(),e("svg",{"aria-hidden":"true",role:"img",xmlns:"http://www.w3.org/2000/svg",style:{width:"1em",height:"1em"},viewBox:"0 0 20 20",class:o(a.suit("resetIcon"))},h,2))]})],10,d),p.showLoadingIndicator?(t(),e("span",{key:0,hidden:!p.shouldShowLoadingIndicator,class:o(a.suit("loadingIndicator"))},[r(a.$slots,"loading-indicator",{},function(){return[(t(),e("svg",{role:"img","aria-label":"Results are loading",width:"16",height:"16",xmlns:"http://www.w3.org/2000/svg",stroke:"#444",viewBox:"0 0 38 38",class:o(a.suit("loadingIcon"))},f,2))]})],10,m)):l("",!0)],34)}export{g as render};
2
- //# sourceMappingURL=SearchInput.vue_vue&type=template&id=00f0f603&lang.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SearchInput.vue_vue&type=template&id=00f0f603&lang.js","sources":["../../../../src/components/SearchInput.vue?vue&type=template&id=00f0f603&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 required\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=\"\n $emit('input', $event.target.value);\n $emit('update:modelValue', $event.target.value);\n \"\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 role=\"img\"\n xmlns=\"http://www.w3.org/2000/svg\"\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 fillRule=\"evenodd\"\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 role=\"img\"\n xmlns=\"http://www.w3.org/2000/svg\"\n style=\"width: 1em; height: 1em\"\n viewBox=\"0 0 20 20\"\n :class=\"suit('resetIcon')\"\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 fillRule=\"evenodd\"\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 role=\"img\"\n aria-label=\"Results are loading\"\n width=\"16\"\n height=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\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 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 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","fillRule","_createElementBlock","action","role","novalidate","class","_ctx","onSubmit","$options","onReset","type","autocorrect","autocapitalize","autocomplete","spellcheck","required","maxlength","aria-label","placeholder","$props","autofocus","value","onFocus","$event","onBlur","onInput","ref","title","hidden","_renderSlot","aria-hidden","xmlns","width","height","viewBox","style","stroke"],"mappings":"wPAgDUA,UACEC,EAAE,mZACFC,SAAS,6CAwBXF,UACEC,EAAE,yMACFC,SAAS,iaA3EnBC,UACEC,OAAO,GACPC,KAAK,SACLC,WAAA,GACCC,QAAOC,gBACPC,gGAAgBC,yDAChBC,+FAAeD,yDAIhBV,WACEY,KAAK,SACLC,YAAY,MACZC,eAAe,MACfC,aAAa,MACbC,WAAW,QACXC,SAAA,GACAC,UAAU,MACVC,aAAW,SACVC,YAAaC,cACbC,UAAWD,YACXd,QAAOC,iBACPe,MAAOF,SAASA,aAChBG,uCAAOhB,gBAAeiB,KACtBC,sCAAMlB,eAAciB,KACpBE,8GAIDC,IAAI,oBAEN5B,YACEY,KAAK,SACJiB,MAAOR,cACPd,QAAOC,kBACPsB,OAAQT,wBAAwBA,+BAEjCU,mDACE5B,SACE6B,cAAY,OACZ3B,KAAK,MACL4B,MAAM,6BACNC,MAAM,KACNC,OAAO,KACPC,QAAQ,YACP7B,QAAOC,uCAUdR,YACEY,KAAK,QACJiB,MAAOR,aACPd,QAAOC,iBACPsB,uFAKDC,kDACE5B,SACE6B,cAAY,OACZ3B,KAAK,MACL4B,MAAM,6BACNI,MAAA,2BACAD,QAAQ,YACP7B,QAAOC,sCAWNa,4BADRlB,gBAEG2B,QAAST,6BACTd,QAAOC,8BAERuB,yDACE5B,SACEE,KAAK,MACLc,aAAW,sBACXe,MAAM,KACNC,OAAO,KACPF,MAAM,6BACNK,OAAO,OACPF,QAAQ,YACP7B,QAAOC"}
@@ -1,2 +0,0 @@
1
- import{openBlock as e,createElementBlock as t,normalizeClass as n,renderSlot as s,createElementVNode as a,Fragment as u,renderList as r,toDisplayString as i,createCommentVNode as l}from"vue";var o=["value","selected"];function c(c,f,v,R,m,p){return c.state?(e(),t("div",{key:0,class:n(c.suit())},[s(c.$slots,"default",{items:c.state.options,hasNoResults:c.state.hasNoResults,refine:c.state.refine,currentRefinement:c.state.currentRefinement,canRefine:c.state.canRefine},function(){return[a("select",{class:n(c.suit("select")),onChange:f[0]||(f[0]=function(e){return c.state.refine(e.currentTarget.value)})},[(e(!0),t(u,null,r(c.state.options,function(s){return e(),t("option",{key:s.value,class:n(c.suit("option")),value:s.value,selected:s.value===c.state.currentRefinement},i(s.label),11,o)}),128))],34)]})],2)):l("",!0)}export{c as render};
2
- //# sourceMappingURL=SortBy.vue_vue&type=template&id=507e7d3a&lang.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SortBy.vue_vue&type=template&id=507e7d3a&lang.js","sources":["../../../../src/components/SortBy.vue?vue&type=template&id=507e7d3a&lang.js"],"sourcesContent":["<template>\n <div :class=\"suit()\" v-if=\"state\">\n <slot\n :items=\"state.options\"\n :has-no-results=\"state.hasNoResults\"\n :refine=\"state.refine\"\n :current-refinement=\"state.currentRefinement\"\n :can-refine=\"state.canRefine\"\n >\n <select\n :class=\"suit('select')\"\n @change=\"state.refine($event.currentTarget.value)\"\n >\n <option\n v-for=\"item in state.options\"\n :key=\"item.value\"\n :class=\"suit('option')\"\n :value=\"item.value\"\n :selected=\"item.value === state.currentRefinement\"\n >\n {{ item.label }}\n </option>\n </select>\n </slot>\n </div>\n</template>\n\n<script>\nimport { connectSortBy } from 'instantsearch.js/es/connectors';\n\nimport { createPanelConsumerMixin } from '../mixins/panel';\nimport { createSuitMixin } from '../mixins/suit';\nimport { createWidgetMixin } from '../mixins/widget';\n\nexport default {\n name: 'AisSortBy',\n mixins: [\n createSuitMixin({ name: 'SortBy' }),\n createWidgetMixin(\n { connector: connectSortBy },\n {\n $$widgetType: 'ais.sortBy',\n }\n ),\n\n createPanelConsumerMixin(),\n ],\n props: {\n items: {\n type: Array,\n required: true,\n },\n transformItems: {\n type: Function,\n default: undefined,\n },\n },\n computed: {\n widgetParams() {\n return {\n items: this.items,\n transformItems: this.transformItems,\n };\n },\n },\n};\n</script>\n"],"names":["_ctx","_createElementBlock","class","_renderSlot","items","options","hasNoResults","refine","currentRefinement","canRefine","_createElementVNode","onChange","$event","currentTarget","value","item","key","selected","label"],"mappings":"yPAC6BA,aAA3BC,eAAMC,QAAOF,YACXG,sBACGC,MAAOJ,QAAMK,QACbC,aAAgBN,QAAMM,aACtBC,OAAQP,QAAMO,OACdC,kBAAoBR,QAAMQ,kBAC1BC,UAAYT,QAAMS,6BAEnBC,YACGR,QAAOF,kBACPW,wCAAQX,QAAMO,OAAOK,EAAOC,cAAcC,kBAE3Cb,WACiBD,QAAMK,iBAAdU,cADTd,YAEGe,IAAKD,EAAKD,MACVZ,QAAOF,kBACPc,MAAOC,EAAKD,MACZG,SAAUF,EAAKD,QAAUd,QAAMQ,qBAE7BO,EAAKG"}
@@ -1,2 +0,0 @@
1
- import{openBlock as t,createElementBlock as e,normalizeClass as s,renderSlot as a,mergeProps as n,createElementVNode as r,Fragment as o,createTextVNode as i,toDisplayString as l,createCommentVNode as u}from"vue";function c(c,S,d,f,g,p){return c.state?(t(),e("div",{key:0,class:s(c.suit())},[a(c.$slots,"default",n(c.state,{results:c.state.instantSearchInstance.helper.lastResults}),function(){return[r("span",{class:s(c.suit("text"))},[c.state.areHitsSorted?(t(),e(o,{key:0},[i(l(c.state.nbSortedHits.toLocaleString())+" relevant results sorted out of "+l(c.state.nbHits.toLocaleString()),1)],64)):(t(),e(o,{key:1},[i(l(c.state.nbHits.toLocaleString())+" results",1)],64)),i(" found in "+l(c.state.processingTimeMS.toLocaleString())+"ms",1)],2)]})],2)):u("",!0)}export{c as render};
2
- //# sourceMappingURL=Stats.vue_vue&type=template&id=6d9c672c&lang.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Stats.vue_vue&type=template&id=6d9c672c&lang.js","sources":["../../../../src/components/Stats.vue?vue&type=template&id=6d9c672c&lang.js"],"sourcesContent":["<template>\n <div v-if=\"state\" :class=\"suit()\">\n <slot\n v-bind=\"state\"\n :results=\"state.instantSearchInstance.helper.lastResults\"\n >\n <!-- prettier-ignore -->\n <span :class=\"suit('text')\"\n ><template v-if=\"state.areHitsSorted\"\n >{{ state.nbSortedHits.toLocaleString() }} relevant results sorted out of {{ state.nbHits.toLocaleString() }}</template\n ><template v-else>{{ state.nbHits.toLocaleString() }} results</template\n > found in {{ state.processingTimeMS.toLocaleString() }}ms</span\n >\n </slot>\n </div>\n</template>\n\n<script>\nimport { connectStats } from 'instantsearch.js/es/connectors';\n\nimport { createSuitMixin } from '../mixins/suit';\nimport { createWidgetMixin } from '../mixins/widget';\n\nexport default {\n name: 'AisStats',\n mixins: [\n createWidgetMixin(\n { connector: connectStats },\n {\n $$widgetType: 'ais.stats',\n }\n ),\n createSuitMixin({ name: 'Stats' }),\n ],\n computed: {\n widgetParams() {\n return {};\n },\n },\n};\n</script>\n"],"names":["_ctx","_createElementBlock","class","_renderSlot","_mergeProps","results","instantSearchInstance","helper","lastResults","_createElementVNode","areHitsSorted","_Fragment","nbSortedHits","toLocaleString","nbHits","processingTimeMS"],"mappings":"mPACaA,aAAXC,eAAmBC,QAAOF,YACxBG,qBAAAC,WAEGC,QAASL,QAAMM,sBAAsBC,OAAOC,gCAG7CC,UAAOP,QAAOF,kBACKA,QAAMU,mBAAtBT,EAEAU,eADKX,QAAMY,aAAaC,uDAAsDb,QAAMc,OAAOD,gCAC3FZ,iBAAoBD,QAAMc,OAAOD,uDACpBb,QAAMe,iBAAiBF,kBAAmB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToggleRefinement.vue_vue&type=template&id=1e8d14ba&lang.js","sources":["../../../../src/components/ToggleRefinement.vue?vue&type=template&id=1e8d14ba&lang.js"],"sourcesContent":["<template>\n <div\n v-if=\"state\"\n :class=\"[suit(), !state.canRefine && suit('', 'noRefinement')]\"\n >\n <slot\n :value=\"state.value\"\n :can-refine=\"state.canRefine\"\n :refine=\"state.refine\"\n :createURL=\"state.createURL\"\n :send-event=\"state.sendEvent\"\n >\n <label :class=\"suit('label')\">\n <input\n :class=\"suit('checkbox')\"\n type=\"checkbox\"\n :name=\"state.value.name\"\n :value=\"on\"\n :checked=\"state.value.isRefined\"\n @change=\"state.refine(state.value)\"\n />\n <span :class=\"suit('labelText')\">{{ label }}</span>\n <span v-if=\"state.value.count !== null\" :class=\"suit('count')\">{{\n state.value.count.toLocaleString()\n }}</span>\n </label>\n </slot>\n </div>\n</template>\n\n<script>\nimport { connectToggleRefinement } from 'instantsearch.js/es/connectors';\n\nimport { createPanelConsumerMixin } from '../mixins/panel';\nimport { createSuitMixin } from '../mixins/suit';\nimport { createWidgetMixin } from '../mixins/widget';\n\nexport default {\n name: 'AisToggleRefinement',\n mixins: [\n createSuitMixin({ name: 'ToggleRefinement' }),\n createWidgetMixin(\n {\n connector: connectToggleRefinement,\n },\n {\n $$widgetType: 'ais.toggleRefinement',\n }\n ),\n createPanelConsumerMixin(),\n ],\n props: {\n attribute: {\n type: String,\n required: true,\n },\n label: {\n type: String,\n required: true,\n },\n on: {\n type: [String, Number, Boolean, Array],\n required: false,\n default: true,\n },\n off: {\n type: [String, Number, Boolean, Array],\n required: false,\n default: undefined,\n },\n },\n computed: {\n widgetParams() {\n return {\n attribute: this.attribute,\n label: this.label,\n on: this.on,\n off: this.off,\n };\n },\n },\n};\n</script>\n"],"names":["_ctx","_createElementBlock","class","canRefine","_renderSlot","value","refine","createURL","sendEvent","_createElementVNode","type","name","$props","checked","isRefined","onChange","count","toLocaleString"],"mappings":"iOAEUA,aADRC,eAEGC,SAAQF,UAASA,QAAMG,WAAaH,8BAErCI,sBACGC,MAAOL,QAAMK,MACbF,UAAYH,QAAMG,UAClBG,OAAQN,QAAMM,OACdC,UAAWP,QAAMO,UACjBC,UAAYR,QAAMQ,6BAEnBC,WAAQP,QAAOF,mBACbS,WACGP,QAAOF,oBACRU,KAAK,WACJC,KAAMX,QAAMK,MAAMM,KAClBN,MAAOO,KACPC,QAASb,QAAMK,MAAMS,UACrBC,wCAAQf,QAAMM,OAAON,QAAMK,qBAE9BI,UAAOP,QAAOF,wBAAsBY,mBACxBZ,QAAMK,MAAMW,WAAxBf,gBAAyCC,QAAOF,oBAC9CA,QAAMK,MAAMW,MAAMC"}