import React, { useState, useEffect } from 'react'; import { PlusOutlined } from '@ant-design/icons'; import { Form, Button, Divider } from 'antd'; import { v4 } from 'uuid'; import { FormilyType, FormilyTypeSource, FormilyData } from './interface'; import { allItems } from './constant'; import { FormilyContext } from './context'; import Item, { FormilyItemProps } from './item'; import Render from './render'; import styles from './index.less'; interface FormilyProps extends Pick { items?: FormilyType[] | 'all'; list?: FormilyData[]; } interface FormilyTypeFC extends React.FC { Render: typeof Render; } const { List } = Form; const Formily: FormilyTypeFC = ({ list = [], items, nameFormItem, optionsFormItem, }) => { const [formilyTypeSource, setFormilyTypeSource] = useState( {}, ); const optionKeys: FormilyType[] = items === 'all' ? allItems : items || []; useEffect(() => { const map = {}; list.forEach((item, index) => { map[index] = item.type; }); setFormilyTypeSource(map); }, [JSON.stringify(list)]); return ( {(fields, { add, remove }) => { return (
{fields.map(field => (
{fields.length !== field.key + 1 && }
))}
); }}
); }; Formily.defaultProps = { items: ['inputs', 'selects', 'multiSelects', 'dates', 'dateBetweens'], }; Formily.Render = Render; export * from './utils'; export * from './interface'; export default Formily;