diff --git a/packages/react-bootstrap-table2-example/examples/basic/borderless-table.js b/packages/react-bootstrap-table2-example/examples/basic/borderless-table.js index 8ba0dbb..fdc07c7 100644 --- a/packages/react-bootstrap-table2-example/examples/basic/borderless-table.js +++ b/packages/react-bootstrap-table2-example/examples/basic/borderless-table.js @@ -1,6 +1,6 @@ import React from 'react'; -import { BootstrapTable } from 'react-bootstrap-table2'; +import { BootstrapTableful } from 'react-bootstrap-table2'; import Code from 'common/codeBlock'; const products = []; @@ -31,7 +31,7 @@ const columns = [{ }]; const sourceCode = `\ - (
- + `; export default () => (
- + { sourceCode }
); diff --git a/packages/react-bootstrap-table2-example/examples/basic/no-data-table.js b/packages/react-bootstrap-table2-example/examples/basic/no-data-table.js index f386f68..0ed9f60 100644 --- a/packages/react-bootstrap-table2-example/examples/basic/no-data-table.js +++ b/packages/react-bootstrap-table2-example/examples/basic/no-data-table.js @@ -1,6 +1,6 @@ import React from 'react'; -import { BootstrapTable } from 'react-bootstrap-table2'; +import { BootstrapTableful } from 'react-bootstrap-table2'; import Code from 'common/codeBlock'; const columns = [{ @@ -15,7 +15,7 @@ const columns = [{ }]; const sourceCode = `\ - + // Following is more customizable example @@ -23,12 +23,12 @@ function indication() { // return something here } - + `; export default () => (
- + { sourceCode }
); diff --git a/packages/react-bootstrap-table2-example/examples/basic/striped-hover-condensed-table.js b/packages/react-bootstrap-table2-example/examples/basic/striped-hover-condensed-table.js index 2d62c32..da0384f 100644 --- a/packages/react-bootstrap-table2-example/examples/basic/striped-hover-condensed-table.js +++ b/packages/react-bootstrap-table2-example/examples/basic/striped-hover-condensed-table.js @@ -1,6 +1,6 @@ import React from 'react'; -import { BootstrapTable } from 'react-bootstrap-table2'; +import { BootstrapTableful } from 'react-bootstrap-table2'; import Code from 'common/codeBlock'; const products = []; @@ -31,7 +31,7 @@ const columns = [{ }]; const sourceCode = `\ - (
- + `; export default () => (
- + { sourceCode }
); diff --git a/packages/react-bootstrap-table2-example/examples/columns/column-class-table.js b/packages/react-bootstrap-table2-example/examples/columns/column-class-table.js index 494f7a8..6b7dcc7 100644 --- a/packages/react-bootstrap-table2-example/examples/columns/column-class-table.js +++ b/packages/react-bootstrap-table2-example/examples/columns/column-class-table.js @@ -1,7 +1,7 @@ /* eslint no-unused-vars: 0 */ import React from 'react'; -import { BootstrapTable } from 'react-bootstrap-table2'; +import { BootstrapTableful } from 'react-bootstrap-table2'; import Code from 'common/codeBlock'; const products = []; @@ -53,12 +53,12 @@ const columns = [{ text: 'Product Price' }]; - + `; export default () => (
- + { sourceCode }
); diff --git a/packages/react-bootstrap-table2-example/examples/columns/column-event-table.js b/packages/react-bootstrap-table2-example/examples/columns/column-event-table.js index 9d88412..4b3e0a2 100644 --- a/packages/react-bootstrap-table2-example/examples/columns/column-event-table.js +++ b/packages/react-bootstrap-table2-example/examples/columns/column-event-table.js @@ -2,7 +2,7 @@ /* eslint no-alert: 0 */ import React from 'react'; -import { BootstrapTable } from 'react-bootstrap-table2'; +import { BootstrapTableful } from 'react-bootstrap-table2'; import Code from 'common/codeBlock'; const products = []; @@ -50,13 +50,13 @@ const columns = [{ text: 'Product Price' }]; - + `; export default () => (

Try to Click on Product ID columns

- + { sourceCode }
); diff --git a/packages/react-bootstrap-table2-example/examples/columns/column-format-table.js b/packages/react-bootstrap-table2-example/examples/columns/column-format-table.js index 641e1ee..5717bb5 100644 --- a/packages/react-bootstrap-table2-example/examples/columns/column-format-table.js +++ b/packages/react-bootstrap-table2-example/examples/columns/column-format-table.js @@ -1,6 +1,6 @@ import React from 'react'; -import { BootstrapTable } from 'react-bootstrap-table2'; +import { BootstrapTableful } from 'react-bootstrap-table2'; import Code from 'common/codeBlock'; const products = []; @@ -67,7 +67,7 @@ const columns = [ formatter: priceFormatter }]; - (
- (
- + `; export default () => (
- + { sourceCode }
); diff --git a/packages/react-bootstrap-table2-example/examples/columns/column-style-table.js b/packages/react-bootstrap-table2-example/examples/columns/column-style-table.js index 455bed8..dcdd64b 100644 --- a/packages/react-bootstrap-table2-example/examples/columns/column-style-table.js +++ b/packages/react-bootstrap-table2-example/examples/columns/column-style-table.js @@ -1,7 +1,7 @@ /* eslint no-unused-vars: 0 */ import React from 'react'; -import { BootstrapTable } from 'react-bootstrap-table2'; +import { BootstrapTableful } from 'react-bootstrap-table2'; import Code from 'common/codeBlock'; const products = []; @@ -71,12 +71,12 @@ const columns = [{ text: 'Product Price' }]; - + `; export default () => (
- + { sourceCode }
); diff --git a/packages/react-bootstrap-table2-example/examples/columns/column-title-table.js b/packages/react-bootstrap-table2-example/examples/columns/column-title-table.js index f0348d5..140ae71 100644 --- a/packages/react-bootstrap-table2-example/examples/columns/column-title-table.js +++ b/packages/react-bootstrap-table2-example/examples/columns/column-title-table.js @@ -1,7 +1,7 @@ /* eslint no-unused-vars: 0 */ import React from 'react'; -import { BootstrapTable } from 'react-bootstrap-table2'; +import { BootstrapTableful } from 'react-bootstrap-table2'; import Code from 'common/codeBlock'; const products = []; @@ -47,12 +47,12 @@ const columns = [{ text: 'Product Price' }]; - + `; export default () => (
- + { sourceCode }
); diff --git a/packages/react-bootstrap-table2-example/examples/columns/nested-data-table.js b/packages/react-bootstrap-table2-example/examples/columns/nested-data-table.js index 6d2b3dd..c7d4774 100644 --- a/packages/react-bootstrap-table2-example/examples/columns/nested-data-table.js +++ b/packages/react-bootstrap-table2-example/examples/columns/nested-data-table.js @@ -1,6 +1,6 @@ import React from 'react'; -import { BootstrapTable } from 'react-bootstrap-table2'; +import { BootstrapTableful } from 'react-bootstrap-table2'; import Code from 'common/codeBlock'; const products = []; @@ -58,12 +58,12 @@ const columns = [{ text: 'PostCode' }]; - + `; export default () => (
- + { sourceCode }
); diff --git a/packages/react-bootstrap-table2-example/examples/header-columns/column-align-table.js b/packages/react-bootstrap-table2-example/examples/header-columns/column-align-table.js index 0894a29..536b075 100644 --- a/packages/react-bootstrap-table2-example/examples/header-columns/column-align-table.js +++ b/packages/react-bootstrap-table2-example/examples/header-columns/column-align-table.js @@ -1,7 +1,7 @@ /* eslint no-unused-vars: 0 */ import React from 'react'; -import { BootstrapTable } from 'react-bootstrap-table2'; +import { BootstrapTableful } from 'react-bootstrap-table2'; import Code from 'common/codeBlock'; const products = []; @@ -47,12 +47,12 @@ const columns = [{ text: 'Product Price' }]; - + `; export default () => (
- + { sourceCode }
); diff --git a/packages/react-bootstrap-table2-example/examples/header-columns/column-class-table.js b/packages/react-bootstrap-table2-example/examples/header-columns/column-class-table.js index 9191944..ed3b463 100644 --- a/packages/react-bootstrap-table2-example/examples/header-columns/column-class-table.js +++ b/packages/react-bootstrap-table2-example/examples/header-columns/column-class-table.js @@ -1,7 +1,7 @@ /* eslint no-unused-vars: 0 */ import React from 'react'; -import { BootstrapTable } from 'react-bootstrap-table2'; +import { BootstrapTableful } from 'react-bootstrap-table2'; import Code from 'common/codeBlock'; const products = []; @@ -53,12 +53,12 @@ const columns = [{ } }]; - + `; export default () => (
- + { sourceCode }
); diff --git a/packages/react-bootstrap-table2-example/examples/header-columns/column-event-table.js b/packages/react-bootstrap-table2-example/examples/header-columns/column-event-table.js index 074a63e..002f527 100644 --- a/packages/react-bootstrap-table2-example/examples/header-columns/column-event-table.js +++ b/packages/react-bootstrap-table2-example/examples/header-columns/column-event-table.js @@ -2,7 +2,7 @@ /* eslint no-alert: 0 */ import React from 'react'; -import { BootstrapTable } from 'react-bootstrap-table2'; +import { BootstrapTableful } from 'react-bootstrap-table2'; import Code from 'common/codeBlock'; const products = []; @@ -50,13 +50,13 @@ const columns = [{ text: 'Product Price' }]; - + `; export default () => (

Try to Click on Product ID header column

- + { sourceCode }
); diff --git a/packages/react-bootstrap-table2-example/examples/header-columns/column-format-table.js b/packages/react-bootstrap-table2-example/examples/header-columns/column-format-table.js index 3cffe55..703e2c5 100644 --- a/packages/react-bootstrap-table2-example/examples/header-columns/column-format-table.js +++ b/packages/react-bootstrap-table2-example/examples/header-columns/column-format-table.js @@ -1,7 +1,7 @@ /* eslint no-unused-vars: 0 */ import React from 'react'; -import { BootstrapTable } from 'react-bootstrap-table2'; +import { BootstrapTableful } from 'react-bootstrap-table2'; import Code from 'common/codeBlock'; const products = []; @@ -54,7 +54,7 @@ const columns = [ headerFormatter: priceFormatter }]; - (
- + `; export default () => (
- + { sourceCode }
); diff --git a/packages/react-bootstrap-table2-example/examples/header-columns/column-title-table.js b/packages/react-bootstrap-table2-example/examples/header-columns/column-title-table.js index bd1234b..b936a21 100644 --- a/packages/react-bootstrap-table2-example/examples/header-columns/column-title-table.js +++ b/packages/react-bootstrap-table2-example/examples/header-columns/column-title-table.js @@ -1,7 +1,7 @@ /* eslint no-unused-vars: 0 */ import React from 'react'; -import { BootstrapTable } from 'react-bootstrap-table2'; +import { BootstrapTableful } from 'react-bootstrap-table2'; import Code from 'common/codeBlock'; const products = []; @@ -47,12 +47,12 @@ const columns = [{ text: 'Product Price' }]; - + `; export default () => (
- + { sourceCode }
); diff --git a/packages/react-bootstrap-table2-example/src/index.js b/packages/react-bootstrap-table2-example/src/index.js index e6730f5..6b2f5f9 100644 --- a/packages/react-bootstrap-table2-example/src/index.js +++ b/packages/react-bootstrap-table2-example/src/index.js @@ -1,7 +1,7 @@ import React from 'react'; import ReactDom from 'react-dom'; -import { BootstrapTable } from 'react-bootstrap-table2'; +import { BootstrapTableful } from 'react-bootstrap-table2'; const products = []; @@ -62,5 +62,5 @@ const columns = [{ ReactDom.render( - , + , document.getElementById('example')); diff --git a/packages/react-bootstrap-table2/src/bootstrap-table.js b/packages/react-bootstrap-table2/src/bootstrap-table.js index 8db2286..f60f519 100644 --- a/packages/react-bootstrap-table2/src/bootstrap-table.js +++ b/packages/react-bootstrap-table2/src/bootstrap-table.js @@ -11,11 +11,13 @@ class BootstrapTable extends PropsBaseResolver(Component) { constructor(props) { super(props); this.validateProps(); - this.store = new Store(props); + const { store } = this.props; + this.store = !store ? new Store(props) : store; } render() { const { + data, columns, keyField, striped, @@ -37,10 +39,10 @@ class BootstrapTable extends PropsBaseResolver(Component) {
@@ -54,6 +56,7 @@ BootstrapTable.propTypes = { keyField: PropTypes.string.isRequired, data: PropTypes.array.isRequired, columns: PropTypes.array.isRequired, + store: PropTypes.object, noDataIndication: PropTypes.oneOfType([PropTypes.string, PropTypes.func]), striped: PropTypes.bool, bordered: PropTypes.bool, diff --git a/packages/react-bootstrap-table2/src/index.js b/packages/react-bootstrap-table2/src/index.js index a1dfa2d..c787801 100644 --- a/packages/react-bootstrap-table2/src/index.js +++ b/packages/react-bootstrap-table2/src/index.js @@ -1,5 +1,9 @@ import BootstrapTable from './bootstrap-table'; +import withStateful from './stateful-layer'; + +const BootstrapTableful = withStateful(BootstrapTable); export { - BootstrapTable + BootstrapTable, + BootstrapTableful }; diff --git a/packages/react-bootstrap-table2/src/props-resolver/index.js b/packages/react-bootstrap-table2/src/props-resolver/index.js index 158d1dd..627f796 100644 --- a/packages/react-bootstrap-table2/src/props-resolver/index.js +++ b/packages/react-bootstrap-table2/src/props-resolver/index.js @@ -11,4 +11,8 @@ export default ExtendBase => throw new Error('No any visible columns detect'); } } + + isEmpty() { + return this.props.data.length === 0; + } }; diff --git a/packages/react-bootstrap-table2/src/stateful-layer.js b/packages/react-bootstrap-table2/src/stateful-layer.js new file mode 100644 index 0000000..ba0ad9d --- /dev/null +++ b/packages/react-bootstrap-table2/src/stateful-layer.js @@ -0,0 +1,20 @@ +/* eslint arrow-body-style: 0 */ +import React, { Component } from 'react'; +import Store from './store/base'; + +const withStateful = (Base) => { + class StatefulComponent extends Component { + constructor(props) { + super(props); + this.store = new Store(props); + } + + render() { + const { props } = this; + return ; + } + } + return StatefulComponent; +}; + +export default withStateful;