Rev 3182 | AutorÃa | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useState, useEffect } from 'react'import { Button, Modal } from 'react-bootstrap'import { useForm } from 'react-hook-form'import styled from 'styled-components'import { axios } from '../../../../../utils'import FormErrorFeedback from '../../../../../shared/form-error-feedback/FormErrorFeedback'import Spinner from '../../../../../shared/loading-spinner/Spinner'const StyledSpinnerContainer = styled.div`position: absolute;left: 0;top: 0;width: 100%;height: 100%;background: rgba(255, 255, 255, 0.4);display: flex;justify-content: center;align-items: center;z-index: 300;`const Accessibility = (props) => {// props destructuringconst { groupId, privacy, accessibility, accessibilities, addNotification, setSettedAccesibility } = props// react hook formconst {register,errors,handleSubmit,setValue,getValues,setError} = useForm()// statesconst [isModalOpen, setIsModalOpen] = useState(false)const [loading, setLoading] = useState(false)const handleModalOpen = (event) => {event && event.preventDefault()setIsModalOpen(!isModalOpen)}useEffect(() => {axios.get(`/group/my-groups/accessibility/${groupId}`).then((response) => {const resData = response.dataif (resData.success) {if (resData.data) setValue('accessibility', resData.data)}})}, [])const onSubmitHandler = async (data) => {setLoading(true)const formData = new FormData()Object.entries(data).map(([key, value]) => formData.append(key, value))await axios.post(`/group/my-groups/accessibility/${groupId}`, formData).then((response) => {const resData = response.data;(resData)if (resData.success) {setSettedAccesibility(resData.data)handleModalOpen()} else {const resError = resData.dataif (resError.constructor.name === 'Object') {Object.entries(resError).map(([key, value]) => {if (key in getValues()) {setError(key, {type: 'manual',message: Array.isArray(value) ? value[0] : value})}})} else {addNotification({style: 'danger',msg: resError})}}})setLoading(false)}return (<React.Fragment><div className="user-profile-extended-ov"><h3>Accesibilidad<ahref="#"title=""className="btn-accessibility-edit"onClick={handleModalOpen}><i className="fa fa-pencil"></i></a></h3><span id="overview-accessibility">{accessibility}</span></div>{/* modal */}<Modalshow={isModalOpen}onHide={handleModalOpen}style={{ overflowY: 'scroll' }}><Modal.Header closeButton><Modal.Title>Accesibilidad</Modal.Title></Modal.Header><form onSubmit={handleSubmit(onSubmitHandler)}><Modal.Body><selectname="accessibility"ref={register({ required: 'Por favor eliga una accesibilidad' })}><option value="" hidden>Accesibilidad</option>{Object.entries(accessibilities).map(([key, value]) => {if (privacy === 'Privado' && key === 'aj') {return null}return (<option value={key} key={key}>{value}</option>)})}</select>{errors.accessibility && (<FormErrorFeedback>{errors.accessibility.message}</FormErrorFeedback>)}</Modal.Body><Modal.Footer><Button type="submit">Enviar</Button><Button variant="danger" onClick={handleModalOpen}>Cancelar</Button></Modal.Footer></form>{loading && (<StyledSpinnerContainer><Spinner /></StyledSpinnerContainer>)}</Modal></React.Fragment>)}export default Accessibility