From a6ccafcc75b96e040dd4bc02bf9557f210935216 Mon Sep 17 00:00:00 2001 From: AllenFang Date: Sun, 24 Mar 2019 16:55:56 +0800 Subject: [PATCH 1/3] fix #866 --- packages/react-bootstrap-table2/src/row/should-updater.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-bootstrap-table2/src/row/should-updater.js b/packages/react-bootstrap-table2/src/row/should-updater.js index bcef92e..c61ae5e 100644 --- a/packages/react-bootstrap-table2/src/row/should-updater.js +++ b/packages/react-bootstrap-table2/src/row/should-updater.js @@ -27,7 +27,7 @@ export default ExtendBase => return true; } for (let i = 0; i < this.props.columns.length; i += 1) { - if (this.props.columns[i].hidden !== nextProps.columns[i].hidden) { + if (!_.isEqual(this.props.columns[i], nextProps.columns[i])) { return true; } } From 7f1b7a6c9777159ba5957d1f2b6b3e8df3496ca2 Mon Sep 17 00:00:00 2001 From: AllenFang Date: Sun, 24 Mar 2019 20:52:26 +0800 Subject: [PATCH 2/3] fix #838 --- .../src/page-resolver.js | 32 +++++++++++++++---- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/packages/react-bootstrap-table2-paginator/src/page-resolver.js b/packages/react-bootstrap-table2-paginator/src/page-resolver.js index b9134d9..9afbc53 100644 --- a/packages/react-bootstrap-table2-paginator/src/page-resolver.js +++ b/packages/react-bootstrap-table2-paginator/src/page-resolver.js @@ -56,7 +56,7 @@ export default ExtendBase => alwaysShowAllBtns } = this.props; - let pages; + let pages = []; let endPage = totalPages; if (endPage <= 0) return []; @@ -68,24 +68,42 @@ export default ExtendBase => startPage = endPage - paginationSize + 1; } - if (startPage !== pageStartIndex && totalPages > paginationSize && withFirstAndLast) { + if (alwaysShowAllBtns) { + if (withFirstAndLast) { + pages = [firstPageText, prePageText]; + } else { + pages = [prePageText]; + } + } + + if (startPage !== pageStartIndex && + totalPages > paginationSize && + withFirstAndLast && + pages.length === 0 + ) { pages = [firstPageText, prePageText]; - } else if (totalPages > 1 || alwaysShowAllBtns) { + } else if (totalPages > 1 && pages.length === 0) { pages = [prePageText]; - } else { - pages = []; } for (let i = startPage; i <= endPage; i += 1) { if (i >= pageStartIndex) pages.push(i); } - if (endPage <= lastPage && pages.length > 1) { + if (alwaysShowAllBtns || (endPage <= lastPage && pages.length > 1)) { pages.push(nextPageText); } - if (endPage !== lastPage && withFirstAndLast) { + if ((endPage !== lastPage && withFirstAndLast) || (withFirstAndLast && alwaysShowAllBtns)) { pages.push(lastPageText); } + + // if ((endPage <= lastPage && pages.length > 1) || alwaysShowAllBtns) { + // pages.push(nextPageText); + // } + // if (endPage !== lastPage && withFirstAndLast) { + // pages.push(lastPageText); + // } + return pages; } From 196ae3329585ebb7e4623a21657293a18435e71c Mon Sep 17 00:00:00 2001 From: AllenFang Date: Mon, 25 Mar 2019 23:07:22 +0800 Subject: [PATCH 3/3] fix #859 --- .../examples/columns/dummy-column-table.js | 301 ++++++++++-------- packages/react-bootstrap-table2/src/cell.js | 2 +- 2 files changed, 168 insertions(+), 135 deletions(-) diff --git a/packages/react-bootstrap-table2-example/examples/columns/dummy-column-table.js b/packages/react-bootstrap-table2-example/examples/columns/dummy-column-table.js index 10b6948..2e76f08 100644 --- a/packages/react-bootstrap-table2-example/examples/columns/dummy-column-table.js +++ b/packages/react-bootstrap-table2-example/examples/columns/dummy-column-table.js @@ -11,141 +11,13 @@ const products = [ { id: 14, name: 'Item 14', price: 14.5, inStock: true } ]; -const columns = [ - { - dataField: 'id', - text: 'Product ID' - }, - { - dataField: 'name', - text: 'Product Name' - }, - { - dataField: 'price', - text: 'Product Price' - }, - { - dataField: 'inStock', - text: 'In Stock', - formatter: (cellContent, row) => ( -
- -
- ) - }, - { - dataField: 'df1', - isDummyField: true, - text: 'Action 1', - formatter: (cellContent, row) => { - if (row.inStock) { - return ( -
- Available -
- ); - } - return ( -
- Backordered -
- ); - } - }, - { - dataField: 'df2', - isDummyField: true, - text: 'Action 2', - formatter: (cellContent, row) => { - if (row.inStock) { - return ( -
- Available -
- ); - } - return ( -
- Backordered -
- ); - } - } -]; - const sourceCode = `\ import BootstrapTable from 'react-bootstrap-table-next'; -const columns = [ - { - dataField: 'id', - text: 'Product ID' - }, - { - dataField: 'name', - text: 'Product Name' - }, - { - dataField: 'price', - text: 'Product Price' - }, - { - dataField: 'inStock', - text: 'In Stock', - formatter: (cellContent, row) => ( -
- -
- ) - }, - { - dataField: 'df1', - isDummyField: true, - text: 'Action 1', - formatter: (cellContent, row) => { - if (row.inStock) { - return ( -
- Available -
- ); - } - return ( -
- Backordered -
- ); - } - }, - { - dataField: 'df2', - isDummyField: true, - text: 'Action 2', - formatter: (cellContent, row) => { - if (row.inStock) { - return ( -
- Available -
- ); - } - return ( -
- Backordered -
- ); - } - } -]; - class ProductList extends React.Component { constructor(props) { super(props); - this.state = { products }; + this.state = { products, count: 0 }; } toggleInStock = () => { @@ -163,17 +35,96 @@ class ProductList extends React.Component { }; render() { + const columns = [ + { + dataField: 'id', + text: 'Product ID', + formatter: (cell, row, rowIndex, extraData) => ( +
+ ID: {row.id} +
+ state: {extraData} +
+ ), + formatExtraData: this.state.count + }, + { + dataField: 'name', + text: 'Product Name' + }, + { + dataField: 'price', + text: 'Product Price' + }, + { + dataField: 'inStock', + text: 'In Stock', + formatter: (cellContent, row) => ( +
+ +
+ ) + }, + { + dataField: 'df1', + isDummyField: true, + text: 'Action 1', + formatter: (cellContent, row) => { + if (row.inStock) { + return ( +
+ Available +
+ ); + } + return ( +
+ Backordered +
+ ); + } + }, + { + dataField: 'df2', + isDummyField: true, + text: 'Action 2', + formatter: (cellContent, row) => { + if (row.inStock) { + return ( +
+ Available +
+ ); + } + return ( +
+ Backordered +
+ ); + } + } + ]; + return (
-

Products

+

Action 1 and Action 2 are dummy column

+ + - + { sourceCode }
); } @@ -183,7 +134,7 @@ class ProductList extends React.Component { class ProductList extends React.Component { constructor(props) { super(props); - this.state = { products }; + this.state = { products, count: 0 }; } toggleInStock = () => { @@ -200,13 +151,95 @@ class ProductList extends React.Component { this.setState(curr => ({ ...curr, products: newProducts })); }; + counter = () => { + this.setState(curr => ({ ...curr, count: this.state.count + 1 })); + } + render() { + const columns = [ + { + dataField: 'id', + text: 'Product ID', + formatter: (cell, row, rowIndex, extraData) => ( +
+ ID: {row.id} +
+ Counter: {extraData} +
+ ), + formatExtraData: this.state.count + }, + { + dataField: 'name', + text: 'Product Name' + }, + { + dataField: 'price', + text: 'Product Price' + }, + { + dataField: 'inStock', + text: 'In Stock', + formatter: (cellContent, row) => ( +
+ +
+ ) + }, + { + dataField: 'df1', + isDummyField: true, + text: 'Action 1', + formatter: (cellContent, row) => { + if (row.inStock) { + return ( +
+ Available +
+ ); + } + return ( +
+ Backordered +
+ ); + } + }, + { + dataField: 'df2', + isDummyField: true, + text: 'Action 2', + formatter: (cellContent, row) => { + if (row.inStock) { + return ( +
+ Available +
+ ); + } + return ( +
+ Backordered +
+ ); + } + } + ]; + return (

Action 1 and Action 2 are dummy column

+