react-components
Version:
React components used by Khan Academy
68 lines (60 loc) • 1.99 kB
JSX
var Options = React.createClass({
render: function() {
// {{{
// Returns a small, colored div
var paint = function (color) {
var style = {
backgroundColor: color,
border: (color === 'white') ? '1px solid' : null,
height: 15,
width: 15,
display: 'inline-block'
};
return <div style={style} />;
};
var outerStyle = {
padding: '0 10px',
display: 'inline-block'
};
// }}}
return <div>
Mixing Colors:
<div style={outerStyle}>
<MultiButtonGroup values={this.state.values}
buttons={[
{value: 'red', content: paint('red')},
{value: 'green', content: paint('green')},
{value: 'blue', content: paint('blue')}
]}
onChange={this.handleChange} />
</div>
{paint(this.mixColors(this.state.values))}
</div>;
},
getInitialState: function() {
return { values: ['red', 'blue'] };
},
// {{{
mixColors: function(colors) {
var containsRed = colors.indexOf('red') > -1;
var containsBlue = colors.indexOf('blue') > -1;
var containsGreen = colors.indexOf('green') > -1;
if (containsRed && containsGreen && containsBlue) {
return 'white';
} else if (containsRed && containsGreen) {
return 'yellow';
} else if (containsRed && containsBlue) {
return 'purple';
} else if (containsGreen && containsBlue) {
return 'cyan';
} else if (colors.length > 0) {
return colors[0];
}
return 'black';
},
// }}}
handleChange: function(values) {
this.setState({ values });
}
});
return <Options />;