--- components: ["DataTable", "Toolbar", "ToolbarContent", "ToolbarSearch", "ToolbarMenu", "ToolbarMenuItem", "ToolbarBatchActions"] --- ### Default The `DataTable` is keyed for both rendering and sorting. You must define a "key" value per object in the `headers` property and an "id" value in `rows`. ### Slotted cells Use the `"cell"` slot to control the display value per table cell. Individual row and cell data are provided through the `let:row` and `let:cell` directives. The slot name for the table header cells is `"cell-header"`. {#if header.key === 'port'} {header.value} (network) {:else} {header.value} {/if} {#if cell.key === 'rule' && cell.value === 'Round robin'} {cell.value} {:else} {cell.value} {/if} ### With title, description ### With toolbar Restart all API documentation Stop all ### With toolbar (small size) Restart all API documentation Stop all ### Zebra stripes ### Tall rows ### Medium rows ### Short rows ### Compact rows ### Sortable Set `sortable` to `true` to enable table column sorting. To disable sorting on a specific column, set `sort` to `false` in the header object passed to the `headers` prop. In the example below, the "Protocol" column is not sortable. ### Sortable with custom display and sort methods cost + " €" }, { key: "expireDate", value: "Expire date", display: (date) => new Date(date).toLocaleString(), sort: (a, b) => new Date(a) - new Date(b), }, ]}" rows="{[ { id: "a", name: "Load Balancer 3", protocol: "HTTP", port: 3000, cost: 100, expireDate: "2020-10-21", }, { id: "b", name: "Load Balancer 1", protocol: "HTTP", port: 443, cost: 200, expireDate: "2020-09-10", }, { id: "c", name: "Load Balancer 2", protocol: "HTTP", port: 80, cost: 150, expireDate: "2020-11-24", }, { id: "d", name: "Load Balancer 6", protocol: "HTTP", port: 3000, cost: 250, expireDate: "2020-12-01", }, { id: "e", name: "Load Balancer 4", protocol: "HTTP", port: 443, cost: 550, expireDate: "2021-03-21", }, { id: "f", name: "Load Balancer 5", protocol: "HTTP", port: 80, cost: 400, expireDate: "2020-11-14", }, ]}" /> ### Sortable with nested object values cost + " €" }, { key: "expireDate", value: "Expire date", display: (date) => new Date(date).toLocaleString(), sort: (a, b) => new Date(a) - new Date(b), }, ]}" rows="{[ { id: "a", name: "Load Balancer 3", network: { protocol: "HTTP", port: 3000, }, cost: 100, expireDate: "2020-10-21", }, { id: "b", name: "Load Balancer 1", network: { protocol: "HTTP", port: 443, }, cost: 200, expireDate: "2020-09-10", }, { id: "c", name: "Load Balancer 2", network: { protocol: "HTTP", port: 80, }, cost: 150, expireDate: "2020-11-24", }, { id: "d", name: "Load Balancer 6", network: { protocol: "HTTP", port: 3000, }, cost: 250, expireDate: "2020-12-01", }, { id: "e", name: "Load Balancer 4", network: { protocol: "HTTP", port: 443, }, cost: 550, expireDate: "2021-03-21", }, { id: "f", name: "Load Balancer 5", network: { protocol: "HTTP", port: 80, }, cost: 400, expireDate: "2020-11-14", }, ]}" /> ### Empty column with overflow menu Some use cases require an empty column in the table body without a corresponding table header. For an object in the `headers` array, set `empty` to `true` to render an empty column. In the following example, each row in the sortable data table has an overflow menu. There isn't a separate, useless table header column for the overflow menu. ### Selectable ### Initial selected rows ### Selectable with batch actions ### Selectable (radio) ### Expandable
      {JSON.stringify(row, null, 2)}
    
### Expandable (compact size)
      {JSON.stringify(row, null, 2)}
    
### Expandable (short size)
      {JSON.stringify(row, null, 2)}
    
### Expandable (tall size)
      {JSON.stringify(row, null, 2)}
    
### Batch expansion
      {JSON.stringify(row, null, 2)}
    
### Skeleton ### Skeleton with headers, row count ### Skeleton with object headers `headers` can also be an array of objects. The type is the same as the `headers` prop type used in `DataTable`. ### Skeleton with empty header Pass an object with `"empty"` set to `true` to render an empty table header column. ### Skeleton without header, toolbar ### Skeleton (tall size) ### Skeleton (short size) ### Skeleton (compact size)