vuejs-datatable
A VueJS plugin to manage data tables
Allows for quick and easy setup of filterable, sortable, and paginated tables. Currently supports Vue.js ^2.4.
E2E testing over Travis realized using
Getting started
Install the package
To install this package, simply install vuejs-datatable
with your favorite package manager:
# Using npm npm install vuejs-datatable # Using yarn yarn add vuejs-datatable
Import the package
Use the ESM build
The ESM build (EcmaScript Module) implies that you target browsers that support ESM OR you use a bundler, like webpack, rollup.js or Parcel.
Import & register the DatatableFactory in Vue:
import Vue from 'vue'; import DatatableFactory from 'vuejs-datatable'; Vue.use(DatatableFactory);
Check out how to customize table types to see some usage of the DatatableFactory
.
Use the IIFE build
The IIFE build (Immediately Invoked Function Expression) should be prefered only for small applications without bundlers, or if you privilegiate the use of a CDN
In your HTML, load the IIFE build directly, if possible right before the closing </body>
tag. You must make sure that the loading order is preserved, like below.
<body> <!-- All your page content... --> <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.4.2/vue.js" defer></script> <script src="/dist/vuejs-datatable.js" defer></script> <script src="/myscript.js" defer></script> </body>
The IIFE build exposes the DatatableFactory as the global VuejsDatatable
. Check out how to customize table types to see some usage of the DatatableFactory
.
Use the component
Use the component in your HTML or template:
<div id="vue-root"> <datatable :columns="columns" :data="rows"></datatable> </div>
Then pass in the columns and the data to your Vue instance:
new Vue({ el: '#vue-root', data: { columns: [ {label: 'id', field: 'id'}, {label: 'Username', field: 'user.username', headerClass: 'class-in-header second-class'}, {label: 'First Name', field: 'user.first_name'}, {label: 'Last Name', field: 'user.last_name'}, {label: 'Email', field: 'user.email'}, {label: 'address', representedAs: ({address, city, state}) => `${address}<br />${city}, ${row.state}`, interpolate: true} ], rows: [ //... { "id": 1, "user": { "username": "dprice0", "first_name": "Daniel", "last_name": "Price", "email": "[email protected]" }, "address": "3 Toban Park", "city": "Pocatello", "state": "Idaho" } //... ] } });
Customize the datatable
The DatatableFactory exposes several methods to allow you to add or modify other datatable
-like components, with custom styles or behavior.
VuejsDatatable .registerTableType( 'my-awesome-table', tableType => { tableType .mergeSettings( /* ... */ ) .setFilterHandler( /* ... */ ) .setSortHandler( /* ... */ ); } );
Documentation
Browse the full documentation at https://gerkindev.github.io/vuejs-datatable/.
Attributions
- Patrick Stephan: Original author
- Alexandre Germain: Current maintainer