From c04c25334d472b3ed677a8d29e7f7005d8548c27 Mon Sep 17 00:00:00 2001 From: "M. Reza Qorib" <rezaqorib96@gmail.com> Date: Tue, 28 Mar 2017 00:59:06 +0700 Subject: [PATCH] [#140654507] #13 add VacancyList component --- .../__test__/components/VacancyList-test.jsx | 4 +- assets/js/components/Lowongan.jsx | 60 ++++++++----------- assets/js/components/VacancyList.jsx | 25 ++++++++ 3 files changed, 51 insertions(+), 38 deletions(-) create mode 100644 assets/js/components/VacancyList.jsx diff --git a/assets/js/__test__/components/VacancyList-test.jsx b/assets/js/__test__/components/VacancyList-test.jsx index 5484871f..709bcb25 100644 --- a/assets/js/__test__/components/VacancyList-test.jsx +++ b/assets/js/__test__/components/VacancyList-test.jsx @@ -4,7 +4,7 @@ import ReactTestUtils from 'react-addons-test-utils'; import VacancyList from '../../components/VacancyList'; import ModalPendaftaran from '../../components/ModalPendaftaran'; -describe('LoginForm', () => { +describe('VacancyList', () => { it('created without problem', () => { const vacancyList = new VacancyList(); expect(vacancyList).to.be.an.instanceof(VacancyList); @@ -15,7 +15,7 @@ describe('LoginForm', () => { <VacancyList header="header" content="content" buttonTitle="submit" />); expect(vacancyList).to.exist; - React.Children.forEach(this.props.children, (child) => { + React.Children.forEach(vacancyList.props.children, (child) => { expect(child).to.be.an.instanceof(ModalPendaftaran); }); }); diff --git a/assets/js/components/Lowongan.jsx b/assets/js/components/Lowongan.jsx index caab73a1..900df337 100644 --- a/assets/js/components/Lowongan.jsx +++ b/assets/js/components/Lowongan.jsx @@ -1,44 +1,32 @@ import React from 'react'; -import { Button, Image as ImageComponent, Item } from 'semantic-ui-react' +import { Button, Image as ImageComponent, Item } from 'semantic-ui-react'; import ModalPendaftaran from './ModalPendaftaran'; -//const paragraph = <ImageComponent src="http://semantic-ui.com/images/wireframe/short-paragraph.png" />; +// const paragraph = <ImageComponent src="http://semantic-ui.com/images/wireframe/short-paragraph.png" />; -export default class Lowongan extends React.Component{ - static propTypes = { - header: React.PropTypes.oneOfType([ - React.PropTypes.node, - React.PropTypes.string, - ]).isRequired, - content: React.PropTypes.oneOfType([ - React.PropTypes.node, - React.PropTypes.string, - ]).isRequired, - image: React.PropTypes.oneOfType([ - React.PropTypes.node, - React.PropTypes.string, - ]).isRequired, - paragraph: React.PropTypes.string.isRequired +export default class Lowongan extends React.Component { + static propTypes = { + data: React.PropTypes.object.isRequired, }; - render(){ - return( + render() { + return ( - <Item.Group relaxed> - <Item> - {this.props.image} - <Item.Content verticalAlign="middle"> - <Item.Header>{this.props.header}</Item.Header> - <Item.Description>{this.props.content}</Item.Description> - <Item.Extra> - <div className="daftar"> - <ModalPendaftaran content={this.props.paragraph} header="Pendaftaran Lowongan" buttontTitle="Daftar" /> - </div> - </Item.Extra> - </Item.Content> - </Item> - </Item.Group> - ); - } -} \ No newline at end of file + <Item.Group relaxed> + <Item> + {this.props.image} + <Item.Content verticalAlign="middle"> + <Item.Header>{this.props.header}</Item.Header> + <Item.Description>{this.props.content}</Item.Description> + <Item.Extra> + <div className="daftar"> + <ModalPendaftaran content={{ tes: 'dor' }} header="Pendaftaran Lowongan" buttontTitle="Daftar" /> + </div> + </Item.Extra> + </Item.Content> + </Item> + </Item.Group> + ); + } +} diff --git a/assets/js/components/VacancyList.jsx b/assets/js/components/VacancyList.jsx new file mode 100644 index 00000000..6cea70a2 --- /dev/null +++ b/assets/js/components/VacancyList.jsx @@ -0,0 +1,25 @@ +import React from 'react'; +import Lowongan from './Lowongan'; + +export default class VacancyList extends React.Component { + + static propTypes = { + vacancies: React.PropTypes.array + }; + + static defaultProps = { + vacancies: [], + }; + + generateVacancies(){ + return( + this.props.vacancies.map((vacancyData) => + <Lowongan data={vacancyData}/>) + ); + } + + render = () => ( + <div className="vscancyList" >{ this.generateVacancies() } + </div> + ) +} \ No newline at end of file -- GitLab