diff --git a/source/components/conversation/Question.js b/source/components/conversation/Question.js index b55fd4c52..207e9b0d4 100644 --- a/source/components/conversation/Question.js +++ b/source/components/conversation/Question.js @@ -4,7 +4,7 @@ import { answer, answered } from './userAnswerButtonStyle' import HoverDecorator from '../HoverDecorator' import Explicable from './Explicable' import { pipe, split, reverse, reduce, is } from 'ramda' - +import SendButton from './SendButton' /* Ceci est une saisie de type "radio" : l'utilisateur choisit une réponse dans une liste, ou une liste de listes. Les données @choices sont un arbre de type: - nom: motif CDD # La racine, unique, qui formera la Question. Ses enfants sont les choix possibles @@ -21,26 +21,33 @@ import { pipe, split, reverse, reduce, is } from 'ramda' */ -let dottedNameToObject = pipe( - split(' . '), - reverse, - reduce((memo, next) => ({ [next]: memo }), 'oui') -) - // FormDecorator permet de factoriser du code partagé par les différents types de saisie, // dont Question est un example @FormDecorator('question') export default class Question extends Component { render() { - let { stepProps: { choices } } = this.props + let { + stepProps: { choices }, + themeColours, + stepProps: { submit } + } = this.props + let choiceElements = is(Array)(choices) + ? this.renderBinaryQuestion() + : this.renderChildren(choices) - if (is(Array)(choices)) return this.renderBinaryQuestion() - else return this.renderChildren(choices) + return ( + <> + {choiceElements} + + + ) } renderBinaryQuestion() { let { input, // vient de redux-form - stepProps: { submit, choices }, + stepProps: { submit, choices, setFormValue }, themeColours } = this.props @@ -49,7 +56,7 @@ export default class Question extends Component { {choices.map(({ value, label }) => ( ))} @@ -62,7 +69,7 @@ export default class Question extends Component { themeColours } = this.props, { name } = input, - { submit } = stepProps, + { submit, setFormValue } = stepProps, // seront stockées ainsi dans le state : // [parent object path]: dotted name relative to parent relativeDottedName = radioDottedName => @@ -79,7 +86,8 @@ export default class Question extends Component { input, submit, themeColours, - dottedName: null + dottedName: null, + setFormValue }} /> @@ -101,7 +109,8 @@ export default class Question extends Component { dottedName, input, submit, - themeColours + themeColours, + setFormValue }} /> @@ -121,7 +130,7 @@ let RadioLabel = props => ( @HoverDecorator class RadioLabelContent extends Component { render() { - let { value, label, input, submit, hover, themeColours } = this.props, + let { value, label, input, hover, themeColours, setFormValue } = this.props, // value = when(is(Object), prop('value'))(choice), labelStyle = Object.assign( value === input.value || hover @@ -136,7 +145,7 @@ class RadioLabelContent extends Component { setFormValue(value)} value={value} checked={value === input.value ? 'checked' : ''} />