React Base Fiddle (JSX)
Starting point for creating JSFiddles with React. This uses React with Addons.
by nicholasstephan
December 01, 2015
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.24/browser.js"></script>
<script src="https://fb.me/react-with-addons-0.14.0.js"></script>
<script src="https://fb.me/react-dom-0.14.0.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>
JavaScript 1.7
const S = 0;
const M = 1;
const L = 2;
const XL = 3;
var FormContainer = React.createClass({
getInitialState() {
return {
size: S,
};
},
render() {
return (
<SizePicker
size={this.state.size}
onChange={(size)=>this.setState({size:size})}/>
);
},
});
var SizePicker = (props) => {
var snapPoints = {
[S]: 0,
[M]: 40,
[L]: 80,
[XL]: 120,
};
var selectionStyle = Object.assign({}, styles.selection, {left:snapPoints[props.size]});
return (
<div style={styles.container}>
<div style={selectionStyle}/>
<div style={styles.option} onClick={()=>props.onChange(S)}>S</div>
<div style={styles.option} onClick={()=>props.onChange(M)}>M</div>
<div style={styles.option} onClick={()=>props.onChange(L)}>L</div>
<div style={styles.option} onClick={()=>props.onChange(XL)}>XL</div>
</div>
);
};
var styles = {
container: {
position: 'relative',
width: 160,
height: 40,
},
option: {
display: 'inline-block',
width: 40,
height: 40,
fontFamily: 'sans-serif',
fontSize: 16,
lineHeight: '40px',
textAlign: 'center',
cursor: 'pointer',
},
selection: {
position: 'absolute',
top: 0,
left: 0,
WebkitTransition: 'left 0.2s ease-in-out',
width: 40,
height: 40,
backgroundColor: 'lightBlue',
zIndex: -1,
},
};
ReactDOM.render(
<FormContainer/>, document.getElementById('container')
);