Data Table

Data tables display sets of data across rows and columns.

They organize information in a way that’s easy to scan, so that users can look for patterns and insights.

Data tables can contain:

  • Interactive components (such as chips, buttons, or menus)
  • Non-interactive elements (such as badges)
  • Tools to query and manipulate data

MD Data table encapsulates MDC Data Table.

An illustration of a data table.

View interactive demo inline.

Open interactive demo in new tab.

DessertCaloriesFatCarbsProtein (g)Frozen yogurt1596.0244.0Ice cream sandwich2379.0374.3Eclair26216.0246.0
<md-data-table aria-label="Desserts" density="" page-sizes="[10, 25, 100]" page-sizes-label="Rows per page:" first-row-of-page="" current-page-size="" last-row-of-page="" pagination-total-label=":firstRow-:lastRow of :totalRows">
  <md-data-table-column>Dessert</md-data-table-column>
  <md-data-table-column>Calories</md-data-table-column>
  <md-data-table-column>Fat</md-data-table-column>
  <md-data-table-column>Carbs</md-data-table-column>
  <md-data-table-column>Protein (g)</md-data-table-column>
  <md-data-table-row>
    <md-data-table-cell>Frozen yogurt</md-data-table-cell>
    <md-data-table-cell type="number">159</md-data-table-cell>
    <md-data-table-cell type="number">6.0</md-data-table-cell>
    <md-data-table-cell type="number">24</md-data-table-cell>
    <md-data-table-cell type="number">4.0</md-data-table-cell>
  </md-data-table-row>
  <md-data-table-row>
    <md-data-table-cell>Ice cream sandwich</md-data-table-cell>
    <md-data-table-cell type="number">237</md-data-table-cell>
    <md-data-table-cell type="number">9.0</md-data-table-cell>
    <md-data-table-cell type="number">37</md-data-table-cell>
    <md-data-table-cell type="number">4.3</md-data-table-cell>
  </md-data-table-row>
  <md-data-table-row>
    <md-data-table-cell>Eclair</md-data-table-cell>
    <md-data-table-cell type="number">262</md-data-table-cell>
    <md-data-table-cell type="number">16.0</md-data-table-cell>
    <md-data-table-cell type="number">24</md-data-table-cell>
    <md-data-table-cell type="number">6.0</md-data-table-cell>
  </md-data-table-row>
</md-data-table>

The grid-span attribute can be used to specify the number of columns a cell should span.

DessertCaloriesFatCarbsProtein (g)Frozen yogurt1596.0244.0Ice cream sandwich2379.0374.3Eclair26216.0246.0Actions:Action 1Action 2Action 3
<md-data-table aria-label="Desserts" density="" page-sizes="[10, 25, 100]" page-sizes-label="Rows per page:" first-row-of-page="" current-page-size="" last-row-of-page="" pagination-total-label=":firstRow-:lastRow of :totalRows">
  <md-data-table-column>Dessert</md-data-table-column>
  <md-data-table-column>Calories</md-data-table-column>
  <md-data-table-column>Fat</md-data-table-column>
  <md-data-table-column>Carbs</md-data-table-column>
  <md-data-table-column>Protein (g)</md-data-table-column>
  <md-data-table-row>
    <md-data-table-cell>Frozen yogurt</md-data-table-cell>
    <md-data-table-cell type="number">159</md-data-table-cell>
    <md-data-table-cell type="number">6.0</md-data-table-cell>
    <md-data-table-cell type="number">24</md-data-table-cell>
    <md-data-table-cell type="number">4.0</md-data-table-cell>
  </md-data-table-row>
  <md-data-table-row>
    <md-data-table-cell>Ice cream sandwich</md-data-table-cell>
    <md-data-table-cell type="number">237</md-data-table-cell>
    <md-data-table-cell type="number">9.0</md-data-table-cell>
    <md-data-table-cell type="number">37</md-data-table-cell>
    <md-data-table-cell type="number">4.3</md-data-table-cell>
  </md-data-table-row>
  <md-data-table-row>
    <md-data-table-cell>Eclair</md-data-table-cell>
    <md-data-table-cell type="number">262</md-data-table-cell>
    <md-data-table-cell type="number">16.0</md-data-table-cell>
    <md-data-table-cell type="number">24</md-data-table-cell>
    <md-data-table-cell type="number">6.0</md-data-table-cell>
  </md-data-table-row>
    <md-data-table-footer slot="footer" style="display: flex; align-items: center; justify-content: right; gap: 4px;">
        Actions:
        <md-text-button>Action 1</md-text-button>
        <md-text-button>Action 2</md-text-button>
        <md-text-button>Action 3</md-text-button>
    </md-data-table-footer>
