import { DeleteOutlined } from '@ant-design/icons' import { Alert, Button, Checkbox, Form, Mentions, Popconfirm, Select } from 'antd' import { FormInstance } from 'antd/lib/form' import FormItemContext from 'rc-field-form/lib/FieldContext' import { FieldData } from 'rc-field-form/lib/interface' import React from 'react' import { useTranslation } from 'react-i18next' import { FormFieldFragment } from '../../../graphql/fragment/form.fragment' import { useMath } from '../../use.math' interface Props { form: FormInstance fields: FormFieldFragment[] field: FieldData remove: (index: number) => void index: number } export const LogicBlock: React.FC = (props) => { const { t } = useTranslation() const { form, field, fields, remove, index } = props const evaluator = useMath() return (
{fields.map((field) => ( {field.title} ))} {(form) => { const context = React.useContext(FormItemContext) try { const defaults = {} fields.forEach((field) => { defaults[`@${field.id}`] = field.value if (field.slug) { defaults[`$${field.slug}`] = field.value } }) const result = evaluator( form.getFieldValue([...context.prefixName, field.name as string, 'formula']), defaults ) return ( ) } catch (e) { return ( ) } }} !/NEW/i.test(field.id)) .map((field) => ({ value: field.id, label: field.title, }))} /> ) }} {(form) => { const context = React.useContext(FormItemContext) return ( ) }} {(form) => { const context = React.useContext(FormItemContext) return ( ) }} {(form) => { const context = React.useContext(FormItemContext) return ( ) }}
{ remove(index) }} >
) }