@@ -8,64 +8,79 @@ import { ClassroomContext } from "../../../../Context/Classroom/context";
8
8
import { ClassroomTypes } from "../../../../Context/Classroom/type" ;
9
9
import { useContext } from "react" ;
10
10
import { useParams } from "react-router-dom" ;
11
+ import * as Yup from "yup" ;
11
12
12
13
const ModalChange = ( {
13
- onHide,
14
- visible,
14
+ onHide,
15
+ visible,
15
16
} : {
16
- onHide ( ) : void ;
17
- visible ?: boolean | undefined ;
17
+ onHide ( ) : void ;
18
+ visible ?: boolean | undefined ;
18
19
} ) => {
19
- const { id } = useParams ( ) ;
20
+ const { id } = useParams ( ) ;
20
21
21
- const props = useContext ( ClassroomContext ) as ClassroomTypes ;
22
+ const props = useContext ( ClassroomContext ) as ClassroomTypes ;
22
23
23
- const { data : tsOneRequest } = useFetchRequestTsLists ( undefined )
24
+ const { data : tsOneRequest } = useFetchRequestTsLists ( undefined ) ;
24
25
25
- return (
26
- < Dialog
27
- onHide = { onHide }
28
- visible = { visible }
29
- style = { { width : window . innerWidth < 800 ? "80vw" : "50vw" } }
30
- >
31
- < Formik
32
- initialValues = { {
33
- idProject : ""
34
- } }
35
- onSubmit = { ( values ) => {
36
- props . ChangeClassroom ( { idClassroom : id ! , idProject : values . idProject } )
37
- onHide ( ) ;
38
- } }
39
- >
40
- { ( { values, handleChange } ) => {
41
- return (
42
- < Form >
43
- < div className = "grid" >
44
- < div className = "col-12 md:col-6" >
45
- < label > Escolha um projeto</ label >
46
- < Padding />
47
- < DropdownComponent
48
- value = { values . idProject }
49
- options = { tsOneRequest ?. project }
50
- placerholder = "Digite um nome"
51
- onChange = { handleChange }
52
- optionsValue = "id"
53
- name = "idProject"
54
- />
55
- </ div >
56
- </ div > { " " }
57
- < Padding padding = "16px" />
58
- < Column style = { { width : "100%" } } >
59
- < Row id = "end" >
60
- < Button label = "Salvar" />
61
- </ Row >
62
- </ Column >
63
- </ Form >
64
- ) ;
65
- } }
66
- </ Formik >
67
- </ Dialog >
68
- ) ;
26
+ const schema = Yup . object ( ) . shape ( {
27
+ idProject : Yup . string ( ) . nullable ( ) . required ( "Projeto é obrigatório" ) ,
28
+ } ) ;
29
+
30
+ return (
31
+ < Dialog
32
+ onHide = { onHide }
33
+ visible = { visible }
34
+ header = "Transferir turma"
35
+ style = { { width : window . innerWidth < 800 ? "80vw" : "50vw" } }
36
+ >
37
+ < Formik
38
+ initialValues = { {
39
+ idProject : "" ,
40
+ } }
41
+ validationSchema = { schema }
42
+ onSubmit = { ( values ) => {
43
+ props . ChangeClassroom ( {
44
+ idClassroom : id ! ,
45
+ idProject : values . idProject ,
46
+ } ) ;
47
+ onHide ( ) ;
48
+ } }
49
+ >
50
+ { ( { values, handleChange, errors, touched } ) => {
51
+ return (
52
+ < Form >
53
+ < div className = "grid" >
54
+ < div className = "col-12 md:col-6" >
55
+ < label > Escolha um projeto</ label >
56
+ < Padding />
57
+ < DropdownComponent
58
+ value = { values . idProject }
59
+ options = { tsOneRequest ?. project }
60
+ placerholder = "Digite um nome"
61
+ onChange = { handleChange }
62
+ optionsValue = "id"
63
+ name = "idProject"
64
+ />
65
+ { errors . idProject && touched . idProject ? (
66
+ < div style = { { color : "red" , marginTop : "8px" } } >
67
+ { errors . idProject }
68
+ </ div >
69
+ ) : null }
70
+ </ div >
71
+ </ div > { " " }
72
+ < Padding padding = "16px" />
73
+ < Column style = { { width : "100%" } } >
74
+ < Row id = "end" >
75
+ < Button label = "Salvar" />
76
+ </ Row >
77
+ </ Column >
78
+ </ Form >
79
+ ) ;
80
+ } }
81
+ </ Formik >
82
+ </ Dialog >
83
+ ) ;
69
84
} ;
70
85
71
86
export default ModalChange ;
0 commit comments