2.0.0 • Published 7 years ago

wrap-component-with-valour v2.0.0

Weekly downloads
4
License
MIT
Repository
github
Last release
7 years ago

Wrap Component With Valour

wrapComponentWithValour is a function that takes a React component and returns a component with added client side validation using the valour library.

Props

Passing a component definition to wrapComponentWithValour will provide additional props to the newly defined component function:

  • formName * required

    The name of the form that is registered with valour. If the formName already exists, the rules and valueName will be added to the current form definition within valour.

  • valueName * required

    The name of the value being registered within the valour form

  • rules * required

    An object that defines the rules for a given value within a form.

  • shouldRenderValidationState - Defaults to true

    Should the component render validation state. This is useful for allowing parent components to control validation for each of it's child components.

  • onValidationStateChanged - Defaults to noop

    A function that will get run after validation has been run. It takes three parameters: valueName, value, and isValid.

Usage

SimpleText.js

import React from 'react';
import wrapComponentWithValour from 'wrap-component-with-valour';

function SimpleText({
 isValid = true,
 shouldRenderAsInvalid = true,
 valueName,
 value,
 labelText,
 onValueUpdated
}) {
 function handleTextChanged(event) {
   const newText = event.target.value;
   onValueUpdated(valueName, newText);
 }

 const labelClass = !isValid && shouldRenderAsInvalid ? 'error' : '';
 return (
   <label className={labelClass}>
     {labelText}
     <input
       type="text"
       onChange={handleTextChanged}
       defaultValue={value}
       name={valueName}
     />
   </label>
 );
}

export const ValidatedText = wrapComponentWithValour(SimpleText);

MyApp.js

import React from 'react';
import valour from 'valour';
import { ValidatedSimpleText } from './SimpleText';

function MyApp() {
  const rules = {
    firstName: valour.rules.isRequired().validatedBy(x => x.length > 3)
  };

  function handleValidationStateChange(valueName, value, isValid) {
    console.log(`${value} is a valid value for ${valueName}? ${isValid}`);
  }

  return (
    <ValidatedText
      formName="MyForm"
      valueName="firstName"
      rules={rules}
      labelText="First Name"
      onValidationStateChanged={handleValidationStateChange}
    />
  );
}
2.0.0

7 years ago

1.2.0

7 years ago

1.1.0

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago