🎉 Material UI v4 is out now! Check out the announcement blog post →
Tables

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)CaloriesFat (g)Carbs (g)Protein (g)
Frozen yoghurt1596244
Ice cream sandwich2379374.3
Eclair26216246
Cupcake3053.7674.3
Gingerbread35616493.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.)

Nutrition
Dessert (100g serving)CaloriesFat (g)Carbs (g)Protein (g)
Rows per page:
5
1-5 of 13

Customized Tables

If you have been reading the overrides documentation page but you are not confident jumping in, here are examples of how you can change the look of a TableCell.

⚠️ While the material design specification encourages theming, this example is off the beaten path.

Dessert (100g serving)CaloriesFat (g)Carbs (g)Protein (g)
Frozen yoghurt1596244
Ice cream sandwich2379374.3
Eclair26216246
Cupcake3053.7674.3
Gingerbread35616493.9

Custom Table Pagination Action

The Action property of the TablePagination component allows the implementation of custom actions.

Frozen yoghurt1596
Ice cream sandwich2379
Eclair26216
Cupcake3053.7
Marshmallow3180
Rows per page:
1-5 of 13

Spanning Table

A simple example with spanning rows & columns.

DescQty.@Price
Paperclips (Box)1001.15115.00
Paper (Case)1045.99459.90
Waste Basket217.9935.98
Subtotal610.88
Tax7 %42.76
Total653.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.

Dessert
Calories (g)
Fat (g)
Carbs (g)
Protein (g)

Complementary projects

For more advanced use cases you might be able to take advantage of: