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

@deedmob/redux-form-react-submitbutton

v3.0.0

Published

A submit button for redux form that dynamically changes based on the current form state

Downloads

45

Readme

redux-form-react-submitbutton

A submit button for redux-form that dynamically changes based on the current redux-form state.

Demo

https://deedmob.github.io/redux-form-react-submitbutton/example/

Installing

yarn add redux-form-react-submitbutton

npm install redux-form-react-submitbutton

Example usage (using default Components provided)

  import { FormSubmissionHandler, FormErrorMessage, FormSubmitButton } from 'redux-form-react-submitbutton';

  @reduxForm({
    form: 'account'
  })
  class AccountForm extends React.Component {
    render(){
      <form>
        <Field name="email" component={TextInput} />
        <FormSubmissionHandler>
          <FormSubmitButton /> {/* First Child is the submit button */}
          <FormErrorMessage /> {/* Second Child is the error message handler, optional */}
        </FormSubmissionHandler>
        <br/>
      </form>
    }
  }

Custom Usage (probably what you want, although you can use the provided components as guidelines)

  import { FormSubmissionHandler } from 'redux-form-react-submitbutton';

  const CustomSubmitButton = ({ invalid, submitting }) => {
    if(submitting)
      return <SpinnerButton/>
    if(invalid)
      return <ErrorButton/>
    return <NormalButton/>
  }
  
  const CustomErrorMessage = ({ syncErrors, error }) => {
    if(syncErrors){
      return (
        <ul>
          {Object.keys(this.props.syncErrors).map(key =>
            <li key={key}>{key}</li>
          )}
        </ul>
      )
    }
    if(error)
      return error
    return null;
  }

  @reduxForm({
    form: 'account'
  })
  class AccountForm extends React.Component {
    render(){
      <form>
        <Field name="email" component={TextInput} />
        <FormSubmissionHandler>
          <CustomSubmitButton /> {/* First Child is the submit button */}
          <CustomErrorMessage /> {/* Second Child is the error message handler, optional */}
        </FormSubmissionHandler>
        <br/>
      </form>
    }
  }

Components

import { FormSubmissionHandler, FormErrorMessage, FormSubmitButton, connectReduxFormState } from 'redux-form-react-submitbutton';

FormSubmissionHandler

Expects one or two children, the first being injectedProps the props: submitting: bool invalid: bool. The second is injected the props syncErrors: {[key]: value}, error: false | string. Any custom props are passed onto the container div.

FormSubmitButton

Injected props: submitting: bool invalid: bool

Convenient props: className: 'btn', label: 'Submit',

FormErrorMessage

Injected props: syncErrors: {[key]: value} // keys are redux-form Field name unique identifiers, {} on no errors. error: false | string

connectReduxFormState

is a HOC that when used as :connectReduxFormState(WrappedComponent) injects the following props to your component:

  _reduxForm: _reduxForm
  syncErrors: _reduxForm.syncErrors || {},
  error: _reduxForm.error,
  syncWarnings: _reduxForm.syncWarnings || {},
  submitting: _reduxForm.submitting,
  pristine: _reduxForm.pristine,
  dirty: _reduxForm.dirty,
  submitSucceeded: _reduxForm.submitSucceeded,
  submitFailed: _reduxForm.submitFailed,
  invalid: _reduxForm.invalid

Suggested usage

Import this library and create your own React Component that wraps it, and passes in your configuration options or internationalization library. Then export that Component and use the new Component in all your forms.