import {PlusOutlined} from '@ant-design/icons/lib' import {Button, Form, Select, Space, Tabs} from 'antd' import {FormInstance} from 'antd/lib/form' import {TabPaneProps} from 'antd/lib/tabs' import React, {useCallback, useState} from 'react' import {useTranslation} from 'react-i18next' import {AdminFormFieldFragment} from '../../../graphql/fragment/admin.form.fragment' import {FieldCard} from './field.card' import {adminTypes} from './types' interface Props extends TabPaneProps { form: FormInstance fields: AdminFormFieldFragment[] onChangeFields: (fields: AdminFormFieldFragment[]) => any } export const FieldsTab: React.FC = props => { const { t } = useTranslation() const [nextType, setNextType] = useState('textfield') const renderType = useCallback((field, index, remove) => { return ( ) }, [props.fields]) const addField = useCallback((add, index) => { return ( ) }, [props.fields, nextType]) return ( {(fields, { add, remove, move }) => { const addAndMove = (index) => (defaults) => { add(defaults) move(fields.length, index) } return (
{addField(addAndMove(0), 0)} {fields.map((field, index) => (
{renderType(field, index, remove)} {addField(addAndMove(index + 1), index + 1)}
))}
) }}
) }