import React, { useCallback } from 'react'; import { shallowEqual, useSelector } from 'react-redux'; import PropTypes from 'prop-types'; import { Field, reduxForm } from 'redux-form'; import { useTranslation } from 'react-i18next'; import { renderInputField, toNumber, } from '../../../helpers/form'; import { FORM_NAME, UINT32_RANGE } from '../../../helpers/constants'; import { validateIpv4, validateRequiredValue, validateIpv4RangeEnd, } from '../../../helpers/validators'; const FormDHCPv4 = ({ handleSubmit, submitting, processingConfig, ipv4placeholders, }) => { const { t } = useTranslation(); const dhcp = useSelector((state) => state.form[FORM_NAME.DHCPv4], shallowEqual); const interfaces = useSelector((state) => state.form[FORM_NAME.DHCP_INTERFACES], shallowEqual); const interface_name = interfaces?.values?.interface_name; const isInterfaceIncludesIpv4 = useSelector( (state) => !!state.dhcp?.interfaces?.[interface_name]?.ipv4_addresses, ); const isEmptyConfig = !Object.values(dhcp?.values?.v4 ?? {}) .some(Boolean); const invalid = dhcp?.syncErrors || interfaces?.syncErrors || !isInterfaceIncludesIpv4 || isEmptyConfig || submitting || processingConfig; const validateRequired = useCallback((value) => { if (isEmptyConfig) { return undefined; } return validateRequiredValue(value); }, [isEmptyConfig]); return
; }; FormDHCPv4.propTypes = { handleSubmit: PropTypes.func.isRequired, submitting: PropTypes.bool.isRequired, initialValues: PropTypes.object.isRequired, processingConfig: PropTypes.bool.isRequired, change: PropTypes.func.isRequired, reset: PropTypes.func.isRequired, ipv4placeholders: PropTypes.object.isRequired, }; export default reduxForm({ form: FORM_NAME.DHCPv4, })(FormDHCPv4);