diff --git a/packages/react-bootstrap-table2-example/examples/bootstrap4/column-toggle.js b/packages/react-bootstrap-table2-example/examples/bootstrap4/column-toggle.js
new file mode 100644
index 0000000..2060fdd
--- /dev/null
+++ b/packages/react-bootstrap-table2-example/examples/bootstrap4/column-toggle.js
@@ -0,0 +1,81 @@
+/* eslint react/prop-types: 0 */
+import React from 'react';
+
+import BootstrapTable from 'react-bootstrap-table-next';
+import ToolkitProvider, { ColumnToggle } from 'react-bootstrap-table2-toolkit';
+import Code from 'components/common/code-block';
+import { productsGenerator } from 'utils/common';
+
+const { ToggleList } = ColumnToggle;
+const products = productsGenerator();
+
+const columns = [{
+ dataField: 'id',
+ text: 'Product ID'
+}, {
+ dataField: 'name',
+ text: 'Product Name'
+}, {
+ dataField: 'price',
+ text: 'Product Price'
+}];
+
+const sourceCode = `\
+import BootstrapTable from 'react-bootstrap-table-next';
+import ToolkitProvider, { ColumnToggle } from 'react-bootstrap-table2-toolkit';
+
+const { ToggleList } = ColumnToggle;
+const columns = [{
+ dataField: 'id',
+ text: 'Product ID'
+}, {
+ dataField: 'name',
+ text: 'Product Name'
+}, {
+ dataField: 'price',
+ text: 'Product Price'
+}];
+
+
+ {
+ props => (
+
+
+
+
+
+ )
+ }
+
+`;
+
+export default () => (
+
+
+ {
+ props => (
+
+
+
+
+
+ )
+ }
+
+
{ sourceCode }
+
+);
diff --git a/packages/react-bootstrap-table2-example/examples/column-toggle/custom-toggle-list.js b/packages/react-bootstrap-table2-example/examples/column-toggle/custom-toggle-list.js
new file mode 100644
index 0000000..a4ea390
--- /dev/null
+++ b/packages/react-bootstrap-table2-example/examples/column-toggle/custom-toggle-list.js
@@ -0,0 +1,135 @@
+/* eslint react/prop-types: 0 */
+import React from 'react';
+
+import BootstrapTable from 'react-bootstrap-table-next';
+import ToolkitProvider from 'react-bootstrap-table2-toolkit';
+import Code from 'components/common/code-block';
+import { productsGenerator } from 'utils/common';
+
+const products = productsGenerator();
+
+const columnsdt = [{
+ dataField: 'id',
+ text: 'Product ID'
+}, {
+ dataField: 'name',
+ text: 'Product Name'
+}, {
+ dataField: 'price',
+ text: 'Product Price'
+}];
+
+const sourceCode = `\
+import BootstrapTable from 'react-bootstrap-table-next';
+import ToolkitProvider from 'react-bootstrap-table2-toolkit';
+
+const columns = [{
+ dataField: 'id',
+ text: 'Product ID'
+}, {
+ dataField: 'name',
+ text: 'Product Name'
+}, {
+ dataField: 'price',
+ text: 'Product Price'
+}];
+
+const CustomToggleList = ({
+ columns,
+ onColumnToggle,
+ toggles
+}) => (
+
+ {
+ columns
+ .map(column => ({
+ ...column,
+ toggle: toggles[column.dataField]
+ }))
+ .map(column => (
+
+ ))
+ }
+
+);
+
+
+ {
+ props => (
+
+
+
+
+
+ )
+ }
+
+`;
+
+const CustomToggleList = ({
+ columns,
+ onColumnToggle,
+ toggles
+}) => (
+
+ {
+ columns
+ .map(column => ({
+ ...column,
+ toggle: toggles[column.dataField]
+ }))
+ .map(column => (
+
+ ))
+ }
+
+);
+
+export default () => (
+
+
+ {
+ props => (
+
+
+
+
+
+ )
+ }
+
+
{ sourceCode }
+
+);
diff --git a/packages/react-bootstrap-table2-example/examples/column-toggle/default-visibility.js b/packages/react-bootstrap-table2-example/examples/column-toggle/default-visibility.js
new file mode 100644
index 0000000..b4b72d2
--- /dev/null
+++ b/packages/react-bootstrap-table2-example/examples/column-toggle/default-visibility.js
@@ -0,0 +1,81 @@
+/* eslint react/prop-types: 0 */
+import React from 'react';
+
+import BootstrapTable from 'react-bootstrap-table-next';
+import ToolkitProvider, { ColumnToggle } from 'react-bootstrap-table2-toolkit';
+import Code from 'components/common/code-block';
+import { productsGenerator } from 'utils/common';
+
+const { ToggleList } = ColumnToggle;
+const products = productsGenerator();
+
+const columns = [{
+ dataField: 'id',
+ text: 'Product ID'
+}, {
+ dataField: 'name',
+ text: 'Product Name',
+ hidden: true
+}, {
+ dataField: 'price',
+ text: 'Product Price',
+ hidden: true
+}];
+
+const sourceCode = `\
+import BootstrapTable from 'react-bootstrap-table-next';
+import ToolkitProvider, { ColumnToggle } from 'react-bootstrap-table2-toolkit';
+
+const { ToggleList } = ColumnToggle;
+const columns = [{
+ dataField: 'id',
+ text: 'Product ID'
+}, {
+ dataField: 'name',
+ text: 'Product Name',
+ hidden: true
+}, {
+ dataField: 'price',
+ text: 'Product Price',
+ hidden: true
+}];
+
+
+ {
+ props => (
+
+
+
+
+
+ )
+ }
+
+`;
+
+export default () => (
+
+
+ {
+ props => (
+
+
+
+
+
+ )
+ }
+
+
{ sourceCode }
+
+);
diff --git a/packages/react-bootstrap-table2-example/examples/column-toggle/index.js b/packages/react-bootstrap-table2-example/examples/column-toggle/index.js
new file mode 100644
index 0000000..2060fdd
--- /dev/null
+++ b/packages/react-bootstrap-table2-example/examples/column-toggle/index.js
@@ -0,0 +1,81 @@
+/* eslint react/prop-types: 0 */
+import React from 'react';
+
+import BootstrapTable from 'react-bootstrap-table-next';
+import ToolkitProvider, { ColumnToggle } from 'react-bootstrap-table2-toolkit';
+import Code from 'components/common/code-block';
+import { productsGenerator } from 'utils/common';
+
+const { ToggleList } = ColumnToggle;
+const products = productsGenerator();
+
+const columns = [{
+ dataField: 'id',
+ text: 'Product ID'
+}, {
+ dataField: 'name',
+ text: 'Product Name'
+}, {
+ dataField: 'price',
+ text: 'Product Price'
+}];
+
+const sourceCode = `\
+import BootstrapTable from 'react-bootstrap-table-next';
+import ToolkitProvider, { ColumnToggle } from 'react-bootstrap-table2-toolkit';
+
+const { ToggleList } = ColumnToggle;
+const columns = [{
+ dataField: 'id',
+ text: 'Product ID'
+}, {
+ dataField: 'name',
+ text: 'Product Name'
+}, {
+ dataField: 'price',
+ text: 'Product Price'
+}];
+
+
+ {
+ props => (
+
+
+
+
+
+ )
+ }
+
+`;
+
+export default () => (
+
+
+ {
+ props => (
+
+
+
+
+
+ )
+ }
+
+
{ sourceCode }
+
+);
diff --git a/packages/react-bootstrap-table2-example/examples/column-toggle/styling-toggle-list.js b/packages/react-bootstrap-table2-example/examples/column-toggle/styling-toggle-list.js
new file mode 100644
index 0000000..34cd3ac
--- /dev/null
+++ b/packages/react-bootstrap-table2-example/examples/column-toggle/styling-toggle-list.js
@@ -0,0 +1,91 @@
+/* eslint react/prop-types: 0 */
+import React from 'react';
+
+import BootstrapTable from 'react-bootstrap-table-next';
+import ToolkitProvider, { ColumnToggle } from 'react-bootstrap-table2-toolkit';
+import Code from 'components/common/code-block';
+import { productsGenerator } from 'utils/common';
+
+const { ToggleList } = ColumnToggle;
+const products = productsGenerator();
+
+const columns = [{
+ dataField: 'id',
+ text: 'Product ID'
+}, {
+ dataField: 'name',
+ text: 'Product Name'
+}, {
+ dataField: 'price',
+ text: 'Product Price'
+}];
+
+const sourceCode = `\
+import BootstrapTable from 'react-bootstrap-table-next';
+import ToolkitProvider, { ColumnToggle } from 'react-bootstrap-table2-toolkit';
+
+const { ToggleList } = ColumnToggle;
+const columns = [{
+ dataField: 'id',
+ text: 'Product ID'
+}, {
+ dataField: 'name',
+ text: 'Product Name'
+}, {
+ dataField: 'price',
+ text: 'Product Price'
+}];
+
+
+ {
+ props => (
+
+
+
+
+
+ )
+ }
+
+`;
+
+export default () => (
+
+
+ {
+ props => (
+
+
+
+
+
+ )
+ }
+
+
{ sourceCode }
+
+);
diff --git a/packages/react-bootstrap-table2-example/stories/index.js b/packages/react-bootstrap-table2-example/stories/index.js
index 788b083..e26f29d 100644
--- a/packages/react-bootstrap-table2-example/stories/index.js
+++ b/packages/react-bootstrap-table2-example/stories/index.js
@@ -20,6 +20,7 @@ import TabIndexCellTable from 'examples/basic/tabindex-column';
import Bootstrap4DefaultSortTable from 'examples/bootstrap4/sort';
import Bootstrap4RowSelectionTable from 'examples/bootstrap4/row-selection';
import Bootstrap4PaginationTable from 'examples/bootstrap4/pagination';
+import Bootstrap4ColumnToggleTable from 'examples/bootstrap4/column-toggle';
// work on columns
import NestedDataTable from 'examples/columns/nested-data-table';
@@ -193,6 +194,12 @@ import CustomCSVButton from 'examples/csv/custom-csv-button';
import ExportCustomData from 'examples/csv/export-custom-data';
import CustomCSV from 'examples/csv/custom-csv';
+// Column toggle
+import BasicColumnToggle from 'examples/column-toggle';
+import DefaultVisibility from 'examples/column-toggle/default-visibility';
+import StylingColumnToggle from 'examples/column-toggle/styling-toggle-list';
+import CustomToggleList from 'examples/column-toggle/custom-toggle-list';
+
// loading overlay
import EmptyTableOverlay from 'examples/loading-overlay/empty-table-overlay';
import TableOverlay from 'examples/loading-overlay/table-overlay';
@@ -240,7 +247,8 @@ storiesOf('Bootstrap 4', module)
.addDecorator(bootstrapStyle(BOOTSTRAP_VERSION.FOUR))
.add('Sort table with bootstrap 4', () => )
.add('Row selection table with bootstrap 4', () => )
- .add('Pagination table with bootstrap 4', () => );
+ .add('Pagination table with bootstrap 4', () => )
+ .add('Column Toggle with bootstrap 4', () => );
storiesOf('Work on Columns', module)
.addDecorator(bootstrapStyle())
@@ -415,6 +423,13 @@ storiesOf('Table Search', module)
.add('Search Fromatted Value', () => )
.add('Custom Search Value', () => );
+storiesOf('Column Toggle', module)
+ .addDecorator(bootstrapStyle())
+ .add('Basic Column Toggle', () => )
+ .add('Default Visibility', () => )
+ .add('Styling Column Toggle', () => )
+ .add('Custom Column Toggle', () => );
+
storiesOf('Export CSV', module)
.addDecorator(bootstrapStyle())
.add('Basic Export CSV', () => )