import React, { useState, useEffect } from 'react'; import { __ } from '@wordpress/i18n'; import { useNavigate, useParams } from 'react-router-dom'; import { klona } from 'klona'; import { head, isNil } from 'ramda'; import { useForm } from 'react-hook-form'; import "quill/dist/quill.core.css"; // store import { storeSet, useStore } from '../../store'; // api import FormsService from '../../service/forms-service'; // components import { Skeleton } from 'primereact/skeleton'; import { Button } from 'primereact/button'; import FormField from '../../components/FormField'; import set404FromErrorResponse from '../../helpers/set404FromErrorResponse'; // tools import { isCAP, isCodiceFiscale, isEmail, isEmailPEC, isIBAN, isMarcaDaBollo, isPIVA, isUrl, minChecks, maxChecks, nonEmptyTables } from '../../helpers/validators'; import renderHtmlContent from '../../helpers/renderHtmlContent'; const BandoFormsPreview = () => { const { id, formId } = useParams(); const navigate = useNavigate(); const [formData, setFormData] = useState([]); const [formName, setFormName] = useState(''); const isAsyncRequest = useStore().main.isAsyncRequest(); const { control, handleSubmit, formState: { errors }, getValues, register, setValue } = useForm({ defaultValues: {}, mode: 'onChange' }); const values = getValues(); const validationFns = { isPIVA, isCodiceFiscale, isCAP, isIBAN, isEmail, isEmailPEC, isUrl, isMarcaDaBollo, minChecks, maxChecks, nonEmptyTables } const onSubmit = () => { } const closePreview = () => { const parsedId = parseInt(id) const bandoId = !isNaN(parsedId) ? parsedId : 0; const parsedFormId = parseInt(formId) const bandoFormId = !isNaN(parsedFormId) ? parsedFormId : 0; navigate(`/bandi/${bandoId}/forms/${bandoFormId}`); } const getFormCallback = (data) => { if (data.status === 'SUCCESS') { setFormName(data.data.label); const elements = klona(data.data.content); setFormData(elements); } storeSet.main.unsetAsyncRequest(); } const errGetFormCallbacks = (data) => { set404FromErrorResponse(data); storeSet.main.unsetAsyncRequest(); } useEffect(() => { const parsedFormId = parseInt(formId) const bandoFormId = !isNaN(parsedFormId) ? parsedFormId : 0; if (bandoFormId) { storeSet.main.setAsyncRequest(); FormsService.getFormById(bandoFormId, getFormCallback, errGetFormCallbacks); } }, [id, formId]); return (