UNPKG

bulma-dashboard-theme-worona

Version:
108 lines (98 loc) 3.41 kB
import React from 'react'; import { connect } from 'react-redux'; import { translate } from 'react-i18next'; import { reduxForm, Field } from 'redux-form'; import { Link } from 'react-router'; import Input from '../../elements/Input'; import Button from '../../elements/Button'; import * as deps from '../../deps'; import { validate } from './validate'; const submit = (values, dispatch) => { dispatch(deps.actions.loginRequested(values.email, values.password)); }; const LoginForm = ({ handleSubmit, waiting, statusMessage, errorMessage, t }) => ( <div className="container"> <div className="columns"> <div className="column is-half is-offset-one-quarter"> <div className="control"> <form onSubmit={handleSubmit(submit)}> <Field name="email" label="Email" component={Input} type="text" placeholder="account@email.com" icon="envelope" size="large" /> <Field name="password" label="Password" component={Input} type="password" placeholder="●●●●●●●" icon="lock" size="large" /> <br /> <p className="control" /> {statusMessage ? ( <article className="message"> <div className="message-body has-text-centered"> <strong>{t(statusMessage)}</strong> </div> </article> ) : null} {errorMessage ? ( <article className="message is-danger"> <div className="message-body has-text-centered"> <strong>{t(errorMessage)}</strong> </div> </article> ) : null} <div className="level"> <div className="level-left"> <Button color="primary" center size="large" loading={waiting} disabled={waiting} type="submit" > <strong>Login</strong> </Button> </div> {/* <div className="level-right"> <Link to="/register"> Don&apos;t have an account? Register </Link> </div> */} <div className="level-right"> <Link to="/forgot-password">Forgot password?</Link> </div> </div> </form> </div> </div> </div> </div> ); LoginForm.propTypes = { handleSubmit: React.PropTypes.func.isRequired, waiting: React.PropTypes.bool.isRequired, statusMessage: React.PropTypes.oneOfType([React.PropTypes.string, React.PropTypes.bool]), errorMessage: React.PropTypes.oneOfType([React.PropTypes.string, React.PropTypes.bool]), t: React.PropTypes.func }; const LoginTranslated = translate('accounts')(LoginForm); const LoginWithForm = reduxForm({ form: 'login', validate, getFormState: state => state.theme.reduxForm })(LoginTranslated); export default connect(state => ({ waiting: deps.selectors.getIsLoggingIn(state), statusMessage: deps.selectors.getLoginStatus(state), errorMessage: deps.selectors.getLoginError(state) }))(LoginWithForm);