Table
The basic table component give us the opportunity to describe a corporate design table just with a dictionary and there options.
There are two dictionaries to pass, the columns
description and the options
for the table.
After the table is described, we can pass any data to the table and it will be rendered.
<BasicTable
:columns="columns"
:data="data"
:options="options"
@action="action"
/>
import BasicTable from "@/basic/table/Table.vue";
export default {
components: {
BasicTable
},
data() {
return {
options: {
striped: true,
hover: true,
bordered: false,
borderless: false,
small: false,
pagination: 10,
},
columns: [
{name: "Title", key: "name"},
{name: "Created At", key: "createdAt"},
{name: "Manage", key: "manage", type: "button-group"},
],
data: [
{name: "Test", createdAt: "2019-01-01 00:00:00",
manage: [
{name: "Edit", icon: "edit", action: "edit"},
{name: "Delete", icon: "delete", action: "delete"},
]},
],
};
},
methods: {
action(data) {
console.log("Action: ", data.action);
console.log("Params: ", data.params);
},
},
};
Columns
The columns are described in the columns
dictionary. The dictionary contains the following keys:
name
: The name of the column, which will be displayed in the table header.key
: The key of the data, which will be displayed in the table body.type
: The type how the data is displayed, available types:icon
,button
,button-group
,toogle
,badge
,datetime
,icon-selector
. As default it will be displayed as text.sortable
: If the column is sortable, the column will be displayed with a sort icon and the data can be sorted by this column.sortKey
: The key of the data, which will be used for sorting. If thesortKey
is not set, thekey
will be used.filter
: If the column is filterable, the column will be displayed with a filter icon and the data can be filtered by the passed array.
Types
Icon
The icon
type will display the data as an icon. The data must be a string and the string must be a valid icon name.
Datetime
The datetime
type will display the data as a datetime. The data must be a string and the string must be a valid datetime.
Icon Selector
The icon-selector
type will display the data as a icon selector. The data must be a string and the string must be a valid icon name.
On icon selectors can be actions passed, which will be emitted on click.
Options
The options are described in the options
dictionary. The dictionary contains the following keys:
striped
: If the table is striped, the table will be displayed with striped rows.hover
: If the table is hoverable, the table will be displayed with hoverable rows.bordered
: If the table is bordered, the table will be displayed with borders.borderless
: If the table is borderless, the table will be displayed without borders.small
: If the table is small, the table will be displayed with small rows.pagination
: If the table is paginated, the table will be displayed with pagination. The pagination can be set tofalse
to disable the pagination or to a number to set the pagination size.
Pagination
It is also allowed to use a complex pagination.
Example:
pagination: {
serverSide: true,
itemsPerPage: 10,
itemsPerPageList: [10, 25, 50, 100],
total: 0,
showPages: 3,
},
serverSide
: If the pagination is server side, the pagination will be displayed with a server side pagination.
For serverSide pagination, you have to update the data by your own with an emit event:
@pagination-update="paginationUpdate"
paginationUpdate(data) {
console.log("Pagination update: ", data);
},