react-form-validator-components

1.3.10 • Public • Published

Installation

npm i react-form-validator-components --save-dev  
yarn add react-form-validator-components --save

Components

Utilizes @material-ui and @material-ui/pickers under the hood
Implementation of several components based off of react-form-validator-core

To use with ValidatorForm

...
import { ValidatorForm, TextValidator } from 'react-form-validator-components'
...

render() {
  return (
    <ValidatorForm ref={r => (this.form = r)} onSubmit={this.handleSubmit}>
      <TextValidator
        name="name"
        value={this.props.name}
        validators={['required']}
        errorMessages="Name is required"
      />
    </ValidatorForm>
  );
}

To use with onBlur just pass the onBlur prop

render() {
  return (
    <ValidatorForm ref={r => (this.form = r)} onSubmit={this.handleSubmit}>
      <TextValidator
        name="name"
        value={this.props.name}
        onChange={handle individual changes to state here}
        onBlur={handle submission here}
      />
    </ValidatorForm>
  );
}
TextValidator (TextField)

Example with default value

<TextValidator
  label="Text"
  value={props.value}
  defaultValue={''}
/>
SelectValidator (Select)

Example with default value based on data in state and a label. A label requires inputProps id definitiion.

<SelectValidator
  label="Select Example"
  value={props.value}
  defaultValue={state.data[0].id}
  inputProps={{
    id: 'select-example'
  }}
>
    {this.props.children}
</SelectValidator>
DateValidator (DatePicker)

Example with default value

constructor(props) {
  super(props);
  this.state = {
   defaultValue: moment().format('YYYY-MM-DD')
  }
}
...
<DateValidator
  value={props.value}
  defaultValue={state.defaultValue}
/>

Usage

To use DateValidator

import MomentUtils from '@date-io/moment';

import { MuiPickerUtilsProvider } from 'react-form-validator-components'  
function App() {
  return (
    <MuiPickerUtilsProvider utils={MomentUtils} locale="en">
      <Root />
    </MuiPickerUtilsProvider>
  );
}

To provide a default value that will call onChange immediately if the value is false

<TextValidator
  value={null}
  defaultValue={'Text'}
  onChange={val => this.onChange(val)}
/>

This can be helpful in the case where the TextValidator is part of something such as Material Table. The editComponent holds its own value for the data, and is only updated onChange. So even if you provide an alternative to the TextValidator through

<TextValidator
  value={editProps.value || ''}
/>

The data held by Material Table will not be updated, then when you go to "submit" through Material Table, it will still show an invalid default value. Providing a defaultValue passes back the value immediately.

Package Sidebar

Install

npm i react-form-validator-components

Weekly Downloads

41

Version

1.3.10

License

MIT

Unpacked Size

340 kB

Total Files

33

Last publish

Collaborators

  • nickharder88