Rev 2042 | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React from "react";import { useState, useEffect } from "react";import { Button, Modal } from "react-bootstrap";import { useForm } from "react-hook-form";import styled from "styled-components";import {axios, CKEDITOR_OPTIONS} from "../../../../../../utils";import FormErrorFeedback from "../../../../../../shared/form-error-feedback/FormErrorFeedback";import Spinner from "../../../../../../shared/loading-spinner/Spinner";import {CKEditor} from "ckeditor4-react";import parse from "html-react-parser";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 Overview = (props) => {// props destructuringconst { overview, companyId, jobId, addNotification } = props;// react hook formconst {register,errors,handleSubmit,setValue,clearErrors,getValues,setError,} = useForm();// statesconst [isModalOpen, setIsModalOpen] = useState(false);const [loading, setLoading] = useState(false);const [settedOverview, setSettedOverview] = useState(overview);useEffect(() => {register("description", {required: "Este campo es requerido",});setValue("description", settedOverview);}, []);const handleModalOpen = (event) => {event && event.preventDefault();setIsModalOpen(!isModalOpen);};const onSubmitHandler = async (data) => {// profile/my-profiles/extended', [ 'id' => $user_profile_id_encrypted]// https://leaderslinked.com/profile/my-profiles/extended/MzU4NDg3ODcgsetLoading(true);const formData = new FormData();(data);Object.entries(data).map(([key, value]) => {formData.append(key, value);});await axios.post(`/my-company/${companyId}/job/edit/${jobId}/extended`, formData).then((response) => {const resData = response.data;(resData);if (resData.success) {setSettedOverview(resData.data.description);handleModalOpen();} else {const resError = resData.data;if (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 style={{ display: "flex" }}>Visión general<div style={{ marginLeft: "5px" }}><ahref="#"title=""className="btn-extended-edit"onClick={handleModalOpen}><i className="fa fa-pencil"></i></a></div></h3><span id="overview-description">{parse(`${settedOverview}`)}</span></div><Modalshow={isModalOpen}onHide={handleModalOpen}style={{ overflowY: "scroll" }}><Modal.Header closeButton><Modal.Title>Visión general</Modal.Title></Modal.Header><form onSubmit={handleSubmit(onSubmitHandler)}><Modal.Body><CKEditordata={settedOverview}onChange={(e) => {const text = e.editor.getData();setValue("description", text);if (errors.description) {clearErrors("description");}}}config={CKEDITOR_OPTIONS}name="description"/>{errors.description && (<FormErrorFeedback>{errors.description.message}</FormErrorFeedback>)}</Modal.Body><Modal.Footer><Button type="submit">Enviar</Button><Button variant="danger" onClick={handleModalOpen}>Cancel</Button></Modal.Footer></form>{loading && (<StyledSpinnerContainer><Spinner /></StyledSpinnerContainer>)}</Modal></React.Fragment>);};export default Overview;