@tillhub/vue-table-page

3.18.0 • Public • Published

@tillhub/vue-table-page-pagination CircleCI

Vue Table with Pagination for table range selection

Install

npm install --save @tillhub/vue-table-page

Demo

Usage

<template>
  <vue-table-page
    title="Example Page"
    :message="message"
    :table-length="tableLength"
    @page-change="changeTablesPage">
    <header-example slot="page-header"/>
    <table-example
      slot="page-table"
      :table-data="tableData" />
  </vue-table-page>
</template>

<script>
import Vue from 'vue'
import 'element-ui/lib/theme-chalk/index.css'
import ElementUI from 'element-ui'

Vue.use(ElementUI)

import VueTablePage from '@tillhub/vue-table-page'
import '@tillhub/vue-table-page/dist/vue-table-page.css'

export default {
  name: 'App',
  components: {
    VueTablePage
  },
  methods: {
    changeTablesPage(pages){
      console.log(pages)
    }
  },
}
</script>

CSS

import '@tillhub/vue-table-page/dist/vue-table-page.css'

Slots

There are three slots at the moment. The "header-left", "header-right", and the "page-table".

Slot required location
header-left no Top of page. Below the Title and Message box if present. All content will be aligned on the left.
header-right no Top of page. Below the Title and Message box if present. All content will be aligned on the right.
page-table no Middle of the page below the header and above the pagination footer.

Properties

The Properties for the component.

Property type required example default description
locale string no "de" or "en" "en" Currently only German and English is supported. Only 'de' and 'en '
table-size number no 100 null Need the total size of table to calculate the pagination if not usting table-data
table-data Array no [{key: value}] [] Must provide if you wish to use the @table-chagne event. Needs to be an Array of objects
hide-pagination boolean no true false Will hide pagination footer
page object no { offset: 20,
limit: 50,
callLimit: 500}
{ offset: 0,
limit: 20,
callLimit: 1000}
The offset and limit to provide if need to specify location of pagination. The callLimit provides when the next set of data should be called
page-Sizes Array no [100, 200] [20, 50, 100] Sets the page size option in footer
call-limit number no 500 1000 Will hide pagination footer
header-style css Obj no { padding: '10px'} {} Will update style for header
body-card bollean no true false Will apply a card style around body

The additional properties for header.

Property type required example default description
title string no "Products" "" The title will appear in the top left of header in h2
message string no "Info Here" "" If provided a pop up box with info button will appear with message below the title if present
show-message boolean no true false on load will show or hide the message box

The additional properties for using Default Table. Note the default table will be used when a 'page-table' slot is not provided

Property type required example default description
table-data Array Yes [{key: value}] [] Must provide if you wish to use the default table. Needs to be an Array of objects
table-max-height Number/string No 1000 'auto' You can apply a custom max-height to make the header stationary and table scrollable
table-height Number/string No 1000 '100%' You can apply a custom height
empty-display String No 'N/A' '--' Apply a custom default display when the value of cell is null
headers Array Yes [{label: 'Lable',
value: 'key',
minWidth: 10,
sortable: true}]
[] Must provide the headers for the table if using default table. The lable and value (keys from the 'table-data' items) must be provided. Other options are providing the minWidth, or width of column, and if column is sourtable
remote-sort Boolean No true false If provided the sorting will be disabled and instead an event called 'sort-change' will be emitted.
show-summary Boolean No true false whether to display a summary row; columns sum every number in that column up and display them
summary-method Function No ({ columns, data }) => { // return some array } undefined pass a method to summary-method, which returns an array, and each element of the returned array will be displayed in the columns of the summary row

Table headers parameters option for the 'headers' prop

parameter type required example description
label string yes "Product Name" This is what will be shown in the column header
value string yes "product_name" This will reference the unique key in the table options
minWidth string no "10px" The column width will be dynamic. This is the minimum width the column will be.
width string no "10px" This will set the column width. Without it the column width will be dynamic.
type string no "date", "currency" This will format the value according to the local for either date or currency
fixed string/Boolean no "left", "right", "top", "bottom" This will make the entire column fixed.
format Function no item=> !item ? 'n/a' : item You can pass in a function that auto formats the cell content

Event

The Pagination will retrun and object with the offSet and size (page limit). This should allow the use to calculate what data is in view of the table

Event type example default description
@page-change fuction (pageObj)=>{} n/a Passes the offset and size in an object on pagination change { offset: 20, limit: 100, callNext: false}. The offset is the place the visable table begins. The limit is the number of item in visable table. the callNext is the
@table-change fuction (pageObj)=>{} n/a When the full table is provided in 'table-data' prop, this event will provided the data for the visable data
@height-change number 235 n/a This will emit the height the body is after calculating header changes. this allows for dynamic sizing

License

MIT © jmy-kellogg

Readme

Keywords

none

Package Sidebar

Install

npm i @tillhub/vue-table-page

Weekly Downloads

2

Version

3.18.0

License

none

Unpacked Size

1.47 MB

Total Files

21

Last publish

Collaborators

  • eljefedelrodeo
  • tillhub-engineering