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', () => )