fix blur behavior/error messages in JT form

This commit is contained in:
Keith Grant
2019-10-18 08:40:48 -07:00
parent 8e2622d117
commit df7e034b96
3 changed files with 21 additions and 6 deletions

View File

@@ -16,6 +16,7 @@ class InventoryLookup extends React.Component {
value, value,
tooltip, tooltip,
onChange, onChange,
onBlur,
required, required,
isValid, isValid,
helperTextInvalid, helperTextInvalid,
@@ -37,6 +38,7 @@ class InventoryLookup extends React.Component {
name="inventory" name="inventory"
value={value} value={value}
onLookupSave={onChange} onLookupSave={onChange}
onBlur={onBlur}
getItems={getInventories} getItems={getInventories}
required={required} required={required}
qsNamespace="inventory" qsNamespace="inventory"

View File

@@ -233,16 +233,19 @@ class JobTemplateForm extends Component {
render={({ form }) => ( render={({ form }) => (
<InventoryLookup <InventoryLookup
value={inventory} value={inventory}
onBlur={() => form.setFieldTouched('inventory')}
tooltip={i18n._(t`Select the inventory containing the hosts tooltip={i18n._(t`Select the inventory containing the hosts
you want this job to manage.`)} you want this job to manage.`)}
isValid={!form.touched.inventory || !form.errors.inventory}
helperTextInvalid={form.errors.inventory}
onChange={value => { onChange={value => {
form.setFieldValue('inventory', value.id); form.setFieldValue('inventory', value.id);
form.setFieldValue('organizationId', value.organization); form.setFieldValue('organizationId', value.organization);
this.setState({ inventory: value }); this.setState({ inventory: value });
}} }}
isValid={!form.errors.inventory}
helperTextInvalid={form.errors.inventory}
required required
touched={form.touched.inventory}
error={form.errors.inventory}
/> />
)} )}
/> />
@@ -251,12 +254,12 @@ class JobTemplateForm extends Component {
validate={this.handleProjectValidation()} validate={this.handleProjectValidation()}
render={({ form }) => ( render={({ form }) => (
<ProjectLookup <ProjectLookup
helperTextInvalid={form.errors.project}
isValid={!form.errors.project}
value={project} value={project}
onBlur={handleBlur} onBlur={() => form.setFieldTouched('project')}
tooltip={i18n._(t`Select the project containing the playbook tooltip={i18n._(t`Select the project containing the playbook
you want this job to execute.`)} you want this job to execute.`)}
isValid={!form.touched.project || !form.errors.project}
helperTextInvalid={form.errors.project}
onChange={value => { onChange={value => {
form.setFieldValue('project', value.id); form.setFieldValue('project', value.id);
this.setState({ project: value }); this.setState({ project: value });
@@ -289,6 +292,7 @@ class JobTemplateForm extends Component {
isValid={isValid} isValid={isValid}
form={form} form={form}
field={field} field={field}
onBlur={() => form.setFieldTouched('playbook')}
onError={err => this.setState({ contentError: err })} onError={err => this.setState({ contentError: err })}
/> />
</FormGroup> </FormGroup>

View File

@@ -5,7 +5,15 @@ import { t } from '@lingui/macro';
import AnsibleSelect from '@components/AnsibleSelect'; import AnsibleSelect from '@components/AnsibleSelect';
import { ProjectsAPI } from '@api'; import { ProjectsAPI } from '@api';
function PlaybookSelect({ projectId, isValid, form, field, onError, i18n }) { function PlaybookSelect({
projectId,
isValid,
form,
field,
onBlur,
onError,
i18n,
}) {
const [options, setOptions] = useState([]); const [options, setOptions] = useState([]);
useEffect(() => { useEffect(() => {
if (!projectId) { if (!projectId) {
@@ -40,6 +48,7 @@ function PlaybookSelect({ projectId, isValid, form, field, onError, i18n }) {
isValid={isValid} isValid={isValid}
form={form} form={form}
{...field} {...field}
onBlur={onBlur}
/> />
); );
} }