import React from 'react'; import { omit, reject } from 'lodash'; import { TopicFormCustomParams } from 'redux/interfaces'; import CustomParamSelect from './CustomParamSelect'; import CustomParamValue from './CustomParamValue'; import CustomParamAction from './CustomParamAction'; const DEFAULT_INDEX = 'default'; export const INDEX_PREFIX = 'customParams'; export const isFirstParam = (index: string) => (index === DEFAULT_INDEX); interface Props { isSubmitting: boolean; } const CustomParams: React.FC = ({ isSubmitting, }) => { const [formCustomParams, setFormCustomParams] = React.useState({ byIndex: { [DEFAULT_INDEX]: { name: '', value: '' } }, allIndexes: [DEFAULT_INDEX], }); const onAdd = (event: React.MouseEvent) => { event.preventDefault(); const newIndex = `${INDEX_PREFIX}.${new Date().getTime()}`; setFormCustomParams({ ...formCustomParams, byIndex: { ...formCustomParams.byIndex, [newIndex]: { name: '', value: '' }, }, allIndexes: [ formCustomParams.allIndexes[0], newIndex, ...formCustomParams.allIndexes.slice(1), ], }); } const onRemove = (index: string) => { setFormCustomParams({ ...formCustomParams, byIndex: omit(formCustomParams.byIndex, index), allIndexes: reject(formCustomParams.allIndexes, (i) => (i === index)), }); } return ( <> { formCustomParams.allIndexes.map((index) => (
)) } ); }; export default CustomParams;