</md-data-table>

Data table with row selection. A checkbox cell must be added to all the rows and to the header row.

Signal nameStatusSeverityStageTimeRolesArcus watch slowdownOnlineMediumTriaged0:33Allison Briemonarch: prod shared ares-managed-features-provider-heavyOfflineHugeTriaged0:33Allison BrieArcus watch slowdownOnlineMediumTriaged0:33Brie Larsonmonarch: prod shared ares-managed-features-provider-heavyOnlineMinorNot triaged0:33Jeremy LakeArcus watch slowdownOnlineNegligibleTriaged0:33Angelina Cheng
<md-data-table aria-label="Dessert calories" density="" page-sizes="[10, 25, 100]" page-sizes-label="Rows per page:" first-row-of-page="" current-page-size="" last-row-of-page="" pagination-total-label=":firstRow-:lastRow of :totalRows">
      <md-data-table-column type="checkbox"></md-data-table-column>
      <md-data-table-column>Signal name</md-data-table-column>
      <md-data-table-column>Status</md-data-table-column>
      <md-data-table-column>Severity</md-data-table-column>
      <md-data-table-column>Stage</md-data-table-column>
      <md-data-table-column>Time</md-data-table-column>
      <md-data-table-column>Roles</md-data-table-column>

      <md-data-table-row>
        <md-data-table-cell type="checkbox"></md-data-table-cell>
        <md-data-table-cell>Arcus watch slowdown</md-data-table-cell>
        <md-data-table-cell>Online</md-data-table-cell>
        <md-data-table-cell>Medium</md-data-table-cell>
        <md-data-table-cell>Triaged</md-data-table-cell>
        <md-data-table-cell type="numeric">0:33</md-data-table-cell>
        <md-data-table-cell>Allison Brie</md-data-table-cell>
      </md-data-table-row>
      <md-data-table-row>
        <md-data-table-cell type="checkbox"></md-data-table-cell>
        <md-data-table-cell>monarch: prod shared ares-managed-features-provider-heavy</md-data-table-cell>
        <md-data-table-cell>Offline</md-data-table-cell>
        <md-data-table-cell>Huge</md-data-table-cell>
        <md-data-table-cell>Triaged</md-data-table-cell>
        <md-data-table-cell type="numeric">0:33</md-data-table-cell>
        <md-data-table-cell>Allison Brie</md-data-table-cell>
      </md-data-table-row>
      <md-data-table-row>
        <md-data-table-cell type="checkbox"></md-data-table-cell>
        <md-data-table-cell>Arcus watch slowdown</md-data-table-cell>
        <md-data-table-cell>Online</md-data-table-cell>
        <md-data-table-cell>Medium</md-data-table-cell>
        <md-data-table-cell>Triaged</md-data-table-cell>
        <md-data-table-cell type="numeric">0:33</md-data-table-cell>
        <md-data-table-cell>Brie Larson</md-data-table-cell>
      </md-data-table-row>
      <md-data-table-row>
        <md-data-table-cell type="checkbox"></md-data-table-cell>
        <md-data-table-cell>monarch: prod shared ares-managed-features-provider-heavy</md-data-table-cell>
        <md-data-table-cell>Online</md-data-table-cell>
        <md-data-table-cell>Minor</md-data-table-cell>
        <md-data-table-cell>Not triaged</md-data-table-cell>
        <md-data-table-cell type="numeric">0:33</md-data-table-cell>
        <md-data-table-cell>Jeremy Lake</md-data-table-cell>
      </md-data-table-row>
      <md-data-table-row>
        <md-data-table-cell type="checkbox"></md-data-table-cell>
        <md-data-table-cell>Arcus watch slowdown</md-data-table-cell>
        <md-data-table-cell>Online</md-data-table-cell>
        <md-data-table-cell>Negligible</md-data-table-cell>
        <md-data-table-cell>Triaged</md-data-table-cell>
        <md-data-table-cell type="numeric">0:33</md-data-table-cell>
        <md-data-table-cell>Angelina Cheng</md-data-table-cell>
      </md-data-table-row>
    </md-data-table>

