add create job
modal
This commit is contained in:
33
common/app/routes/Jobs/components/CreateJobModal.jsx
Normal file
33
common/app/routes/Jobs/components/CreateJobModal.jsx
Normal 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>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
@ -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>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -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' })
|
||||||
|
@ -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));
|
||||||
});
|
});
|
||||||
|
Reference in New Issue
Block a user