{"version":3,"file":"VDataTableFooter.mjs","names":["VBtn","VSelect","usePagination","useLocale","computed","genericComponent","propsFactory","makeVDataTableFooterProps","prevIcon","type","String","default","nextIcon","firstIcon","lastIcon","itemsPerPageText","pageText","firstPageLabel","prevPageLabel","nextPageLabel","lastPageLabel","itemsPerPageOptions","Array","value","title","showCurrentPage","Boolean","VDataTableFooter","name","props","setup","_ref","slots","t","page","pageCount","startIndex","stopIndex","itemsLength","itemsPerPage","setItemsPerPage","map","option","_createVNode","prepend","v","Number","onClick","Math","max","min"],"sources":["../../../src/labs/VDataTable/VDataTableFooter.tsx"],"sourcesContent":["// Styles\nimport './VDataTableFooter.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VSelect } from '@/components/VSelect'\n\n// Composables\nimport { usePagination } from './composables/paginate'\nimport { useLocale } from '@/composables/locale'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const makeVDataTableFooterProps = propsFactory({\n  prevIcon: {\n    type: String,\n    default: '$prev',\n  },\n  nextIcon: {\n    type: String,\n    default: '$next',\n  },\n  firstIcon: {\n    type: String,\n    default: '$first',\n  },\n  lastIcon: {\n    type: String,\n    default: '$last',\n  },\n  itemsPerPageText: {\n    type: String,\n    default: '$vuetify.dataFooter.itemsPerPageText',\n  },\n  pageText: {\n    type: String,\n    default: '$vuetify.dataFooter.pageText',\n  },\n  firstPageLabel: {\n    type: String,\n    default: '$vuetify.dataFooter.firstPage',\n  },\n  prevPageLabel: {\n    type: String,\n    default: '$vuetify.dataFooter.prevPage',\n  },\n  nextPageLabel: {\n    type: String,\n    default: '$vuetify.dataFooter.nextPage',\n  },\n  lastPageLabel: {\n    type: String,\n    default: '$vuetify.dataFooter.lastPage',\n  },\n  itemsPerPageOptions: {\n    type: Array as PropType<readonly { title: string, value: number }[]>,\n    default: () => ([\n      { value: 10, title: '10' },\n      { value: 25, title: '25' },\n      { value: 50, title: '50' },\n      { value: 100, title: '100' },\n      { value: -1, title: '$vuetify.dataFooter.itemsPerPageAll' },\n    ]),\n  },\n  showCurrentPage: Boolean,\n}, 'VDataTableFooter')\n\nexport const VDataTableFooter = genericComponent<{ prepend: never }>()({\n  name: 'VDataTableFooter',\n\n  props: makeVDataTableFooterProps(),\n\n  setup (props, { slots }) {\n    const { t } = useLocale()\n    const { page, pageCount, startIndex, stopIndex, itemsLength, itemsPerPage, setItemsPerPage } = usePagination()\n\n    const itemsPerPageOptions = computed(() => (\n      props.itemsPerPageOptions.map(option => ({\n        ...option,\n        title: t(option.title),\n      }))\n    ))\n\n    return () => (\n      <div\n        class=\"v-data-table-footer\"\n      >\n        { slots.prepend?.() }\n        <div class=\"v-data-table-footer__items-per-page\">\n          <span>{ t(props.itemsPerPageText) }</span>\n          <VSelect\n            items={ itemsPerPageOptions.value }\n            modelValue={ itemsPerPage.value }\n            onUpdate:modelValue={ v => setItemsPerPage(Number(v)) }\n            density=\"compact\"\n            variant=\"outlined\"\n            hide-details\n          />\n        </div>\n        <div class=\"v-data-table-footer__info\">\n          <div>\n            { t(props.pageText, !itemsLength.value ? 0 : startIndex.value + 1, stopIndex.value, itemsLength.value) }\n          </div>\n        </div>\n        <div class=\"v-data-table-footer__pagination\">\n          <VBtn\n            icon={ props.firstIcon }\n            variant=\"plain\"\n            onClick={ () => page.value = 1 }\n            disabled={ page.value === 1 }\n            aria-label={ t(props.firstPageLabel) }\n          />\n          <VBtn\n            icon={ props.prevIcon }\n            variant=\"plain\"\n            onClick={ () => page.value = Math.max(1, page.value - 1) }\n            disabled={ page.value === 1 }\n            aria-label={ t(props.prevPageLabel) }\n          />\n          { props.showCurrentPage && (\n            <span key=\"page\" class=\"v-data-table-footer__page\">{ page.value }</span>\n          )}\n          <VBtn\n            icon={ props.nextIcon }\n            variant=\"plain\"\n            onClick={ () => page.value = Math.min(pageCount.value, page.value + 1) }\n            disabled={ page.value === pageCount.value }\n            aria-label={ t(props.nextPageLabel) }\n          />\n          <VBtn\n            icon={ props.lastIcon }\n            variant=\"plain\"\n            onClick={ () => page.value = pageCount.value }\n            disabled={ page.value === pageCount.value }\n            aria-label={ t(props.lastPageLabel) }\n          />\n        </div>\n      </div>\n    )\n  },\n})\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,IAAI;AAAA,SACJC,OAAO,8CAEhB;AAAA,SACSC,aAAa;AAAA,SACbC,SAAS,wCAElB;AACA,SAASC,QAAQ,QAAQ,KAAK;AAAA,SACrBC,gBAAgB,EAAEC,YAAY,gCAEvC;AAGA,OAAO,MAAMC,yBAAyB,GAAGD,YAAY,CAAC;EACpDE,QAAQ,EAAE;IACRC,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDC,QAAQ,EAAE;IACRH,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDE,SAAS,EAAE;IACTJ,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDG,QAAQ,EAAE;IACRL,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDI,gBAAgB,EAAE;IAChBN,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDK,QAAQ,EAAE;IACRP,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDM,cAAc,EAAE;IACdR,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDO,aAAa,EAAE;IACbT,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDQ,aAAa,EAAE;IACbV,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDS,aAAa,EAAE;IACbX,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDU,mBAAmB,EAAE;IACnBZ,IAAI,EAAEa,KAA8D;IACpEX,OAAO,EAAEA,CAAA,KAAO,CACd;MAAEY,KAAK,EAAE,EAAE;MAAEC,KAAK,EAAE;IAAK,CAAC,EAC1B;MAAED,KAAK,EAAE,EAAE;MAAEC,KAAK,EAAE;IAAK,CAAC,EAC1B;MAAED,KAAK,EAAE,EAAE;MAAEC,KAAK,EAAE;IAAK,CAAC,EAC1B;MAAED,KAAK,EAAE,GAAG;MAAEC,KAAK,EAAE;IAAM,CAAC,EAC5B;MAAED,KAAK,EAAE,CAAC,CAAC;MAAEC,KAAK,EAAE;IAAsC,CAAC;EAE/D,CAAC;EACDC,eAAe,EAAEC;AACnB,CAAC,EAAE,kBAAkB,CAAC;AAEtB,OAAO,MAAMC,gBAAgB,GAAGtB,gBAAgB,EAAsB,CAAC;EACrEuB,IAAI,EAAE,kBAAkB;EAExBC,KAAK,EAAEtB,yBAAyB,EAAE;EAElCuB,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrB,MAAM;MAAEE;IAAE,CAAC,GAAG9B,SAAS,EAAE;IACzB,MAAM;MAAE+B,IAAI;MAAEC,SAAS;MAAEC,UAAU;MAAEC,SAAS;MAAEC,WAAW;MAAEC,YAAY;MAAEC;IAAgB,CAAC,GAAGtC,aAAa,EAAE;IAE9G,MAAMmB,mBAAmB,GAAGjB,QAAQ,CAAC,MACnCyB,KAAK,CAACR,mBAAmB,CAACoB,GAAG,CAACC,MAAM,KAAK;MACvC,GAAGA,MAAM;MACTlB,KAAK,EAAES,CAAC,CAACS,MAAM,CAAClB,KAAK;IACvB,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,MAAAmB,YAAA;MAAA,SAEG;IAAqB,IAEzBX,KAAK,CAACY,OAAO,IAAI,EAAAD,YAAA;MAAA,SACR;IAAqC,IAAAA,YAAA,gBACtCV,CAAC,CAACJ,KAAK,CAACd,gBAAgB,CAAC,IAAA4B,YAAA,CAAA1C,OAAA;MAAA,SAEvBoB,mBAAmB,CAACE,KAAK;MAAA,cACpBgB,YAAY,CAAChB,KAAK;MAAA,uBACTsB,CAAC,IAAIL,eAAe,CAACM,MAAM,CAACD,CAAC,CAAC,CAAC;MAAA,WAC7C,SAAS;MAAA,WACT,UAAU;MAAA;IAAA,YAAAF,YAAA;MAAA,SAIX;IAA2B,IAAAA,YAAA,eAEhCV,CAAC,CAACJ,KAAK,CAACb,QAAQ,EAAE,CAACsB,WAAW,CAACf,KAAK,GAAG,CAAC,GAAGa,UAAU,CAACb,KAAK,GAAG,CAAC,EAAEc,SAAS,CAACd,KAAK,EAAEe,WAAW,CAACf,KAAK,CAAC,MAAAoB,YAAA;MAAA,SAG/F;IAAiC,IAAAA,YAAA,CAAA3C,IAAA;MAAA,QAEjC6B,KAAK,CAAChB,SAAS;MAAA,WACd,OAAO;MAAA,WACLkC,CAAA,KAAMb,IAAI,CAACX,KAAK,GAAG,CAAC;MAAA,YACnBW,IAAI,CAACX,KAAK,KAAK,CAAC;MAAA,cACdU,CAAC,CAACJ,KAAK,CAACZ,cAAc;IAAC,UAAA0B,YAAA,CAAA3C,IAAA;MAAA,QAG7B6B,KAAK,CAACrB,QAAQ;MAAA,WACb,OAAO;MAAA,WACLuC,CAAA,KAAMb,IAAI,CAACX,KAAK,GAAGyB,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEf,IAAI,CAACX,KAAK,GAAG,CAAC,CAAC;MAAA,YAC7CW,IAAI,CAACX,KAAK,KAAK,CAAC;MAAA,cACdU,CAAC,CAACJ,KAAK,CAACX,aAAa;IAAC,UAEnCW,KAAK,CAACJ,eAAe,IAAAkB,YAAA;MAAA,OACX,MAAM;MAAA,SAAO;IAA2B,IAAGT,IAAI,CAACX,KAAK,EAChE,EAAAoB,YAAA,CAAA3C,IAAA;MAAA,QAEQ6B,KAAK,CAACjB,QAAQ;MAAA,WACb,OAAO;MAAA,WACLmC,CAAA,KAAMb,IAAI,CAACX,KAAK,GAAGyB,IAAI,CAACE,GAAG,CAACf,SAAS,CAACZ,KAAK,EAAEW,IAAI,CAACX,KAAK,GAAG,CAAC,CAAC;MAAA,YAC3DW,IAAI,CAACX,KAAK,KAAKY,SAAS,CAACZ,KAAK;MAAA,cAC5BU,CAAC,CAACJ,KAAK,CAACV,aAAa;IAAC,UAAAwB,YAAA,CAAA3C,IAAA;MAAA,QAG5B6B,KAAK,CAACf,QAAQ;MAAA,WACb,OAAO;MAAA,WACLiC,CAAA,KAAMb,IAAI,CAACX,KAAK,GAAGY,SAAS,CAACZ,KAAK;MAAA,YACjCW,IAAI,CAACX,KAAK,KAAKY,SAAS,CAACZ,KAAK;MAAA,cAC5BU,CAAC,CAACJ,KAAK,CAACT,aAAa;IAAC,YAI1C;EACH;AACF,CAAC,CAAC"}