vuetify
Version:
Vue Material Component Framework
1 lines • 8.4 kB
Source Map (JSON)
{"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":"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"}