# Table
Used to display data like a list of objects in a table like view.
```html
```
## Headers
| Property | Description | Default |
| ---------- | ------------------------------------------------------------ | ------- |
| `text`\* | Text displayed in the column | -- |
| `value`\* | Name of the object property that holds the value of the item | -- |
| `align` | Text alignment of value. One of `left`, `center`, `right` | `left` |
| `sortable` | If the column can be sorted on | `true` |
| `width` | Custom width of the column in px | -- |
## Custom element / component for header
You can override the displayed header name by using the dynamic `header.[name]` slot. `[name]` is the `value` property
in the header item for this column sent to `headers`.
```html
{{ header.text }}
```
In this slot, you have access to the `header` through the scoped slot binding.
## Custom element / component for cell value
You can override the columns in a row by using the dynamic `item.[name]` slot. `[name]` is the `value` property in the
header item for this column sent to `headers`.
```html
{{ item.name }}
```
In this slot, you have access to the `item` through the scoped slot binding.
## Resizable rows
Adding the `show-resize` prop allows the user to resize the columns at will. You can keep your headers updated by using
the `v-model` directive or listening to the `update:headers` event:
```html
```
## Reference
#### Props
| Prop | Description | Default | Type |
| -------------------- | ------------------------------------------------------------------------------------------------- | --------------------------- | ------------- |
| `headers`\* | What columns to show in the table. Supports the `v-model` directive | | `HeaderRaw[]` |
| `items`\* | The individual items to render as rows | | `Item[]` |
| `disabled` | Disable edits to items in the form (drag/select) | `false` | `Boolean` |
| `fixed-header` | Make the header fixed | `false` | `Boolean` |
| `inline` | Display the table inline with other text | `false` | `Boolean` |
| `item-key` | Primary key of the item. Used for keys / selections | `'id'` | `String` |
| `loading-text` | What text to show when table is loading with no items | `i18n.global.t('loading')` | `String` |
| `loading` | Show progress indicator | `false` | `Boolean` |
| `manual-sort-key` | What field to use for manual sorting | `null` | `String` |
| `must-sort` | Requires the sort to be on a particular column | `false` | `Boolean` |
| `no-items-text` | What text to show when table doesn't contain any rows | `i18n.global.t('no_items')` | `String` |
| `row-height` | Height of the individual rows in px | `48` | `Number` |
| `selection-use-keys` | What field to use for selection | `false` | `Boolean` |
| `selection` | What items are selected. Can be used with `v-model` as well | `() => []` | `any` |
| `server-sort` | Handle sorting on the parent level. | `false` | `Boolean` |
| `show-manual-sort` | Show manual sort drag handles | `false` | `Boolean` |
| `show-resize` | Show resize handlers | `false` | `Boolean` |
| `show-select` | Show checkboxes | `false` | `Boolean` |
| `sort` | What column / order to sort by. Supports the `v-model` directive. `{ by: string, desc: boolean }` | `null` | `Sort` |
#### Events
| Event | Description | Value |
| ---------------- | --------------------------------------------------- | ------------------------------- |
| `update:sort` | `v-model` event for `sort` prop | `{ by: string, desc: boolean }` |
| `click:row` | When a row has been clicked | |
| `update:items` | When changes to the items where made | |
| `manual-sort` | When a user manually sorts the items | |
| `update:headers` | `v-model` event for `headers` prop or `HeaderRaw[]` | |
| `item-selected` | Emitted when an item is selected or deselected | `{ item: any, value: boolean }` |
| `select` | Emitted when selected items change | `any[]` |
#### Slots
| Slot | Description | Data |
| ------------------------ | ---------------------------- | ---- |
| `header.${header.value}` | A slot for each header | |
| `item.${header.value}` | A slot for each item | |
| `item-append` | Adds to the end of each item | |
| `footer` | Could be used for pagination | |
#### CSS Variables
| Variable | Default |
| ----------------------------- | -------------------------- |
| `--v-table-height` | `auto` |
| `--v-table-sticky-offset-top` | `0` |
| `--v-table-color` | `var(--foreground-normal)` |
| `--v-table-background-color` | `var(--background-page)` |