import React from 'react'; import PropTypes from 'prop-types'; import { shallowEqual, useSelector } from 'react-redux'; import { Field, reduxForm } from 'redux-form'; import { Trans, useTranslation } from 'react-i18next'; import { renderInputField, renderRadioField, renderSelectField, toNumber, } from '../../../../helpers/form'; import { validateBiggerOrEqualZeroValue, validateIpv4, validateIpv6, validateRequiredValue, } from '../../../../helpers/validators'; import { BLOCKING_MODES, FORM_NAME } from '../../../../helpers/constants'; const checkboxes = [ { name: 'edns_cs_enabled', placeholder: 'edns_enable', subtitle: 'edns_cs_desc', }, { name: 'dnssec_enabled', placeholder: 'dnssec_enable', subtitle: 'dnssec_enable_desc', }, { name: 'disable_ipv6', placeholder: 'disable_ipv6', subtitle: 'disable_ipv6_desc', }, ]; const customIps = [ { description: 'blocking_ipv4_desc', name: 'blocking_ipv4', validateIp: validateIpv4, }, { description: 'blocking_ipv6_desc', name: 'blocking_ipv6', validateIp: validateIpv6, }, ]; const getFields = (processing, t) => Object.values(BLOCKING_MODES) .map((mode) => ( )); const Form = ({ handleSubmit, submitting, invalid, processing, }) => { const { t } = useTranslation(); const { blocking_mode, } = useSelector((state) => state.form[FORM_NAME.BLOCKING_MODE].values ?? {}, shallowEqual); return
rate_limit_desc
{checkboxes.map(({ name, placeholder, subtitle }) =>
)}
{Object.values(BLOCKING_MODES) .map((mode) => (
  • {`blocking_mode_${mode}`}
  • ))}
    {getFields(processing, t)}
    {blocking_mode === BLOCKING_MODES.custom_ip && ( <> {customIps.map(({ description, name, validateIp, }) =>
    {description}
    )} )}
    ; }; Form.propTypes = { handleSubmit: PropTypes.func.isRequired, submitting: PropTypes.bool.isRequired, invalid: PropTypes.bool.isRequired, processing: PropTypes.bool.isRequired, }; export default reduxForm({ form: FORM_NAME.BLOCKING_MODE })(Form);