<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" />
<link rel="stylesheet" href="style.css" />
<style>
.navbar-brand img {
height: 20px;
}
.filtered-list .filter {
margin-bottom: 21px;
}
</style>
</head>
<body>
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="#">
<img alt="Brand" src="http://rubix23.sketchpixy.com/imgs/homepage/bootstrapreact.png">
</a>
</div>
</div>
</nav>
<div class="container" id="content"></div>
<script src="http://cdnjs.cloudflare.com/ajax/libs/react/0.13.3/react.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/react/0.13.1/JSXTransformer.js"></script>
<script type="text/jsx">
var ListItem = React.createClass({
render: function() {
return(
<li className="list-group-item">{this.props.children}</li>
);
}
});
var FilteredList = React.createClass({
getInitialState: function() {
return {
items: []
};
},
componentDidMount: function() {
this.setState({ items: this.props.items });
},
handleSearchInput: function(e) {
var searchText = e.target.value;
var filteredItems = this.props.items.filter(function(item) {
return item.search(searchText) > -1;
});
this.setState({ items: filteredItems });
},
render: function() {
return (
<div className="list filtered-list">
<input className="filter form-control" onInput={this.handleSearchInput} type="text" placeholder="Search for..."/>
<ul className="list-group">
{this.state.items.map(function(item) {
return(<ListItem>{item}</ListItem>);
})}
</ul>
</div>
);
}
});
var items = [
'apple',
'computer',
'windows',
'mouse',
'keyboard',
'monitor',
'smartphone'
];
React.render(<FilteredList items={items}/>, document.getElementById('content'));
</script>
</body>
</html>
// Code goes here
/* Styles go here */