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 } from '../../../helpers/constants'; import { validateIpv6, validateIsPositiveValue, validateRequiredValue, } from '../../../helpers/validators'; const FormDHCPv6 = ({ handleSubmit, submitting, processingConfig, ipv6placeholders, }) => { const { t } = useTranslation(); const dhcp = useSelector((state) => state.form[FORM_NAME.DHCPv6], shallowEqual); const interfaces = useSelector((state) => state.form[FORM_NAME.DHCP_INTERFACES], shallowEqual); const interface_name = interfaces?.values?.interface_name; const isInterfaceIncludesIpv6 = useSelector( (state) => !!state.dhcp?.interfaces?.[interface_name]?.ipv6_addresses, ); const isEmptyConfig = !Object.values(dhcp?.values?.v6 ?? {}) .some(Boolean); const invalid = dhcp?.syncErrors || interfaces?.syncErrors || !isInterfaceIncludesIpv6 || isEmptyConfig || submitting || processingConfig; const validateRequired = useCallback((value) => { if (isEmptyConfig) { return undefined; } return validateRequiredValue(value); }, [isEmptyConfig]); return
; }; FormDHCPv6.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, ipv6placeholders: PropTypes.object.isRequired, }; export default reduxForm({ form: FORM_NAME.DHCPv6, })(FormDHCPv6);