Advertisement
Guest User

Untitled

a guest
Mar 16th, 2016
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.05 KB | None | 0 0
  1. import React from 'react';
  2. import { browserHistory } from 'react-router';
  3. import { reduxForm } from 'redux-form';
  4.  
  5. // Fields for form
  6. const fields = ['user', 'password'];
  7.  
  8. // Generate CSS for each field, based on error existence
  9. let fieldStyle = field => {
  10. if (field.touched && field.error) {
  11. return "field error"
  12. } else {
  13. return "field"
  14. }
  15. }
  16.  
  17. // Display Errors
  18. let dispErrors = field => {
  19. if (field.touched && field.error) {
  20. return (<div className="ui basic red pointing prompt label transition visible">{field.error}</div>)
  21. }
  22. }
  23.  
  24. // Validation (ReduxForm)
  25. const validate = values => {
  26.  
  27. const errors = {};
  28.  
  29. if (!values.user) {
  30. errors.user = "Required"
  31. }
  32.  
  33. if (!values.password) {
  34. errors.password = "Required"
  35. }
  36.  
  37. return errors;
  38.  
  39. }
  40.  
  41. // OnSubmit (ReduxForm)
  42. let onSubmit = values => {
  43. Meteor.loginWithPassword(values.user, values.password, function (error) {
  44. // Here, I need to deal with this.props.dispatch({...})
  45. })
  46. }
  47.  
  48. let LoginForm = React.createClass({
  49.  
  50. render() {
  51.  
  52. const { fields: { user, password }, handleSubmit } = this.props;
  53.  
  54. return (
  55. <div className="row">
  56. <div className="col-sm-4 col-sm-offset-4">
  57. <div className="auth-box">
  58. <div className="ui raised segment">
  59. <form className="ui form">
  60. <div className={fieldStyle(user)}>
  61. <label>Username / E-Mail</label>
  62. <input type="text" {...user} />
  63. {dispErrors(user)}
  64. </div>
  65. <div className={fieldStyle(password)}>
  66. <label>Password</label>
  67. <input type="password" {...password} />
  68. {dispErrors(password)}
  69. </div>
  70. <button className="ui button" type="submit" onClick={handleSubmit}>
  71. Login
  72. </button>
  73. </form>
  74. </div>
  75. </div>
  76. </div>
  77. </div>
  78. );
  79.  
  80. }
  81.  
  82. });
  83.  
  84. LoginForm = reduxForm({
  85. form: 'login',
  86. fields: fields,
  87. validate,
  88. onSubmit
  89. })(LoginForm);
  90.  
  91. export default LoginForm;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement