import React, { useEffect, useState, useCallback } from 'react'; import { classNames } from 'primereact/utils'; import { __ } from '@wordpress/i18n'; import { head, isEmpty } from 'ramda'; import { diff } from 'deep-object-diff'; // components import { Button } from 'primereact/button'; import { Dropdown } from 'primereact/dropdown'; import { Accordion, AccordionTab } from 'primereact/accordion'; import { Dialog } from 'primereact/dialog'; import { InputSwitch } from 'primereact/inputswitch'; import renderHtmlContent from '../../helpers/renderHtmlContent'; import { Editor } from 'primereact/editor'; import DOMPurify from 'dompurify'; const FormFieldRepeaterFaq = ({ data, setDataFn, fieldName, options = [], errors, register, label, config = {}, disabled = false }) => { const [stateFieldData, setStateFieldData] = useState([]); const [stateOptionsData, setStateOptionsData] = useState([]); const [question, setQuestion] = useState(''); const [answer, setAnswer] = useState(''); const [title, setTitle] = useState(''); const [isVisible, setIsVisible] = useState(false); const [editDataIndex, setEditDataIndex] = useState(null); const [isVisibleEditDialog, setIsVisibleEditDialog] = useState(false); const removeItem = (index) => { const newData = stateFieldData.toSpliced(index, 1); setStateFieldData(newData); } const selectItem = (e) => { const targetedOption = head(stateOptionsData.filter(o => o.value === e.value)); if (targetedOption) { setStateFieldData([...stateFieldData, { ...targetedOption, isVisible: true }]); } } const addNewItem = () => { const newItem = { id: null, lookUpDataId: null, title: '', value: '', response: '', isVisible: true }; setStateFieldData([...stateFieldData, newItem]); } const editItem = (e, index) => { e.stopPropagation(); setTitle(stateFieldData[index].title); setQuestion(stateFieldData[index].value); setAnswer(stateFieldData[index].response); setIsVisible(stateFieldData[index].isVisible); setEditDataIndex(index); setIsVisibleEditDialog(true); } const hideEditDialog = () => { setIsVisibleEditDialog(false); setQuestion(''); setAnswer(''); setTitle(''); setIsVisible(false); setEditDataIndex(null); } const onChangeEditItem = (value, key) => { if (key === 'title') { setTitle(value); } else if (key === 'value') { setQuestion(value); } else if (key === 'response') { setAnswer(value) } else { setIsVisible(value); } } const saveEditDialog = () => { const newData = stateFieldData.map((o, i) => { if (i === editDataIndex) { o.title = title; o.value = question; o.response = answer; o.isVisible = isVisible; return o } else { return o; } }); setStateFieldData(newData); setIsVisibleEditDialog(false); setQuestion(''); setAnswer(''); setTitle(''); setIsVisible(false); setEditDataIndex(null); } const headerEditDialog = () => { return {__('Aggiungi/modifica FAQ', 'gepafin')} } const footerEditDialog = () => { return