From 8c4e8fa554221ad698c7d50b789a072666238305 Mon Sep 17 00:00:00 2001 From: Iilei Date: Thu, 28 Jan 2016 14:50:26 +0100 Subject: [PATCH 1/2] Enable `onPageChange` hook --- README.md | 6 ++++++ build/reactable.js | 3 +++ lib/reactable/table.js | 3 +++ src/reactable/table.jsx | 3 +++ 4 files changed, 15 insertions(+) diff --git a/README.md b/README.md index 59f1e7e6..42aaed07 100644 --- a/README.md +++ b/README.md @@ -484,3 +484,9 @@ Called every time the filtering changes. This handler will be passed a string containing the text that's being used for filtering. + +#### onPageChange + +Called every time the page changes. + +This handler will be passed a number representing the current page, zero based. diff --git a/build/reactable.js b/build/reactable.js index 4b20da17..ddf13068 100644 --- a/build/reactable.js +++ b/build/reactable.js @@ -1435,6 +1435,9 @@ window.ReactDOM["default"] = window.ReactDOM; currentPage: currentPage, onPageChange: function (page) { _this.setState({ currentPage: page }); + if (_this.props.onPageChange) { + _this.props.onPageChange(page); + } }, key: 'paginator' }) : null, this.tfoot diff --git a/lib/reactable/table.js b/lib/reactable/table.js index 52e984ee..bcec32e2 100644 --- a/lib/reactable/table.js +++ b/lib/reactable/table.js @@ -488,6 +488,9 @@ var Table = (function (_React$Component) { currentPage: currentPage, onPageChange: function (page) { _this.setState({ currentPage: page }); + if (_this.props.onPageChange) { + _this.props.onPageChange(page); + } }, key: 'paginator' }) : null, this.tfoot diff --git a/src/reactable/table.jsx b/src/reactable/table.jsx index af013c65..58831116 100644 --- a/src/reactable/table.jsx +++ b/src/reactable/table.jsx @@ -455,6 +455,9 @@ export class Table extends React.Component { currentPage={currentPage} onPageChange={page => { this.setState({ currentPage: page }); + if (this.props.onPageChange) { + this.props.onPageChange(page) + } }} key="paginator"/> : null} From 31e4fc3ca7a3e321f483c0402ecb877216a7595a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Wei=C3=9F?= Date: Sun, 31 Jan 2016 23:17:22 +0100 Subject: [PATCH 2/2] add specs for onPageChange hook --- tests/reactable_test.jsx | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/tests/reactable_test.jsx b/tests/reactable_test.jsx index 68c960bd..578cd1ed 100644 --- a/tests/reactable_test.jsx +++ b/tests/reactable_test.jsx @@ -952,6 +952,43 @@ describe('Reactable', function() { expect($('#table tbody.reactable-data tr').length).to.equal(9); }); }); + + describe('onPageChange hook', () => { + let currentPage + const callback = page => { + currentPage = page + } + before( () => { + ReactDOM.render( + , + ReactableTestUtils.testNode() + ); + }); + + after(ReactableTestUtils.resetTestEnvironment); + + it('emits the number of the currently selected page (zero based) when onPageChange event is triggered', () => { + const page1 = $('#table tbody.reactable-pagination a.reactable-page-button')[0]; + const page2 = $('#table tbody.reactable-pagination a.reactable-page-button')[1]; + const page3 = $('#table tbody.reactable-pagination a.reactable-page-button')[2]; + ReactTestUtils.Simulate.click(page2); + expect(currentPage).to.equal(1); + ReactTestUtils.Simulate.click(page1); + expect(currentPage).to.equal(0); + ReactTestUtils.Simulate.click(page3); + expect(currentPage).to.equal(2); + }); + }); }); describe('sorting', function(){