Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/jamesdruhan/vue-jd-table

An advanced and flexible Vue.js 2.x component for displaying data tables.
https://github.com/jamesdruhan/vue-jd-table

datatable datatables javascript table vue vue-components vuejs vuejs2

Last synced: about 1 month ago
JSON representation

An advanced and flexible Vue.js 2.x component for displaying data tables.

Awesome Lists containing this project

README

        

# JD-Table

> An advanced and flexible Vue.js 2.x component for displaying data tables. Feature rich and capable of handling big data, JD-Table was designed to integrate into applications with various needs.








Example of JD-Table


### [View Demos](docs/Demos.md)

### Table of Contents

- [Features](#features)
- [Install](#install)
- [NPM](#npm)
- [Manual](#manual)
- [Usage](#usage)
- [Initialize](#initialize)
- [SFC](#sfc)
- [Global](#global)
- [Script](#script)
- [Configure Options](docs/Options.md)
- [Display Data](Data.md)
- [Properties](#properties)
- [Browser Support](#browser-support)
- [Polyfill](#polyfill)
- Documentation
- [Options](docs/Options.md)
- [Data](docs/Data.md)
- [Status](docs/Status.md)
- [Events](docs/Events.md)
- [From Table](Events.md#JD-Table-Events-to-Your-App)
- [From App](Events.md#Your-App-to-JD-Table-Events)
- [Listeners](docs/Listeners.md)
- [Theming](docs/Theming.md)

---

### Features
- Supports internal/external (API) data
- Traditional pagination
- Virtual scroll pagination
- Responsive/Fixed table sizing
- Responsive/Fixed column sizing
- Full-text search
- Column filtering
- Column selection
- Column views
- Column sorting
- Column resizing
- Left/Right click context menus
- Excel exportation
- Full screen/minimize
- Row 'Quick View'
- ... and more!


Back to Table of Contents

---

### Install

##### NPM

```shell
npm install --save-dev vue-jd-table
npm install --save-dev @fortawesome/fontawesome-free
```

> Font Awesome (Free) is required for JD-Table. Failing to install this will result in missing icons.

##### Manual

1. Clone this repository or download and save these files to your project:

- ./dist/**jd-table.min.js**
- ./dist/**jd-table.min.css**

2. Instructions for manually installing Font Awesome (Free) can be found here: https://fontawesome.com/start


Back to Table of Contents

---

### Usage

Follow all 3 steps below to begin using JD-Table.

1. [Initialize](#initialize)
2. [Configure Options](docs/Options.md)
3. [Display Data](docs/Data.md)

#### Initialize

Initializing includes 4 parts: Template, Vue Component, Options/Props and Theme. Below are a number of different ways to initialize JD-Tables depending on your needs.

###### SFC

The following is an example of how to use JD-Tables in a Vue SFC (single file component).

```vue





// JD-TABLE REQUIRED - COMPONENT REGISTRATION
import "@fortawesome/fontawesome-free/css/all.min.css";
import JDTable from 'vue-jd-table';

export default
{
name : 'MyApp',

// JD-TABLE REQUIRED - COMPONENT REGISTRATION
components:
{
JDTable
},

// JD-TABLE REQUIRED - OPTIONS/PROPS
data ()
{
return {
tableOptions : { // ADD OPTIONS HERE },
eventFromApp : { name : null, data : null },
eventFromAppTrigger : false,
tableLoader : false,
columns : [ // ADD COLUMNS HERE ]
}
}
}

// JD-TABLE OPTIONAL - VARIABLE OVERRIDE

// JD-TABLE REQUIRED - THEME
@import "~vue-jd-table/dist/assets/jd-table.scss";

```

###### Global

The following registers JD-Table as a global component. Once registered, you can use the instructions above (SFC) to use and apply the component without having to import it each time.

```vue
import Vue from 'vue';
import JDTable from 'vue-jd-table';

import "@fortawesome/fontawesome-free/css/all.min.css";
import 'vue-jd-table/dist/jd-table.min.css';

Vue.component( 'jdtable',JDTable );

new Vue
({
...
}).$mount( '#app' );
```

###### Script

The following shows an example of how to use JD-Table in your HTML files directly. You will require a polyfill for JD-Table.

```html



new Vue
({
el : '#app',

components:
{
JDTable
},

data ()
{
return {
tableOptions : { // ADD OPTIONS HERE },
eventFromApp : { name : null, data : null },
eventFromAppTrigger : false,
tableLoader : false,
columns : [ // ADD COLUMNS HERE ]
}
},

...
});

```

#### Configure Options

[Dedicated Page - Click Here](docs/Options.md)

#### Display Data

[Dedicated Page - Click Here](docs/Data.md)


Back to Table of Contents

---

### Properties

JD-Table accepts the following props/properties:

- **option** [Object]
- An object containing key/value pairs representing the options/settings for the table. Check out the [options](docs/Options.md) to learn more about the available choices.
- **loader** [Boolean]
- A true/false setting which will enable or disable a loading message in the JD-Table. Use this while waiting to get a response from a REST call for data.
- **event-from-app** [Object]
- An object containing two keys "name" (string) and "payload" (string/object). Use this to send events to JD-Table such as sending data. Learn more about how to send events and what is available [here](docs/Events.md).
- **event-from-app-trigger** [Boolean]
- A true/false setting which tells JD-Table to execute a event-from-app event. Learn more about triggering events [here](docs/Events.md).
- **event-from-jd-table** [Event/Function/Callback]
- An event that is triggered using a Vue $emit call. Learn more about how to process these events [here](docs/Events.md).


Back to Table of Contents

---

### Browser Support

JD-Table runs in all modern browsers. IE11 is supported so long as a polyfill is provided. See the [polyfill](#polyfill) section for more details.


Back to Table of Contents

---

### Polyfill

JD-Table is written with ES5/6 functionality. Take note that the build module for JDTable *does not include* a polyfill. If you need support for legacy browsers like IE 11 you will need to inject a polyfill
service.

> **Reminder**: Typically build processes like Webpack & Vue-CLI do **NOT** add polyfill's to your imported **dependencies** (it will polyfill your app but not the JDTable dependency).

##### Polyfill Solution #1

For build processes like Webpack/Vue-CLI, rather than importing the component normally, import the .VUE file directly. If your project already includes polyfill's it will be processed normally.

```
import JDTable from 'vue-jd-table/src/jd-table.vue';
```

##### Polyfill Solution #2

For Vue-CLI specifically, create/add the following to vue.config.js. This will tell Vue-CLI to polyfill the normally imported JD-Table module.

vue.config.js
```
module.exports =
{
transpileDependencies : ['vue-jd-table']
};
```

#### Polyfill Solution #3

Using babel and babel-polyfill, directly add polyfill's to your dependency's.

babel.config.js
```
module.exports =
{
presets:
[
['env',
{
polyfills :
[
'es6.promise',
'es6.object.assign',
'es6.function.name',
'es6.array.find',
'es6.array.find-index',
'es7.array.includes',
'es6.string.includes'
]
}]
]
}
```


Back to Table of Contents