Paginated data table. Enabled when the paginated attribute is set to true.

Signal nameStatusSeverityStageTimeRolesArcus watch slowdownOnlineMediumTriaged0:33Allison Briemonarch: prod shared ares-managed-features-provider-heavyOfflineHugeTriaged0:33Allison BrieArcus watch slowdownOnlineMediumTriaged0:33Brie Larsonmonarch: prod shared ares-managed-features-provider-heavyOnlineMinorNot triaged0:33Jeremy LakeArcus watch slowdownOnlineNegligibleTriaged0:33Angelina Cheng
<md-data-table aria-label="Dessert calories" paginated="" density="" page-sizes="[1, 3, 5]" page-sizes-label="Rows per page:" first-row-of-page="" current-page-size="" last-row-of-page="" pagination-total-label=":firstRow-:lastRow of :totalRows">
  <md-data-table-column>Signal name</md-data-table-column>
  <md-data-table-column>Status</md-data-table-column>
  <md-data-table-column>Severity</md-data-table-column>
  <md-data-table-column>Stage</md-data-table-column>
  <md-data-table-column>Time</md-data-table-column>
  <md-data-table-column>Roles</md-data-table-column>

  <md-data-table-row>
    <md-data-table-cell>Arcus watch slowdown</md-data-table-cell>
    <md-data-table-cell>Online</md-data-table-cell>
    <md-data-table-cell>Medium</md-data-table-cell>
    <md-data-table-cell>Triaged</md-data-table-cell>
    <md-data-table-cell type="numeric">0:33</md-data-table-cell>
    <md-data-table-cell>Allison Brie</md-data-table-cell>
  </md-data-table-row>
  <md-data-table-row>
    <md-data-table-cell>monarch: prod shared ares-managed-features-provider-heavy</md-data-table-cell>
    <md-data-table-cell>Offline</md-data-table-cell>
    <md-data-table-cell>Huge</md-data-table-cell>
    <md-data-table-cell>Triaged</md-data-table-cell>
    <md-data-table-cell type="numeric">0:33</md-data-table-cell>
    <md-data-table-cell>Allison Brie</md-data-table-cell>
  </md-data-table-row>
  <md-data-table-row>
    <md-data-table-cell>Arcus watch slowdown</md-data-table-cell>
    <md-data-table-cell>Online</md-data-table-cell>
    <md-data-table-cell>Medium</md-data-table-cell>
    <md-data-table-cell>Triaged</md-data-table-cell>
    <md-data-table-cell type="numeric">0:33</md-data-table-cell>
    <md-data-table-cell>Brie Larson</md-data-table-cell>
  </md-data-table-row>
  <md-data-table-row>
    <md-data-table-cell>monarch: prod shared ares-managed-features-provider-heavy</md-data-table-cell>
    <md-data-table-cell>Online</md-data-table-cell>
    <md-data-table-cell>Minor</md-data-table-cell>
    <md-data-table-cell>Not triaged</md-data-table-cell>
    <md-data-table-cell type="numeric">0:33</md-data-table-cell>
    <md-data-table-cell>Jeremy Lake</md-data-table-cell>
  </md-data-table-row>
  <md-data-table-row>
    <md-data-table-cell>Arcus watch slowdown</md-data-table-cell>
    <md-data-table-cell>Online</md-data-table-cell>
    <md-data-table-cell>Negligible</md-data-table-cell>
    <md-data-table-cell>Triaged</md-data-table-cell>
    <md-data-table-cell type="numeric">0:33</md-data-table-cell>
    <md-data-table-cell>Angelina Cheng</md-data-table-cell>
  </md-data-table-row>
</md-data-table>

