Coder Social home page Coder Social logo

react-checkbox-group's Introduction

React-checkbox-group

Build Status

This is your average checkbox group:

<form>
  <input onChange={this.handleFruitChange} type="checkbox" name="fruit" value="apple" />Apple
  <input onChange={this.handleFruitChange} type="checkbox" name="fruit" value="orange" />Orange
  <input onChange={this.handleFruitChange} type="checkbox" name="fruit" value="watermelon" />Watermelon
</form>

Repetitive, hard to manipulate and easily desynchronized. Lift up name and onChange, and give the group an initial checked values array:

<CheckboxGroup name="fruits" value={['kiwi', 'pineapple']} onChange={this.fruitsChanged}>
  {
    Checkbox => (
      <div>
        <Checkbox value="kiwi"/>
        <Checkbox value="pineapple"/>
        <Checkbox value="watermelon"/>
      </div>
    )
  }
</CheckboxGroup>

Listen for changes, get the new value as intuitively as possible:

<CheckboxGroup name="fruit" value={['apple','watermelon']} onChange={this.handleChange}>
...
</CheckboxGroup>

and further

function handleChange(newValues) {
  // ['apple']
}

That's it for the API! See below for a complete example.

Install

bower install react-checkbox-group
or
npm install react-checkbox-group

Simply require/import it to use it:

var CheckboxGroup = require('react-checkbox-group');
// or
import CheckboxGroup from 'react-checkbox-group';

Example

var Demo = React.createClass({
  getInitialState: function() {
    return {
      fruits: ['apple','watermelon']
    };
  },

  componentDidMount: function() {
    // Add orange and remove watermelon after 5 seconds
    setTimeout(function() {
      this.setState({
        value: ['apple','orange']
      });
    }.bind(this), 5000);
  },

  render: function() {
    // the checkboxes can be arbitrarily deep. They will always be fetched and
    // attached the `name` attribute correctly. `value` is optional
    return (
      <CheckboxGroup
        name="fruits"
        value={this.state.fruits}
        onChange={this.fruitsChanged}
      >
        {
          Checkbox => (
            <form>
              <label>
                <Checkbox value="apple"/> Apple
              </label>
              <label>
                <Checkbox value="orange"/> Orange
              </label>
              <label>
                <Checkbox value="watermelon"/> Watermelon
              </label>
            </form>
          )
        }
      </CheckboxGroup>
    );
  },
  fruitsChanged: function(newFruits) {
    this.setState({
      fruits: newFruits
    });
  }
});

ReactDOM.render(<Demo/>, document.body);

License

MIT.

react-checkbox-group's People

Contributors

calvinmetcalf avatar hideoyanagi avatar ziad-saab avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.