- styled asteriks sign;

- fixed issue with validation on registration page;
- fixed issue with inputnumber;
- fixed issue with editor field;;
- added editors for new faq item form;
- fixed displaying html as simple text;
- fixed saving company data after saving;
- added toast for edit bando form;
- improved edit forms form;
- fixed styles for various elements;
This commit is contained in:
Vitalii Kiiko
2024-10-04 11:31:47 +02:00
parent af52610b30
commit 7804a67fd2
36 changed files with 520 additions and 637 deletions

View File

@@ -2,7 +2,7 @@ import React, { useState, useEffect, useRef } from 'react';
import { __, sprintf } from '@wordpress/i18n';
import { useParams } from 'react-router-dom';
import { klona } from 'klona';
import { head, range, is, pluck } from 'ramda';
import { head, is, pluck, isEmpty } from 'ramda';
import { useForm } from 'react-hook-form';
import { TZDate } from '@date-fns/tz';
@@ -30,9 +30,9 @@ import set404FromErrorResponse from '../../helpers/set404FromErrorResponse';
import { Skeleton } from 'primereact/skeleton';
import { Button } from 'primereact/button';
import FormField from '../../components/FormField';
import { Steps } from 'primereact/steps';
import { Toast } from 'primereact/toast';
import { Messages } from 'primereact/messages';
import ApplicationSteps from './ApplicationSteps';
const BandoApplication = () => {
const { id } = useParams();
@@ -43,7 +43,6 @@ const BandoApplication = () => {
const [totalSteps, setTotalSteps] = useState(0);
const [completedSteps, setCompletedSteps] = useState(0);
const [activeStep, setActiveStep] = useState(1);
const [stepItems, setStepItems] = useState([{ label: 'Passo' }]);
const isAsyncRequest = useStore().main.isAsyncRequest();
const toast = useRef(null);
const formMsgs = useRef(null);
@@ -54,7 +53,7 @@ const BandoApplication = () => {
setValue,
trigger,
register,
getValues,
getValues
} = useForm({ defaultValues: {}, mode: 'onChange' });
const values = getValues();
const validationFns = {
@@ -67,6 +66,7 @@ const BandoApplication = () => {
isUrl,
isMarcaDaBollo
}
const activeStepIndex = activeStep - 1;
const onSubmit = () => {
const applId = getApplicationId();
@@ -91,7 +91,6 @@ const BandoApplication = () => {
}
const errSubmitApplicationCallback = (data) => {
console.log(data)
storeSet.main.unsetAsyncRequest();
if (data.status === 'VALIDATION_ERROR') {
if (formMsgs.current) {
@@ -120,7 +119,7 @@ const BandoApplication = () => {
}
}
const saveDraft = () => {
const saveDraft = (saveAndMove = '') => {
trigger();
const formValues = getValues();
const usedFieldsIds = pluck('id', formData);
@@ -157,7 +156,7 @@ const BandoApplication = () => {
formMsgs.current.clear();
}
ApplicationService.saveDraft(applId, submitData, saveDraftCallback, errSaveDraftCallback, [
ApplicationService.saveDraft(applId, submitData, (data) => saveDraftCallback(data, saveAndMove), errSaveDraftCallback, [
['formId', formId]
]);
}
@@ -168,7 +167,7 @@ const BandoApplication = () => {
return !isNaN(parsed) ? parsed : 0;
}
const saveDraftCallback = (data) => {
const saveDraftCallback = (data, saveAndMove) => {
if (data.status === 'SUCCESS') {
if (toast.current) {
toast.current.show({
@@ -177,8 +176,16 @@ const BandoApplication = () => {
detail: __('Salvato!', 'gepafin')
});
}
// update info about application completeness
ApplicationService.getApplicationForm(data.data.id, getStatusCheckCallback, errGetStatusCheckCallbacks);
if (!isEmpty(saveAndMove)) {
storeSet.main.setAsyncRequest();
ApplicationService.getApplicationForm(data.data.id, getApplFormCallback, errGetApplFormCallbacks, [
['formId', formId],
['action', saveAndMove]
]);
} else {
// update info about application completeness
ApplicationService.getApplicationForm(data.data.id, getStatusCheckCallback, errGetStatusCheckCallbacks);
}
}
storeSet.main.unsetAsyncRequest();
}
@@ -213,31 +220,37 @@ const BandoApplication = () => {
}
const goBackward = () => {
if (formId) {
saveDraft('PREVIOUS');
/*if (formId) {
const applId = getApplicationId();
storeSet.main.setAsyncRequest();
ApplicationService.getApplicationForm(applId, getApplFormCallback, errGetApplFormCallbacks, [
['formId', formId],
['action', 'PREVIOUS']
]);
}
}*/
}
const goForward = () => {
if (formId) {
saveDraft('NEXT');
/*if (formId) {
const applId = getApplicationId();
storeSet.main.setAsyncRequest();
ApplicationService.getApplicationForm(applId, getApplFormCallback, errGetApplFormCallbacks, [
['formId', formId],
['action', 'NEXT']
]);
}
}*/
}
const getApplFormCallback = (data) => {
if (data.status === 'SUCCESS') {
setBandoTitle(data.data.callTitle);
setFormData(data.data.applicationFormResponse.content);
setFormId(data.data.formId);
setTotalSteps(data.data.totalFormSteps);
setCompletedSteps(data.data.completedSteps);
setActiveStep(data.data.currentStep);
if (data.data.applicationFormResponse.formFields) {
const submitData = data.data.applicationFormResponse.formFields.map((o) => ({
@@ -246,11 +259,6 @@ const BandoApplication = () => {
}));
setFormInitialData(submitData)
}
setFormId(data.data.formId);
setTotalSteps(data.data.totalFormSteps);
setCompletedSteps(data.data.completedSteps);
setActiveStep(data.data.currentStep);
}
storeSet.main.unsetAsyncRequest();
}
@@ -285,11 +293,6 @@ const BandoApplication = () => {
newFormData.map(o => setValue(o.fieldId, o.fieldValue));
}, [formInitialData]);
useEffect(() => {
const rangeArr = range(1, totalSteps + 1);
setStepItems(rangeArr.map(() => ({ label: 'Passo' })));
}, [totalSteps])
useEffect(() => {
const applId = getApplicationId();
@@ -312,8 +315,7 @@ const BandoApplication = () => {
<div className="appPage__spacer"></div>
{!isAsyncRequest
? <Steps model={stepItems} activeIndex={activeStep - 1}/> : null}
<ApplicationSteps totalSteps={totalSteps} activeStepIndex={activeStepIndex}/>
<div className="appPage__spacer"></div>
@@ -327,12 +329,13 @@ const BandoApplication = () => {
const text = head(o.settings.filter(o => o.name === 'text'));
const placeholder = head(o.settings.filter(o => o.name === 'placeholder'));
const options = head(o.settings.filter(o => o.name === 'options'));
const tableColumns = head(o.settings.filter(o => o.name === 'table_columns'));
const step = head(o.settings.filter(o => o.name === 'step'));
const mime = head(o.settings.filter(o => o.name === 'mime'));
let mimeValue = '';
if (mime) {
mimeValue = mime.value.map(o => o.code).join(',');
mimeValue = mime.value.map(o => o.code);
}
const validations = Object.keys(o.validators).reduce((acc, cur) => {
@@ -367,13 +370,14 @@ const BandoApplication = () => {
register={register}
errors={errors}
defaultValue={values[o.id]}
maxFractionDigits={step}
maxFractionDigits={step ? step.value : 0}
accept={mimeValue}
config={validations}
options={options ? options.value : []}
setDataFn={setValue}
sourceId={getApplicationId()}
useGrouping={false}
tableColumns={tableColumns ? tableColumns.value : {}}
/>
})}