Align the cells grid to top, middle or bottom. This requires a max-width on the top-level grid element.

Signal nameStatusSeverityStageTimeRolesArcus watch slowdownOnlineMediumTriaged0:33Allison Briemonarch: prod shared ares-managed-features-provider-heavyOfflineHugeTriaged0:33Allison BrieArcus watch slowdownOnlineMediumTriaged0:33Brie Larsonmonarch: prod shared ares-managed-features-provider-heavyOnlineMinorNot triaged0:33Jeremy LakeArcus watch slowdownOnlineNegligibleTriaged0:33Angelina Cheng
<md-data-table aria-label="Dessert calories" in-progress="" density="" page-sizes="[10, 25, 100]" page-sizes-label="Rows per page:" first-row-of-page="" current-page-size="" last-row-of-page="" pagination-total-label=":firstRow-:lastRow of :totalRows">
      <md-data-table-column>Signal name</md-data-table-column>
      <md-data-table-column>Status</md-data-table-column>
      <md-data-table-column>Severity</md-data-table-column>
      <md-data-table-column>Stage</md-data-table-column>
      <md-data-table-column>Time</md-data-table-column>
      <md-data-table-column>Roles</md-data-table-column>

      <md-data-table-row>
        <md-data-table-cell>Arcus watch slowdown</md-data-table-cell>
        <md-data-table-cell>Online</md-data-table-cell>
        <md-data-table-cell>Medium</md-data-table-cell>
        <md-data-table-cell>Triaged</md-data-table-cell>
        <md-data-table-cell type="numeric">0:33</md-data-table-cell>
        <md-data-table-cell>Allison Brie</md-data-table-cell>
      </md-data-table-row>
      <md-data-table-row>
        <md-data-table-cell>monarch: prod shared ares-managed-features-provider-heavy</md-data-table-cell>
        <md-data-table-cell>Offline</md-data-table-cell>
        <md-data-table-cell>Huge</md-data-table-cell>
        <md-data-table-cell>Triaged</md-data-table-cell>
        <md-data-table-cell type="numeric">0:33</md-data-table-cell>
        <md-data-table-cell>Allison Brie</md-data-table-cell>
      </md-data-table-row>
      <md-data-table-row>
        <md-data-table-cell>Arcus watch slowdown</md-data-table-cell>
        <md-data-table-cell>Online</md-data-table-cell>
        <md-data-table-cell>Medium</md-data-table-cell>
        <md-data-table-cell>Triaged</md-data-table-cell>
        <md-data-table-cell type="numeric">0:33</md-data-table-cell>
        <md-data-table-cell>Brie Larson</md-data-table-cell>
      </md-data-table-row>
      <md-data-table-row>
        <md-data-table-cell>monarch: prod shared ares-managed-features-provider-heavy</md-data-table-cell>
        <md-data-table-cell>Online</md-data-table-cell>
        <md-data-table-cell>Minor</md-data-table-cell>
        <md-data-table-cell>Not triaged</md-data-table-cell>
        <md-data-table-cell type="numeric">0:33</md-data-table-cell>
        <md-data-table-cell>Jeremy Lake</md-data-table-cell>
      </md-data-table-row>
      <md-data-table-row>
        <md-data-table-cell>Arcus watch slowdown</md-data-table-cell>
        <md-data-table-cell>Online</md-data-table-cell>
        <md-data-table-cell>Negligible</md-data-table-cell>
        <md-data-table-cell>Triaged</md-data-table-cell>
        <md-data-table-cell type="numeric">0:33</md-data-table-cell>
        <md-data-table-cell>Angelina Cheng</md-data-table-cell>
      </md-data-table-row>
    </md-data-table>

Data table with some filter text field. Enabled when the filterable attribute is added to a column. Case sensitiveness can be set using the filterCaseSensitive attribute.

