All Projects → wadackel → react-drip-form

wadackel / react-drip-form

Licence: MIT license
☕ HoC based React forms state manager, Support for validation and normalization.

Programming Languages

javascript
184084 projects - #8 most used programming language
CSS
56736 projects

Projects that are alternatives of or similar to react-drip-form

Neoform
✅ React form state management and validation
Stars: ✭ 162 (+145.45%)
Mutual labels:  form, higher-order-component, hoc
Mobx React Form
Reactive MobX Form State Management
Stars: ✭ 1,031 (+1462.12%)
Mutual labels:  state, form
Formik
Build forms in React, without the tears 😭
Stars: ✭ 29,047 (+43910.61%)
Mutual labels:  form, higher-order-component
React Workshop
⚒ 🚧 This is a workshop for learning how to build React Applications
Stars: ✭ 114 (+72.73%)
Mutual labels:  state, higher-order-component
Hocs
🍱 Higher-Order Components for React
Stars: ✭ 1,784 (+2603.03%)
Mutual labels:  higher-order-component, hoc
React Nprogress
⌛️ A React primitive for building slim progress bars.
Stars: ✭ 173 (+162.12%)
Mutual labels:  higher-order-component, hoc
react-cool-form
😎 📋 React hooks for forms state and validation, less code more performant.
Stars: ✭ 246 (+272.73%)
Mutual labels:  state, form
rrx
⚛️ Minimal React router using higher order components
Stars: ✭ 69 (+4.55%)
Mutual labels:  higher-order-component, hoc
react-app-loader
Production ready library for handling Microfrontends
Stars: ✭ 75 (+13.64%)
Mutual labels:  higher-order-component, hoc
Final Form
🏁 Framework agnostic, high performance, subscription-based form state management
Stars: ✭ 2,787 (+4122.73%)
Mutual labels:  state, form
Next Nprogress
Next.js HOC to integrate NProgress inside your app
Stars: ✭ 145 (+119.7%)
Mutual labels:  higher-order-component, hoc
snap-state
State management in a snap 👌
Stars: ✭ 23 (-65.15%)
Mutual labels:  state, hoc
Flagged
Feature Flags for React made easy with hooks, HOC and Render Props
Stars: ✭ 97 (+46.97%)
Mutual labels:  higher-order-component, hoc
React With Direction
Components to provide and consume RTL or LTR direction in React
Stars: ✭ 176 (+166.67%)
Mutual labels:  higher-order-component, hoc
Incompose
A inferno utility belt for function components and higher-order components
Stars: ✭ 76 (+15.15%)
Mutual labels:  higher-order-component, hoc
React Bps
🔱 Create breakpoints to your component props
Stars: ✭ 64 (-3.03%)
Mutual labels:  higher-order-component, hoc
addhoc
Handy little helper to create proper React HOC functions complete with hoisted statics and forwarded refs
Stars: ✭ 40 (-39.39%)
Mutual labels:  higher-order-component, hoc
Recompact
⚛ A set of React higher-order components utilities. Drop-in replacement for recompose.
Stars: ✭ 419 (+534.85%)
Mutual labels:  higher-order-component, hoc
Fielder
A field-first form library for React and React Native
Stars: ✭ 160 (+142.42%)
Mutual labels:  state, form
react-table-hoc-draggable-columns
ReactTable HOC for draggable columns
Stars: ✭ 27 (-59.09%)
Mutual labels:  higher-order-component, hoc

react-drip-form

Build Status Codecov npm version

HoC based React forms state manager, Support for validation and normalization.

https://tsuyoshiwada.github.io/react-drip-form/

Table of Contents

Features

  • HOC based API. (No magic, transparent and open API)
  • Free component design. Integration with many UI frameworks.
  • Rule based validation, and Provide many built-in rules.
  • Support async and sync validation.
  • Support normalization.
  • Support Nest fields and Array fields.
  • Customizable error message. (Support i18n)

Getting Started

Installation

$ npm install --save react-drip-form

Basic usage

1. Create field component

Input.js

import React from 'react';
import { dripFormField } from 'react-drip-form';

const Input = ({
  input,
  meta: { error, dirty, touched },
  ...props,
}) => (
  <div>
    <input
      {...props}
      {...input}
    />
    {error && dirty && touched && <span style={{ color: 'red' }}>{error}</span>}
  </div>
);

export default dripFormField()(Input);

2. Create form component

Form.js

import React from 'react';
import { dripForm } from 'react-drip-form';
import Input from './Input';

const Form = ({
  handlers,
  meta: { invalid, pristine },
}) => (
  <form onSubmit={handlers.onSubmit}>
    <div>
      <label htmlFor="email">Email-Address</label>
      <Input
        id="email"
        type="email"
        name="email"
        label="Email-Address"
        placeholder="Enter your Email-Address"
      />
    </div>

    <div>
      <label htmlFor="password">Password</label>
      <Input
        id="password"
        type="password"
        name="password"
        label="Password"
        placeholder="Enter your Password"
      />
    </div>

    <button
      type="submit"
      disabled={invalid || pristine}
      onClick={handlers.onSubmit}
    >
      Submit
    </button>
  </form>
);

export default dripForm({
  validations: {
    email: {
      required: true,
      email: true,
    },
    password: {
      required: true,
    },
  },
})(Form);

3. Mount the Form component

App.js

import React, { Component } from 'react';
import Form from './Form';

export default class App extends Component {
  // Get valid values.
  handleSubmit = (values) => {
    console.log(values);
  };

  render() {
    return (
      <div>
        <h1>Login</h1>
        <Form onValidSubmit={this.handleSubmit} />
      </div>
    );
  }
}

4. Enjoy coffee break

Your work has complete!
Let's enjoy coffee break slowly.

Documentation

See Document page.

Related projects

Components

Validator

ChangeLog

See CHANGELOG.md

TODO

We are planning to proceed with work, but the contribution is greatly appreciated!

Core

  • File handling
  • Testing section in Documentation
  • Support for Flow
  • Support for TypeScript

Components

Contribute

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

Bugs, feature requests and comments are more than welcome in the issues.

License

MIT © tsuyoshiwada

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].