Skip to content

Data Table Pagination

The VDataTablePagination component is a pagination component for use with data table. It allows you to easily paginate through large data sets and customize the number of items displayed per page.

Usage

Basic Usage

To use the VDataTablePagination component in its most basic form, you can include it in your template and bind it to a page number variable using the v-model directive. You also need to specify the total-items prop, which is the total number of items in your data set, and the items-per-page prop, which is the number of items to display per page.

INFO

The VDataTablePagination component is registered globally when you install with @morpheme/ui. So you don't need to import it manually.

Rows per page slot

You can customize the rows per page dropdown by using the rowsPerPage slot. The slot provides the value and items data properties, which correspond to the currently selected rows per page value and the available rows per page options, respectively.

Meta slot

The meta slot allows you to customize the text displayed above the pagination controls. It provides several data properties including showingText, start, end, fromText, totalItems, and dataText.

Props

NameTypeDefault
modelValueNumber1
totalItemsNumber0
itemsPerPageNumber10
itemsPerPageOptionsArray as PropType<number[]>[25, 50, 100]
showingTextString'Showing'
backgroundColorString''
dataTextString'data'
fromTextString'from'
paginationObject as PropType<VPagination>{}
itemsPerPagePropsObject{}

Events

update:modelValue

The update:modelValue event is emitted by the VDataTablePagination component when the current page number is updated. This can occur when the user clicks on a page number in the pagination control or when the modelValue prop is changed programmatically.

vue
<template>
  <VDataTablePagination @update:modelValue="handle" />
</template>
<template>
  <VDataTablePagination @update:modelValue="handle" />
</template>

update:itemsPerPage

The update:itemsPerPage event is emitted by the VDataTablePagination component when the number of items per page is updated. This can occur when the user selects a different value from the items per page dropdown or when the itemsPerPage prop is changed programmatically.

vue
<template>
  <VDataTablePagination @update:itemsPerPage="handle" />
</template>
<template>
  <VDataTablePagination @update:itemsPerPage="handle" />
</template>

update:itemsPerPageOptions

The update:itemsPerPageOptions event is emitted by the VDataTablePagination component when the itemsPerPageOptions prop is changed. This prop determines the options that are displayed in the items per page dropdown.

vue
<template>
  <VDataTablePagination @update:itemsPerPageOptions="handle" />
</template>
<template>
  <VDataTablePagination @update:itemsPerPageOptions="handle" />
</template>

Slots

rowsPerPage

The rowsPerPage slot is a scoped slot provided by the VDataTablePagination component that allows you to customize the rows per page dropdown. The value prop contains the current value of the rows per page and the items prop contains the available options for the rows per page dropdown. You can use this slot to customize the display or behavior of the rows per page dropdown.

vue
<template>
  <VDataTablePagination>
    <template #rowsPerPage="{value, items}"> ... </template>
  </VDataTablePagination>
</template>
<template>
  <VDataTablePagination>
    <template #rowsPerPage="{value, items}"> ... </template>
  </VDataTablePagination>
</template>

meta

The meta slot is also a scoped slot provided by the VDataTablePagination component that allows you to customize the display of the pagination meta information. The showingText prop contains the text to display before the range of items being shown (e.g. "Showing"). The start prop contains the index of the first item being shown. The end prop contains the index of the last item being shown. The fromText prop contains the text to display between the range of items being shown and the total number of items (e.g. "of"). The totalItems prop contains the total number of items. The dataText prop contains the text to display after the total number of items (e.g. "items"). You can use this slot to customize the display of the pagination meta information.

vue
<template>
  <VDataTablePagination>
    <template #meta="{showingText, start, end, fromText, totalItems, dataText}">
      ...
    </template>
  </VDataTablePagination>
</template>
<template>
  <VDataTablePagination>
    <template #meta="{showingText, start, end, fromText, totalItems, dataText}">
      ...
    </template>
  </VDataTablePagination>
</template>

default

The default slot allows you to customize the default content of the VDataTablePagination component. This can be used to add additional pagination controls or to override the default pagination controls provided by the component.

vue
<template>
  <VDataTablePagination> ... </VDataTablePagination>
</template>
<template>
  <VDataTablePagination> ... </VDataTablePagination>
</template>

CSS Variables

scss
:root {
  --v-data-table-pagination-bg-color: var(--color-white);
  --v-data-table-pagination-border-color: var(--color-gray-200);
  --v-data-table-pagination-text-color: var(--color-gray-700);
}
:root {
  --v-data-table-pagination-bg-color: var(--color-white);
  --v-data-table-pagination-border-color: var(--color-gray-200);
  --v-data-table-pagination-text-color: var(--color-gray-700);
}

Storybook

View Storybook documentation here.