import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import { Field, reduxForm, formValueSelector } from 'redux-form'; import { Trans, withTranslation } from 'react-i18next'; import flow from 'lodash/flow'; 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) => ( )); let Form = ({ handleSubmit, submitting, invalid, processing, blockingMode, t, }) =>
rate_limit_desc
{checkboxes.map(({ name, placeholder, subtitle }) =>
)}
{Object.values(BLOCKING_MODES) .map((mode) => (
  • {`blocking_mode_${mode}`}
  • ))}
    {getFields(processing, t)}
    {blockingMode === BLOCKING_MODES.custom_ip && ( {customIps.map(({ description, name, validateIp, }) =>
    {description}
    )}
    )}
    ; Form.propTypes = { blockingMode: PropTypes.string.isRequired, handleSubmit: PropTypes.func.isRequired, submitting: PropTypes.bool.isRequired, invalid: PropTypes.bool.isRequired, processing: PropTypes.bool.isRequired, t: PropTypes.func.isRequired, }; const selector = formValueSelector(FORM_NAME.BLOCKING_MODE); Form = connect((state) => { const blockingMode = selector(state, 'blocking_mode'); return { blockingMode, }; })(Form); export default flow([ withTranslation(), reduxForm({ form: FORM_NAME.BLOCKING_MODE }), ])(Form);