@xactsystems/b-pagination-table v2.0.1
b-pagination-table
A pagination table for BootstrapVue with AJAX fetch and server side pagination options.
Internally the component uses b-pagination and b-table combined into a single component. All the props and slots for both sub-components can be applied to b-pagination-table. Any arbitrary attributes are applied to the b-table component via $attrs.
You can supply a list of items or provide a URL to fetch the data.
Installation
Add the component to your project
npm install @xactsystems/b-pagination-table
Use it in your Vue app
<template>
<b-pagination-table small striped :data-url="dataUrl" :fields="fields">
<template v-slot:cell(id)="row">
<a href="/view/{{ row.value }}">Item:{{ row.value }}</a>
</template>
</b-pagination-table>
</template>
<script>
import BPaginationTable from '@xactsystems/b-pagination-table'
export default {
Components: {
'b-pagination-table: BPaginationTable,
},
data() {
return {
dataUrl: '/my-list',
fields: [
{ key: 'id', label: 'Item' },
{ key: 'description', label: 'Description' }
]
}
}
...
}
Multi-page row select
Internally b-pagination-table tracks the selected rows on each page. As you move from page to page the selected items are retained and redisplayed. The row-selected event is the base b-table event and only returns the selected items on the current page. To retrieve a complete set of selected items call the getAllSelectedRows method on the table instance.
Component props
Prop | Type | Default Value | Description |
---|---|---|---|
data-url | String | null | The URL to fetch the table data from. |
items | Array | [] | Array of items to show in the table. You do not need to use this if you are using data-url unless you want to sync the returned items via the update:items event. |
pagination | Boolean or String | true | If set to 'always', always show the pagination component. If set to true, show the pagination component if the page count is greater then 1. If false pagination is never shown. |
page-length | Boolean | false | Show the page-length dropdown. |
per-page | Number | 20 | The initial page length of the table. |
page-length-options | Array | 10, 20, 50, 75, 100 | Options for the page length dropdown. |
page-length-cols | Number | 3 | Column width for the page length input. |
search | Boolean | false | Show the search text input. |
search-min-length | Number | 0 | The minimum number of character to enter in the search text input before filtering the table results. |
search-debounce | Number | 150 | The number of milliseconds to wait between changes to the table filter when searching. |
search-cols | Number | 3 | Column width for the search input. |
filter | string | Filter property for the table element. When set this overrides the internal search feature. Also look at the 'header' and 'search' slots for providing custom search features. | |
filter-function | Function | Filter function for custom searches. Applying this function will override the internal search feature so you also need to set your own search input via the 'search' slot. | |
sort-by | String | '' | The key of the initial sort column. |
sort-desc | Boolean | false | Set to true to sort sort-by descending order. |
ssp | Boolean | false | Set to true to use Server-Side-Processing for pagination. |
state | Boolean | false | Set to true to save the table state, this will save page-length, search text and the current page number and set these again when the component is re-mounted or the page loaded. |
pagination-size | String | 'md' | The size of the pagination component. This maps to the 'size' prop in b-pagination. |
pagination-aria-label | String | 'md' | The ARIA label of the pagination component. This maps to the 'aria-label' prop in b-pagination. |
Please review the full set of props for both the b-table and the b-pagination components:
https://bootstrap-vue.org/docs/components/table
https://bootstrap-vue.org/docs/components/pagination
Slots
The following slots are available for customisation of the table pagination component. |Slot | Description | |--------------|-------------------------------------------------------------------------------------------------------------------------------------------------| |header-left | This slot allows custom elements to be placed to the left of the Page Length input. N.B. Wrap your slot content in a b-col tag and specify cols.| |header | This slot allows custom elements to be placed between the Page Length and Search inputs. N.B. This may change as we review the header elements. | |header-right | This slot allows custom elements to be placed to the right of the Search input. N.B. Wrap your slot content in a b-col tag and specify cols. | |search | This slot provides a replacement for the inbuilt search input. The searchDebounce value is passed to the slot. | |table-columns | Each table column is provided as a slot as per the b-table documentation. https://bootstrap-vue.org/docs/components/table#scoped-field-slots |
Events
All the events of both b-table and b-pagination are exposed. In addition the following events are emitted: |Event |Payload |Details | |--------------|--------------|-----------------------------------------------------------------| |input:per-page|Number, String| The size of the page length after the dropdown value is changed.| |update:items |Array | The array of item data fetched from the data-url source. |
Methods
All the select methods below are passed on to the underlying b-table component and respect the the select-mode prop. |Method |Details | |----------------------|------------------------------------------------------------------------------------------------------------------| |selectRow(index) | Select a row on the current page with the given index number. | |unselectRow(index) | Unselect a row on the current page with the given index number. | |selectAllRows() | Select all the rows on the current page. | |clearSelected() | Unselect all rows on the current page. | |isRowSelected(index) | Returns true if the row with the given index is selected on the current page, otherwise it returns false.| |getAllSelectedRows() | Return an array of selected objects across all pages. |
Server Side Processing
The component allows pagination on the back-end server by providing page relative query parameters to the fetch url. This is enabled by setting the ssp prop to true.
SSP Query Parameters
Parameter | Description |
---|---|
filter | The search text to filter the results by. |
orderBy | Provides the key to sort the results by. If this is preceded by '-' the results should be sorted as descending. |
pageStart | The first row number the results should start at. |
pageLength | The maximum number of rows to return. |
SSP Returned Data
Parameter | Description |
---|---|
returnedCount | The number of records returned in the current response. |
totalCount | The total number of records available in the result set. |
filteredCount | The number of filtered records available in the result set. |
data | The current page records returned in the response. |
Symfony/Doctrine Paginator
This linked gist demonstrates using the Doctrine/ORM Paginator to provide a repsonse to the b-paginator-table SSP request. https://gist.github.com/ianef/cdc445fe0df33c7dd7b7be3e8a16f866
15 days ago
18 days ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago