1
1
import TextField from "@mui/material/TextField" ;
2
- import { CreateGroupRequest } from "api/typesGenerated" ;
2
+ import { type FormikTouched , useFormik } from "formik" ;
3
+ import { type FC } from "react" ;
4
+ import { useNavigate } from "react-router-dom" ;
5
+ import * as Yup from "yup" ;
6
+ import type { CreateGroupRequest } from "api/typesGenerated" ;
7
+ import { ErrorAlert } from "components/Alert/ErrorAlert" ;
3
8
import { FormFooter } from "components/FormFooter/FormFooter" ;
4
9
import { FullPageForm } from "components/FullPageForm/FullPageForm" ;
5
10
import { IconField } from "components/IconField/IconField" ;
6
11
import { Margins } from "components/Margins/Margins" ;
7
12
import { Stack } from "components/Stack/Stack" ;
8
- import { useFormik } from "formik" ;
9
- import { FC } from "react" ;
10
- import { useNavigate } from "react-router-dom" ;
11
13
import { getFormHelpers , onChangeTrimmed } from "utils/formUtils" ;
12
- import * as Yup from "yup " ;
14
+ import { isApiValidationError } from "api/errors " ;
13
15
14
16
const validationSchema = Yup . object ( {
15
17
name : Yup . string ( ) . required ( ) . label ( "Name" ) ,
16
18
} ) ;
17
19
18
20
export type CreateGroupPageViewProps = {
19
21
onSubmit : ( data : CreateGroupRequest ) => void ;
20
- formErrors ?: unknown ;
22
+ error ?: unknown ;
21
23
isLoading : boolean ;
24
+ // Helpful to show field errors on Storybook
25
+ initialTouched ?: FormikTouched < CreateGroupRequest > ;
22
26
} ;
23
27
24
28
export const CreateGroupPageView : FC < CreateGroupPageViewProps > = ( {
25
29
onSubmit,
26
- formErrors ,
30
+ error ,
27
31
isLoading,
32
+ initialTouched,
28
33
} ) => {
29
34
const navigate = useNavigate ( ) ;
30
35
const form = useFormik < CreateGroupRequest > ( {
@@ -36,15 +41,20 @@ export const CreateGroupPageView: FC<CreateGroupPageViewProps> = ({
36
41
} ,
37
42
validationSchema,
38
43
onSubmit,
44
+ initialTouched,
39
45
} ) ;
40
- const getFieldHelpers = getFormHelpers < CreateGroupRequest > ( form , formErrors ) ;
46
+ const getFieldHelpers = getFormHelpers < CreateGroupRequest > ( form , error ) ;
41
47
const onCancel = ( ) => navigate ( "/groups" ) ;
42
48
43
49
return (
44
50
< Margins >
45
51
< FullPageForm title = "Create group" >
46
52
< form onSubmit = { form . handleSubmit } >
47
53
< Stack spacing = { 2.5 } >
54
+ { Boolean ( error ) && ! isApiValidationError ( error ) && (
55
+ < ErrorAlert error = { error } />
56
+ ) }
57
+
48
58
< TextField
49
59
{ ...getFieldHelpers ( "name" ) }
50
60
autoFocus
0 commit comments