# formsy-semantic-ui-react ![CI](https://github.com/zabute/formsy-semantic-ui-react/workflows/CI/badge.svg) [![npm version](https://badge.fury.io/js/formsy-semantic-ui-react.svg)](https://badge.fury.io/js/formsy-semantic-ui-react)

Quicky create [formsy-react](https://github.com/formsy/formsy-react) forms with [Semantic-Ui-React's](https://github.com/Semantic-Org/Semantic-UI-React) Form Components.

## Installation

```
npm install (or yarn add) formsy-semantic-ui-react
```

You will also need formsy-react

```
npm install (or yarn add) formsy-react
```

## Usage

```jsx
// ES6
import { Form, Input, TextArea, Checkbox, Radio, RadioGroup, Dropdown, Select } from 'formsy-semantic-ui-react';
```

```jsx
// ES5
var Form = require('formsy-semantic-ui-react').Form;
/** and so on for the rest of the Components **/
```

```jsx
const App = (props) => {
  const errorLabel = <Label color="red" pointing />;

  return (
    <Form onValidSubmit={props.onValidSubmit} loading={props.isLoading}>
      <Form.Input
        name="email"
        label="Email"
        validations="isEmail"
        validationErrors={{ isEmail: 'Email not valid' }}
        errorLabel={errorLabel}
      />
    </Form>
  );
};
```

## Props

This library defines a couple of (non-required) props for more control over behavior/markup:

- `errorLabel` (type: `Node` default: `none`)

  Used to Show validation errors next to the inputs. Any `children` get replaced by `getErrorMessage()`

```jsx
  <Checkbox
    errorLabel={ <Label color="red" pointing="left"/> }/>
  />
```

- `instantValidation` (type: `bool` default: `false`)

  Whether or not to show validation errors as soon as user starts typing. Only available on `Input` and `Form.Input`

```jsx
<Input instantValidation />
```

## Examples

Go to the [example](/example) folder to see more examples of how the components are used.
To run the example app:

```
npm/yarn install
npm/yarn run example-app
```

Then go to `localhost:8080`

For more information on building and validating `formsy-react` forms, take a look at [Formsy-React's Documentation](https://github.com/formsy/formsy-react/blob/master/API.md)

## Tests

Tests are done using Mocha, chai, sinon, and enzyme on jsdom.
To run the tests,

```
npm/yarn install
npm/yarn run test (or test:watch)
```

License: [MIT](/LICENSE)