Signal nameStatusSeverityStageTimeRolesArcus watch slowdownOnlineMediumTriaged0:33Allison Briemonarch: prod shared ares-managed-features-provider-heavyOfflineHugeTriaged0:33Allison BrieArcus watch slowdownOnlineMediumTriaged0:33Brie Larsonmonarch: prod shared ares-managed-features-provider-heavyOnlineMinorNot triaged0:33Jeremy LakeArcus watch slowdownOnlineNegligibleTriaged0:33Angelina Cheng
<md-data-table aria-label="Dessert calories" density="" page-sizes="[10, 25, 100]" page-sizes-label="Rows per page:" first-row-of-page="" current-page-size="" last-row-of-page="" pagination-total-label=":firstRow-:lastRow of :totalRows">
      <md-data-table-column filterable="">Signal name</md-data-table-column>
      <md-data-table-column>Status</md-data-table-column>
      <md-data-table-column>Severity</md-data-table-column>
      <md-data-table-column filterable="" filtercasesensitive="">Stage</md-data-table-column>
      <md-data-table-column>Time</md-data-table-column>
      <md-data-table-column>Roles</md-data-table-column>

      <md-data-table-row>
        <md-data-table-cell>Arcus watch slowdown</md-data-table-cell>
        <md-data-table-cell>Online</md-data-table-cell>
        <md-data-table-cell>Medium</md-data-table-cell>
        <md-data-table-cell>Triaged</md-data-table-cell>
        <md-data-table-cell type="numeric">0:33</md-data-table-cell>
        <md-data-table-cell>Allison Brie</md-data-table-cell>
      </md-data-table-row>
      <md-data-table-row>
        <md-data-table-cell>monarch: prod shared ares-managed-features-provider-heavy</md-data-table-cell>
        <md-data-table-cell>Offline</md-data-table-cell>
        <md-data-table-cell>Huge</md-data-table-cell>
        <md-data-table-cell>Triaged</md-data-table-cell>
        <md-data-table-cell type="numeric">0:33</md-data-table-cell>
        <md-data-table-cell>Allison Brie</md-data-table-cell>
      </md-data-table-row>
      <md-data-table-row>
        <md-data-table-cell>Arcus watch slowdown</md-data-table-cell>
        <md-data-table-cell>Online</md-data-table-cell>
        <md-data-table-cell>Medium</md-data-table-cell>
        <md-data-table-cell>Triaged</md-data-table-cell>
        <md-data-table-cell type="numeric">0:33</md-data-table-cell>
        <md-data-table-cell>Brie Larson</md-data-table-cell>
      </md-data-table-row>
      <md-data-table-row>
        <md-data-table-cell>monarch: prod shared ares-managed-features-provider-heavy</md-data-table-cell>
        <md-data-table-cell>Online</md-data-table-cell>
        <md-data-table-cell>Minor</md-data-table-cell>
        <md-data-table-cell>Not triaged</md-data-table-cell>
        <md-data-table-cell type="numeric">0:33</md-data-table-cell>
        <md-data-table-cell>Jeremy Lake</md-data-table-cell>
      </md-data-table-row>
      <md-data-table-row>
        <md-data-table-cell>Arcus watch slowdown</md-data-table-cell>
        <md-data-table-cell>Online</md-data-table-cell>
        <md-data-table-cell>Negligible</md-data-table-cell>
        <md-data-table-cell>Triaged</md-data-table-cell>
        <md-data-table-cell type="numeric">0:33</md-data-table-cell>
        <md-data-table-cell>Angelina Cheng</md-data-table-cell>
      </md-data-table-row>
    </md-data-table>

Data table with some sortable columns. Enabled when the sortable attribute is added to a column. You can control the sort direction via the sortedDescending attribute.

