Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 457 | Rev 459 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
456 geraldo 1
import React, { useState, useEffect } from "react";
306 geraldo 2
 
3
const Option = (props) => {
315 geraldo 4
 
306 geraldo 5
    // get props
456 geraldo 6
    const { question } = props;
306 geraldo 7
 
456 geraldo 8
    // init States
9
    const [input, setInput] = useState(question.answer);
10
 
11
    /**
12
     * Update question answer
13
     * @param {*} answer
14
     */
15
    const handleAnswerSimple = (value) => {
16
        setInput(value);
17
        question.answer = value;
18
    }
19
 
20
    /**
21
     * Update question answer
22
     * @param {*} answer
23
     */
24
    const handleAnswerMultiple = (value) => {
25
 
26
        question.answer.includes(value) ?
27
            question.answer = removeOptionMultiple(question.answer, value) :
457 geraldo 28
            question.answer.push(value);
29
 
30
            console.log(question.answer);
458 geraldo 31
 
456 geraldo 32
        setInput(question.answer);
458 geraldo 33
        console.log(input);
456 geraldo 34
    }
35
 
36
    /**
37
     * componentDidMount
38
     */
39
    useEffect(() => {
40
        setInput(question.answer);
41
    }, [question]);
42
 
43
    /**
44
     * Delete existing option
45
     * @param {*} arr
46
     * @param {*} item
47
     * @returns
48
     */
49
    const removeOptionMultiple = (arr, item) => arr.splice(arr.indexOf(item), 1);
50
 
306 geraldo 51
    return (
52
        <div>
319 geraldo 53
            {question.options.map((opt, key) => {
54
                return (
320 geraldo 55
                    <div className="checkbox"
56
                        key={key}>
321 geraldo 57
 
58
                        {question.type == 'multiple' &&
59
 
60
                            <input
61
                                type="checkbox"
62
                                name={`${opt.slug_option}[]`}
456 geraldo 63
                                value={input}
64
                                checked={input.includes(opt.slug_option)}
65
                                onChange={() => handleAnswerMultiple(opt.slug_option)}
344 geraldo 66
                            />
321 geraldo 67
                        }
68
                        {question.type != 'multiple' &&
69
                            <input
70
                                type="radio"
328 geraldo 71
                                name={`${opt.slug_question}`}
342 geraldo 72
                                value={opt.slug_option}
456 geraldo 73
                                checked={input == opt.slug_option}
74
                                onChange={() => handleAnswerSimple(opt.slug_option)}
342 geraldo 75
                            />
321 geraldo 76
                        }
319 geraldo 77
                        <div
78
                            dangerouslySetInnerHTML={{ __html: opt.text }}
79
                            className="option"
80
                        />
81
                    </div>
82
                )
83
            })}
306 geraldo 84
        </div>
85
 
86
    )
87
}
88
 
89
export default Option;