Rev 7037 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import { CKEditor } from 'ckeditor4-react'import React, { useEffect, useState } from 'react'import { Button, Form, Modal } from 'react-bootstrap'import { useDispatch, useSelector } from 'react-redux'import { CKEDITOR_OPTIONS, axios } from '../../utils'import { useForm } from 'react-hook-form'import FormErrorFeedback from '../UI/FormErrorFeedback'import { addNotification } from '../../redux/notification/notification.actions'const KnowledgeEditModal = ({show,categories = [],url,onComplete,onClose,}) => {const [loading, setLoading] = useState(false)const labels = useSelector(({ intl }) => intl.labels)const dispatch = useDispatch()const { handleSubmit, register, setValue, errors, getValues, watch } =useForm()const onSubmit = handleSubmit((data) => {setLoading(true)const formData = new FormData()axios.post(url, formData).then((response) => {const { data, success } = response.dataif (!success) {if (typeof data === 'string') {dispatch(addNotification({ style: 'danger', msg: data }))return}Object.entries(data).map(([key, value]) => {key in getValues() &&dispatch(addNotification({style: 'danger',msg: `${key}: ${Array.isArray(value) ? value[0] : value}`,}))})return}onComplete()onClose()}).finally(() => setLoading(false))})useEffect(() => {register('category_id')register('description', { required: true })register('title', { required: true })}, [])useEffect(() => {axios.get(url).then((response) => {const { data, success } = responseif (!success) {const errorMessage =typeof data === 'string' ? data : 'Ha ocurrido un error'addNotification({style: 'danger',msg: errorMessage,})}setValue('category_id', data.category_id)setValue('description', data.description)setValue('title', data.title)})}, [show])return (<Modal show={show}><Modal.Header><Modal.Title>Editar conocimiento</Modal.Title></Modal.Header><Modal.Body><Form onSubmit={onSubmit}><Form.Group><Form.Label>{labels.category}</Form.Label><Form.Control as="select">{categories.map(({ name, uuid }) => (<option key={uuid}>{name}</option>))}</Form.Control>{errors.description && (<FormErrorFeedback>{labels.error_field_empty}</FormErrorFeedback>)}</Form.Group><Form.Group><Form.Label>{labels.title}</Form.Label><Form.Control type="text" />{errors.description && (<FormErrorFeedback>{labels.error_field_empty}</FormErrorFeedback>)}</Form.Group><CKEditoronChange={(e) => setValue('description', e.editor.getData())}onInstanceReady={(e) => e.editor.setData(watch('description'))}config={CKEDITOR_OPTIONS}/>{errors.description && (<FormErrorFeedback>{labels.error_field_empty}</FormErrorFeedback>)}<Button variant="primary" type="submit">{labels.accept}</Button><Button className="btn-secondary" onClick={onClose}>{labels.accept}</Button></Form></Modal.Body></Modal>)}export default KnowledgeEditModal