Signal nameStatusSeverityStageTimeRolesArcus watch slowdownOnlineMediumTriaged0:33Allison Briemonarch: prod shared ares-managed-features-provider-heavyOfflineHugeTriaged0:33Allison BrieArcus watch slowdownOnlineMediumTriaged0:33Brie Larsonmonarch: prod shared ares-managed-features-provider-heavyOnlineMinorNot triaged0:33Jeremy LakeArcus watch slowdownOnlineNegligibleTriaged0:33Angelina Cheng
<md-data-table aria-label="Dessert calories" density="" page-sizes="[10, 25, 100]" page-sizes-label="Rows per page:" first-row-of-page="" current-page-size="" last-row-of-page="" pagination-total-label=":firstRow-:lastRow of :totalRows">
      <md-data-table-column sortable="" sorted="">Signal name</md-data-table-column>
      <md-data-table-column>Status</md-data-table-column>
      <md-data-table-column>Severity</md-data-table-column>
      <md-data-table-column sortable="">Stage</md-data-table-column>
      <md-data-table-column>Time</md-data-table-column>
      <md-data-table-column>Roles</md-data-table-column>

      <md-data-table-row>
        <md-data-table-cell>Arcus watch slowdown</md-data-table-cell>
        <md-data-table-cell>Online</md-data-table-cell>
        <md-data-table-cell>Medium</md-data-table-cell>
        <md-data-table-cell>Triaged</md-data-table-cell>
        <md-data-table-cell type="numeric">0:33</md-data-table-cell>
        <md-data-table-cell>Allison Brie</md-data-table-cell>
      </md-data-table-row>
      <md-data-table-row>
        <md-data-table-cell>monarch: prod shared ares-managed-features-provider-heavy</md-data-table-cell>
        <md-data-table-cell>Offline</md-data-table-cell>
        <md-data-table-cell>Huge</md-data-table-cell>
        <md-data-table-cell>Triaged</md-data-table-cell>
        <md-data-table-cell type="numeric">0:33</md-data-table-cell>
        <md-data-table-cell>Allison Brie</md-data-table-cell>
      </md-data-table-row>
      <md-data-table-row>
        <md-data-table-cell>Arcus watch slowdown</md-data-table-cell>
        <md-data-table-cell>Online</md-data-table-cell>
        <md-data-table-cell>Medium</md-data-table-cell>
        <md-data-table-cell>Triaged</md-data-table-cell>
        <md-data-table-cell type="numeric">0:33</md-data-table-cell>
        <md-data-table-cell>Brie Larson</md-data-table-cell>
      </md-data-table-row>
      <md-data-table-row>
        <md-data-table-cell>monarch: prod shared ares-managed-features-provider-heavy</md-data-table-cell>
        <md-data-table-cell>Online</md-data-table-cell>
        <md-data-table-cell>Minor</md-data-table-cell>
        <md-data-table-cell>Not triaged</md-data-table-cell>
        <md-data-table-cell type="numeric">0:33</md-data-table-cell>
        <md-data-table-cell>Jeremy Lake</md-data-table-cell>
      </md-data-table-row>
      <md-data-table-row>
        <md-data-table-cell>Arcus watch slowdown</md-data-table-cell>
        <md-data-table-cell>Online</md-data-table-cell>
        <md-data-table-cell>Negligible</md-data-table-cell>
        <md-data-table-cell>Triaged</md-data-table-cell>
        <md-data-table-cell type="numeric">0:33</md-data-table-cell>
        <md-data-table-cell>Angelina Cheng</md-data-table-cell>
      </md-data-table-row>
    </md-data-table>

Data table with some sortable and filterable columns. Enabled when the sortable and filterable attributes are added to a column.

