Table Pagination
Table Pagination is an interface tool for splitting up large amounts of data to make it easier for users to navigate.
TablePagination API
Import
import TablePagination from '@mui/base/TablePagination';
// or
import { TablePagination } from '@mui/base';
Props
Props of the native component are also available.
Name | Type | Default | Description |
---|---|---|---|
count* | number | The total number of rows. To enable server side pagination for an unknown number of items, provide -1. | |
onPageChange* | func | Callback fired when the page is changed. Signature: function(event: React.MouseEvent<HTMLButtonElement> | null, page: number) => void event: The event source of the callback. page: The page selected. | |
page* | integer | The zero-based index of the current page. | |
rowsPerPage* | integer | The number of rows per page. Set -1 to display all the rows. | |
getItemAriaLabel | func | function defaultGetAriaLabel(type: ItemAriaLabelType) { return `Go to ${type} page`; } | Accepts a function which returns a string value that provides a user-friendly name for the current page. This is important for screen reader users. For localization purposes, you can use the provided translations. Signature: function(type: string) => string type: The link or button type to format ('first' | 'last' | 'next' | 'previous'). |
labelDisplayedRows | func | function defaultLabelDisplayedRows({ from, to, count }: LabelDisplayedRowsArgs) { return `${from}–${to} of ${count !== -1 ? count : `more than ${to}`}`; } | Customize the displayed rows label. Invoked with a { from, to, count, page } object.For localization purposes, you can use the provided translations. |
labelId | string | Id of the label element within the pagination. | |
labelRowsPerPage | node | 'Rows per page:' | Customize the rows per page label. For localization purposes, you can use the provided translations. |
onRowsPerPageChange | func | Callback fired when the number of rows per page is changed. Signature: function(event: React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>) => void event: The event source of the callback. | |
rowsPerPageOptions | Array<number | { label: string, value: number }> | [10, 25, 50, 100] | Customizes the options of the rows per page select field. If less than two options are available, no select field will be displayed. Use -1 for the value with a custom label to show all the rows. |
selectId | string | Id of the select element within the pagination. | |
slotProps | { actions?: func | object, displayedRows?: func | object, menuItem?: func | object, root?: func | object, select?: func | object, selectLabel?: func | object, spacer?: func | object, toolbar?: func | object } | {} | The props used for each slot inside the TablePagination. |
slots | { actions?: elementType, displayedRows?: elementType, menuItem?: elementType, root?: elementType, select?: elementType, selectLabel?: elementType, spacer?: elementType, toolbar?: elementType } | {} | The components used for each slot inside the TablePagination. Either a string to use a HTML element or a component. See Slots API below for more details. |
The
ref
is forwarded to the root element.Slots
To learn how to customize the slot, check out the Overriding component structure guide.
Name | Default class | Default HTML tag | Description |
---|---|---|---|
root | .MuiTablePagination-root | 'td' | The component that renders the root. |
actions | .MuiTablePagination-actions | TablePaginationActions | The component that renders the actions. |
select | .MuiTablePagination-select | 'select' | The component that renders the select. |
selectLabel | .MuiTablePagination-selectLabel | 'p' | The component that renders the select label. |
menuItem | .MuiTablePagination-menuItem | 'option' | The component that renders the menu item. |
displayedRows | .MuiTablePagination-displayedRows | 'p' | The component that renders the displayed rows. |
toolbar | .MuiTablePagination-toolbar | 'div' | The component that renders the toolbar. |
spacer | .MuiTablePagination-spacer | 'div' | The component that renders the spacer. |
You can override the style of the component using one of these customization options:
- With a global class name.
- With a rule name as part of the component's
styleOverrides
property in a custom theme.
CSS classes
These class names are useful for styling with CSS. They are applied to the root slot when specific states are triggered.
Global class | Description |
---|---|
.MuiTablePagination-input | Class name applied to the Select component root element. |
.MuiTablePagination-selectIcon | Class name applied to the Select component icon class. |
.MuiTablePagination-selectRoot | Class name applied to the Select component root element. |