import React, { PropTypes } from 'react'; import { resetForm, reduxForm } from 'redux-form'; import { Button, FormGroup, FormControl } from 'react-bootstrap'; import { isValidURL, makeRequired, createFormValidator, getValidationState } from '../../../../utils/form'; import { submitChallenge, showProjectSubmit } from '../../redux/actions'; const propTypes = { isSignedIn: PropTypes.bool, isSubmitting: PropTypes.bool, showProjectSubmit: PropTypes.func, fields: PropTypes.object, handleSubmit: PropTypes.func, submitChallenge: PropTypes.func, resetForm: PropTypes.func }; const bindableActions = { resetForm, submitChallenge, showProjectSubmit }; const frontEndFields = [ 'solution' ]; const backEndFields = [ 'solution', 'githubLink' ]; const fieldValidators = { solution: makeRequired(isValidURL) }; const backEndFieldValidators = { ...fieldValidators, githubLink: makeRequired(isValidURL) }; export function SolutionInput({ solution, placeholder }) { return ( ); } SolutionInput.propTypes = { solution: PropTypes.object, placeholder: PropTypes.string }; export function _FrontEndForm({ fields, handleSubmit, submitChallenge, resetForm, isSubmitting, showProjectSubmit }) { const buttonCopy = isSubmitting ? 'Submit and go to my next challenge' : "I've completed this challenge"; return (
{ submitChallenge(value); resetForm('NewFrontEndProject'); }) } > { isSubmitting ? : null } ); } _FrontEndForm.propTypes = propTypes; export const FrontEndForm = reduxForm( { form: 'NewFrontEndProject', fields: frontEndFields, validate: createFormValidator(fieldValidators) }, null, bindableActions )(_FrontEndForm); export function _BackEndForm({ fields: { solution, githubLink }, handleSubmit, submitChallenge, resetForm, isSubmitting, showProjectSubmit }) { const buttonCopy = isSubmitting ? 'Submit and go to my next challenge' : "I've completed this challenge"; return (
{ submitChallenge(values); resetForm('NewBackEndProject'); }) } > { isSubmitting ? : null } { isSubmitting ? : null } ); } _BackEndForm.propTypes = propTypes; export const BackEndForm = reduxForm( { form: 'NewBackEndProject', fields: backEndFields, validate: createFormValidator(backEndFieldValidators) }, null, bindableActions )(_BackEndForm);