Pagination is a component that provides a set of controls to navigate through long lists of data.
Using pagination is highly recommended for tables and long lists of data that users prefer to browse page by page.
Component consists of the following:
- The margins between buttons in the component are always 8px.
- The margins between different controls are 16px, such as between the buttons and the input for the - current page, and between the input for the current page and the select.
The margin from the table to the pagination is consistently 16px.
Number of the rows
We provide some recommendations for the table size:
- Use a minimum of two user screens (± 2000 px) for the table.
- Display a maximum of 100 lines (if the lines occupy two lines, then 50 lines, etc.).
- The table should scroll to the beginning when the user moves between pages.
- After sorting and filtering, the pagination always returns the user to the first page.
|Opens the first page|
|Opens the previous page|
|Opens the next page|
|When the input is in focus, a clickable |
The current page should always be displayed in the input:
- When the input is unfocused, show the current page, even if the user has changed this value but hasn’t pressed
Enteror clicked the icon inside the input.
- If the input is empty (for example, the user cleared it) or "0" is entered, then the user will move to the first page by clicking the icon inside the input or pressing
- This input restricts the entry of any symbols except numerical characters.
The link at the end of the pagination shows the total number of pages. The user moves to the last page by clicking it.
States and cases
User is on the first page
In this case, the "First page" button and the "Previous" button are
User is on the last page
The "Next page" button becomes
disabled, and the link to the last page appears as plain text.
User enters a value that exceeds the number of pages
In this case, there should be no error shown; instead, the user should be moved to the last page.
One page only
Use this state only when there is some data, and there might be more data.
If there is no data or the filter is applied, pagination shouldn't be displayed. Instead, the table should contain a message indicating that there is no data.
During loading, don’t display pagination.
Select for choosing the number of rows
After the user changes the value in the select, the page should be refreshed, and the value of the table rows from the select should be applied.
Use only these values for the select: 10, 20, 50, 100.
Impossible to calculate the exact number of pages
In this case, add the
tilde (≈) to the number of pages and change the link displaying the number of all pages to plain text.