UNPKG

instantjob-recruiter-client

Version:

a set of tools for creating an instantjob recruiter react client

84 lines (79 loc) 2.44 kB
import React, {Component} from 'react' import classNames from 'classnames/bind' import {MdEvent, MdPlace} from 'react-icons/lib/md' import LineBrokenText from '../components/line_broken_text' import {make_periods} from '../common/calendar' import {mission_period} from '../common/missions' import {human_join, property_getter} from '../common/utilities' const cx = classNames.bind(require('../styles/user_mission.scss')) export default ({id, events, workplace, fields}) => ( <div> <div className={cx('user-mission__events')}> <div className={cx('user-mission__events-icon')}> <MdEvent /> </div> <div className={cx('user-mission__events-periods')}> {make_periods(events).map((period) => ( <div key={period.events[0].id} className={cx('user-mission__events-periods-period')}> {mission_period(period)} </div> ))} </div> </div> {workplace ? ( <div className={cx('user-mission__place')}> <div className={cx('user-mission__place-icon')}> <MdPlace /> </div> <div className={cx('user-mission__place-label')}> <div className={cx('user-mission__place-label-name')}> {workplace.name} </div> <div className={cx('user-mission__place-label-address', {'user-mission__place-label-address-empty' : !workplace.name && !workplace.address})}> {workplace.address || 'Non renseigné'} </div> </div> </div> ) : null} {fields.map((field) => <Field key={field.id} {...field} />)} </div> ) const Field = ({name, ...field}) => ( <div className={cx('user-mission__field')}> <span className={cx('user-mission__field-name')}> {`${name} : `} </span> <FieldContent {...field} /> </div> ) const FieldContent = ({category, comment, selected_values, selected_value, empty}) => { if (empty) { return ( <span className={cx('user-mission__field-empty')}> Vide </span> ) } switch (category) { case 'comment': return ( <LineBrokenText> {comment} </LineBrokenText> ) case 'non_exclusive': return ( <span> {human_join(selected_values.map(property_getter('name')))} </span> ) case 'exclusive': return ( <span> {selected_value.name} </span> ) default: return null } }