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}...