uncontrollable-input

0.1.1 • Public • Published

uncontrollable-input Build Status

Simplify the creation of controlled/uncontrolled React inputs

Features:

  • fully compatible with React 15 (both stateful and stateless components)
  • full controlled and uncontrolled modes support
  • errors in dev mode on incorrect uses (NODE_ENV != 'production')
  • full getter/setter support
  • undefined can be used in controlled mode (as long as there is a value prop)

Install

Node & Browserify/Webpack

Installation of the npm package:

> npm install --save uncontrollable-input

Then require the package:

// ES2015
import uncontrollableInput from 'uncontrollable-input'
 
// ES5
const uncontrollableInput = require('uncontrollable-input').default

Browser

You can directly use the build provided at unpkg.com:

<script src="https://unpkg.com/uncontrollable-input@0/dist/umd.js"></script>

Usage

Create a controlled input and use the decorator:

const MyInput = @uncontrollableInput(({ onChange, value }) =>
  <input
    onChange={this.props.onChange}
    value={this.props.value}
  />
)

You can now use it in either controlled or uncontrolled mode:

// uncontrolled: defaultValue and ref
<MyInput
  defaultValue='foo bar'
  ref={ref => {
    if (ref) {
      console.log(ref.value) // getter/setter
    }
  }}
/>
 
// controlled:
<MyInput
  onChange={event => {
    this.linkState({ value: event.target.value })
  }}
  value={this.state.value}
/>

Development

# Install dependencies
> npm install

# Run the tests
> npm test

# Continuously compile
> npm run dev

# Continuously run the tests
> npm run dev-test

# Build for production (automatically called by npm install)
> npm run build

Contributions

Contributions are very welcomed, either on the documentation or on the code.

You may:

  • report any issue you've encountered;
  • fork and create a pull request.

License

ISC © Julien Fontanet

Dependencies (0)

    Dev Dependencies (19)

    Package Sidebar

    Install

    npm i uncontrollable-input

    Weekly Downloads

    553

    Version

    0.1.1

    License

    ISC

    Last publish

    Collaborators

    • marsaud
    • pdonias
    • julien-f