React Base Fiddle (JSX)

Starting point for creating JSFiddles with React. This uses React with Addons.

by ciaoben

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.24/browser.js"></script>
<script src="https://npmcdn.com/react@latest/dist/react-with-addons.js"></script>
<script src="https://npmcdn.com/react-dom@latest/dist/react-dom.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
<script src="https://facebook.github.io/react/js/jsfiddle-integration-babel.js"></script>

<div id="container">
    <!-- This element's contents will be replaced with your component. -->
</div>

CSS

#cont {
  display: block;
  width: 300px;
}

#cont div {
  width: 50%;
  display: inline-block;
  height: 150px;
  overflow-y: auto;
}

#cont input {
  width: 100%;
}

#cont ul {
  list-style: none;
  padding: 0;
}

#cont ul li {
  padding: 10px;
  background-color: greenyellow;
  color: limegreen;
  margin: 0;
  font-weight: bold;
  font-family: 'Helvetica';
}

#cont ul li:hover {
  cursor: pointer;
}

JavaScript 1.7

var Hello = React.createClass({
	getInitialState() {
  	return {
    	first: [
      	{name: 'ben'},
        {name: 'dan'},
        {name: 'gilli'},
        {name: 'carlo'},
        {name: 'stefano'},
        {name: 'chiara'},
      ],
      second: [],
      isFiltering: false,
      filterValue: undefined,
      filterdValues: [],
    }
  },
  
  filter(event) {
  	let filterValue = event.target.value;
  	
    if (filterValue) {
    	this.setState({isFiltering: true, filterValue: filterValue})
    } else {
    	this.setState({isFiltering: false, filterValue: undefined})
    }
 
    var firsts = _.filter(this.state.first, (x) => { return !!x.name.match(new RegExp(filterValue)) });
  	this.setState({filterdValues: firsts});
  },
 
  moveToRight: function(obj) {
  	var seconds = this.state.second;
    seconds.push(obj);
    var firsts = _.filter(this.state.first, (x) => { return x.name != obj.name });
  	this.setState({first: firsts});
    this.setState({second: seconds});
    if (this.state.isFiltering) {
    	var firsts = _.filter(this.state.filterdValues, (x) => { return x.name != obj.name });
  	this.setState({filterdValues: firsts});
    }
  },
  
   moveToLeft: function(obj) {
  	var firsts = this.state.first;
    firsts.push(obj);
    var seconds = _.filter(this.state.second, (x) => { return x.name != obj.name });
  	this.setState({first: firsts});
    this.setState({second: seconds});
    if (this.state.isFiltering) {
    	var firsts = _.filter(this.state.first, (x) => { return !!x.name.match(new RegExp(this.state.filterValue)) });
  		this.setState({filterdValues: firsts});
    }
  },

  render: function() {
  	let toShow;
  	if (this.state.isFiltering) {
    	toShow = this.state.filterdValues;
    } else {
    	toShow = this.state.first;
    }
    
    return (
    	<div id="cont">
      	<input onChange={this.filter} />
        <div id="first">
        	<h4>Items</h4>
          <ul>{
          	toShow.map((x,i) => {
          		return <li key={i}...