add create job modal

This commit is contained in:
Berkeley Martinez
2015-09-14 13:06:27 -07:00
parent 523af40641
commit d8e8f3bb67
4 changed files with 67 additions and 7 deletions

View File

@ -0,0 +1,33 @@
import React, { PropTypes } from 'react';
import { Button, Modal } from 'react-bootstrap';
export default React.createClass({
displayName: 'CreateJobsModal',
propTypes: {
onHide: PropTypes.func,
showModal: PropTypes.bool
},
render() {
const {
showModal,
onHide
} = this.props;
return (
<Modal
onHide={ onHide }
show={ showModal }>
<Modal.Body>
<h4>Welcome to Free Code Camp's board</h4>
<p>We post jobs specifically target to our junior developers.</p>
<Button
block={ true }
className='signup-btn'>
Post a Job
</Button>
</Modal.Body>
</Modal>
);
}
});

View File

@ -2,6 +2,8 @@ import React, { cloneElement, PropTypes } from 'react';
import { contain } from 'thundercats-react'; import { contain } from 'thundercats-react';
import { History } from 'react-router'; import { History } from 'react-router';
import { Button, Jumbotron, Row } from 'react-bootstrap'; import { Button, Jumbotron, Row } from 'react-bootstrap';
import CreateJobModal from './CreateJobModal.jsx';
import ListJobs from './List.jsx'; import ListJobs from './List.jsx';
export default contain( export default contain(
@ -13,12 +15,14 @@ export default contain(
React.createClass({ React.createClass({
displayName: 'Jobs', displayName: 'Jobs',
mixins: [History],
propTypes: { propTypes: {
children: PropTypes.element, children: PropTypes.element,
jobActions: PropTypes.object, jobActions: PropTypes.object,
jobs: PropTypes.array jobs: PropTypes.array,
showModal: PropTypes.bool
}, },
mixins: [History],
handleJobClick(id) { handleJobClick(id) {
const { jobActions } = this.props; const { jobActions } = this.props;
@ -48,7 +52,12 @@ export default contain(
}, },
render() { render() {
const { children, jobs } = this.props; const {
children,
jobs,
showModal,
jobActions
} = this.props;
return ( return (
<div> <div>
@ -62,7 +71,8 @@ export default contain(
</p> </p>
<Button <Button
bsSize='large' bsSize='large'
className='signup-btn'> className='signup-btn'
onClick={ jobActions.openModal }>
Try the first month 20% off! Try the first month 20% off!
</Button> </Button>
</Jumbotron> </Jumbotron>
@ -70,7 +80,10 @@ export default contain(
<Row> <Row>
{ this.renderChild(children, jobs) || { this.renderChild(children, jobs) ||
this.renderList(this.handleJobClick, jobs) } this.renderList(this.handleJobClick, jobs) }
</Row> </Row>
<CreateJobModal
onHide={ jobActions.closeModal }
showModal={ showModal } />
</div> </div>
); );
} }

View File

@ -31,6 +31,12 @@ export default Actions({
getJob: null, getJob: null,
getJobs(params) { getJobs(params) {
return { params }; return { params };
},
openModal() {
return { showModal: true };
},
closeModal() {
return { showModal: false };
} }
}) })
.refs({ displayName: 'JobActions' }) .refs({ displayName: 'JobActions' })

View File

@ -6,12 +6,20 @@ const {
transformer transformer
} = Store; } = Store;
export default Store() export default Store({ showModal: false })
.refs({ displayName: 'JobsStore' }) .refs({ displayName: 'JobsStore' })
.init(({ instance: jobsStore, args: [cat] }) => { .init(({ instance: jobsStore, args: [cat] }) => {
const { setJobs, findJob, setError } = cat.getActions('JobActions'); const {
setJobs,
findJob,
setError,
openModal,
closeModal
} = cat.getActions('JobActions');
const register = createRegistrar(jobsStore); const register = createRegistrar(jobsStore);
register(setter(setJobs)); register(setter(setJobs));
register(transformer(findJob)); register(transformer(findJob));
register(setter(setError)); register(setter(setError));
register(setter(openModal));
register(setter(closeModal));
}); });