kevicency / formik-office-ui-fabric-react

šŸ’‰ Instant pain reliever for using Formik with Office UI Fabric React šŸ’‰
https://kmees.github.io/formik-office-ui-fabric-react
MIT License
42 stars 13 forks source link
formik office-ui-fabric office-ui-fabric-react react

npm version Build Status Coverage Status npm code style: prettier

formik-office-ui-fabric-react

šŸ’‰ Instant pain reliever for using Formik with Office UI Fabric React šŸ’‰

Why?

To reduce the boilerplate code needed to get Fabrics input components work seamlessly with Formiks field props and validation errors.

How?

  1. Install package
yarn add formik-office-ui-fabric-react
# or
npm install --save formik-office-ui-fabric-react
  1. Replace FooComponent with FormikFooComponent or use the mapFieldToFooComponent, i.e
import { Formik, Form, Field } from 'formik'
import { DatePicker } from 'office-ui-fabric-react'
import { FormikDatePicker, mapFieldToDatePicker } from 'formik-office-ui-fabric-react'

const OldAndUgly = () => (
  <Formik initialValues={{ date: new Date() }}>
    <Form>
      <Field
        name="date"
        render={fieldProps => (
          <DatePicker
            value={/* wrapper code for fieldProps.value */}
            onSelectDate={/* wrapper code for fieldProps.onChange */}
            {/* and more ugly wrapper code trying to get name, onBlur, etc. working */}
          />
        )}
      />
    </Form>
  </Formik>
)

// using the component
const NewAndPretty = () => (
  <Formik initialValues={{ date: new Date() }}>
    <Form>
      <Field name="date" component={FormikDatePicker} />
    </Form>
  </Formik>
)

// or using the map function
const NewAndAlsoPretty = () => (
  <Formik initialValues={{ date: new Date() }}>
    <Form>
      <Field name="date" render={fieldProps => (
        <DatePicker {...mapFieldToDatePicker(fieldProps)} />
      )} />
    </Form>
  </Formik>
)

Documentation

Development

git clone https://github.com/kmees/formik-office-ui-fabric-react
cd formik-office-ui-fabric-react && yarn install

Running development server

yarn start

Running tests

yarn test