0 Tk

Pagination

Pagination

The Pagination component enables the user to select a specific page from a range of pages.

Basic pagination

{{ā€œdemoā€: ā€œBasicPagination.jsā€}}

Outlined pagination

{{ā€œdemoā€: ā€œPaginationOutlined.jsā€}}

Rounded pagination

{{ā€œdemoā€: ā€œPaginationRounded.jsā€}}

Pagination size

{{ā€œdemoā€: ā€œPaginationSize.jsā€}}

Buttons

You can optionally enable first-page and last-page buttons, or disable the previous-page and next-page buttons.

{{ā€œdemoā€: ā€œPaginationButtons.jsā€}}

Custom icons

It’s possible to customize the control icons.

{{ā€œdemoā€: ā€œCustomIcons.jsā€}}

Pagination ranges

You can specify how many digits to display either side of current page with the siblingCount prop, and adjacent to the start and end page number with the boundaryCount prop.

{{ā€œdemoā€: ā€œPaginationRanges.jsā€}}

Controlled pagination

{{ā€œdemoā€: ā€œPaginationControlled.jsā€}}

Router integration

{{ā€œdemoā€: ā€œPaginationLink.jsā€}}

usePagination

For advanced customization use cases, a headless usePagination() hook is exposed. It accepts almost the same options as the Pagination component minus all the props related to the rendering of JSX. The Pagination component is built on this hook.

import usePagination from '@mui/material/usePagination';

{{ā€œdemoā€: ā€œUsePagination.jsā€}}

Table pagination

The Pagination component was designed to paginate a list of arbitrary items when infinite loading isn’t used. It’s preferred in contexts where SEO is important, for instance, a blog.

For the pagination of a large set of tabular data, you should use the TablePagination component.

{{ā€œdemoā€: ā€œTablePaginationDemo.jsā€}}

Note that the Pagination page prop starts at 1 to match the requirement of including the value in the URL, while the TablePagination page prop starts at 0 to match the requirement of zero-based JavaScript arrays that come with rendering a lot of tabular data.

You can learn more about this use case in the table section of the documentation.

Accessibility

ARIA

The root node has a role of ā€œnavigationā€ and aria-label ā€œpagination navigationā€ by default. The page items have an aria-label that identifies the purpose of the item (ā€œgo to first pageā€, ā€œgo to previous pageā€, ā€œgo to page 1ā€ etc.). You can override these using the getItemAriaLabel prop.

Keyboard

The pagination items are in tab order, with a tabindex of ā€œ0ā€.