UNPKG

instantjob-recruiter-client

Version:

a set of tools for creating an instantjob recruiter react client

88 lines (79 loc) 2.59 kB
import React, {Component} from 'react' import {connect} from 'react-redux' import {Container, ButtonContainer} from './styles.react.scss' import CheckBox from 'components/utils/check_box' import Button from 'components/utils/button' import auto_bind from 'common/auto_bind' import {property_toggler, scope} from 'common/utilities' import {deal_has_custom_fields} from 'common/missions' import {get_deals} from 'selectors/missions' import {get_missions_fields, get_deals_fields} from 'selectors/fields' class CustomizeDealFields extends Component { constructor(props) { super(props) const {has_custom_workplace, has_custom_events, custom_field_ids} = props.deal this.state = { has_custom_events, has_custom_workplace, custom_field_ids, } auto_bind(this) } toggle_custom_workplace() { this.setState(property_toggler('has_custom_workplace')) } toggle_custom_events() { this.setState(property_toggler('has_custom_events')) } toggle_custom_field(field_id) { this.setState(scope('custom_field_ids')(property_toggler(field_id))) } update() { this.props.update({...this.props.deal, ...this.state}) } render_field({id, name, category, for_entity}) { let locked, selected = this.state.custom_field_ids[id] if (category == 'computed' || category == 'template') { locked = true switch (for_entity) { case 'Deal': selected = false break case 'Mission': selected = true break } } return ( <CheckBox key={id} toggle={() => this.toggle_custom_field(id)} selected={selected} locked={locked}> {name} </CheckBox> ) } render() { const {fields} = this.props const {has_custom_workplace, has_custom_events, custom_field_ids} = this.state return ( <Container> <CheckBox toggle={this.toggle_custom_workplace} selected={has_custom_workplace}> Lieu de travail </CheckBox> <CheckBox toggle={this.toggle_custom_events} selected={has_custom_events}> Dates et horaires </CheckBox> {fields.map(this.render_field)} <ButtonContainer> <Button disabled={!deal_has_custom_fields(this.state)} onClick={this.update}> Valider </Button> </ButtonContainer> </Container> ) } } export default connect( (state, {deal_id}) => ({ deal: get_deals(state)[deal_id] || {custom_field_ids: {}}, fields: [...get_missions_fields(state), ...get_deals_fields(state)], }) )(CustomizeDealFields)