import classNames from 'classnames' import InputSuggestions from 'Components/conversation/InputSuggestions' import { findRuleByDottedName } from 'Engine/rules' import { propEq } from 'ramda' import React, { Component } from 'react' import { Trans, translate } from 'react-i18next' import { connect } from 'react-redux' import { Link } from 'react-router-dom' import { change, Field, formValueSelector, reduxForm } from 'redux-form' import BlueButton from './BlueButton' import CurrencyInput from './CurrencyInput/CurrencyInput' import ProgressCircle from './ProgressCircle/ProgressCircle' import { RuleValue } from './rule/RuleValueVignette' import './TargetSelection.css' import withLanguage from './withLanguage' let salaries = [ 'contrat salarié . salaire . total', 'contrat salarié . salaire . brut de base', 'contrat salarié . salaire . net à payer' ] let displayedTargetNames = [...salaries, 'contrat salarié . aides employeur'] export let popularTargetNames = [ ...displayedTargetNames, 'contrat salarié . salaire . net imposable' ] @translate() @reduxForm({ form: 'conversation', destroyOnUnmount: false }) @connect( state => ({ getTargetValue: dottedName => formValueSelector('conversation')(state, dottedName), targets: state.analysis ? state.analysis.targets : [], flatRules: state.flatRules, conversationStarted: state.conversationStarted, activeInput: state.activeTargetInput }), dispatch => ({ setFormValue: (field, name) => dispatch(change('conversation', field, name)), startConversation: () => dispatch({ type: 'START_CONVERSATION' }), setActiveInput: name => dispatch({ type: 'SET_ACTIVE_TARGET_INPUT', name }) }) ) export default class TargetSelection extends Component { render() { let { targets, conversationStarted, colours, activeInput } = this.props this.firstEstimationComplete = activeInput && targets.length > 0 return (
{this.renderOutputList()}
{!this.firstEstimationComplete && (

Entrez un salaire mensuel

)} {this.firstEstimationComplete && !conversationStarted && (

Estimation approximative
pour une situation par défaut (CDI non cadre).

Commencer la simulation
)}
) } renderOutputList() { let displayedTargets = displayedTargetNames.map(target => findRuleByDottedName(this.props.flatRules, target) ), { conversationStarted, activeInput, setActiveInput, targets } = this.props return (
) } } let Header = ({ target, conversationStarted, isActiveInput }) => { return ( {conversationStarted && ( )} {target.title || target.name} {!conversationStarted &&

{target['résumé']}

}
) } let CurrencyField = props => { return ( ) } let TargetInputOrValue = withLanguage( ({ target, targets, activeInput, setActiveInput, language }) => ( {activeInput === target.dottedName ? ( ) : ( )} ) ) @connect( () => ({}), dispatch => ({ setFormValue: (field, name) => dispatch(change('conversation', field, name)) }) ) class TargetValue extends Component { render() { let { targets, target, setFormValue, activeInput, setActiveInput } = this.props, targetWithValue = targets.find(propEq('dottedName', target.dottedName)), value = targetWithValue && targetWithValue.nodeValue return ( { if (!target.question) return if (value != null) { setFormValue(target.dottedName, Math.floor(value) + '') setFormValue(activeInput, '') } setActiveInput(target.dottedName) }}> ) } }