npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

react-quick-form

v0.1.4

Published

This library only exposes one hoc to give some validation/transformation rules to your forms.

Downloads

2

Readme

Quick Form

This library only exposes one hoc to give some validation/transformation rules to your forms.

Example: Login form with validation

Get the library with npm install react-quick-form;

import { withForm }    from 'react-quick-form';
import * as validators from './validators';


const rules =
{
    email :
    {
        validate : validators.email
    },

    password :
    {
        validate : validators.password
    }
}


function MyForm( { fields, errors, change, submit } )
{
    return (

        <form
            onChange={ e => change( e.target.name, e.target.value ) }
            onSubmit={ submit }>

            <input
                name="email"
                value={ fields.email } />
            <ul>{ errors.email }</ul>

            <input
                name="password"
                type="password"
                value={ fields.password } />
            <ul>{ errors.password }</ul>

        </form>

    );
}


export default withForm( rules )( MyForm );

Usage

The wrapped component can receive 4 props that will dictate its behaviour:

  • fields: the current list of values (indexed by field name)
  • errors: the current list of errors (indexed by field name)
  • onChange( field, value, errors ): a callback called any time one field changes
  • onSubmit( fields, errors ): a callback called when the form is submitted

Then it injects 4 props to your own component so you can interact with it:

  • fields: the current list of values (indexed by field name and transformed for the view)
  • errors: the current list of errors (indexed by field name)
  • change( field, value ): a function to update one field value
  • submit( e ): a function to submit your whole form and prevent the page from reloading

The final component is completely controlled so you'll have to manage a state/store outside of it. You can follow the example used in stories stories/Form.js.

Rules

Rules are defined by an object with keys matching the different fields you have in your input. Each of those keys point to an object which contains the rules specific to this field.

For now, you only have 3 kinds of rules:

  • toStore( value ): A function that converts the value coming from your inputs to the one you want to put in your store
  • toView( value ): A function that converts the value coming from your store to what you want ot see in your inputs
  • validate( value ): A function that is executed on change/submit to validate the store value and returns an array describing the different errors found