UNPKG

instantjob-recruiter-client

Version:

a set of tools for creating an instantjob recruiter react client

85 lines (79 loc) 2.75 kB
import React, {Component} from 'react' import styled from 'styled-components' import UnstyledButton from 'components/utils/button' import {Container, Badge, Description, Title, Statistics} from './styles.react.scss' import auto_bind from 'common/auto_bind' import {human_plural} from 'common/utilities' import moment from 'common/moment' import {color} from 'common/styles' import {get_mission_status_elements} from 'common/missions' export default class MissionStatus extends Component { constructor(props) { super(props) auto_bind(this) } render_statistics() { let {accepted_count, assigned_count, empty_count, status} = this.props let statistics = [] if (assigned_count) { statistics.push(human_plural(assigned_count, "%% poste validé", "%% postes validés")) } if (status != 'assigned') { if (accepted_count) { statistics.push(human_plural(accepted_count, "%% candidat intéressé", "%% candidats intéressés")) } if (status == "pending_selection") { statistics.push(human_plural(empty_count, "%% poste à reproposer", "%% postes à reproposer")) } else { statistics.push(human_plural(empty_count, "%% poste vacant", "%% postes vacants")) } } return statistics.join(', ') } render() { const {status, label, simple, className, will_send_notification_at, cancel_update_notification} = this.props const {icon, name, color} = get_mission_status_elements(status) const notification_sent = will_send_notification_at && moment().isAfter(will_send_notification_at) return ( <Container className={className}> <Badge variant={{[status]: true}}> {icon} </Badge> {simple ? null : ( <Description> <Title> {label} {name} </Title> <Statistics> {this.render_statistics()} </Statistics> </Description> )} {simple || !will_send_notification_at ? null : ( <Updating> Une notification de mise à jour sera envoyée dans 1 minute <Button dark_background discreet done={notification_sent} onClick={cancel_update_notification}> {notification_sent ? "Envoyée" : "Annuler"} </Button> </Updating> )} </Container> ) } } MissionStatus.defaultProps = { label: 'Prestation', } const Updating = styled.div` background-color: ${color('black', 'intense')}; border-radius: 2px; padding: 14px 24px; color: white; margin: 0 20px; box-shadow: 0 0 3px ${color('black', 'intense')}; display: flex; align-items: center; ` const Button = styled(UnstyledButton)` margin: -14px 0 -14px 14px; `