Table
Default
<v-table :fields="normal.fields" :items="normal.items" />
1
export default {
data() {
return {
fields: {
name: { label: 'Name', sortable: true },
createdAt: { label: 'Created', sortable: false },
},
items: [
{ id: 1, name: 'Item 1', createdAt: '1 days ago', },
{ id: 2, name: 'Item 2', createdAt: '2 days ago', },
{ id: 3, name: 'Item 3', createdAt: '3 days ago', },
],
};
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Custom template
Name | Created |
---|---|
Item 1 Unique identifier: 1 | 1 days ago |
Item 2 Unique identifier: 2 | 2 days ago |
Item 3 Unique identifier: 3 | 3 days ago |
<v-table :fields="normal.fields" :items="normal.items" />
1
export default {
data() {
return {
fields: {
name: { label: 'Name', sortable: true },
createdAt: { label: 'Created', sortable: false },
},
items: [
{ id: 1, name: 'Item 1', createdAt: '1 days ago', },
{ id: 2, name: 'Item 2', createdAt: '2 days ago', },
{ id: 3, name: 'Item 3', createdAt: '3 days ago', },
],
};
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Title & Search
Custom title
Name | Created |
---|---|
Item 1 | 1 days ago |
Item 2 | 2 days ago |
Item 3 | 3 days ago |
<v-table :fields="normal.fields" :items="normal.items">
<!--custom header-->
<template v-slot:header="{ handleSearchInput }">
<v-table-header
title="Custom title"
:handleSearchInput="handleSearchInput"
>
<template v-slot:action>
<v-dropdown placement="bottom-end" :options="[{ label: 'Share' }, { label: 'Remove' }]">
<template v-slot:toggle>
<v-button appearance="alternative">Actions</v-button>
</template>
</v-dropdown>
</template>
</v-table-header>
</template>
</v-table>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
export default {
data() {
return {
fields: {
name: { label: 'Name', sortable: true },
createdAt: { label: 'Created', sortable: false },
},
items: [
{ id: 1, name: 'Item 1', createdAt: '1 days ago', },
{ id: 2, name: 'Item 2', createdAt: '2 days ago', },
{ id: 3, name: 'Item 3', createdAt: '3 days ago', },
],
};
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Multi select
Name | Created | |
---|---|---|
Item 1 | 1 days ago | |
Item 2 | 2 days ago | |
Item 3 | 3 days ago |
Selected: []
<v-table
multi-select
v-model="multiple.selected"
:fields="multiple.fields"
:items="multiple.items"
/>
1
2
3
4
5
6
2
3
4
5
6
export default {
data() {
return {
selected: [],
fields: {
name: { label: 'Name', sortable: true },
createdAt: { label: 'Created', sortable: false },
},
items: [
{ id: 1, name: 'Item 1', createdAt: '1 days ago', },
{ id: 2, name: 'Item 2', createdAt: '2 days ago', },
{ id: 3, name: 'Item 3', createdAt: '3 days ago', },
],
};
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Pagination
Custom title
Name | Created |
---|---|
Item 1 | 2 days ago |
Item 2 | just now |
Item 3 | 1 day ago |
Item 4 | 1 week ago |
Item 5 | just now |
<v-table
:current-page="pagination.currentPage"
:fields="pagination.fields"
:items="pagination.items"
>
<template v-slot:header="{ handleSearchInput, selected }">
<v-table-header
title="Custom title"
:handleSearchInput="handleSearchInput"
/>
</template>
<template v-slot:pagination="{ total, perPage }">
<v-pagination
v-model="pagination.currentPage"
size="3"
:total="total"
:per-page="perPage"
/>
</template>
</v-table>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
export default {
data() {
return {
pagination: {
currentPage: 1,
fields: {
name: { label: 'Name', sortable: true },
createdAt: { label: 'Created', sortable: false },
},
items: [
{ id: 1, name: 'Item 1', createdAt: '2 days ago' },
{ id: 2, name: 'Item 2', createdAt: 'just now' },
{ id: 3, name: 'Item 3', createdAt: '1 day ago' },
{ id: 4, name: 'Item 4', createdAt: '1 week ago' },
{ id: 5, name: 'Item 5', createdAt: 'just now' },
{ id: 6, name: 'Item 6', createdAt: '3 years ago' },
{ id: 7, name: 'Item 7', createdAt: '1 week ago' },
{ id: 8, name: 'Item 8', createdAt: '1 week ago' },
{ id: 9, name: 'Item 9', createdAt: '1 week ago' },
{ id: 10, name: 'Item 10', createdAt: '9 week ago' },
...
],
},
};
},
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Table Props
Name | Type | Description | Default | Required |
---|---|---|---|---|
ready | Boolean | Show loading if false. Allowing to load data in async way | true | false |
value | Array | Returns selected values | [] | false |
fields | Object | Columns labels | {} | false |
items | Array | Data | [] | false |
multiSelect | Boolean | If true user can select multiple values | false | false |
perPage | Number | How many items to render per page | 10 | false |
currentPage | Number | Current page for pagination | 1 | false |
sortCompare | Function | Custom function to perform sort | null | false |
emptyText | String | Text for state when no data found | 'There is no records.' | false |
emptyFilteredText | String | Text for state when search results not found | 'There are no records matching your request' | false |
Table Slots
Name | Props | Description |
---|---|---|
header | items, selected, handleSearchInput, disabledSearch | Slot for table header |
{key} field name | value, item, index | Slot for custom cell |
pagination | total, perPage | Slot for pagination |
TableHeader Props
Name | Type | Description | Default |
---|---|---|---|
title | String | Appearance of spinner ['default', 'primary'] | 'Table title' |
searchable | Boolean | Display search or not | false |
handleSearchInput | Function | Function from table to keep query up to date to filter data properly. Required when searchable is true . | None |
disabledSearch | Boolean |
TableHeader Slots
Name | Props | Description |
---|---|---|
title | None | Slot for title |
action | None | Slot for action |