1.1.0 • Published 7 years ago

redux-form-field-wrapper v1.1.0

Weekly downloads
4
License
MIT
Repository
github
Last release
7 years ago

Redux-form Field Renderer

Install

npm install redux-form-field-wrapper --save

Usage

import React from 'react'
import {Field, reduxForm} from 'redux-form'
import renderField from 'redux-form-field-wrapper'

const defaultConfig = {
  divClass: 'form-group',
  inputClass: 'col-md-10',
  labelClass: 'col-md-2',
  component: renderField
}

const Form = props => {
  const {handleSubmit, pristine, invalid, reset, submitting} = props
  return (
    <form onSubmit={handleSubmit} className="form-horizontal">
      <Field
        name="name"
        type="text"
        placeholder="Name"
        label="Name"
        {...defaultConfig}
      />
      <Field
        name="email"
        type="email"
        placeholder="Username / E-mail"
        label="E-mail"
        {...defaultConfig}
      />
      <button
        type="submit"
        className="btn btn-primary"
        disabled={pristine || submitting || invalid}>
        Send
      </button>      
    </form>      
    )
}

export default reduxForm({
  form: 'myForm'
})(Form)

Output

<form class="form-horizontal">
<div class="form-group">
  <div class="col-md-2">
    <label>Name</label>
  </div>
  <div class="col-md-10">
    <input type="text" name="name" placeholder="Name" class="form-control">
  </div>
</div>
<div class="form-group">
  <div class="col-md-2">
    <label>E-mail</label>
  </div>
  <div class="col-md-10">
    <input type="email" name="email" placeholder="E-mail" class="form-control">
  </div>
</div>
</form>

What about validation?

Just add your own validation method and populate errors in case of fail

const validate = values => {
  const errors = {}
  if ( ! checkUsername(values.email)) {
    errors.email = 'Sorry, Dude. This username is already in use'
  }
  return errors
}

export default reduxForm({
  form: 'myForm',
  validate
})(Form)

Need something easier?

import renderField, {email} from 'redux-form-field-wrapper'

// ...Code
<Field
  name="email"
  type="email"
  placeholder="E-mail"
  label="E-mail"
  validate={email}
  {...defaultConfig}
/>
// ...Code

export default reduxForm({
  form: 'myForm'
})(Form)
// Obs: Don't need validate property

Validation methods available:

  • required
  • maxLength
  • number
  • minValue
  • email