From 94f21a3464c62f807a1641a16dd11ec0fee060ae Mon Sep 17 00:00:00 2001 From: Keith Grant Date: Thu, 6 Feb 2020 14:06:30 -0800 Subject: [PATCH] add submit error support to Project form --- .../src/components/FormField/FormSubmitError.jsx | 12 ++++++------ .../src/screens/Project/ProjectAdd/ProjectAdd.jsx | 6 +----- .../src/screens/Project/ProjectEdit/ProjectEdit.jsx | 6 +----- .../src/screens/Project/shared/ProjectForm.jsx | 10 ++++++++-- 4 files changed, 16 insertions(+), 18 deletions(-) diff --git a/awx/ui_next/src/components/FormField/FormSubmitError.jsx b/awx/ui_next/src/components/FormField/FormSubmitError.jsx index 3a85abfcd3..adc59806fb 100644 --- a/awx/ui_next/src/components/FormField/FormSubmitError.jsx +++ b/awx/ui_next/src/components/FormField/FormSubmitError.jsx @@ -9,7 +9,7 @@ const ErrorMessage = styled('div')` ErrorMessage.displayName = 'ErrorMessage'; function FormSubmitError({ error }) { - const [formError, setFormError] = useState(null); + const [errorMessage, setErrorMessage] = useState(null); const { setErrors } = useFormikContext(); useEffect(() => { @@ -21,22 +21,22 @@ function FormSubmitError({ error }) { const errorMessages = error.response.data; setErrors(errorMessages); if (errorMessages.__all__) { - setFormError({ message: errorMessages.__all__ }); + setErrorMessage(errorMessages.__all__); } else { - setFormError(null); + setErrorMessage(null); } } else { /* eslint-disable-next-line no-console */ console.error(error); - setFormError(error); + setErrorMessage(error.message); } }, [error, setErrors]); - if (!formError) { + if (!errorMessage) { return null; } - return {formError.message}; + return {errorMessage}; } export default FormSubmitError; diff --git a/awx/ui_next/src/screens/Project/ProjectAdd/ProjectAdd.jsx b/awx/ui_next/src/screens/Project/ProjectAdd/ProjectAdd.jsx index 919b8b2c71..bb646f53b0 100644 --- a/awx/ui_next/src/screens/Project/ProjectAdd/ProjectAdd.jsx +++ b/awx/ui_next/src/screens/Project/ProjectAdd/ProjectAdd.jsx @@ -41,13 +41,9 @@ function ProjectAdd() { - {formSubmitError ? ( -
formSubmitError
- ) : ( - '' - )} ); diff --git a/awx/ui_next/src/screens/Project/ProjectEdit/ProjectEdit.jsx b/awx/ui_next/src/screens/Project/ProjectEdit/ProjectEdit.jsx index 6f44ec8ab0..64ebf65c05 100644 --- a/awx/ui_next/src/screens/Project/ProjectEdit/ProjectEdit.jsx +++ b/awx/ui_next/src/screens/Project/ProjectEdit/ProjectEdit.jsx @@ -42,13 +42,9 @@ function ProjectEdit({ project }) { project={project} handleCancel={handleCancel} handleSubmit={handleSubmit} + submitError={formSubmitError} /> - {formSubmitError ? ( -
formSubmitError
- ) : ( - '' - )} ); } diff --git a/awx/ui_next/src/screens/Project/shared/ProjectForm.jsx b/awx/ui_next/src/screens/Project/shared/ProjectForm.jsx index ae72bd0896..cf92e518a9 100644 --- a/awx/ui_next/src/screens/Project/shared/ProjectForm.jsx +++ b/awx/ui_next/src/screens/Project/shared/ProjectForm.jsx @@ -10,7 +10,10 @@ import AnsibleSelect from '@components/AnsibleSelect'; import ContentError from '@components/ContentError'; import ContentLoading from '@components/ContentLoading'; import FormActionGroup from '@components/FormActionGroup/FormActionGroup'; -import FormField, { FieldTooltip } from '@components/FormField'; +import FormField, { + FieldTooltip, + FormSubmitError, +} from '@components/FormField'; import FormRow from '@components/FormRow'; import OrganizationLookup from '@components/Lookup/OrganizationLookup'; import { CredentialTypesAPI, ProjectsAPI } from '@api'; @@ -70,7 +73,7 @@ const fetchCredentials = async credential => { }; }; -function ProjectForm({ project, ...props }) { +function ProjectForm({ project, submitError, ...props }) { const { i18n, handleCancel, handleSubmit } = props; const { summary_fields = {} } = project; const [contentError, setContentError] = useState(null); @@ -388,6 +391,7 @@ function ProjectForm({ project, ...props }) { } /> )} @@ -401,10 +405,12 @@ ProjectForm.propTypes = { handleCancel: PropTypes.func.isRequired, handleSubmit: PropTypes.func.isRequired, project: PropTypes.shape({}), + submitError: PropTypes.shape({}), }; ProjectForm.defaultProps = { project: {}, + submitError: null, }; export default withI18n()(ProjectForm);