--- components: ["DataTable", "Pagination","Toolbar", "ToolbarContent", "ToolbarSearch", "ToolbarMenu", "ToolbarMenuItem", "ToolbarBatchActions"] --- `DataTable` is keyed for performance reasons.
Every headers object must have a unique "key" property.
Every rows object must have a unique "id" property.
### Default The key value in `headers` corresponds to the key value defined in `rows`. For example, the header key `"name"` will use the value of `rows[index].name`. ### 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 ### Slottable title, description The `title` and `description` props are slottable. Load balancers Your organization's active load balancers. ### Static width Set `useStaticWidth` to `true` to render the table with a width of "auto" instead of "100%". ### With toolbar Restart all API documentation Stop all ### With toolbar (small size) Restart all API documentation Stop all ### Filterable By default, `ToolbarSearch` will not filter `DataTable` rows. Set `shouldFilterRows` to `true` to enable client-side filtering. The default filtering performs a basic string comparison on cell values that are of a string or a number type. Note that in-memory filtering is not optimal for large data sets, where you might consider using server-side search. ### Filterable (custom) `shouldFilterRows` also accepts a function and passes it the current row and value. It expects the function to return a boolean. ### 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 pagination If you want `DataTable` to sort the whole dataset but still display paginated content, you need to pass the whole dataset in the `rows` prop, and then limit displayed content by using `pageSize` and `page` props, which are corresponding to the same props in the `Pagination` component. cost + " €" }, { key: "expireDate", value: "Expire date", display: (date) => new Date(date).toLocaleString(), sort: (a, b) => new Date(a) - new Date(b), }, ]}" pageSize={pagination.pageSize} page={pagination.page} 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 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) ### Non-selectable rows Use `nonSelectableRowIds` to specify the ids for rows that should not be selectable. ### Expandable
      {JSON.stringify(row, null, 2)}
    
### Non-expandable rows Use `nonExpandableRowIds` to specify the ids for rows that should not be expandable. ### Expandable (zebra styles) ### 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)