Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 12999 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

import React, { useEffect } 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 { handleSubmit, register, setValue, watch } = useForm()

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

        const submit = (data) => {
                if (questionType === 'add') {
                        onSubmit({
                                ...question,
                                text: data.text,
                                type: data.type,
                                maxlength: data.maxlength,
                                multiline: data.multiline
                        })
                        closeModal()
                        return
                }
                if (questionType === 'edit') {
                        onSubmit({
                                ...question,
                                text: data.text,
                                type: data.type,
                                maxlength: data.maxlength,
                                multiline: data.multiline
                        })
                        closeModal()
                }
        }

        return (
                <Modal size="md" onHide={closeModal} show={show}>
                        <Modal.Header closeButton>
                                <Modal.Title>{`${questionType === 'add' ? 'Agregar' : 'Editar'} sección`}</Modal.Title>
                        </Modal.Header>
                        <form onSubmit={handleSubmit(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' ref={register} defaultValue={question.type}>
                                                        <option value='open'>Abierto</option>
                                                        <option value='simple'>Simple</option>
                                                        <option value='multiple'>Multiple</option>
                                                </select>
                                        </div>
                                        {
                                                watch('type') !== 'open'
                                                &&
                                                <>
                                                        <div className='form-group'>
                                                                <label className="form-label">Longitud máxima</label>
                                                                <input type="number" name='maxLength' className='form-control' defaultValue={question.maxlength} />
                                                        </div>
                                                        <div className='form-group'>
                                                                <label className="form-label">Mútiples lineas</label>
                                                                <select name='type' className='form-control' ref={register} 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