firflant / react-form-component

Simply create a forms, without having to write state management logic on your own. Form library based on Context API with a wide selection of user friendly inputs.
32 stars 4 forks source link

Create React forms just with a pure JSX code and let the react-form-component manage its state for you. A themeable form library based on Context API, with a selection of user friendly inputs and wide customization abilities to match your design and functionality.

From version 2.x this package is a continuation of react-standalone-form.

Docs and examples

Screenshot

Quick start

Install

yarn add react-form-component

Use

  1. Wrap entitre app into <FormThemeProvider>. Optionally define a custom theme in theme prop.
  2. Use <Form> component anywhere in the app, declare all field names in a fields prop.
  3. Use any from built-in input widgets or build custom inputs to compose a form. Give each input a name prop that corresponds with one defined in a fields prop of the ancestor <Form> component.
  4. Use <FormButton> to trigger a submit function that returns all values formatted in a form of a simple javascript object.
// App.js
// Wrap entitre app into a FormThemeProvider.
import React from 'react'
import ReactDOM from 'react-dom'
import { FormThemeProvider } from 'react-form-component'
import BasicExampleForm from './BasicExampleForm'

const App = () =>
  <FormThemeProvider>
    <BasicExampleForm />
  </FormThemeProvider>

ReactDOM.render(<App />, document.querySelector('#app'))

// BasicExampleForm.js
// Create a fully operational form.
import React from 'react'
import ReactDOM from 'react-dom'
import Form, {
  Input,
  Select,
  FormButton,
} from 'react-form-component'

const BasicExampleForm = () =>
  <Form fields={['name', 'email', 'type']}>
    <Input
      name='name'
      label='User name'
    />
    <Input
      name='email'
      type='email'
      label='E-mail'
    />
    <Select
      name='type'
      label='Type of a user'
      options={['Viewer', 'Moderator', 'Admin']}
    />
    <FormButton
      onClick={fields => console.log(fields)}
    >Save</FormButton>
  </Form>

export default BasicExampleForm

Features