Advertisement
Guest User

Untitled

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