Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 13006 | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

import React, { useEffect, useState } from 'react'
import { Button, Modal } from 'react-bootstrap'
import { useForm } from 'react-hook-form'
import DescriptionInput from '../../../shared/DescriptionInput'

const QuestionModal = ({ show, closeModal, question, onSubmit, questionType }) => {

        const { register, setValue, watch } = useForm()
        const [values, setValues] = useState({
                type: 'open',
                maxlength: '0',
                multiline: '0'
        })

        const handleChange = ({ target }) => {
                setValues({ ...values, [target.name]: target.value })
        }

        useEffect(() => {
                register('text')
                setValue('text', question.text)
        }, [question])

        const submit = (e) => {
                e.preventDefault()

                if (questionType === 'add') {
                        onSubmit({
                                ...question,
                                text: watch('text'),
                                type: values.type,
                                maxlength: values.maxlength,
                                multiline: values.multiline,
                                answer: values.type === 'multiple' ? [] : ''
                        })
                        closeModal()
                        return
                }
                if (questionType === 'edit') {
                        onSubmit({
                                ...question,
                                text: watch('text'),
                                type: values.type,
                                maxlength: values.maxlength,
                                multiline: values.multiline,
                                answer: values.type === 'multiple' ? [] : ''
                        })
                        closeModal()
                }
        }

        return (
                <Modal size="md" onHide={closeModal} show={show}>
                        <Modal.Header closeButton>
                                <Modal.Title>{`${questionType === 'add' ? 'Agregar' : 'Editar'} pregunta`}</Modal.Title>
                        </Modal.Header>
                        <form onSubmit={submit}>
                                <Modal.Body>
                                        <div className='form-group'>
                                                <label className="form-label">Texto</label>
                                                <DescriptionInput
                                                        defaultValue={question.text}
                                                        name='text'
                                                        onChange={setValue}
                                                />
                                        </div>
                                        <div className='form-group'>
                                                <label className="form-label">Tipo</label>
                                                <select name='type' className='form-control' onChange={handleChange} defaultValue={question.type}>
                                                        <option value='open'>Abierto</option>
                                                        <option value='simple'>Simple</option>
                                                        <option value='multiple'>Multiple</option>
                                                </select>
                                        </div>
                                        {
                                                values.type === 'open'
                                                &&
                                                <>
                                                        <div className='form-group'>
                                                                <label className="form-label">Longitud máxima</label>
                                                                <input type="number" name='maxLength' className='form-control' onChange={handleChange} defaultValue={question.maxlength} />
                                                        </div>
                                                        <div className='form-group'>
                                                                <label className="form-label">Mútiples lineas</label>
                                                                <select name='multiline' className='form-control' onChange={handleChange} defaultValue={question.multiline}>
                                                                        <option value='open'>Si</option>
                                                                        <option value='simple'>No</option>
                                                                </select>
                                                        </div>
                                                </>
                                        }
                                </Modal.Body>
                                <Modal.Footer>
                                        <Button variant="primary" type='submit'>
                                                Enviar
                                        </Button>
                                        <Button variant="danger" onClick={closeModal}>
                                                Cancelar
                                        </Button>
                                </Modal.Footer>
                        </form>
                </Modal >
        )
}

export default QuestionModal