- saving progress;

This commit is contained in:
Vitalii Kiiko
2024-12-09 17:30:51 +01:00
parent a64da29962
commit 33d5cd8f2f
3 changed files with 45 additions and 12 deletions

View File

@@ -11,7 +11,9 @@
} }
.fieldsRepeater__heading { .fieldsRepeater__heading {
align-items: center;
display: flex;
justify-content: space-between;
} }
.fieldsRepeater__fields { .fieldsRepeater__fields {

View File

@@ -1,18 +1,19 @@
import React, { useMemo, useState, useEffect } from 'react'; import React, { useMemo, useState, useEffect } from 'react';
import { klona } from 'klona'; import { klona } from 'klona';
import { useForm } from 'react-hook-form'; import { useForm } from 'react-hook-form';
import { isEmpty } from 'ramda';
import { __ } from '@wordpress/i18n';
// tools // tools
import uniqid from '../../../../helpers/uniqid'; import uniqid from '../../../../helpers/uniqid';
// components // components
import FormField from '../../../../components/FormField'; import FormField from '../../../../components/FormField';
import { __ } from '@wordpress/i18n';
import { Button } from 'primereact/button'; import { Button } from 'primereact/button';
const RepeaterFields = ({ sourceId, sourceName }) => { const RepeaterFields = ({ sourceId, sourceName }) => {
const [items, setItems] = useState([]); const [items, setItems] = useState([]);
const [chosen, setChosen] = useState({}); const [chosen, setChosen] = useState('');
const [formInitialData, setFormInitialData] = useState({}); const [formInitialData, setFormInitialData] = useState({});
const { const {
control, control,
@@ -29,6 +30,7 @@ const RepeaterFields = ({ sourceId, sourceName }) => {
}, [formInitialData]), mode: 'onChange' }, [formInitialData]), mode: 'onChange'
}); });
const watchName = watch('name'); const watchName = watch('name');
const watchFile = watch('file');
const onSubmit = () => { const onSubmit = () => {
}; };
@@ -40,6 +42,9 @@ const RepeaterFields = ({ sourceId, sourceName }) => {
} }
const addNew = () => { const addNew = () => {
setValue('name', '');
setValue('file', {});
trigger();
const uid = uniqid('f'); const uid = uniqid('f');
const newItem = { const newItem = {
fieldId: uid, fieldId: uid,
@@ -47,23 +52,49 @@ const RepeaterFields = ({ sourceId, sourceName }) => {
file: {}, file: {},
} }
setItems([...items, newItem]); setItems([...items, newItem]);
setChosen(newItem); setChosen(uid);
trigger();
} }
useEffect(() => { useEffect(() => {
trigger(); const updatedItems = items.map((o) => {
}, [chosen]); return o.fieldId === chosen ? {
...o,
name: watchName
} : o;
})
setItems([...updatedItems]);
}, [watchName]);
console.log('items', items); useEffect(() => {
const updatedItems = items.map((o) => {
return o.fieldId === chosen ? {
...o,
file: watchFile
} : o;
})
setItems([...updatedItems]);
}, [watchFile]);
useEffect(() => {
console.log('items', items);
}, [items]);
//console.log('items', items, chosen);
return ( return (
<div className="fieldsRepeater"> <div className="fieldsRepeater">
<form className="appForm" onSubmit={handleSubmit(onSubmit)}> <form className="appForm" onSubmit={handleSubmit(onSubmit)}>
{items {items
? items.map(o => <div key={o.fieldId} className="fieldsRepeater__panel p-panel p-component"> ? items.map(o => <div key={o.fieldId} className="fieldsRepeater__panel p-panel p-component">
<div className="fieldsRepeater__heading p-panel p-panel-header"> <div className="fieldsRepeater__heading p-panel p-panel-header">
<span>{chosen.fieldId === o.fieldId ? watchName : o.name}</span> <span>{o.name}</span>
<Button icon="pi pi-times" severity="danger"
className="actionBtn"
type="button"
aria-label={__('Cancella', 'gepafin')}
onClick={() => console.log(o)}/>
</div> </div>
{chosen.fieldId === o.fieldId {chosen === o.fieldId
? <div className="fieldsRepeater__fields p-panel-content"> ? <div className="fieldsRepeater__fields p-panel-content">
<FormField <FormField
type="textinput" type="textinput"
@@ -96,7 +127,7 @@ const RepeaterFields = ({ sourceId, sourceName }) => {
<Button <Button
className="fieldsRepeater__addNew" className="fieldsRepeater__addNew"
type="button" type="button"
disabled={false} /*disabled={!isEmpty(chosen.fileId) && (isEmpty(chosen.name) || isEmpty(chosen.file))}*/
onClick={addNew} onClick={addNew}
label={__('Aggiungi nuovo', 'gepafin')} label={__('Aggiungi nuovo', 'gepafin')}
/> />

View File

@@ -535,10 +535,10 @@ const DomandaEditPreInstructor = () => {
</div> </div>
</div> </div>
{/*<div className="appPageSection"> <div className="appPageSection">
<h2>{__('Documenti aggiuntivi', 'gepafin')}</h2> <h2>{__('Documenti aggiuntivi', 'gepafin')}</h2>
<RepeaterFields sourceId={id} sourceName="evaluation"/> <RepeaterFields sourceId={id} sourceName="evaluation"/>
</div>*/} </div>
<div className="appPageSection"> <div className="appPageSection">
<h2>{__('Checklist Valutazione', 'gepafin')}</h2> <h2>{__('Checklist Valutazione', 'gepafin')}</h2>