Fully customisable React form utility
Go to file
cupcakearmy cf23e62219 logo
2019-09-26 22:35:40 +02:00
.github logo 2019-09-26 22:35:40 +02:00
lib initial commit 2019-09-26 21:13:27 +02:00
test testing 2019-09-26 21:30:14 +02:00
.gitignore initial commit 2019-09-26 21:13:27 +02:00
.npmignore initial commit 2019-09-26 21:13:27 +02:00
LICENSE Initial commit 2019-09-10 09:08:47 +02:00
package.json support modern browsers 2019-09-26 22:10:47 +02:00
README.md Update README.md 2019-09-26 22:06:16 +02:00
tsconfig.json support modern browsers 2019-09-26 22:10:47 +02:00

formhero

Fully customisable react form utility.

Version Dependencies Size Badge

🌈 Features

  • Typescript compatible
  • Customizable extractor, validator, getter and setters. (More in the docs)
  • No Deps
  • Tiny

🚀 Quickstart

import ReactDOM from 'react-dom'
import { useForm } from 'formhero'

const Form = () => {

  const { auto, form, errors } = useForm({
    username: '',
    password: '',
    type: 'formhero',
    awesome: true,
  }, {
    username: /^test/,
    password: {
      validator: /^.{3,}$/,
      message: 'To short',
    },
    awesome: (value) => !!value
  })

  const _submit = (e: React.FormEvent) => {
    e.preventDefault()
    console.log(form, errors)
  }

  return (
    <div>
      <form onSubmit={_submit}>
        
        <div>Username</div>
        <input {...auto('username')} />
        {errors.username && 'Something went wrong'}
        <br />

        <div>Password</div>
        <input {...auto('password')} />
        <br />

        <div>Which one to choose?</div>
        <select {...auto('type')}>
          <option value="redux-form">Redux-Form</option>
          <option value="react-hook-forms">React-Hook-Forms</option>
          <option value="formik">Formik</option>
          <option value="formhero">FormHero</option>
        </select>
        <br />

        <div>Is it awesome?</div>
        <input type="checkbox" name="vehicle" {...auto('awesome', {
          setter: 'checked',
          getter: 'onChange',
          extractor: (e) => e.target.checked
        })} />
        <br />

        <button type="submit">Go 🚀</button>
      </form>
    </div>
  )
}

📖 Docs

useForm

const {auto, errors, update, form} = useForm(initial, validators, options)