vue-instantsearch 4.7.2 → 4.8.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/package.json +4 -4
- package/src/__tests__/common.test.js +99 -0
- package/src/components/Pagination.vue +1 -0
- package/src/components/__tests__/__snapshots__/Pagination.js.snap +42 -21
- package/src/util/__tests__/createServerRootMixin.test.js +8 -12
- 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/Pagination.vue.js +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/Pagination.vue.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=189fc463&lang.js → Pagination.vue_vue&type=template&id=455c122a&lang.js} +2 -2
- package/vue3/es/src/components/Pagination.vue_vue&type=template&id=455c122a&lang.js.map +1 -0
- package/vue3/umd/index.js +1 -1
- package/vue3/umd/index.js.map +1 -1
- package/vue3/es/src/components/Pagination.vue_vue&type=template&id=189fc463&lang.js.map +0 -1
package/vue3/es/package.json.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var r="4.
|
|
1
|
+
var r="4.8.0";export{r as version};
|
|
2
2
|
//# sourceMappingURL=package.json.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"./Pagination.vue_vue&type=script&lang.js";import{render as t}from"./Pagination.vue_vue&type=template&id=
|
|
1
|
+
import e from"./Pagination.vue_vue&type=script&lang.js";import{render as t}from"./Pagination.vue_vue&type=template&id=455c122a&lang.js";e.render=t;export default e;
|
|
2
2
|
//# sourceMappingURL=Pagination.vue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pagination.vue_vue&type=script&lang.js","sources":["../../../../src/components/Pagination.vue"],"sourcesContent":["<template>\n <div v-if=\"state\" :class=\"suit()\">\n <slot\n :refine=\"refine\"\n :createURL=\"state.createURL\"\n :current-refinement=\"state.currentRefinement\"\n :nb-hits=\"state.nbHits\"\n :nb-pages=\"state.nbPages\"\n :pages=\"state.pages\"\n :is-first-page=\"state.isFirstPage\"\n :is-last-page=\"state.isLastPage\"\n >\n <ul :class=\"suit('list')\">\n <li\n :class=\"{\n [suit('item')]: true,\n [suit('item', 'firstPage')]: true,\n [suit('item', 'disabled')]: state.isFirstPage,\n }\"\n v-if=\"showFirst\"\n >\n <slot\n name=\"first\"\n :createURL=\"() => state.createURL(0)\"\n :is-first-page=\"state.isFirstPage\"\n :refine=\"() => refine(0)\"\n >\n <template v-if=\"!state.isFirstPage\">\n <a\n :class=\"suit('link')\"\n aria-label=\"First\"\n :href=\"state.createURL(0)\"\n @click.prevent=\"refine(0)\"\n >‹‹</a\n >\n </template>\n <template v-else>\n <span :class=\"suit('link')\" aria-label=\"First\">‹‹</span>\n </template>\n </slot>\n </li>\n <li\n :class=\"{\n [suit('item')]: true,\n [suit('item', 'previousPage')]: true,\n [suit('item', 'disabled')]: state.isFirstPage,\n }\"\n v-if=\"showPrevious\"\n >\n <slot\n name=\"previous\"\n :createURL=\"() => state.createURL(state.currentRefinement - 1)\"\n :is-first-page=\"state.isFirstPage\"\n :refine=\"() => refine(state.currentRefinement - 1)\"\n >\n <template v-if=\"!state.isFirstPage\">\n <a\n :class=\"suit('link')\"\n aria-label=\"Previous\"\n :href=\"state.createURL(state.currentRefinement - 1)\"\n @click.prevent=\"refine(state.currentRefinement - 1)\"\n >‹</a\n >\n </template>\n <template v-else>\n <span :class=\"suit('link')\" aria-label=\"Previous\">‹</span>\n </template>\n </slot>\n </li>\n\n <li\n :class=\"{\n [suit('item')]: true,\n [suit('item', 'page')]: true,\n [suit('item', 'selected')]: state.currentRefinement === page,\n }\"\n v-for=\"page in state.pages\"\n :key=\"page\"\n >\n <slot\n name=\"item\"\n :page=\"page\"\n :createURL=\"() => state.createURL(page)\"\n :is-first-page=\"state.isFirstPage\"\n :is-last-page=\"state.isLastPage\"\n :refine=\"() => refine(page)\"\n >\n <a\n :class=\"suit('link')\"\n :href=\"state.createURL(page)\"\n @click.prevent=\"refine(page)\"\n >{{ page + 1 }}</a\n >\n </slot>\n </li>\n\n <li\n :class=\"{\n [suit('item')]: true,\n [suit('item', 'nextPage')]: true,\n [suit('item', 'disabled')]: state.isLastPage,\n }\"\n v-if=\"showNext\"\n >\n <slot\n name=\"next\"\n :createURL=\"() => state.createURL(state.currentRefinement + 1)\"\n :is-last-page=\"state.isLastPage\"\n :refine=\"() => refine(state.currentRefinement + 1)\"\n >\n <template v-if=\"!state.isLastPage\">\n <a\n :class=\"suit('link')\"\n aria-label=\"Next\"\n :href=\"state.createURL(state.currentRefinement + 1)\"\n @click.prevent=\"refine(state.currentRefinement + 1)\"\n >›</a\n >\n </template>\n <template v-else>\n <span :class=\"suit('link')\" aria-label=\"Next\">›</span>\n </template>\n </slot>\n </li>\n <li\n :class=\"{\n [suit('item')]: true,\n [suit('item', 'lastPage')]: true,\n [suit('item', 'disabled')]: state.isLastPage,\n }\"\n v-if=\"showLast\"\n >\n <slot\n name=\"last\"\n :createURL=\"() => state.createURL(state.nbPages - 1)\"\n :is-last-page=\"state.isLastPage\"\n :refine=\"() => refine(state.nbPages - 1)\"\n >\n <template v-if=\"!state.isLastPage\">\n <a\n :class=\"suit('link')\"\n aria-label=\"Last\"\n :href=\"state.createURL(state.nbPages - 1)\"\n @click.prevent=\"refine(state.nbPages - 1)\"\n >››</a\n >\n </template>\n <template v-else>\n <span :class=\"suit('link')\" aria-label=\"Last\">››</span>\n </template>\n </slot>\n </li>\n </ul>\n </slot>\n </div>\n</template>\n\n<script>\nimport { connectPagination } from 'instantsearch.js/es/connectors';\nimport { createPanelConsumerMixin } from '../mixins/panel';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { createSuitMixin } from '../mixins/suit';\n\nexport default {\n name: 'AisPagination',\n mixins: [\n createSuitMixin({ name: 'Pagination' }),\n createWidgetMixin(\n {\n connector: connectPagination,\n },\n {\n $$widgetType: 'ais.pagination',\n }\n ),\n createPanelConsumerMixin(),\n ],\n props: {\n padding: {\n type: Number,\n default: undefined,\n validator(value) {\n return value > 0;\n },\n },\n totalPages: {\n type: Number,\n default: undefined,\n validator(value) {\n return value > 0;\n },\n },\n showFirst: {\n type: Boolean,\n default: true,\n },\n showLast: {\n type: Boolean,\n default: true,\n },\n showNext: {\n type: Boolean,\n default: true,\n },\n showPrevious: {\n type: Boolean,\n default: true,\n },\n },\n computed: {\n widgetParams() {\n return {\n padding: this.padding,\n totalPages: this.totalPages,\n };\n },\n },\n emits: ['page-change'],\n methods: {\n refine(page) {\n const p = Math.min(Math.max(page, 0), this.state.nbPages - 1);\n this.state.refine(p);\n // TODO: do this in a general way\n this.$emit('page-change', p);\n },\n },\n};\n</script>\n"],"names":["name","mixins","createSuitMixin","createWidgetMixin","connector","connectPagination","$$widgetType","createPanelConsumerMixin","props","padding","type","Number","default","undefined","validator","value","totalPages","showFirst","Boolean","showLast","showNext","showPrevious","computed","widgetParams","this","emits","methods","refine","page","const","p","Math","min","max","state","nbPages","$emit"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Pagination.vue_vue&type=script&lang.js","sources":["../../../../src/components/Pagination.vue"],"sourcesContent":["<template>\n <div v-if=\"state\" :class=\"suit()\">\n <slot\n :refine=\"refine\"\n :createURL=\"state.createURL\"\n :current-refinement=\"state.currentRefinement\"\n :nb-hits=\"state.nbHits\"\n :nb-pages=\"state.nbPages\"\n :pages=\"state.pages\"\n :is-first-page=\"state.isFirstPage\"\n :is-last-page=\"state.isLastPage\"\n >\n <ul :class=\"suit('list')\">\n <li\n :class=\"{\n [suit('item')]: true,\n [suit('item', 'firstPage')]: true,\n [suit('item', 'disabled')]: state.isFirstPage,\n }\"\n v-if=\"showFirst\"\n >\n <slot\n name=\"first\"\n :createURL=\"() => state.createURL(0)\"\n :is-first-page=\"state.isFirstPage\"\n :refine=\"() => refine(0)\"\n >\n <template v-if=\"!state.isFirstPage\">\n <a\n :class=\"suit('link')\"\n aria-label=\"First\"\n :href=\"state.createURL(0)\"\n @click.prevent=\"refine(0)\"\n >‹‹</a\n >\n </template>\n <template v-else>\n <span :class=\"suit('link')\" aria-label=\"First\">‹‹</span>\n </template>\n </slot>\n </li>\n <li\n :class=\"{\n [suit('item')]: true,\n [suit('item', 'previousPage')]: true,\n [suit('item', 'disabled')]: state.isFirstPage,\n }\"\n v-if=\"showPrevious\"\n >\n <slot\n name=\"previous\"\n :createURL=\"() => state.createURL(state.currentRefinement - 1)\"\n :is-first-page=\"state.isFirstPage\"\n :refine=\"() => refine(state.currentRefinement - 1)\"\n >\n <template v-if=\"!state.isFirstPage\">\n <a\n :class=\"suit('link')\"\n aria-label=\"Previous\"\n :href=\"state.createURL(state.currentRefinement - 1)\"\n @click.prevent=\"refine(state.currentRefinement - 1)\"\n >‹</a\n >\n </template>\n <template v-else>\n <span :class=\"suit('link')\" aria-label=\"Previous\">‹</span>\n </template>\n </slot>\n </li>\n\n <li\n :class=\"{\n [suit('item')]: true,\n [suit('item', 'page')]: true,\n [suit('item', 'selected')]: state.currentRefinement === page,\n }\"\n v-for=\"page in state.pages\"\n :key=\"page\"\n >\n <slot\n name=\"item\"\n :page=\"page\"\n :createURL=\"() => state.createURL(page)\"\n :is-first-page=\"state.isFirstPage\"\n :is-last-page=\"state.isLastPage\"\n :refine=\"() => refine(page)\"\n >\n <a\n :class=\"suit('link')\"\n :href=\"state.createURL(page)\"\n :aria-label=\"`Page ${page + 1}`\"\n @click.prevent=\"refine(page)\"\n >{{ page + 1 }}</a\n >\n </slot>\n </li>\n\n <li\n :class=\"{\n [suit('item')]: true,\n [suit('item', 'nextPage')]: true,\n [suit('item', 'disabled')]: state.isLastPage,\n }\"\n v-if=\"showNext\"\n >\n <slot\n name=\"next\"\n :createURL=\"() => state.createURL(state.currentRefinement + 1)\"\n :is-last-page=\"state.isLastPage\"\n :refine=\"() => refine(state.currentRefinement + 1)\"\n >\n <template v-if=\"!state.isLastPage\">\n <a\n :class=\"suit('link')\"\n aria-label=\"Next\"\n :href=\"state.createURL(state.currentRefinement + 1)\"\n @click.prevent=\"refine(state.currentRefinement + 1)\"\n >›</a\n >\n </template>\n <template v-else>\n <span :class=\"suit('link')\" aria-label=\"Next\">›</span>\n </template>\n </slot>\n </li>\n <li\n :class=\"{\n [suit('item')]: true,\n [suit('item', 'lastPage')]: true,\n [suit('item', 'disabled')]: state.isLastPage,\n }\"\n v-if=\"showLast\"\n >\n <slot\n name=\"last\"\n :createURL=\"() => state.createURL(state.nbPages - 1)\"\n :is-last-page=\"state.isLastPage\"\n :refine=\"() => refine(state.nbPages - 1)\"\n >\n <template v-if=\"!state.isLastPage\">\n <a\n :class=\"suit('link')\"\n aria-label=\"Last\"\n :href=\"state.createURL(state.nbPages - 1)\"\n @click.prevent=\"refine(state.nbPages - 1)\"\n >››</a\n >\n </template>\n <template v-else>\n <span :class=\"suit('link')\" aria-label=\"Last\">››</span>\n </template>\n </slot>\n </li>\n </ul>\n </slot>\n </div>\n</template>\n\n<script>\nimport { connectPagination } from 'instantsearch.js/es/connectors';\nimport { createPanelConsumerMixin } from '../mixins/panel';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { createSuitMixin } from '../mixins/suit';\n\nexport default {\n name: 'AisPagination',\n mixins: [\n createSuitMixin({ name: 'Pagination' }),\n createWidgetMixin(\n {\n connector: connectPagination,\n },\n {\n $$widgetType: 'ais.pagination',\n }\n ),\n createPanelConsumerMixin(),\n ],\n props: {\n padding: {\n type: Number,\n default: undefined,\n validator(value) {\n return value > 0;\n },\n },\n totalPages: {\n type: Number,\n default: undefined,\n validator(value) {\n return value > 0;\n },\n },\n showFirst: {\n type: Boolean,\n default: true,\n },\n showLast: {\n type: Boolean,\n default: true,\n },\n showNext: {\n type: Boolean,\n default: true,\n },\n showPrevious: {\n type: Boolean,\n default: true,\n },\n },\n computed: {\n widgetParams() {\n return {\n padding: this.padding,\n totalPages: this.totalPages,\n };\n },\n },\n emits: ['page-change'],\n methods: {\n refine(page) {\n const p = Math.min(Math.max(page, 0), this.state.nbPages - 1);\n this.state.refine(p);\n // TODO: do this in a general way\n this.$emit('page-change', p);\n },\n },\n};\n</script>\n"],"names":["name","mixins","createSuitMixin","createWidgetMixin","connector","connectPagination","$$widgetType","createPanelConsumerMixin","props","padding","type","Number","default","undefined","validator","value","totalPages","showFirst","Boolean","showLast","showNext","showPrevious","computed","widgetParams","this","emits","methods","refine","page","const","p","Math","min","max","state","nbPages","$emit"],"mappings":"oQAoKe,CACbA,KAAM,gBACNC,OAAQ,CACNC,EAAgB,CAAEF,KAAM,eACxBG,EACE,CACEC,UAAWC,GAEb,CACEC,aAAc,mBAGlBC,KAEFC,MAAO,CACLC,QAAS,CACPC,KAAMC,OACNC,aAASC,EACTC,mBAAUC,GACR,OAAOA,EAAQ,IAGnBC,WAAY,CACVN,KAAMC,OACNC,aAASC,EACTC,mBAAUC,GACR,OAAOA,EAAQ,IAGnBE,UAAW,CACTP,KAAMQ,QACNN,SAAS,GAEXO,SAAU,CACRT,KAAMQ,QACNN,SAAS,GAEXQ,SAAU,CACRV,KAAMQ,QACNN,SAAS,GAEXS,aAAc,CACZX,KAAMQ,QACNN,SAAS,IAGbU,SAAU,CACRC,wBACE,MAAO,CACLd,QAASe,KAAKf,QACdO,WAAYQ,KAAKR,cAIvBS,MAAO,CAAC,eACRC,QAAS,CACPC,gBAAOC,GACLC,IAAMC,EAAIC,KAAKC,IAAID,KAAKE,IAAIL,EAAM,GAAIJ,KAAKU,MAAMC,QAAU,GAC3DX,KAAKU,MAAMP,OAAOG,GAElBN,KAAKY,MAAM,cAAeN"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{openBlock as e,createBlock as t,renderSlot as s,createVNode as
|
|
2
|
-
//# sourceMappingURL=Pagination.vue_vue&type=template&id=
|
|
1
|
+
import{openBlock as e,createBlock as t,renderSlot as s,createVNode as a,withModifiers as i,createCommentVNode as n,Fragment as r,renderList as u,toDisplayString as c}from"vue";function l(l,f,o,g,P,L){return l.state?(e(),t("div",{key:0,class:l.suit()},[s(l.$slots,"default",{refine:L.refine,createURL:l.state.createURL,currentRefinement:l.state.currentRefinement,nbHits:l.state.nbHits,nbPages:l.state.nbPages,pages:l.state.pages,isFirstPage:l.state.isFirstPage,isLastPage:l.state.isLastPage},function(){var g,P,k,m;return[a("ul",{class:l.suit("list")},[o.showFirst?(e(),t("li",{key:0,class:(g={},g[l.suit("item")]=!0,g[l.suit("item","firstPage")]=!0,g[l.suit("item","disabled")]=l.state.isFirstPage,g)},[s(l.$slots,"first",{createURL:function(){return l.state.createURL(0)},isFirstPage:l.state.isFirstPage,refine:function(){return L.refine(0)}},function(){return[l.state.isFirstPage?(e(),t("span",{key:1,class:l.suit("link"),"aria-label":"First"},"‹‹",2)):(e(),t("a",{key:0,class:l.suit("link"),"aria-label":"First",href:l.state.createURL(0),onClick:f[1]||(f[1]=i(function(e){return L.refine(0)},["prevent"]))},"‹‹",10,["href"]))]})],2)):n("",!0),o.showPrevious?(e(),t("li",{key:1,class:(P={},P[l.suit("item")]=!0,P[l.suit("item","previousPage")]=!0,P[l.suit("item","disabled")]=l.state.isFirstPage,P)},[s(l.$slots,"previous",{createURL:function(){return l.state.createURL(l.state.currentRefinement-1)},isFirstPage:l.state.isFirstPage,refine:function(){return L.refine(l.state.currentRefinement-1)}},function(){return[l.state.isFirstPage?(e(),t("span",{key:1,class:l.suit("link"),"aria-label":"Previous"},"‹",2)):(e(),t("a",{key:0,class:l.suit("link"),"aria-label":"Previous",href:l.state.createURL(l.state.currentRefinement-1),onClick:f[2]||(f[2]=i(function(e){return L.refine(l.state.currentRefinement-1)},["prevent"]))},"‹",10,["href"]))]})],2)):n("",!0),(e(!0),t(r,null,u(l.state.pages,function(n){var r;return e(),t("li",{class:(r={},r[l.suit("item")]=!0,r[l.suit("item","page")]=!0,r[l.suit("item","selected")]=l.state.currentRefinement===n,r),key:n},[s(l.$slots,"item",{page:n,createURL:function(){return l.state.createURL(n)},isFirstPage:l.state.isFirstPage,isLastPage:l.state.isLastPage,refine:function(){return L.refine(n)}},function(){return[a("a",{class:l.suit("link"),href:l.state.createURL(n),"aria-label":"Page "+(n+1),onClick:i(function(e){return L.refine(n)},["prevent"])},c(n+1),11,["href","aria-label","onClick"])]})],2)}),128)),o.showNext?(e(),t("li",{key:2,class:(k={},k[l.suit("item")]=!0,k[l.suit("item","nextPage")]=!0,k[l.suit("item","disabled")]=l.state.isLastPage,k)},[s(l.$slots,"next",{createURL:function(){return l.state.createURL(l.state.currentRefinement+1)},isLastPage:l.state.isLastPage,refine:function(){return L.refine(l.state.currentRefinement+1)}},function(){return[l.state.isLastPage?(e(),t("span",{key:1,class:l.suit("link"),"aria-label":"Next"},"›",2)):(e(),t("a",{key:0,class:l.suit("link"),"aria-label":"Next",href:l.state.createURL(l.state.currentRefinement+1),onClick:f[3]||(f[3]=i(function(e){return L.refine(l.state.currentRefinement+1)},["prevent"]))},"›",10,["href"]))]})],2)):n("",!0),o.showLast?(e(),t("li",{key:3,class:(m={},m[l.suit("item")]=!0,m[l.suit("item","lastPage")]=!0,m[l.suit("item","disabled")]=l.state.isLastPage,m)},[s(l.$slots,"last",{createURL:function(){return l.state.createURL(l.state.nbPages-1)},isLastPage:l.state.isLastPage,refine:function(){return L.refine(l.state.nbPages-1)}},function(){return[l.state.isLastPage?(e(),t("span",{key:1,class:l.suit("link"),"aria-label":"Last"},"››",2)):(e(),t("a",{key:0,class:l.suit("link"),"aria-label":"Last",href:l.state.createURL(l.state.nbPages-1),onClick:f[4]||(f[4]=i(function(e){return L.refine(l.state.nbPages-1)},["prevent"]))},"››",10,["href"]))]})],2)):n("",!0)],2)]})],2)):n("",!0)}export{l as render};
|
|
2
|
+
//# sourceMappingURL=Pagination.vue_vue&type=template&id=455c122a&lang.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pagination.vue_vue&type=template&id=455c122a&lang.js","sources":["../../../../src/components/Pagination.vue?vue&type=template&id=455c122a&lang.js"],"sourcesContent":["<template>\n <div v-if=\"state\" :class=\"suit()\">\n <slot\n :refine=\"refine\"\n :createURL=\"state.createURL\"\n :current-refinement=\"state.currentRefinement\"\n :nb-hits=\"state.nbHits\"\n :nb-pages=\"state.nbPages\"\n :pages=\"state.pages\"\n :is-first-page=\"state.isFirstPage\"\n :is-last-page=\"state.isLastPage\"\n >\n <ul :class=\"suit('list')\">\n <li\n :class=\"{\n [suit('item')]: true,\n [suit('item', 'firstPage')]: true,\n [suit('item', 'disabled')]: state.isFirstPage,\n }\"\n v-if=\"showFirst\"\n >\n <slot\n name=\"first\"\n :createURL=\"() => state.createURL(0)\"\n :is-first-page=\"state.isFirstPage\"\n :refine=\"() => refine(0)\"\n >\n <template v-if=\"!state.isFirstPage\">\n <a\n :class=\"suit('link')\"\n aria-label=\"First\"\n :href=\"state.createURL(0)\"\n @click.prevent=\"refine(0)\"\n >‹‹</a\n >\n </template>\n <template v-else>\n <span :class=\"suit('link')\" aria-label=\"First\">‹‹</span>\n </template>\n </slot>\n </li>\n <li\n :class=\"{\n [suit('item')]: true,\n [suit('item', 'previousPage')]: true,\n [suit('item', 'disabled')]: state.isFirstPage,\n }\"\n v-if=\"showPrevious\"\n >\n <slot\n name=\"previous\"\n :createURL=\"() => state.createURL(state.currentRefinement - 1)\"\n :is-first-page=\"state.isFirstPage\"\n :refine=\"() => refine(state.currentRefinement - 1)\"\n >\n <template v-if=\"!state.isFirstPage\">\n <a\n :class=\"suit('link')\"\n aria-label=\"Previous\"\n :href=\"state.createURL(state.currentRefinement - 1)\"\n @click.prevent=\"refine(state.currentRefinement - 1)\"\n >‹</a\n >\n </template>\n <template v-else>\n <span :class=\"suit('link')\" aria-label=\"Previous\">‹</span>\n </template>\n </slot>\n </li>\n\n <li\n :class=\"{\n [suit('item')]: true,\n [suit('item', 'page')]: true,\n [suit('item', 'selected')]: state.currentRefinement === page,\n }\"\n v-for=\"page in state.pages\"\n :key=\"page\"\n >\n <slot\n name=\"item\"\n :page=\"page\"\n :createURL=\"() => state.createURL(page)\"\n :is-first-page=\"state.isFirstPage\"\n :is-last-page=\"state.isLastPage\"\n :refine=\"() => refine(page)\"\n >\n <a\n :class=\"suit('link')\"\n :href=\"state.createURL(page)\"\n :aria-label=\"`Page ${page + 1}`\"\n @click.prevent=\"refine(page)\"\n >{{ page + 1 }}</a\n >\n </slot>\n </li>\n\n <li\n :class=\"{\n [suit('item')]: true,\n [suit('item', 'nextPage')]: true,\n [suit('item', 'disabled')]: state.isLastPage,\n }\"\n v-if=\"showNext\"\n >\n <slot\n name=\"next\"\n :createURL=\"() => state.createURL(state.currentRefinement + 1)\"\n :is-last-page=\"state.isLastPage\"\n :refine=\"() => refine(state.currentRefinement + 1)\"\n >\n <template v-if=\"!state.isLastPage\">\n <a\n :class=\"suit('link')\"\n aria-label=\"Next\"\n :href=\"state.createURL(state.currentRefinement + 1)\"\n @click.prevent=\"refine(state.currentRefinement + 1)\"\n >›</a\n >\n </template>\n <template v-else>\n <span :class=\"suit('link')\" aria-label=\"Next\">›</span>\n </template>\n </slot>\n </li>\n <li\n :class=\"{\n [suit('item')]: true,\n [suit('item', 'lastPage')]: true,\n [suit('item', 'disabled')]: state.isLastPage,\n }\"\n v-if=\"showLast\"\n >\n <slot\n name=\"last\"\n :createURL=\"() => state.createURL(state.nbPages - 1)\"\n :is-last-page=\"state.isLastPage\"\n :refine=\"() => refine(state.nbPages - 1)\"\n >\n <template v-if=\"!state.isLastPage\">\n <a\n :class=\"suit('link')\"\n aria-label=\"Last\"\n :href=\"state.createURL(state.nbPages - 1)\"\n @click.prevent=\"refine(state.nbPages - 1)\"\n >››</a\n >\n </template>\n <template v-else>\n <span :class=\"suit('link')\" aria-label=\"Last\">››</span>\n </template>\n </slot>\n </li>\n </ul>\n </slot>\n </div>\n</template>\n\n<script>\nimport { connectPagination } from 'instantsearch.js/es/connectors';\nimport { createPanelConsumerMixin } from '../mixins/panel';\nimport { createWidgetMixin } from '../mixins/widget';\nimport { createSuitMixin } from '../mixins/suit';\n\nexport default {\n name: 'AisPagination',\n mixins: [\n createSuitMixin({ name: 'Pagination' }),\n createWidgetMixin(\n {\n connector: connectPagination,\n },\n {\n $$widgetType: 'ais.pagination',\n }\n ),\n createPanelConsumerMixin(),\n ],\n props: {\n padding: {\n type: Number,\n default: undefined,\n validator(value) {\n return value > 0;\n },\n },\n totalPages: {\n type: Number,\n default: undefined,\n validator(value) {\n return value > 0;\n },\n },\n showFirst: {\n type: Boolean,\n default: true,\n },\n showLast: {\n type: Boolean,\n default: true,\n },\n showNext: {\n type: Boolean,\n default: true,\n },\n showPrevious: {\n type: Boolean,\n default: true,\n },\n },\n computed: {\n widgetParams() {\n return {\n padding: this.padding,\n totalPages: this.totalPages,\n };\n },\n },\n emits: ['page-change'],\n methods: {\n refine(page) {\n const p = Math.min(Math.max(page, 0), this.state.nbPages - 1);\n this.state.refine(p);\n // TODO: do this in a general way\n this.$emit('page-change', p);\n },\n },\n};\n</script>\n"],"names":["_ctx","_createBlock","class","_renderSlot","refine","$options","createURL","currentRefinement","nbHits","nbPages","pages","isFirstPage","isLastPage","_createVNode","$props","aria-label","href","onClick","page","key"],"mappings":"+MACaA,aAAXC,eAAmBC,MAAOF,WACxBG,sBACGC,OAAQC,SACRC,UAAWN,QAAMM,UACjBC,kBAAoBP,QAAMO,kBAC1BC,OAASR,QAAMQ,OACfC,QAAUT,QAAMS,QAChBC,MAAOV,QAAMU,MACbC,YAAeX,QAAMW,YACrBC,WAAcZ,QAAMY,0CAErBC,QAAKX,MAAOF,iBAOFc,iBANRb,cACGC,wHAODC,oBAEGG,4BAAiBN,QAAMM,cACvBK,YAAeX,QAAMW,YACrBP,yBAAcC,gCAEEL,QAAMW,iBAUrBV,gBAAOC,MAAOF,eAAce,aAAW,SAAQ,cAT/Cd,aACGC,MAAOF,eACRe,aAAW,QACVC,KAAMhB,QAAMM,aACZW,yCAAeZ,4BACf,oCAcDS,oBANRb,cACGC,2HAODC,uBAEGG,4BAAiBN,QAAMM,UAAUN,QAAMO,sBACvCI,YAAeX,QAAMW,YACrBP,yBAAcC,SAAOL,QAAMO,yCAEXP,QAAMW,iBAUrBV,gBAAOC,MAAOF,eAAce,aAAW,YAAW,aATlDd,aACGC,MAAOF,eACRe,aAAW,WACVC,KAAMhB,QAAMM,UAAUN,QAAMO,qBAC5BU,yCAAeZ,SAAOL,QAAMO,qCAC5B,0CASTN,WAMiBD,QAAMU,eAAdQ,oBANTjB,QACGC,2HAMAiB,IAAKD,IAENf,mBAEGe,KAAMA,EACNZ,4BAAiBN,QAAMM,UAAUY,IACjCP,YAAeX,QAAMW,YACrBC,WAAcZ,QAAMY,WACpBR,yBAAcC,SAAOa,uBAEtBL,OACGX,MAAOF,eACPgB,KAAMhB,QAAMM,UAAUY,GACtBH,sBAAoBG,KACpBD,6BAAeZ,SAAOa,oBACnBA,wDAWFJ,gBANRb,cACGC,sHAODC,mBAEGG,4BAAiBN,QAAMM,UAAUN,QAAMO,sBACvCK,WAAcZ,QAAMY,WACpBR,yBAAcC,SAAOL,QAAMO,yCAEXP,QAAMY,gBAUrBX,gBAAOC,MAAOF,eAAce,aAAW,QAAO,aAT9Cd,aACGC,MAAOF,eACRe,aAAW,OACVC,KAAMhB,QAAMM,UAAUN,QAAMO,qBAC5BU,yCAAeZ,SAAOL,QAAMO,qCAC5B,mCAcDO,gBANRb,cACGC,sHAODC,mBAEGG,4BAAiBN,QAAMM,UAAUN,QAAMS,YACvCG,WAAcZ,QAAMY,WACpBR,yBAAcC,SAAOL,QAAMS,+BAEXT,QAAMY,gBAUrBX,gBAAOC,MAAOF,eAAce,aAAW,QAAO,cAT9Cd,aACGC,MAAOF,eACRe,aAAW,OACVC,KAAMhB,QAAMM,UAAUN,QAAMS,WAC5BQ,yCAAeZ,SAAOL,QAAMS,2BAC5B"}
|