{"version":3,"file":"VDataTableFooter.mjs","names":["VPagination","VSelect","usePagination","useLocale","computed","genericComponent","propsFactory","useRender","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","$event"],"sources":["../../../src/components/VDataTable/VDataTableFooter.tsx"],"sourcesContent":["// Styles\nimport './VDataTableFooter.sass'\n\n// Components\nimport { VPagination } from '@/components/VPagination'\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, useRender } 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 (number | { 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        if (typeof option === 'number') {\n          return {\n            value: option,\n            title: option === -1\n              ? t('$vuetify.dataFooter.itemsPerPageAll')\n              : String(option),\n          }\n        }\n\n        return {\n          ...option,\n          title: t(option.title),\n        }\n      })\n    ))\n\n    useRender(() => (\n      <div class=\"v-data-table-footer\">\n        { slots.prepend?.() }\n\n        <div class=\"v-data-table-footer__items-per-page\">\n          <span>{ t(props.itemsPerPageText) }</span>\n\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\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\n        <div class=\"v-data-table-footer__pagination\">\n          <VPagination\n            v-model={ page.value }\n            density=\"comfortable\"\n            first-aria-label={ props.firstPageLabel }\n            last-aria-label={ props.lastPageLabel }\n            length={ pageCount.value }\n            next-aria-label={ props.nextPageLabel }\n            previous-aria-label={ props.prevPageLabel }\n            rounded\n            show-first-last-page\n            total-visible={ props.showCurrentPage ? 1 : 0 }\n            variant=\"plain\"\n          ></VPagination>\n        </div>\n      </div>\n    ))\n\n    return {}\n  },\n})\n"],"mappings":"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"}