/* eslint-disable react/no-array-index-key */ import React from 'react' import { FormikProps, withFormik, FieldArray } from 'formik' import Save from '../../vectors/Save' import AddFilter from '../../vectors/AddFilter' import Modal from '../../Modal' import Button from '../../Button' import './RulesModal.scss' import Rule from './Rule' import EmptyView from './EmptyView' import RulesSchema from './schema' import CircularProgress from '../../CircularProgress' export interface RuleModel { field: string comparator: string value: string } interface RulesModalProps { isLoading: boolean open: boolean rules?: RuleModel[] onSaveRules: (rules: RuleModel[]) => void | Promise onClose: () => void } interface RulesModalValues { rules: RuleModel[] } const RulesModal: React.FC> = ({ isLoading, isValid, submitForm, values: { rules }, setFieldValue, open, onClose, }) => { const handleAddRule = React.useCallback(() => { setFieldValue('rules', [...rules, { comparator: 'EQ' }]) }, [rules, setFieldValue]) return ( } onClose={onClose} > rules.map((rule, index) => ( arrayHelpers.remove(index)} /> )) } /> {!rules.length ? : undefined} ) } export default withFormik({ displayName: 'RulesModalForm', validationSchema: RulesSchema, validateOnMount: true, mapPropsToValues({ rules }): RulesModalValues { return { rules: rules ?? [], } }, handleSubmit({ rules }, { props: { onSaveRules } }) { onSaveRules(rules) }, })(RulesModal)