Signal nameStatusSeverityStageTimeRolesArcus watch slowdownOnlineMediumTriaged0:33Allison Briemonarch: prod shared ares-managed-features-provider-heavyOfflineHugeTriaged0:33Allison BrieArcus watch slowdownOnlineMediumTriaged0:33Brie Larsonmonarch: prod shared ares-managed-features-provider-heavyOnlineMinorNot triaged0:33Jeremy LakeArcus watch slowdownOnlineNegligibleTriaged0:33Angelina Cheng
<md-data-table aria-label="Dessert calories" density="" page-sizes="[10, 25, 100]" page-sizes-label="Rows per page:" first-row-of-page="" current-page-size="" last-row-of-page="" pagination-total-label=":firstRow-:lastRow of :totalRows">
      <md-data-table-column sortable="" sorted="" filterable="">Signal name</md-data-table-column>
      <md-data-table-column filterable="">Status</md-data-table-column>
      <md-data-table-column>Severity</md-data-table-column>
      <md-data-table-column sortable="">Stage</md-data-table-column>
      <md-data-table-column>Time</md-data-table-column>
      <md-data-table-column filterable="">Roles</md-data-table-column>

      <md-data-table-row>
        <md-data-table-cell>Arcus watch slowdown</md-data-table-cell>
        <md-data-table-cell>Online</md-data-table-cell>
        <md-data-table-cell>Medium</md-data-table-cell>
        <md-data-table-cell>Triaged</md-data-table-cell>
        <md-data-table-cell type="numeric">0:33</md-data-table-cell>
        <md-data-table-cell>Allison Brie</md-data-table-cell>
      </md-data-table-row>
      <md-data-table-row>
        <md-data-table-cell>monarch: prod shared ares-managed-features-provider-heavy</md-data-table-cell>
        <md-data-table-cell>Offline</md-data-table-cell>
        <md-data-table-cell>Huge</md-data-table-cell>
        <md-data-table-cell>Triaged</md-data-table-cell>
        <md-data-table-cell type="numeric">0:33</md-data-table-cell>
        <md-data-table-cell>Allison Brie</md-data-table-cell>
      </md-data-table-row>
      <md-data-table-row>
        <md-data-table-cell>Arcus watch slowdown</md-data-table-cell>
        <md-data-table-cell>Online</md-data-table-cell>
        <md-data-table-cell>Medium</md-data-table-cell>
        <md-data-table-cell>Triaged</md-data-table-cell>
        <md-data-table-cell type="numeric">0:33</md-data-table-cell>
        <md-data-table-cell>Brie Larson</md-data-table-cell>
      </md-data-table-row>
      <md-data-table-row>
        <md-data-table-cell>monarch: prod shared ares-managed-features-provider-heavy</md-data-table-cell>
        <md-data-table-cell>Online</md-data-table-cell>
        <md-data-table-cell>Minor</md-data-table-cell>
        <md-data-table-cell>Not triaged</md-data-table-cell>
        <md-data-table-cell type="numeric">0:33</md-data-table-cell>
        <md-data-table-cell>Jeremy Lake</md-data-table-cell>
      </md-data-table-row>
      <md-data-table-row>
        <md-data-table-cell>Arcus watch slowdown</md-data-table-cell>
        <md-data-table-cell>Online</md-data-table-cell>
        <md-data-table-cell>Negligible</md-data-table-cell>
        <md-data-table-cell>Triaged</md-data-table-cell>
        <md-data-table-cell type="numeric">0:33</md-data-table-cell>
        <md-data-table-cell>Angelina Cheng</md-data-table-cell>
      </md-data-table-row>
    </md-data-table>

The data table component allows you to provide custom logic functions.

You can provide custom sorting logic by setting the customSorting property on the md-data-table-column element. This will disable the default sorting functionality of the data table. You'll then have to implement your own sorting logic by listening to the sort event.

You can provide custom filtering logic by setting the customFilter property on the md-data-table-column element. This will disable the default filtering functionality of the data table. You'll then have to implement your own filtering logic by listening to the filter event.

You can provide custom pagination logic by setting the customPagination property on the md-data-table element. This will disable the default pagination functionality of the data table. You'll then have to implement your own pagination logic by listening to the paginate event.

