Tables
Data tables display sets of data. They can be fully customized.
Data tables display information in a way that’s easy to scan, so that users can look for patterns and insights. They can be embedded in primary content, such as cards.
Data tables can include:
- A corresponding visualization
- Navigation
- Tools to query and manipulate data
When including tools, they should be placed directly above or below the table.
Structure
A data table contains a header row at the top that lists column names, followed by rows for data.
Checkboxes should accompany each row if the user needs to select or manipulate data.
For accessibility, the first column is set to be a <th>
element, with a scope
of "row"
. This enables screen readers to identify a cell's value by it's row and column name.
Simple Table
A simple example with no frills.
Dessert (100g serving) | Calories | Fat (g) | Carbs (g) | Protein (g) |
---|---|---|---|---|
Frozen yoghurt | 159 | 6 | 24 | 4 |
Ice cream sandwich | 237 | 9 | 37 | 4.3 |
Eclair | 262 | 16 | 24 | 6 |
Cupcake | 305 | 3.7 | 67 | 4.3 |
Gingerbread | 356 | 16 | 49 | 3.9 |
Dessert (100g serving) | Calories | Fat (g) | Carbs (g) | Protein (g) |
---|---|---|---|---|
Frozen yoghurt | 159 | 6 | 24 | 4 |
Ice cream sandwich | 237 | 9 | 37 | 4.3 |
Eclair | 262 | 16 | 24 | 6 |
Cupcake | 305 | 3.7 | 67 | 4.3 |
Gingerbread | 356 | 16 | 49 | 3.9 |
Sorting & Selecting
This example demonstrates the use of Checkbox
and clickable rows for selection, with a custom Toolbar
. It uses the TableSortLabel
component to help style column headings.
The Table has been given a fixed width to demonstrate horizontal scrolling. In order to prevent the pagination controls from scrolling, the TablePagination component is used outside of the Table. (The 'Custom Table Pagination Action' example below shows the pagination within the TableFooter.)
Dessert (100g serving) | Calories | Fat (g) | Carbs (g) | Protein (g) | |
---|---|---|---|---|---|
Frozen yoghurt | 159 | 6 | 24 | 4 | |
Ice cream sandwich | 237 | 9 | 37 | 4.3 | |
Eclair | 262 | 16 | 24 | 6 | |
Cupcake | 305 | 3.7 | 67 | 4.3 | |
Marshmallow | 318 | 0 | 81 | 2 |
Customized tables
Here is an example of customizing the component. You can learn more about this in the overrides documentation page.
Dessert (100g serving) | Calories | Fat (g) | Carbs (g) | Protein (g) |
---|---|---|---|---|
Frozen yoghurt | 159 | 6 | 24 | 4 |
Ice cream sandwich | 237 | 9 | 37 | 4.3 |
Eclair | 262 | 16 | 24 | 6 |
Cupcake | 305 | 3.7 | 67 | 4.3 |
Gingerbread | 356 | 16 | 49 | 3.9 |
Custom Table Pagination Action
The Action
property of the TablePagination
component allows the implementation of
custom actions.
Desc | Qty. | @ | Price |
---|---|---|---|
Paperclips (Box) | 100 | 1.15 | 115.00 |
Paper (Case) | 10 | 45.99 | 459.90 |
Waste Basket | 2 | 17.99 | 35.98 |
Subtotal | 610.88 | ||
Tax | 7 % | 42.76 | |
Total | 653.64 |
Virtualized Table
In the following example, we demonstrate how to use react-virtualized with the Table
component.
It renders 200 rows and can easily handle more.
Virtualization helps with performance issues.
Complementary projects
For more advanced use cases you might be able to take advantage of:
material-table
material-table is a simple and powerful Datatable for React based on Material-UI Table with some additional features. They support many different use cases (editable, filtering, grouping, sorting, selection, i18n, tree data and more). You should check it out.
Other
- dx-react-grid-material-ui A data grid for Material-UI with paging, sorting, filtering, grouping and editing features (custom license).
- mui-datatables Responsive data tables for Material-UI with filtering, sorting, search and more.