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

formsy-react-wrapper

v0.0.3

Published

Enhanced formsy-react component to handle asynchronous validations

Downloads

7

Readme

formsy-react-wrapper Build Status

Added a wrapper to formsy-react to have asynchronous validations and translations for error messages.

Install

npm install formsy-react-wrapper

How to use

To register asynchronous validator

The validator function has to return a promise.

import FormsyWrapper from 'formsy-react-wrapper'
import request from 'superagent'

FormsyWrapper.addAsyncValidationRule('isUniqueEmail', (value, optionalVal) => {
  return new Promise((resolve, reject) => {
    request
      .post('/api/usercheck')
      .send({email: value})
      .set('Accept', 'application/json')
      .end((err, res) => {
        if (err || !res.ok) {
          reject('check failed')
        } else {
          resolve('check ok')
        }
      })
  })
})

It provides an input component to use with wrapped form component

import React, {Component} from 'react'
import FormsyWrapper from 'formsy-react-wrapper'

class App extends Component {
  render () {
    return (
      <FormsyWrapper.Form className='form'>
        <FormsyWrapper.Input
          name='email'
          validations='isEmail'                      // react-formsy API
          validationError='This is not an email!'    // react-formsy API
          asyncValidations='isUniqueEmail'           // register asynchronous validator name here
          asyncValidationErrors={{isUniqueEmail: 'Email has to be unique'}}  // for failed async validation error message
          required />
      </FormsyWrapper.Form>
    )
  }
}

Error message can have translations by locale

<FormsyWrapper.Input
  validationError={{en: 'This is not an email!', zh: '非email格式'}}
  asyncValidations='isUniqueEmail'
  asyncValidationErrors={{isUniqueEmail: {en: 'Email has to be unique', zh: 'email必须是唯一的'}}}
  locale={this.state.locale}   // `locale` should be either `en` or `zh`
  required />

Example

run example locally

npm run example

// Check http://localhost:8080/

Or see demo

API

formsy-react-wrapper posts the Formsy.Form API to FormsyWrapper.Form, you can use them in the same way.

onValid()

onValidSubmit()

These will be triggered only when both synchronous and asynchronous validation success

onInvalid()

onInvalidSubmit()

These will be triggered when either synchronous or asynchronous validation fails

FormsyWrapper.addAsyncValidationRule(name, func)

Adding async validation rules, the second parameter function must return a promise. Example see how to use section.

FormsyWrapper.Form

Use this instead of Formsy.Form. Example see how to use section.

FormsyWrapper.Input

Must be used with <FormsyWrapper.Form />. Example see how to use section.

To register non-async valiation

Call Formsy.addValidationRule(name, ruleFunc) directly.

TODO

  • add more tests
  • maybe a HOC method so that we add async validation to other form components.