Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 15267 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
11152 stevensc 1
import axios from 'axios'
15267 stevensc 2
import React, { useEffect } from 'react'
15279 stevensc 3
import { Modal } from 'react-bootstrap'
11152 stevensc 4
import { useForm } from 'react-hook-form'
5
import { CKEditor } from 'ckeditor4-react'
14843 stevensc 6
import { addNotification } from '../../../redux/notification/notification.actions'
7
import { useDispatch } from 'react-redux'
6583 stevensc 8
 
9
const OverviewModal = ({
11152 stevensc 10
	isOpen = false,
11
	closeModal = function () { },
12
	overviewUrl,
13
	action,
14
	overview
6583 stevensc 15
}) => {
16
 
11152 stevensc 17
	const { register, handleSubmit, setValue, watch } = useForm()
14843 stevensc 18
	const dispatch = useDispatch()
6583 stevensc 19
 
11152 stevensc 20
	const onSubmit = ({ description }) => {
21
		const formData = new FormData
22
		formData.append('description', description)
6583 stevensc 23
 
11152 stevensc 24
		axios.post(overviewUrl, formData)
25
			.then(({ data }) => {
26
				if (!data.success) {
14843 stevensc 27
					typeof data.data === 'string'
28
						?
29
						dispatch(addNotification({
30
							style: 'danger',
31
							msg: data.data
32
						}))
33
						: Object.entries(data.data).map(([key, value]) =>
34
							value.map(err =>
35
								dispatch(addNotification({
36
									style: 'danger',
37
									msg: `${key}: ${err}`
38
								}))
39
							)
40
						)
41
					return
11152 stevensc 42
				}
43
				action(data.data.description)
44
				closeModal()
45
			})
15267 stevensc 46
			.catch((err) =>
47
				dispatch(addNotification({
48
					style: 'danger',
49
					msg: err
50
				})))
11152 stevensc 51
	}
6583 stevensc 52
 
15227 stevensc 53
	useEffect(() => register('description'), [])
6583 stevensc 54
 
11152 stevensc 55
	return (
56
		<Modal
57
			size="md"
58
			show={isOpen}
59
			onHide={closeModal}
60
			autoFocus={false}
61
		>
62
			<Modal.Header closeButton>
15227 stevensc 63
				<Modal.Title>Visión general</Modal.Title>
11152 stevensc 64
			</Modal.Header>
65
			<form onSubmit={handleSubmit(onSubmit)}>
66
				<Modal.Body>
67
					<div className="mb-3">
68
						<CKEditor
69
							data={watch('description')}
70
							onChange={(e) => {
71
								const text = e.editor.getData()
72
								setValue('description', text)
73
							}}
74
							onInstanceReady={(e) => e.editor.setData(overview)}
75
							config={{
76
								toolbar: [
77
									{ name: 'editing', items: ['Scayt'] },
78
									{ name: 'links', items: ['Link', 'Unlink'] },
79
									{ name: 'paragraph', items: ['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', 'Blockquote'] },
80
									{ name: 'basicstyles', items: ['Bold', 'Italic', 'Strike', 'RemoveFormat'] },
81
									'/',
82
									{ name: 'insert', items: ['Image', 'Table', 'HorizontalRule', 'SpecialChar'] },
83
									{ name: 'styles', items: ['Styles', 'Format'] },
84
									{ name: 'tools', items: ['Maximize'] }
85
								],
86
								removePlugins: 'elementspath,Anchor',
87
								heigth: 100
88
							}}
89
							name="description"
90
						/>
91
					</div>
92
				</Modal.Body>
93
				<Modal.Footer>
15279 stevensc 94
					<button
95
						className="btn btn-primary"
11152 stevensc 96
						type="submit"
97
					>
11160 stevensc 98
						Enviar
15279 stevensc 99
					</button>
100
					<button
101
						className='btn btn-tertiary'
102
						onClick={closeModal}
103
					>
11160 stevensc 104
						Cancelar
15279 stevensc 105
					</button>
11152 stevensc 106
				</Modal.Footer>
107
			</form>
108
		</Modal >
109
	)
6583 stevensc 110
}
111
 
112
export default OverviewModal