TokenDescriptionDefault value
--mdc-data-table-widthWidth of the table.auto
--mdc-data-table-heightHeight of the table.auto
PropertyAttributeTypeDefaultDescription
paginatedpaginatedbooleanfalseEnable/disable pagination.
pageSizespage-sizesstring'[10, 25, 100]'JSON array with the page sizes to be used in the pagination and shown as page size select options.
pageSizesLabelpage-sizes-labelstring'Rows per page:'Label to show before the page size select.
currentFirstRowcurrent-first-rownumber1Index of the first row to be shown on the current page.
currentPageSizecurrent-page-sizenumberthis.pageSizesArray[0]Size of the current page.
currentLastRowcurrent-last-rownumberthis.currentPageSizeIndex of the last row to be shown on the current page.
totalRowstotal-rowsnumber0Total number of rows in the data table to show in the pagination label and
paginationTotalLabelpaginationtotallabelstring':firstRow-:lastRow of :totalRows'Label pattern to show after the page size select that indicates the current rows shown in the page. It should contain the following parameters: :firstRow, :lastRow, :totalRows
customPaginationcustom-paginationbooleanfalseWhether the data table is using a custom pagination function. If true, the automatic pagination is disabled and the current-first-row, current-last-row and current-page-size attributes are not updated automatically. You'll have to handle the pagination yourself by listening to the paginate event and updating the current-first-row, current-last-row and current-page-size attributes accordingly.
inProgressin-progressbooleanfalseWhether the loading indicator is active.
densitydensitystring''Overall height of the table. Available in three different measures.
MethodParametersReturnsDescription
paginateactionvoid
hideRowsrowsvoid
showRowsrowsvoid
EventDescription
row-selection-changedEvent emitted when row checkbox is checked or unchecked. Detail contains the row element, rowIndex and selected.
selected-allEvent emitted when header row checkbox is checked.
unselected-allEvent emitted when header row checkbox is unchecked.
row-clickEvent emitted when a row has been checked or unchecked. Detail contains the row element, rowIndex and selected.
filteredEvent emitted when the data table has been filtered. Detail contains the column element, text, caseSensitive and columnIndex.
sortedEvent emitted when the data table has been sorted. Detail contains the column element and isDescending.
page-size-changeEvent emitted when the page size has been changed. Detail contains the pageSize.
page-changedEvent emitted when the page has been changed. Detail contains the action.
paginateEvent emitted when the data table has been paginated. Detail contains the firstRow, lastRow, pageSize and action.

MdDataTableCell <md-data-table-cell>

Link to “MdDataTableCell <md-data-table-cell>”
PropertyAttributeTypeDefaultDescription
typetypestringundefinedCell type. If checkbox, the checkbox inside the cell will also be created if not supplied via default slot. If numeric, the cell text will be aligned to the right.
checkboxMdCheckboxundefined
EventDescription
checkedEvent emitted when the cell checkbox has been checked or unchecked. Detail contains the checked property.

MdDataTableColumn <md-data-table-column>

Link to “MdDataTableColumn <md-data-table-column>”
PropertyAttributeTypeDefaultDescription
typetypestring''Column type. If checkbox, the checkbox inside the column will be also created if not supplied via the default slot. If numeric, the column label will be aligned to the right.
sortablesortablebooleanfalseWhether the column can be sorted.
sortedsortedbooleanfalseWhether the column is sorted.
sortedDescendingsorted-descendingbooleanfalseWhether the column is sorted descending.
withSortButtonwith-sort-buttonbooleanfalseWhether the column is displaying a sort button.
customSortingcustom-sortingbooleanfalseWhether the column is using a custom sorting function. If true, the column will not sort automatically and you will need to handle the sorting yourself (see sort event).
filterablefilterablebooleanfalseWhether the column can be filtered.
filterTextFieldLabelfilter-text-field-labelstring'Filter'Label to show on the filter textfield.
filterCaseSensitivefilter-case-sensitivebooleanfalseSets the filtering to be case-sensitive.
customFilteringcustom-filteringbooleanfalseWhether the column is using a custom filtering function. If true, the column will not filter automatically and you will need to handle the filtering yourself (see filter event).
checkboxCheckboxundefined
EventDescription
checkedEvent emitted when the column checkbox has been checked or unchecked. Detail contains the checked property.
filterEvent emitted when the user has typed in column filter textfield. Detail contains the field, text, column, caseSensitive and customFiltering properties.
keydownEvent emitted when the user has typed in column filter textfield. Detail contains the field, key and column properties.
sortEvent emitted when the user has typed in column filter textfield. Detail contains the column, isDescending and customSorting properties.

MdDataTableFooter <md-data-table-footer>

Link to “MdDataTableFooter <md-data-table-footer>”

MdDataTableRow <md-data-table-row>

Link to “MdDataTableRow <md-data-table-row>”
PropertyAttributeTypeDefaultDescription
selectedselectedbooleanfalseWhether the row is selected.
densitydensitystringundefinedOverall height of the table. Available in three different measures.
cellsDataTableCell[]undefinedCells of the row.
checkboxCellDataTableCellundefined
EventDescription
selectedEvent emitted when a row has been selected or unselected. Detail contains the selected property.
Quick Start
Components
AvatarCardData TableLayout GridSnackbarTop App Bar