1
- import { useState } from "react" ;
1
+ import { useState , useEffect } from "react" ;
2
2
import Modal from "react-modal" ;
3
3
import { Formik , Field , Form , ErrorMessage } from "formik" ;
4
4
import * as Yup from "yup" ;
@@ -36,9 +36,14 @@ export default function CreateBoardModal({
36
36
initialTitle = "" ,
37
37
} ) {
38
38
const [ selectedIcon , setSelectedIcon ] = useState ( icons [ 0 ] ) ;
39
- const [ selectedBg , setSelectedBg ] = useState ( bgData [ 0 ] . id ) ;
39
+ const [ selectedBg , setSelectedBg ] = useState ( bgData [ 0 ] ) ;
40
40
const dispatch = useDispatch ( ) ;
41
41
42
+ useEffect ( ( ) => {
43
+ const { id, mini, mini2x, ...bgs } = selectedBg ;
44
+ console . log ( bgs ) ;
45
+ } , [ selectedBg ] ) ;
46
+
42
47
const handleSubmit = ( values , actions ) => {
43
48
const newBoard = {
44
49
title : values . title ,
@@ -49,6 +54,7 @@ export default function CreateBoardModal({
49
54
dispatch ( addBoard ( newBoard ) ) ;
50
55
onClose ( ) ;
51
56
} ;
57
+
52
58
const handleIconSelect = ( icon , setFieldValue ) => {
53
59
setSelectedIcon ( icon ) ;
54
60
setFieldValue ( "icon" , icon ) ;
@@ -58,11 +64,12 @@ export default function CreateBoardModal({
58
64
const selectedBackground = bgData . find ( ( bg ) => bg . id === bgId ) ;
59
65
if ( selectedBackground ) {
60
66
const { id, mini, mini2x, ...bgs } = selectedBackground ;
61
- setSelectedBg ( bgId ) ;
67
+ setSelectedBg ( selectedBackground ) ;
62
68
setFieldValue ( "background" , bgs ) ;
63
69
console . log ( bgs ) ;
64
70
}
65
71
} ;
72
+
66
73
return (
67
74
< Modal
68
75
overlayClassName = { css . overlay }
@@ -86,8 +93,9 @@ export default function CreateBoardModal({
86
93
} }
87
94
validationSchema = { titleValidationSchema }
88
95
onSubmit = { handleSubmit }
96
+ enableReinitialize
89
97
>
90
- { ( { setFieldValue } ) => (
98
+ { ( { setFieldValue, values } ) => (
91
99
< Form >
92
100
< div >
93
101
< label htmlFor = "title" > </ label >
@@ -115,7 +123,7 @@ export default function CreateBoardModal({
115
123
type = "radio"
116
124
name = "icon"
117
125
value = { icon }
118
- checked = { selectedIcon === icon }
126
+ checked = { values . icon === icon }
119
127
onChange = { ( ) => handleIconSelect ( icon , setFieldValue ) }
120
128
/>
121
129
< svg
@@ -137,13 +145,17 @@ export default function CreateBoardModal({
137
145
< ul className = { css . bgList } >
138
146
{ bgData . map ( ( bg ) => (
139
147
< li key = { bg . id } >
140
- < label className = { css . backgroundLabel } >
148
+ < label
149
+ className = { clsx ( css . backgroundLabel , {
150
+ [ css . selectedBg ] : selectedBg . id === bg . id ,
151
+ } ) }
152
+ >
141
153
< Field
142
154
className = { clsx ( css . radioInput , css . visuallyHidden ) }
143
155
type = "radio"
144
156
name = "background"
145
157
value = { bg . id }
146
- checked = { selectedBg === bg . id }
158
+ checked = { values . background . id === bg . id }
147
159
onChange = { ( ) => handleBgSelect ( bg . id , setFieldValue ) }
148
160
/>
149
161
< img
0 commit comments