react-bootstrap-table2-toolkit
react-bootstrap-table2
support some additional features in react-bootstrap-table2-toolkit
.
In the future, this toolkit will support other feature like row delete, insert etc. Right now we only following features:
- Table Search
- Export CSV
- Column Toggle
Live Demo For Table Search Live Demo For Export CSV Live Demo For Column Toggle
Install
$ npm install react-bootstrap-table2-toolkit --save
Add CSS
// es5
require('react-bootstrap-table2-toolkit/dist/react-bootstrap-table2-toolkit.min.css');
// es6
import 'react-bootstrap-table2-toolkit/dist/react-bootstrap-table2-toolkit.min.css';
Table Search
import ToolkitProvider, { Search } from 'react-bootstrap-table2-toolkit';
const { SearchBar } = Search;
//...
<ToolkitProvider
keyField="id"
data={ products }
columns={ columns }
search
>
{
props => (
<div>
<h3>Input something at below input field:</h3>
<SearchBar { ...props.searchProps } />
<hr />
<BootstrapTable
{ ...props.baseProps }
/>
</div>
)
}
</ToolkitProvider>
-
You have to enable the search functionality via
search
prop onToolkitProvider
. -
ToolkitProvider
is a wrapper of react context, you are supposed to wrap theBootstrapTable
andSearchBar
as the child ofToolkitProvider
-
You should render
SearchBar
withsearchProps
as well. The position ofSearchBar
is depends on you.
SearchBar
Props
className - [string]
Custom the class on input element.
placeholder - [string]
Custom the placeholder on input element.
style - [object]
Custom the style on input element.
delay = [number]
milionsecond for debounce user input.
srText = [string]
Customize the screen reader text for the search input. (Default: "Search this table")
Search Options
defaultSearch - [string]
Accept a string that will be used for default searching when first time table render.
<ToolkitProvider
keyField="id"
data={ products }
columns={ columns }
search={ {
defaultSearch: 'search something here'
} }
>
// ...
</ToolkitProvider>
onColumnMatch - [function]
Acccpt a function which will be called when table try to match every cells when search happening. This function accept an object like below example:
function onColumnMatch({
searchText,
value,
column,
row
}) {
// implement your custom match logic on every cell value
}
<ToolkitProvider
keyField="id"
data={ products }
columns={ columns }
search={ {
onColumnMatch
} }
>
// ...
</ToolkitProvider>
Notes: You have to return
true
when your match logic is positive and vice versa.
searchFormatted - [bool]
If you want to search on the formatted data, you are supposed to enable this props. react-bootstrap-table2
will check if you define the column.formatter
when doing search.
<ToolkitProvider
keyField="id"
data={ products }
columns={ columns }
search={ {
searchFormatted: true
} }
>
// ...
</ToolkitProvider>
afterSearch - [Function]
After search done, this callback function will be called with newest result.
<ToolkitProvider
keyField="id"
data={ products }
columns={ columns }
search={ {
afterSearch: (newResult) => console.log(newResult)
} }
>
// ...
</ToolkitProvider>
Clear Search Button
We have a built-in clear search function which allow user clear search status via clicking button:
import ToolkitProvider, { Search } from 'react-bootstrap-table2-toolkit';
const { SearchBar, ClearSearchButton } = Search;
<ToolkitProvider
keyField="id"
data={ products }
columns={ columns }
search
>
{
props => (
<div>
<SearchBar { ...props.searchProps } />
<ClearSearchButton { ...props.searchProps } />
....
</div>
)
}
</ToolkitProvider>
Export CSV
There are two steps to enable the export CSV functionality:
- Give
exportCSV
prop astrue
onToolkitProvider
. - Render
ExportCSVButton
withcsvProps
. The position ofExportCSVButton
is depends on you.
import ToolkitProvider, { CSVExport } from 'react-bootstrap-table2-toolkit';
const { ExportCSVButton } = CSVExport;
<ToolkitProvider
keyField="id"
data={ products }
columns={ columns }
exportCSV
>
{
props => (
<div>
<ExportCSVButton { ...props.csvProps }>Export CSV!!</ExportCSVButton>
<hr />
<BootstrapTable { ...props.baseProps } />
</div>
)
}
</ToolkitProvider>
Export CSV Options
fileName - [String]
Custom the csv file name.
separator - [String]
Custom the csv file separator.
ignoreHeader - [bool]
Default is false
. Give true to avoid to attach the csv header.
ignoreFooter - [bool]
Default is true
. Give false
to attach the table footer if enabled.
noAutoBOM - [bool]
Default is true
.
blobType - [string]
Default is text/plain;charset=utf-8
. Change to update the blob type of the exported file.
exportAll - [bool]
Default is true
. false
will only export current data which display on table.
onlyExportSelection - [bool]
Default is false
. true
will only export the data which is selected.
onlyExportFiltered - [bool]
Default is false
. true
will only export the data which is filtered/searched.
When you configure this prop as true, you must turn off
exportAll
.
Column Toggle
Let's see how to render the column toggle in your react component:
import BootstrapTable from 'react-bootstrap-table-next';
import ToolkitProvider, { ColumnToggle } from 'react-bootstrap-table2-toolkit';
<ToolkitProvider
keyField="id"
data={ products }
columns={ columns }
columnToggle
>
{
props => (
<div>
<ToggleList { ...props.columnToggleProps } />
<hr />
<BootstrapTable
{ ...props.baseProps }
/>
</div>
)
}
</ToolkitProvider>
columnToggleProps
props have enough information to let you custom the toggle list: [demo](Live Demo For Export CSV)
If you want to have default visibility on specified column, you can just give true
or false
on column.hidden
.