1.0.22-alpha.0 • Published 4 years ago

@alekna/react-forms v1.0.22-alpha.0

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

size gzip size

Usage

Try it out in the browser

import React from 'react';
import { render } from 'react-dom';
import { Form } from '@alekna/react-forms';

const mustContainLetter = letter => value => {
  return !value.includes(letter) ? `Must contain letter ${letter}` : undefined;
};

const initialFields = [
  {
    value: '',
    label: 'First Name',
    name: 'firstName',
    type: 'text',
    requirements: [
      mustContainLetter('a'),
      mustContainLetter('b'),
      mustContainLetter('c'),
    ],
  },
  {
    value: '',
    label: 'Last Name',
    name: 'lastName',
    type: 'text',
    requirements: [],
  },
];

render(
  <Form initialFields={initialFields} onSubmit={values => console.log(values)}>
    {({ fields, handleSubmit, reset }) => {
      return (
        <div className="App">
          <form onSubmit={handleSubmit}>
            <div style={{ display: 'flex', flexDirection: 'column' }}>
              {fields.map((field, key) => (
                <label style={{ display: 'flex', flexDirection: 'column' }}>
                  <span>{field.label}</span>
                  <input key={key} {...field} />
                  {field.meta && field.meta.errors && (
                    <div style={{ color: 'red' }}>
                      {field.meta.errors.join(', ')}
                    </div>
                  )}
                </label>
              ))}
            </div>
            <div>
              <button type="submit">submit</button>
              <button type="button" onClick={reset}>
                reset
              </button>
            </div>
          </form>
        </div>
      );
    }}
  </Form>,
  document.getElementById('root'),
);

Examples

1.0.22-alpha.0

4 years ago

1.0.21-alpha.0

4 years ago

1.0.20

4 years ago

1.0.19

4 years ago

1.0.18

4 years ago

1.0.17

4 years ago

1.0.16

4 years ago

1.0.15

4 years ago

1.0.14

4 years ago

1.0.11

4 years ago

1.0.9

5 years ago

1.0.8

5 years ago

1.0.7

5 years ago

1.0.6

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago