Skip to content

Table

Table

PTable renders data rows based on a column configuration. It supports sorting, pagination, grouped data, row actions, and selectable rows.

Demo

Usage

<PTable
:columns="columns"
:data="rows"
:actions="actions"
:counts="[10, 25, 50]"
:count="10"
:pages="totalPages"
:current-page="page"
:total="totalRows"
@change="handleTableChange"
@page-change="page = $event"
@checked-row="checkedRows = $event"
@action="handleTableAction"
/>
data() {
return {
columns: [
{ title: 'Name', name: 'name', type: 'text', sortable: true },
{ title: 'Status', name: 'status', type: 'text' },
{ title: 'Selected', type: 'checkbox', key: (row) => row.id },
],
actions: [
{ title: 'Edit', event: 'edit' },
{ title: 'Archive', event: 'archive', type: 'warning' },
],
};
}

Props

PropTypeDefaultNotes
columnsArray[]Required column configuration.
dataArray | ObjectRequired list of row objects.
actionsArray | Object[]Action menu items for type: 'action' columns.
groupingArray | Object[]Group header config (name, type, subset).
disableSortingBooleanfalseDisables sorting.
sortOrderString''asc or desc for controlled sorting.
sortByString''Column key for controlled sorting.
countsArray[]Options for PCount.
countNumber0Selected count value.
pagesNumber0Total number of pages.
currentPageNumber0Current page (1-based).
totalNumber0Total number of rows.
checkedRowsArray[]Selected row keys for checkbox columns.
rowClassFunction() => ''Row class builder.
rowStyleFunction() => ''Row style builder.
tableClassFunction() => ''Extra table classes.
loadingBooleanfalseShows table skeleton.
skeletonRowsNumber10Number of skeleton rows.

Events

EventPayloadDescription
change{ sort, count, currentPage }Emits on sort/page/count changes.
count-changeNumberEmits when page size changes.
page-changeNumberEmits when page changes.
checked-rowArrayEmits selected row keys.
selected-rowNumber | nullEmits on row expansion.
action{ event, row, action }Emits when an action item is clicked.

Slots

SlotDescription
<column.name>Slot for custom cell rendering (type: 'slot').
extendedExpanded row content.
<grouping.name>Slot used when grouping type is slot.

Column config

Columns are objects with title, name, and type. Supported type values:

  • text, number, link, slot, checkbox, action

Optional properties include sortable, sortBy, align, hidden, hover, link, target, key (for checkbox).

Action handling

Define action menu items with an event key, then handle all action clicks through one listener:

<PTable
:columns="columns"
:data="rows"
:actions="actions"
@action="handleTableAction"
/>
methods: {
handleTableAction({ event, row, action }) {
if (event === 'edit') {
this.editRow(row);
return;
}
if (event === 'archive') {
this.archiveRow(row);
}
},
}