Skip to content

Instantly share code, notes, and snippets.

@Morgantheplant
Created January 11, 2017 21:10
Show Gist options
  • Save Morgantheplant/2c6bbaf5f5d9c8674f86300740159bff to your computer and use it in GitHub Desktop.
Save Morgantheplant/2c6bbaf5f5d9c8674f86300740159bff to your computer and use it in GitHub Desktop.
import React, { Component, PropTypes } from "react";
import { connect } from 'react-redux';
import { nextPage, previousPage, setPage } from '../actions/pager_actions';
import Pager from '../components/Pager';
class PagerContainer extends Component {
render() {
return (
<Pager
currentPage={+(this.props.currentPage)}
pageTotal={+(this.props.pageTotal)}
pagerAction={this.props.pagerAction}
enterPageNumber={this.props.enterPageNumber}
clickNextPage={this.props.clickNextPage}
clickPrevPage={this.props.clickPrevPage}
doneReloading={this.props.doneReloading}
reload={this.props.reload}
/>
);
}
}
PagerContainer.PropTypes = {
currentPage: PropTypes.number.isRequired,
pageTotal: PropTypes.number.isRequired,
pagerAction: PropTypes.func.isRequired,
reload: PropTypes.bool.isRequired,
isDisabled: PropTypes.bool.isRequired
};
function mapStateToProps(state) {
const {
currentPage,
pageTotal,
reload
} = state.pagerStore;
return {
currentPage,
pageTotal,
reload
};
}
function mapDispatchToProps(dispatch, ownProps){
return {
doneReloading: (page) => dispatch(setPage(page, false)),
enterPageNumber: (e) => {
if(e.key === 'Enter' && !ownProps.isDisabled){
const value = e.target.value.replace(/\D/g, '');
e.target.value = "";
const { pageTotal } = ownProps;
console.log(value, pageTotal);
if(value > 0 && value <= pageTotal){
dispatch(setPage(value, true));
}
}
},
clickPrevPage: () => {
if(!ownProps.isDisabled){
dispatch(previousPage());
}
},
clickNextPage: () => {
if(!ownProps.isDisabled){
dispatch(nextPage());
}
}
};
}
export default connect(mapStateToProps, mapDispatchToProps)(PagerContainer);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment