import useForm, { Props, Rules } from '../useForm/useForm' import useList, { Props as PropsUseList, ValuesList } from './useList' import useCheckValidate from '../useForm/useCheckValidate' import { useCallback } from 'react' const useFormList = (config: Props, configList: PropsUseList) => { const form = useForm(config) const listCtl = useList(configList) const checkValidate = useCheckValidate() const onChange = useCallback((ix: any, name: String, value: any, rules?: Rules) => { const arrayList = listCtl.values.map((_,i) => i) const prevItem = listCtl.values[arrayList[ix]] const values = { ...prevItem.values, [name as string]: value } const _rules = rules || prevItem.rules const newItem: ValuesList = { ...prevItem, values, rules: _rules, errors: form.submitted ? checkValidate(values, _rules) : {} } listCtl.changeListItem(ix, newItem) }, [listCtl, form.submitted, checkValidate]) return { ...form, listCtl: { ...listCtl, onChange } } } export default useFormList