Files
freeCodeCamp/common/app/routes/Jobs/components/List.jsx

70 lines
1.6 KiB
JavaScript
Raw Normal View History

2015-07-25 21:32:18 -07:00
import React, { PropTypes } from 'react';
import classnames from 'classnames';
import { ListGroup, ListGroupItem } from 'react-bootstrap';
import moment from 'moment';
2015-07-25 21:32:18 -07:00
2015-09-07 23:52:21 -07:00
export default React.createClass({
displayName: 'ListJobs',
2015-07-25 21:32:18 -07:00
2015-09-07 23:52:21 -07:00
propTypes: {
handleClick: PropTypes.func,
2015-09-07 23:52:21 -07:00
jobs: PropTypes.array
},
2015-07-25 21:32:18 -07:00
renderJobs(handleClick, jobs = []) {
return jobs
.filter(({ isPaid, isApproved, isFilled }) => {
return isPaid && isApproved && !isFilled;
})
.map(({
2015-09-07 23:52:21 -07:00
id,
company,
position,
2015-09-14 12:12:31 -07:00
isHighlighted,
2015-09-07 23:52:21 -07:00
postedOn
}) => {
const className = classnames({
'jobs-list': true,
'jobs-list-highlight': isHighlighted
});
return (
<ListGroupItem
className={ className }
key={ id }
onClick={ () => handleClick(id) }>
<div>
<h4 style={{ display: 'inline-block' }}>
<span>{ company }</span>
{' '}
<span className='hidden-xs hidden-sm'>
- { position }
</span>
{' '}
</h4>
<h4
className='pull-right'
style={{ display: 'inline-block' }}>
{ moment(new Date(postedOn)).format('MMM Do') }
</h4>
</div>
</ListGroupItem>
);
});
2015-09-07 23:52:21 -07:00
},
render() {
const {
handleClick,
jobs
} = this.props;
2015-09-07 23:52:21 -07:00
return (
<ListGroup>
{ this.renderJobs(handleClick, jobs) }
</ListGroup>
2015-09-07 23:52:21 -07:00
);
}
});