import React from 'react'; import { connect } from 'react-redux'; import PropTypes from 'prop-types'; import { Field, reduxForm, formValueSelector } from 'redux-form'; import { Trans, withTranslation } from 'react-i18next'; import flow from 'lodash/flow'; import classnames from 'classnames'; import { nanoid } from 'nanoid'; import Examples from './Examples'; import { renderRadioField } from '../../../../helpers/form'; import { DNS_REQUEST_OPTIONS } from '../../../../helpers/constants'; const getInputFields = () => [{ // eslint-disable-next-line react/display-name getTitle: () => , name: 'upstream_dns', type: 'text', component: 'textarea', className: 'form-control form-control--textarea font-monospace', placeholder: 'upstream_dns', }, { name: 'dnsRequestOption', type: 'radio', value: DNS_REQUEST_OPTIONS.PARALLEL_REQUESTS, component: renderRadioField, subtitle: 'upstream_parallel', placeholder: 'parallel_requests', }, { name: 'dnsRequestOption', type: 'radio', value: DNS_REQUEST_OPTIONS.FASTEST_ADDR, component: renderRadioField, subtitle: 'fastest_addr_desc', placeholder: 'fastest_addr', }]; let Form = (props) => { const { t, handleSubmit, testUpstream, submitting, invalid, processingSetConfig, processingTestUpstream, upstream_dns, bootstrap_dns, } = props; const testButtonClass = classnames({ 'btn btn-primary btn-standard mr-2': true, 'btn btn-primary btn-standard mr-2 btn-loading': processingTestUpstream, }); const INPUT_FIELDS = getInputFields(); return
; }; Form.propTypes = { handleSubmit: PropTypes.func, testUpstream: PropTypes.func, submitting: PropTypes.bool, invalid: PropTypes.bool, initialValues: PropTypes.object, upstream_dns: PropTypes.string, bootstrap_dns: PropTypes.string, processingTestUpstream: PropTypes.bool, processingSetConfig: PropTypes.bool, t: PropTypes.func, }; const selector = formValueSelector('upstreamForm'); Form = connect((state) => { const upstream_dns = selector(state, 'upstream_dns'); const bootstrap_dns = selector(state, 'bootstrap_dns'); return { upstream_dns, bootstrap_dns, }; })(Form); export default flow([ withTranslation(), reduxForm({ form: 'upstreamForm', }), ])(Form);